diff --git a/404.html b/404.html index bfe29177..5c0c1e67 100644 --- a/404.html +++ b/404.html @@ -20,9 +20,9 @@ 404 - - - + + +
diff --git a/advancement/index.html b/advancement/index.html index 3faaeae3..0821ffe3 100644 --- a/advancement/index.html +++ b/advancement/index.html @@ -20,9 +20,9 @@ Advancement Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
diff --git a/assets/index.4377c103.css b/assets/index.4377c103.css new file mode 100644 index 00000000..34b0cfbe --- /dev/null +++ b/assets/index.4377c103.css @@ -0,0 +1 @@ +:root{--background-1:#1b1b1b;--background-2:#252525;--background-3:#222222;--background-4:#3d3d3d;--background-5:#383838;--background-6:#575757;--text-1:#ffffff;--text-2:#dcdcdc;--text-3:#c3c3c3;--accent-primary:#50baf9;--accent-success:#3eb84f;--accent-sounds-1:#451475;--accent-sounds-2:#39155e;--accent-sounds-3:#6a08a3;--accent-sounds-4:#d1a5e6;--nav:#91908f;--nav-hover:#b4b3b0;--nav-faded:#4d4c4c;--nav-faded-hover:#6e6e6e;--selection:#6786dd99;--errors-background:#62190f;--errors-text:#ffffffcc;--invalid-text:#fd7951;--text-saturation:60%;--text-lightness:45%}:root[data-theme=light]{--background-1:#fafafa;--background-2:#e2e2e2;--background-3:#d4d3d3;--background-4:#b8b8b8;--background-5:#bdbdbd;--background-6:#cecece;--text-1:#000000;--text-2:#2f2f2f;--text-3:#494949;--accent-primary:#088cdb;--accent-success:#1a7f37;--accent-sounds-1:#b481e7;--accent-sounds-2:#c18df5;--accent-sounds-3:#af72d3;--accent-sounds-4:#efd3fd;--nav:#343a40;--nav-hover:#565d64;--nav-faded:#9fa2a7;--nav-faded-hover:#bcbfc3;--selection:#6786dd99;--errors-background:#f66653;--errors-text:#000000cc;--invalid-text:#a32600;--text-saturation:100%;--text-lightness:30%}@media (prefers-color-scheme:light){:root[data-theme=system]{--background-1:#fafafa;--background-2:#e2e2e2;--background-3:#d4d3d3;--background-4:#b8b8b8;--background-5:#bdbdbd;--background-6:#cecece;--text-1:#000000;--text-2:#2f2f2f;--text-3:#494949;--accent-primary:#088cdb;--accent-success:#1a7f37;--accent-sounds-1:#b481e7;--accent-sounds-2:#c18df5;--accent-sounds-3:#af72d3;--accent-sounds-4:#efd3fd;--nav:#343a40;--nav-hover:#565d64;--nav-faded:#9fa2a7;--nav-faded-hover:#bcbfc3;--selection:#6786dd99;--errors-background:#f66653;--errors-text:#000000cc;--invalid-text:#a32600;--text-saturation:100%;--text-lightness:35%}}*{box-sizing:border-box;margin:0;padding:0}::selection{background-color:var(--selection)}a svg{pointer-events:none}body{font-size:18px;font-family:Arial,Helvetica,sans-serif;min-height:100vh;overflow-x:hidden;background-color:var(--background-1)}header{display:flex;justify-content:space-between;align-items:center;padding:10px;width:100%;height:56px;z-index:5;position:fixed;box-shadow:0 0 9px -3px #000;background-color:var(--background-2)}body[data-panel=home] header,body[data-panel=settings] header{position:fixed}.title{display:flex;align-items:center}.title h2{color:var(--nav)}.home-link{margin:0 8px 0 0}.home-link svg{display:block;width:32px;height:32px;padding:2px}.home-link svg rect:nth-child(2n){transition:transform .2s}.home-link:hover rect:nth-child(2){transform:translateX(-8px)}.home-link:hover rect:nth-child(4){transform:translateX(-11px)}.home-link:hover rect:nth-child(6){transform:translateX(-6px)}nav ul{display:flex;align-items:center}nav li{display:flex;align-items:center;cursor:pointer;margin:0 16px;fill:var(--nav);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.home-link:hover svg{fill:var(--nav-hover)}nav li.dimmed svg{fill:var(--nav-faded)}nav li.dimmed:hover svg{fill:var(--nav-faded-hover)}nav li svg,nav li>*{width:24px;height:24px}.title .btn-menu{margin:0 8px}.title .btn-menu>.btn svg{width:24px;height:24px}header .btn-menu>.btn{background:0 0!important;padding:0;box-shadow:none;fill:var(--nav)}header .btn-menu>.btn:hover{fill:var(--nav-hover)}main{padding-top:68px;color:var(--text-1);fill:var(--text-1);transition:padding .3s}.controls{display:flex;justify-content:flex-end;position:fixed;top:12px;right:16px;left:16px;z-index:1;pointer-events:none}main>.controls{position:sticky;margin-right:16px;margin-left:16px;top:68px}.controls>*{pointer-events:all}.controls>:not(:last-child){margin-right:8px}.tree{margin-top:-36px;overflow-x:auto;padding:4px 16px 50vh}.error+.tree{margin-top:0}.popup-source{position:fixed;display:flex;flex-direction:column;width:40vw;left:100%;bottom:0;z-index:1;transition:transform .3s;border-radius:6px 0 0 0}.popup-source.shown{transform:translateX(-100%)}.source{width:100%;height:40vh;max-height:50vh;padding:12px;border:none;font-family:Consolas,monospace;font-size:14px;white-space:pre;overflow-wrap:normal;overflow-x:auto;tab-size:4;-moz-tab-size:4;-o-tab-size:4;-webkit-tab-size:4;outline:0;resize:none;position:static;background-color:var(--background-2);border-top-left-radius:6px;color:var(--text-1);box-shadow:0 0 7px -3px #000}.popup-preview{position:fixed;display:flex;flex-direction:column;height:calc(100% - 56px);width:40vw;left:100%;bottom:0;z-index:1;background-color:var(--background-2);box-shadow:0 0 7px -3px #000;transition:transform .3s}main.has-preview{padding-right:40vw}.popup-preview.shown{transform:translateX(-100%)}.popup-preview canvas{width:100%;background-color:var(--nav-faded);display:block;cursor:crosshair;image-rendering:-moz-crisp-edges;image-rendering:-webkit-crisp-edges;image-rendering:crisp-edges;image-rendering:pixelated;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.btn{display:flex;align-items:center;border:none;height:32px;border-radius:6px;padding:7px 11px;cursor:pointer;outline:0;font-size:1rem;white-space:nowrap;background-color:var(--background-4);box-shadow:0 1px 7px -2px #000;color:var(--text-2);fill:var(--text-2);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.btn.active{color:var(--accent-primary);fill:var(--accent-primary)}.btn:not(.btn-input):hover{background-color:var(--background-5)}.btn.no-pointer{pointer-events:none}.btn svg:not(:last-child){margin-right:5px}.btn-menu:not(.no-relative){position:relative}.btn-menu>.btn{height:100%}.btn-menu .btn-group{display:flex;flex-direction:column;position:absolute;top:100%;margin-top:8px}.btn-menu.menu-sw .btn-group{right:0}.btn-menu.menu-se .btn-group{left:0}.btn-group{border-radius:6px;box-shadow:0 0 7px -2px #000}.btn-group .btn{box-shadow:none}.btn-group .btn:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group .btn:not(:first-child),.btn-menu .result-list .btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-input{cursor:initial;padding-right:7px}.btn-input input{background:var(--background-1);color:var(--text-1);font-size:17px;border:none;padding:0 3px;margin-left:5px;width:100px}.btn-input.large-input{padding:5px;padding-left:11px}.btn-input.large-input input{width:100%;height:100%}.btn-menu .result-list{display:block;width:380px;height:unset;overflow-y:auto;overflow-x:hidden;max-height:240px;border-bottom-left-radius:6px;border-bottom-right-radius:6px}.popup-actions{display:flex;position:fixed;bottom:8px;left:100%;z-index:5;padding-right:16px;background-color:var(--background-4);box-shadow:0 0 7px -3px #000;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;transform:translateX(var(--offset));transition:padding .1s,transform .3s;border-top-left-radius:24px;border-bottom-left-radius:24px}.popup-action{padding:12px;fill:var(--text-3);cursor:pointer;border-top-left-radius:50%;border-bottom-left-radius:50%;padding-left:16px}.popup-action.shown~.popup-action{border-top-left-radius:0;border-bottom-left-radius:0;padding-left:12px}.popup-action:not(.shown){pointer-events:none;order:1;visibility:hidden}.popup-action>svg{display:block;width:24px;height:24px}.popup-action:hover{background-color:var(--background-5)}.popup-action.action-preview{fill:var(--accent-primary)}.popup-action.action-copy.active{fill:var(--accent-success)}.tooltipped{position:relative}.tooltipped::after{content:attr(aria-label);position:absolute;z-index:100;padding:3px 7px;display:none;white-space:pre;pointer-events:none;background-color:var(--background-6);color:var(--text-1);border-radius:6px;font-size:14px;line-height:1.5;text-align:left;opacity:0}.tooltipped.tip-ne::after,.tooltipped.tip-nw::after{bottom:100%;margin-bottom:6px}.tooltipped.tip-s::after,.tooltipped.tip-se::after,.tooltipped.tip-sw::after{top:100%;margin-top:6px}.tooltipped.tip-ne::after,.tooltipped.tip-se::after{left:50%;margin-left:-16px}.tooltipped.tip-nw::after,.tooltipped.tip-sw::after{right:50%;margin-right:-16px}.tooltipped.tip-n::before,.tooltipped.tip-ne::before,.tooltipped.tip-nw::before{bottom:auto;top:-7px;border-top-color:var(--background-6)}.tooltipped.tip-s::before,.tooltipped.tip-se::before,.tooltipped.tip-sw::before{top:auto;bottom:-7px;border-bottom-color:var(--background-6)}.tooltipped.tip-n::after,.tooltipped.tip-n::before,.tooltipped.tip-s::after,.tooltipped.tip-s::before{left:var(--x,50%);transform:translate(-50%,8px)}.tooltipped::before{content:'';position:absolute;z-index:101;display:none;right:50%;width:0;height:0;margin-right:-8px;pointer-events:none;border:8px solid transparent;opacity:0}.tooltipped:not([disabled]):hover::after,.tooltipped:not([disabled]):hover::before{display:inline-block;animation:tooltip-appear .1s ease-in .4s forwards}.tooltipped:not([disabled]):hover::after{box-shadow:0 1px 3px 0 #0007}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.error{padding:5px 14px;margin:12px 16px;color:var(--text-1);background-color:var(--errors-background);border-radius:3px}.error>*{margin:10px 0}.error .error-dismiss{float:right;cursor:pointer;margin-left:10px}.error-dismiss svg{display:block;width:24px;height:24px}.error a{color:var(--text-1)}.home{padding:16px}.generator-picker{display:flex}.home.center{flex-direction:column;align-items:center;color:var(--nav)}.home.center p{padding-bottom:20px;text-align:center;font-size:20px}.home{max-width:960px;margin:0 auto}.tool-card{display:flex;padding:10px;margin-bottom:8px;color:var(--text-2);background-color:var(--background-2);box-shadow:1px 1px 7px -3px #000;border-radius:6px;text-decoration:none}.tool-card:hover{background-color:var(--background-3)}.tool-card svg{width:32px;height:32px;flex-shrink:0;margin-right:8px}.tool-card h3{font-weight:unset}.tool-card p{color:var(--text-3)}hr{margin:12px 0;border:none}.settings{padding:20px}.settings p{color:var(--nav);padding:8px;border-bottom:2px solid var(--background-4)}.field-list{width:100%;border-collapse:collapse;list-style-type:none}.field-list li{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--background-4)}.field-prop{display:inline-flex;align-items:center;max-width:100%;margin:4px}.field-prop>input,.field-prop>label{height:34px;color:var(--text-1);margin-right:-1px;border:1px solid;border-color:var(--nav-faded-hover)}.field-prop label{padding:0 9px;line-height:1.94rem;background-color:var(--node-background-label);white-space:nowrap;border-top-left-radius:3px;border-bottom-left-radius:3px}.field-prop input{width:100%;line-height:1.6rem;background-color:var(--node-background-input);color:var(--text-1);padding-left:9px;font-size:18px;border-top-right-radius:3px;border-bottom-right-radius:3px}.field-prop svg{padding:4px;margin:0 4px;height:28px;width:28px;fill:var(--nav);cursor:pointer}.field-prop .hidden svg{fill:#be4b2e}.field-prop .dimmed svg{fill:var(--nav-faded)}.very-large{font-size:80px;font-weight:100}[data-ea-publisher]{margin:0 16px 8px}.ea-content{margin:0!important;background:var(--background-2)!important}.ea-content span{color:var(--text-2)!important}.ea-content strong{color:var(--accent-primary)!important}.ea-callout{margin:.25rem 0!important;padding:0!important}.ea-callout a{color:var(--text-3)!important}.sounds{padding:16px}.sound-search-group{flex-basis:350px;height:32px;display:flex;border-radius:6px;box-shadow:0 1px 7px -2px #000}.sound-search{flex-basis:100%;padding:8px;color:var(--text-1);background-color:var(--background-2);border:none;border-radius:6px;font-size:16px;border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0!important;box-shadow:none}.btn.add-sound{border-top-left-radius:0;border-bottom-left-radius:0;background-color:var(--accent-sounds-1);box-shadow:none}.btn.add-sound:hover{background-color:var(--accent-sounds-2)}.spacer{margin-right:auto!important}.sound-config{display:grid;grid-template-columns:min-content 2fr min-content min-content min-content 1fr min-content 1fr min-content min-content;align-items:center;gap:12px 8px;padding:10px;background-color:var(--background-2);border-radius:5px}.sound-config:not(:last-child){margin-bottom:8px}.sound-config .btn{box-shadow:none}.sound-config .sound{width:100%}.sound-config label{color:var(--text-2);white-space:nowrap}.sound-config .delay{width:50px;padding:4px}.sound-config input[type=range]{-webkit-appearance:none;width:100%;background:0 0}.sound-config input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}.sound-config input[type=range]:focus{outline:0}.sound-config input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:16px;width:16px;border-radius:50%;background:var(--text-3);cursor:pointer;margin-top:-5px}.sound-config input[type=range]::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:var(--text-3);cursor:pointer}.sound-config input[type=range]::-webkit-slider-runnable-track{width:100%;height:8px;cursor:pointer;background:var(--background-4);border-radius:2px;border:none}.sound-config input[type=range]:focus::-webkit-slider-runnable-track{background:var(--background-5)}.sound-config input[type=range]::-moz-range-track{width:100%;height:8px;cursor:pointer;background:var(--background-4);border-radius:2px;border:none}.sound-config input[type=range]:focus::-moz-range-track{background:var(--background-5)}.sound-config .copy[data-command]{position:relative}.sound-config .copy[data-command]::after{content:attr(data-command);position:absolute;top:100%;right:0;margin-top:6px;padding:8px 12px;background-color:var(--background-3);border-radius:5px;box-shadow:0 2px 4px var(--background-1);cursor:initial}.sound-config.invalid .play,.sound-config.loading .play{cursor:initial}.sound-config.playing{background-color:var(--background-3)}.sound-config.playing .play{background-image:linear-gradient(110deg,var(--accent-sounds-3),var(--accent-sounds-3) 45%,var(--accent-sounds-4) 47%,var(--accent-sounds-4) 53%,var(--accent-sounds-3) 55%);background-size:300%;background-position:right;animation:playing 1s infinite}@keyframes playing{0%{background-position:left}100%{background-position:right}}.sound-config.loading:not(.invalid) .play svg{animation:spinning 2s infinite linear}.sound-config.invalid .sound{color:var(--invalid-text)}.changelog{display:flex;flex-direction:column;padding:16px}.changelog-entry{background:var(--background-2);border-radius:4px;margin-bottom:8px;padding:8px;color:var(--text-2)}.changelog-tags{display:flex;margin-bottom:8px}.changelog-tag{--color:hsl(var(--tint, 0), var(--text-saturation), var(--text-lightness));margin-right:8px;border:1.5px solid var(--color);height:24px;border-radius:12px;padding:0 8px;color:var(--color);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.changelog-tag.clickable{cursor:pointer}.changelog-tag.active{background-color:var(--color);color:var(--background-2)}.changelog-version{margin-left:auto;font-size:15px;color:var(--text-3);text-decoration:none}.changelog-version:hover{text-decoration:underline}.changelog-entry code{background-color:var(--background-5);padding:1px 4px;border-radius:4px;color:var(--text-1)}.changelog-controls{display:flex;flex-direction:column;padding:0 16px}.changelog-search{flex-basis:100%;padding:8px;background-color:var(--background-2);border-radius:6px}.changelog-controls .changelog-tags{margin:8px 0 0}@media screen and (max-width:720px){.sound-search-group{margin-bottom:8px;flex-basis:100%;margin-right:0!important}.sounds-controls{flex-wrap:wrap}.sounds .btn{padding:8px 10px}.sounds .btn svg{margin-right:0!important}.sounds .btn span{display:none}.sound-config{grid-template-columns:min-content min-content 1fr min-content 1fr min-content;grid-template-areas:"play sound sound sound sound copy" "pitch-label pitch-label pitch volume-label volume remove"}.sound-config .play{grid-area:play}.sound-config .sound{grid-area:sound}.sound-config .delay-label{display:none}.sound-config .delay{display:none}.sound-config .pitch-label{grid-area:pitch-label}.sound-config .pitch{grid-area:pitch}.sound-config .volume-label{grid-area:volume-label}.sound-config .volume{grid-area:volume}.sound-config .copy{grid-area:copy}.sound-config .remove{grid-area:remove}}@keyframes spinning{0%{transform:rotate(0)}100%{transform:rotate(-360deg)}}@keyframes fadein{from{opacity:0}to{opacity:1}}@media screen and (max-width:1300px){main.has-preview .tree{margin-top:8px}}@media screen and (max-width:800px){main .tree{margin-top:4px!important}}@media screen and (max-width:580px){.title h2{font-size:18px}body nav li{margin:0 8px}main.has-preview{padding-right:0}main .controls{top:64px}.tree{padding-left:8px;padding-right:8px}.popup-source{width:100vw}.source{border-radius:0}.popup-preview{width:100vw;height:unset;bottom:0;background-color:transparent;box-shadow:none}.popup-preview canvas{margin-top:8px}.btn-menu .result-list,.btn.btn.large-input{width:calc(100vw - 10px)}.generator-picker{justify-content:center}}:root{--node-border:#3f3f3f;--node-background-label:#1b1b1b;--node-background-input:#272727;--node-background-hover:#1f1f1f;--node-text:#dadada;--node-text-dimmed:#b4b4b4;--node-selected:#ad9715;--node-selected-hover:#a38c0a;--node-selected-border:#8d7a0d;--node-add:#487c13;--node-add-hover:#3e7409;--node-add-border:#3b6e0c;--node-remove:#9b341b;--node-remove-hover:#922d13;--node-remove-border:#7e1d05;--node-indent-border:#454749;--category-predicate:#306163;--category-predicate-border:#224849;--category-predicate-background:#1d3333;--category-function:#838383;--category-function-border:#6b6b6b;--category-function-background:#414141;--category-pool:#386330;--category-pool-border:#2e4922;--category-pool-background:#21331d}:root[data-theme=light]{--node-border:#bcbfc3;--node-background-label:#e4e4e4;--node-background-input:#ffffff;--node-background-hover:#e7e7e7;--node-text:#000000;--node-text-dimmed:#2c2c2c;--node-selected:#f0e65e;--node-selected-hover:#faf06c;--node-selected-border:#b9a327;--node-add:#9bd464;--node-add-hover:#a5dd70;--node-add-border:#498d09;--node-remove:#e76f51;--node-remove-hover:#f57656;--node-remove-border:#be4b2e;--node-indent-border:#b9b9b9;--category-predicate:#65b5b8;--category-predicate-border:#187e81;--category-predicate-background:#95c5c7;--category-function:#979fa7;--category-function-border:#788086;--category-function-background:#dce0e4;--category-pool:#76b865;--category-pool-border:#398118;--category-pool-background:#b1d6a6}@media (prefers-color-scheme:light){:root[data-theme=system]{--node-border:#bcbfc3;--node-background-label:#e4e4e4;--node-background-input:#ffffff;--node-background-hover:#e7e7e7;--node-text:#000000;--node-text-dimmed:#2c2c2c;--node-selected:#f0e65e;--node-selected-hover:#faf06c;--node-selected-border:#b9a327;--node-add:#9bd464;--node-add-hover:#a5dd70;--node-add-border:#498d09;--node-remove:#e76f51;--node-remove-hover:#f57656;--node-remove-border:#be4b2e;--node-indent-border:#b9b9b9;--category-predicate:#65b5b8;--category-predicate-border:#187e81;--category-predicate-background:#95c5c7;--category-function:#979fa7;--category-function-border:#788086;--category-function-background:#dce0e4;--category-pool:#76b865;--category-pool-border:#398118;--category-pool-background:#b1d6a6}}.node-header{display:inline-flex;position:relative;align-items:center;width:100%}.node-header>*{height:34px;border:1px solid;color:var(--node-text);border-color:var(--node-border)}.node-header>label{align-self:flex-start;padding:0 9px;line-height:1.94rem;white-space:nowrap;user-select:none;background-color:var(--node-background-label)}.node-header>input{font-size:18px;padding-left:9px;background-color:var(--node-background-input)}.node-header>input[type=color]{padding:0 2px}.node-header>textarea{min-width:236.33px;min-height:34px;font-size:18px;padding-left:9px;padding-top:5px;background-color:var(--node-background-input)}.node-header>datalist,.node-header>select{font-size:18px;padding-left:6px;background-color:var(--node-background-input)}.node-header button{font-size:18px;padding:0 9px;line-height:1.94rem;white-space:nowrap;user-select:none;cursor:pointer;background-color:var(--node-background-input)}.node-header button:not([disabled]):hover{background-color:var(--node-background-hover)}.object-node>.node-header>.collapse{cursor:pointer}.node-error+.fixed-list~input,.node-error~input:last-child,.node-error~input[list]:nth-last-child(2),.node-error~select:last-child{border-color:var(--node-remove)!important}.node-header>.node-icon{order:1}.node-header>.node-icon:first-child+*,.node-header>:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.node-header>:last-child,.node-header>input[list]:nth-last-child(2){border-top-right-radius:3px;border-bottom-right-radius:3px}.node-header>*{margin-right:-1px}.list-node>.node-header>:first-child,.map-node>.node-header>:first-child,.object-node:not(.no-body)>.node-header>:first-child{border-top-left-radius:8px;border-bottom-left-radius:0}button.selected{background-color:var(--node-selected);border-color:var(--node-selected-border)}button:not([disabled]).selected:hover{background-color:var(--node-selected-hover)}.collapse svg{fill:var(--node-text)}.collapse.closed,button.add{background-color:var(--node-add);border-color:var(--node-add-border)}.collapse:not([disabled]).closed:hover,button:not([disabled]).add:hover{background-color:var(--node-add-hover)}.collapse.open,button.remove{background-color:var(--node-remove);border-color:var(--node-remove-border)}.collapse:not([disabled]).open:hover,button:not([disabled]).remove:hover{background-color:var(--node-remove-hover)}.node-header>button svg{display:inline-block;position:relative;top:2px;fill:var(--node-text)}.node-header>button.add:last-child,.node-header>button.collapse:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}.node-move{display:flex;flex-direction:column;width:34px}button.move{height:50%;border:none;display:flex}button.move+button.move{border-top:1px solid var(--node-border)}button.move:disabled{cursor:unset;fill:var(--node-border)}.node-icon{border:none;position:relative;display:inline-block}.node-icon .icon-popup{visibility:hidden;width:240px;background-color:var(--background-6);color:var(--text-1);text-align:center;border-radius:6px;padding:8px 4px;position:absolute;z-index:2;top:125%;left:50%;margin-left:-120px}.node-icon .icon-popup::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-3px;border-width:5px;border-style:solid;border-color:transparent transparent var(--background-6) transparent}.node-icon svg:hover+.icon-popup,.node-icon.show .icon-popup{visibility:visible}.node-icon svg{height:34px;width:34px;min-width:34px;margin-left:6px;cursor:pointer}.node-icon.node-help svg{fill:var(--node-border)}.node-icon.node-error svg{fill:var(--node-remove)}.node-menu{position:absolute;left:0;top:100%;width:min-content;margin-top:4px;margin-left:4px;z-index:1;color:var(--text-1);font-size:16px;border-radius:6px;background-color:var(--background-6);box-shadow:0 1px 5px -2px #000}.node-menu::after{content:"";position:absolute;bottom:100%;left:0;margin-left:6px;border-width:5px;border-style:solid;border-color:transparent transparent var(--background-6) transparent}.menu-item{padding:4px;display:flex;align-items:center;white-space:normal}.menu-item>*{margin-right:4px}.menu-item .btn{padding:8px;box-shadow:unset}.menu-item span{color:var(--text-2)}.node{margin-bottom:4px}.node-body>.node:first-child{margin-top:4px}.node:last-child{margin-bottom:0}.node-body{border-left:3px solid var(--node-indent-border)}.node-body{display:flex;flex-direction:column;padding-left:18px}.list-node>.node-body>.object-node>.node-body,.map-node>.node-body>.object-node>.node-body{padding-left:0}.list-node>.node-body>.object-node>.node-body>.node>.node-body,.map-node>.node-body>.object-node>.node-body>.node>.node-body{border-left:none}.list-node>.node-body>.object-node>.node-body>.node>.node-header>.node-icon:first-child+*,.list-node>.node-body>.object-node>.node-body>.node>.node-header>:first-child,.map-node>.node-body>.object-node>.node-body>.node>.node-header>.node-icon:first-child+*,.map-node>.node-body>.object-node>.node-body>.node>.node-header>:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.node-body>.list-node[data-category],.node-body>.map-node[data-category],.node-body>.object-node[data-category]{width:100%;min-width:max-content;padding:5px;padding-left:0;border:2px solid var(--node-border);border-radius:3px}.node-body>.object-node[data-category]>.node-header>.node-icon:first-child+*,.node-body>.object-node[data-category]>.node-header>:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.node-body>.list-node[data-category]>.node-body,.node-body>.map-node[data-category]>.node-body,.node-body>.object-node[data-category]>.node-body{border:none}.range-node select{width:25px}.fixed-list{display:none}.fixed-list~input,.number-node input,.range-node input{width:100px}[data-category=predicate].node-header>label,[data-category=predicate]>.node-body>.node>.node-header>label,[data-category=predicate]>.node-header>label{background-color:var(--category-predicate)}[data-category=predicate].node-header>label,[data-category=predicate]>.node-body,[data-category=predicate]>.node-body>.node>.node-header>:not(.selected),[data-category=predicate]>.node-header>:not(.selected),[data-category=predicate]>.node-header>label{border-color:var(--category-predicate-border)}.node-body>.node.list-node[data-category=predicate],.node-body>.node.map-node[data-category=predicate],.node-body>.node.object-node[data-category=predicate]{background-color:var(--category-predicate-background);border-color:var(--category-predicate-border)}[data-category=function].node-header>label,[data-category=function]>.node-body>.node>.node-header>label,[data-category=function]>.node-header>label{background-color:var(--category-function)}[data-category=function].node-header>label,[data-category=function]>.node-body,[data-category=function]>.node-body>.node>.node-header>:not(.selected),[data-category=function]>.node-header>:not(.selected),[data-category=function]>.node-header>label{border-color:var(--category-function-border)}.node-body>.node.list-node[data-category=function],.node-body>.node.map-node[data-category=function],.node-body>.node.object-node[data-category=function]{background-color:var(--category-function-background);border-color:var(--category-function-border)}[data-category=pool].node-header>label,[data-category=pool]>.node-body>.node>.node-header>label,[data-category=pool]>.node-header>label{background-color:var(--category-pool)}[data-category=pool].node-header>label,[data-category=pool]>.node-body,[data-category=pool]>.node-body>.node>.node-header>:not(.selected),[data-category=pool]>.node-header>:not(.selected),[data-category=pool]>.node-header>label{border-color:var(--category-pool-border)}.node-body>.node.list-node[data-category=pool],.node-body>.node.map-node[data-category=pool],.node-body>.node.object-node[data-category=pool]{background-color:var(--category-pool-background);border-color:var(--category-pool-border)} \ No newline at end of file diff --git a/assets/index.48578da9.js b/assets/index.48578da9.js new file mode 100644 index 00000000..6cb15a33 --- /dev/null +++ b/assets/index.48578da9.js @@ -0,0 +1,2 @@ +var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,i=(t,n,o)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[n]=o,s=(e,t)=>{for(var n in t||(t={}))a.call(t,n)&&i(e,n,t[n]);if(o)for(var n of o(t))r.call(t,n)&&i(e,n,t[n]);return e},l=(e,o)=>t(e,n(o));import{y as c,a as d,s as u,l as h,r as m,b as p,j as f,c as g,d as v,e as _,f as w,g as y,m as b,h as x,L as k,G as C,V as M,O as A,i as z,w as j,Z as E,k as V,z as I,T as $,E as O,C as L,n as S,A as P,o as D,q as N,p as T,t as B,u as H,v as R,x as F,B as J,N as W,R as G}from"./vendor.22f0794e.js";var U,Y=JSON.parse('{"languages":[{"code":"de","name":"Deutsch"},{"code":"en","name":"English"},{"code":"fr","name":"Français"},{"code":"it","name":"Italiano"},{"code":"ja","name":"日本語"},{"code":"pl","name":"Polski"},{"code":"pt","name":"Português"},{"code":"ru","name":"Русский"},{"code":"sk","name":"Slovenčina","schemas":false},{"code":"zh-cn","name":"简体中文"},{"code":"zh-tw","name":"正體中文"}],"versions":[{"id":"1.15","latest":"1.15.2","refs":{"mcdata_master":"13355f7"}},{"id":"1.16","latest":"1.16.5","refs":{"mcdata_master":"1.16.4","vanilla_datapack_data":"1.16.4-data","vanilla_datapack_summary":"1.16.4-summary"}},{"id":"1.17","latest":"1.17.1","refs":{"mcdata_master":"1.17.1","vanilla_datapack_data":"1.17.1-data","vanilla_datapack_summary":"1.17.1-summary"}},{"id":"1.18","refs":{"mcdata_master":"master","vanilla_datapack_data":"data","vanilla_datapack_summary":"summary"},"dynamic":true}],"generators":[{"id":"loot_table","url":"loot-table","path":"loot_tables","schema":"loot_table","maxVersion":"1.17"},{"id":"predicate","url":"predicate","path":"predicates","schema":"predicate"},{"id":"item_modifier","url":"item-modifier","path":"item_modifiers","schema":"item_modifier","minVersion":"1.17"},{"id":"advancement","url":"advancement","path":"advancements","schema":"advancement"},{"id":"recipe","url":"recipe","path":"recipes","schema":"recipe"},{"id":"dimension","url":"dimension","schema":"dimension","category":"worldgen","minVersion":"1.16"},{"id":"dimension_type","url":"dimension-type","schema":"dimension_type","category":"worldgen","minVersion":"1.16"},{"id":"world","url":"world","schema":"world_settings","category":"worldgen","minVersion":"1.16"},{"id":"worldgen/biome","url":"worldgen/biome","category":"worldgen","schema":"biome","minVersion":"1.16"},{"id":"worldgen/configured_carver","url":"worldgen/carver","category":"worldgen","schema":"configured_carver","minVersion":"1.16"},{"id":"worldgen/configured_feature","url":"worldgen/feature","category":"worldgen","schema":"configured_feature","minVersion":"1.16"},{"id":"worldgen/noise","url":"worldgen/noise","category":"worldgen","schema":"noise_parameters","minVersion":"1.18"},{"id":"worldgen/noise_settings","url":"worldgen/noise-settings","category":"worldgen","schema":"noise_settings","minVersion":"1.16"},{"id":"worldgen/configured_structure_feature","url":"worldgen/structure-feature","category":"worldgen","schema":"configured_structure_feature","minVersion":"1.16"},{"id":"worldgen/configured_surface_builder","url":"worldgen/surface-builder","category":"worldgen","schema":"configured_surface_builder","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/processor_list","url":"worldgen/processor-list","category":"worldgen","schema":"processor_list","minVersion":"1.16"},{"id":"worldgen/template_pool","url":"worldgen/template-pool","category":"worldgen","schema":"template_pool","minVersion":"1.16"}],"registries":[{"id":"advancement","dynamic":true},{"id":"attribute","minVersion":"1.16"},{"id":"block"},{"id":"block_predicate_type","minVersion":"1.18"},{"id":"dimension","dynamic":true},{"id":"dimension_type","dynamic":true},{"id":"enchantment"},{"id":"entity_type"},{"id":"fluid"},{"id":"function","dynamic":true},{"id":"float_provider_type","minVersion":"1.17"},{"id":"item"},{"id":"int_provider_type","minVersion":"1.17"},{"id":"height_provider_type","minVersion":"1.17"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_function_type","minVersion":"1.16"},{"id":"loot_nbt_provider_type","minVersion":"1.17"},{"id":"loot_number_provider_type","minVersion":"1.17"},{"id":"loot_pool_entry_type","minVersion":"1.16"},{"id":"loot_score_provider_type","minVersion":"1.17"},{"id":"loot_table","dynamic":true},{"id":"mob_effect"},{"id":"pos_rule_test","minVersion":"1.16"},{"id":"potion","minVersion":"1.15"},{"id":"predicate","dynamic":true},{"id":"recipe","dynamic":true},{"id":"recipe_serializer"},{"id":"rule_test","minVersion":"1.16"},{"id":"sound_event"},{"id":"stat_type"},{"id":"structure","dynamic":true},{"id":"tag/block","dynamic":true},{"id":"tag/entity_type","dynamic":true},{"id":"tag/fluid","dynamic":true},{"id":"tag/function","dynamic":true},{"id":"tag/item","dynamic":true},{"id":"worldgen/biome","dynamic":true},{"id":"worldgen/block_state_provider_type","minVersion":"1.16"},{"id":"worldgen/block_placer_type","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/biome_source","minVersion":"1.16"},{"id":"worldgen/carver","minVersion":"1.16"},{"id":"worldgen/chunk_generator","minVersion":"1.16"},{"id":"worldgen/configured_carver","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_decorator","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_structure_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_surface_builder","minVersion":"1.16","dynamic":true},{"id":"worldgen/decorator","minVersion":"1.16"},{"id":"worldgen/feature","minVersion":"1.16"},{"id":"worldgen/feature_size_type","minVersion":"1.16"},{"id":"worldgen/foliage_placer_type","minVersion":"1.16"},{"id":"worldgen/material_condition","minVersion":"1.18"},{"id":"worldgen/material_rule","minVersion":"1.18"},{"id":"worldgen/noise","minVersion":"1.18","dynamic":true},{"id":"worldgen/noise_settings","minVersion":"1.16","dynamic":true},{"id":"worldgen/processor_list","minVersion":"1.16","dynamic":true},{"id":"worldgen/structure_feature","minVersion":"1.16"},{"id":"worldgen/structure_pool_element","minVersion":"1.16"},{"id":"worldgen/structure_processor","minVersion":"1.16"},{"id":"worldgen/surface_builder","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/template_pool","minVersion":"1.16","dynamic":true},{"id":"worldgen/tree_decorator_type","minVersion":"1.16"},{"id":"worldgen/trunk_placer_type","minVersion":"1.16"},{"id":"biome","maxVersion":"1.15"},{"id":"worldgen/biome","minVersion":"1.16","path":"processed/reports/biomes"}]}');function Z({type:e,id:t}){return c((()=>{var e;null==(e=document.getElementById("ad-placeholder"))||e.remove(),"ethicalads"in window&ðicalads.load()}),[]),d("div",{"data-ea-publisher":"misode-github-io","data-ea-type":e,class:"ad dark flat",id:t})}function q({icon:e,label:t,active:n,class:o,tooltip:a,tooltipLoc:r,onClick:i}){return d("div",{class:`btn${n?" active":""}${o?` ${o}`:""}${a?` tooltipped tip-${null!=r?r:"sw"}`:""}`,onClick:i,"aria-label":a},e&&ne[e],t&&d("span",null,t))}function K({icon:e,label:t,large:n,doSelect:o,value:a,placeholder:r,onChange:i}){const s=void 0===i?()=>{}:e=>{const t=e.target.value;null==i||i(t)},l=u(null);return c((()=>{o&&l.current&&l.current.select()}),[o]),d("div",{class:"btn btn-input "+(n?"large-input":""),onClick:e=>e.stopPropagation()},e&&ne[e],t&&d("span",null,t),d("input",{ref:l,type:"text",value:a,onChange:s,placeholder:r}))}function X({size:e,draw:t,onDrag:n,onHover:o,onLeave:a},r){const i=u(null),s=u(),l=u(),d=u([0,0]),h=u(!1);c((()=>{const e=e=>{s.current=[e.offsetX,e.offsetY]},t=e=>{if(void 0===s.current){const t=e.offsetX/i.current.clientWidth,n=e.offsetY/i.current.clientHeight;return void(null==o||o(t,n))}if(!n)return;const t=e.offsetX-s.current[0],a=e.offsetY-s.current[1];0===t&&0===a||(d.current=[d.current[0]+t,d.current[1]+a],h.current||(cancelAnimationFrame(l.current),l.current=requestAnimationFrame((async()=>{h.current=!0;const e=d.current[0]/i.current.clientWidth,t=d.current[1]/i.current.clientHeight;d.current=[0,0],await(null==n?void 0:n(e,t)),h.current=!1})))),s.current=[e.offsetX,e.offsetY]},r=()=>{s.current=void 0},c=()=>{null==a||a()};return i.current.addEventListener("mousedown",e),i.current.addEventListener("mousemove",t),i.current.addEventListener("mouseleave",c),document.body.addEventListener("mouseup",r),()=>{var n,o,a;null==(n=i.current)||n.removeEventListener("mousedown",e),null==(o=i.current)||o.removeEventListener("mousemove",t),null==(a=i.current)||a.removeEventListener("mouseleave",c),document.body.removeEventListener("mouseup",r)}}),[...null!=r?r:[],i.current]);const m=u(),p=u(0);return m.current=async()=>{const n=i.current.getContext("2d"),o=e();i.current.width=o[0],i.current.height=o[1];const a=n.getImageData(0,0,o[0],o[1]),r=p.current+=1;await t(a),r===p.current&&n.putImageData(a,0,0)},{canvas:i,redraw:m.current}}function Q(){const[e,t]=h(!1),n=()=>{t(!1)};return c((()=>(e&&(document.body.addEventListener("click",n),document.body.addEventListener("contextmenu",n)),()=>{document.body.removeEventListener("click",n),document.body.removeEventListener("contextmenu",n)})),[e]),[e,()=>t(!0)]}function ee(e,t){const n={invalidated(){e&&t(e)}};c((()=>(null==e||e.addListener(n),()=>{null==e||e.removeListener(n)})),[e])}function te({icon:e,label:t,relative:n,tooltip:o,children:a}){const[r,i]=Q();return d("div",{class:"btn-menu"+(!1===n?" no-relative":"")},d(q,l(s({},{icon:e,label:t,tooltip:o}),{onClick:i})),r&&d("div",{class:"btn-group"},a))}!function(e){const t="Site",n="Generator";function o(e,t,n){ga("send","event",e,t,n)}function a(e,t){ga("set",`dimension${e}`,t)}e.pageview=function(e){ga("set","page",e),ga("send","pageview")},e.setLanguage=function(e){a(4,e),o(t,"set-language",e)},e.setTheme=function(e){a(1,e),o(t,"set-theme",e)},e.setVersion=function(e){a(3,e),o(n,"set-version",e)},e.setPreview=function(e){a(5,e),o(n,"set-preview",e)},e.setGenerator=function(e){a(6,e)},e.generatorEvent=function(e,t){o(n,e,t)}}(U||(U={}));const ne={alert:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"})),archive:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5a.25.25 0 00-.25.25v1.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25v-1.5a.25.25 0 00-.25-.25H1.75zM0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v1.5A1.75 1.75 0 0114.25 6H1.75A1.75 1.75 0 010 4.25v-1.5zM1.75 7a.75.75 0 01.75.75v5.5c0 .138.112.25.25.25h10.5a.25.25 0 00.25-.25v-5.5a.75.75 0 111.5 0v5.5A1.75 1.75 0 0113.25 15H2.75A1.75 1.75 0 011 13.25v-5.5A.75.75 0 011.75 7zm4.5 1a.75.75 0 000 1.5h3.5a.75.75 0 100-1.5h-3.5z"})),arrow_left:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"})),arrow_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"})),check:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"})),chevron_down:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"})),chevron_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"})),chevron_up:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"})),clippy:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"})),code:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"})),dash:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2 8a.75.75 0 01.75-.75h10.5a.75.75 0 010 1.5H2.75A.75.75 0 012 8z"})),device_desktop:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"})),download:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),duplicate:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M10.5 3a.75.75 0 01.75.75v1h1a.75.75 0 010 1.5h-1v1a.75.75 0 01-1.5 0v-1h-1a.75.75 0 010-1.5h1v-1A.75.75 0 0110.5 3z"}),d("path",{"fill-rule":"evenodd",d:"M6.75 0A1.75 1.75 0 005 1.75v7.5c0 .966.784 1.75 1.75 1.75h7.5A1.75 1.75 0 0016 9.25v-7.5A1.75 1.75 0 0014.25 0h-7.5zM6.5 1.75a.25.25 0 01.25-.25h7.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25h-7.5a.25.25 0 01-.25-.25v-7.5z"}),d("path",{d:"M1.75 5A1.75 1.75 0 000 6.75v7.5C0 15.216.784 16 1.75 16h7.5A1.75 1.75 0 0011 14.25v-1.5a.75.75 0 00-1.5 0v1.5a.25.25 0 01-.25.25h-7.5a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25h1.5a.75.75 0 000-1.5h-1.5z"})),eye:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"})),eye_closed:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M.143 2.31a.75.75 0 011.047-.167l14.5 10.5a.75.75 0 11-.88 1.214l-2.248-1.628C11.346 13.19 9.792 14 8 14c-1.981 0-3.67-.992-4.933-2.078C1.797 10.832.88 9.577.43 8.9a1.618 1.618 0 010-1.797c.353-.533.995-1.42 1.868-2.305L.31 3.357A.75.75 0 01.143 2.31zm3.386 3.378a14.21 14.21 0 00-1.85 2.244.12.12 0 00-.022.068c0 .021.006.045.022.068.412.621 1.242 1.75 2.366 2.717C5.175 11.758 6.527 12.5 8 12.5c1.195 0 2.31-.488 3.29-1.191L9.063 9.695A2 2 0 016.058 7.52l-2.53-1.832zM8 3.5c-.516 0-1.017.09-1.499.251a.75.75 0 11-.473-1.423A6.23 6.23 0 018 2c1.981 0 3.67.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.619 1.619 0 010 1.798c-.11.166-.248.365-.41.587a.75.75 0 11-1.21-.887c.148-.201.272-.382.371-.53a.119.119 0 000-.137c-.412-.621-1.242-1.75-2.366-2.717C10.825 4.242 9.473 3.5 8 3.5z"})),gear:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.429 1.525a6.593 6.593 0 011.142 0c.036.003.108.036.137.146l.289 1.105c.147.56.55.967.997 1.189.174.086.341.183.501.29.417.278.97.423 1.53.27l1.102-.303c.11-.03.175.016.195.046.219.31.41.641.573.989.014.031.022.11-.059.19l-.815.806c-.411.406-.562.957-.53 1.456a4.588 4.588 0 010 .582c-.032.499.119 1.05.53 1.456l.815.806c.08.08.073.159.059.19a6.494 6.494 0 01-.573.99c-.02.029-.086.074-.195.045l-1.103-.303c-.559-.153-1.112-.008-1.529.27-.16.107-.327.204-.5.29-.449.222-.851.628-.998 1.189l-.289 1.105c-.029.11-.101.143-.137.146a6.613 6.613 0 01-1.142 0c-.036-.003-.108-.037-.137-.146l-.289-1.105c-.147-.56-.55-.967-.997-1.189a4.502 4.502 0 01-.501-.29c-.417-.278-.97-.423-1.53-.27l-1.102.303c-.11.03-.175-.016-.195-.046a6.492 6.492 0 01-.573-.989c-.014-.031-.022-.11.059-.19l.815-.806c.411-.406.562-.957.53-1.456a4.587 4.587 0 010-.582c.032-.499-.119-1.05-.53-1.456l-.815-.806c-.08-.08-.073-.159-.059-.19a6.44 6.44 0 01.573-.99c.02-.029.086-.075.195-.045l1.103.303c.559.153 1.112.008 1.529-.27.16-.107.327-.204.5-.29.449-.222.851-.628.998-1.189l.289-1.105c.029-.11.101-.143.137-.146zM8 0c-.236 0-.47.01-.701.03-.743.065-1.29.615-1.458 1.261l-.29 1.106c-.017.066-.078.158-.211.224a5.994 5.994 0 00-.668.386c-.123.082-.233.09-.3.071L3.27 2.776c-.644-.177-1.392.02-1.82.63a7.977 7.977 0 00-.704 1.217c-.315.675-.111 1.422.363 1.891l.815.806c.05.048.098.147.088.294a6.084 6.084 0 000 .772c.01.147-.038.246-.088.294l-.815.806c-.474.469-.678 1.216-.363 1.891.2.428.436.835.704 1.218.428.609 1.176.806 1.82.63l1.103-.303c.066-.019.176-.011.299.071.213.143.436.272.668.386.133.066.194.158.212.224l.289 1.106c.169.646.715 1.196 1.458 1.26a8.094 8.094 0 001.402 0c.743-.064 1.29-.614 1.458-1.26l.29-1.106c.017-.066.078-.158.211-.224a5.98 5.98 0 00.668-.386c.123-.082.233-.09.3-.071l1.102.302c.644.177 1.392-.02 1.82-.63.268-.382.505-.789.704-1.217.315-.675.111-1.422-.364-1.891l-.814-.806c-.05-.048-.098-.147-.088-.294a6.1 6.1 0 000-.772c-.01-.147.039-.246.088-.294l.814-.806c.475-.469.679-1.216.364-1.891a7.992 7.992 0 00-.704-1.218c-.428-.609-1.176-.806-1.82-.63l-1.103.303c-.066.019-.176.011-.299-.071a5.991 5.991 0 00-.668-.386c-.133-.066-.194-.158-.212-.224L10.16 1.29C9.99.645 9.444.095 8.701.031A8.094 8.094 0 008 0zm1.5 8a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM11 8a3 3 0 11-6 0 3 3 0 016 0z"})),globe:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.543 7.25h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.506 6.506 0 00-4.666 5.5zm2.733 1.5H1.543a6.506 6.506 0 004.666 5.5 11.13 11.13 0 01-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948zm1.504 0h4.44a9.637 9.637 0 01-1.363 4.177c-.306.51-.612.919-.857 1.215a9.978 9.978 0 01-.857-1.215A9.637 9.637 0 015.78 8.75zm4.44-1.5H5.78a9.637 9.637 0 011.363-4.177c.306-.51.612-.919.857-1.215.245.296.55.705.857 1.215A9.638 9.638 0 0110.22 7.25zm1.504 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.506 6.506 0 004.666-5.5h-2.733zm2.733-1.5h-2.733c-.144-2.074-.866-3.756-1.58-4.948a11.738 11.738 0 00-.353-.552 6.506 6.506 0 014.666 5.5zM8 0a8 8 0 100 16A8 8 0 008 0z"})),history:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"})),info:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"})),issue_opened:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"})),kebab_horizontal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"})),link:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"})),mark_github:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})),moon:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M9.598 1.591a.75.75 0 01.785-.175 7 7 0 11-8.967 8.967.75.75 0 01.961-.96 5.5 5.5 0 007.046-7.046.75.75 0 01.175-.786zm1.616 1.945a7 7 0 01-7.678 7.678 5.5 5.5 0 107.678-7.678z"})),play:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"})),plus:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"})),plus_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zm.75 4.75a.75.75 0 00-1.5 0v2.5h-2.5a.75.75 0 000 1.5h2.5v2.5a.75.75 0 001.5 0v-2.5h2.5a.75.75 0 000-1.5h-2.5v-2.5z"})),search:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"})),stack:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.122.392a1.75 1.75 0 011.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 01-1.756 0L2.119 5.456a1.25 1.25 0 010-2.162L7.122.392zM8.125 1.69a.25.25 0 00-.25 0l-4.63 2.685 4.63 2.685a.25.25 0 00.25 0l4.63-2.685-4.63-2.685zM1.601 7.789a.75.75 0 011.025-.273l5.249 3.044a.25.25 0 00.25 0l5.249-3.044a.75.75 0 01.752 1.298l-5.248 3.044a1.75 1.75 0 01-1.756 0L1.874 8.814A.75.75 0 011.6 7.789zm0 3.5a.75.75 0 011.025-.273l5.249 3.044a.25.25 0 00.25 0l5.249-3.044a.75.75 0 01.752 1.298l-5.248 3.044a1.75 1.75 0 01-1.756 0l-5.248-3.044a.75.75 0 01-.273-1.025z"})),sun:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 10.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zM8 12a4 4 0 100-8 4 4 0 000 8zM8 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V.75A.75.75 0 018 0zm0 13a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 018 13zM2.343 2.343a.75.75 0 011.061 0l1.06 1.061a.75.75 0 01-1.06 1.06l-1.06-1.06a.75.75 0 010-1.06zm9.193 9.193a.75.75 0 011.06 0l1.061 1.06a.75.75 0 01-1.06 1.061l-1.061-1.06a.75.75 0 010-1.061zM16 8a.75.75 0 01-.75.75h-1.5a.75.75 0 010-1.5h1.5A.75.75 0 0116 8zM3 8a.75.75 0 01-.75.75H.75a.75.75 0 010-1.5h1.5A.75.75 0 013 8zm10.657-5.657a.75.75 0 010 1.061l-1.061 1.06a.75.75 0 11-1.06-1.06l1.06-1.06a.75.75 0 011.06 0zm-9.193 9.193a.75.75 0 010 1.06l-1.06 1.061a.75.75 0 11-1.061-1.06l1.06-1.061a.75.75 0 011.061 0z"})),sync:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2.5a5.487 5.487 0 00-4.131 1.869l1.204 1.204A.25.25 0 014.896 6H1.25A.25.25 0 011 5.75V2.104a.25.25 0 01.427-.177l1.38 1.38A7.001 7.001 0 0114.95 7.16a.75.75 0 11-1.49.178A5.501 5.501 0 008 2.5zM1.705 8.005a.75.75 0 01.834.656 5.501 5.501 0 009.592 2.97l-1.204-1.204a.25.25 0 01.177-.427h3.646a.25.25 0 01.25.25v3.646a.25.25 0 01-.427.177l-1.38-1.38A7.001 7.001 0 011.05 8.84a.75.75 0 01.656-.834z"})),tag:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"})),terminal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0114.25 15H1.75A1.75 1.75 0 010 13.25V2.75zm1.75-.25a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25V2.75a.25.25 0 00-.25-.25H1.75zM7.25 8a.75.75 0 01-.22.53l-2.25 2.25a.75.75 0 11-1.06-1.06L5.44 8 3.72 6.28a.75.75 0 111.06-1.06l2.25 2.25c.141.14.22.331.22.53zm1.5 1.5a.75.75 0 000 1.5h3a.75.75 0 000-1.5h-3z"})),three_bars:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"})),trashcan:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"})),unfold:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8.177.677l2.896 2.896a.25.25 0 01-.177.427H8.75v1.25a.75.75 0 01-1.5 0V4H5.104a.25.25 0 01-.177-.427L7.823.677a.25.25 0 01.354 0zM7.25 10.75a.75.75 0 011.5 0V12h2.146a.25.25 0 01.177.427l-2.896 2.896a.25.25 0 01-.354 0l-2.896-2.896A.25.25 0 015.104 12H7.25v-1.25zm-5-2a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 016 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 0112 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"})),upload:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.53 1.22a.75.75 0 00-1.06 0L3.72 4.97a.75.75 0 001.06 1.06l2.47-2.47v6.69a.75.75 0 001.5 0V3.56l2.47 2.47a.75.75 0 101.06-1.06L8.53 1.22zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),x:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"})),x_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.404 12.596a6.5 6.5 0 119.192-9.192 6.5 6.5 0 01-9.192 9.192zM2.344 2.343a8 8 0 1011.313 11.314A8 8 0 002.343 2.343zM6.03 4.97a.75.75 0 00-1.06 1.06L6.94 8 4.97 9.97a.75.75 0 101.06 1.06L8 9.06l1.97 1.97a.75.75 0 101.06-1.06L9.06 8l1.97-1.97a.75.75 0 10-1.06-1.06L8 6.94 6.03 4.97z"}))};function oe({error:e,onDismiss:t}){return d("div",{class:"error"},t&&d("div",{class:"error-dismiss",onClick:t},ne.x),d("h3",null,e),d("p",null,"If you think this is a bug, you can report it ",d("a",{href:"https://github.com/misode/misode.github.io/issues/new",target:"_blank"},"on GitHub")))}function ae(e,t,n){const o=e=>{const o=e.onChange&&(t=>{var o;const a=t.target.value;null==(o=e.onChange)||o.call(e,n(a))}),a=e.onEnter&&(t=>{var o;if("Enter"===t.key){const a=t.target.value;null==(o=e.onEnter)||o.call(e,n(a))}});return d("input",s(s({},e),{type:t,onChange:o,onKeyDown:a}))};return o.displayName=e,o}const re=ae("TextInput","text",(e=>e)),ie=ae("NumberInput","number",(e=>Number(e))),se=ae("RangeInput","range",(e=>Number(e)));let le;const ce={},de=function(e,t){if(!t)return e();if(void 0===le){const e=document.createElement("link").relList;le=e&&e.supports&&e.supports("modulepreload")?"modulepreload":"preload"}return Promise.all(t.map((e=>{if(e in ce)return;ce[e]=!0;const t=e.endsWith(".css"),n=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${n}`))return;const o=document.createElement("link");return o.rel=t?"stylesheet":le,t||(o.as="script",o.crossOrigin=""),o.href=e,document.head.appendChild(o),t?new Promise(((e,t)=>{o.addEventListener("load",e),o.addEventListener("error",t)})):void 0}))).then((()=>e()))};var ue=JSON.parse('{"add":"Add","add_bottom":"Add to bottom","add_top":"Add to top","advancement":"Advancement","changelog.search":"Search changes","collapse":"Collapse","collapse_all":"Hold %0% to collapse all","configure_layers":"Configure layers","copy":"Copy","copied":"Copied!","copy_context":"Copy context","dimension_type":"Dimension Type","dimension":"Dimension","disabled":"Disabled","download":"Download","duplicate":"Duplicate","enabled":"Enabled","entries_hidden":"%0% entries hidden","entries_hidden.more":"Show %0% more","entries_hidden.all":"Show all","expand":"Expand","expand_all":"Hold %0% to expand all","feature.decorated.decorators":"Decorators","feature.decorated.decorators.entry":"Decorator","fields":"Fields","generate_new_seed":"Generate new seed","github":"GitHub","hide_output":"Hide JSON output","hide_preview":"Hide preview","home":"Home","import":"Import","indentation.2_spaces":"2 spaces","indentation.4_spaces":"4 spaces","indentation.tabs":"Tabs","item_modifier":"Item Modifier","language":"Language","layer.biomes":"Biomes","layer.temperature":"Temperature","layer.humidity":"Humidity","layer.continentalness":"Continentalness","layer.erosion":"Erosion","layer.weirdness":"Weirdness","layer.offset":"Offset","layer.factor":"Factor","layer.jaggedness":"Jaggedness","loot_table":"Loot Table","more":"More","move_down":"Move down","move_up":"Move up","not_found.description":"The page you were looking for does not exist.","no_presets":"No presets","output_settings":"JSON output settings","predicate":"Predicate","recipe":"Recipe","redo":"Redo","reset":"Reset","settings":"Settings","settings.fields.description":"Customize advanced field settings","settings.fields.path":"Context","settings.fields.name":"Name","share":"Share","theme":"Theme","theme.dark":"Dark","theme.light":"Light","theme.system":"System","title.changelog":"Technical Changelog","title.generator":"%0% Generator","title.generator_category":"%0% Generators","title.home":"Data Pack Generators","title.sounds":"Sound Explorer","presets":"Presets","preview":"Visualize","preview.scale":"Scale","preview.depth":"Depth","preview.factor":"Factor","preview.offset":"Offset","preview.peaks":"Peaks","preview.width":"Width","remove":"Remove","search":"Search","show_output":"Show JSON output","show_preview":"Show preview","sounds.play":"Play","sounds.play_sound":"Play sound","sounds.play_all":"Play all","sounds.search":"Search sounds","sounds.download_function":"Download Mcfunction","sounds.delay":"Delay","sounds.pitch":"Pitch","sounds.volume":"Volume","sounds.copy_command":"Copy command","sounds.add_sound":"Add sound","sounds.remove_sound":"Remove sound","sounds.unknown_sound":"Unknown sound","sounds.loading_sound":"Loading sound","source_placeholder":"Paste JSON content here","switch_generator":"Switch generator","terrain_settings":"Terrain settings","undo":"Undo","world":"World Settings","worldgen":"Worldgen","worldgen/biome":"Biome","worldgen/configured_carver":"Carver","worldgen/configured_feature":"Feature","worldgen/noise":"Noise","worldgen/noise_settings":"Noise Settings","worldgen/processor_list":"Processor List","worldgen/configured_structure_feature":"Structure Feature","worldgen/configured_surface_builder":"Surface Builder","worldgen/template_pool":"Template Pool","zoom_in":"Zoom in","zoom_out":"Zoom out"}'),he=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:ue});const me={fallback:ue};function pe(e,t,...n){var o,a,r,i,s;return function(e,t){return e.replace(/%\d+%/g,(e=>{const n=parseInt(e.slice(1,-1));return void 0!==(null==t?void 0:t[n])?t[n]:e}))}(null!=(s=null!=(i=null!=(r=null==(o=me[e])?void 0:o[t])?r:null==(a=me.en)?void 0:a[t])?i:me.fallback[t])?s:t,n)}async function fe(e){const t=Y.languages.find((t=>t.code===e));if(!t)return;const n=await function(e){switch(e){case"../locales/de.json":return de((()=>import("./de.1d005dc8.js")),void 0);case"../locales/en.json":return de((()=>Promise.resolve().then((function(){return he}))),void 0);case"../locales/es.json":return de((()=>import("./es.d3abba45.js")),void 0);case"../locales/fr.json":return de((()=>import("./fr.f5531eea.js")),void 0);case"../locales/it.json":return de((()=>import("./it.fd9a8268.js")),void 0);case"../locales/ja.json":return de((()=>import("./ja.8c79487c.js")),void 0);case"../locales/pl.json":return de((()=>import("./pl.3a9fb38c.js")),void 0);case"../locales/pt.json":return de((()=>import("./pt.689bba1d.js")),void 0);case"../locales/ru.json":return de((()=>import("./ru.6f24253b.js")),void 0);case"../locales/sk.json":return de((()=>import("./sk.69c71daa.js")),void 0);case"../locales/zh-cn.json":return de((()=>import("./zh-cn.b233fc7e.js")),void 0);case"../locales/zh-tw.json":return de((()=>import("./zh-tw.298bd51e.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../locales/${e}.json`),o=!1!==t.schemas&&await function(e){switch(e){case"../../node_modules/@mcschema/locales/src/de.json":return de((()=>import("./de.f9c3209c.js")),void 0);case"../../node_modules/@mcschema/locales/src/en.json":return de((()=>import("./en.b8b79353.js")),void 0);case"../../node_modules/@mcschema/locales/src/es.json":return de((()=>import("./es.c83d9c73.js")),void 0);case"../../node_modules/@mcschema/locales/src/fr.json":return de((()=>import("./fr.e316b1e2.js")),void 0);case"../../node_modules/@mcschema/locales/src/it.json":return de((()=>import("./it.7ff123cd.js")),void 0);case"../../node_modules/@mcschema/locales/src/ja.json":return de((()=>import("./ja.4ae430b9.js")),void 0);case"../../node_modules/@mcschema/locales/src/pl.json":return de((()=>import("./pl.01cb20df.js")),void 0);case"../../node_modules/@mcschema/locales/src/pt.json":return de((()=>import("./pt.31e14993.js")),void 0);case"../../node_modules/@mcschema/locales/src/ru.json":return de((()=>import("./ru.92df5b59.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-cn.json":return de((()=>import("./zh-cn.4129665a.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-tw.json":return de((()=>import("./zh-tw.1b64f94d.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../../node_modules/@mcschema/locales/src/${e}.json`);me[e]=s(s({},n.default),o.default)}function ge(e){return"object"==typeof e&&null!==e}const ve=e=>("0"+e.toString(16)).substr(-2);function _e(e=12){var t=new Uint8Array(e/2);return window.crypto.getRandomValues(t),Array.from(t,ve).join("")}function we(){return BigInt(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER))}function ye(e){const t=Math.floor(4294967296*Math.random())-2147483648,n=e.get(new p.Path(["dimensions"]));e.set(new p.Path(["seed"]),t,!0),"object"==typeof n&&null!==n&&Object.keys(n).forEach((n=>{e.set(new p.Path(["dimensions",n,"generator","seed"]),t,!0),e.set(new p.Path(["dimensions",n,"generator","biome_source","seed"]),t,!0)})),e.set(new p.Path(["generator","seed"]),t,!0),e.set(new p.Path(["generator","biome_source","seed"]),t)}function be(e){let t=0;for(let n=0;ne.url===t))}function Ce(e){const t=Math.abs(be(e));return[t%256,(t>>8)%256,(t>>16)%256]}function Me(e){return e*e}function Ae(e,t,n){return Math.max(e,Math.min(t,n))}function ze(e,t,n){return n<0?e:n>1?t:je(n,e,t)}function je(e,t,n){return t+e*(n-t)}function Ee(e){return e instanceof Error?e.message:`${e}`}const Ve=m();function Ie(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;let n,o;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(o=0;o{try{const t=Pe[e].getCollections(),n={};await async function(e,t,n){const o=Y.versions.find((t=>t.id===e));if(!o)return void console.error(`[fetchData] Unknown version ${o} in ${JSON.stringify(Y.versions)}`);console.debug(`[fetchData] ${JSON.stringify(o)}`),o.dynamic&&await Promise.all(Fe.filter((e=>localStorage.getItem(`cached_${e.id}`)!==e.hash)).map((async e=>{console.debug(`[deleteMatching] ${e.id} '${localStorage.getItem(`cached_${e.id}`)}' < '${e.hash}' ${e.url}/${o.refs[e.id]}`),await async function(e){try{const t=await caches.open("misode-v1");console.debug("[deleteMatching] Opened cache misode-v1");const n=[];for(const o of await t.keys())e(o.url)&&n.push(t.delete(o));console.debug(`[deleteMatching] Removing ${n.length} cache objects...`),await Promise.all(n)}catch(t){console.warn(`[deleteMatching] Failed to open cache misode-v1: ${Ee(t)}`)}}((t=>t.startsWith(`${e.url}/${o.refs[e.id]}`))),console.debug(`[deleteMatching] Done! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`),localStorage.setItem(`cached_${e.id}`,e.hash),console.debug(`[deleteMatching] Set! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`)})));await Promise.all([Je(o,t),We(o,n),Ge(o,t)])}(e,t,n);const o=Pe[e].getSchemas(t);return Le[e]={collections:t,schemas:o,blockStates:n},Le[e]}catch(t){throw new Error(`Cannot get version "${e}": ${Ee(t)}`)}})()),Le[e]}function Be(e,t,n){const o=Y.versions.findIndex((t=>t.id===e)),a=t?Y.versions.findIndex((e=>e.id===t)):0,r=n?Y.versions.findIndex((e=>e.id===n)):Y.versions.length-1;return a<=o&&o<=r}["1.15","1.16","1.17"].forEach((e=>localStorage.removeItem(`cache_${e}`)));const He="https://raw.githubusercontent.com/Arcensoth/mcdata",Re="https://raw.githubusercontent.com/SPGoding/vanilla-datapack",Fe=[{id:"mcdata_master",hash:"0c69e25cbe6daaa36b3ea21866a9705c67fd7cf1",url:He},{id:"vanilla_datapack_summary",hash:"cfebb8dde88922b34e0adaca1d42507a2698c404",url:Re}];async function Je(e,t){console.debug(`[fetchRegistries] ${e.id}`);const n=Y.registries.filter((e=>!e.dynamic)).filter((t=>Be(e.id,t.minVersion,t.maxVersion)));if(Be(e.id,void 0,"1.15")){const a=`${He}/${e.refs.mcdata_master}/generated/reports/registries.json`;try{const e=await Ze(a,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n.slice(10)]=Object.keys(e[n].entries)})),t}));n.forEach((n=>{var o;t.register(n.id,null!=(o=e[n.id])?o:[])}))}catch(o){console.warn("Error occurred while fetching registries:",Ee(o))}}else await Promise.all(n.map((async n=>{try{const o=n.path?`${He}/${e.refs.mcdata_master}/${n.path}/data.min.json`:`${He}/${e.refs.mcdata_master}/processed/reports/registries/${n.id}/data.min.json`;t.register(n.id,await Ze(o,(e=>e.values)))}catch(o){console.warn(`Error occurred while fetching registry ${n.id}:`,Ee(o))}})))}async function We(e,t){if(console.debug(`[fetchBlockStateMap] ${e.id}`),Be(e.id,void 0,"1.16")){const o=Be(e.id,void 0,"1.15")?`${He}/${e.refs.mcdata_master}/generated/reports/blocks.json`:`${He}/${e.refs.mcdata_master}/processed/reports/blocks/data.min.json`;try{const e=await Ze(o,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n]={properties:e[n].properties,default:e[n].states.find((e=>e.default)).properties}})),t}));Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",Ee(n))}}else{const o=`${He}/${e.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`;try{const e=await Ze(o);Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",Ee(n))}}}async function Ge(e,t){console.debug(`[fetchDynamicRegistries] ${e.id}`);const n=Y.registries.filter((e=>e.dynamic)).filter((t=>Be(e.id,t.minVersion,t.maxVersion)));if(Be(e.id,"1.16")){const a=`${Re}/${e.refs.vanilla_datapack_summary}/summary/flattened.min.json`;try{const e=await Ze(a);n.forEach((n=>{t.register(n.id,e[n.id])}))}catch(o){console.warn("Error occurred while fetching dynamic registries:",Ee(o))}}Be(e.id,"1.18")&&t.register("worldgen/noise",qe)}async function Ue(e,t,n){console.debug(`[fetchPreset] ${t} ${n}`);const o=Y.versions.find((t=>t.id===e));try{const a=`${Re}/${o.refs.vanilla_datapack_data}/data/minecraft/${t}/${n}.json`,r=await fetch(a);if("worldgen/noise_settings"===t&&"1.18"===e){let e=await r.text();e=e.replaceAll('"max_threshold": Infinity','"max_threshold": 100');const t=JSON.parse(e);return"overworld"!==n&&"large_biomes"!==n&&(t.noise.terrain_shaper={offset:0,factor:0,jaggedness:0}),t}return await r.json()}catch(a){console.warn(`Error occurred while fetching ${t} preset ${n}:`,Ee(a))}}function Ye(e){return`https://misode-cors-anywhere.herokuapp.com/https://resources.download.minecraft.net/${e.slice(0,2)}/${e}`}async function Ze(e,t=(e=>e)){try{const n=await caches.open("misode-v1");console.debug(`[getData] Opened cache misode-v1 ${e}`);const o=await n.match(e);if(o&&o.ok)return console.debug(`[getData] Retrieving cached data ${e}`),await o.json();console.debug(`[getData] fetching data ${e}`);const a=await fetch(e),r=t(await a.json());return await n.put(e,new Response(JSON.stringify(r))),r}catch(n){console.warn(`[getData] Failed to open cache misode-v1: ${Ee(n)}`),console.debug(`[getData] fetching data ${e}`);const o=await fetch(e);return t(await o.json())}}const qe=["minecraft:aquifer_barrier","minecraft:aquifer_fluid_level_floodedness","minecraft:aquifer_fluid_level_spread","minecraft:aquifer_lava","minecraft:calcite","minecraft:cave_cheese","minecraft:cave_entrance","minecraft:cave_layer","minecraft:clay_bands_offset","minecraft:continentalness","minecraft:erosion","minecraft:gravel","minecraft:gravel_layer","minecraft:ice","minecraft:iceberg_and_badlands_pillar","minecraft:iceberg_and_badlands_pillar_roof","minecraft:jagged","minecraft:nether_state_selector","minecraft:nether_wart","minecraft:netherrack","minecraft:noodle","minecraft:noodle_ridge_a","minecraft:noodle_ridge_b","minecraft:noodle_thickness","minecraft:offset","minecraft:ore_gap","minecraft:ore_vein_a","minecraft:ore_vein_b","minecraft:ore_veininess","minecraft:packed_ice","minecraft:patch","minecraft:pillar","minecraft:pillar_rareness","minecraft:pillar_thickness","minecraft:powder_snow_surface","minecraft:powder_snow_under","minecraft:ridge","minecraft:soul_sand_layer","minecraft:spaghetti_2d","minecraft:spaghetti_2d_elevation","minecraft:spaghetti_2d_modulator","minecraft:spaghetti_2d_thickness","minecraft:spaghetti_3d_1","minecraft:spaghetti_3d_2","minecraft:spaghetti_3d_rarity","minecraft:spaghetti_3d_thickness","minecraft:spaghetti_roughness","minecraft:spaghetti_roughness_modulator","minecraft:surface","minecraft:surface_swamp","minecraft:temperature","minecraft:vegetation"];let Ke=!1;const Xe={temperature:[-1,1],humidity:[-1,1],continentalness:[-1.1,1],erosion:[-1,1],weirdness:[-1,1],offset:[-1,1],factor:[0,12],jaggedness:[0,1]};let Qe,et;async function tt(e,t){const n=[e,t.octaves,t.shaper.toJson(),`${t.seed}`,t.version];return Ie(n,Qe)||(Qe=Ve(n),et=await async function(e,t){var n,o,a,r,i;switch(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,"")){case"fixed":return new A(e.biome);case"checkerboard":const n=(null!=(o=e.scale)?o:2)+2,l=null!=(r=null==(a=e.biomes)?void 0:a.length)?r:0;return{getBiome(t,o,a){var r;const i=(((t>>n)+(a>>n))%l+l)%l;return null==(r=e.biomes)?void 0:r[i].node}};case"multi_noise":switch(null==(i=e.preset)?void 0:i.replace(/^minecraft:/,"")){case"nether":e="1.18"===t.version?rt:at;break;case"overworld":e="1.18"===t.version?await async function(){return(await Ue("1.18","dimension","overworld")).generator.biome_source}():e}if(e=p.DataModel.unwrapLists(e),"1.18"===t.version){await async function(){Ke||(await z(j),Ke=!0,console.debug(`Loaded deepslate-rs from "${j}"`))}();const n=new $e,o=e=>"number"==typeof e?[e,e]:e,[a,r,i,l,c,d,u,h,m,p,f,g,v,_]=[[],[],[],[],[],[],[],[],[],[],[],[],[],[]];for(const t of e.biomes){const{temperature:e,humidity:s,continentalness:w,erosion:y,weirdness:b,depth:x,offset:k}=t.parameters;a.push(o(e)[0]),r.push(o(e)[1]),i.push(o(s)[0]),l.push(o(s)[1]),c.push(o(w)[0]),d.push(o(w)[1]),u.push(o(y)[0]),h.push(o(y)[1]),m.push(o(b)[0]),p.push(o(b)[1]),f.push(o(x)[0]),g.push(o(x)[1]),v.push(k),_.push(n.getOrPut(t.biome,Math.floor(2147483647*Math.random())))}const C=w(new Float64Array(a),new Float64Array(r),new Float64Array(i),new Float64Array(l),new Float64Array(c),new Float64Array(d),new Float64Array(u),new Float64Array(h),new Float64Array(m),new Float64Array(p),new Float64Array(f),new Float64Array(g),new Float64Array(v),new Int32Array(_)),M=y(t.seed,t.octaves.temperature.firstOctave,new Float64Array(t.octaves.temperature.amplitudes),t.octaves.humidity.firstOctave,new Float64Array(t.octaves.humidity.amplitudes),t.octaves.continentalness.firstOctave,new Float64Array(t.octaves.continentalness.amplitudes),t.octaves.erosion.firstOctave,new Float64Array(t.octaves.erosion.amplitudes),t.octaves.weirdness.firstOctave,new Float64Array(t.octaves.weirdness.amplitudes),t.octaves.shift.firstOctave,new Float64Array(t.octaves.shift.amplitudes));return{getBiome(e,t,o){var a;const r=b(C,M,e,e+1,1,t,t+1,1,o,o+1,1);return null!=(a=n.getA(r[0]))?a:"unknown"},getBiomes:(e,t,o,a,r,i,s,l,c)=>[...b(C,M,e,t,o,a,r,i,s,l,c)].map((e=>{var t;return null!=(t=n.getA(e))?t:"unknown"})),getClimate(e,n,o,a,r,i,l,c,d,u){const h=x(M,n,o,a,r,i,l,c,d,u),m=[];for(let p=0;p{var a;const r=e[`${n}_noise`];return r.firstOctave=Ae(null!=(a=r.firstOctave)?a:-7,-100,-1),new C(new M(t.seed+BigInt(o)),r)}));return Array.isArray(e.biomes)&&0!==e.biomes.length?{getBiome(t,o,a){const r=n.map((e=>e.sample(t,a,0)));let i=1/0,s="";for(const{biome:n,parameters:l}of e.biomes){const e=Me(l.altitude-r[0])+Me(l.temperature-r[1])+Me(l.humidity-r[2])+Me(l.weirdness-r[3])+Me(l.offset);eo.nextFloat(),nextInt:e=>o.nextInt(e),sampleInt(e){return ut(e,this)}};for(let i=0;i=n.size[0]||i[1]>=n.size[1]||i[2]>=n.size[2])continue;const e=i[2]*(4*t.width)+4*i[0],o=s{pt(t,null==e?void 0:e.decorator,n).forEach((t=>mt(t,null==e?void 0:e.feature,n)))},random_boolean_selector:(e,t,n)=>{mt(t,n.nextFloat()<.5?null==e?void 0:e.feature_true:null==e?void 0:e.feature_false,n)},random_selector:(e,t,n)=>{var o,a;for(const r of null!=(o=null==e?void 0:e.features)?o:[])if(n.nextFloat()<(null!=(a=null==r?void 0:r.chance)?a:0))return void mt(t,r.feature,n);mt(t,null==e?void 0:e.default,n)},simple_random_selector:(e,t,n)=>{var o,a,r;mt(t,null==(r=null==e?void 0:e.features)?void 0:r[n.nextInt(null!=(a=null==(o=null==e?void 0:e.features)?void 0:o.length)?a:0)],n)}},gt={chance:(e,t,n)=>{var o;return n.nextFloat()<1/(null!=(o=null==e?void 0:e.chance)?o:1)?[t]:[]},count:(e,t,n)=>{var o;return new Array(n.sampleInt(null!=(o=null==e?void 0:e.count)?o:1)).fill(t)},count_extra:(e,t,n)=>{var o,a;let r=null!=(o=null==e?void 0:e.count)?o:1;return n.nextFloat(){var o;return new Array(n.sampleInt(null!=(o=null==e?void 0:e.count)?o:1)).fill(t).map((e=>[e[0]+n.nextInt(16),e[1],e[2]+n.nextInt(16)]))},count_noise:(e,t,n)=>{const o=n.biomeInfoNoise.sample(t[0]/200,0,t[2]/200){var o;const a=Math.max(1,e.noise_factor),r=n.biomeInfoNoise.sample(t[0]/a,0,t[2]/a),i=Math.max(0,Math.ceil((r+(null!=(o=e.noise_offset)?o:0))*e.noise_to_count_ratio));return new Array(i).fill(t)},dark_oak_tree:(e,t,n)=>[...new Array(16)].map(((e,o)=>{const a=4*Math.floor(o/4)+1+n.nextInt(3)+t[0];return[a,Math.max(n.seaLevel,it[Ae(0,63,a)]),4*Math.floor(o%4)+1+n.nextInt(3)+t[2]]})),decorated:(e,t,n)=>pt(t,null==e?void 0:e.outer,n).flatMap((t=>pt(t,null==e?void 0:e.inner,n))),depth_average:(e,t,n)=>{var o,a,r,i;return dt(t,n.nextInt(null!=(o=null==e?void 0:e.spread)?o:0)+n.nextInt(null!=(a=null==e?void 0:e.spread)?a:0)-(null!=(r=e.spread)?r:0)+(null!=(i=null==e?void 0:e.baseline)?i:0))},emerald_ore:(e,t,n)=>{const o=3+n.nextInt(6);return[...new Array(o)].map((()=>[t[0]+n.nextInt(16),4+n.nextInt(28),t[2]+n.nextInt(16)]))},fire:(e,t,n)=>{const o=1+n.nextInt(n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(o)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},glowstone:(e,t,n)=>{const o=n.nextInt(1+n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(o)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},heightmap:(e,t,n)=>dt(t,Math.max(n.seaLevel,it[Ae(0,63,t[0])])),heightmap_spread_double:(e,t,n)=>{const o=Math.max(n.seaLevel,it[Ae(0,63,t[0])]);return dt(t,n.nextInt(2*o))},heightmap_world_surface:(e,t,n)=>dt(t,Math.max(n.seaLevel,it[Ae(0,63,t[0])])),iceberg:(e,t,n)=>[[t[0]+4+n.nextInt(8),t[1],t[2]+4+n.nextInt(8)]],lava_lake:(e,t,n)=>{var o,a;if(0===n.nextInt((null!=(o=e.chance)?o:1)/10)){const o=n.nextInt(n.nextInt(248)+8);if(o[t],range:(e,t,n)=>{var o,a,r;return dt(t,n.nextInt((null!=(o=null==e?void 0:e.maximum)?o:1)-(null!=(a=null==e?void 0:e.top_offset)?a:0))+(null!=(r=null==e?void 0:e.bottom_offset)?r:0))},range_biased:(e,t,n)=>{var o,a,r;return dt(t,n.nextInt(n.nextInt((null!=(o=null==e?void 0:e.maximum)?o:1)-(null!=(a=null==e?void 0:e.top_offset)?a:0))+(null!=(r=null==e?void 0:e.bottom_offset)?r:0)))},range_very_biased:(e,t,n)=>{var o,a,r,i;return dt(t,n.nextInt(n.nextInt(n.nextInt((null!=(o=null==e?void 0:e.maximum)?o:1)-(null!=(a=null==e?void 0:e.top_offset)?a:0))+(null!=(r=null==e?void 0:e.bottom_offset)?r:0))+(null!=(i=null==e?void 0:e.bottom_offset)?i:0)))},spread_32_above:(e,t,n)=>dt(t,n.nextInt(t[1]+32)),top_solid_heightmap:(e,t)=>dt(t,it[Ae(0,63,t[0])]),magma:(e,t,n)=>dt(t,n.nextInt(t[1]+32)),square:(e,t,n)=>[[t[0]+n.nextInt(16),t[1],t[2]+n.nextInt(16)]],surface_relative_threshold:(e,t)=>{var n,o;const a=it[Ae(0,63,t[0])],r=a+(null!=(n=null==e?void 0:e.min_inclusive)?n:-1/0),i=a+(null!=(o=null==e?void 0:e.max_inclusive)?o:1/0);return t[1]i?[t]:[]},water_lake:(e,t,n)=>{var o;return 0===n.nextInt(null!=(o=e.chance)?o:1)?[[t[0]+n.nextInt(16),n.nextInt(256),t[2]+n.nextInt(16)]]:[]}};class vt{constructor(e){this.settings={},this.chunkWidth=4,this.chunkHeight=4,this.chunkCountY=32,this.biomeDepth=.1,this.biomeScale=.2,this.noiseColumnCache=[],this.xOffset=0;const t=new M(e);this.minLimitPerlinNoise=new E(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.maxLimitPerlinNoise=new E(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.mainPerlinNoise=new E(t,-7,[1,1,1,1,1,1,1,1]),this.depthNoise=new E(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])}reset(e,t,n,o,a){this.settings=e,this.chunkWidth=4*e.size_horizontal,this.chunkHeight=4*e.size_vertical,this.chunkCountY=Math.floor(e.height/this.chunkHeight),e.amplified&&t>0&&(t=1+2*t,n=1+4*n),this.biomeDepth=.265625*(.5*t-.125),this.biomeScale=96/(.9*n+.1),this.noiseColumnCache=Array(a).fill(null),this.xOffset=o}iterateNoiseColumn(e){const t=Array(this.chunkCountY*this.chunkHeight),n=Math.floor(e/this.chunkWidth),o=Math.floor(e%this.chunkWidth)/this.chunkWidth,a=this.fillNoiseColumn(n),r=this.fillNoiseColumn(n+1);for(let h=this.chunkCountY-1;h>=0;h-=1)for(let e=this.chunkHeight;e>=0;e-=1){const n=e/this.chunkHeight;t[h*this.chunkHeight+e]=(i=n,s=o,l=a[h],c=a[h+1],d=r[h],u=r[h+1],je(s,je(i,l,c),je(i,d,u)))}var i,s,l,c,d,u;return t}fillNoiseColumn(e){const t=this.noiseColumnCache[e-this.xOffset];if(t)return t;const n=Array(this.chunkCountY+1),o=684.412*this.settings.sampling.xz_scale,a=684.412*this.settings.sampling.y_scale,r=o/this.settings.sampling.xz_factor,i=a/this.settings.sampling.y_factor,s=this.settings.random_density_offset?this.getRandomDensity(e):0;for(let l=0;l<=this.chunkCountY;l+=1){let t=this.sampleAndClampNoise(e,l,this.mainPerlinNoise.getOctaveNoise(0).zo,o,a,r,i);const c=((1-2*l/this.chunkCountY+s)*this.settings.density_factor+this.settings.density_offset+this.biomeDepth)*this.biomeScale;t+=c*(c>0?4:1),this.settings.top_slide.size>0&&(t=ze(this.settings.top_slide.target,t,(this.chunkCountY-l-this.settings.top_slide.offset)/this.settings.top_slide.size)),this.settings.bottom_slide.size>0&&(t=ze(this.settings.bottom_slide.target,t,(l-this.settings.bottom_slide.offset)/this.settings.bottom_slide.size)),n[l]=t}return this.noiseColumnCache[e-this.xOffset]=n,n}getRandomDensity(e){const t=this.depthNoise.sample(200*e,10,this.depthNoise.getOctaveNoise(0).zo,1,0,!0),n=24.575625*(t<0?.3*-t:t)-2;return n<0?.009486607142857142*n:.006640625*Math.min(n,1)}sampleAndClampNoise(e,t,n,o,a,r,i){let s=0,l=0,c=0,d=1;for(let u=0;u<16;u+=1){const h=E.wrap(e*o*d),m=E.wrap(t*a*d),p=E.wrap(n*o*d),f=a*d,g=this.minLimitPerlinNoise.getOctaveNoise(u);g&&(s+=g.sample(h,m,p,f,t*f)/d);const v=this.maxLimitPerlinNoise.getOctaveNoise(u);if(v&&(l+=v.sample(h,m,p,f,t*f)/d),u<8){const o=this.mainPerlinNoise.getOctaveNoise(u);o&&(c+=o.sample(E.wrap(e*r*d),E.wrap(t*i*d),E.wrap(n*r*d),i*d,t*i*d)/d)}d/=2}return ze(s/512,l/512,(c/10+1)/2)}}const _t={"minecraft:air":[150,160,170],"minecraft:water":[20,80,170],"minecraft:lava":[200,100,0],"minecraft:stone":[50,50,50],"minecraft:netherrack":[100,40,40],"minecraft:end_stone":[200,200,140]};let wt,yt,bt=[];function xt(e,t,n){var o,a,r;if(Be(n.version,"1.18")){const{settings:a,generator:r}=function(e,t){const n=V.fromJson(p.DataModel.unwrapLists(e));n.octaves=jt(n);const o=[e,`${t.seed}`];if(!Ie(o,wt)){wt=Ve(o),bt=[];const e=new A("unknown");yt=new I(t.seed,e,n)}return{settings:n,generator:yt}}(e,n),i=new Ct(-n.offset,n.width,a.noise.minY,a.noise.height);i.fill(r);const s=t.data;for(let e=0;e0?0:e[t+1]>0?150:255}class Ct{constructor(e,t,n,o){this.minX=e,this.filled=[],this.chunks=[...Array(Math.ceil(t/16)+1)].map(((t,a)=>{const r=(e>>4)+a,i=bt.find((e=>e.pos[0]===r));return i?(this.filled[a]=!0,i):new $(n,o,O.create(r,0))}))}fill(e){this.chunks.forEach(((t,n)=>{this.filled[n]||(e.fill(t),this.filled[n]=!0,bt.push(t))}))}getBlockState(e){const t=(e[0]>>4)-(this.minX>>4);return this.chunks[t].getBlockState(e)}}const Mt=["biomes","temperature","humidity","continentalness","erosion","weirdness","offset","factor","jaggedness"],At=k.overworld(),zt=({model:e,data:t,shown:n,lang:o,version:a})=>{var r;const[i,s]=h(2),[l,m]=h(void 0),[f,g]=h(new Set(["biomes"])),v=u([0,0]),_=u(1),w=u(void 0),y=BigInt(e.get(new p.Path(["generator","seed"]))),b=jt(e.get(new p.Path(["generator","settings"]))),x=function(e){var t;if("string"==typeof e)switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return At;default:return k.fromJson({offset:0,factor:0,jaggedness:0})}return k.fromJson(p.DataModel.unwrapLists(null==(t=null==e?void 0:e.noise)?void 0:t.terrain_shaper))}(e.get(new p.Path(["generator","settings"]))),C=n?function(e,t,n){return JSON.stringify([e,t,n.toJson()])}(t,b,x):"",M=null==(r=t.type)?void 0:r.replace(/^minecraft:/,""),{canvas:A,redraw:z}=X({size:()=>[200/_.current,200/_.current],async draw(e){const n={octaves:b,shaper:x,biomeColors:{},layers:f,offset:v.current,scale:i,seed:y,res:_.current,version:a};await async function(e,t,n){var o,a,r;const{biomeSource:i}=await tt(e,n),s=t.data,l=-Math.round(n.offset[0])-100+n.res/2,c=-Math.round(n.offset[1])-100+n.res/2,d=4*t.width/n.res,u=4/n.res,h=[l*n.scale,(200+l)*n.scale,n.res*n.scale],m=[c*n.scale,(200+c)*n.scale,n.res*n.scale],p=n.layers.has("biomes")?null==(o=i.getBiomes)?void 0:o.call(i,...h,64,65,1,...m):void 0,f=[...n.layers].filter((e=>"biomes"!==e)),g=0===f.length||null==(a=i.getClimate)?void 0:a.call(i,new Set(f),...h,64,65,1,...m);for(let v=0;v<200;v+=n.res)for(let e=0;e<200;e+=n.res){const t=e*d+v*u,o=v/n.res*200/n.res+e/n.res,a=(v+l)*n.scale,h=(e+c)*n.scale;let m=[50,50,50];if(n.layers.has("biomes"))m=nt(null!=(r=null==p?void 0:p[o])?r:i.getBiome(a,64,h),n.biomeColors);else if(g&&f[0]){const e=g[o][f[0]],[t,n]=Xe[f[0]],a=(e-t)/(n-t)*256;m=[a,a,a]}s[t]=m[0],s[t+1]=m[1],s[t+2]=m[2],s[t+3]=255}}(t,e,n),4===_.current&&(clearTimeout(w.current),w.current=setTimeout((()=>{_.current=1,z()}),150))},async onDrag(e,t){v.current[0]=v.current[0]+200*e,v.current[1]=v.current[1]+200*t,clearTimeout(w.current),_.current="multi_noise"===M?4:1,z()},async onHover(e,n){const o={octaves:b,shaper:x,biomeColors:{},layers:f,offset:v.current,scale:i,seed:y,res:1,version:a},r=await async function(e,t,n,o){const{biomeSource:a}=await tt(e,o),[r,i]=function([e,t],n){return[(e-n.offset[0]-100+n.res/2)*n.scale,(t-n.offset[1]-100+n.res/2)*n.scale]}([t,n],o);return a.getBiome(r,64,i)}(t,Math.floor(200*e),Math.floor(200*n),o);m(r)},onLeave(){m(void 0)}},[C,i,y,f]);c((()=>{n&&(_.current="multi_noise"===M?4:1,z())}),[C,i,y,f,n]);const j=e=>{v.current[0]=v.current[0]*i/e,v.current[1]=v.current[1]*i/e,s(e)};return d(S,null,d("div",{class:"controls"},l&&d(q,{label:l,class:"no-pointer"}),"multi_noise"===M&&d(te,{icon:"stack",tooltip:pe(o,"configure_layers")},Mt.map((e=>{const t=f.has(e);return d(q,{label:pe(o,`layer.${e}`),active:t,tooltip:pe(o,t?"enabled":"disabled"),onClick:t=>{g(new Set([e])),t.stopPropagation()}})}))),("multi_noise"===M||"checkerboard"===M)&&d(S,null,d(q,{icon:"dash",tooltip:pe(o,"zoom_out"),onClick:()=>j(1.5*i)}),d(q,{icon:"plus",tooltip:pe(o,"zoom_in"),onClick:()=>j(i/1.5)})),"multi_noise"===M&&d(q,{icon:"sync",tooltip:pe(o,"generate_new_seed"),onClick:()=>ye(e)})),d("canvas",{ref:A,width:"200",height:"200"}))};function jt(e){if("string"!=typeof e){const t=V.fromJson(p.DataModel.unwrapLists(e));e=0===t.noise.densityFactor&&-.030078125===t.noise.densityOffset?"minecraft:nether":"minecraft:overworld"}switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return{temperature:{firstOctave:-9,amplitudes:[1.5,0,1,0,0,0]},humidity:{firstOctave:-7,amplitudes:[1,1,0,0,0,0]},continentalness:{firstOctave:-9,amplitudes:[1,1,2,2,2,1,1,1,1]},erosion:{firstOctave:-9,amplitudes:[1,1,0,1,1]},weirdness:{firstOctave:-7,amplitudes:[1,2,1,0,0,0]},shift:{firstOctave:-3,amplitudes:[1,1,1,0]}};case"end":case"floating_islands":return{temperature:{firstOctave:0,amplitudes:[0]},humidity:{firstOctave:0,amplitudes:[0]},continentalness:{firstOctave:0,amplitudes:[0]},erosion:{firstOctave:0,amplitudes:[0]},weirdness:{firstOctave:0,amplitudes:[0]},shift:{firstOctave:0,amplitudes:[0]}};default:return{temperature:{firstOctave:-7,amplitudes:[1,1]},humidity:{firstOctave:-7,amplitudes:[1,1]},continentalness:{firstOctave:-7,amplitudes:[1,1]},erosion:{firstOctave:-7,amplitudes:[1,1]},weirdness:{firstOctave:-7,amplitudes:[1,1]},shift:{firstOctave:0,amplitudes:[0]}}}}const Et=({data:e,version:t,shown:n,lang:o})=>{const[a,r]=h(4),[i,s]=h(we()),{canvas:l,redraw:u}=X({size:()=>[16*a,16*a],async draw(n){lt(e,n,{seed:i,version:t,size:[16*a,128,16*a]})}}),m=JSON.stringify(e);return c((()=>{n&&u()}),[m,a,i,n]),d(S,null,d("div",{class:"controls"},d(q,{icon:"dash",tooltip:pe(o,"zoom_out"),onClick:()=>r(Math.min(16,a+1))}),d(q,{icon:"plus",tooltip:pe(o,"zoom_in"),onClick:()=>r(Math.max(1,a-1))}),d(q,{icon:"sync",tooltip:pe(o,"generate_new_seed"),onClick:()=>s(we())})),d("canvas",{ref:l,width:"64",height:"64"}))},Vt=({lang:e,data:t,shown:n,version:o})=>{const[a,r]=h(we()),[i,s]=h(2),l=u([0,0]),m=JSON.stringify([t]),{canvas:f,redraw:g}=X({size:()=>[256,256],async draw(e){const n={offset:l.current,scale:i,seed:a,version:o};!function(e,t,n){const o=new M(n.seed),a=L.fromJson(p.DataModel.unwrapLists(e)),r=new C(o,a),i=-n.offset[0]-100,s=-n.offset[1]-100,l=t.data;for(let c=0;c<256;c+=1)for(let e=0;e<256;e+=1){const t=4*c+4*e*256,o=(c+i)*n.scale,a=(e+s)*n.scale,d=128*(r.sample(o,a,0)+1);l[t]=d,l[t+1]=d,l[t+2]=d,l[t+3]=255}}(t,e,n)},async onDrag(e,t){l.current[0]=l.current[0]+256*e,l.current[1]=l.current[1]+256*t,g()}},[m,i,a]);c((()=>{n&&g()}),[m,i,a,n]);const v=e=>{l.current[0]=l.current[0]*i/e,l.current[1]=l.current[1]*i/e,s(e)};return d(S,null,d("div",{class:"controls"},d(q,{icon:"dash",tooltip:pe(e,"zoom_out"),onClick:()=>v(1.5*i)}),d(q,{icon:"plus",tooltip:pe(e,"zoom_in"),onClick:()=>v(i/1.5)}),d(q,{icon:"sync",tooltip:pe(e,"generate_new_seed"),onClick:()=>r(we())})),d("canvas",{ref:f,width:"256",height:"256"}))},It=({lang:e,data:t,shown:n,version:o})=>{var a,r;const i=pe.bind(null,e),[s,l]=h(we()),[m,p]=h(.2),[f,g]=h(.1),[v,_]=h(void 0),w=u(0),y=JSON.stringify([t,m,f]),b=null!=(r=null==(a=null==t?void 0:t.noise)?void 0:a.height)?r:256,{canvas:x,redraw:k}=X({size:()=>[b,b],async draw(e){const n={biomeDepth:f,biomeScale:m,offset:w.current,width:e.width,seed:s,version:o};xt(t,e,n)},async onDrag(e){w.current+=e*b,k()},async onHover(e,n){var o,a;const r=b-Math.max(1,Math.ceil(n*b))+(null!=(a=null==(o=null==t?void 0:t.noise)?void 0:o.min_y)?a:0);_(`${r}`)},onLeave(){_(void 0)}},[y,s]);return c((()=>{n&&k()}),[y,s,n]),d(S,null,d("div",{class:"controls"},v&&d(q,{label:`Y = ${v}`,class:"no-pointer"}),Be(o,void 0,"1.17")&&d(te,{icon:"gear",tooltip:pe(e,"terrain_settings")},d(K,{label:i("preview.scale"),value:`${m}`,onChange:e=>p(Number(e))}),d(K,{label:i("preview.depth"),value:`${f}`,onChange:e=>g(Number(e))})),d(q,{icon:"sync",tooltip:pe(e,"generate_new_seed"),onClick:()=>l(we())})),d("canvas",{ref:x,width:b,height:b}))},$t=["dimension","worldgen/noise","worldgen/noise_settings","worldgen/configured_feature"];function Ot({lang:e,model:t,version:n,id:o,shown:a}){var r;const[,i]=h(0);if(ee(t,(()=>{i((e=>e+1))})),"dimension"===o&&(null==(r=null==t?void 0:t.get(new p.Path(["generator","type"])))?void 0:r.endsWith("noise"))){const o=t.get(new p.Path(["generator","biome_source"]));if(o)return d(zt,s({},{lang:e,model:t,version:n,shown:a,data:o}))}if("worldgen/noise"===o&&t){const o=t.get(new p.Path([]));if(o)return d(Vt,s({},{lang:e,model:t,version:n,shown:a,data:o}))}if("worldgen/noise_settings"===o&&t){const o=t.get(new p.Path([]));if(o)return d(It,s({},{lang:e,model:t,version:n,shown:a,data:o}))}if("worldgen/configured_feature"===o&&t){const o=t.get(new p.Path([]));if(o)return d(Et,s({},{lang:e,model:t,version:n,shown:a,data:o}))}return d(S,null)}const Lt={base:({},e,t)=>t,choice({switchNode:e},t,n,o){return e.hook(this,t,n,o)},list({children:e},t,n,o){return Array.isArray(n)?n.map(((n,a)=>e.hook(this,t.push(a),n.node,o))):n},map({children:e,config:t},n,o,a){var r,i;if(void 0===o)return;const s="block_state_map"===(null==(r=t.validation)?void 0:r.validator)?null==(i=a.blockStates)?void 0:i[p.relativePath(n,t.validation.params.id).get()]:null,l={};return Object.keys(o).forEach((t=>{var r;s&&!Object.keys(null!=(r=s.properties)?r:{}).includes(t)||(l[t]=e.hook(this,n.push(t),o[t],a))})),l},object({getActiveFields:e},t,n,o){if(null==n||"object"!=typeof n)return n;const a={},r=e(t);return Object.keys(r).filter((e=>r[e].enabled(t))).forEach((e=>{a[e]=r[e].hook(this,t.push(e),n[e],o)})),a}};var St,Pt;(Pt=St||(St={})).ID_LANGUAGE="language",Pt.ID_THEME="theme",Pt.ID_VERSION="schema_version",Pt.ID_INDENT="indentation",Pt.ID_SOUNDS_VERSION="minecraft_sounds_version",Pt.getLanguage=function(){var e;return null!=(e=localStorage.getItem(Pt.ID_LANGUAGE))?e:"en"},Pt.getTheme=function(){var e;return null!=(e=localStorage.getItem(Pt.ID_THEME))?e:"dark"},Pt.getVersion=function(){const e=localStorage.getItem(Pt.ID_VERSION);return e&&Oe.includes(e)?e:"1.17"},Pt.getIndent=function(){var e;return null!=(e=localStorage.getItem(Pt.ID_INDENT))?e:"2_spaces"},Pt.getSoundsVersion=function(){var e;return null!=(e=localStorage.getItem(Pt.ID_SOUNDS_VERSION))?e:"latest"},Pt.setLanguage=function(e){e&&localStorage.setItem(Pt.ID_LANGUAGE,e)},Pt.setTheme=function(e){e&&localStorage.setItem(Pt.ID_THEME,e)},Pt.setVersion=function(e){e&&localStorage.setItem(Pt.ID_VERSION,e)},Pt.setIndent=function(e){e&&localStorage.setItem(Pt.ID_INDENT,e)},Pt.setSoundsVersion=function(e){e&&localStorage.setItem(Pt.ID_SOUNDS_VERSION,e)};const Dt={"2_spaces":2,"4_spaces":4,tabs:"\t"};function Nt({lang:e,name:t,model:n,blockStates:o,doCopy:a,doDownload:r,doImport:i,copySuccess:s,onError:l}){const m=pe.bind(null,e),[f,g]=h(St.getIndent()),v=u(null),_=u(null),w=u(),y=P(((e,t)=>{const n=e.schema.hook(Lt,new p.ModelPath(e),e.data,{blockStates:t});return JSON.stringify(n,null,Dt[f])+"\n"}),[f]);c((()=>{w.current=()=>{if(n&&o)try{const e=y(n,o);e.length>=1e4?v.current.value=e.slice(0,1e4)+"\n\nOutput is too large to display (+10000 chars)\nExport to view complete output\n\n":v.current.value=e}catch(e){l(`Error getting JSON output: ${Ee(e)}`),console.error(e),v.current.value=""}}})),ee(n,(()=>{w.current()})),c((()=>{n&&w.current()}),[n]),c((()=>{w.current()}),[f]);c((()=>{a&&n&&o&&navigator.clipboard.writeText(y(n,o)).then((()=>{s()}))}),[a]),c((()=>{if(r&&n&&o&&_.current){const e=encodeURIComponent(y(n,o));_.current.setAttribute("href",`data:text/json;charset=utf-8,${e}`),_.current.setAttribute("download",`${t}.json`),_.current.click()}}),[r]),c((()=>{i&&v.current&&(v.current.value="",v.current.select())}),[i]);return d(S,null,d("div",{class:"controls"},d(te,{icon:"gear",tooltip:m("output_settings")},Object.entries(Dt).map((([e])=>d(q,{label:m(`indentation.${e}`),active:f===e,onClick:()=>{return t=e,St.setIndent(t),void g(t);var t}}))))),d("textarea",{ref:v,class:"source",onBlur:()=>{try{const e=JSON.parse(v.current.value);null==n||n.reset(p.DataModel.wrapLists(e),!1)}catch(e){l(`Error importing: ${Ee(e)}`),console.error(e)}},spellcheck:!1,autocorrect:"off",placeholder:m("source_placeholder")}),d("a",{ref:_,style:"display: none;"}))}class Tt extends p.DataModel{constructor(e,t,n,o){super(e),this.mapper=t,this.getter=n,this.setter=o}map(e){return this.mapper(e)}get(e){return this.getter(e)}set(e,t,n){return this.setter(e,t,n)}}const Bt=["loot_table.type","loot_entry.type","function.function","condition.condition","criterion.trigger","recipe.type","dimension.generator.type","dimension.generator.biome_source.type","dimension.generator.biome_source.preset","carver.type","feature.type","decorator.type","feature.tree.minimum_size.type","block_state_provider.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","int_provider.type","float_provider.type","height_provider.type","structure_feature.type","surface_builder.type","processor.processor_type","rule_test.predicate_type","pos_rule_test.predicate_type","template_element.element_type","block_placer.type","block_predicate.type","material_rule.type","material_condition.type"],Ht=["number_provider.type","score_provider.type","nbt_provider.type","int_provider.type","float_provider.type","height_provider.type"],Rt=["feature.config","decorator.config","int_provider.value","float_provider.value","block_state_provider.simple_state_provider.state","block_state_provider.rotated_block_provider.state","block_state_provider.weighted_state_provider.entries.entry.data","rule_test.block_state","structure_feature.config","surface_builder.config","template_pool.elements.entry.element","decorator.block_survives_filter.state","material_rule.block.result_state"],Ft=["loot_entry.type","function.function","condition.condition","criterion.trigger","dimension.generator.type","dimension.generator.biome_source.type","feature.type","decorator.type","block_state_provider.type","feature.tree.minimum_size.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","block_placer.type","rule_test.predicate_type","processor.processor_type","template_element.element_type","nbt_operation.op","number_provider.value","score_provider.name","score_provider.target","nbt_provider.source","nbt_provider.target","generator_biome.biome","block_predicate.type","material_rule.type","material_condition.type"],Jt=["function.set_nbt.tag","advancement.display.icon.nbt","text_component_object.nbt","entity.nbt","block.nbt","item.nbt"],Wt=["generator_biome.parameters.temperature","generator_biome.parameters.humidity","generator_biome.parameters.continentalness","generator_biome.parameters.erosion","generator_biome.parameters.depth","generator_biome.parameters.weirdness","feature.end_spike.crystal_beam_target","feature.end_gateway.exit","decorator.block_filter.offset","block_predicate.matching_blocks.offset","block_predicate.matching_fluids.offset"],Gt=new p.DataModel(p.MapNode(p.StringNode(),p.StringNode()),{historyMax:0});function Ut({model:e,lang:t,blockStates:n}){var o;const a=new p.ModelPath(e),[r,i,s]=e.schema.hook(Yt,a,Ve(e.data),t,n,{});return(null==(o=null==i?void 0:i.props)?void 0:o.children.some((e=>e)))?d("div",{class:`node ${e.schema.type(a)}-node`,"data-category":e.schema.category(a)},d("div",{class:"node-header"},r,i),d("div",{class:"node-body"},s)):s}const Yt={base:()=>[null,null,null],boolean:(e,t,n,o,a,r)=>[null,d(Kt,s({},l(s({},e),{path:t,value:n,lang:o,states:a,ctx:r}))),null],choice({choices:e,config:t,switchNode:n},o,a,r,i,s){const l=n.activeCase(o,!0),c=(null==t?void 0:t.context)?new p.ModelPath(o.getModel(),new p.Path(o.getArray(),[t.context])):o,[u,h,m]=l.node.hook(this,c,a,r,i,s);if(1===e.length)return[u,h,m];const f=(null==t?void 0:t.choiceContext)?new p.Path([],[t.choiceContext]):(null==t?void 0:t.context)?new p.Path([],[t.context]):o,g=d("select",{value:l.type,onChange:n=>(n=>{var r,i,s;const c=null!=(r=e.find((e=>e.type===n)))?r:l,d=c.change?c.change(p.DataModel.unwrapLists(a)):"feature"===t.choiceContext?null==(s=null==(i=c.node.default())?void 0:i.config)?void 0:s.feature:c.node.default();o.model.set(o,p.DataModel.wrapLists(d))})(n.target.value)},e.map((e=>d("option",{value:e.type},on(r,f.contextPush(e.type))))));return[u,d(S,null,g,h),m]},list({children:e,config:t},n,o,a,r,i){const{expand:c,collapse:u,isToggled:m}=qt(),[f,g]=h(50),v=n.getContext().join(".");if(Wt.includes(v)){return[d(S,null,[...Array(t.maxLength)].map(((e,t)=>d(an,{lang:a,path:n.modelPush(t)}))),d("div",{class:"fixed-list"})),d(S,null,[...Array(t.maxLength)].map(((t,s)=>{var l;return e.hook(this,n.modelPush(s),null==(l=null==o?void 0:o[s])?void 0:l.node,a,r,i)[1]}))),null]}return[null,d("button",{class:"add tooltipped tip-se","aria-label":pe(a,"add_top"),onClick:()=>{Array.isArray(o)||(o=[]);const t=p.DataModel.wrapLists(e.default());n.model.set(n,[{node:t,id:_e()},...o])}},ne.plus_circle),d(S,null,o&&Array.isArray(o)&&o.map((({node:t,id:h},p)=>{if(p===f)return d("div",{class:"node node-header"},d("label",null,pe(a,"entries_hidden",""+(o.length-f))),d("button",{onClick:()=>g(Math.min(f+50,o.length))},pe(a,"entries_hidden.more","50")),d("button",{onClick:()=>g(o.length)},pe(a,"entries_hidden.all")));if(p>f)return null;const v=n.push(p).contextPush("entry"),_="object"===e.type(v),w=m(h);if(_&&(!1===w||void 0===w&&o.length>20))return d("div",{class:"node node-header","data-category":e.category(v)},d(an,{lang:a,path:v,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${pe(a,"expand")}\n${pe(a,"expand_all","Ctrl")}`,onClick:c(h)},ne.chevron_right),d("label",null,on(a,v,`${p}`)),d(Zt,{key:h,path:v,value:t,schema:e}));return d(en,l(s({key:h,path:v,schema:e,value:t},{lang:a,states:r,actions:[{icon:"duplicate",label:"duplicate",onSelect:()=>{const e=[...n.get()];e.splice(p,0,{id:_e(),node:Ve(t)}),n.model.set(n,e)}}]}),{ctx:l(s({},i),{index:(0===p?1:0)+(p===o.length-1?2:0)})}),_&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${pe(a,"collapse")}\n${pe(a,"collapse_all","Ctrl")}`,onClick:u(h)},ne.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":pe(a,"remove"),onClick:()=>v.set(void 0)},ne.trashcan),o.length>1&&d("div",{class:"node-move"},d("button",{class:"move tooltipped tip-se","aria-label":pe(a,"move_up"),onClick:()=>{const e=[...n.get()];[e[p-1],e[p]]=[e[p],e[p-1]],n.model.set(n,e)},disabled:0===p},ne.chevron_up),d("button",{class:"move tooltipped tip-se","aria-label":pe(a,"move_down"),onClick:()=>{const e=[...n.get()];[e[p+1],e[p]]=[e[p],e[p+1]],n.model.set(n,e)},disabled:p===o.length-1},ne.chevron_down)))})),o&&o.length>0&&o.length<=f&&d("div",{class:"node node-header"},d("button",{class:"add tooltipped tip-se","aria-label":pe(a,"add_bottom"),onClick:()=>{Array.isArray(o)||(o=[]);const t=p.DataModel.wrapLists(e.default());n.model.set(n,[...o,{node:t,id:_e()}])}},ne.plus_circle)))]},map({children:e,keys:t,config:n},o,a,r,i,c){var u,h,m,f,g;const{expand:v,collapse:_,isToggled:w}=qt(),y=new p.ModelPath(Gt,new p.Path([nn(o.toString())])),b="block_state_map"===(null==(u=n.validation)?void 0:u.validator)?null==i?void 0:i[p.relativePath(o,n.validation.params.id).get()]:null,x=(null==b?void 0:b.properties)?p.StringNode(null,{enum:Object.keys(null!=(h=b.properties)?h:{})}):t;if(b&&"Properties"===o.last()){"object"!=typeof a&&(a={});const e=Object.entries(null!=(m=b.properties)?m:{}).map((([e,t])=>[e,p.StringNode(null,{enum:t})]));return Object.entries(null!=(f=b.properties)?f:{}).forEach((([e,t])=>{"string"!=typeof a[e]?o.model.errors.add(o.push(e),"error.expected_string"):t.includes(a[e])||o.model.errors.add(o.push(e),"error.invalid_enum_option",a[e])})),p.ObjectNode(Object.fromEntries(e)).hook(this,o,a,r,i,c)}return[null,d(S,null,x.hook(this,y,null!=(g=y.get())?g:"",r,i,c)[1],d("button",{class:"add tooltipped tip-se","aria-label":pe(r,"add"),onClick:()=>{const t=y.get();o.model.set(o.push(t),p.DataModel.wrapLists(e.default()))}},ne.plus_circle)),d(S,null,"object"==typeof a&&Object.entries(a).map((([t,n])=>{var u,h,m,f;const g=o.modelPush(t),y="object"===e.type(g),x=w(t);if(y&&(!1===x||void 0===x&&a.length>20))return d("div",{class:"node node-header","data-category":e.category(g)},d(an,{lang:r,path:g,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${pe(r,"expand")}\n${pe(r,"expand_all","Ctrl")}`,onClick:v(t)},ne.chevron_right),d("label",null,t),d(Zt,{key:t,path:g,value:n,schema:e}));const k=b?p.StringNode(null,{enum:null!=(h=null==(u=b.properties)?void 0:u[t])?h:[]}):e;(null==(m=null==b?void 0:b.properties)?void 0:m[t])&&"string"==typeof n&&!(null==(f=b.properties)?void 0:f[t].includes(n))&&o.model.errors.add(g,"error.invalid_enum_option",n);return d(en,l(s({key:t,schema:k,path:g,value:n},{lang:r,states:i,ctx:c}),{label:t}),y&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${pe(r,"collapse")}\n${pe(r,"collapse_all","Ctrl")}`,onClick:_(t)},ne.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":pe(r,"remove"),onClick:()=>g.set(void 0)},ne.trashcan))})))]},number:(e,t,n,o,a,r)=>[null,d(Xt,s({},l(s({},e),{path:t,value:n,lang:o,states:a,ctx:r}))),null],object({node:e,config:t,getActiveFields:n,getChildModelPath:o},a,r,i,c,u){var h;const{expand:m,isToggled:f}=qt();if(0==a.getArray().length&&function(e,t){var n;return"feature"===e&&"decorated"===(null==(n=null==t?void 0:t.type)?void 0:n.replace(/^minecraft:/,""))&&ge(null==t?void 0:t.config)}(t.context,r)){const{wrapper:e,fields:t}=function(e,t,n){const o=[],a=ln(n,o),r={type:e.type,config:p.ObjectNode({decorators:p.ListNode(De),feature:Ne},{context:"feature.decorated"})},i=p.ObjectNode(r,{context:"feature"}),s=new p.Path(["config","feature"]),l=new p.Path(["config","decorators"]),c=t.getModel(),d=new Tt(i,(e=>{if(e.startsWith(s))return new p.Path([...[...Array(o.length-1)].flatMap((()=>["config","feature"])),...e.modelArr]);if(e.startsWith(l)){if(2===e.modelArr.length)return new p.Path([]);const t=e.modelArr[2];if("number"==typeof t)return new p.Path([...[...Array(t)].flatMap((()=>["config","feature"])),"config","decorator",...e.modelArr.slice(3)])}return e}),(e=>{if(e.equals(l)){const e=[];return ln(c.data,e),e}return c.get(d.map(e))}),((e,t,n)=>{if(e.startsWith(s)){const o=[];ln(c.data,o);const a=new p.Path([...[...Array(o.length-1)].flatMap((()=>["config","feature"])),...e.modelArr]);return c.set(a,t,n)}if(e.startsWith(l)){const o=e.modelArr[2];if(2===e.modelArr.length){const e=d.get(s);return c.set(new p.Path,cn(e,t),n)}if("number"==typeof o){if(3===e.modelArr.length&&void 0===t){const e=d.get(s),t=[];ln(c.data,t),t.splice(o,1);const a=cn(e,t);return c.set(new p.Path,a,n)}{const a=new p.Path([...[...Array(o)].flatMap((()=>["config","feature"])),"config","decorator",...e.modelArr.slice(3)]);return c.set(a,t,n)}}}c.set(e,t,n)}));return d.data={type:c.data.type,config:{decorators:o,feature:a}},d.errors=c.errors,{fields:r,wrapper:d}}(n(a),a,r);r=e.data,n=()=>t,o=(t,n)=>new p.ModelPath(e,new p.Path(t.getArray(),["feature"])).push(n)}let g=null,v=null;if(e.optional())if(void 0===r){const t=()=>a.set(p.DataModel.wrapLists(e.default()));v=d("button",{class:"collapse closed tooltipped tip-se","aria-label":pe(i,"expand"),onClick:t},ne.plus_circle)}else{const e=()=>a.set(void 0);v=d("button",{class:"collapse open tooltipped tip-se","aria-label":pe(i,"remove"),onClick:e},ne.trashcan)}const _="object"==typeof r&&null!==r&&(null==(h=e.default())?void 0:h.pools)?l(s({},u),{loot:null==r?void 0:r.type}):u,w=d(S,null,"object"==typeof r&&null!==r&&!(e.optional()&&void 0===r)&&Object.entries(n(a)).filter((([e,t])=>t.enabled(a))).map((([e,t])=>{var n,l,h,p;const w=o(a,e),y="object"===t.type(w),b=f(e);if(y&&(!1===b||void 0===b&&(null!=(n=u.depth)?n:0)>5))return d("div",{class:"node node-header","data-category":t.category(w)},d(an,{lang:i,path:w,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${pe(i,"expand")}\n${pe(i,"expand_all","Ctrl")}`,onClick:m(e)},ne.chevron_right),d("label",null,on(i,w)));const x=w.getContext().join(".");if(Ht.includes(x))return null;const[k,C,M]=t.hook(this,w,r[e],i,c,_);if(!(k||C||(null!=(p=null==(h=null==(l=null==M?void 0:M.props)?void 0:l.children)?void 0:h.length)?p:0)>0))return null;const A="object"===t.type(w)&&Rt.includes(x),z=Ft.includes(x);return A||z?(g=d(S,null,g,d(an,{lang:i,path:w}),d(rn,{lang:i,path:w}),k),v=d(S,null,v,C),A?M:null):d(en,s({key:e,schema:t,path:w,value:r[e]},{lang:i,states:c,ctx:_}))})));return[g,v,w]},string:(e,t,n,o,a,r)=>[null,d(Qt,s({},l(s({},e),{path:t,value:n,lang:o,states:a,ctx:r}))),null]};function Zt({path:e,value:t}){var n,o,a,r,i;switch(e.getContext().join(".")){case"loot_table.pools.entry":return d("label",null,null!=(o=null==(n=null==t?void 0:t.entries)?void 0:n.length)?o:0," entries");case"function.set_contents.entries.entry":case"loot_pool.entries.entry":return d("label",null,null!=(i=null==(a=null==t?void 0:t.name)?void 0:a.replace(/^minecraft:/,""))?i:null==(r=null==t?void 0:t.type)?void 0:r.replace(/^minecraft:/,""))}for(const s of Object.values(null!=t?t:{}))if("string"==typeof s)return d("label",null,s.replace(/^minecraft:/,""));return null}function qt(){const[e,t]=h(new Map),[n,o]=h(void 0);return{expand:e=>n=>{n.ctrlKey?(t(new Map),o(!0)):t((t=>new Map(t.set(e,!0))))},collapse:e=>n=>{n.ctrlKey?(t(new Map),o(!1)):t((t=>new Map(t.set(e,!1))))},isToggled:t=>{var o;return e instanceof Map&&(null!=(o=e.get(t))?o:n)}}}function Kt({path:e,node:t,value:n,lang:o}){const a=o=>{e.model.set(e,t.optional()&&n===o?void 0:o)};return d(S,null,d("button",{class:!1===n?"selected":"",onClick:()=>a(!1)},pe(o,"false")),d("button",{class:!0===n?"selected":"",onClick:()=>a(!0)},pe(o,"true")))}function Xt({path:e,config:t,integer:n,value:o,lang:a}){var r;const i=t=>{const o=t.target.value,a=n?parseInt(o):parseFloat(o);e.model.set(e,a)};return d(S,null,d("input",{type:"text",value:null!=o?o:"",onBlur:i,onKeyDown:e=>{"Enter"===e.key&&i(e)}}),(null==t?void 0:t.color)&&d("input",{type:"color",value:"#"+(null!=(r=null==o?void 0:o.toString(16).padStart(6,"0"))?r:"000000"),onChange:t=>{const n=t.target.value,o=parseInt(n.slice(1),16);e.model.set(e,o)}}),["dimension.generator.seed","dimension.generator.biome_source.seed","world_settings.seed"].includes(e.getContext().join("."))&&d("button",{onClick:()=>ye(e.model),class:"tooltipped tip-se","aria-label":pe(a,"generate_new_seed")},ne.sync))}function Qt({path:e,getValues:t,config:n,node:o,value:a,lang:r,states:i}){var s;const l=t=>{t.stopPropagation();const n=t.target.value;n!==a&&e.model.set(e,0===n.length?void 0:n)},c=t(),u=e.getContext().join(".");if(Jt.includes(u))return d("textarea",{value:null!=a?a:"",onBlur:l});if(tn(n)&&!n.additional||Bt.includes(u)){let t=new p.Path([]);return tn(n)&&"string"==typeof n.enum?t=t.contextPush(n.enum):tn(n)||"resource"!==(null==n?void 0:n.validator)||"string"!=typeof n.params.pool?tn(n)&&(t=e):t=t.contextPush(n.params.pool),d("select",{value:null!=a?a:"",onChange:l},o.optional()&&d("option",{value:""},pe(r,"unset")),c.map((e=>d("option",{value:e},on(r,t.contextPush(e.replace(/^minecraft:/,"")))))))}if(tn(n)||"block_state_key"!==(null==n?void 0:n.validator)){const e=_e();return d(S,null,d("input",{value:null!=a?a:"",onBlur:l,onKeyDown:e=>{"Enter"===e.key&&l(e)},list:c.length>0?e:""}),c.length>0&&d("datalist",{id:e},c.map((e=>d("option",{value:e})))))}{const t=null==i?void 0:i[p.relativePath(e,n.params.id).get()],o=Object.keys(null!=(s=null==t?void 0:t.properties)?s:{});return d("select",{value:null!=a?a:"",onChange:l},o.map((e=>d("option",null,e))))}}const en=D((function({label:e,schema:t,path:n,value:o,lang:a,states:r,ctx:i,actions:c,children:u}){var h;const m=t.type(n),p=t.category(n),f=n.getContext().join("."),[g,v]=Q(),_=l(s({},i),{depth:(null!=(h=i.depth)?h:0)+1});delete _.index;const[w,y,b]=t.hook(Yt,n,o,a,r,_);return d("div",{class:`node ${m}-node`,"data-category":p},d("div",{class:"node-header",onContextMenu:e=>{e.preventDefault(),v()}},d(an,{lang:a,path:n}),d(rn,{lang:a,path:n}),u,w,d("label",null,null!=e?e:on(a,n,`${n.last()}`),g&&d("div",{class:"node-menu"},null==c?void 0:c.map((e=>{var t;return d("div",{key:e.label,class:"menu-item"},d(q,{icon:e.icon,tooltip:pe(a,e.label),tooltipLoc:"se",onClick:()=>e.onSelect()}),d("span",null,null!=(t=e.description)?t:pe(a,e.label)))})),d("div",{class:"menu-item"},d(q,{icon:"clippy",tooltip:pe(a,"copy_context"),tooltipLoc:"se",onClick:()=>navigator.clipboard.writeText(f)}),d("span",null,f)))),y),b&&d("div",{class:"node-body"},b))}),((e,t)=>e.schema===t.schema&&e.lang===t.lang&&e.path.equals(t.path)&&Ie(e.ctx,t.ctx)&&Ie(e.value,t.value)));function tn(e){return!!(null==e?void 0:e.enum)}function nn(e){var t,n=0;for(t=0;te.path.startsWith(t))):t.model.errors.get(t,!0);if(0===a.length)return null;const r=pe(e,a[0].error,...null!=(o=a[0].params)?o:[]);return sn("node-error","issue_opened",r)}function rn({lang:e,path:t}){const n=t.contextPush("help").getContext().join("."),o=pe(e,n);return o===n?null:sn("node-help","info",o)}const sn=(e,t,n)=>{const[o,a]=Q();return d("div",{class:`node-icon ${e}${o?" show":""}`,onClick:a},ne[t],d("span",{class:"icon-popup"},n))};function ln(e,t){var n,o;return"decorated"!==(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,""))?e:ge(null==e?void 0:e.config)?(t.push({id:t.length,node:e.config.decorator}),ln(null!=(o=e.config.feature)?o:"",t)):e}function cn(e,t){return 0===t.length?e:{type:"minecraft:decorated",config:{decorator:t.shift().node,feature:cn(e,t)}}}function dn({lang:e,model:t,blockStates:n,onError:o}){if(!t||!n||"none"===e)return d(S,null);const[a]=N((e=>{o(`Error rendering the tree: ${e.message}`),console.error(e)}));if(a)return d(S,null);const[,r]=h(0);return ee(t,(()=>{r((e=>e+1))})),d("div",{class:"tree"},d(Ut,s({},{model:t,lang:e,blockStates:n})))}const un={system:"device_desktop",dark:"moon",light:"sun"};function hn({lang:e,title:t,version:n,theme:o,changeTheme:a,language:r,changeLanguage:i}){const s=pe.bind(null,e),l=ke(T());return d("header",null,d("div",{class:"title"},d(B,{class:"home-link",href:"/","aria-label":s("home")},mn.home),d("h2",null,t),l&&d(te,{icon:"chevron_down",tooltip:s("switch_generator")},Y.generators.filter((e=>e.category===(null==l?void 0:l.category)&&Be(n,e.minVersion))).map((e=>d(q,{label:s(e.id),active:e.id===l.id,onClick:()=>H(xe(e.url))}))))),d("nav",null,d("ul",null,d("li",null,d(te,{icon:"globe",tooltip:s("language")},Y.languages.map((({code:e,name:t})=>d(q,{label:t,active:e===r,onClick:()=>i(e)}))))),d("li",null,d(te,{icon:un[o],tooltip:s("theme")},Object.entries(un).map((([e,t])=>d(q,{icon:t,label:s(`theme.${e}`),active:e===o,onClick:()=>a(e)}))))),d("li",{class:"dimmed"},d("a",{href:"https://github.com/misode/misode.github.io",target:"_blank",rel:"noreferrer",class:"tooltipped tip-sw","aria-label":s("github")},ne.mark_github)))))}const mn={home:d("svg",{width:"32",height:"28",viewBox:"0 0 32 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},d("rect",{width:"26",height:"6",rx:"3",fill:"#7CB45C"}),d("rect",{x:"8",width:"18",height:"6",rx:"3",fill:"#4BA041"}),d("rect",{y:"11",width:"32",height:"6",rx:"3",fill:"#AAA8A8"}),d("rect",{x:"11",y:"11",width:"21",height:"6",rx:"3",fill:"#91908F"}),d("rect",{x:"11",y:"22",width:"21",height:"6",rx:"3",fill:"#70B5C3"}),d("rect",{x:"17",y:"22",width:"15",height:"6",rx:"3",fill:"#4D989B"})),report:d("svg",{width:"30",height:"36",viewBox:"0 0 30 36",xmlns:"http://www.w3.org/2000/svg"},d("path",{d:"M0 16C0 13.7909 1.79086 12 4 12V12C6.20914 12 8 13.7909 8 16V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V16Z",fill:"#6ACC5D"}),d("path",{d:"M11 4C11 1.79086 12.7909 0 15 0V0C17.2091 0 19 1.79086 19 4V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V4Z",fill:"#FF4C4C"}),d("path",{d:"M22 10C22 7.79086 23.7909 6 26 6V6C28.2091 6 30 7.79086 30 10V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V10Z",fill:"#E5B442"}),d("path",{d:"M0 23C0 20.7909 1.79086 19 4 19V19C6.20914 19 8 20.7909 8 23V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V23Z",fill:"#2BAD1D"}),d("path",{d:"M11 15C11 12.7909 12.7909 11 15 11V11C17.2091 11 19 12.7909 19 15V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V15Z",fill:"#C10B0B"}),d("path",{d:"M22 19C22 16.7909 23.7909 15 26 15V15C28.2091 15 30 16.7909 30 19V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V19Z",fill:"#CC8E00"})),sounds:d("svg",{width:"20",height:"20",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},d("circle",{cx:"10",cy:"10",r:"10",fill:"#451475"}),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.5 10C3.5 8.27609 4.18482 6.62279 5.40381 5.40381C6.62279 4.18482 8.27609 3.5 10 3.5C11.7239 3.5 13.3772 4.18482 14.5962 5.40381C15.8152 6.62279 16.5 8.27609 16.5 10C16.5 11.7239 15.8152 13.3772 14.5962 14.5962C13.3772 15.8152 11.7239 16.5 10 16.5C8.27609 16.5 6.62279 15.8152 5.40381 14.5962C4.18482 13.3772 3.5 11.7239 3.5 10V10ZM10 2C7.87827 2 5.84344 2.84285 4.34315 4.34315C2.84285 5.84344 2 7.87827 2 10C2 12.1217 2.84285 14.1566 4.34315 15.6569C5.84344 17.1571 7.87827 18 10 18C12.1217 18 14.1566 17.1571 15.6569 15.6569C17.1571 14.1566 18 12.1217 18 10C18 7.87827 17.1571 5.84344 15.6569 4.34315C14.1566 2.84285 12.1217 2 10 2V2ZM8.379 7.227C8.34101 7.20412 8.29762 7.19175 8.25327 7.19117C8.20892 7.19059 8.16522 7.20181 8.12664 7.2237C8.08807 7.24558 8.05601 7.27733 8.03375 7.3157C8.0115 7.35406 7.99985 7.39765 8 7.442V12.559C8.00003 12.6033 8.0118 12.6467 8.03413 12.685C8.05646 12.7232 8.08854 12.7548 8.12708 12.7765C8.16563 12.7983 8.20926 12.8095 8.25352 12.8088C8.29778 12.8082 8.34108 12.7958 8.379 12.773L12.643 10.214C12.6798 10.1917 12.7103 10.1604 12.7315 10.1229C12.7526 10.0854 12.7638 10.043 12.7638 10C12.7638 9.95695 12.7526 9.91463 12.7315 9.87714C12.7103 9.83965 12.6798 9.80825 12.643 9.786L8.379 7.227Z",fill:"#C5A5E6"}))};function pn({lang:e,assets:t,sounds:n,sound:o,delay:a,pitch:r,volume:i,onEdit:s,onDelete:l,delayedPlay:m}){const p=pe.bind(null,e),[f,g]=h(!0),[v,_]=h(!1),[w,y]=h(!1),b=u([]),x=`playsound minecraft:${o} master @s ~ ~ ~ ${i} ${r}`;c((()=>{var e,a,s;const l=n[o];y(0===(null!=(a=null==(e=null==l?void 0:l.sounds)?void 0:e.length)?a:0)),b.current.forEach((e=>e.stop())),b.current=(null!=(s=null==l?void 0:l.sounds)?s:[]).map((e=>{const n="string"==typeof e?e:e.name,o=Ye(t[`minecraft/sounds/${n}.ogg`].hash),a=new R.Howl({src:[o],format:["ogg"],volume:i,rate:r});a.on("end",(()=>{_(!1)}));const s=()=>{f&&b.current.every((e=>"loaded"===e.state()))&&g(!1)};return"loaded"===a.state()?setTimeout((()=>s())):a.on("load",(()=>{s()})),a})),g(!0)}),[o,n]),c((()=>{b.current.forEach((e=>e.rate(r)))}),[r]),c((()=>{b.current.forEach((e=>e.volume(i)))}),[i]);const k=()=>{if(f||w)return;C();const e=Math.floor(Math.random()*b.current.length);b.current[e].play(),_(!0)},C=()=>{b.current.forEach((e=>e.stop()))};c((()=>{m&&setTimeout((()=>k()),50*a)}),[m]),c((()=>()=>C()),[]);const[M,A]=h(!1),z=u(void 0);return d("div",{class:`sound-config${f?" loading":v?" playing":""}${w?" invalid":""}`},d(q,{class:"play",icon:w?"alert":f?"sync":"play",label:p("sounds.play"),onClick:k,tooltip:p(w?"sounds.unknown_sound":f?"sounds.loading_sound":"sounds.play_sound"),tooltipLoc:"se"}),d(re,{class:"btn btn-input sound",list:"sound-list",spellcheck:!1,value:o,onChange:e=>s({sound:e})}),d("label",{class:"delay-label"},p("sounds.delay"),": "),d(ie,{class:"btn btn-input delay",min:0,value:a,onChange:e=>s({delay:e})}),d("label",{class:"pitch-label"},p("sounds.pitch"),": "),d(se,{class:"pitch tooltipped tip-s",min:.5,max:2,step:.01,"aria-label":r.toFixed(2),style:`--x: ${100/1.5*(r-.5)}%`,value:r,onChange:e=>s({pitch:e})}),d("label",{class:"volume-label"},p("sounds.volume"),": "),d(se,{class:"volume tooltipped tip-s",min:0,max:1,step:.01,"aria-label":i.toFixed(2),style:`--x: ${100*i}%`,value:i,onChange:e=>s({volume:e})}),d(q,{class:"copy"+(M?" active":""),icon:M?"check":"terminal",label:p("copy"),tooltip:p(M?"copied":"sounds.copy_command"),onClick:()=>{navigator.clipboard.writeText(x),A(!0),void 0!==z.current&&clearTimeout(z.current),z.current=setTimeout((()=>{A(!1)}),2e3)}}),d(q,{class:"remove",icon:"trashcan",tooltip:p("sounds.remove_sound"),onClick:()=>{l(),C()}}))}function fn({title:e,link:t,icon:n,children:o}){return d("a",{class:"tool-card",href:t},n&&mn[n],d("div",null,d("h3",null,e),o))}const gn="https://raw.githubusercontent.com/misode/technical-changes/main";let vn=null;async function _n(){if(!vn){const e=await(await fetch(`${gn}/index.json`)).json();vn=(await Promise.all(e.map((e=>async function(e){const t=await(await fetch(`${gn}/${e}/index.json`)).json();return(await Promise.all(t.map((t=>async function(e,t){return function(e){return e.split("\n\n").map((e=>{const t=e.indexOf("|");return{tags:e.substring(0,t).trim().split(" "),content:e.slice(t+1).trim()}}))}(await(await fetch(`${gn}/${e}/${t}.md`)).text()).map((n=>s({version:t,group:e},n)))}(e,t))))).flat()}(e))))).flat()}return vn}function wn({lang:e,changeTitle:t}){const n=pe.bind(null,e),[o,a]=h(null);t(n("title.changelog"));const[r,i]=h([]);c((()=>{_n().then((e=>i(e))).catch((e=>{console.error(e),a(e)}))}),[]);const[s,l]=h(""),[u,m]=h([]),p=e=>{u.includes(e)||m([...u,e])},f=F((()=>{const e=s.split(" ").map((e=>e.trim().toLowerCase())).filter((e=>e.length>0));return 0===e.length&&0===u.length?r:r.filter((t=>{if(!u.every((e=>t.tags.includes(e))))return!1;const n=t.tags.join(" ")+" "+t.content.toLowerCase();return e.every((e=>n.includes(e)))}))}),[r,s,u]);return d("main",null,d(Z,{type:"text",id:"changelog"}),o&&d(oe,{error:o,onDismiss:()=>a(null)}),d("div",{class:"changelog-controls"},d(re,{class:"btn btn-input changelog-search",list:"sound-list",placeholder:n("changelog.search"),value:s,onChange:l}),u.length>0&&d("div",{class:"changelog-tags"},u.map((e=>d(bn,{label:e,onClick:()=>m(u.filter((t=>t!==e)))}))))),d("div",{class:"changelog"},f.map((e=>d(yn,{change:e,activeTags:u,addTag:p})))))}function yn({change:e,activeTags:t,addTag:n}){return d("div",{class:"changelog-entry"},d("div",{class:"changelog-tags"},e.tags.map((e=>d(bn,{label:e,onClick:()=>n(e),active:t.includes(e)}))),d("a",{class:"changelog-version",href:`https://www.minecraft.net/en-us/article/minecraft-snapshot-${e.version}`},e.version)),d("div",{dangerouslySetInnerHTML:{__html:J(e.content)}}))}function bn({label:e,active:t,onClick:n}){const o=be(e)%360;return d("div",{class:`changelog-tag${t?" active":""}${n?" clickable":""}`,style:`--tint: ${o}`,onClick:n},e)}function xn({lang:e,changeTitle:t,version:n,changeVersion:o}){var a;const r=pe.bind(null,e),[i,m]=h(null),[f,g]=N();if(f)return d("main",null,d(oe,{error:`Something went wrong rendering the generator: ${f.message}`,onDismiss:g}));const v=ke(T());if(!v)return d("main",null,d(oe,{error:`Cannot find generator "${T()}"`}));const _=Y.versions.filter((e=>Be(e.id,v.minVersion,v.maxVersion))).map((e=>e.id));t(r("title.generator",r(v.id)),_),Be(n,v.minVersion)||m(`The minimum version for this generator is ${v.minVersion}`);const[w,y]=h(null),[b,x]=h(null);c((()=>{m(null),y(null),async function(e){return(await Te(e)).blockStates}(n).then((e=>x(e))),async function(e,t){var n;if(!Se[t]||Se[t].version!==e){const a=await Te(e);De=p.Reference(a.schemas,"configured_decorator"),Ne=p.ChoiceNode([{type:"string",node:p.StringNode(a.collections,{validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:p.Reference(a.schemas,"configured_feature")}],{choiceContext:"feature"});const r=null==(n=Y.generators.find((e=>e.id===t)))?void 0:n.schema;if(!r)throw new Error(`Cannot find model ${t}`);try{const n=a.schemas.get(r),o=new p.DataModel(n,{wrapLists:!0});Se[t]?o.reset(Se[t].model.data,!1):(o.validate(!0),o.history=[JSON.stringify(o.data)]),Se[t]={model:o,version:e}}catch(o){const n=new Error(`Cannot get generator "${t}" for version "${e}": ${Ee(o)}`);throw o instanceof Error&&(n.stack=o.stack),n}}return Se[t].model}(n,v.id).then((e=>{U.setGenerator(v.id),y(e)})).catch((e=>{console.error(e),m(Ee(e))}))}),[n,v.id]),ee(w,(()=>{m(null)}));const k=e=>{e.ctrlKey&&"z"===e.key?(U.generatorEvent("undo","Hotkey"),null==w||w.undo()):e.ctrlKey&&"y"===e.key&&(U.generatorEvent("redo","Hotkey"),null==w||w.redo())};c((()=>(document.addEventListener("keyup",k),()=>{document.removeEventListener("keyup",k)})),[w]);const[C,M]=h(""),[A,z]=h([]);c((()=>{(async function(e){return(await Te(e)).collections})(n).then((e=>{const t=(null!=C?C:"").trim().split(" "),n=e.get(v.id).map((e=>e.slice(10))).filter((e=>t.every((t=>e.includes(t)))));n&&z(n)})).catch((e=>{console.error(e),m(e.message)}))}),[n,v.id,C]);const[j,E]=h(window.innerWidth>820),[V,I]=h(0),[$,O]=h(0),[L,P]=h(0),[D,B]=h(!1),H=u(void 0),[R,F]=h(!1),J=$t.includes(v.id);R&&!J&&F(!1);let W=1;J&&(W+=1),j&&(W+=2);return d(S,null,d("main",{class:R?"has-preview":""},d(Z,{id:"data-pack-generator",type:"text"}),d("div",{class:"controls"},d(q,{icon:"upload",label:r("import"),onClick:()=>{U.generatorEvent("import"),E(!0),P(L+1)}}),d(te,{icon:"archive",label:r("presets"),relative:!1},d(K,{icon:"search",large:!0,value:C,onChange:M,doSelect:1,placeholder:r("search")}),d("div",{class:"result-list"},A.map((e=>d(q,{label:e,onClick:()=>{return t=e,U.generatorEvent("load-preset",t),void Ue(n,null!=(o=v.path)?o:v.id,t).then((e=>{var t,n;const o=null==w?void 0:w.get(new p.Path(["generator","seed"]));void 0!==(null==(t=null==e?void 0:e.generator)?void 0:t.seed)&&void 0!==o&&(e.generator.seed=o,void 0!==(null==(n=e.generator.biome_source)?void 0:n.seed)&&(e.generator.biome_source.seed=o)),null==w||w.reset(p.DataModel.wrapLists(e),!1)}));var t,o}})))),0===A.length&&d(q,{label:r("no_presets")})),d(te,{icon:"tag",label:n},_.reverse().map((e=>d(q,{label:e,active:e===n,onClick:()=>o(e)})))),d(te,{icon:"kebab_horizontal",tooltip:r("more")},d(q,{icon:"history",label:r("reset"),onClick:()=>{U.generatorEvent("reset"),null==w||w.reset(p.DataModel.wrapLists(w.schema.default()),!0)}}),d(q,{icon:"arrow_left",label:r("undo"),onClick:e=>{e.stopPropagation(),U.generatorEvent("undo","Menu"),null==w||w.undo()}}),d(q,{icon:"arrow_right",label:r("redo"),onClick:e=>{e.stopPropagation(),U.generatorEvent("redo","Menu"),null==w||w.redo()}}))),i&&d(oe,{error:i,onDismiss:()=>m(null)}),d(dn,l(s({},{lang:e,model:w,version:n,blockStates:b}),{onError:m}))),d("div",{class:"popup-actions",style:`--offset: -${8+50*W}px;`},d("div",{class:`popup-action action-preview${J?" shown":""} tooltipped tip-nw`,"aria-label":r(R?"hide_preview":"show_preview"),onClick:()=>{U.generatorEvent("toggle-preview",R?"hidden":"visible"),F(!R)}},R?ne.x_circle:ne.play),d("div",{class:`popup-action action-download${j?" shown":""} tooltipped tip-nw`,"aria-label":r("download"),onClick:()=>{U.generatorEvent("download"),O($+1)}},ne.download),d("div",{class:`popup-action action-copy${j?" shown":""}${D?" active":""} tooltipped tip-nw`,"aria-label":r(D?"copied":"copy"),onClick:()=>{U.generatorEvent("copy"),I(V+1)}},D?ne.check:ne.clippy),d("div",{class:"popup-action action-code shown tooltipped tip-nw","aria-label":r(j?"hide_output":"show_output"),onClick:()=>{U.generatorEvent("toggle-output",j?"hidden":"visible"),E(!j),I(0),O(0),P(0)}},j?ne.chevron_right:ne.code)),d("div",{class:"popup-preview"+(R?" shown":"")},d(Ot,l(s({},{lang:e,model:w,version:n,id:v.id}),{shown:R,onError:m}))),d("div",{class:"popup-source"+(j?" shown":"")},d(Nt,l(s({},{lang:e,model:w,blockStates:b,doCopy:V,doDownload:$,doImport:L}),{name:null!=(a=v.schema)?a:"data",copySuccess:()=>{B(!0),void 0!==H.current&&clearTimeout(H.current),H.current=setTimeout((()=>{B(!1)}),2e3)},onError:m}))))}function kn({lang:e,changeTitle:t}){const n=pe.bind(null,e);return t(n("title.home")),d("main",null,d("div",{class:"home"},Y.generators.filter((e=>!e.category)).map((e=>d(fn,{title:n(e.id),link:xe(e.url)}))),d(fn,{title:n("worldgen"),link:"/worldgen/"}),d("hr",null),d(fn,{title:"Report Inspector",icon:"report",link:"https://misode.github.io/report/"},d("p",null,"Analyse your performance reports")),d(fn,{title:"Minecraft Sounds",icon:"sounds",link:"/sounds/"},d("p",null,"Browse through and mix all the vanilla sounds")),d(fn,{title:"Data Pack Upgrader",link:"https://misode.github.io/upgrader/"},d("p",null,"Convert your 1.16 data packs to 1.17")),d(fn,{title:"Technical Changelog",link:"/changelog/"})))}let Cn=null;const Mn={},An={};async function zn(){return Cn||(Cn=async function(){try{const e=await fetch("https://launchermeta.mojang.com/mc/game/version_manifest.json");return await e.json()}catch(e){throw new Error(`Error occurred while fetching version manifest: ${Ee(e)}`)}}()),Cn}async function jn(e){return Mn[e]||(Mn[e]=(async()=>{const t=await zn();return await async function(e,t){var n;const o=Y.versions.find((t=>t.id===e)),a=null!=(n=null==o?void 0:o.latest)?n:t.latest.snapshot;try{const e=await Ze(t.versions.find((e=>e.id===a)).url);return(await Ze(e.assetIndex.url)).objects}catch(r){throw new Error(`Error occurred while fetching assets for ${o}: ${Ee(r)}`)}}(e,t)})()),Mn[e]}async function En(e){return An[e]||(An[e]=(async()=>{const t=await jn(e);return await async function(e,t){try{const e=t["minecraft/sounds.json"].hash;return await Ze(Ye(e))}catch(n){throw new Error(`Error occurred while fetching sounds for ${e}: ${Ee(n)}`)}}(e,t)})()),An[e]}function Vn({lang:e,changeTitle:t,version:n,changeVersion:o}){const a=pe.bind(null,e),[r,i]=h(null);t(a("title.sounds"));const[m,p]=h({}),[f,g]=h({}),v=Object.keys(null!=f?f:{});c((()=>{jn(n).then((e=>(p(e),En(n)))).then((e=>{e&&g(e)})).catch((e=>{console.error(e),i(Ee(e))}))}),[n]);const[_,w]=h(""),[y,b]=h([]),x=()=>{b([{id:_e(),sound:_,delay:0,pitch:1,volume:1},...y])},k=e=>()=>{b(y.filter((t=>t.id!==e)))},[C,M]=h(0),A=u(null);return d("main",null,d(Z,{type:"text",id:"sounds"}),r&&d(oe,{error:r,onDismiss:()=>i(null)}),v.length>0&&d(S,null,d("div",{class:"controls sounds-controls"},d("div",{class:"sound-search-group"},d(re,{class:"btn btn-input sound-search",list:"sound-list",placeholder:a("sounds.search"),value:_,onChange:w,onEnter:x}),d(q,{icon:"plus",tooltip:a("sounds.add_sound"),class:"add-sound",onClick:x})),y.length>1&&d(q,{icon:"play",label:a("sounds.play_all"),class:"play-all-sounds",onClick:()=>{M(C+1)}}),d("div",{class:"spacer"}),d(q,{icon:"download",label:a("download"),tooltip:a("sounds.download_function"),class:"download-sounds",onClick:()=>{const e=y.some((e=>e.delay>0)),t=y.sort(((e,t)=>e.delay-t.delay)).map((t=>`${e?`execute if score @s delay matches ${t.delay} run `:""}playsound minecraft:${t.sound} master @s ~ ~ ~ ${t.volume} ${t.pitch}`)).join("\n");A.current.setAttribute("href","data:text/plain;charset=utf-8,"+t+"%0A"),A.current.setAttribute("download","sounds.mcfunction"),A.current.click()}}),d(te,{icon:"tag",label:n},Y.versions.reverse().map((e=>d(q,{label:e.id,active:e.id===n,onClick:()=>o(e.id)}))))),d("div",{class:"sounds"},y.map((t=>{return d(pn,l(s(s({key:t.id},t),{lang:e,assets:m,sounds:f,delayedPlay:C}),{onEdit:(n=t.id,e=>{b(y.map((t=>t.id===n?s(s({},t),e):t)))}),onDelete:k(t.id)}));var n}))),d("a",{ref:A,style:"display: none;"})),d("datalist",{id:"sound-list"},v.map((e=>d("option",{key:e,value:e})))))}function In({lang:e,changeTitle:t}){const n=pe.bind(null,e);return t(n("title.generator_category",n("worldgen"))),d("main",null,d("div",{class:"home"},Y.generators.filter((e=>"worldgen"===e.category)).map((e=>d(fn,{title:n(e.id),link:xe(e.url)})))))}function $n(){const[e,t]=h("none");c((()=>{(async()=>{const e=St.getLanguage();await Promise.all([fe("en"),..."en"!==e?[fe(e)]:[]]),t(e)})()}),[]);const[n,o]=h(St.getTheme());c((()=>{document.documentElement.setAttribute("data-theme",n)}),[n]);const[a,r]=h(St.getVersion()),i=e=>{U.setVersion(e),St.setVersion(e),r(e)},[l,u]=h(pe(e,"title.home")),m=(e,t)=>{null!=t||(t=Y.versions.map((e=>e.id))),t.splice(0,t.length-3),document.title=`${e} Minecraft ${t.join(", ")}`,u(e)};return d(S,null,d(hn,s({},{lang:e,title:l,version:a,theme:n,language:e,changeLanguage:async e=>{me[e]||await fe(e),U.setLanguage(e),St.setLanguage(e),t(e)},changeTheme:e=>{U.setTheme(e),St.setTheme(e),o(e)}})),d(G,{onChange:e=>{setTimeout((()=>U.pageview(xe(e.url))))}},d(kn,s({path:"/"},{lang:e,changeTitle:m})),d(In,s({path:"/worldgen"},{lang:e,changeTitle:m})),d(Vn,s({path:"/sounds"},{lang:e,version:a,changeTitle:m,changeVersion:i})),d(wn,s({path:"/changelog"},{lang:e,changeTitle:m})),d(xn,s({default:!0},{lang:e,version:a,changeTitle:m,changeVersion:i}))))}W(d($n,null),document.body); +//# sourceMappingURL=index.48578da9.js.map diff --git a/assets/index.48578da9.js.map b/assets/index.48578da9.js.map new file mode 100644 index 00000000..f9592465 --- /dev/null +++ b/assets/index.48578da9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.48578da9.js","sources":["../../src/app/Analytics.ts","../../src/app/components/Ad.tsx","../../src/app/components/Btn.tsx","../../src/app/components/BtnInput.tsx","../../src/app/hooks/useCanvas.ts","../../src/app/hooks/useFocus.ts","../../src/app/hooks/useModel.ts","../../src/app/components/BtnMenu.tsx","../../src/app/components/Octicon.tsx","../../src/app/components/ErrorPanel.tsx","../../src/app/components/forms/Input.tsx","../../vite/preload-helper","../../src/app/Locales.ts","../../src/app/Utils.ts","../../src/app/Schemas.ts","../../src/app/DataFetcher.ts","../../src/app/previews/BiomeSource.ts","../../src/app/previews/Decorator.ts","../../src/app/previews/noise/NoiseChunkGenerator.ts","../../src/app/previews/NoiseSettings.ts","../../src/app/components/previews/BiomeSourcePreview.tsx","../../src/app/components/previews/DecoratorPreview.tsx","../../src/app/components/previews/NoisePreview.tsx","../../src/app/previews/NormalNoise.ts","../../src/app/components/previews/NoiseSettingsPreview.tsx","../../src/app/components/generator/PreviewPanel.tsx","../../src/app/schema/transformOutput.ts","../../src/app/Store.ts","../../src/app/components/generator/SourcePanel.tsx","../../src/app/schema/ModelWrapper.ts","../../src/app/schema/renderHtml.tsx","../../src/app/components/generator/Tree.tsx","../../src/app/components/Header.tsx","../../src/app/components/Icons.tsx","../../src/app/components/sounds/SoundConfig.tsx","../../src/app/components/ToolCard.tsx","../../src/app/services/Changelogs.ts","../../src/app/pages/Changelog.tsx","../../src/app/pages/Generator.tsx","../../src/app/pages/Home.tsx","../../src/app/Manifest.ts","../../src/app/pages/Sounds.tsx","../../src/app/pages/Worldgen.tsx","../../src/app/Main.tsx"],"sourcesContent":["export namespace Analytics {\n\tconst ID_SITE = 'Site'\n\tconst ID_GENERATOR = 'Generator'\n\n\tconst DIM_THEME = 1\n\tconst DIM_VERSION = 3\n\tconst DIM_LANGUAGE = 4\n\tconst DIM_PREVIEW = 5\n\tconst DIM_GENERATOR = 6\n\n\tfunction event(category: string, action: string, label?: string) {\n\t\tga('send', 'event', category, action, label)\n\t}\n\n\tfunction dimension(index: number, value: string) {\n\t\tga('set', `dimension${index}`, value)\n\t}\n\n\texport function pageview(page: string) {\n\t\tga('set', 'page', page)\n\t\tga('send', 'pageview')\n\t}\n\n\texport function setLanguage(language: string) {\n\t\tdimension(DIM_LANGUAGE, language)\n\t\tevent(ID_SITE, 'set-language', language)\n\t}\n\n\texport function setTheme(theme: string) {\n\t\tdimension(DIM_THEME, theme)\n\t\tevent(ID_SITE, 'set-theme', theme)\n\t}\n\n\texport function setVersion(version: string) {\n\t\tdimension(DIM_VERSION, version)\n\t\tevent(ID_GENERATOR, 'set-version', version)\n\t}\n\n\texport function setPreview(preview: string) {\n\t\tdimension(DIM_PREVIEW, preview)\n\t\tevent(ID_GENERATOR, 'set-preview', preview)\n\t}\n\n\texport function setGenerator(generator: string) {\n\t\tdimension(DIM_GENERATOR, generator)\n\t}\n\n\texport function generatorEvent(action: string, label?: string) {\n\t\tevent(ID_GENERATOR, action, label)\n\t}\n}\n","import { useEffect } from 'preact/hooks'\n\ndeclare const ethicalads: any\n\ntype AdProps = {\n\ttype: 'text' | 'image',\n\tid: string,\n}\nexport function Ad({ type, id }: AdProps) {\n\tuseEffect(() => {\n\t\tdocument.getElementById('ad-placeholder')?.remove()\n\t\tif ('ethicalads' in window) {\n\t\t\tethicalads.load()\n\t\t}\n\t}, [])\n\n\treturn
\n}\n","import { Octicon } from '.'\n\ntype BtnProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tactive?: boolean,\n\ttooltip?: string,\n\ttooltipLoc?: 'se' | 'sw' | 'nw',\n\tclass?: string,\n\tonClick?: (event: MouseEvent) => unknown,\n}\nexport function Btn({ icon, label, active, class: clazz, tooltip, tooltipLoc, onClick }: BtnProps) {\n\treturn
\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t
\n}\n","import { useEffect, useRef } from 'preact/hooks'\nimport { Octicon } from '.'\n\ntype BtnInputProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tlarge?: boolean,\n\tdoSelect?: number,\n\tvalue?: string,\n\tplaceholder?: string,\n\tonChange?: (value: string) => unknown,\n}\nexport function BtnInput({ icon, label, large, doSelect, value, placeholder, onChange }: BtnInputProps) {\n\tconst onInput = onChange === undefined ? () => {} : (e: any) => {\n\t\tconst value = (e.target as HTMLInputElement).value\n\t\tonChange?.(value)\n\t}\n\n\tconst ref = useRef(null)\n\tuseEffect(() => {\n\t\tif (doSelect && ref.current) {\n\t\t\tref.current.select()\n\t\t}\n\t}, [doSelect])\n\n\treturn
e.stopPropagation()}>\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t\t\n\t
\n}\n","import type { Inputs } from 'preact/hooks'\nimport { useEffect, useRef } from 'preact/hooks'\n\ntype Vec2 = [number, number]\n\nexport function useCanvas({ size, draw, onDrag, onHover, onLeave }: {\n\tsize: () => Vec2,\n\tdraw: (img: ImageData) => Promise,\n\tonDrag?: (dx: number, dy: number) => Promise,\n\tonHover?: (x: number, y: number) => unknown,\n\tonLeave?: () => unknown,\n}, inputs?: Inputs) {\n\tconst canvas = useRef(null)\n\n\tconst dragStart = useRef()\n\tconst dragRequest = useRef()\n\tconst dragPending = useRef([0, 0])\n\tconst dragBusy = useRef(false)\n\n\tuseEffect(() => {\n\t\tconst onMouseDown = (e: MouseEvent) => {\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseMove = (e: MouseEvent) => {\n\t\t\tif (dragStart.current === undefined) {\n\t\t\t\tconst x = e.offsetX / canvas.current.clientWidth\n\t\t\t\tconst y = e.offsetY / canvas.current.clientHeight\n\t\t\t\tonHover?.(x, y)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (!onDrag) return\n\t\t\tconst dx = e.offsetX - dragStart.current[0]\n\t\t\tconst dy = e.offsetY - dragStart.current[1]\n\t\t\tif (!(dx === 0 && dy === 0)) {\n\t\t\t\tdragPending.current = [dragPending.current[0] + dx, dragPending.current[1] + dy]\n\t\t\t\tif (!dragBusy.current) {\n\t\t\t\t\tcancelAnimationFrame(dragRequest.current)\n\t\t\t\t\tdragRequest.current = requestAnimationFrame(async () => {\n\t\t\t\t\t\tdragBusy.current = true\n\t\t\t\t\t\tconst dx = dragPending.current[0] / canvas.current.clientWidth\n\t\t\t\t\t\tconst dy = dragPending.current[1] / canvas.current.clientHeight\n\t\t\t\t\t\tdragPending.current = [0, 0]\n\t\t\t\t\t\tawait onDrag?.(dx, dy)\n\t\t\t\t\t\tdragBusy.current = false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseUp = () => {\n\t\t\tdragStart.current = undefined\n\t\t}\n\t\tconst onMouseLeave = () => {\n\t\t\tonLeave?.()\n\t\t}\n\n\t\tcanvas.current.addEventListener('mousedown', onMouseDown)\n\t\tcanvas.current.addEventListener('mousemove', onMouseMove)\n\t\tcanvas.current.addEventListener('mouseleave', onMouseLeave)\n\t\tdocument.body.addEventListener('mouseup', onMouseUp)\n\n\t\treturn () => {\n\t\t\tcanvas.current?.removeEventListener('mousedown', onMouseDown)\n\t\t\tcanvas.current?.removeEventListener('mousemove', onMouseMove)\n\t\t\tcanvas.current?.removeEventListener('mouseleave', onMouseLeave)\n\t\t\tdocument.body.removeEventListener('mouseup', onMouseUp)\n\t\t}\n\t}, [...inputs ?? [], canvas.current])\n\n\tconst redraw = useRef<() => Promise>()\n\tconst redrawCount = useRef(0)\n\tredraw.current = async () => {\n\t\tconst ctx = canvas.current.getContext('2d')!\n\t\tconst s = size()\n\t\tcanvas.current.width = s[0]\n\t\tcanvas.current.height = s[1]\n\t\tconst img = ctx.getImageData(0, 0, s[0], s[1])\n\t\tconst ownCount = redrawCount.current += 1\n\t\tawait draw(img)\n\t\tif (ownCount === redrawCount.current) {\n\t\t\tctx.putImageData(img, 0, 0)\n\t\t}\n\t}\n\n\treturn {\n\t\tcanvas,\n\t\tredraw: redraw.current,\n\t}\n}\n","import { useEffect, useState } from 'preact/hooks'\n\nexport function useFocus(): [boolean, () => unknown] {\n\tconst [active, setActive] = useState(false)\n\n\tconst hider = () => {\n\t\tsetActive(false)\n\t}\n\n\tuseEffect(() => {\n\t\tif (active) {\n\t\t\tdocument.body.addEventListener('click', hider)\n\t\t\tdocument.body.addEventListener('contextmenu', hider)\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.removeEventListener('click', hider)\n\t\t\tdocument.body.removeEventListener('contextmenu', hider)\n\t\t}\n\t}, [active])\n\n\treturn [active, () => setActive(true)]\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useEffect } from 'preact/hooks'\n\nexport function useModel(model: DataModel | undefined | null, invalidated: (model: DataModel) => unknown) {\n\tconst listener = {\n\t\tinvalidated() {\n\t\t\tif (model) {\n\t\t\t\tinvalidated(model)\n\t\t\t}\n\t\t},\n\t}\n\n\tuseEffect(() => {\n\t\tmodel?.addListener(listener)\n\t\treturn () => {\n\t\t\tmodel?.removeListener(listener)\n\t\t}\n\t}, [model])\n}\n","import type { ComponentChildren } from 'preact'\nimport type { Octicon } from '.'\nimport { Btn } from '.'\nimport { useFocus } from '../hooks'\n\ntype BtnMenuProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\trelative?: boolean,\n\ttooltip?: string,\n\tchildren: ComponentChildren,\n}\nexport function BtnMenu({ icon, label, relative, tooltip, children }: BtnMenuProps) {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t\n\t\t{active &&
\n\t\t\t{children}\n\t\t
}\n\t
\n}\n","export const Octicon = {\n\talert: ,\n\tarchive: ,\n\tarrow_left: ,\n\tarrow_right: ,\n\tcheck: ,\n\tchevron_down: ,\n\tchevron_right: ,\n\tchevron_up: ,\n\tclippy: ,\n\tcode: ,\n\tdash: ,\n\tdevice_desktop: ,\n\tdownload: ,\n\tduplicate: ,\n\teye: ,\n\teye_closed: ,\n\tgear: ,\n\tglobe: ,\n\thistory: ,\n\tinfo: ,\n\tissue_opened: ,\n\tkebab_horizontal: ,\n\tlink: ,\n\tmark_github: ,\n\tmoon: ,\n\tplay: ,\n\tplus: ,\n\tplus_circle: ,\n\tsearch: ,\n\tstack: ,\n\tsun: ,\n\tsync: ,\n\ttag: ,\n\tterminal: ,\n\tthree_bars: ,\n\ttrashcan: ,\n\tunfold: ,\n\tupload: ,\n\tx: ,\n\tx_circle: ,\n}\n","import { Octicon } from './Octicon'\n\ntype ErrorPanelProps = {\n\terror: string,\n\tonDismiss?: () => unknown,\n}\nexport function ErrorPanel({ error, onDismiss }: ErrorPanelProps) {\n\treturn
\n\t\t{onDismiss &&
{Octicon.x}
}\n\t\t

{error}

\n\t\t

If you think this is a bug, you can report it on GitHub

\n\t
\n}\n","import type { JSXInternal } from 'preact/src/jsx'\n\ntype InputProps = JSXInternal.HTMLAttributes\n\ntype BaseInputProps = Omit & {\n\tonChange?: (value: T) => unknown,\n\tonEnter?: (value: T) => unknown,\n}\nfunction BaseInput(name: string, type: string, fn: (value: string) => T) {\n\tconst component = (props: BaseInputProps) => {\n\t\tconst onChange = props.onChange && ((evt: Event) => {\n\t\t\tconst value = (evt.target as HTMLInputElement).value\n\t\t\tprops.onChange?.(fn(value))\n\t\t})\n\t\tconst onKeyDown = props.onEnter && ((evt: KeyboardEvent) => {\n\t\t\tif (evt.key === 'Enter') {\n\t\t\t\tconst value = (evt.target as HTMLInputElement).value\n\t\t\t\tprops.onEnter?.(fn(value))\n\t\t\t}\n\t\t})\n\t\treturn \n\t}\n\tcomponent.displayName = name\n\treturn component\n}\n\nexport const TextInput = BaseInput('TextInput', 'text', v => v)\n\nexport const NumberInput = BaseInput('NumberInput', 'number', v => Number(v))\n\nexport const RangeInput = BaseInput('RangeInput', 'range', v => Number(v))\n","let scriptRel;const seen = {};export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps) {\n return baseModule();\n }\n // @ts-ignore\n if (scriptRel === undefined) {\n // @ts-ignore\n const relList = document.createElement('link').relList;\n // @ts-ignore\n scriptRel =\n relList && relList.supports && relList.supports('modulepreload')\n ? 'modulepreload'\n : 'preload';\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', rej);\n });\n }\n })).then(() => baseModule());\n}","import config from '../config.json'\nimport English from '../locales/en.json'\n\nexport type Localize = (key: string, ...params: string[]) => string\n\ninterface Locale {\n\t[key: string]: string\n}\n\nexport const Locales: {\n\t[key: string]: Locale,\n} = {\n\tfallback: English,\n}\n\nfunction resolveLocaleParams(value: string, params?: string[]): string {\n\treturn value.replace(/%\\d+%/g, match => {\n\t\tconst index = parseInt(match.slice(1, -1))\n\t\treturn params?.[index] !== undefined ? params[index] : match\n\t})\n}\n\nexport function locale(language: string, key: string, ...params: string[]): string {\n\tconst value: string | undefined = Locales[language]?.[key]\n\t\t?? Locales.en?.[key] ?? Locales.fallback[key] ?? key\n\treturn resolveLocaleParams(value, params)\n}\n\nexport async function loadLocale(language: string) {\n\tconst langConfig = config.languages.find(lang => lang.code === language)\n\tif (!langConfig) return\n\tconst data = await import(`../locales/${language}.json`)\n\tconst schema = langConfig.schemas !== false\n\t\t&& await import(`../../node_modules/@mcschema/locales/src/${language}.json`)\n\tLocales[language] = { ...data.default, ...schema.default }\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport rfdc from 'rfdc'\nimport config from '../config.json'\n\nexport function isPromise(obj: any): obj is Promise {\n\treturn typeof (obj as any)?.then === 'function' \n}\n\nexport function isObject(obj: any) {\n\treturn typeof obj === 'object' && obj !== null\n}\n\nconst dec2hex = (dec: number) => ('0' + dec.toString(16)).substr(-2)\n\nexport function hexId(length = 12) {\n\tvar arr = new Uint8Array(length / 2)\n\twindow.crypto.getRandomValues(arr)\n\treturn Array.from(arr, dec2hex).join('')\n}\n\nexport function randomSeed() {\n\treturn BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER))\n}\n\nexport function newSeed(model: DataModel) {\n\tconst seed = Math.floor(Math.random() * (4294967296)) - 2147483648\n\tconst dimensions = model.get(new Path(['dimensions']))\n\tmodel.set(new Path(['seed']), seed, true)\n\tif (typeof dimensions === 'object' && dimensions !== null) {\n\t\tObject.keys(dimensions).forEach(id => {\n\t\t\tmodel.set(new Path(['dimensions', id, 'generator', 'seed']), seed, true)\n\t\t\tmodel.set(new Path(['dimensions', id, 'generator', 'biome_source', 'seed']), seed, true)\n\t\t})\n\t}\n\tmodel.set(new Path(['generator', 'seed']), seed, true)\n\tmodel.set(new Path(['generator', 'biome_source', 'seed']), seed)\n}\n\nexport function htmlEncode(str: string) {\n\treturn str.replace(/&/g, '&').replace(//g, '>')\n\t\t.replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/')\n}\n\nexport function hashString(s: string) {\n\tlet h = 0\n\tfor(let i = 0; i < s.length; i++)\n\t\th = Math.imul(31, h) + s.charCodeAt(i) | 0\n\treturn h\n}\n\nexport function cleanUrl(url: string) {\n\treturn `/${url}/`.replaceAll('//', '/')\n}\n\nexport function getGenerator(url: string) {\n\tconst trimmedUrl = url.replace(/^\\//, '').replace(/\\/$/, '').replace(/\\?.*/, '')\n\treturn config.generators.find(g => g.url === trimmedUrl)\n}\n\nexport function stringToColor(str: string): [number, number, number] {\n\tconst h = Math.abs(hashString(str))\n\treturn [h % 256, (h >> 8) % 256, (h >> 16) % 256]\n}\n\nexport function square(a: number) {\n\treturn a * a\n}\n\nexport function clamp(a: number, b: number, c: number) {\n\treturn Math.max(a, Math.min(b, c))\n}\n\nexport function clampedLerp(a: number, b: number, c: number): number {\n\tif (c < 0) {\n\t\treturn a\n\t} else if (c > 1) {\n\t\treturn b\n\t} else {\n\t\treturn lerp(c, a, b)\n\t}\n}\n\nexport function lerp(a: number, b: number, c: number): number {\n\treturn b + a * (c - b)\n}\n\nexport function lerp2(a: number, b: number, c: number, d: number, e: number, f: number): number {\n\treturn lerp(b, lerp(a, c, d), lerp(a, e, f))\n}\n\nexport function lerp3(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) {\n\treturn lerp(c, lerp2(a, b, d, e, f, g), lerp2(a, b, h, i, j, k))\n}\n\nexport function smoothstep(x: number): number {\n\treturn x * x * x * (x * (x * 6 - 15) + 10)\n}\n\nexport function message(e: unknown): string {\n\tif (e instanceof Error) return e.message\n\treturn `${e}`\n}\n\nexport const deepClone = rfdc()\n\n/**\n * MIT License\n * \n * Copyright (c) 2017 Evgeny Poberezkin\n * \n * https://github.com/epoberezkin/fast-deep-equal/blob/master/LICENSE\n */\nexport function deepEqual(a: any, b: any) {\n\tif (a === b) return true\n\n\tif (a && b && typeof a == 'object' && typeof b == 'object') {\n\t\tif (a.constructor !== b.constructor) return false\n\t\tlet length, i\n\t\tif (Array.isArray(a)) {\n\t\t\tlength = a.length\n\t\t\tif (length != b.length) return false\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tif (!deepEqual(a[i], b[i])) return false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tif (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf()\n\t\tif (a.toString !== Object.prototype.toString) return a.toString() === b.toString()\n\t\tconst keys = Object.keys(a)\n\t\tlength = keys.length\n\t\tif (length !== Object.keys(b).length) return false\n\t\tfor (i = length; i-- !== 0;)\n\t\t\tif (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false\n\t\tfor (i = length; i-- !== 0;) {\n\t\t\tconst key = keys[i]\n\t\t\tif (!deepEqual(a[key], b[key])) return false\n\t\t}\n\t\treturn true\n\t}\n\treturn a !== a && b !== b\n}\n\nexport class BiMap {\n\tprivate readonly forward: Map\n\tprivate readonly backward: Map\n\n\tconstructor() {\n\t\tthis.forward = new Map()\n\t\tthis.backward = new Map()\n\t}\n\n\tpublic set(a: A, b: B) {\n\t\tthis.forward.set(a, b)\n\t\tthis.backward.set(b, a)\n\t}\n\n\tpublic getA(key: B) {\n\t\treturn this.backward.get(key)\n\t}\n\n\tpublic getB(key: A) {\n\t\treturn this.forward.get(key)\n\t}\n\n\tpublic getOrPut(key: A, defaultValue: B) {\n\t\tconst b = this.forward.get(key)\n\t\tif (b === undefined) {\n\t\t\tthis.set(key, defaultValue)\n\t\t\treturn defaultValue\n\t\t}\n\t\treturn b\n\t}\n}\n","import type { CollectionRegistry, INode, SchemaRegistry } from '@mcschema/core'\nimport { ChoiceNode, DataModel, Reference, StringNode } from '@mcschema/core'\nimport * as java15 from '@mcschema/java-1.15'\nimport * as java16 from '@mcschema/java-1.16'\nimport * as java17 from '@mcschema/java-1.17'\nimport * as java18 from '@mcschema/java-1.18'\nimport config from '../config.json'\nimport { fetchData } from './DataFetcher'\nimport { message } from './Utils'\n\nexport const VersionIds = ['1.15', '1.16', '1.17', '1.18'] as const\nexport type VersionId = typeof VersionIds[number]\n\nexport type BlockStateRegistry = {\n\t[block: string]: {\n\t\tproperties?: {\n\t\t\t[key: string]: string[],\n\t\t},\n\t\tdefault?: {\n\t\t\t[key: string]: string,\n\t\t},\n\t},\n}\n\ntype VersionData = {\n\tcollections: CollectionRegistry,\n\tschemas: SchemaRegistry,\n\tblockStates: BlockStateRegistry,\n}\nconst Versions: Record> = {}\n\ntype ModelData = {\n\tmodel: DataModel,\n\tversion: VersionId,\n}\nconst Models: Record = {}\n\nconst versionGetter: {\n\t[versionId in VersionId]: {\n\t\tgetCollections: () => CollectionRegistry,\n\t\tgetSchemas: (collections: CollectionRegistry) => SchemaRegistry,\n\t}\n} = {\n\t1.15: java15,\n\t1.16: java16,\n\t1.17: java17,\n\t1.18: java18,\n}\n\nexport let CachedDecorator: INode\nexport let CachedFeature: INode\n\nasync function getVersion(id: VersionId): Promise {\n\tif (!Versions[id]) {\n\t\tVersions[id] = (async () => {\n\t\t\ttry {\n\t\t\t\tconst collections = versionGetter[id].getCollections()\n\t\t\t\tconst blockStates: BlockStateRegistry = {}\n\t\t\t\tawait fetchData(id, collections, blockStates)\n\t\t\t\tconst schemas = versionGetter[id].getSchemas(collections)\n\t\t\t\tVersions[id] = { collections, schemas, blockStates }\n\t\t\t\treturn Versions[id]\n\t\t\t} catch (e) {\n\t\t\t\tthrow new Error(`Cannot get version \"${id}\": ${message(e)}`)\n\t\t\t}\n\t\t})()\n\t\treturn Versions[id]\n\t}\n\treturn Versions[id]\n}\n\nexport async function getModel(version: VersionId, id: string): Promise {\n\tif (!Models[id] || Models[id].version !== version) {\n\t\tconst versionData = await getVersion(version)\n\t\t\n\t\tCachedDecorator = Reference(versionData.schemas, 'configured_decorator')\n\t\tCachedFeature = ChoiceNode([\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tnode: StringNode(versionData.collections, { validator: 'resource', params: { pool: '$worldgen/configured_feature' } }),\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'object',\n\t\t\t\tnode: Reference(versionData.schemas, 'configured_feature'),\n\t\t\t},\n\t\t], { choiceContext: 'feature' })\n\n\t\tconst schemaName = config.generators.find(g => g.id === id)?.schema\n\t\tif (!schemaName) {\n\t\t\tthrow new Error(`Cannot find model ${id}`)\n\t\t}\n\t\ttry {\n\t\t\tconst schema = versionData.schemas.get(schemaName)\n\t\t\tconst model = new DataModel(schema, { wrapLists: true })\n\t\t\tif (Models[id]) {\n\t\t\t\tmodel.reset(Models[id].model.data, false)\n\t\t\t} else {\n\t\t\t\tmodel.validate(true)\n\t\t\t\tmodel.history = [JSON.stringify(model.data)]\n\t\t\t}\n\t\t\tModels[id] = { model, version }\n\t\t} catch (e) {\n\t\t\tconst err = new Error(`Cannot get generator \"${id}\" for version \"${version}\": ${message(e)}`)\n\t\t\tif (e instanceof Error) err.stack = e.stack\n\t\t\tthrow err\n\t\t}\n\t}\n\treturn Models[id].model\n}\n\nexport async function getCollections(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.collections\n}\n\nexport async function getBlockStates(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.blockStates\n}\n\nexport function checkVersion(versionId: string, minVersionId: string | undefined, maxVersionId?: string) {\n\tconst version = config.versions.findIndex(v => v.id === versionId)\n\tconst minVersion = minVersionId ? config.versions.findIndex(v => v.id === minVersionId) : 0\n\tconst maxVersion = maxVersionId ? config.versions.findIndex(v => v.id === maxVersionId) : config.versions.length - 1\n\treturn minVersion <= version && version <= maxVersion\n}\n","import type { CollectionRegistry } from '@mcschema/core'\nimport config from '../config.json'\nimport type { VersionAssets, VersionManifest } from './Manifest'\nimport type { BlockStateRegistry, VersionId } from './Schemas'\nimport { checkVersion } from './Schemas'\nimport { message } from './Utils'\n\n['1.15', '1.16', '1.17'].forEach(v => localStorage.removeItem(`cache_${v}`))\n\nconst CACHE_NAME = 'misode-v1'\n\ntype VersionRef = 'mcdata_master' | 'vanilla_datapack_summary' | 'vanilla_datapack_data'\n\ntype Version = {\n\tid: string,\n\trefs: Partial<{ [key in VersionRef]: string }>,\n\tdynamic?: boolean,\n}\n\ndeclare var __MCDATA_MASTER_HASH__: string\ndeclare var __VANILLA_DATAPACK_SUMMARY_HASH__: string\n\nconst mcdataUrl = 'https://raw.githubusercontent.com/Arcensoth/mcdata'\nconst vanillaDatapackUrl = 'https://raw.githubusercontent.com/SPGoding/vanilla-datapack'\nconst manifestUrl = 'https://launchermeta.mojang.com/mc/game/version_manifest.json'\nconst resourceUrl = 'https://resources.download.minecraft.net/'\nconst corsUrl = 'https://misode-cors-anywhere.herokuapp.com/'\n\nconst refs: {\n\tid: VersionRef,\n\thash: string,\n\turl: string,\n}[] = [\n\t{\n\t\tid: 'mcdata_master',\n\t\thash: __MCDATA_MASTER_HASH__,\n\t\turl: mcdataUrl,\n\t},\n\t{\n\t\tid: 'vanilla_datapack_summary',\n\t\thash: __VANILLA_DATAPACK_SUMMARY_HASH__,\n\t\turl: vanillaDatapackUrl,\n\t},\n]\n\nexport async function fetchData(versionId: string, collectionTarget: CollectionRegistry, blockStateTarget: BlockStateRegistry) {\n\tconst version = config.versions.find(v => v.id === versionId) as Version | undefined\n\tif (!version) {\n\t\tconsole.error(`[fetchData] Unknown version ${version} in ${JSON.stringify(config.versions)}`)\n\t\treturn\n\t}\n\tconsole.debug(`[fetchData] ${JSON.stringify(version)}`)\n\n\tif (version.dynamic) {\n\t\tawait Promise.all(refs\n\t\t\t.filter(r => localStorage.getItem(`cached_${r.id}`) !== r.hash)\n\t\t\t.map(async r => {\n\t\t\t\tconsole.debug(`[deleteMatching] ${r.id} '${localStorage.getItem(`cached_${r.id}`)}' < '${r.hash}' ${r.url}/${version.refs[r.id]}`)\n\t\t\t\tawait deleteMatching(url => url.startsWith(`${r.url}/${version.refs[r.id]}`))\n\t\t\t\tconsole.debug(`[deleteMatching] Done! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t\tlocalStorage.setItem(`cached_${r.id}`, r.hash)\n\t\t\t\tconsole.debug(`[deleteMatching] Set! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t}))\n\t}\n\n\tawait Promise.all([\n\t\tfetchRegistries(version, collectionTarget),\n\t\tfetchBlockStateMap(version, blockStateTarget),\n\t\tfetchDynamicRegistries(version, collectionTarget),\n\t])\n}\n\nasync function fetchRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => !r.dynamic)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, undefined, '1.15')) {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/registries.json`\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: {[id: string]: string[]} = {}\n\t\t\t\tObject.keys(data).forEach(k => {\n\t\t\t\t\tres[k.slice(10)] = Object.keys(data[k].entries)\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id] ?? [])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching registries:', message(e))\n\t\t}\n\t} else {\n\t\tawait Promise.all(registries.map(async r => {\n\t\t\ttry {\n\t\t\t\tconst url = r.path\n\t\t\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/${r.path}/data.min.json`\n\t\t\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/registries/${r.id}/data.min.json`\n\t\t\t\ttarget.register(r.id, await getData(url, v => v.values))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(`Error occurred while fetching registry ${r.id}:`, message(e))\n\t\t\t}\n\t\t}))\n\t}\n}\n\nasync function fetchBlockStateMap(version: Version, target: BlockStateRegistry) {\n\tconsole.debug(`[fetchBlockStateMap] ${version.id}`)\n\tif (checkVersion(version.id, undefined, '1.16')) {\n\t\tconst url = (checkVersion(version.id, undefined, '1.15'))\n\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/blocks.json`\n\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/data.min.json`\n\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: BlockStateRegistry = {}\n\t\t\t\tObject.keys(data).forEach(b => {\n\t\t\t\t\tres[b] = {\n\t\t\t\t\t\tproperties: data[b].properties,\n\t\t\t\t\t\tdefault: data[b].states.find((s: any) => s.default).properties,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t} else {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t}\n}\n\nasync function fetchDynamicRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchDynamicRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => r.dynamic)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, '1.16')) {\n\t\tconst url = `${vanillaDatapackUrl}/${version.refs.vanilla_datapack_summary}/summary/flattened.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching dynamic registries:', message(e))\n\t\t}\n\t}\n\tif (checkVersion(version.id, '1.18')) {\n\t\ttarget.register('worldgen/noise', Noises)\n\t}\n}\n\nexport async function fetchPreset(version: VersionId, registry: string, id: string) {\n\tconsole.debug(`[fetchPreset] ${registry} ${id}`)\n\tconst versionData = config.versions.find(v => v.id === version)!\n\ttry {\n\t\tconst url = `${vanillaDatapackUrl}/${versionData.refs.vanilla_datapack_data}/data/minecraft/${registry}/${id}.json`\n\t\tconst res = await fetch(url)\n\t\tif (registry === 'worldgen/noise_settings' && version === '1.18') {\n\t\t\tlet text = await res.text()\n\t\t\ttext = text.replaceAll('\"max_threshold\": Infinity', '\"max_threshold\": 100')\n\t\t\tconst data = JSON.parse(text)\n\t\t\tif (id !== 'overworld' && id !== 'large_biomes') {\n\t\t\t\tdata.noise.terrain_shaper = { offset: 0, factor: 0, jaggedness: 0 }\n\t\t\t}\n\t\t\treturn data\n\t\t}\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tconsole.warn(`Error occurred while fetching ${registry} preset ${id}:`, message(e))\n\t}\n}\n\nexport async function fetchManifest() {\n\ttry {\n\t\tconst res = await fetch(manifestUrl)\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching version manifest: ${message(e)}`)\n\t}\n}\n\nexport async function fetchAssets(versionId: VersionId, manifest: VersionManifest) {\n\tconst version = config.versions.find(v => v.id === versionId)\n\tconst id = version?.latest ?? manifest.latest.snapshot\n\ttry {\n\t\tconst versionMeta = await getData(manifest.versions.find(v => v.id === id)!.url)\n\t\n\t\treturn (await getData(versionMeta.assetIndex.url)).objects\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching assets for ${version}: ${message(e)}`)\n\t}\n}\n\nexport async function fetchSounds(version: VersionId, assets: VersionAssets) {\n\ttry {\n\t\tconst hash = assets['minecraft/sounds.json'].hash\n\t\treturn await getData(getResourceUrl(hash))\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching sounds for ${version}: ${message(e)}`)\n\t}\n}\n\nexport function getResourceUrl(hash: string) {\n\treturn `${corsUrl}${resourceUrl}${hash.slice(0, 2)}/${hash}`\n}\n\nasync function getData(url: string, fn: (v: any) => T = (v: any) => v): Promise {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[getData] Opened cache ${CACHE_NAME} ${url}`)\n\t\tconst cacheResponse = await cache.match(url)\n \n\t\tif (cacheResponse && cacheResponse.ok) {\n\t\t\tconsole.debug(`[getData] Retrieving cached data ${url}`)\n\t\t\treturn await cacheResponse.json()\n\t\t}\n \n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\tawait cache.put(url, new Response(JSON.stringify(responseData)))\n\t\treturn responseData\n\t} catch (e) {\n\t\tconsole.warn(`[getData] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\treturn responseData\n\t}\n}\n\nasync function deleteMatching(matches: (url: string) => boolean) {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[deleteMatching] Opened cache ${CACHE_NAME}`)\n\t\tconst promises: Promise[] = []\n \n\t\tfor (const request of await cache.keys()) {\n\t\t\tif (matches(request.url)) {\n\t\t\t\tpromises.push(cache.delete(request))\n\t\t\t}\n\t\t}\n\t\tconsole.debug(`[deleteMatching] Removing ${promises.length} cache objects...`)\n\t\tawait Promise.all(promises)\n\t} catch (e) {\n\t\tconsole.warn(`[deleteMatching] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\t}\n}\n\nconst Noises = [\n\t'minecraft:aquifer_barrier',\n\t'minecraft:aquifer_fluid_level_floodedness',\n\t'minecraft:aquifer_fluid_level_spread',\n\t'minecraft:aquifer_lava',\n\t'minecraft:calcite',\n\t'minecraft:cave_cheese',\n\t'minecraft:cave_entrance',\n\t'minecraft:cave_layer',\n\t'minecraft:clay_bands_offset',\n\t'minecraft:continentalness',\n\t'minecraft:erosion',\n\t'minecraft:gravel',\n\t'minecraft:gravel_layer',\n\t'minecraft:ice',\n\t'minecraft:iceberg_and_badlands_pillar',\n\t'minecraft:iceberg_and_badlands_pillar_roof',\n\t'minecraft:jagged',\n\t'minecraft:nether_state_selector',\n\t'minecraft:nether_wart',\n\t'minecraft:netherrack',\n\t'minecraft:noodle',\n\t'minecraft:noodle_ridge_a',\n\t'minecraft:noodle_ridge_b',\n\t'minecraft:noodle_thickness',\n\t'minecraft:offset',\n\t'minecraft:ore_gap',\n\t'minecraft:ore_vein_a',\n\t'minecraft:ore_vein_b',\n\t'minecraft:ore_veininess',\n\t'minecraft:packed_ice',\n\t'minecraft:patch',\n\t'minecraft:pillar',\n\t'minecraft:pillar_rareness',\n\t'minecraft:pillar_thickness',\n\t'minecraft:powder_snow_surface',\n\t'minecraft:powder_snow_under',\n\t'minecraft:ridge',\n\t'minecraft:soul_sand_layer',\n\t'minecraft:spaghetti_2d',\n\t'minecraft:spaghetti_2d_elevation',\n\t'minecraft:spaghetti_2d_modulator',\n\t'minecraft:spaghetti_2d_thickness',\n\t'minecraft:spaghetti_3d_1',\n\t'minecraft:spaghetti_3d_2',\n\t'minecraft:spaghetti_3d_rarity',\n\t'minecraft:spaghetti_3d_thickness',\n\t'minecraft:spaghetti_roughness',\n\t'minecraft:spaghetti_roughness_modulator',\n\t'minecraft:surface',\n\t'minecraft:surface_swamp',\n\t'minecraft:temperature',\n\t'minecraft:vegetation',\n]\n","import { DataModel } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { FixedBiome, LegacyRandom, NormalNoise, TerrainShaper } from 'deepslate'\nimport init, { biome_parameters, climate_noise, climate_sampler, multi_noise } from 'deepslate-rs'\n// @ts-expect-error\nimport wasm from 'deepslate-rs/deepslate_rs_bg.wasm?url'\nimport { fetchPreset } from '../DataFetcher'\nimport type { VersionId } from '../Schemas'\nimport { BiMap, clamp, deepClone, deepEqual, square, stringToColor } from '../Utils'\n\nlet ready = false\nasync function loadWasm() {\n\tif (ready) return\n\tawait init(wasm)\n\tready = true\n\tconsole.debug(`Loaded deepslate-rs from \"${wasm}\"`)\n}\n\nconst LAYERS = {\n\ttemperature: [-1, 1],\n\thumidity: [-1, 1],\n\tcontinentalness: [-1.1, 1],\n\terosion: [-1, 1],\n\tweirdness: [-1, 1],\n\toffset: [-1, 1],\n\tfactor: [0, 12],\n\tjaggedness: [0, 1],\n}\n\ntype Triple = [number, number, number]\ntype BiomeColors = Record\ntype BiomeSourceOptions = {\n\toctaves: NoiseOctaves,\n\tshaper: TerrainShaper,\n\tbiomeColors: BiomeColors,\n\toffset: [number, number],\n\tscale: number,\n\tres: number,\n\tseed: bigint,\n\tversion: VersionId,\n\tlayers: Set,\n}\n\ninterface CachedBiomeSource {\n\tgetBiome(x: number, y: number, z: number): string\n\tgetBiomes?(xFrom: number, xTo: number, xStep: number, yFrom: number, yTo: number, yStep: number, zFrom: number, zTo: number, zStep: number): string[]\n\tgetClimate?(layers: Set, xFrom: number, xTo: number, xStep: number, yFrom: number, yTo: number, yStep: number, zFrom: number, zTo: number, zStep: number): {[k: string]: number}[]\n}\n\nlet cacheState: any\nlet biomeSourceCache: CachedBiomeSource\n\nexport async function biomeMap(state: any, img: ImageData, options: BiomeSourceOptions) {\n\tconst { biomeSource } = await getCached(state, options)\n\n\tconst data = img.data\n\tconst ox = -Math.round(options.offset[0]) - 100 + options.res / 2\n\tconst oz = -Math.round(options.offset[1]) - 100 + options.res / 2\n\tconst row = img.width * 4 / options.res\n\tconst col = 4 / options.res\n\n\tconst xRange: Triple = [ox * options.scale, (200 + ox) * options.scale, options.res * options.scale]\n\tconst zRange: Triple = [oz * options.scale, (200 + oz) * options.scale, options.res * options.scale]\n\n\tconst biomes = !options.layers.has('biomes') ? undefined : biomeSource.getBiomes?.(...xRange, 64, 65, 1, ...zRange)\n\tconst layers = [...options.layers].filter(l => l !== 'biomes') as (keyof typeof LAYERS)[]\n\tconst noise = layers.length === 0 ? undefined : biomeSource.getClimate?.(new Set(layers), ...xRange, 64, 65, 1, ...zRange)\n\n\tfor (let x = 0; x < 200; x += options.res) {\n\t\tfor (let z = 0; z < 200; z += options.res) {\n\t\t\tconst i = z * row + x * col\n\t\t\tconst j = (x / options.res) * 200 / options.res + z / options.res\n\t\t\tconst worldX = (x + ox) * options.scale\n\t\t\tconst worldZ = (z + oz) * options.scale\n\t\t\tlet color: Triple = [50, 50, 50]\n\t\t\tif (options.layers.has('biomes')) {\n\t\t\t\tconst biome = biomes?.[j] ?? biomeSource.getBiome(worldX, 64, worldZ)\n\t\t\t\tcolor = getBiomeColor(biome, options.biomeColors)\n\t\t\t} else if (noise && layers[0]) {\n\t\t\t\tconst value = noise[j][layers[0]]\n\t\t\t\tconst [min, max] = LAYERS[layers[0]]\n\t\t\t\tconst brightness = (value - min) / (max - min) * 256\n\t\t\t\tcolor = [brightness, brightness, brightness]\n\t\t\t}\n\t\t\tdata[i] = color[0]\n\t\t\tdata[i + 1] = color[1]\n\t\t\tdata[i + 2] = color[2]\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nexport async function getBiome(state: any, x: number, z: number, options: BiomeSourceOptions): Promise {\n\tconst { biomeSource } = await getCached(state, options)\n\n\tconst [xx, zz] = toWorld([x, z], options)\n\treturn biomeSource.getBiome(xx, 64, zz)\n}\n\nasync function getCached(state: any, options: BiomeSourceOptions): Promise<{ biomeSource: CachedBiomeSource}> {\n\tconst newState = [state, options.octaves, options.shaper.toJson(), `${options.seed}`, options.version]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\n\t\tbiomeSourceCache = await getBiomeSource(state, options)\n\t}\n\treturn {\n\t\tbiomeSource: biomeSourceCache,\n\t} \n}\n\nasync function getBiomeSource(state: any, options: BiomeSourceOptions): Promise {\n\tswitch (state?.type?.replace(/^minecraft:/, '')) {\n\t\tcase 'fixed':\n\t\t\treturn new FixedBiome(state.biome as string)\n\n\t\tcase 'checkerboard':\n\t\t\tconst shift = (state.scale ?? 2) + 2\n\t\t\tconst numBiomes = state.biomes?.length ?? 0\n\t\t\treturn {\n\t\t\t\tgetBiome(x: number, _y: number, z: number) {\n\t\t\t\t\tconst i = (((x >> shift) + (z >> shift)) % numBiomes + numBiomes) % numBiomes\n\t\t\t\t\treturn (state.biomes?.[i].node as string)\n\t\t\t\t},\n\t\t\t}\n\n\t\tcase 'multi_noise':\n\t\t\tswitch(state.preset?.replace(/^minecraft:/, '')) {\n\t\t\t\tcase 'nether':\n\t\t\t\t\tstate = options.version === '1.18' ? NetherPreset18 : NetherPreset\n\t\t\t\t\tbreak\n\t\t\t\tcase 'overworld':\n\t\t\t\t\tstate = options.version === '1.18' ? await OverworldPreset18() : state\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t\tstate = DataModel.unwrapLists(state)\n\t\t\tif (options.version === '1.18') {\n\t\t\t\tawait loadWasm()\n\t\t\t\tconst BiomeIds = new BiMap()\n\t\t\t\tconst param = (p: number | number[]) => {\n\t\t\t\t\treturn typeof p === 'number' ? [p, p] : p\n\t\t\t\t}\n\t\t\t\tconst [t0, t1, h0, h1, c0, c1, e0, e1, w0, w1, d0, d1, o, b] = [[], [], [], [], [], [], [], [], [], [], [], [], [], []] as number[][]\n\t\t\t\tfor (const i of state.biomes) {\n\t\t\t\t\tconst { temperature, humidity, continentalness, erosion, weirdness, depth, offset } = i.parameters\n\t\t\t\t\tt0.push(param(temperature)[0])\n\t\t\t\t\tt1.push(param(temperature)[1])\n\t\t\t\t\th0.push(param(humidity)[0])\n\t\t\t\t\th1.push(param(humidity)[1])\n\t\t\t\t\tc0.push(param(continentalness)[0])\n\t\t\t\t\tc1.push(param(continentalness)[1])\n\t\t\t\t\te0.push(param(erosion)[0])\n\t\t\t\t\te1.push(param(erosion)[1])\n\t\t\t\t\tw0.push(param(weirdness)[0])\n\t\t\t\t\tw1.push(param(weirdness)[1])\n\t\t\t\t\td0.push(param(depth)[0])\n\t\t\t\t\td1.push(param(depth)[1])\n\t\t\t\t\to.push(offset)\n\t\t\t\t\tb.push(BiomeIds.getOrPut(i.biome, Math.floor(Math.random() * 2147483647)))\n\t\t\t\t}\n\t\t\t\tconst parameters = biome_parameters(new Float64Array(t0), new Float64Array(t1), new Float64Array(h0), new Float64Array(h1), new Float64Array(c0), new Float64Array(c1), new Float64Array(e0), new Float64Array(e1), new Float64Array(w0), new Float64Array(w1), new Float64Array(d0), new Float64Array(d1), new Float64Array(o), new Int32Array(b))\n\t\t\t\tconst sampler = climate_sampler(options.seed, options.octaves.temperature.firstOctave, new Float64Array(options.octaves.temperature.amplitudes), options.octaves.humidity.firstOctave, new Float64Array(options.octaves.humidity.amplitudes), options.octaves.continentalness.firstOctave, new Float64Array(options.octaves.continentalness.amplitudes), options.octaves.erosion.firstOctave, new Float64Array(options.octaves.erosion.amplitudes), options.octaves.weirdness.firstOctave, new Float64Array(options.octaves.weirdness.amplitudes), options.octaves.shift.firstOctave, new Float64Array(options.octaves.shift.amplitudes))\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x, y, z) {\n\t\t\t\t\t\tconst ids = multi_noise(parameters, sampler, x, x + 1, 1, y, y + 1, 1, z, z + 1, 1)\n\t\t\t\t\t\treturn BiomeIds.getA(ids[0]) ?? 'unknown'\n\t\t\t\t\t},\n\t\t\t\t\tgetBiomes(xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep) {\n\t\t\t\t\t\tconst ids = multi_noise(parameters, sampler, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep)\n\t\t\t\t\t\treturn [...ids].map(id => BiomeIds.getA(id) ?? 'unknown')\n\t\t\t\t\t},\n\t\t\t\t\tgetClimate(layers, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep) {\n\t\t\t\t\t\tconst climate = climate_noise(sampler, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep)\n\t\t\t\t\t\tconst result = []\n\t\t\t\t\t\tfor (let i = 0; i < climate.length; i += 7) {\n\t\t\t\t\t\t\tconst [t, h, c, e, w] = climate.slice(i, i + 5)\n\t\t\t\t\t\t\tconst point = TerrainShaper.point(c, e, w)\n\t\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\t\ttemperature: t,\n\t\t\t\t\t\t\t\thumidity: h,\n\t\t\t\t\t\t\t\tcontinentalness: c,\n\t\t\t\t\t\t\t\terosion: e,\n\t\t\t\t\t\t\t\tweirdness: w,\n\t\t\t\t\t\t\t\t...layers.has('offset') && { offset: options.shaper.offset(point) },\n\t\t\t\t\t\t\t\t...layers.has('factor') && { factor: options.shaper.factor(point) },\n\t\t\t\t\t\t\t\t...layers.has('jaggedness') && { jaggedness: options.shaper.jaggedness(point) },\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst noise = ['altitude', 'temperature', 'humidity', 'weirdness']\n\t\t\t\t\t.map((id, i) => {\n\t\t\t\t\t\tconst config = state[`${id}_noise`]\n\t\t\t\t\t\tconfig.firstOctave = clamp(config.firstOctave ?? -7, -100, -1)\n\t\t\t\t\t\treturn new NormalNoise(new LegacyRandom(options.seed + BigInt(i)), config)\n\t\t\t\t\t})\n\t\t\t\tif (!Array.isArray(state.biomes) || state.biomes.length === 0) {\n\t\t\t\t\treturn new FixedBiome('unknown')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x: number, _y: number, z: number): string {\n\t\t\t\t\t\tconst n = noise.map(n => n.sample(x, z, 0))\n\t\t\t\t\t\tlet minDist = Infinity\n\t\t\t\t\t\tlet minBiome = ''\n\t\t\t\t\t\tfor (const { biome, parameters: p } of state.biomes) {\n\t\t\t\t\t\t\tconst dist = square(p.altitude - n[0]) + square(p.temperature - n[1]) + square(p.humidity - n[2]) + square(p.weirdness - n[3]) + square(p.offset)\n\t\t\t\t\t\t\tif (dist < minDist) {\n\t\t\t\t\t\t\t\tminDist = dist\n\t\t\t\t\t\t\t\tminBiome = biome\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn minBiome\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t}\n\tthrow new Error('Unknown biome source')\n}\n\nfunction getBiomeColor(biome: string, biomeColors: BiomeColors): Triple {\n\tif (!biome) {\n\t\treturn [128, 128, 128]\n\t}\n\tconst color = biomeColors[biome] ?? VanillaColors[biome]\n\tif (color === undefined) {\n\t\treturn stringToColor(biome)\n\t}\n\treturn color\n}\n\nfunction toWorld([x, z]: [number, number], options: BiomeSourceOptions) {\n\tconst xx = (x - options.offset[0] - 100 + options.res / 2) * options.scale\n\tconst zz = (z - options.offset[1] - 100 + options.res / 2) * options.scale\n\treturn [xx, zz]\n}\n\nconst VanillaColors: Record = {\n\t'minecraft:badlands': [217,69,21],\n\t'minecraft:badlands_plateau': [202,140,101],\n\t'minecraft:bamboo_jungle': [118,142,20],\n\t'minecraft:bamboo_jungle_hills': [59,71,10],\n\t'minecraft:basalt_deltas': [64,54,54],\n\t'minecraft:beach': [250,222,85],\n\t'minecraft:birch_forest': [48,116,68],\n\t'minecraft:birch_forest_hills': [31,95,50],\n\t'minecraft:cold_ocean': [32,32,112],\n\t'minecraft:crimson_forest': [221,8,8],\n\t'minecraft:dark_forest': [64,81,26],\n\t'minecraft:dark_forest_hills': [104,121,66],\n\t'minecraft:deep_cold_ocean': [32,32,56],\n\t'minecraft:deep_frozen_ocean': [64,64,144],\n\t'minecraft:deep_lukewarm_ocean': [0,0,64],\n\t'minecraft:deep_ocean': [0,0,48],\n\t'minecraft:deep_warm_ocean': [0,0,80],\n\t'minecraft:desert': [250,148,24],\n\t'minecraft:desert_hills': [210,95,18],\n\t'minecraft:desert_lakes': [255,188,64],\n\t'minecraft:end_barrens': [128,128,255],\n\t'minecraft:end_highlands': [128,128,255],\n\t'minecraft:end_midlands': [128,128,255],\n\t'minecraft:eroded_badlands': [255,109,61],\n\t'minecraft:flower_forest': [45,142,73],\n\t'minecraft:forest': [5,102,33],\n\t'minecraft:frozen_ocean': [112,112,214],\n\t'minecraft:frozen_river': [160,160,255],\n\t'minecraft:giant_spruce_taiga': [129,142,121],\n\t'minecraft:old_growth_spruce_taiga': [129,142,121],\n\t'minecraft:giant_spruce_taiga_hills': [109,119,102],\n\t'minecraft:giant_tree_taiga': [89,102,81],\n\t'minecraft:old_growth_pine_taiga': [89,102,81],\n\t'minecraft:giant_tree_taiga_hills': [69,79,62],\n\t'minecraft:gravelly_hills': [136,136,136],\n\t'minecraft:gravelly_mountains': [136,136,136],\n\t'minecraft:windswept_gravelly_hills': [136,136,136],\n\t'minecraft:ice_spikes': [180,220,220],\n\t'minecraft:jungle': [83,123,9],\n\t'minecraft:jungle_edge': [98,139,23],\n\t'minecraft:sparse_jungle': [98,139,23],\n\t'minecraft:jungle_hills': [44,66,5],\n\t'minecraft:lukewarm_ocean': [0,0,144],\n\t'minecraft:modified_badlands_plateau': [242,180,141],\n\t'minecraft:modified_gravelly_mountains': [120,152,120],\n\t'minecraft:modified_jungle': [123,163,49],\n\t'minecraft:modified_jungle_edge': [138,179,63],\n\t'minecraft:modified_wooded_badlands_plateau': [216,191,141],\n\t'minecraft:mountain_edge': [114,120,154],\n\t'minecraft:extreme_hills': [96,96,96],\n\t'minecraft:mountains': [96,96,96],\n\t'minecraft:windswept_hills': [96,96,96],\n\t'minecraft:mushroom_field_shore': [160,0,255],\n\t'minecraft:mushroom_fields': [255,0,255],\n\t'minecraft:nether_wastes': [191,59,59],\n\t'minecraft:ocean': [0,0,112],\n\t'minecraft:plains': [141,179,96],\n\t'minecraft:river': [0,0,255],\n\t'minecraft:savanna': [189,178,95],\n\t'minecraft:savanna_plateau': [167,157,100],\n\t'minecraft:shattered_savanna': [229,218,135],\n\t'minecraft:windswept_savanna': [229,218,135],\n\t'minecraft:shattered_savanna_plateau': [207,197,140],\n\t'minecraft:small_end_islands': [128,128,255],\n\t'minecraft:snowy_beach': [250,240,192],\n\t'minecraft:snowy_mountains': [160,160,160],\n\t'minecraft:snowy_taiga': [49,85,74],\n\t'minecraft:snowy_taiga_hills': [36,63,54],\n\t'minecraft:snowy_taiga_mountains': [89,125,114],\n\t'minecraft:snowy_tundra': [255,255,255],\n\t'minecraft:snowy_plains': [255,255,255],\n\t'minecraft:soul_sand_valley': [94,56,48],\n\t'minecraft:stone_shore': [162,162,132],\n\t'minecraft:stony_shore': [162,162,132],\n\t'minecraft:sunflower_plains': [181,219,136],\n\t'minecraft:swamp': [7,249,178],\n\t'minecraft:swamp_hills': [47,255,218],\n\t'minecraft:taiga': [11,102,89],\n\t'minecraft:taiga_hills': [22,57,51],\n\t'minecraft:taiga_mountains': [51,142,129],\n\t'minecraft:tall_birch_forest': [88,156,108],\n\t'minecraft:old_growth_birch_forest': [88,156,108],\n\t'minecraft:tall_birch_hills': [71,135,90],\n\t'minecraft:the_end': [128,128,255],\n\t'minecraft:the_void': [0,0,0],\n\t'minecraft:warm_ocean': [0,0,172],\n\t'minecraft:warped_forest': [73,144,123],\n\t'minecraft:wooded_badlands_plateau': [176,151,101],\n\t'minecraft:wooded_badlands': [176,151,101],\n\t'minecraft:wooded_hills': [34,85,28],\n\t'minecraft:wooded_mountains': [80,112,80],\n\t'minecraft:windswept_forest': [80,112,80],\n\t'minecraft:snowy_slopes': [140, 195, 222],\n\t'minecraft:lofty_peaks': [196, 168, 193],\n\t'minecraft:jagged_peaks': [196, 168, 193],\n\t'minecraft:snowcapped_peaks': [200, 198, 200],\n\t'minecraft:frozen_peaks': [200, 198, 200],\n\t'minecraft:stony_peaks': [82, 92, 103],\n\t'minecraft:grove': [150, 150, 189],\n\t'minecraft:meadow': [169, 197, 80],\n\t'minecraft:lush_caves': [112, 255, 79],\n\t'minecraft:dripstone_caves': [140, 124, 0],\n}\n\nconst NetherPreset = {type:'minecraft:multi_noise',seed:0,altitude_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},humidity_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{biome:'minecraft:nether_wastes',parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{altitude:0,temperature:0,humidity:-0.5,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{altitude:0,temperature:0.4,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{altitude:0,temperature:0,humidity:0.5,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{altitude:0,temperature:-0.5,humidity:0,weirdness:0,offset:0.175}}]}\n\nconst NetherPreset18 = {type:'minecraft:multi_noise',biomes:[{biome:'minecraft:nether_wastes',parameters:{temperature:0,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{temperature:0,humidity:-0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{temperature:0.4,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{temperature:0,humidity:0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{temperature:-0.5,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.175}}]}\n\nasync function OverworldPreset18() {\n\tconst overworld = await fetchPreset('1.18', 'dimension', 'overworld')\n\treturn overworld.generator.biome_source\n}\n","import { DataModel } from '@mcschema/core'\nimport type { Random } from 'deepslate'\nimport { LegacyRandom, PerlinNoise } from 'deepslate'\nimport type { VersionId } from '../Schemas'\nimport { clamp, stringToColor } from '../Utils'\n\ntype BlockPos = [number, number, number]\ntype Placement = [BlockPos, number]\n\ntype PlacementContext = {\n\tplacements: Placement[],\n\tfeatures: string[],\n\trandom: Random,\n\tbiomeInfoNoise: PerlinNoise,\n\tseaLevel: number,\n\tversion: VersionId,\n\tnextFloat(): number,\n\tnextInt(max: number): number,\n\tsampleInt(provider: any): number,\n}\n\nconst terrain = [50, 50, 51, 51, 52, 52, 53, 54, 56, 57, 57, 58, 58, 59, 60, 60, 60, 59, 59, 59, 60, 61, 61, 62, 63, 63, 64, 64, 64, 65, 65, 66, 66, 65, 65, 66, 66, 67, 67, 67, 68, 69, 71, 73, 74, 76, 79, 80, 81, 81, 82, 83, 83, 82, 82, 81, 81, 80, 80, 80, 81, 81, 82, 82] \n\nconst featureColors = [\n\t[255, 77, 54], // red\n\t[59, 118, 255], // blue\n\t[91, 207, 25], // green\n\t[217, 32, 245], // magenta\n\t[255, 209, 41], // yellow\n\t[52, 204, 209], // cyan\n]\n\nexport type DecoratorOptions = {\n\tsize: [number, number, number],\n\tseed: bigint,\n\tversion: VersionId,\n}\nexport function decorator(state: any, img: ImageData, options: DecoratorOptions) {\n\tconst random = new LegacyRandom(options.seed)\n\tconst ctx: PlacementContext = {\n\t\tplacements: [],\n\t\tfeatures: [],\n\t\trandom,\n\t\tbiomeInfoNoise: new PerlinNoise(random.fork(), 0, [1]),\n\t\tseaLevel: 63,\n\t\tversion: options.version,\n\t\tnextFloat: () => random.nextFloat(),\n\t\tnextInt: (max: number) => random.nextInt(max),\n\t\tsampleInt(value) { return sampleInt(value, this) },\n\t}\n\n\tfor (let x = 0; x < options.size[0] / 16; x += 1) {\n\t\tfor (let z = 0; z < options.size[2] / 16; z += 1) {\n\t\t\tgetPlacements([x * 16, 0, z * 16], DataModel.unwrapLists(state), ctx)\n\t\t}\n\t}\n\n\tconst data = img.data\n\timg.data.fill(255)\n\n\tfor (const [pos, feature] of ctx.placements) {\n\t\tif (pos[0] < 0 || pos[1] < 0 || pos[2] < 0 || pos[0] >= options.size[0] || pos[1] >= options.size[1] || pos[2] >= options.size[2]) continue\n\t\tconst i = (pos[2] * (img.width * 4)) + (pos[0] * 4)\n\t\tconst color = feature < featureColors.length ? featureColors[feature] : stringToColor(ctx.features[feature])\n\t\tdata[i] = clamp(50, 205, color[0])\n\t\tdata[i + 1] = clamp(50, 205, color[1])\n\t\tdata[i + 2] = clamp(50, 205, color[2])\n\t\tdata[i + 3] = 255\n\t}\n\n\tfor (let x = 0; x < options.size[0]; x += 1) {\n\t\tfor (let y = 0; y < options.size[2]; y += 1) {\n\t\t\tif ((Math.floor(x / 16) + Math.floor(y / 16)) % 2 === 0) continue\n\t\t\tconst i = (y * (img.width * 4)) + (x * 4)\n\t\t\tfor (let j = 0; j < 3; j += 1) {\n\t\t\t\tdata[i + j] = 0.85 * data[i + j] \n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction normalize(id: string) {\n\treturn id.startsWith('minecraft:') ? id.slice(10) : id\n}\n\nfunction decorateY(pos: BlockPos, y: number): BlockPos[] {\n\treturn [[ pos[0], y, pos[2] ]]\n}\n\nfunction sampleInt(value: any, ctx: PlacementContext): number {\n\tif (typeof value === 'number') {\n\t\treturn value\n\t} else if (value.base) {\n\t\treturn value.base ?? 1 + ctx.nextInt(1 + (value.spread ?? 0))\n\t} else {\n\t\tswitch (normalize(value.type)) {\n\t\t\tcase 'constant': return value.value\n\t\t\tcase 'uniform': return value.value.min_inclusive + ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1)\n\t\t\tcase 'biased_to_bottom': return value.value.min_inclusive + ctx.nextInt(ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1) + 1)\n\t\t\tcase 'clamped': return Math.max(value.value.min_inclusive, Math.min(value.value.max_inclusive, sampleInt(value.value.source, ctx)))\n\t\t}\n\t\treturn 1\n\t}\n}\n\nfunction useFeature(s: string, ctx: PlacementContext) {\n\tconst i = ctx.features.indexOf(s)\n\tif (i != -1) return i\n\tctx.features.push(s)\n\treturn ctx.features.length - 1\n}\n\nfunction getPlacements(pos: BlockPos, feature: any, ctx: PlacementContext): void {\n\tif (typeof feature === 'string') {\n\t\tctx.placements.push([pos, useFeature(feature, ctx)])\n\t\treturn\n\t}\n\tconst type = normalize(feature?.type ?? 'no_op')\n\tconst featureFn = Features[type]\n\tif (featureFn) {\n\t\tfeatureFn(feature.config, pos, ctx)\n\t} else {\n\t\tctx.placements.push([pos, useFeature(JSON.stringify(feature), ctx)])\n\t}\n}\n\nfunction getPositions(pos: BlockPos, decorator: any, ctx: PlacementContext): BlockPos[] {\n\tconst type = normalize(decorator?.type ?? 'nope')\n\tconst decoratorFn = Decorators[type]\n\tif (!decoratorFn) {\n\t\treturn [pos]\n\t}\n\treturn decoratorFn(decorator?.config, pos, ctx)\n}\n\nconst Features: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => void,\n} = {\n\tdecorated: (config, pos, ctx) => {\n\t\tconst positions = getPositions(pos, config?.decorator, ctx)\n\t\tpositions.forEach(p => getPlacements(p, config?.feature, ctx))\n\t},\n\trandom_boolean_selector: (config, pos, ctx) => {\n\t\tconst feature = ctx.nextFloat() < 0.5 ? config?.feature_true : config?.feature_false\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n\trandom_selector: (config, pos, ctx) => {\n\t\tfor (const f of config?.features ?? []) {\n\t\t\tif (ctx.nextFloat() < (f?.chance ?? 0)) {\n\t\t\t\tgetPlacements(pos, f.feature, ctx)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tgetPlacements(pos, config?.default, ctx)\n\t},\n\tsimple_random_selector: (config, pos, ctx) => {\n\t\tconst feature = config?.features?.[ctx.nextInt(config?.features?.length ?? 0)]\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n}\n\nconst Decorators: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => BlockPos[],\n} = {\n\tchance: (config, pos, ctx) => {\n\t\treturn ctx.nextFloat() < 1 / (config?.chance ?? 1) ? [pos] : []\n\t},\n\tcount: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t},\n\tcount_extra: (config, pos, ctx) => {\n\t\tlet count = config?.count ?? 1\n\t\tif (ctx.nextFloat() < config.extra_chance ?? 0){\n\t\t\tcount += config.extra_count ?? 0\n\t\t}\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_multilayer: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t\t\t.map(p => [\n\t\t\t\tp[0] + ctx.nextInt(16),\n\t\t\t\tp[1], \n\t\t\t\tp[2] + ctx.nextInt(16),\n\t\t\t])\n\t},\n\tcount_noise: (config, pos, ctx) => {\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / 200, 0, pos[2] / 200)\n\t\tconst count = noise < config.noise_level ? config.below_noise : config.above_noise\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_noise_biased: (config, pos, ctx) => {\n\t\tconst factor = Math.max(1, config.noise_factor)\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / factor, 0, pos[2] / factor)\n\t\tconst count = Math.max(0, Math.ceil((noise + (config.noise_offset ?? 0)) * config.noise_to_count_ratio))\n\t\treturn new Array(count).fill(pos)\n\t},\n\tdark_oak_tree: (_config, pos, ctx) => {\n\t\treturn [...new Array(16)].map((_, i) => {\n\t\t\tconst x = Math.floor(i / 4) * 4 + 1 + ctx.nextInt(3) + pos[0]\n\t\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, x)])\n\t\t\tconst z = Math.floor(i % 4) * 4 + 1 + ctx.nextInt(3) + pos[2]\n\t\t\treturn [x, y, z]\n\t\t})\n\t},\n\tdecorated: (config, pos, ctx) => {\n\t\treturn getPositions(pos, config?.outer, ctx).flatMap(p => {\n\t\t\treturn getPositions(p, config?.inner, ctx)\n\t\t})\n\t},\n\tdepth_average: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(config?.spread ?? 0) + ctx.nextInt(config?.spread ?? 0) - (config.spread ?? 0) + (config?.baseline ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\temerald_ore: (_config, pos, ctx) => {\n\t\tconst count = 3 + ctx.nextInt(6)\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t4 + ctx.nextInt(28),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tfire: (config, pos, ctx) => {\n\t\tconst count = 1 + ctx.nextInt(ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tglowstone: (config, pos, ctx) => {\n\t\tconst count = ctx.nextInt(1 + ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\theightmap: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\theightmap_spread_double: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, ctx.nextInt(y * 2))\n\t},\n\theightmap_world_surface: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\ticeberg: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + 4 + ctx.nextInt(8),\n\t\t\tpos[1],\n\t\t\tpos[2] + 4 + ctx.nextInt(8),\n\t\t]]\n\t},\n\tlava_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt((config.chance ?? 1) / 10) === 0) {\n\t\t\tconst y = ctx.nextInt(ctx.nextInt(256 - 8) + 8)\n\t\t\tif (y < ctx.seaLevel || ctx.nextInt((config?.chance ?? 1) / 8) == 0) {\n\t\t\t\tconst x = ctx.nextInt(16) + pos[0]\n\t\t\t\tconst z = ctx.nextInt(16) + pos[2]\n\t\t\t\treturn [[x, y, z]]\n\t\t\t}\n\t\t}\n\t\treturn []\n\t},\n\tnope: (_config, pos) => {\n\t\treturn [pos]\n\t},\n\trange: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\trange_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\trange_very_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\tspread_32_above: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\ttop_solid_heightmap: (_config, pos) => {\n\t\tconst y = terrain[clamp(0, 63, pos[0])]\n\t\treturn decorateY(pos, y)\n\t},\n\tmagma: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\tsquare: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tpos[1],\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t]]\n\t},\n\tsurface_relative_threshold: (config, pos) => {\n\t\tconst height = terrain[clamp(0, 63, pos[0])]\n\t\tconst min = height + (config?.min_inclusive ?? -Infinity)\n\t\tconst max = height + (config?.max_inclusive ?? Infinity)\n\t\treturn (pos[1] < min || pos[1] > max) ? [pos] : []\n\t},\n\twater_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt(config.chance ?? 1) === 0) {\n\t\t\treturn [[\n\t\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t\tctx.nextInt(256),\n\t\t\t\tpos[2] + ctx.nextInt(16),\n\t\t\t]]\n\t\t}\n\t\treturn []\n\t},\n}\n","import { LegacyRandom, PerlinNoise } from 'deepslate'\nimport { clampedLerp, lerp2 } from '../../Utils'\n\nexport class NoiseChunkGenerator {\n\tprivate readonly minLimitPerlinNoise: PerlinNoise\n\tprivate readonly maxLimitPerlinNoise: PerlinNoise\n\tprivate readonly mainPerlinNoise: PerlinNoise\n\tprivate readonly depthNoise: PerlinNoise\n\n\tprivate settings: any = {}\n\tprivate chunkWidth: number = 4\n\tprivate chunkHeight: number = 4\n\tprivate chunkCountY: number = 32\n\tprivate biomeDepth: number = 0.1\n\tprivate biomeScale: number = 0.2\n\n\tprivate noiseColumnCache: (number[] | null)[] = []\n\tprivate xOffset: number = 0\n\n\tconstructor(seed: bigint) {\n\t\tconst random = new LegacyRandom(seed)\n\t\tthis.minLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.maxLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.mainPerlinNoise = new PerlinNoise(random, -7, [1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.depthNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t}\n\n\tpublic reset(settings: any, depth: number, scale: number, xOffset: number, width: number) {\n\t\tthis.settings = settings\n\t\tthis.chunkWidth = settings.size_horizontal * 4\n\t\tthis.chunkHeight = settings.size_vertical * 4\n\t\tthis.chunkCountY = Math.floor(settings.height / this.chunkHeight)\n\n\t\tif (settings.amplified && depth > 0) {\n\t\t\tdepth = 1 + depth * 2\n\t\t\tscale = 1 + scale * 4\n\t\t}\n\t\tthis.biomeDepth = 0.265625 * (depth * 0.5 - 0.125)\n\t\tthis.biomeScale = 96.0 / (scale * 0.9 + 0.1)\n\n\t\tthis.noiseColumnCache = Array(width).fill(null)\n\t\tthis.xOffset = xOffset\n\t}\n \n\tpublic iterateNoiseColumn(x: number): number[] {\n\t\tconst data = Array(this.chunkCountY * this.chunkHeight)\n\t\tconst cx = Math.floor(x / this.chunkWidth)\n\t\tconst ox = Math.floor(x % this.chunkWidth) / this.chunkWidth\n\t\tconst noise1 = this.fillNoiseColumn(cx)\n\t\tconst noise2 = this.fillNoiseColumn(cx + 1)\n\n\t\tfor (let y = this.chunkCountY - 1; y >= 0; y -= 1) {\n\t\t\tfor (let yy = this.chunkHeight; yy >= 0; yy -= 1) {\n\t\t\t\tconst oy = yy / this.chunkHeight\n\t\t\t\tconst i = y * this.chunkHeight + yy\n\t\t\t\tdata[i] = lerp2(oy, ox, noise1[y], noise1[y+1], noise2[y], noise2[y+1])\n\t\t\t}\n\t\t}\n\t\treturn data\n\t}\n\n\tprivate fillNoiseColumn(x: number): number[] {\n\t\tconst cachedColumn = this.noiseColumnCache[x - this.xOffset]\n\t\tif (cachedColumn) return cachedColumn\n\n\t\tconst data = Array(this.chunkCountY + 1)\n\n\t\tconst xzScale = 684.412 * this.settings.sampling.xz_scale\n\t\tconst yScale = 684.412 * this.settings.sampling.y_scale\n\t\tconst xzFactor = xzScale / this.settings.sampling.xz_factor\n\t\tconst yFactor = yScale / this.settings.sampling.y_factor\n\t\tconst randomDensity = this.settings.random_density_offset ? this.getRandomDensity(x) : 0\n\n\t\tfor (let y = 0; y <= this.chunkCountY; y += 1) {\n\t\t\tlet noise = this.sampleAndClampNoise(x, y, this.mainPerlinNoise.getOctaveNoise(0)!.zo, xzScale, yScale, xzFactor, yFactor)\n\t\t\tconst yOffset = 1 - y * 2 / this.chunkCountY + randomDensity\n\t\t\tconst density = yOffset * this.settings.density_factor + this.settings.density_offset\n\t\t\tconst falloff = (density + this.biomeDepth) * this.biomeScale\n\t\t\tnoise += falloff * (falloff > 0 ? 4 : 1)\n\n\t\t\tif (this.settings.top_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.top_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(this.chunkCountY - y - (this.settings.top_slide.offset)) / (this.settings.top_slide.size)\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (this.settings.bottom_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.bottom_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(y - (this.settings.bottom_slide.offset)) / (this.settings.bottom_slide.size)\n\t\t\t\t)\n\t\t\t}\n\t\t\tdata[y] = noise\n\t\t}\n\n\t\tthis.noiseColumnCache[x - this.xOffset] = data\n\t\treturn data\n\t}\n\n\tprivate getRandomDensity(x: number): number {\n\t\tconst noise = this.depthNoise.sample(x * 200, 10, this.depthNoise.getOctaveNoise(0)!.zo, 1, 0, true)\n\t\tconst a = (noise < 0) ? -noise * 0.3 : noise\n\t\tconst b = a * 24.575625 - 2\n\t\treturn (b < 0) ? b * 0.009486607142857142 : Math.min(b, 1) * 0.006640625\n\t}\n\n\tprivate sampleAndClampNoise(x: number, y: number, z: number, xzScale: number, yScale: number, xzFactor: number, yFactor: number): number {\n\t\tlet a = 0\n\t\tlet b = 0\n\t\tlet c = 0\n\t\tlet d = 1\n\n\t\tfor (let i = 0; i < 16; i += 1) {\n\t\t\tconst x2 = PerlinNoise.wrap(x * xzScale * d)\n\t\t\tconst y2 = PerlinNoise.wrap(y * yScale * d)\n\t\t\tconst z2 = PerlinNoise.wrap(z * xzScale * d)\n\t\t\tconst e = yScale * d\n\n\t\t\tconst minLimitNoise = this.minLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (minLimitNoise) {\n\t\t\t\ta += minLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tconst maxLimitNoise = this.maxLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (maxLimitNoise) {\n\t\t\t\tb += maxLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tif (i < 8) {\n\t\t\t\tconst mainNoise = this.mainPerlinNoise.getOctaveNoise(i)\n\t\t\t\tif (mainNoise) {\n\t\t\t\t\tc += mainNoise.sample(\n\t\t\t\t\t\tPerlinNoise.wrap(x * xzFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(y * yFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(z * xzFactor * d),\n\t\t\t\t\t\tyFactor * d,\n\t\t\t\t\t\ty * yFactor * d \n\t\t\t\t\t) / d\n\t\t\t\t}\n\t\t\t}\n\n\t\t\td /= 2\n\t\t}\n\n\t\treturn clampedLerp(a / 512, b / 512, (c / 10 + 1) / 2)\n\t}\n}\n","import { DataModel } from '@mcschema/core'\nimport type { BlockPos, BlockState } from 'deepslate'\nimport { Chunk, ChunkPos, FixedBiome, NoiseChunkGenerator, NoiseGeneratorSettings } from 'deepslate'\nimport { getOctaves } from '../components'\nimport type { VersionId } from '../Schemas'\nimport { checkVersion } from '../Schemas'\nimport { deepClone, deepEqual } from '../Utils'\nimport { NoiseChunkGenerator as OldNoiseChunkGenerator } from './noise/NoiseChunkGenerator'\n\nexport type NoiseSettingsOptions = {\n\tbiomeScale?: number,\n\tbiomeDepth?: number,\n\toffset: number,\n\twidth: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nconst Z = 0\n\nconst colors: Record = {\n\t'minecraft:air': [150, 160, 170],\n\t'minecraft:water': [20, 80, 170],\n\t'minecraft:lava': [200, 100, 0],\n\t'minecraft:stone': [50, 50, 50],\n\t'minecraft:netherrack': [100, 40, 40],\n\t'minecraft:end_stone': [200, 200, 140],\n}\n\nlet cacheState: any\nlet generatorCache: NoiseChunkGenerator\nlet chunkCache: Chunk[] = []\n\nexport function noiseSettings(state: any, img: ImageData, options: NoiseSettingsOptions) {\n\tif (checkVersion(options.version, '1.18')) {\n\t\tconst { settings, generator } = getCached(state, options)\n\n\t\tconst slice = new LevelSlice(-options.offset, options.width, settings.noise.minY, settings.noise.height)\n\t\tslice.fill(generator)\n\n\t\tconst data = img.data\n\t\tfor (let x = 0; x < options.width; x += 1) {\n\t\t\tfor (let y = 0; y < settings.noise.height; y += 1) {\n\t\t\t\tconst i = x * 4 + (settings.noise.height-y-1) * 4 * img.width\n\t\t\t\tconst state = slice.getBlockState([x - options.offset, y, Z])\n\t\t\t\tconst color = colors[state.getName()] ?? [0, 0, 0]\n\t\t\t\tdata[i] = color[0]\n\t\t\t\tdata[i + 1] = color[1]\n\t\t\t\tdata[i + 2] = color[2]\n\t\t\t\tdata[i + 3] = 255\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tconst generator = new OldNoiseChunkGenerator(options.seed)\n\tgenerator.reset(state.noise, options.biomeDepth ?? 0, options.biomeScale ?? 0, options.offset, options.width)\n\tconst data = img.data\n\tconst row = img.width * 4\n\tfor (let x = 0; x < options.width; x += 1) {\n\t\tconst noise = generator.iterateNoiseColumn(x - options.offset).reverse()\n\t\tfor (let y = 0; y < state.noise.height; y += 1) {\n\t\t\tconst i = y * row + x * 4\n\t\t\tconst color = getColor(noise, y)\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nfunction getCached(state: unknown, options: NoiseSettingsOptions) {\n\tconst settings = NoiseGeneratorSettings.fromJson(DataModel.unwrapLists(state))\n\tsettings.octaves = getOctaves(settings)\n\n\tconst newState = [state, `${options.seed}`]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\t\tchunkCache = []\n\t\tconst biomeSource = new FixedBiome('unknown')\n\t\tgeneratorCache = new NoiseChunkGenerator(options.seed, biomeSource, settings)\n\t}\n\treturn {\n\t\tsettings,\n\t\tgenerator: generatorCache,\n\t}\n}\n\nfunction getColor(noise: number[], y: number): number {\n\tif (noise[y] > 0) {\n\t\treturn 0\n\t}\n\tif (noise[y+1] > 0) {\n\t\treturn 150\n\t}\n\treturn 255\n}\n\nclass LevelSlice {\n\tprivate readonly chunks: Chunk[]\n\tprivate readonly filled: boolean[]\n\n\tconstructor(\n\t\tprivate readonly minX: number,\n\t\twidth: number,\n\t\tminY: number,\n\t\theight: number,\n\t) {\n\t\tthis.filled = []\n\t\tthis.chunks = [...Array(Math.ceil(width / 16) + 1)]\n\t\t\t.map((_, i) => {\n\t\t\t\tconst x = (minX >> 4) + i\n\t\t\t\tconst cached = chunkCache.find(c => c.pos[0] === x)\n\t\t\t\tif (cached) {\n\t\t\t\t\tthis.filled[i] = true\n\t\t\t\t\treturn cached\n\t\t\t\t}\n\t\t\t\treturn new Chunk(minY, height, ChunkPos.create(x, Z >> 4))\n\t\t\t})\n\t}\n\n\tpublic fill(generator: NoiseChunkGenerator) {\n\t\tthis.chunks.forEach((chunk, i) => {\n\t\t\tif (!this.filled[i]) {\n\t\t\t\tgenerator.fill(chunk)\n\t\t\t\tthis.filled[i] = true\n\t\t\t\tchunkCache.push(chunk)\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic getBlockState(pos: BlockPos): BlockState {\n\t\tconst chunkIndex = (pos[0] >> 4) - (this.minX >> 4)\n\t\treturn this.chunks[chunkIndex].getBlockState(pos)\n\t}\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { NoiseGeneratorSettings, TerrainShaper } from 'deepslate'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { biomeMap, getBiome } from '../../previews'\nimport { newSeed } from '../../Utils'\n\nconst LAYERS = ['biomes', 'temperature', 'humidity', 'continentalness', 'erosion', 'weirdness', 'offset', 'factor', 'jaggedness'] as const\n\nconst OverworldShaper = TerrainShaper.overworld()\n\nexport const BiomeSourcePreview = ({ model, data, shown, lang, version }: PreviewProps) => {\n\tconst [scale, setScale] = useState(2)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst [layers, setLayers] = useState(new Set(['biomes']))\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst res = useRef(1)\n\tconst refineTimeout = useRef(undefined)\n\n\tconst seed = BigInt(model.get(new Path(['generator', 'seed'])))\n\tconst octaves = getOctaves(model.get(new Path(['generator', 'settings'])))\n\tconst shaper = getShaper(model.get(new Path(['generator', 'settings'])))\n\tconst state = shown ? calculateState(data, octaves, shaper) : ''\n\tconst type: string = data.type?.replace(/^minecraft:/, '')\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [200 / res.current, 200 / res.current]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { octaves, shaper, biomeColors: {}, layers, offset: offset.current, scale, seed, res: res.current, version }\n\t\t\tawait biomeMap(data, img, options)\n\t\t\tif (res.current === 4) {\n\t\t\t\tclearTimeout(refineTimeout.current)\n\t\t\t\trefineTimeout.current = setTimeout(() => {\n\t\t\t\t\tres.current = 1\n\t\t\t\t\tredraw()\n\t\t\t\t}, 150) as any\n\t\t\t}\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 200\n\t\t\toffset.current[1] = offset.current[1] + dy * 200\n\t\t\tclearTimeout(refineTimeout.current)\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(x, y) {\n\t\t\tconst options = { octaves, shaper, biomeColors: {}, layers, offset: offset.current, scale, seed, res: 1, version }\n\t\t\tconst biome = await getBiome(data, Math.floor(x * 200), Math.floor(y * 200), options)\n\t\t\tsetFocused(biome)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, scale, seed, layers])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, layers, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t\n\t\t\t\t\t{LAYERS.map(name => {\n\t\t\t\t\t\tconst enabled = layers.has(name)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tsetLayers(new Set([name]))\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t}} />\n\t\t\t\t\t})}\n\t\t\t\t}\n\t\t\t{(type === 'multi_noise' || type === 'checkerboard') && <>\n\t\t\t\t changeScale(scale * 1.5)} />\n\t\t\t\t changeScale(scale / 1.5)} />\n\t\t\t}\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t newSeed(model)} />}\n\t\t
\n\t\t\n\t\n}\n\nfunction calculateState(data: any, octaves: NoiseOctaves, shaper: TerrainShaper) {\n\treturn JSON.stringify([data, octaves, shaper.toJson()])\n}\n\nexport function getOctaves(obj: any): NoiseOctaves {\n\tif (typeof obj !== 'string') {\n\t\tconst settings = NoiseGeneratorSettings.fromJson(DataModel.unwrapLists(obj))\n\t\tobj = settings.noise.densityFactor === 0 && settings.noise.densityOffset === -0.030078125\n\t\t\t? 'minecraft:nether' : 'minecraft:overworld'\n\t}\n\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\tcase 'overworld':\n\t\tcase 'amplified':\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: -9, amplitudes: [1.5, 0, 1, 0, 0, 0] },\n\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1, 0, 0, 0, 0] },\n\t\t\t\tcontinentalness: { firstOctave: -9, amplitudes: [1, 1, 2, 2, 2, 1, 1, 1, 1] },\n\t\t\t\terosion: { firstOctave: -9, amplitudes: [1, 1, 0, 1, 1] },\n\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 2, 1, 0, 0, 0] },\n\t\t\t\tshift: { firstOctave: -3, amplitudes: [1, 1, 1, 0] },\n\t\t\t}\n\t\tcase 'end':\n\t\tcase 'floating_islands':\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\thumidity: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tcontinentalness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\terosion: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tweirdness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t}\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tcontinentalness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\terosion: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t}\n\t}\n}\n\nexport function getShaper(obj: any): TerrainShaper {\n\tif (typeof obj === 'string') {\n\t\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\t\tcase 'overworld':\n\t\t\tcase 'amplified':\n\t\t\t\treturn OverworldShaper\n\t\t\tdefault:\n\t\t\t\treturn TerrainShaper.fromJson({ offset: 0, factor: 0, jaggedness: 0 })\n\t\t}\n\t}\n\treturn TerrainShaper.fromJson(DataModel.unwrapLists(obj?.noise?.terrain_shaper))\n}\n","import { useEffect, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { decorator } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const DecoratorPreview = ({ data, version, shown, lang }: PreviewProps) => {\n\tconst [scale, setScale] = useState(4)\n\tconst [seed, setSeed] = useState(randomSeed())\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [scale * 16, scale * 16]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tdecorator(data, img, { seed, version, size: [scale * 16, 128, scale * 16] })\n\t\t},\n\t})\n\n\tconst state = JSON.stringify(data)\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t setScale(Math.min(16, scale + 1))} />\n\t\t\t setScale(Math.max(1, scale - 1))} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { normalNoise } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const NoisePreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [scale, setScale] = useState(2)\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst state = JSON.stringify([data])\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [256, 256]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { offset: offset.current, scale, seed, version }\n\t\t\tnormalNoise(data, img, options)\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 256\n\t\t\toffset.current[1] = offset.current[1] + dy * 256\n\t\t\tredraw()\n\t\t},\n\t}, [state, scale, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t changeScale(scale * 1.5)} />\n\t\t\t changeScale(scale / 1.5)} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { DataModel } from '@mcschema/core'\nimport { LegacyRandom, NoiseParameters, NormalNoise } from 'deepslate'\nimport type { VersionId } from '../Schemas'\n\nexport type NoiseOptions = {\n\toffset: [number, number],\n\tscale: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nexport function normalNoise(state: any, img: ImageData, options: NoiseOptions) {\n\tconst random = new LegacyRandom(options.seed)\n\tconst params = NoiseParameters.fromJson(DataModel.unwrapLists(state))\n\tconst noise = new NormalNoise(random, params)\n\n\tconst ox = -options.offset[0] - 100\n\tconst oz = -options.offset[1] - 100\n\tconst data = img.data\n\tfor (let x = 0; x < 256; x += 1) {\n\t\tfor (let y = 0; y < 256; y += 1) {\n\t\t\tconst i = x * 4 + y * 4 * 256\n\t\t\tconst xx = (x + ox) * options.scale\n\t\t\tconst yy = (y + oz) * options.scale\n\t\t\tconst color = (noise.sample(xx, yy, 0) + 1) * 128\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnInput, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { noiseSettings } from '../../previews'\nimport { checkVersion } from '../../Schemas'\nimport { randomSeed } from '../../Utils'\n\nexport const NoiseSettingsPreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst loc = locale.bind(null, lang)\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [biomeScale, setBiomeScale] = useState(0.2)\n\tconst [biomeDepth, setBiomeDepth] = useState(0.1)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst offset = useRef(0)\n\tconst state = JSON.stringify([data, biomeScale, biomeDepth])\n\n\tconst size = data?.noise?.height ?? 256\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [size, size]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { biomeDepth, biomeScale, offset: offset.current, width: img.width, seed, version }\n\t\t\tnoiseSettings(data, img, options)\n\t\t},\n\t\tasync onDrag(dx) {\n\t\t\toffset.current += dx * size\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(_, y) {\n\t\t\tconst worldY = size - Math.max(1, Math.ceil(y * size)) + (data?.noise?.min_y ?? 0)\n\t\t\tsetFocused(`${worldY}`)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{checkVersion(version, undefined, '1.17') &&\n\t\t\t\t\n\t\t\t\t\t setBiomeScale(Number(v))} />\n\t\t\t\t\t setBiomeDepth(Number(v))} />\n\t\t\t\t\n\t\t\t}\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport { useState } from 'preact/hooks'\nimport { useModel } from '../../hooks'\nimport type { VersionId } from '../../Schemas'\nimport { BiomeSourcePreview, DecoratorPreview, NoisePreview, NoiseSettingsPreview } from '../previews'\n\nexport const HasPreview = ['dimension', 'worldgen/noise', 'worldgen/noise_settings', 'worldgen/configured_feature']\n\ntype PreviewPanelProps = {\n\tlang: string,\n\tmodel: DataModel | null,\n\tversion: VersionId,\n\tid: string,\n\tshown: boolean,\n\tonError: (message: string) => unknown,\n}\nexport function PreviewPanel({ lang, model, version, id, shown }: PreviewPanelProps) {\n\tconst [, setCount] = useState(0)\n\n\tuseModel(model, () => {\n\t\tsetCount(count => count + 1)\n\t})\n\n\tif (id === 'dimension' && model?.get(new Path(['generator', 'type']))?.endsWith('noise')) {\n\t\tconst data = model.get(new Path(['generator', 'biome_source']))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise_settings' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/configured_feature' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\treturn <>\n}\n","import type { Hook } from '@mcschema/core'\nimport { relativePath } from '@mcschema/core'\nimport type { BlockStateRegistry } from '../Schemas'\n\nexport type OutputProps = {\n\tblockStates: BlockStateRegistry,\n}\nexport const transformOutput: Hook<[any, OutputProps], any> = {\n\tbase({}, _, value) {\n\t\treturn value\n\t},\n\n\tchoice({ switchNode }, path, value, props) {\n\t\treturn switchNode.hook(this, path, value, props)\n\t},\n\n\tlist({ children }, path, value, props) {\n\t\tif (!Array.isArray(value)) return value\n\t\treturn value.map((obj, index) =>\n\t\t\tchildren.hook(this, path.push(index), obj.node, props)\n\t\t)\n\t},\n\n\tmap({ children, config }, path, value, props) {\n\t\tif (value === undefined) return undefined\n\t\tconst blockState = config.validation?.validator === 'block_state_map'? props.blockStates?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst res: any = {}\n\t\tObject.keys(value).forEach(f => {\n\t\t\tif (blockState) {\n\t\t\t\tif (!Object.keys(blockState.properties ?? {}).includes(f)) return\n\t\t\t}\n\t\t\tres[f] = children.hook(this, path.push(f), value[f], props)\n\t\t})\n\t\treturn res\n\t},\n\n\tobject({ getActiveFields }, path, value, props) {\n\t\tif (value === undefined || value === null || typeof value !== 'object') {\n\t\t\treturn value\n\t\t}\n\t\tconst res: any = {}\n\t\tconst activeFields = getActiveFields(path)\n\t\tObject.keys(activeFields)\n\t\t\t.filter(k => activeFields[k].enabled(path))\n\t\t\t.forEach(f => {\n\t\t\t\tres[f] = activeFields[f].hook(this, path.push(f), value[f], props)\n\t\t\t})\n\t\treturn res\n\t},\n}\n","import type { VersionId } from './Schemas'\nimport { VersionIds } from './Schemas'\n\nexport namespace Store {\n\texport const ID_LANGUAGE = 'language'\n\texport const ID_THEME = 'theme'\n\texport const ID_VERSION = 'schema_version'\n\texport const ID_INDENT = 'indentation'\n\texport const ID_SOUNDS_VERSION = 'minecraft_sounds_version'\n\n\texport function getLanguage() {\n\t\treturn localStorage.getItem(ID_LANGUAGE) ?? 'en'\n\t}\n\n\texport function getTheme() {\n\t\treturn localStorage.getItem(ID_THEME) ?? 'dark'\n\t}\n\n\texport function getVersion(): VersionId {\n\t\tconst version = localStorage.getItem(ID_VERSION)\n\t\tif (version && VersionIds.includes(version as VersionId)) {\n\t\t\treturn version as VersionId\n\t\t}\n\t\treturn '1.17'\n\t}\n\n\texport function getIndent() {\n\t\treturn localStorage.getItem(ID_INDENT) ?? '2_spaces'\n\t}\n\n\texport function getSoundsVersion() {\n\t\treturn localStorage.getItem(ID_SOUNDS_VERSION) ?? 'latest'\n\t}\n\n\texport function setLanguage(language: string | undefined) {\n\t\tif (language) localStorage.setItem(ID_LANGUAGE, language)\n\t}\n\n\texport function setTheme(theme: string | undefined) {\n\t\tif (theme) localStorage.setItem(ID_THEME, theme)\n\t}\n\n\texport function setVersion(version: VersionId | undefined) {\n\t\tif (version) localStorage.setItem(ID_VERSION, version)\n\t}\n\n\texport function setIndent(indent: string | undefined) {\n\t\tif (indent) localStorage.setItem(ID_INDENT, indent)\n\t}\n\n\texport function setSoundsVersion(version: string | undefined) {\n\t\tif (version) localStorage.setItem(ID_SOUNDS_VERSION, version)\n\t}\n}\n","import { DataModel, ModelPath } from '@mcschema/core'\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, BtnMenu } from '..'\nimport { useModel } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { transformOutput } from '../../schema/transformOutput'\nimport type { BlockStateRegistry } from '../../Schemas'\nimport { Store } from '../../Store'\nimport { message } from '../../Utils'\n\nconst OUTPUT_CHARS_LIMIT = 10000\n\nconst INDENT: Record = {\n\t'2_spaces': 2,\n\t'4_spaces': 4,\n\ttabs: '\\t',\n}\n\ntype SourcePanelProps = {\n\tlang: string,\n\tname: string,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tdoCopy?: number,\n\tdoDownload?: number,\n\tdoImport?: number,\n\tcopySuccess: () => unknown,\n\tonError: (message: string) => unknown,\n}\nexport function SourcePanel({ lang, name, model, blockStates, doCopy, doDownload, doImport, copySuccess, onError }: SourcePanelProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [indent, setIndent] = useState(Store.getIndent())\n\tconst source = useRef(null)\n\tconst download = useRef(null)\n\tconst retransform = useRef()\n\n\tconst getOutput = useCallback((model: DataModel, blockStates: BlockStateRegistry) => {\n\t\tconst data = model.schema.hook(transformOutput, new ModelPath(model), model.data, { blockStates })\n\t\treturn JSON.stringify(data, null, INDENT[indent]) + '\\n'\n\t}, [indent])\n\n\tuseEffect(() => {\n\t\tretransform.current = () => {\n\t\t\tif (!model || !blockStates) return\n\t\t\ttry {\n\t\t\t\tconst output = getOutput(model, blockStates)\n\t\t\t\tif (output.length >= OUTPUT_CHARS_LIMIT) {\n\t\t\t\t\tsource.current.value = output.slice(0, OUTPUT_CHARS_LIMIT) + `\\n\\nOutput is too large to display (+${OUTPUT_CHARS_LIMIT} chars)\\nExport to view complete output\\n\\n`\n\t\t\t\t} else {\n\t\t\t\t\tsource.current.value = output\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tonError(`Error getting JSON output: ${message(e)}`)\n\t\t\t\tconsole.error(e)\n\t\t\t\tsource.current.value = ''\n\t\t\t}\n\t\t}\n\t})\n\n\tuseModel(model, () => {\n\t\tretransform.current()\n\t})\n\tuseEffect(() => {\n\t\tif (model) retransform.current()\n\t}, [model])\n\n\tuseEffect(() => {\n\t\tretransform.current()\n\t}, [indent])\n\n\tconst onImport = () => {\n\t\ttry {\n\t\t\tconst data = JSON.parse(source.current.value)\n\t\t\tmodel?.reset(DataModel.wrapLists(data), false)\n\t\t} catch (e) {\n\t\t\tonError(`Error importing: ${message(e)}`)\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (doCopy && model && blockStates) {\n\t\t\tnavigator.clipboard.writeText(getOutput(model, blockStates)).then(() => {\n\t\t\t\tcopySuccess()\n\t\t\t})\n\t\t}\n\t}, [doCopy])\n\n\tuseEffect(() => {\n\t\tif (doDownload && model && blockStates && download.current) {\n\t\t\tconst content = encodeURIComponent(getOutput(model, blockStates))\n\t\t\tdownload.current.setAttribute('href', `data:text/json;charset=utf-8,${content}`)\n\t\t\tdownload.current.setAttribute('download', `${name}.json`)\n\t\t\tdownload.current.click()\n\t\t}\n\t}, [doDownload])\n\n\tuseEffect(() => {\n\t\tif (doImport && source.current) {\n\t\t\tsource.current.value = ''\n\t\t\tsource.current.select()\n\t\t}\n\t}, [doImport])\n\n\tconst changeIndent = (value: string) => {\n\t\tStore.setIndent(value)\n\t\tsetIndent(value)\n\t}\n\n\treturn <> \n\t\t
\n\t\t\t\n\t\t\t\t{Object.entries(INDENT).map(([key]) =>\n\t\t\t\t\t changeIndent(key)}/>\n\t\t\t\t)}\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\n}\n","import type { INode, Path } from '@mcschema/core'\nimport { DataModel } from '@mcschema/core'\n\nexport class ModelWrapper extends DataModel {\n\tconstructor(\n\t\tschema: INode,\n\t\tprivate readonly mapper: (path: Path) => Path,\n\t\tprivate readonly getter: (path: Path) => any,\n\t\tprivate readonly setter: (path: Path, value: any, silent?: boolean) => any,\n\t) {\n\t\tsuper(schema)\n\t}\n\n\tmap(path: Path) {\n\t\treturn this.mapper(path)\n\t}\n\n\tget(path: Path) {\n\t\treturn this.getter(path)\n\t}\n\n\tset(path: Path, value: any, silent?: boolean) {\n\t\treturn this.setter(path, value, silent)\n\t}\n}\n","import type { BooleanHookParams, EnumOption, Hook, INode, NodeChildren, NumberHookParams, StringHookParams, ValidationOption } from '@mcschema/core'\nimport { DataModel, ListNode, MapNode, ModelPath, ObjectNode, Path, relativePath, StringNode } from '@mcschema/core'\nimport type { ComponentChildren, JSX } from 'preact'\nimport { memo } from 'preact/compat'\nimport { useState } from 'preact/hooks'\nimport { Btn } from '../components'\nimport { Octicon } from '../components/Octicon'\nimport { useFocus } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry } from '../Schemas'\nimport { CachedDecorator, CachedFeature } from '../Schemas'\nimport { deepClone, deepEqual, hexId, isObject, newSeed } from '../Utils'\nimport { ModelWrapper } from './ModelWrapper'\n\nconst selectRegistries = ['loot_table.type', 'loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'recipe.type', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'dimension.generator.biome_source.preset', 'carver.type', 'feature.type', 'decorator.type', 'feature.tree.minimum_size.type', 'block_state_provider.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'int_provider.type', 'float_provider.type', 'height_provider.type', 'structure_feature.type', 'surface_builder.type', 'processor.processor_type', 'rule_test.predicate_type', 'pos_rule_test.predicate_type', 'template_element.element_type', 'block_placer.type', 'block_predicate.type', 'material_rule.type', 'material_condition.type']\nconst hiddenFields = ['number_provider.type', 'score_provider.type', 'nbt_provider.type', 'int_provider.type', 'float_provider.type', 'height_provider.type']\nconst flattenedFields = ['feature.config', 'decorator.config', 'int_provider.value', 'float_provider.value', 'block_state_provider.simple_state_provider.state', 'block_state_provider.rotated_block_provider.state', 'block_state_provider.weighted_state_provider.entries.entry.data', 'rule_test.block_state', 'structure_feature.config', 'surface_builder.config', 'template_pool.elements.entry.element', 'decorator.block_survives_filter.state', 'material_rule.block.result_state']\nconst inlineFields = ['loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'feature.type', 'decorator.type', 'block_state_provider.type', 'feature.tree.minimum_size.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'block_placer.type', 'rule_test.predicate_type', 'processor.processor_type', 'template_element.element_type', 'nbt_operation.op', 'number_provider.value', 'score_provider.name', 'score_provider.target', 'nbt_provider.source', 'nbt_provider.target', 'generator_biome.biome', 'block_predicate.type', 'material_rule.type', 'material_condition.type']\nconst nbtFields = ['function.set_nbt.tag', 'advancement.display.icon.nbt', 'text_component_object.nbt', 'entity.nbt', 'block.nbt', 'item.nbt']\nconst fixedLists = ['generator_biome.parameters.temperature', 'generator_biome.parameters.humidity', 'generator_biome.parameters.continentalness', 'generator_biome.parameters.erosion', 'generator_biome.parameters.depth', 'generator_biome.parameters.weirdness', 'feature.end_spike.crystal_beam_target', 'feature.end_gateway.exit', 'decorator.block_filter.offset', 'block_predicate.matching_blocks.offset', 'block_predicate.matching_fluids.offset']\n\n/**\n * Secondary model used to remember the keys of a map\n */\nconst keysModel = new DataModel(MapNode(\n\tStringNode(),\n\tStringNode()\n), { historyMax: 0 })\n\ntype JSXTriple = [JSX.Element | null, JSX.Element | null, JSX.Element | null]\ntype RenderHook = Hook<[any, string, BlockStateRegistry, Record], JSXTriple>\n\ntype NodeProps = T & {\n\tnode: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n}\n\nexport function FullNode({ model, lang, blockStates }: { model: DataModel, lang: string, blockStates: BlockStateRegistry }) {\n\tconst path = new ModelPath(model)\n\tconst [prefix, suffix, body] = model.schema.hook(renderHtml, path, deepClone(model.data), lang, blockStates, {})\n\treturn suffix?.props?.children.some((c: any) => c) ?
\n\t\t
{prefix}{suffix}
\n\t\t
{body}
\n\t
: body\n}\n\nconst renderHtml: RenderHook = {\n\tbase() {\n\t\treturn [null, null, null]\n\t},\n\n\tboolean(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tchoice({ choices, config, switchNode }, path, value, lang, states, ctx) {\n\t\tconst choice = switchNode.activeCase(path, true) as typeof choices[number]\n\t\tconst contextPath = (config?.context) ? new ModelPath(path.getModel(), new Path(path.getArray(), [config.context])) : path\n\t\tconst [prefix, suffix, body] = choice.node.hook(this, contextPath, value, lang, states, ctx)\n\t\tif (choices.length === 1) {\n\t\t\treturn [prefix, suffix, body]\n\t\t}\n\t\tconst choiceContextPath = config?.choiceContext ? new Path([], [config.choiceContext]) : config?.context ? new Path([], [config.context]) : path\n\t\tconst set = (type: string) => {\n\t\t\tconst c = choices.find(c => c.type === type) ?? choice\n\t\t\tconst newValue = c.change\n\t\t\t\t? c.change(DataModel.unwrapLists(value))\n\t\t\t\t: config.choiceContext === 'feature' ?\tc.node.default()?.config?.feature : c.node.default()\n\t\t\tpath.model.set(path, DataModel.wrapLists(newValue))\n\t\t}\n\t\tconst inject = \n\t\treturn [prefix, <>{inject}{suffix}, body]\n\t},\n\n\tlist({ children, config }, path, value, lang, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\t\tconst [maxShown, setMaxShown] = useState(50)\n\n\t\tconst context = path.getContext().join('.')\n\t\tif (fixedLists.includes(context)) {\n\t\t\tconst prefix = <>\n\t\t\t\t{[...Array(config.maxLength!)].map((_, i) =>\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t\tconst suffix = <>{[...Array(config.maxLength)].map((_, i) => {\n\t\t\t\tconst child = children.hook(this, path.modelPush(i), value?.[i]?.node, lang, states, ctx)\n\t\t\t\treturn child[1]\n\t\t\t})}\n\t\t\treturn [prefix, suffix, null]\n\t\t}\n\n\t\tconst onAdd = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [{ node, id: hexId() }, ...value])\n\t\t}\n\t\tconst onAddBottom = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [...value, { node, id: hexId() }])\n\t\t}\n\t\tconst suffix = \n\t\tconst body = <>\n\t\t\t{(value && Array.isArray(value)) && value.map(({ node: cValue, id: cId }, index) => {\n\t\t\t\tif (index === maxShown) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tif (index > maxShown) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\tconst cPath = path.push(index).contextPush('entry')\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(cId)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\tconst onMoveUp = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index - 1], v[index]] = [v[index], v[index - 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst onMoveDown = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index + 1], v[index]] = [v[index], v[index + 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst actions: MenuAction[] = [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'duplicate',\n\t\t\t\t\t\tlabel: 'duplicate',\n\t\t\t\t\t\tonSelect: () => {\n\t\t\t\t\t\t\tconst v = [...path.get()]\n\t\t\t\t\t\t\tv.splice(index, 0, { id: hexId(), node: deepClone(cValue) })\n\t\t\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\t{value.length > 1 &&
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
}\n\t\t\t\t
\n\t\t\t})}\n\t\t\t{(value && value.length > 0 && value.length <= maxShown) &&
\n\t\t\t\t\n\t\t\t
}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tmap({ children, keys, config }, path, value, lang, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\n\t\tconst keyPath = new ModelPath(keysModel, new Path([hashString(path.toString())]))\n\t\tconst onAdd = () => {\n\t\t\tconst key = keyPath.get()\n\t\t\tpath.model.set(path.push(key), DataModel.wrapLists(children.default()))\n\t\t}\n\t\tconst blockState = config.validation?.validator === 'block_state_map' ? states?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst keysSchema = blockState?.properties\n\t\t\t? StringNode(null!, { enum: Object.keys(blockState.properties ?? {}) })\n\t\t\t: keys\n\t\tif (blockState && path.last() === 'Properties') {\n\t\t\tif (typeof value !== 'object') value = {}\n\t\t\tconst properties = Object.entries(blockState.properties ?? {})\n\t\t\t\t.map(([key, values]) => [key, StringNode(null!, { enum: values })])\n\t\t\tObject.entries(blockState.properties ?? {}).forEach(([key, values]) => {\n\t\t\t\tif (typeof value[key] !== 'string') {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.expected_string')\n\t\t\t\t} else if (!values.includes(value[key])) {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.invalid_enum_option', value[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn ObjectNode(Object.fromEntries(properties)).hook(this, path, value, lang, states, ctx)\n\t\t}\n\t\tconst suffix = <>\n\t\t\t{keysSchema.hook(this, keyPath, keyPath.get() ?? '', lang, states, ctx)[1]}\n\t\t\t\n\t\t\n\t\tconst body = <>\n\t\t\t{typeof value === 'object' && Object.entries(value).map(([key, cValue]) => {\n\n\t\t\t\tconst cPath = path.modelPush(key)\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(key)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tconst cSchema = blockState\n\t\t\t\t\t? StringNode(null!, { enum: blockState.properties?.[key] ?? [] })\n\t\t\t\t\t: children\n\t\t\t\tif (blockState?.properties?.[key] && typeof cValue === 'string'\n\t\t\t\t\t&& !blockState.properties?.[key].includes(cValue)) {\n\t\t\t\t\tpath.model.errors.add(cPath, 'error.invalid_enum_option', cValue)\n\t\t\t\t}\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t})}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tnumber(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tobject({ node, config, getActiveFields, getChildModelPath }, path, value, lang, states, ctx) {\n\t\tconst { expand, isToggled } = useToggles()\n\n\t\tif (path.getArray().length == 0 && isDecorated(config.context, value)) {\n\t\t\tconst { wrapper, fields } = createDecoratorsWrapper(getActiveFields(path), path, value)\n\t\t\tvalue = wrapper.data\n\t\t\tgetActiveFields = () => fields\n\t\t\tgetChildModelPath = (path, key) => new ModelPath(wrapper, new Path(path.getArray(), ['feature'])).push(key)\n\t\t}\n\n\t\tlet prefix: JSX.Element | null = null\n\t\tlet suffix: JSX.Element | null = null\n\t\tif (node.optional()) {\n\t\t\tif (value === undefined) {\n\t\t\t\tconst onExpand = () => path.set(DataModel.wrapLists(node.default()))\n\t\t\t\tsuffix = \n\t\t\t} else {\n\t\t\t\tconst onCollapse = () => path.set(undefined)\n\t\t\t\tsuffix = \n\t\t\t}\n\t\t}\n\t\tconst newCtx = (typeof value === 'object' && value !== null && node.default()?.pools)\n\t\t\t? { ...ctx, loot: value?.type } : ctx\n\t\tconst body = <>\n\t\t\t{(typeof value === 'object' && value !== null && !(node.optional() && value === undefined)) &&\n\t\t\t\tObject.entries(getActiveFields(path))\n\t\t\t\t\t.filter(([_, child]) => child.enabled(path))\n\t\t\t\t\t.map(([key, child]) => {\n\t\t\t\t\t\tconst cPath = getChildModelPath(path, key)\n\t\t\t\t\t\tconst canToggle = child.type(cPath) === 'object'\n\t\t\t\t\t\tconst toggle = isToggled(key)\n\t\t\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && (ctx.depth ?? 0) > 5))) {\n\t\t\t\t\t\t\treturn
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst context = cPath.getContext().join('.')\n\t\t\t\t\t\tif (hiddenFields.includes(context)) return null\n\t\t\t\t\t\tconst [cPrefix, cSuffix, cBody] = child.hook(this, cPath, value[key], lang, states, newCtx)\n\t\t\t\t\t\tif (!cPrefix && !cSuffix && !((cBody?.props?.children?.length ?? 0) > 0)) return null\n\t\t\t\t\t\tconst isFlattened = child.type(cPath) === 'object' && flattenedFields.includes(context)\n\t\t\t\t\t\tconst isInlined = inlineFields.includes(context)\n\t\t\t\t\t\tif (isFlattened || isInlined) {\n\t\t\t\t\t\t\tprefix = <>{prefix}{cPrefix}\n\t\t\t\t\t\t\tsuffix = <>{suffix}{cSuffix}\n\t\t\t\t\t\t\treturn isFlattened ? cBody : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn \n\t\t\t\t\t})\n\t\t\t}\n\t\t\n\t\treturn [prefix, suffix, body]\n\t},\n\n\tstring(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n}\n\nfunction Collapsed({ path, value }: { path: ModelPath, value: any, schema: INode }) {\n\tconst context = path.getContext().join('.')\n\tswitch (context) {\n\t\tcase 'loot_table.pools.entry':\n\t\t\treturn \n\t\tcase 'function.set_contents.entries.entry':\n\t\tcase 'loot_pool.entries.entry':\n\t\t\treturn \n\t}\n\tfor (const child of Object.values(value ?? {})) {\n\t\tif (typeof child === 'string') {\n\t\t\treturn \n\t\t}\n\t}\n\treturn null\n}\n\nfunction useToggles() {\n\tconst [toggleState, setToggleState] = useState(new Map())\n\tconst [toggleAll, setToggleAll] = useState(undefined)\n\n\tconst expand = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(true)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, true)))\n\t\t}\n\t}\n\tconst collapse = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(false)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, false)))\n\t\t}\n\t}\n\t\n\tconst isToggled = (key: string) => {\n\t\tif (!(toggleState instanceof Map)) return false\n\t\treturn toggleState.get(key) ?? toggleAll\n\t}\n\n\treturn { expand, collapse, isToggled }\n}\n\nfunction BooleanSuffix({ path, node, value, lang }: NodeProps) {\n\tconst set = (target: boolean) => {\n\t\tpath.model.set(path, node.optional() && value === target ? undefined : target)\n\t}\n\treturn <>\n\t\t\n\t\t\n\t\n}\n\nfunction NumberSuffix({ path, config, integer, value, lang }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = integer ? parseInt(value) : parseFloat(value)\n\t\tpath.model.set(path, parsed)\n\t}\n\tconst onColor = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = parseInt(value.slice(1), 16)\n\t\tpath.model.set(path, parsed)\n\t}\n\treturn <>\n\t\t {if (evt.key === 'Enter') onChange(evt)}} />\n\t\t{config?.color && }\n\t\t{['dimension.generator.seed', 'dimension.generator.biome_source.seed', 'world_settings.seed'].includes(path.getContext().join('.')) && }\n\t\n}\n\nfunction StringSuffix({ path, getValues, config, node, value, lang, states }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tevt.stopPropagation()\n\t\tconst newValue = (evt.target as HTMLSelectElement).value\n\t\tif (newValue === value) return\n\t\tpath.model.set(path, newValue.length === 0 ? undefined : newValue)\n\t}\n\tconst values = getValues()\n\tconst context = path.getContext().join('.')\n\tif (nbtFields.includes(context)) {\n\t\treturn \n\t} else if ((isEnum(config) && !config.additional) || selectRegistries.includes(context)) {\n\t\tlet context = new Path([])\n\t\tif (isEnum(config) && typeof config.enum === 'string') {\n\t\t\tcontext = context.contextPush(config.enum)\n\t\t} else if (!isEnum(config) && config?.validator === 'resource' && typeof config.params.pool === 'string') {\n\t\t\tcontext = context.contextPush(config.params.pool)\n\t\t} else if (isEnum(config)) {\n\t\t\tcontext = path\n\t\t}\n\t\treturn \n\t} else if (!isEnum(config) && config?.validator === 'block_state_key') {\n\t\tconst blockState = states?.[relativePath(path, config.params.id).get()]\n\t\tconst values = Object.keys(blockState?.properties ?? {})\n\t\treturn \n\t} else {\n\t\tconst datalistId = hexId()\n\t\treturn <>\n\t\t\t {if (evt.key === 'Enter') onChange(evt)}}\n\t\t\t\tlist={values.length > 0 ? datalistId : ''} />\n\t\t\t{values.length > 0 && \n\t\t\t\t{values.map(v => }\n\t\t\n\t}\n}\n\ntype MenuAction = {\n\tlabel: string,\n\tdescription?: string,\n\ticon: keyof typeof Octicon,\n\tonSelect: () => unknown,\n}\n\ntype TreeNodeProps = {\n\tschema: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n\tcompare?: any,\n\tlabel?: string,\n\tactions?: MenuAction[],\n\tchildren?: ComponentChildren,\n}\nfunction TreeNode({ label, schema, path, value, lang, states, ctx, actions, children }: TreeNodeProps) {\n\tconst type = schema.type(path)\n\tconst category = schema.category(path)\n\tconst context = path.getContext().join('.')\n\n\tconst [active, setActive] = useFocus()\n\tconst onContextMenu = (evt: MouseEvent) => {\n\t\tevt.preventDefault()\n\t\tsetActive()\n\t}\n\n\tconst newCtx: Record = { ...ctx, depth: (ctx.depth ?? 0) + 1 }\n\tdelete newCtx.index\n\tconst [prefix, suffix, body] = schema.hook(renderHtml, path, value, lang, states, newCtx)\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t{children}\n\t\t\t{prefix}\n\t\t\t\n\t\t\t{suffix}\n\t\t
\n\t\t{body &&
{body}
}\n\t
\n}\n\nconst MemoedTreeNode = memo(TreeNode, (prev, next) => {\n\treturn prev.schema === next.schema\n\t\t&& prev.lang === next.lang\n\t\t&& prev.path.equals(next.path)\n\t\t&& deepEqual(prev.ctx, next.ctx)\n\t\t&& deepEqual(prev.value, next.value)\n})\n\nfunction isEnum(value?: ValidationOption | EnumOption): value is EnumOption {\n\treturn !!(value as any)?.enum\n}\n\nfunction hashString(str: string) {\n\tvar hash = 0, i, chr\n\tfor (i = 0; i < str.length; i++) {\n\t\tchr = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + chr\n\t\thash |= 0\n\t}\n\treturn hash\n}\n\nfunction pathLocale(lang: string, path: Path, ...params: string[]) {\n\tconst ctx = path.getContext()\n\tfor (let i = 0; i < ctx.length; i += 1) {\n\t\tconst key = ctx.slice(i).join('.')\n\t\tconst result = locale(lang, key, ...params)\n\t\tif (key !== result) {\n\t\t\treturn result\n\t\t}\n\t}\n\treturn ctx[ctx.length - 1]\n}\n\nfunction ErrorPopup({ lang, path, nested }: { lang: string, path: ModelPath, nested?: boolean }) {\n\tif (path.model instanceof ModelWrapper) {\n\t\tpath = path.model.map(path).withModel(path.model)\n\t}\n\tconst e = nested\n\t\t?\tpath.model.errors.getAll().filter(e => e.path.startsWith(path))\n\t\t: path.model.errors.get(path, true)\n\tif (e.length === 0) return null\n\tconst message = locale(lang, e[0].error, ...(e[0].params ?? []))\n\treturn popupIcon('node-error', 'issue_opened', message)\n}\n\nfunction HelpPopup({ lang, path }: { lang: string, path: Path }) {\n\tconst key = path.contextPush('help').getContext().join('.')\n\tconst message = locale(lang, key)\n\tif (message === key) return null\n\treturn popupIcon('node-help', 'info', message)\n}\n\nconst popupIcon = (type: string, icon: keyof typeof Octicon, popup: string) => {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t{Octicon[icon]}\n\t\t{popup}\n\t
\n}\n\nfunction isDecorated(context: string | undefined, value: any) {\n\treturn context === 'feature'\n\t\t&& value?.type?.replace(/^minecraft:/, '') === 'decorated'\n\t\t&& isObject(value?.config)\n}\n\nfunction createDecoratorsWrapper(originalFields: NodeChildren, path: ModelPath, value: any) {\n\tconst decorators: any[] = []\n\tconst feature = iterateNestedDecorators(value, decorators)\n\tconst fields = {\n\t\ttype: originalFields.type,\n\t\tconfig: ObjectNode({\n\t\t\tdecorators: ListNode(CachedDecorator),\n\t\t\tfeature: CachedFeature,\n\t\t}, { context: 'feature.decorated' }),\n\t}\n\tconst schema = ObjectNode(fields, { context: 'feature' })\n\tconst featurePath = new Path(['config', 'feature'])\n\tconst decoratorsPath = new Path(['config', 'decorators'])\n\tconst model = path.getModel()\n\tconst wrapper: ModelWrapper = new ModelWrapper(schema, path => {\n\t\tif (path.startsWith(featurePath)) {\n\t\t\treturn new Path([...[...Array(decorators.length - 1)].flatMap(() => ['config', 'feature']), ...path.modelArr])\n\t\t} else if (path.startsWith(decoratorsPath)) {\n\t\t\tif (path.modelArr.length === 2) {\n\t\t\t\treturn new Path([])\n\t\t\t}\n\t\t\tconst index = path.modelArr[2]\n\t\t\tif (typeof index === 'number') {\n\t\t\t\treturn new Path([...[...Array(index)].flatMap(() => ['config', 'feature']), 'config', 'decorator', ...path.modelArr.slice(3)])\n\t\t\t}\n\t\t}\n\t\treturn path\n\t}, path => {\n\t\tif (path.equals(decoratorsPath)) {\n\t\t\tconst newDecorators: any[] = []\n\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\treturn newDecorators\n\t\t}\n\t\treturn model.get(wrapper.map(path))\n\t}, (path, value, silent) => {\n\t\tif (path.startsWith(featurePath)) {\n\t\t\tconst newDecorators: any[] = []\n\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\tconst newPath =new Path([...[...Array(newDecorators.length - 1)].flatMap(() => ['config', 'feature']), ...path.modelArr])\n\t\t\treturn model.set(newPath, value, silent)\n\t\t} else if (path.startsWith(decoratorsPath)) {\n\t\t\tconst index = path.modelArr[2]\n\t\t\tif (path.modelArr.length === 2) {\n\t\t\t\tconst feature = wrapper.get(featurePath)\n\t\t\t\treturn model.set(new Path(), produceNestedDecorators(feature, value), silent)\n\t\t\t} else if (typeof index === 'number') {\n\t\t\t\tif (path.modelArr.length === 3 && value === undefined) {\n\t\t\t\t\tconst feature = wrapper.get(featurePath)\n\t\t\t\t\tconst newDecorators: any[] = []\n\t\t\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\t\t\tnewDecorators.splice(index, 1)\n\t\t\t\t\tconst newValue = produceNestedDecorators(feature, newDecorators)\n\t\t\t\t\treturn model.set(new Path(), newValue, silent)\n\t\t\t\t} else {\n\t\t\t\t\tconst newPath = new Path([...[...Array(index)].flatMap(() => ['config', 'feature']), 'config', 'decorator', ...path.modelArr.slice(3)])\n\t\t\t\t\treturn model.set(newPath, value, silent)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tmodel.set(path, value, silent)\n\t})\n\twrapper.data = {\n\t\ttype: model.data.type,\n\t\tconfig: {\n\t\t\tdecorators,\n\t\t\tfeature,\n\t\t},\n\t}\n\twrapper.errors = model.errors\n\treturn { fields, wrapper }\n}\n\nfunction iterateNestedDecorators(value: any, decorators: any[]): any {\n\tif (value?.type?.replace(/^minecraft:/, '') !== 'decorated') {\n\t\treturn value\n\t}\n\tif (!isObject(value?.config)) {\n\t\treturn value\n\t}\n\tdecorators.push({ id: decorators.length, node: value.config.decorator })\n\treturn iterateNestedDecorators(value.config.feature ?? '', decorators)\n}\n\nfunction produceNestedDecorators(feature: any, decorators: any[]): any {\n\tif (decorators.length === 0) return feature\n\treturn {\n\t\ttype: 'minecraft:decorated',\n\t\tconfig: {\n\t\t\tdecorator: decorators.shift().node,\n\t\t\tfeature: produceNestedDecorators(feature, decorators),\n\t\t},\n\t}\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useErrorBoundary, useState } from 'preact/hooks'\nimport { useModel } from '../../hooks'\nimport { FullNode } from '../../schema/renderHtml'\nimport type { BlockStateRegistry, VersionId } from '../../Schemas'\n\ntype TreePanelProps = {\n\tlang: string,\n\tversion: VersionId,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tonError: (message: string) => unknown,\n}\nexport function Tree({ lang, model, blockStates, onError }: TreePanelProps) {\n\tif (!model || !blockStates || lang === 'none') return <>\n\n\tconst [error] = useErrorBoundary(e => {\n\t\tonError(`Error rendering the tree: ${e.message}`)\n\t\tconsole.error(e)\n\t})\n\tif (error) return <>\n\n\tconst [, setState] = useState(0)\n\tuseModel(model, () => {\n\t\tsetState(state => state + 1)\n\t})\n\n\treturn
\n\t\t\n\t
\n}\n","import { getCurrentUrl, Link, route } from 'preact-router'\nimport { Btn, BtnMenu, Icons, Octicon } from '.'\nimport config from '../../config.json'\nimport { locale } from '../Locales'\nimport type { VersionId } from '../Schemas'\nimport { checkVersion } from '../Schemas'\nimport { cleanUrl, getGenerator } from '../Utils'\n\nconst Themes: Record = {\n\tsystem: 'device_desktop',\n\tdark: 'moon',\n\tlight: 'sun',\n}\n\ntype HeaderProps = {\n\tlang: string,\n\ttitle: string,\n\tversion: VersionId,\n\ttheme: string,\n\tchangeTheme: (theme: string) => unknown,\n\tlanguage: string,\n\tchangeLanguage: (language: string) => unknown,\n}\nexport function Header({ lang, title, version, theme, changeTheme, language, changeLanguage }: HeaderProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst gen = getGenerator(getCurrentUrl())\n\n\treturn
\n\t\t
\n\t\t\t{Icons.home}\n\t\t\t

{title}

\n\t\t\t{gen && \n\t\t\t\t{config.generators\n\t\t\t\t\t.filter(g => g.category === gen?.category && checkVersion(version, g.minVersion))\n\t\t\t\t\t.map(g =>\n\t\t\t\t\t\t route(cleanUrl(g.url))} />\n\t\t\t\t\t)}\n\t\t\t}\n\t\t
\n\t\t\n\t
\n}\n","export const Icons = {\n\thome: ,\n\treport: ,\n\tsounds: ,\n}\n","import { Howl } from 'howler'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, NumberInput, RangeInput, TextInput } from '..'\nimport { getResourceUrl } from '../../DataFetcher'\nimport { locale } from '../../Locales'\nimport type { SoundEvents, VersionAssets } from '../../Manifest'\n\nexport interface SoundConfig {\n\tid: string,\n\tsound: string,\n\tdelay: number,\n\tpitch: number,\n\tvolume: number,\n}\ntype SoundConfigProps = SoundConfig & {\n\tlang: string,\n\tassets: VersionAssets,\n\tsounds: SoundEvents,\n\tonEdit: (changes: Partial) => unknown,\n\tonDelete: () => unknown,\n\tdelayedPlay?: number,\n}\nexport function SoundConfig({ lang, assets, sounds, sound, delay, pitch, volume, onEdit, onDelete, delayedPlay }: SoundConfigProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [loading, setLoading] = useState(true)\n\tconst [playing, setPlaying] = useState(false)\n\tconst [invalid, setInvalid] = useState(false)\n\tconst howls = useRef([])\n\tconst command = `playsound minecraft:${sound} master @s ~ ~ ~ ${volume} ${pitch}`\n\n\tuseEffect(() => {\n\t\tconst soundEvent = sounds[sound]\n\t\tsetInvalid((soundEvent?.sounds?.length ?? 0) === 0)\n\t\thowls.current.forEach(h => h.stop())\n\t\thowls.current = (soundEvent?.sounds ?? []).map(entry => {\n\t\t\tconst soundPath = typeof entry === 'string' ? entry : entry.name\n\t\t\tconst hash = assets[`minecraft/sounds/${soundPath}.ogg`].hash\n\t\t\tconst url = getResourceUrl(hash)\n\t\t\tconst howl = new Howl({\n\t\t\t\tsrc: [url],\n\t\t\t\tformat: ['ogg'],\n\t\t\t\tvolume,\n\t\t\t\trate: pitch,\n\t\t\t})\n\t\t\thowl.on('end', () => {\n\t\t\t\tsetPlaying(false)\n\t\t\t})\n\t\t\tconst completed = () => {\n\t\t\t\tif (loading && howls.current.every(h => h.state() === 'loaded')) {\n\t\t\t\t\tsetLoading(false)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (howl.state() === 'loaded') {\n\t\t\t\tsetTimeout(() => completed())\n\t\t\t} else {\n\t\t\t\thowl.on('load', () => {\n\t\t\t\t\tcompleted()\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn howl\n\t\t})\n\t\tsetLoading(true)\n\t}, [sound, sounds])\n\n\tuseEffect(() => {\n\t\thowls.current.forEach(h => h.rate(pitch))\n\t}, [pitch])\n\n\tuseEffect(() => {\n\t\thowls.current.forEach(h => h.volume(volume))\n\t}, [volume])\n\n\tconst play = () => {\n\t\tif (loading || invalid) return\n\t\tstop()\n\t\tconst howl = Math.floor(Math.random() * howls.current.length)\n\t\thowls.current[howl].play()\n\t\tsetPlaying(true)\n\t}\n\tconst stop = () => {\n\t\thowls.current.forEach(h => h.stop())\n\t}\n\tuseEffect(() => {\n\t\tif (delayedPlay) setTimeout(() => play(), delay * 50)\n\t}, [delayedPlay])\n\n\tuseEffect(() => {\n\t\treturn () => stop()\n\t}, [])\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copy = () => {\n\t\tnavigator.clipboard.writeText(command)\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000) as any\n\t}\n\n\treturn
\n\t\t\n\t\t onEdit({ sound })} />\n\t\t\n\t\t onEdit({ delay })} />\n\t\t\n\t\t onEdit({ pitch })} />\n\t\t\n\t\t onEdit({ volume })} />\n\t\t\n\t\t {onDelete(); stop()}} />\n\t
\n}\n","import type { ComponentChildren } from 'preact'\nimport { Icons } from './Icons'\n\ntype ToolCardProps = {\n\ttitle: string,\n\tlink: string,\n\ticon?: keyof typeof Icons,\n\tchildren?: ComponentChildren,\n}\nexport function ToolCard({ title, link, icon, children }: ToolCardProps) {\n\treturn \n\t\t{icon && Icons[icon]}\n\t\t
\n\t\t\t

{title}

\n\t\t\t{children}\n\t\t
\n\t
\n}\n","const repo = 'https://raw.githubusercontent.com/misode/technical-changes/main'\n\nexport type ChangelogEntry = {\n\tgroup: string,\n\tversion: string,\n\ttags: string[],\n\tcontent: string,\n}\n\nlet Changelogs: ChangelogEntry[] | Promise | null = null\n\nexport async function getChangelogs() {\n\tif (!Changelogs) {\n\t\tconst index = await (await fetch(`${repo}/index.json`)).json() as string[]\n\t\tChangelogs = (await Promise.all(\n\t\t\tindex.map(group => fetchGroup(group))\n\t\t)).flat()\n\t}\n\treturn Changelogs\n}\n\nasync function fetchGroup(group: string) {\n\tconst index = await (await fetch(`${repo}/${group}/index.json`)).json() as string[]\n\treturn (await Promise.all(\n\t\tindex.map(version => fetchChangelog(group, version))\n\t)).flat()\n}\n\nasync function fetchChangelog(group: string, version: string) {\n\tconst text = await (await fetch(`${repo}/${group}/${version}.md`)).text()\n\treturn parseChangelog(text).map(change => ({\n\t\tversion,\n\t\tgroup,\n\t\t...change,\n\t}))\n}\n\nfunction parseChangelog(text: string) {\n\treturn text.split('\\n\\n')\n\t\t.map(entry => {\n\t\t\tconst i = entry.indexOf('|')\n\t\t\treturn {\n\t\t\t\ttags: entry.substring(0, i).trim().split(' '),\n\t\t\t\tcontent: entry.slice(i + 1).trim(),\n\t\t\t}\n\t\t})\n}\n","import marked from 'marked'\nimport { useEffect, useMemo, useState } from 'preact/hooks'\nimport { Ad, ErrorPanel, TextInput } from '../components'\nimport { locale } from '../Locales'\nimport type { VersionId } from '../Schemas'\nimport type { ChangelogEntry } from '../services/Changelogs'\nimport { getChangelogs } from '../services/Changelogs'\nimport { hashString } from '../Utils'\n\ntype ChangelogProps = {\n\tpath?: string,\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n}\nexport function Changelog({ lang, changeTitle }: ChangelogProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tchangeTitle(loc('title.changelog'))\n\n\tconst [changelogs, setChangelogs] = useState([])\n\tuseEffect(() => {\n\t\tgetChangelogs()\n\t\t\t.then(changelogs => setChangelogs(changelogs))\n\t\t\t.catch(e => { console.error(e); setError(e) })\n\t}, [])\n\n\tconst [search, setSearch] = useState('')\n\tconst [tags, setTags] = useState([])\n\tconst addTag = (tag: string) => {\n\t\tif (!tags.includes(tag)) {\n\t\t\tsetTags([...tags, tag])\n\t\t}\n\t}\n\n\tconst filteredChangelogs = useMemo(() => {\n\t\tconst query = search.split(' ').map(q => q.trim().toLowerCase()).filter(q => q.length > 0)\n\t\tif (query.length === 0 && tags.length === 0) return changelogs\n\t\treturn changelogs.filter(change => {\n\t\t\tif (!tags.every(tag => change.tags.includes(tag))) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst content = change.tags.join(' ') + ' ' + change.content.toLowerCase()\n\t\t\treturn query.every(q => content.includes(q))\n\t\t})\n\t}, [changelogs, search, tags])\n\n\treturn
\n\t\t\n\t\t{error && setError(null)} />}\n\t\t
\n\t\t\t\n\t\t\t{tags.length > 0 &&
\n\t\t\t\t{tags.map(tag => setTags(tags.filter(t => t !== tag))} />)}\n\t\t\t
}\n\t\t
\n\t\t
\n\t\t\t{filteredChangelogs.map(change =>\n\t\t\t\t)}\n\t\t
\n\t
\n}\n\ntype ChangeProps = {\n\tchange: ChangelogEntry,\n\tactiveTags: string[],\n\taddTag: (tag: string) => unknown,\n}\nfunction Change({ change, activeTags, addTag }: ChangeProps) {\n\treturn
\n\t\t
\n\t\t\t{change.tags.map(tag => addTag(tag)} active={activeTags.includes(tag)} />)}\n\t\t\t{change.version}\n\t\t
\n\t\t
\n\t
\n}\n\ntype TagProps = {\n\tlabel: string,\n\tactive?: boolean,\n\tonClick?: () => unknown,\n}\nfunction Tag({ label, active, onClick }: TagProps) {\n\tconst color = hashString(label) % 360\n\treturn
{label}
\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport { getCurrentUrl } from 'preact-router'\nimport { useEffect, useErrorBoundary, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Analytics } from '../Analytics'\nimport { Ad, Btn, BtnInput, BtnMenu, ErrorPanel, HasPreview, Octicon, PreviewPanel, SourcePanel, Tree } from '../components'\nimport { fetchPreset } from '../DataFetcher'\nimport { useModel } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry, VersionId } from '../Schemas'\nimport { checkVersion, getBlockStates, getCollections, getModel } from '../Schemas'\nimport { getGenerator, message } from '../Utils'\n\ntype GeneratorProps = {\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tchangeVersion: (version: VersionId) => unknown,\n\tdefault?: true,\n}\nexport function Generator({ lang, changeTitle, version, changeVersion }: GeneratorProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tconst [errorBoundary, errorRetry] = useErrorBoundary()\n\tif (errorBoundary) {\n\t\treturn
\n\t}\n\n\tconst gen = getGenerator(getCurrentUrl())\n\tif (!gen) {\n\t\treturn
\n\t}\n\n\tconst allowedVersions = config.versions\n\t\t.filter(v => checkVersion(v.id, gen.minVersion, gen.maxVersion))\n\t\t.map(v => v.id as VersionId)\n\n\tchangeTitle(loc('title.generator', loc(gen.id)), allowedVersions)\n\n\tif (!checkVersion(version, gen.minVersion)) {\n\t\tsetError(`The minimum version for this generator is ${gen.minVersion}`)\n\t}\n\n\tconst [model, setModel] = useState(null)\n\tconst [blockStates, setBlockStates] = useState(null)\n\tuseEffect(() => {\n\t\tsetError(null)\n\t\tsetModel(null)\n\t\tgetBlockStates(version)\n\t\t\t.then(b => setBlockStates(b))\n\t\tgetModel(version, gen.id)\n\t\t\t.then(m => {\n\t\t\t\tAnalytics.setGenerator(gen.id)\n\t\t\t\tsetModel(m)\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(message(e)) })\n\t}, [version, gen.id])\n\n\tuseModel(model, () => {\n\t\tsetError(null)\n\t})\n\n\tconst reset = () => {\n\t\tAnalytics.generatorEvent('reset')\n\t\tmodel?.reset(DataModel.wrapLists(model.schema.default()), true)\n\t}\n\tconst undo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('undo', 'Menu')\n\t\tmodel?.undo()\n\t}\n\tconst redo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('redo', 'Menu')\n\t\tmodel?.redo()\n\t}\n\n\tconst onKeyUp = (e: KeyboardEvent) => {\n\t\tif (e.ctrlKey && e.key === 'z') {\n\t\t\tAnalytics.generatorEvent('undo', 'Hotkey')\n\t\t\tmodel?.undo()\n\t\t} else if (e.ctrlKey && e.key === 'y') {\n\t\t\tAnalytics.generatorEvent('redo', 'Hotkey')\n\t\t\tmodel?.redo()\n\t\t}\n\t}\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keyup', onKeyUp)\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keyup', onKeyUp)\n\t\t}\n\t}, [model])\n\n\tconst [presetFilter, setPresetFilter] = useState('')\n\tconst [presetResults, setPresetResults] = useState([])\n\tuseEffect(() => {\n\t\tgetCollections(version)\n\t\t\t.then(collections => {\n\t\t\t\tconst terms = (presetFilter ?? '').trim().split(' ')\n\t\t\t\tconst presets = collections.get(gen.id)\n\t\t\t\t\t.map(p => p.slice(10))\n\t\t\t\t\t.filter(p => terms.every(t => p.includes(t)))\n\t\t\t\tif (presets) {\n\t\t\t\t\tsetPresetResults(presets)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(e.message) })\n\t}, [version, gen.id, presetFilter])\n\n\tconst loadPreset = (id: string) => {\n\t\tAnalytics.generatorEvent('load-preset', id)\n\t\tfetchPreset(version, gen.path ?? gen.id, id).then(preset => {\n\t\t\tconst seed = model?.get(new Path(['generator', 'seed']))\n\t\t\tif (preset?.generator?.seed !== undefined && seed !== undefined) {\n\t\t\t\tpreset.generator.seed = seed\n\t\t\t\tif (preset.generator.biome_source?.seed !== undefined) {\n\t\t\t\t\tpreset.generator.biome_source.seed = seed\n\t\t\t\t}\n\t\t\t}\n\t\t\tmodel?.reset(DataModel.wrapLists(preset), false)\n\t\t})\n\t}\n\n\tconst [sourceShown, setSourceShown] = useState(window.innerWidth > 820)\n\tconst [doCopy, setCopy] = useState(0)\n\tconst [doDownload, setDownload] = useState(0)\n\tconst [doImport, setImport] = useState(0)\n\n\tconst copySource = () => {\n\t\tAnalytics.generatorEvent('copy')\n\t\tsetCopy(doCopy + 1)\n\t}\n\tconst downloadSource = () => {\n\t\tAnalytics.generatorEvent('download')\n\t\tsetDownload(doDownload + 1)\n\t}\n\tconst importSource = () => {\n\t\tAnalytics.generatorEvent('import')\n\t\tsetSourceShown(true)\n\t\tsetImport(doImport + 1)\n\t}\n\tconst toggleSource = () => {\n\t\tAnalytics.generatorEvent('toggle-output', !sourceShown ? 'visible' : 'hidden')\n\t\tsetSourceShown(!sourceShown)\n\t\tsetCopy(0)\n\t\tsetDownload(0)\n\t\tsetImport(0)\n\t}\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copySuccess = () => {\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000) as any\n\t}\n\n\tconst [previewShown, setPreviewShown] = useState(false)\n\tconst hasPreview = HasPreview.includes(gen.id)\n\tif (previewShown && !hasPreview) setPreviewShown(false)\n\tlet actionsShown = 1\n\tif (hasPreview) actionsShown += 1\n\tif (sourceShown) actionsShown += 2\n\n\tconst togglePreview = () => {\n\t\tAnalytics.generatorEvent('toggle-preview', !previewShown ? 'visible' : 'hidden')\n\t\tsetPreviewShown(!previewShown)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{presetResults.map(preset => loadPreset(preset)} />)}\n\t\t\t\t\t
\n\t\t\t\t\t{presetResults.length === 0 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{allowedVersions.reverse().map(v =>\n\t\t\t\t\t\t changeVersion(v)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t{error && setError(null)} />}\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t{previewShown ? Octicon.x_circle : Octicon.play}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{Octicon.download}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{copyActive ? Octicon.check : Octicon.clippy}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{sourceShown ? Octicon.chevron_right : Octicon.code}\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype HomeProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Home({ lang, changeTitle }: HomeProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.home'))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => !g.category).map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t

Analyse your performance reports

\n\t\t\t
\n\t\t\t\n\t\t\t\t

Browse through and mix all the vanilla sounds

\n\t\t\t
\n\t\t\t\n\t\t\t\t

Convert your 1.16 data packs to 1.17

\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n}\n","import { fetchAssets, fetchManifest, fetchSounds } from './DataFetcher'\nimport type { VersionId } from './Schemas'\n\nexport type VersionManifest = {\n\tlatest: {\n\t\trelease: string,\n\t\tsnapshot: string,\n\t},\n\tversions: {\n\t\tid: string,\n\t\ttype: string,\n\t\turl: string,\n\t}[],\n}\nlet Manifest: VersionManifest | Promise | null = null\n\nexport type VersionAssets = {\n\t[key: string]: {\n\t\thash: string,\n\t},\n}\nconst VersionAssets: Record> = {}\n\nexport type SoundEvents = {\n\t[key: string]: {\n\t\tsounds: (string | { name: string })[],\n\t},\n}\nconst SoundEvents: Record> = {}\n\nexport async function getManifest() {\n\tif (!Manifest) {\n\t\tManifest = fetchManifest()\n\t}\n\treturn Manifest\n}\n\nexport async function getAssets(version: VersionId) {\n\tif (!VersionAssets[version]) {\n\t\tVersionAssets[version] = (async () => {\n\t\t\tconst manifest = await getManifest()\n\t\t\treturn await fetchAssets(version, manifest)\n\t\t})()\n\t}\n\treturn VersionAssets[version]\n}\n\nexport async function getSounds(version: VersionId) {\n\tif (!SoundEvents[version]) {\n\t\tSoundEvents[version] = (async () => {\n\t\t\tconst assets = await getAssets(version)\n\t\t\treturn await fetchSounds(version, assets)\n\t\t})()\n\t}\n\treturn SoundEvents[version]\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Ad, Btn, BtnMenu, ErrorPanel, SoundConfig, TextInput } from '../components'\nimport { locale } from '../Locales'\nimport type { SoundEvents, VersionAssets } from '../Manifest'\nimport { getAssets, getSounds } from '../Manifest'\nimport type { VersionId } from '../Schemas'\nimport { hexId, message } from '../Utils'\n\ntype SoundsProps = {\n\tpath?: string,\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tchangeVersion: (version: VersionId) => unknown,\n}\nexport function Sounds({ lang, changeTitle, version, changeVersion }: SoundsProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tchangeTitle(loc('title.sounds'))\n\n\tconst [assets, setAssets] = useState({})\n\tconst [sounds, setSounds] = useState({})\n\tconst soundKeys = Object.keys(sounds ?? {})\n\tuseEffect(() => {\n\t\tgetAssets(version)\n\t\t\t.then(assets => { setAssets(assets); return getSounds(version) })\n\t\t\t.then(sounds => { if (sounds) setSounds(sounds) })\n\t\t\t.catch(e => { console.error(e); setError(message(e)) })\n\t}, [version])\n\n\tconst [search, setSearch] = useState('')\n\tconst [configs, setConfigs] = useState([])\n\tconst addConfig = () => {\n\t\tsetConfigs([{ id: hexId(), sound: search, delay: 0, pitch: 1, volume: 1 }, ...configs])\n\t}\n\tconst editConfig = (id: string) => (changes: Partial) => {\n\t\tsetConfigs(configs.map(c => c.id === id ? { ...c, ...changes } : c))\n\t}\n\tconst deleteConfig = (id: string) => () => {\n\t\tsetConfigs(configs.filter(c => c.id !== id))\n\t}\n\n\tconst [delayedPlay, setDelayedPlay] = useState(0)\n\tconst playAll = () => {\n\t\tsetDelayedPlay(delayedPlay + 1)\n\t}\n\n\tconst download = useRef(null)\n\tconst downloadFunction = () => {\n\t\tconst hasDelay = configs.some(c => c.delay > 0)\n\t\tconst content = configs\n\t\t\t.sort((a, b) => a.delay - b.delay)\n\t\t\t.map(c => `${hasDelay ? `execute if score @s delay matches ${c.delay} run ` : ''}playsound minecraft:${c.sound} master @s ~ ~ ~ ${c.volume} ${c.pitch}`)\n\t\t\t.join('\\n')\n\t\tdownload.current.setAttribute('href', 'data:text/plain;charset=utf-8,' + content + '%0A')\n\t\tdownload.current.setAttribute('download', 'sounds.mcfunction')\n\t\tdownload.current.click()\n\t}\n\n\treturn
\n\t\t\n\t\t{error && setError(null)} />}\n\t\t{soundKeys.length > 0 && <>\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{configs.length > 1 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{config.versions.reverse().map(v =>\n\t\t\t\t\t\t changeVersion(v.id as VersionId)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t{configs.map(c => )}\n\t\t\t
\n\t\t\t\n\t\t}\n\t\t\n\t\t\t{soundKeys.map(s => \n\t
\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype WorldgenProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Worldgen({ lang, changeTitle }: WorldgenProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.generator_category', loc('worldgen')))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => g.category === 'worldgen').map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t
\n}\n","import { render } from 'preact'\nimport type { RouterOnChangeArgs } from 'preact-router'\nimport { Router } from 'preact-router'\nimport { useEffect, useState } from 'preact/hooks'\nimport config from '../config.json'\nimport '../styles/global.css'\nimport '../styles/nodes.css'\nimport { Analytics } from './Analytics'\nimport { Header } from './components'\nimport { loadLocale, locale, Locales } from './Locales'\nimport { Changelog, Generator, Home, Sounds, Worldgen } from './pages'\nimport type { VersionId } from './Schemas'\nimport { Store } from './Store'\nimport { cleanUrl } from './Utils'\n\nconst VERSIONS_IN_TITLE = 3\n\nfunction Main() {\n\tconst [lang, setLanguage] = useState('none')\n\tconst changeLanguage = async (language: string) => {\n\t\tif (!Locales[language]) {\n\t\t\tawait loadLocale(language)\n\t\t}\n\t\tAnalytics.setLanguage(language)\n\t\tStore.setLanguage(language)\n\t\tsetLanguage(language)\n\t}\n\tuseEffect(() => {\n\t\t(async () => {\n\t\t\tconst target = Store.getLanguage()\n\t\t\tawait Promise.all([\n\t\t\t\tloadLocale('en'),\n\t\t\t\t...(target !== 'en' ? [loadLocale(target)] : []),\n\t\t\t])\n\t\t\tsetLanguage(target)\n\t\t})()\n\t}, [])\n\n\tconst [theme, setTheme] = useState(Store.getTheme())\n\tconst changeTheme = (theme: string) => {\n\t\tAnalytics.setTheme(theme)\n\t\tStore.setTheme(theme)\n\t\tsetTheme(theme)\n\t}\n\tuseEffect(() => {\n\t\tdocument.documentElement.setAttribute('data-theme', theme)\n\t}, [theme])\n\n\tconst [version, setVersion] = useState(Store.getVersion())\n\tconst changeVersion = (version: VersionId) => {\n\t\tAnalytics.setVersion(version)\n\t\tStore.setVersion(version)\n\t\tsetVersion(version)\n\t}\n\n\tconst [title, setTitle] = useState(locale(lang, 'title.home'))\n\tconst changeTitle = (title: string, versions?: VersionId[]) => {\n\t\tversions ??= config.versions.map(v => v.id as VersionId)\n\t\tversions.splice(0, versions.length - VERSIONS_IN_TITLE)\n\t\tdocument.title = `${title} Minecraft ${versions.join(', ')}`\n\t\tsetTitle(title)\n\t}\n\n\tconst changeRoute = (e: RouterOnChangeArgs) => {\n\t\t// Needs a timeout to ensure the title is set correctly\n\t\tsetTimeout(() => Analytics.pageview(cleanUrl(e.url)))\n\t}\n\n\treturn <>\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n}\n\nrender(
, document.body)\n"],"names":["Analytics","type","id","getElementById","remove","window","load","data-ea-publisher","data-ea-type","class","icon","label","active","clazz","tooltip","tooltipLoc","onClick","aria-label","Octicon","large","doSelect","value","placeholder","onChange","onInput","e","value2","target","ref","useRef","current","select","stopPropagation","size","draw","onDrag","onHover","onLeave","inputs","canvas","dragStart","dragRequest","dragPending","dragBusy","onMouseDown","offsetX","offsetY","onMouseMove","x","clientWidth","y2","clientHeight","dx","dy","requestAnimationFrame","async","dx2","dy2","onMouseUp","onMouseLeave","addEventListener","body","removeEventListener","redraw","redrawCount","ctx","getContext","s2","width","height","img","getImageData","ownCount","putImageData","setActive","useState","hider","model","invalidated","listener","[object Object]","addListener","removeListener","relative","children","useFocus","Btn","__spreadProps","Analytics2","ID_SITE","ID_GENERATOR","category","action","index","pageview","page","setLanguage","language","setTheme","theme","setVersion","version","setPreview","preview","setGenerator","generator","generatorEvent","alert","xmlns","viewBox","fill-rule","d","archive","arrow_left","arrow_right","check","chevron_down","chevron_right","chevron_up","clippy","code","dash","device_desktop","download","duplicate","eye","eye_closed","gear","globe","history","info","issue_opened","kebab_horizontal","link","mark_github","moon","play","plus","plus_circle","search","stack","sun","sync","tag","terminal","three_bars","trashcan","unfold","upload","x_circle","error","onDismiss","href","component","props","evt","fn","onKeyDown","onEnter","key","__spreadValues","displayName","name","TextInput","BaseInput","v","NumberInput","Number","RangeInput","scriptRel","seen","__vitePreload","baseModule","deps","relList","document","createElement","supports","Promise","all","map","dep","isCss","endsWith","cssSelector","querySelector","rel","as","crossOrigin","head","appendChild","res","rej","then","Locales","fallback","English","params","replace","parseInt","match","slice","resolveLocaleParams","en","langConfig","config","languages","find","lang","data","__variableDynamicImportRuntime0__","schema","schemas","__variableDynamicImportRuntime1__","default","obj","dec2hex","dec","toString","substr","length","arr","Uint8Array","crypto","getRandomValues","Array","from","join","BigInt","Math","floor","random","MAX_SAFE_INTEGER","seed","dimensions","get","Path","set","keys","forEach","h","i","imul","charCodeAt","url","replaceAll","trimmedUrl","generators","g2","str","abs","hashString","a2","b","c","max","min","lerp","Error","message","deepClone","rfdc","constructor","isArray","deepEqual","valueOf","Object","prototype","hasOwnProperty","call","forward","Map","backward","this","defaultValue","VersionIds","Versions","Models","versionGetter","1.15","java15","1.16","java16","1.17","java17","1.18","java18","CachedDecorator","CachedFeature","collections","getCollections","blockStates","versionId","collectionTarget","blockStateTarget","versions","JSON","stringify","debug","dynamic","refs","filter","localStorage","getItem","r","hash","matches","cache","caches","open","promises","request","push","delete","warn","deleteMatching","startsWith","setItem","fetchRegistries","fetchBlockStateMap","fetchDynamicRegistries","fetchData","getSchemas","minVersionId","maxVersionId","findIndex","minVersion","maxVersion","removeItem","mcdataUrl","vanillaDatapackUrl","registries","checkVersion","mcdata_master","getData","data2","k","entries","register","path","values","properties","states","assign","vanilla_datapack_summary","Noises","registry","versionData","vanilla_datapack_data","fetch","text","parse","noise","terrain_shaper","offset","factor","jaggedness","json","cacheResponse","ok","fetchResponse","responseData","put","Response","ready","LAYERS","temperature","humidity","continentalness","erosion","weirdness","cacheState","biomeSourceCache","state","options","newState","octaves","shaper","toJson","FixedBiome","biome","shift","scale","numBiomes","biomes","_y","z","node","preset","NetherPreset18","NetherPreset","fetchPreset","biome_source","OverworldPreset18","DataModel","unwrapLists","init","wasm","loadWasm","BiomeIds","BiMap","param","p","t0","t1","h0","h1","c0","c1","e0","e1","w0","w1","d0","d1","o","depth","parameters","getOrPut","biome_parameters","Float64Array","Int32Array","sampler","climate_sampler","firstOctave","amplitudes","ids","multi_noise","getA","getBiomes","xFrom","xTo","xStep","yFrom","yTo","yStep","zFrom","zTo","zStep","layers","climate","climate_noise","result","t","w","point","TerrainShaper","has","config2","clamp","NormalNoise","LegacyRandom","n","n2","sample","minDist","Infinity","minBiome","dist","square","altitude","getBiomeSource","biomeSource","biomeColors","color","VanillaColors","stringToColor","minecraft:badlands","minecraft:badlands_plateau","minecraft:bamboo_jungle","minecraft:bamboo_jungle_hills","minecraft:basalt_deltas","minecraft:beach","minecraft:birch_forest","minecraft:birch_forest_hills","minecraft:cold_ocean","minecraft:crimson_forest","minecraft:dark_forest","minecraft:dark_forest_hills","minecraft:deep_cold_ocean","minecraft:deep_frozen_ocean","minecraft:deep_lukewarm_ocean","minecraft:deep_ocean","minecraft:deep_warm_ocean","minecraft:desert","minecraft:desert_hills","minecraft:desert_lakes","minecraft:end_barrens","minecraft:end_highlands","minecraft:end_midlands","minecraft:eroded_badlands","minecraft:flower_forest","minecraft:forest","minecraft:frozen_ocean","minecraft:frozen_river","minecraft:giant_spruce_taiga","minecraft:old_growth_spruce_taiga","minecraft:giant_spruce_taiga_hills","minecraft:giant_tree_taiga","minecraft:old_growth_pine_taiga","minecraft:giant_tree_taiga_hills","minecraft:gravelly_hills","minecraft:gravelly_mountains","minecraft:windswept_gravelly_hills","minecraft:ice_spikes","minecraft:jungle","minecraft:jungle_edge","minecraft:sparse_jungle","minecraft:jungle_hills","minecraft:lukewarm_ocean","minecraft:modified_badlands_plateau","minecraft:modified_gravelly_mountains","minecraft:modified_jungle","minecraft:modified_jungle_edge","minecraft:modified_wooded_badlands_plateau","minecraft:mountain_edge","minecraft:extreme_hills","minecraft:mountains","minecraft:windswept_hills","minecraft:mushroom_field_shore","minecraft:mushroom_fields","minecraft:nether_wastes","minecraft:ocean","minecraft:plains","minecraft:river","minecraft:savanna","minecraft:savanna_plateau","minecraft:shattered_savanna","minecraft:windswept_savanna","minecraft:shattered_savanna_plateau","minecraft:small_end_islands","minecraft:snowy_beach","minecraft:snowy_mountains","minecraft:snowy_taiga","minecraft:snowy_taiga_hills","minecraft:snowy_taiga_mountains","minecraft:snowy_tundra","minecraft:snowy_plains","minecraft:soul_sand_valley","minecraft:stone_shore","minecraft:stony_shore","minecraft:sunflower_plains","minecraft:swamp","minecraft:swamp_hills","minecraft:taiga","minecraft:taiga_hills","minecraft:taiga_mountains","minecraft:tall_birch_forest","minecraft:old_growth_birch_forest","minecraft:tall_birch_hills","minecraft:the_end","minecraft:the_void","minecraft:warm_ocean","minecraft:warped_forest","minecraft:wooded_badlands_plateau","minecraft:wooded_badlands","minecraft:wooded_hills","minecraft:wooded_mountains","minecraft:windswept_forest","minecraft:snowy_slopes","minecraft:lofty_peaks","minecraft:jagged_peaks","minecraft:snowcapped_peaks","minecraft:frozen_peaks","minecraft:stony_peaks","minecraft:grove","minecraft:meadow","minecraft:lush_caves","minecraft:dripstone_caves","altitude_noise","temperature_noise","humidity_noise","weirdness_noise","terrain","featureColors","placements","features","biomeInfoNoise","PerlinNoise","fork","seaLevel","nextFloat","nextInt","sampleInt","fill","pos","feature","j","base","spread","normalize","min_inclusive","max_inclusive","source","indexOf","useFeature","featureFn","Features","decorator2","decoratorFn","Decorators","decorated","getPositions","decorator","getPlacements","random_boolean_selector","feature_true","feature_false","random_selector","f","chance","simple_random_selector","count","count_extra","extra_chance","extra_count","count_multilayer","count_noise","noise_level","below_noise","above_noise","count_noise_biased","noise_factor","ceil","noise_offset","noise_to_count_ratio","dark_oak_tree","_config","_","outer","flatMap","inner","depth_average","decorateY","baseline","emerald_ore","fire","glowstone","heightmap","heightmap_spread_double","heightmap_world_surface","iceberg","lava_lake","nope","range","maximum","top_offset","bottom_offset","range_biased","range_very_biased","spread_32_above","top_solid_heightmap","magma","surface_relative_threshold","water_lake","minLimitPerlinNoise","maxLimitPerlinNoise","mainPerlinNoise","depthNoise","settings","xOffset","chunkWidth","size_horizontal","chunkHeight","size_vertical","chunkCountY","amplified","biomeDepth","biomeScale","noiseColumnCache","cx","ox","noise1","fillNoiseColumn","noise2","yy","oy","d2","cachedColumn","xzScale","sampling","xz_scale","yScale","y_scale","xzFactor","xz_factor","yFactor","y_factor","randomDensity","random_density_offset","getRandomDensity","sampleAndClampNoise","getOctaveNoise","zo","falloff","density_factor","density_offset","top_slide","clampedLerp","bottom_slide","x2","wrap","y22","z2","minLimitNoise","maxLimitNoise","mainNoise","colors","minecraft:air","minecraft:water","minecraft:lava","minecraft:stone","minecraft:netherrack","minecraft:end_stone","generatorCache","chunkCache","NoiseGeneratorSettings","fromJson","getOctaves","NoiseChunkGenerator","getCached","LevelSlice","minY","generator2","state2","getBlockState","getName","OldNoiseChunkGenerator","reset","row","iterateNoiseColumn","reverse","getColor","minX","filled","chunks","cached","Chunk","ChunkPos","create","Z","chunk","chunkIndex","OverworldShaper","overworld","BiomeSourcePreview","shown","setScale","focused","setFocused","setLayers","Set","refineTimeout","getShaper","calculateState","useCanvas","round","oz","col","xRange","zRange","l2","getClimate","worldX","worldZ","getBiomeColor","getBiome","brightness","biomeMap","setTimeout","xx","zz","toWorld","changeScale","newScale","BtnMenu","locale","enabled","newSeed","densityFactor","densityOffset","DecoratorPreview","setSeed","randomSeed","NoisePreview","NoiseParameters","NoiseSettingsPreview","loc","bind","setBiomeScale","setBiomeDepth","worldY","min_y","BtnInput","HasPreview","setCount","transformOutput","switchNode","hook","blockState","validation","validator","relativePath","includes","getActiveFields","activeFields","Store","Store2","getLanguage","getTheme","getVersion","getIndent","getSoundsVersion","setIndent","indent","setSoundsVersion","INDENT","2_spaces","4_spaces","tabs","doCopy","doDownload","doImport","copySuccess","onError","retransform","getOutput","useCallback","model2","blockStates2","ModelPath","output","clipboard","writeText","content","encodeURIComponent","setAttribute","click","changeIndent","onBlur","wrapLists","spellcheck","autocorrect","style","mapper","getter","setter","silent","selectRegistries","hiddenFields","flattenedFields","inlineFields","nbtFields","fixedLists","keysModel","MapNode","StringNode","historyMax","prefix","suffix","renderHtml","some","data-category","boolean","BooleanSuffix","choices","choice","activeCase","contextPath","context","getModel","getArray","choiceContextPath","choiceContext","inject","c2","newValue","change","pathLocale","contextPush","expand","collapse","isToggled","useToggles","maxShown","setMaxShown","maxLength","ErrorPopup","modelPush","hexId","cValue","cId","cPath","canToggle","toggle","nested","Collapsed","MemoedTreeNode","actions","onSelect","splice","disabled","keyPath","keysSchema","enum","last","errors","add","ObjectNode","fromEntries","cSchema","number","NumberSuffix","getChildModelPath","isObject","isDecorated","wrapper","fields","originalFields","decorators","iterateNestedDecorators","ListNode","featurePath","decoratorsPath","ModelWrapper","path2","modelArr","equals","newDecorators","newPath","feature2","produceNestedDecorators","createDecoratorsWrapper","optional","onExpand","onCollapse","newCtx","pools","loot","child","cPrefix","cSuffix","cBody","isFlattened","isInlined","HelpPopup","string","StringSuffix","toggleState","setToggleState","toggleAll","setToggleAll","ctrlKey","integer","parsed","parseFloat","padStart","getValues","isEnum","additional","context2","pool","datalistId","list","values2","memo","onContextMenu","preventDefault","a","description","navigator","prev","next","withModel","getAll","e2","message2","popupIcon","popup","useErrorBoundary","setState","FullNode","Themes","system","dark","light","title","changeTheme","changeLanguage","gen","getGenerator","getCurrentUrl","Link","Icons","home","route","cleanUrl","th","rx","y","report","sounds","cy","clip-rule","assets","sound","delay","pitch","volume","onEdit","onDelete","delayedPlay","loading","setLoading","playing","setPlaying","invalid","setInvalid","howls","command","soundEvent","h2","stop","soundPath","entry","getResourceUrl","howl","Howl","src","format","rate","on","completed","every","copyActive","setCopyActive","copyTimeout","step","toFixed","repo","Changelogs","group","split","tags","substring","trim","parseChangelog","fetchChangelog","flat","fetchGroup","changeTitle","setError","changelogs","setChangelogs","changelogs2","catch","setSearch","setTags","addTag","filteredChangelogs","useMemo","query","q2","toLowerCase","Ad","ErrorPanel","Tag","Change","activeTags","dangerouslySetInnerHTML","__html","marked","changeVersion","errorBoundary","errorRetry","allowedVersions","setModel","setBlockStates","Reference","ChoiceNode","schemaName","validate","err","m","onKeyUp","undo","redo","presetFilter","setPresetFilter","presetResults","setPresetResults","terms","presets","sourceShown","setSourceShown","innerWidth","setCopy","setDownload","setImport","previewShown","setPreviewShown","hasPreview","actionsShown","loadPreset","Tree","PreviewPanel","SourcePanel","ToolCard","Manifest","VersionAssets","SoundEvents","fetchManifest","manifest","getManifest","latest","snapshot","versionMeta","assetIndex","objects","fetchAssets","getAssets","fetchSounds","setAssets","setSounds","soundKeys","assets2","getSounds","sounds2","configs","setConfigs","addConfig","deleteConfig","setDelayedPlay","hasDelay","sort","SoundConfig","changes","loadLocale","documentElement","version2","setTitle","title2","Header","theme2","Router","Home","Worldgen","Sounds","Changelog","Generator","render","Main"],"mappings":"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"} \ No newline at end of file diff --git a/assets/index.660a24c0.js b/assets/index.660a24c0.js deleted file mode 100644 index 4590fed0..00000000 --- a/assets/index.660a24c0.js +++ /dev/null @@ -1,2 +0,0 @@ -var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,i=(t,n,o)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[n]=o,s=(e,t)=>{for(var n in t||(t={}))r.call(t,n)&&i(e,n,t[n]);if(o)for(var n of o(t))a.call(t,n)&&i(e,n,t[n]);return e},l=(e,o)=>t(e,n(o));import{y as c,a as d,s as u,l as m,r as h,b as p,j as f,c as g,d as v,e as _,f as w,g as y,m as b,h as x,L as k,G as C,V as M,O as A,i as z,w as E,Z as V,k as j,z as I,T as O,E as $,C as L,n as S,A as P,o as D,q as N,p as B,t as T,u as H,v as R,N as F,R as J}from"./vendor.18ce7a46.js";var W,G=JSON.parse('{"languages":[{"code":"de","name":"Deutsch"},{"code":"en","name":"English"},{"code":"fr","name":"Français"},{"code":"it","name":"Italiano"},{"code":"ja","name":"日本語"},{"code":"pl","name":"Polski"},{"code":"pt","name":"Português"},{"code":"ru","name":"Русский"},{"code":"sk","name":"Slovenčina","schemas":false},{"code":"zh-cn","name":"简体中文"},{"code":"zh-tw","name":"正體中文"}],"versions":[{"id":"1.15","latest":"1.15.2","refs":{"mcdata_master":"13355f7"}},{"id":"1.16","latest":"1.16.5","refs":{"mcdata_master":"1.16.4","vanilla_datapack_data":"1.16.4-data","vanilla_datapack_summary":"1.16.4-summary"}},{"id":"1.17","latest":"1.17.1","refs":{"mcdata_master":"1.17.1","vanilla_datapack_data":"1.17.1-data","vanilla_datapack_summary":"1.17.1-summary"}},{"id":"1.18","refs":{"mcdata_master":"master","vanilla_datapack_data":"data","vanilla_datapack_summary":"summary"},"dynamic":true}],"generators":[{"id":"loot_table","url":"loot-table","path":"loot_tables","schema":"loot_table","maxVersion":"1.17"},{"id":"predicate","url":"predicate","path":"predicates","schema":"predicate"},{"id":"item_modifier","url":"item-modifier","path":"item_modifiers","schema":"item_modifier","minVersion":"1.17"},{"id":"advancement","url":"advancement","path":"advancements","schema":"advancement"},{"id":"recipe","url":"recipe","path":"recipes","schema":"recipe"},{"id":"dimension","url":"dimension","schema":"dimension","category":"worldgen","minVersion":"1.16"},{"id":"dimension_type","url":"dimension-type","schema":"dimension_type","category":"worldgen","minVersion":"1.16"},{"id":"world","url":"world","schema":"world_settings","category":"worldgen","minVersion":"1.16"},{"id":"worldgen/biome","url":"worldgen/biome","category":"worldgen","schema":"biome","minVersion":"1.16"},{"id":"worldgen/configured_carver","url":"worldgen/carver","category":"worldgen","schema":"configured_carver","minVersion":"1.16"},{"id":"worldgen/configured_feature","url":"worldgen/feature","category":"worldgen","schema":"configured_feature","minVersion":"1.16"},{"id":"worldgen/noise","url":"worldgen/noise","category":"worldgen","schema":"noise_parameters","minVersion":"1.18"},{"id":"worldgen/noise_settings","url":"worldgen/noise-settings","category":"worldgen","schema":"noise_settings","minVersion":"1.16"},{"id":"worldgen/configured_structure_feature","url":"worldgen/structure-feature","category":"worldgen","schema":"configured_structure_feature","minVersion":"1.16"},{"id":"worldgen/configured_surface_builder","url":"worldgen/surface-builder","category":"worldgen","schema":"configured_surface_builder","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/processor_list","url":"worldgen/processor-list","category":"worldgen","schema":"processor_list","minVersion":"1.16"},{"id":"worldgen/template_pool","url":"worldgen/template-pool","category":"worldgen","schema":"template_pool","minVersion":"1.16"}],"registries":[{"id":"advancement","dynamic":true},{"id":"attribute","minVersion":"1.16"},{"id":"block"},{"id":"block_predicate_type","minVersion":"1.18"},{"id":"dimension","dynamic":true},{"id":"dimension_type","dynamic":true},{"id":"enchantment"},{"id":"entity_type"},{"id":"fluid"},{"id":"function","dynamic":true},{"id":"float_provider_type","minVersion":"1.17"},{"id":"item"},{"id":"int_provider_type","minVersion":"1.17"},{"id":"height_provider_type","minVersion":"1.17"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_condition_type","minVersion":"1.16"},{"id":"loot_function_type","minVersion":"1.16"},{"id":"loot_nbt_provider_type","minVersion":"1.17"},{"id":"loot_number_provider_type","minVersion":"1.17"},{"id":"loot_pool_entry_type","minVersion":"1.16"},{"id":"loot_score_provider_type","minVersion":"1.17"},{"id":"loot_table","dynamic":true},{"id":"mob_effect"},{"id":"pos_rule_test","minVersion":"1.16"},{"id":"potion","minVersion":"1.15"},{"id":"predicate","dynamic":true},{"id":"recipe","dynamic":true},{"id":"recipe_serializer"},{"id":"rule_test","minVersion":"1.16"},{"id":"sound_event"},{"id":"stat_type"},{"id":"structure","dynamic":true},{"id":"tag/block","dynamic":true},{"id":"tag/entity_type","dynamic":true},{"id":"tag/fluid","dynamic":true},{"id":"tag/function","dynamic":true},{"id":"tag/item","dynamic":true},{"id":"worldgen/biome","dynamic":true},{"id":"worldgen/block_state_provider_type","minVersion":"1.16"},{"id":"worldgen/block_placer_type","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/biome_source","minVersion":"1.16"},{"id":"worldgen/carver","minVersion":"1.16"},{"id":"worldgen/chunk_generator","minVersion":"1.16"},{"id":"worldgen/configured_carver","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_decorator","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_structure_feature","minVersion":"1.16","dynamic":true},{"id":"worldgen/configured_surface_builder","minVersion":"1.16","dynamic":true},{"id":"worldgen/decorator","minVersion":"1.16"},{"id":"worldgen/feature","minVersion":"1.16"},{"id":"worldgen/feature_size_type","minVersion":"1.16"},{"id":"worldgen/foliage_placer_type","minVersion":"1.16"},{"id":"worldgen/material_condition","minVersion":"1.18"},{"id":"worldgen/material_rule","minVersion":"1.18"},{"id":"worldgen/noise","minVersion":"1.18","dynamic":true},{"id":"worldgen/noise_settings","minVersion":"1.16","dynamic":true},{"id":"worldgen/processor_list","minVersion":"1.16","dynamic":true},{"id":"worldgen/structure_feature","minVersion":"1.16"},{"id":"worldgen/structure_pool_element","minVersion":"1.16"},{"id":"worldgen/structure_processor","minVersion":"1.16"},{"id":"worldgen/surface_builder","minVersion":"1.16","maxVersion":"1.17"},{"id":"worldgen/template_pool","minVersion":"1.16","dynamic":true},{"id":"worldgen/tree_decorator_type","minVersion":"1.16"},{"id":"worldgen/trunk_placer_type","minVersion":"1.16"},{"id":"biome","maxVersion":"1.15"},{"id":"worldgen/biome","minVersion":"1.16","path":"processed/reports/biomes"}]}');function U({type:e,id:t}){return c((()=>{var e;null==(e=document.getElementById("ad-placeholder"))||e.remove(),"ethicalads"in window&ðicalads.load()}),[]),d("div",{"data-ea-publisher":"misode-github-io","data-ea-type":e,class:"ad dark flat",id:t})}function Y({icon:e,label:t,active:n,class:o,tooltip:r,tooltipLoc:a,onClick:i}){return d("div",{class:`btn${n?" active":""}${o?` ${o}`:""}${r?` tooltipped tip-${null!=a?a:"sw"}`:""}`,onClick:i,"aria-label":r},e&&ee[e],t&&d("span",null,t))}function Z({icon:e,label:t,large:n,doSelect:o,value:r,placeholder:a,onChange:i}){const s=void 0===i?()=>{}:e=>{const t=e.target.value;null==i||i(t)},l=u(null);return c((()=>{o&&l.current&&l.current.select()}),[o]),d("div",{class:"btn btn-input "+(n?"large-input":""),onClick:e=>e.stopPropagation()},e&&ee[e],t&&d("span",null,t),d("input",{ref:l,type:"text",value:r,onChange:s,placeholder:a}))}function q({size:e,draw:t,onDrag:n,onHover:o,onLeave:r},a){const i=u(null),s=u(),l=u(),d=u([0,0]),m=u(!1);c((()=>{const e=e=>{s.current=[e.offsetX,e.offsetY]},t=e=>{if(void 0===s.current){const t=e.offsetX/i.current.clientWidth,n=e.offsetY/i.current.clientHeight;return void(null==o||o(t,n))}if(!n)return;const t=e.offsetX-s.current[0],r=e.offsetY-s.current[1];0===t&&0===r||(d.current=[d.current[0]+t,d.current[1]+r],m.current||(cancelAnimationFrame(l.current),l.current=requestAnimationFrame((async()=>{m.current=!0;const e=d.current[0]/i.current.clientWidth,t=d.current[1]/i.current.clientHeight;d.current=[0,0],await(null==n?void 0:n(e,t)),m.current=!1})))),s.current=[e.offsetX,e.offsetY]},a=()=>{s.current=void 0},c=()=>{null==r||r()};return i.current.addEventListener("mousedown",e),i.current.addEventListener("mousemove",t),i.current.addEventListener("mouseleave",c),document.body.addEventListener("mouseup",a),()=>{var n,o,r;null==(n=i.current)||n.removeEventListener("mousedown",e),null==(o=i.current)||o.removeEventListener("mousemove",t),null==(r=i.current)||r.removeEventListener("mouseleave",c),document.body.removeEventListener("mouseup",a)}}),[...null!=a?a:[],i.current]);const h=u(),p=u(0);return h.current=async()=>{const n=i.current.getContext("2d"),o=e();i.current.width=o[0],i.current.height=o[1];const r=n.getImageData(0,0,o[0],o[1]),a=p.current+=1;await t(r),a===p.current&&n.putImageData(r,0,0)},{canvas:i,redraw:h.current}}function K(){const[e,t]=m(!1),n=()=>{t(!1)};return c((()=>(e&&(document.body.addEventListener("click",n),document.body.addEventListener("contextmenu",n)),()=>{document.body.removeEventListener("click",n),document.body.removeEventListener("contextmenu",n)})),[e]),[e,()=>t(!0)]}function X(e,t){const n={invalidated(){e&&t(e)}};c((()=>(null==e||e.addListener(n),()=>{null==e||e.removeListener(n)})),[e])}function Q({icon:e,label:t,relative:n,tooltip:o,children:r}){const[a,i]=K();return d("div",{class:"btn-menu"+(!1===n?" no-relative":"")},d(Y,l(s({},{icon:e,label:t,tooltip:o}),{onClick:i})),a&&d("div",{class:"btn-group"},r))}!function(e){const t="Site",n="Generator";function o(e,t,n){ga("send","event",e,t,n)}function r(e,t){ga("set",`dimension${e}`,t)}e.pageview=function(e){ga("set","page",e),ga("send","pageview")},e.setLanguage=function(e){r(4,e),o(t,"set-language",e)},e.setTheme=function(e){r(1,e),o(t,"set-theme",e)},e.setVersion=function(e){r(3,e),o(n,"set-version",e)},e.setPreview=function(e){r(5,e),o(n,"set-preview",e)},e.setGenerator=function(e){r(6,e),console.log(e)},e.generatorEvent=function(e,t){o(n,e,t)}}(W||(W={}));const ee={alert:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"})),archive:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5a.25.25 0 00-.25.25v1.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25v-1.5a.25.25 0 00-.25-.25H1.75zM0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v1.5A1.75 1.75 0 0114.25 6H1.75A1.75 1.75 0 010 4.25v-1.5zM1.75 7a.75.75 0 01.75.75v5.5c0 .138.112.25.25.25h10.5a.25.25 0 00.25-.25v-5.5a.75.75 0 111.5 0v5.5A1.75 1.75 0 0113.25 15H2.75A1.75 1.75 0 011 13.25v-5.5A.75.75 0 011.75 7zm4.5 1a.75.75 0 000 1.5h3.5a.75.75 0 100-1.5h-3.5z"})),arrow_left:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"})),arrow_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"})),check:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"})),chevron_down:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"})),chevron_right:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"})),chevron_up:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"})),clippy:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"})),code:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"})),dash:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2 8a.75.75 0 01.75-.75h10.5a.75.75 0 010 1.5H2.75A.75.75 0 012 8z"})),device_desktop:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"})),download:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),duplicate:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M10.5 3a.75.75 0 01.75.75v1h1a.75.75 0 010 1.5h-1v1a.75.75 0 01-1.5 0v-1h-1a.75.75 0 010-1.5h1v-1A.75.75 0 0110.5 3z"}),d("path",{"fill-rule":"evenodd",d:"M6.75 0A1.75 1.75 0 005 1.75v7.5c0 .966.784 1.75 1.75 1.75h7.5A1.75 1.75 0 0016 9.25v-7.5A1.75 1.75 0 0014.25 0h-7.5zM6.5 1.75a.25.25 0 01.25-.25h7.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25h-7.5a.25.25 0 01-.25-.25v-7.5z"}),d("path",{d:"M1.75 5A1.75 1.75 0 000 6.75v7.5C0 15.216.784 16 1.75 16h7.5A1.75 1.75 0 0011 14.25v-1.5a.75.75 0 00-1.5 0v1.5a.25.25 0 01-.25.25h-7.5a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25h1.5a.75.75 0 000-1.5h-1.5z"})),eye:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"})),eye_closed:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M.143 2.31a.75.75 0 011.047-.167l14.5 10.5a.75.75 0 11-.88 1.214l-2.248-1.628C11.346 13.19 9.792 14 8 14c-1.981 0-3.67-.992-4.933-2.078C1.797 10.832.88 9.577.43 8.9a1.618 1.618 0 010-1.797c.353-.533.995-1.42 1.868-2.305L.31 3.357A.75.75 0 01.143 2.31zm3.386 3.378a14.21 14.21 0 00-1.85 2.244.12.12 0 00-.022.068c0 .021.006.045.022.068.412.621 1.242 1.75 2.366 2.717C5.175 11.758 6.527 12.5 8 12.5c1.195 0 2.31-.488 3.29-1.191L9.063 9.695A2 2 0 016.058 7.52l-2.53-1.832zM8 3.5c-.516 0-1.017.09-1.499.251a.75.75 0 11-.473-1.423A6.23 6.23 0 018 2c1.981 0 3.67.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.619 1.619 0 010 1.798c-.11.166-.248.365-.41.587a.75.75 0 11-1.21-.887c.148-.201.272-.382.371-.53a.119.119 0 000-.137c-.412-.621-1.242-1.75-2.366-2.717C10.825 4.242 9.473 3.5 8 3.5z"})),gear:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.429 1.525a6.593 6.593 0 011.142 0c.036.003.108.036.137.146l.289 1.105c.147.56.55.967.997 1.189.174.086.341.183.501.29.417.278.97.423 1.53.27l1.102-.303c.11-.03.175.016.195.046.219.31.41.641.573.989.014.031.022.11-.059.19l-.815.806c-.411.406-.562.957-.53 1.456a4.588 4.588 0 010 .582c-.032.499.119 1.05.53 1.456l.815.806c.08.08.073.159.059.19a6.494 6.494 0 01-.573.99c-.02.029-.086.074-.195.045l-1.103-.303c-.559-.153-1.112-.008-1.529.27-.16.107-.327.204-.5.29-.449.222-.851.628-.998 1.189l-.289 1.105c-.029.11-.101.143-.137.146a6.613 6.613 0 01-1.142 0c-.036-.003-.108-.037-.137-.146l-.289-1.105c-.147-.56-.55-.967-.997-1.189a4.502 4.502 0 01-.501-.29c-.417-.278-.97-.423-1.53-.27l-1.102.303c-.11.03-.175-.016-.195-.046a6.492 6.492 0 01-.573-.989c-.014-.031-.022-.11.059-.19l.815-.806c.411-.406.562-.957.53-1.456a4.587 4.587 0 010-.582c.032-.499-.119-1.05-.53-1.456l-.815-.806c-.08-.08-.073-.159-.059-.19a6.44 6.44 0 01.573-.99c.02-.029.086-.075.195-.045l1.103.303c.559.153 1.112.008 1.529-.27.16-.107.327-.204.5-.29.449-.222.851-.628.998-1.189l.289-1.105c.029-.11.101-.143.137-.146zM8 0c-.236 0-.47.01-.701.03-.743.065-1.29.615-1.458 1.261l-.29 1.106c-.017.066-.078.158-.211.224a5.994 5.994 0 00-.668.386c-.123.082-.233.09-.3.071L3.27 2.776c-.644-.177-1.392.02-1.82.63a7.977 7.977 0 00-.704 1.217c-.315.675-.111 1.422.363 1.891l.815.806c.05.048.098.147.088.294a6.084 6.084 0 000 .772c.01.147-.038.246-.088.294l-.815.806c-.474.469-.678 1.216-.363 1.891.2.428.436.835.704 1.218.428.609 1.176.806 1.82.63l1.103-.303c.066-.019.176-.011.299.071.213.143.436.272.668.386.133.066.194.158.212.224l.289 1.106c.169.646.715 1.196 1.458 1.26a8.094 8.094 0 001.402 0c.743-.064 1.29-.614 1.458-1.26l.29-1.106c.017-.066.078-.158.211-.224a5.98 5.98 0 00.668-.386c.123-.082.233-.09.3-.071l1.102.302c.644.177 1.392-.02 1.82-.63.268-.382.505-.789.704-1.217.315-.675.111-1.422-.364-1.891l-.814-.806c-.05-.048-.098-.147-.088-.294a6.1 6.1 0 000-.772c-.01-.147.039-.246.088-.294l.814-.806c.475-.469.679-1.216.364-1.891a7.992 7.992 0 00-.704-1.218c-.428-.609-1.176-.806-1.82-.63l-1.103.303c-.066.019-.176.011-.299-.071a5.991 5.991 0 00-.668-.386c-.133-.066-.194-.158-.212-.224L10.16 1.29C9.99.645 9.444.095 8.701.031A8.094 8.094 0 008 0zm1.5 8a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM11 8a3 3 0 11-6 0 3 3 0 016 0z"})),globe:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.543 7.25h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.506 6.506 0 00-4.666 5.5zm2.733 1.5H1.543a6.506 6.506 0 004.666 5.5 11.13 11.13 0 01-.352-.552c-.715-1.192-1.437-2.874-1.581-4.948zm1.504 0h4.44a9.637 9.637 0 01-1.363 4.177c-.306.51-.612.919-.857 1.215a9.978 9.978 0 01-.857-1.215A9.637 9.637 0 015.78 8.75zm4.44-1.5H5.78a9.637 9.637 0 011.363-4.177c.306-.51.612-.919.857-1.215.245.296.55.705.857 1.215A9.638 9.638 0 0110.22 7.25zm1.504 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.506 6.506 0 004.666-5.5h-2.733zm2.733-1.5h-2.733c-.144-2.074-.866-3.756-1.58-4.948a11.738 11.738 0 00-.353-.552 6.506 6.506 0 014.666 5.5zM8 0a8 8 0 100 16A8 8 0 008 0z"})),history:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"})),info:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"})),issue_opened:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"})),kebab_horizontal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"})),link:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"})),mark_github:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"})),moon:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M9.598 1.591a.75.75 0 01.785-.175 7 7 0 11-8.967 8.967.75.75 0 01.961-.96 5.5 5.5 0 007.046-7.046.75.75 0 01.175-.786zm1.616 1.945a7 7 0 01-7.678 7.678 5.5 5.5 0 107.678-7.678z"})),play:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"})),plus:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2a.75.75 0 01.75.75v4.5h4.5a.75.75 0 010 1.5h-4.5v4.5a.75.75 0 01-1.5 0v-4.5h-4.5a.75.75 0 010-1.5h4.5v-4.5A.75.75 0 018 2z"})),plus_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zm.75 4.75a.75.75 0 00-1.5 0v2.5h-2.5a.75.75 0 000 1.5h2.5v2.5a.75.75 0 001.5 0v-2.5h2.5a.75.75 0 000-1.5h-2.5v-2.5z"})),search:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"})),stack:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M7.122.392a1.75 1.75 0 011.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 01-1.756 0L2.119 5.456a1.25 1.25 0 010-2.162L7.122.392zM8.125 1.69a.25.25 0 00-.25 0l-4.63 2.685 4.63 2.685a.25.25 0 00.25 0l4.63-2.685-4.63-2.685zM1.601 7.789a.75.75 0 011.025-.273l5.249 3.044a.25.25 0 00.25 0l5.249-3.044a.75.75 0 01.752 1.298l-5.248 3.044a1.75 1.75 0 01-1.756 0L1.874 8.814A.75.75 0 011.6 7.789zm0 3.5a.75.75 0 011.025-.273l5.249 3.044a.25.25 0 00.25 0l5.249-3.044a.75.75 0 01.752 1.298l-5.248 3.044a1.75 1.75 0 01-1.756 0l-5.248-3.044a.75.75 0 01-.273-1.025z"})),sun:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 10.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zM8 12a4 4 0 100-8 4 4 0 000 8zM8 0a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0V.75A.75.75 0 018 0zm0 13a.75.75 0 01.75.75v1.5a.75.75 0 01-1.5 0v-1.5A.75.75 0 018 13zM2.343 2.343a.75.75 0 011.061 0l1.06 1.061a.75.75 0 01-1.06 1.06l-1.06-1.06a.75.75 0 010-1.06zm9.193 9.193a.75.75 0 011.06 0l1.061 1.06a.75.75 0 01-1.06 1.061l-1.061-1.06a.75.75 0 010-1.061zM16 8a.75.75 0 01-.75.75h-1.5a.75.75 0 010-1.5h1.5A.75.75 0 0116 8zM3 8a.75.75 0 01-.75.75H.75a.75.75 0 010-1.5h1.5A.75.75 0 013 8zm10.657-5.657a.75.75 0 010 1.061l-1.061 1.06a.75.75 0 11-1.06-1.06l1.06-1.06a.75.75 0 011.06 0zm-9.193 9.193a.75.75 0 010 1.06l-1.06 1.061a.75.75 0 11-1.061-1.06l1.06-1.061a.75.75 0 011.061 0z"})),sync:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8 2.5a5.487 5.487 0 00-4.131 1.869l1.204 1.204A.25.25 0 014.896 6H1.25A.25.25 0 011 5.75V2.104a.25.25 0 01.427-.177l1.38 1.38A7.001 7.001 0 0114.95 7.16a.75.75 0 11-1.49.178A5.501 5.501 0 008 2.5zM1.705 8.005a.75.75 0 01.834.656 5.501 5.501 0 009.592 2.97l-1.204-1.204a.25.25 0 01.177-.427h3.646a.25.25 0 01.25.25v3.646a.25.25 0 01-.427.177l-1.38-1.38A7.001 7.001 0 011.05 8.84a.75.75 0 01.656-.834z"})),tag:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"})),terminal:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0114.25 15H1.75A1.75 1.75 0 010 13.25V2.75zm1.75-.25a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25V2.75a.25.25 0 00-.25-.25H1.75zM7.25 8a.75.75 0 01-.22.53l-2.25 2.25a.75.75 0 11-1.06-1.06L5.44 8 3.72 6.28a.75.75 0 111.06-1.06l2.25 2.25c.141.14.22.331.22.53zm1.5 1.5a.75.75 0 000 1.5h3a.75.75 0 000-1.5h-3z"})),three_bars:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"})),trashcan:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"})),unfold:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{d:"M8.177.677l2.896 2.896a.25.25 0 01-.177.427H8.75v1.25a.75.75 0 01-1.5 0V4H5.104a.25.25 0 01-.177-.427L7.823.677a.25.25 0 01.354 0zM7.25 10.75a.75.75 0 011.5 0V12h2.146a.25.25 0 01.177.427l-2.896 2.896a.25.25 0 01-.354 0l-2.896-2.896A.25.25 0 015.104 12H7.25v-1.25zm-5-2a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 016 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 8a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5A.75.75 0 0112 8zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"})),upload:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M8.53 1.22a.75.75 0 00-1.06 0L3.72 4.97a.75.75 0 001.06 1.06l2.47-2.47v6.69a.75.75 0 001.5 0V3.56l2.47 2.47a.75.75 0 101.06-1.06L8.53 1.22zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"})),x:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"})),x_circle:d("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",width:"16",height:"16"},d("path",{"fill-rule":"evenodd",d:"M3.404 12.596a6.5 6.5 0 119.192-9.192 6.5 6.5 0 01-9.192 9.192zM2.344 2.343a8 8 0 1011.313 11.314A8 8 0 002.343 2.343zM6.03 4.97a.75.75 0 00-1.06 1.06L6.94 8 4.97 9.97a.75.75 0 101.06 1.06L8 9.06l1.97 1.97a.75.75 0 101.06-1.06L9.06 8l1.97-1.97a.75.75 0 10-1.06-1.06L8 6.94 6.03 4.97z"}))};function te({error:e,onDismiss:t}){return d("div",{class:"error"},t&&d("div",{class:"error-dismiss",onClick:t},ee.x),d("h3",null,e),d("p",null,"If you think this is a bug, you can report it ",d("a",{href:"https://github.com/misode/misode.github.io/issues/new",target:"_blank"},"on GitHub")))}function ne(e,t,n){const o=e=>{const o=e.onChange&&(t=>{var o;const r=t.target.value;null==(o=e.onChange)||o.call(e,n(r))}),r=e.onEnter&&(t=>{var o;if("Enter"===t.key){const r=t.target.value;null==(o=e.onEnter)||o.call(e,n(r))}});return d("input",s(s({},e),{type:t,onChange:o,onKeyDown:r}))};return o.displayName=e,o}const oe=ne("TextInput","text",(e=>e)),re=ne("NumberInput","number",(e=>Number(e))),ae=ne("RangeInput","range",(e=>Number(e)));let ie;const se={},le=function(e,t){if(!t)return e();if(void 0===ie){const e=document.createElement("link").relList;ie=e&&e.supports&&e.supports("modulepreload")?"modulepreload":"preload"}return Promise.all(t.map((e=>{if(e in se)return;se[e]=!0;const t=e.endsWith(".css"),n=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${n}`))return;const o=document.createElement("link");return o.rel=t?"stylesheet":ie,t||(o.as="script",o.crossOrigin=""),o.href=e,document.head.appendChild(o),t?new Promise(((e,t)=>{o.addEventListener("load",e),o.addEventListener("error",t)})):void 0}))).then((()=>e()))};var ce=JSON.parse('{"add":"Add","add_bottom":"Add to bottom","add_top":"Add to top","advancement":"Advancement","collapse":"Collapse","collapse_all":"Hold %0% to collapse all","configure_layers":"Configure layers","copy":"Copy","copied":"Copied!","copy_context":"Copy context","dimension_type":"Dimension Type","dimension":"Dimension","disabled":"Disabled","download":"Download","duplicate":"Duplicate","enabled":"Enabled","entries_hidden":"%0% entries hidden","entries_hidden.more":"Show %0% more","entries_hidden.all":"Show all","expand":"Expand","expand_all":"Hold %0% to expand all","feature.decorated.decorators":"Decorators","feature.decorated.decorators.entry":"Decorator","fields":"Fields","generate_new_seed":"Generate new seed","github":"GitHub","hide_output":"Hide JSON output","hide_preview":"Hide preview","home":"Home","import":"Import","indentation.2_spaces":"2 spaces","indentation.4_spaces":"4 spaces","indentation.tabs":"Tabs","item_modifier":"Item Modifier","language":"Language","layer.biomes":"Biomes","layer.temperature":"Temperature","layer.humidity":"Humidity","layer.continentalness":"Continentalness","layer.erosion":"Erosion","layer.weirdness":"Weirdness","layer.offset":"Offset","layer.factor":"Factor","layer.jaggedness":"Jaggedness","loot_table":"Loot Table","more":"More","move_down":"Move down","move_up":"Move up","not_found.description":"The page you were looking for does not exist.","no_presets":"No presets","output_settings":"JSON output settings","predicate":"Predicate","recipe":"Recipe","redo":"Redo","reset":"Reset","settings":"Settings","settings.fields.description":"Customize advanced field settings","settings.fields.path":"Context","settings.fields.name":"Name","share":"Share","theme":"Theme","theme.dark":"Dark","theme.light":"Light","theme.system":"System","title.generator":"%0% Generator","title.generator_category":"%0% Generators","title.home":"Data Pack Generators","title.sounds":"Sound Explorer","presets":"Presets","preview":"Visualize","preview.scale":"Scale","preview.depth":"Depth","preview.factor":"Factor","preview.offset":"Offset","preview.peaks":"Peaks","preview.width":"Width","remove":"Remove","search":"Search","show_output":"Show JSON output","show_preview":"Show preview","sounds.play":"Play","sounds.play_sound":"Play sound","sounds.play_all":"Play all","sounds.search":"Search sounds","sounds.download_function":"Download Mcfunction","sounds.delay":"Delay","sounds.pitch":"Pitch","sounds.volume":"Volume","sounds.copy_command":"Copy command","sounds.add_sound":"Add sound","sounds.remove_sound":"Remove sound","sounds.unknown_sound":"Unknown sound","sounds.loading_sound":"Loading sound","source_placeholder":"Paste JSON content here","switch_generator":"Switch generator","terrain_settings":"Terrain settings","undo":"Undo","world":"World Settings","worldgen":"Worldgen","worldgen/biome":"Biome","worldgen/configured_carver":"Carver","worldgen/configured_feature":"Feature","worldgen/noise":"Noise","worldgen/noise_settings":"Noise Settings","worldgen/processor_list":"Processor List","worldgen/configured_structure_feature":"Structure Feature","worldgen/configured_surface_builder":"Surface Builder","worldgen/template_pool":"Template Pool","zoom_in":"Zoom in","zoom_out":"Zoom out"}'),de=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",default:ce});const ue={fallback:ce};function me(e,t,...n){var o,r,a,i,s;return function(e,t){return e.replace(/%\d+%/g,(e=>{const n=parseInt(e.slice(1,-1));return void 0!==(null==t?void 0:t[n])?t[n]:e}))}(null!=(s=null!=(i=null!=(a=null==(o=ue[e])?void 0:o[t])?a:null==(r=ue.en)?void 0:r[t])?i:ue.fallback[t])?s:t,n)}async function he(e){const t=G.languages.find((t=>t.code===e));if(!t)return;const n=await function(e){switch(e){case"../locales/de.json":return le((()=>import("./de.1d005dc8.js")),void 0);case"../locales/en.json":return le((()=>Promise.resolve().then((function(){return de}))),void 0);case"../locales/es.json":return le((()=>import("./es.d3abba45.js")),void 0);case"../locales/fr.json":return le((()=>import("./fr.f5531eea.js")),void 0);case"../locales/it.json":return le((()=>import("./it.fd9a8268.js")),void 0);case"../locales/ja.json":return le((()=>import("./ja.8c79487c.js")),void 0);case"../locales/pl.json":return le((()=>import("./pl.3a9fb38c.js")),void 0);case"../locales/pt.json":return le((()=>import("./pt.689bba1d.js")),void 0);case"../locales/ru.json":return le((()=>import("./ru.6f24253b.js")),void 0);case"../locales/sk.json":return le((()=>import("./sk.69c71daa.js")),void 0);case"../locales/zh-cn.json":return le((()=>import("./zh-cn.b233fc7e.js")),void 0);case"../locales/zh-tw.json":return le((()=>import("./zh-tw.298bd51e.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../locales/${e}.json`),o=!1!==t.schemas&&await function(e){switch(e){case"../../node_modules/@mcschema/locales/src/de.json":return le((()=>import("./de.f9c3209c.js")),void 0);case"../../node_modules/@mcschema/locales/src/en.json":return le((()=>import("./en.b8b79353.js")),void 0);case"../../node_modules/@mcschema/locales/src/es.json":return le((()=>import("./es.c83d9c73.js")),void 0);case"../../node_modules/@mcschema/locales/src/fr.json":return le((()=>import("./fr.e316b1e2.js")),void 0);case"../../node_modules/@mcschema/locales/src/it.json":return le((()=>import("./it.7ff123cd.js")),void 0);case"../../node_modules/@mcschema/locales/src/ja.json":return le((()=>import("./ja.4ae430b9.js")),void 0);case"../../node_modules/@mcschema/locales/src/pl.json":return le((()=>import("./pl.01cb20df.js")),void 0);case"../../node_modules/@mcschema/locales/src/pt.json":return le((()=>import("./pt.31e14993.js")),void 0);case"../../node_modules/@mcschema/locales/src/ru.json":return le((()=>import("./ru.92df5b59.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-cn.json":return le((()=>import("./zh-cn.4129665a.js")),void 0);case"../../node_modules/@mcschema/locales/src/zh-tw.json":return le((()=>import("./zh-tw.1b64f94d.js")),void 0);default:return Promise.reject(new Error("Unknown variable dynamic import: "+e))}}(`../../node_modules/@mcschema/locales/src/${e}.json`);ue[e]=s(s({},n.default),o.default)}function pe(e){return"object"==typeof e&&null!==e}const fe=e=>("0"+e.toString(16)).substr(-2);function ge(e=12){var t=new Uint8Array(e/2);return window.crypto.getRandomValues(t),Array.from(t,fe).join("")}function ve(){return BigInt(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER))}function _e(e){const t=Math.floor(4294967296*Math.random())-2147483648,n=e.get(new p.Path(["dimensions"]));e.set(new p.Path(["seed"]),t,!0),"object"==typeof n&&null!==n&&Object.keys(n).forEach((n=>{e.set(new p.Path(["dimensions",n,"generator","seed"]),t,!0),e.set(new p.Path(["dimensions",n,"generator","biome_source","seed"]),t,!0)})),e.set(new p.Path(["generator","seed"]),t,!0),e.set(new p.Path(["generator","biome_source","seed"]),t)}function we(e){return`/${e}/`.replaceAll("//","/")}function ye(e){const t=e.replace(/^\//,"").replace(/\/$/,"").replace(/\?.*/,"");return G.generators.find((e=>e.url===t))}function be(e){const t=Math.abs(function(e){let t=0;for(let n=0;n>8)%256,(t>>16)%256]}function xe(e){return e*e}function ke(e,t,n){return Math.max(e,Math.min(t,n))}function Ce(e,t,n){return n<0?e:n>1?t:Me(n,e,t)}function Me(e,t,n){return t+e*(n-t)}function Ae(e){return e instanceof Error?e.message:`${e}`}const ze=h();function Ee(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;let n,o;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(o=0;o{try{const t=$e[e].getCollections(),n={};await async function(e,t,n){const o=G.versions.find((t=>t.id===e));if(!o)return void console.error(`[fetchData] Unknown version ${o} in ${JSON.stringify(G.versions)}`);console.debug(`[fetchData] ${JSON.stringify(o)}`),o.dynamic&&await Promise.all(Te.filter((e=>localStorage.getItem(`cached_${e.id}`)!==e.hash)).map((async e=>{console.debug(`[deleteMatching] ${e.id} '${localStorage.getItem(`cached_${e.id}`)}' < '${e.hash}' ${e.url}/${o.refs[e.id]}`),await async function(e){try{const t=await caches.open("misode-v1");console.debug("[deleteMatching] Opened cache misode-v1");const n=[];for(const o of await t.keys())e(o.url)&&n.push(t.delete(o));console.debug(`[deleteMatching] Removing ${n.length} cache objects...`),await Promise.all(n)}catch(t){console.warn(`[deleteMatching] Failed to open cache misode-v1: ${Ae(t)}`)}}((t=>t.startsWith(`${e.url}/${o.refs[e.id]}`))),console.debug(`[deleteMatching] Done! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`),localStorage.setItem(`cached_${e.id}`,e.hash),console.debug(`[deleteMatching] Set! ${e.id} ${e.hash} '${localStorage.getItem(`cached_${e.id}`)}'`)})));await Promise.all([He(o,t),Re(o,n),Fe(o,t)])}(e,t,n);const o=$e[e].getSchemas(t);return Ie[e]={collections:t,schemas:o,blockStates:n},Ie[e]}catch(t){throw new Error(`Cannot get version "${e}": ${Ae(t)}`)}})()),Ie[e]}function De(e,t,n){const o=G.versions.findIndex((t=>t.id===e)),r=t?G.versions.findIndex((e=>e.id===t)):0,a=n?G.versions.findIndex((e=>e.id===n)):G.versions.length-1;return r<=o&&o<=a}["1.15","1.16","1.17"].forEach((e=>localStorage.removeItem(`cache_${e}`)));const Ne="https://raw.githubusercontent.com/Arcensoth/mcdata",Be="https://raw.githubusercontent.com/SPGoding/vanilla-datapack",Te=[{id:"mcdata_master",hash:"0c69e25cbe6daaa36b3ea21866a9705c67fd7cf1",url:Ne},{id:"vanilla_datapack_summary",hash:"cfebb8dde88922b34e0adaca1d42507a2698c404",url:Be}];async function He(e,t){console.debug(`[fetchRegistries] ${e.id}`);const n=G.registries.filter((e=>!e.dynamic)).filter((t=>De(e.id,t.minVersion,t.maxVersion)));if(De(e.id,void 0,"1.15")){const r=`${Ne}/${e.refs.mcdata_master}/generated/reports/registries.json`;try{const e=await Ge(r,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n.slice(10)]=Object.keys(e[n].entries)})),t}));n.forEach((n=>{var o;t.register(n.id,null!=(o=e[n.id])?o:[])}))}catch(o){console.warn("Error occurred while fetching registries:",Ae(o))}}else await Promise.all(n.map((async n=>{try{const o=n.path?`${Ne}/${e.refs.mcdata_master}/${n.path}/data.min.json`:`${Ne}/${e.refs.mcdata_master}/processed/reports/registries/${n.id}/data.min.json`;t.register(n.id,await Ge(o,(e=>e.values)))}catch(o){console.warn(`Error occurred while fetching registry ${n.id}:`,Ae(o))}})))}async function Re(e,t){if(console.debug(`[fetchBlockStateMap] ${e.id}`),De(e.id,void 0,"1.16")){const o=De(e.id,void 0,"1.15")?`${Ne}/${e.refs.mcdata_master}/generated/reports/blocks.json`:`${Ne}/${e.refs.mcdata_master}/processed/reports/blocks/data.min.json`;try{const e=await Ge(o,(e=>{const t={};return Object.keys(e).forEach((n=>{t[n]={properties:e[n].properties,default:e[n].states.find((e=>e.default)).properties}})),t}));Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",Ae(n))}}else{const o=`${Ne}/${e.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`;try{const e=await Ge(o);Object.assign(t,e)}catch(n){console.warn("Error occurred while fetching block state map:",Ae(n))}}}async function Fe(e,t){console.debug(`[fetchDynamicRegistries] ${e.id}`);const n=G.registries.filter((e=>e.dynamic)).filter((t=>De(e.id,t.minVersion,t.maxVersion)));if(De(e.id,"1.16")){const r=`${Be}/${e.refs.vanilla_datapack_summary}/summary/flattened.min.json`;try{const e=await Ge(r);n.forEach((n=>{t.register(n.id,e[n.id])}))}catch(o){console.warn("Error occurred while fetching dynamic registries:",Ae(o))}}De(e.id,"1.18")&&t.register("worldgen/noise",Ue)}async function Je(e,t,n){console.debug(`[fetchPreset] ${t} ${n}`);const o=G.versions.find((t=>t.id===e));try{const r=`${Be}/${o.refs.vanilla_datapack_data}/data/minecraft/${t}/${n}.json`,a=await fetch(r);if("worldgen/noise_settings"===t&&"1.18"===e){let e=await a.text();e=e.replaceAll('"max_threshold": Infinity','"max_threshold": 100');const t=JSON.parse(e);return"overworld"!==n&&"large_biomes"!==n&&(t.noise.terrain_shaper={offset:0,factor:0,jaggedness:0}),t}return await a.json()}catch(r){console.warn(`Error occurred while fetching ${t} preset ${n}:`,Ae(r))}}function We(e){return`https://misode-cors-anywhere.herokuapp.com/https://resources.download.minecraft.net/${e.slice(0,2)}/${e}`}async function Ge(e,t=(e=>e)){try{const n=await caches.open("misode-v1");console.debug(`[getData] Opened cache misode-v1 ${e}`);const o=await n.match(e);if(o&&o.ok)return console.debug(`[getData] Retrieving cached data ${e}`),await o.json();console.debug(`[getData] fetching data ${e}`);const r=await fetch(e),a=t(await r.json());return await n.put(e,new Response(JSON.stringify(a))),a}catch(n){console.warn(`[getData] Failed to open cache misode-v1: ${Ae(n)}`),console.debug(`[getData] fetching data ${e}`);const o=await fetch(e);return t(await o.json())}}const Ue=["minecraft:aquifer_barrier","minecraft:aquifer_fluid_level_floodedness","minecraft:aquifer_fluid_level_spread","minecraft:aquifer_lava","minecraft:calcite","minecraft:cave_cheese","minecraft:cave_entrance","minecraft:cave_layer","minecraft:clay_bands_offset","minecraft:continentalness","minecraft:erosion","minecraft:gravel","minecraft:gravel_layer","minecraft:ice","minecraft:iceberg_and_badlands_pillar","minecraft:iceberg_and_badlands_pillar_roof","minecraft:jagged","minecraft:nether_state_selector","minecraft:nether_wart","minecraft:netherrack","minecraft:noodle","minecraft:noodle_ridge_a","minecraft:noodle_ridge_b","minecraft:noodle_thickness","minecraft:offset","minecraft:ore_gap","minecraft:ore_vein_a","minecraft:ore_vein_b","minecraft:ore_veininess","minecraft:packed_ice","minecraft:patch","minecraft:pillar","minecraft:pillar_rareness","minecraft:pillar_thickness","minecraft:powder_snow_surface","minecraft:powder_snow_under","minecraft:ridge","minecraft:soul_sand_layer","minecraft:spaghetti_2d","minecraft:spaghetti_2d_elevation","minecraft:spaghetti_2d_modulator","minecraft:spaghetti_2d_thickness","minecraft:spaghetti_3d_1","minecraft:spaghetti_3d_2","minecraft:spaghetti_3d_rarity","minecraft:spaghetti_3d_thickness","minecraft:spaghetti_roughness","minecraft:spaghetti_roughness_modulator","minecraft:surface","minecraft:surface_swamp","minecraft:temperature","minecraft:vegetation"];let Ye=!1;const Ze={temperature:[-1,1],humidity:[-1,1],continentalness:[-1.1,1],erosion:[-1,1],weirdness:[-1,1],offset:[-1,1],factor:[0,12],jaggedness:[0,1]};let qe,Ke;async function Xe(e,t){const n=[e,t.octaves,t.shaper.toJson(),`${t.seed}`,t.version];return Ee(n,qe)||(qe=ze(n),Ke=await async function(e,t){var n,o,r,a,i;switch(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,"")){case"fixed":return new A(e.biome);case"checkerboard":const n=(null!=(o=e.scale)?o:2)+2,l=null!=(a=null==(r=e.biomes)?void 0:r.length)?a:0;return{getBiome(t,o,r){var a;const i=(((t>>n)+(r>>n))%l+l)%l;return null==(a=e.biomes)?void 0:a[i].node}};case"multi_noise":switch(null==(i=e.preset)?void 0:i.replace(/^minecraft:/,"")){case"nether":e="1.18"===t.version?nt:tt;break;case"overworld":e="1.18"===t.version?await async function(){return(await Je("1.18","dimension","overworld")).generator.biome_source}():e}if(e=p.DataModel.unwrapLists(e),"1.18"===t.version){await async function(){Ye||(await z(E),Ye=!0,console.debug(`Loaded deepslate-rs from "${E}"`))}();const n=new Ve,o=e=>"number"==typeof e?[e,e]:e,[r,a,i,l,c,d,u,m,h,p,f,g,v,_]=[[],[],[],[],[],[],[],[],[],[],[],[],[],[]];for(const t of e.biomes){const{temperature:e,humidity:s,continentalness:w,erosion:y,weirdness:b,depth:x,offset:k}=t.parameters;r.push(o(e)[0]),a.push(o(e)[1]),i.push(o(s)[0]),l.push(o(s)[1]),c.push(o(w)[0]),d.push(o(w)[1]),u.push(o(y)[0]),m.push(o(y)[1]),h.push(o(b)[0]),p.push(o(b)[1]),f.push(o(x)[0]),g.push(o(x)[1]),v.push(k),_.push(n.getOrPut(t.biome,Math.floor(2147483647*Math.random())))}const C=w(new Float64Array(r),new Float64Array(a),new Float64Array(i),new Float64Array(l),new Float64Array(c),new Float64Array(d),new Float64Array(u),new Float64Array(m),new Float64Array(h),new Float64Array(p),new Float64Array(f),new Float64Array(g),new Float64Array(v),new Int32Array(_)),M=y(t.seed,t.octaves.temperature.firstOctave,new Float64Array(t.octaves.temperature.amplitudes),t.octaves.humidity.firstOctave,new Float64Array(t.octaves.humidity.amplitudes),t.octaves.continentalness.firstOctave,new Float64Array(t.octaves.continentalness.amplitudes),t.octaves.erosion.firstOctave,new Float64Array(t.octaves.erosion.amplitudes),t.octaves.weirdness.firstOctave,new Float64Array(t.octaves.weirdness.amplitudes),t.octaves.shift.firstOctave,new Float64Array(t.octaves.shift.amplitudes));return{getBiome(e,t,o){var r;const a=b(C,M,e,e+1,1,t,t+1,1,o,o+1,1);return null!=(r=n.getA(a[0]))?r:"unknown"},getBiomes:(e,t,o,r,a,i,s,l,c)=>[...b(C,M,e,t,o,r,a,i,s,l,c)].map((e=>{var t;return null!=(t=n.getA(e))?t:"unknown"})),getClimate(e,n,o,r,a,i,l,c,d,u){const m=x(M,n,o,r,a,i,l,c,d,u),h=[];for(let p=0;p{var r;const a=e[`${n}_noise`];return a.firstOctave=ke(null!=(r=a.firstOctave)?r:-7,-100,-1),new C(new M(t.seed+BigInt(o)),a)}));return Array.isArray(e.biomes)&&0!==e.biomes.length?{getBiome(t,o,r){const a=n.map((e=>e.sample(t,r,0)));let i=1/0,s="";for(const{biome:n,parameters:l}of e.biomes){const e=xe(l.altitude-a[0])+xe(l.temperature-a[1])+xe(l.humidity-a[2])+xe(l.weirdness-a[3])+xe(l.offset);eo.nextFloat(),nextInt:e=>o.nextInt(e),sampleInt(e){return lt(e,this)}};for(let i=0;i=n.size[0]||i[1]>=n.size[1]||i[2]>=n.size[2])continue;const e=i[2]*(4*t.width)+4*i[0],o=s{ut(t,null==e?void 0:e.decorator,n).forEach((t=>dt(t,null==e?void 0:e.feature,n)))},random_boolean_selector:(e,t,n)=>{dt(t,n.nextFloat()<.5?null==e?void 0:e.feature_true:null==e?void 0:e.feature_false,n)},random_selector:(e,t,n)=>{var o,r;for(const a of null!=(o=null==e?void 0:e.features)?o:[])if(n.nextFloat()<(null!=(r=null==a?void 0:a.chance)?r:0))return void dt(t,a.feature,n);dt(t,null==e?void 0:e.default,n)},simple_random_selector:(e,t,n)=>{var o,r,a;dt(t,null==(a=null==e?void 0:e.features)?void 0:a[n.nextInt(null!=(r=null==(o=null==e?void 0:e.features)?void 0:o.length)?r:0)],n)}},ht={chance:(e,t,n)=>{var o;return n.nextFloat()<1/(null!=(o=null==e?void 0:e.chance)?o:1)?[t]:[]},count:(e,t,n)=>{var o;return new Array(n.sampleInt(null!=(o=null==e?void 0:e.count)?o:1)).fill(t)},count_extra:(e,t,n)=>{var o,r;let a=null!=(o=null==e?void 0:e.count)?o:1;return n.nextFloat(){var o;return new Array(n.sampleInt(null!=(o=null==e?void 0:e.count)?o:1)).fill(t).map((e=>[e[0]+n.nextInt(16),e[1],e[2]+n.nextInt(16)]))},count_noise:(e,t,n)=>{const o=n.biomeInfoNoise.sample(t[0]/200,0,t[2]/200){var o;const r=Math.max(1,e.noise_factor),a=n.biomeInfoNoise.sample(t[0]/r,0,t[2]/r),i=Math.max(0,Math.ceil((a+(null!=(o=e.noise_offset)?o:0))*e.noise_to_count_ratio));return new Array(i).fill(t)},dark_oak_tree:(e,t,n)=>[...new Array(16)].map(((e,o)=>{const r=4*Math.floor(o/4)+1+n.nextInt(3)+t[0];return[r,Math.max(n.seaLevel,ot[ke(0,63,r)]),4*Math.floor(o%4)+1+n.nextInt(3)+t[2]]})),decorated:(e,t,n)=>ut(t,null==e?void 0:e.outer,n).flatMap((t=>ut(t,null==e?void 0:e.inner,n))),depth_average:(e,t,n)=>{var o,r,a,i;return st(t,n.nextInt(null!=(o=null==e?void 0:e.spread)?o:0)+n.nextInt(null!=(r=null==e?void 0:e.spread)?r:0)-(null!=(a=e.spread)?a:0)+(null!=(i=null==e?void 0:e.baseline)?i:0))},emerald_ore:(e,t,n)=>{const o=3+n.nextInt(6);return[...new Array(o)].map((()=>[t[0]+n.nextInt(16),4+n.nextInt(28),t[2]+n.nextInt(16)]))},fire:(e,t,n)=>{const o=1+n.nextInt(n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(o)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},glowstone:(e,t,n)=>{const o=n.nextInt(1+n.nextInt(n.sampleInt(null==e?void 0:e.count)));return[...new Array(o)].map((()=>[t[0]+n.nextInt(16),n.nextInt(128),t[2]+n.nextInt(16)]))},heightmap:(e,t,n)=>st(t,Math.max(n.seaLevel,ot[ke(0,63,t[0])])),heightmap_spread_double:(e,t,n)=>{const o=Math.max(n.seaLevel,ot[ke(0,63,t[0])]);return st(t,n.nextInt(2*o))},heightmap_world_surface:(e,t,n)=>st(t,Math.max(n.seaLevel,ot[ke(0,63,t[0])])),iceberg:(e,t,n)=>[[t[0]+4+n.nextInt(8),t[1],t[2]+4+n.nextInt(8)]],lava_lake:(e,t,n)=>{var o,r;if(0===n.nextInt((null!=(o=e.chance)?o:1)/10)){const o=n.nextInt(n.nextInt(248)+8);if(o[t],range:(e,t,n)=>{var o,r,a;return st(t,n.nextInt((null!=(o=null==e?void 0:e.maximum)?o:1)-(null!=(r=null==e?void 0:e.top_offset)?r:0))+(null!=(a=null==e?void 0:e.bottom_offset)?a:0))},range_biased:(e,t,n)=>{var o,r,a;return st(t,n.nextInt(n.nextInt((null!=(o=null==e?void 0:e.maximum)?o:1)-(null!=(r=null==e?void 0:e.top_offset)?r:0))+(null!=(a=null==e?void 0:e.bottom_offset)?a:0)))},range_very_biased:(e,t,n)=>{var o,r,a,i;return st(t,n.nextInt(n.nextInt(n.nextInt((null!=(o=null==e?void 0:e.maximum)?o:1)-(null!=(r=null==e?void 0:e.top_offset)?r:0))+(null!=(a=null==e?void 0:e.bottom_offset)?a:0))+(null!=(i=null==e?void 0:e.bottom_offset)?i:0)))},spread_32_above:(e,t,n)=>st(t,n.nextInt(t[1]+32)),top_solid_heightmap:(e,t)=>st(t,ot[ke(0,63,t[0])]),magma:(e,t,n)=>st(t,n.nextInt(t[1]+32)),square:(e,t,n)=>[[t[0]+n.nextInt(16),t[1],t[2]+n.nextInt(16)]],surface_relative_threshold:(e,t)=>{var n,o;const r=ot[ke(0,63,t[0])],a=r+(null!=(n=null==e?void 0:e.min_inclusive)?n:-1/0),i=r+(null!=(o=null==e?void 0:e.max_inclusive)?o:1/0);return t[1]i?[t]:[]},water_lake:(e,t,n)=>{var o;return 0===n.nextInt(null!=(o=e.chance)?o:1)?[[t[0]+n.nextInt(16),n.nextInt(256),t[2]+n.nextInt(16)]]:[]}};class pt{constructor(e){this.settings={},this.chunkWidth=4,this.chunkHeight=4,this.chunkCountY=32,this.biomeDepth=.1,this.biomeScale=.2,this.noiseColumnCache=[],this.xOffset=0;const t=new M(e);this.minLimitPerlinNoise=new V(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.maxLimitPerlinNoise=new V(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]),this.mainPerlinNoise=new V(t,-7,[1,1,1,1,1,1,1,1]),this.depthNoise=new V(t,-15,[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])}reset(e,t,n,o,r){this.settings=e,this.chunkWidth=4*e.size_horizontal,this.chunkHeight=4*e.size_vertical,this.chunkCountY=Math.floor(e.height/this.chunkHeight),e.amplified&&t>0&&(t=1+2*t,n=1+4*n),this.biomeDepth=.265625*(.5*t-.125),this.biomeScale=96/(.9*n+.1),this.noiseColumnCache=Array(r).fill(null),this.xOffset=o}iterateNoiseColumn(e){const t=Array(this.chunkCountY*this.chunkHeight),n=Math.floor(e/this.chunkWidth),o=Math.floor(e%this.chunkWidth)/this.chunkWidth,r=this.fillNoiseColumn(n),a=this.fillNoiseColumn(n+1);for(let m=this.chunkCountY-1;m>=0;m-=1)for(let e=this.chunkHeight;e>=0;e-=1){const n=e/this.chunkHeight;t[m*this.chunkHeight+e]=(i=n,s=o,l=r[m],c=r[m+1],d=a[m],u=a[m+1],Me(s,Me(i,l,c),Me(i,d,u)))}var i,s,l,c,d,u;return t}fillNoiseColumn(e){const t=this.noiseColumnCache[e-this.xOffset];if(t)return t;const n=Array(this.chunkCountY+1),o=684.412*this.settings.sampling.xz_scale,r=684.412*this.settings.sampling.y_scale,a=o/this.settings.sampling.xz_factor,i=r/this.settings.sampling.y_factor,s=this.settings.random_density_offset?this.getRandomDensity(e):0;for(let l=0;l<=this.chunkCountY;l+=1){let t=this.sampleAndClampNoise(e,l,this.mainPerlinNoise.getOctaveNoise(0).zo,o,r,a,i);const c=((1-2*l/this.chunkCountY+s)*this.settings.density_factor+this.settings.density_offset+this.biomeDepth)*this.biomeScale;t+=c*(c>0?4:1),this.settings.top_slide.size>0&&(t=Ce(this.settings.top_slide.target,t,(this.chunkCountY-l-this.settings.top_slide.offset)/this.settings.top_slide.size)),this.settings.bottom_slide.size>0&&(t=Ce(this.settings.bottom_slide.target,t,(l-this.settings.bottom_slide.offset)/this.settings.bottom_slide.size)),n[l]=t}return this.noiseColumnCache[e-this.xOffset]=n,n}getRandomDensity(e){const t=this.depthNoise.sample(200*e,10,this.depthNoise.getOctaveNoise(0).zo,1,0,!0),n=24.575625*(t<0?.3*-t:t)-2;return n<0?.009486607142857142*n:.006640625*Math.min(n,1)}sampleAndClampNoise(e,t,n,o,r,a,i){let s=0,l=0,c=0,d=1;for(let u=0;u<16;u+=1){const m=V.wrap(e*o*d),h=V.wrap(t*r*d),p=V.wrap(n*o*d),f=r*d,g=this.minLimitPerlinNoise.getOctaveNoise(u);g&&(s+=g.sample(m,h,p,f,t*f)/d);const v=this.maxLimitPerlinNoise.getOctaveNoise(u);if(v&&(l+=v.sample(m,h,p,f,t*f)/d),u<8){const o=this.mainPerlinNoise.getOctaveNoise(u);o&&(c+=o.sample(V.wrap(e*a*d),V.wrap(t*i*d),V.wrap(n*a*d),i*d,t*i*d)/d)}d/=2}return Ce(s/512,l/512,(c/10+1)/2)}}const ft={"minecraft:air":[150,160,170],"minecraft:water":[20,80,170],"minecraft:lava":[200,100,0],"minecraft:stone":[50,50,50],"minecraft:netherrack":[100,40,40],"minecraft:end_stone":[200,200,140]};let gt,vt,_t=[];function wt(e,t,n){var o,r,a;if(De(n.version,"1.18")){const{settings:r,generator:a}=function(e,t){const n=j.fromJson(p.DataModel.unwrapLists(e));n.octaves=Mt(n);const o=[e,`${t.seed}`];if(!Ee(o,gt)){gt=ze(o),_t=[];const e=new A("unknown");vt=new I(t.seed,e,n)}return{settings:n,generator:vt}}(e,n),i=new bt(-n.offset,n.width,r.noise.minY,r.noise.height);i.fill(a);const s=t.data;for(let e=0;e0?0:e[t+1]>0?150:255}class bt{constructor(e,t,n,o){this.minX=e,this.filled=[],this.chunks=[...Array(Math.ceil(t/16)+1)].map(((t,r)=>{const a=(e>>4)+r,i=_t.find((e=>e.pos[0]===a));return i?(this.filled[r]=!0,i):new O(n,o,$.create(a,0))}))}fill(e){this.chunks.forEach(((t,n)=>{this.filled[n]||(e.fill(t),this.filled[n]=!0,_t.push(t))}))}getBlockState(e){const t=(e[0]>>4)-(this.minX>>4);return this.chunks[t].getBlockState(e)}}const xt=["biomes","temperature","humidity","continentalness","erosion","weirdness","offset","factor","jaggedness"],kt=k.overworld(),Ct=({model:e,data:t,shown:n,lang:o,version:r})=>{var a;const[i,s]=m(2),[l,h]=m(void 0),[f,g]=m(new Set(["biomes"])),v=u([0,0]),_=u(1),w=u(void 0),y=BigInt(e.get(new p.Path(["generator","seed"]))),b=Mt(e.get(new p.Path(["generator","settings"]))),x=function(e){var t;if("string"==typeof e)switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return kt;default:return k.fromJson({offset:0,factor:0,jaggedness:0})}return k.fromJson(p.DataModel.unwrapLists(null==(t=null==e?void 0:e.noise)?void 0:t.terrain_shaper))}(e.get(new p.Path(["generator","settings"]))),C=n?function(e,t,n){return JSON.stringify([e,t,n.toJson()])}(t,b,x):"",M=null==(a=t.type)?void 0:a.replace(/^minecraft:/,""),{canvas:A,redraw:z}=q({size:()=>[200/_.current,200/_.current],async draw(e){const n={octaves:b,shaper:x,biomeColors:{},layers:f,offset:v.current,scale:i,seed:y,res:_.current,version:r};await async function(e,t,n){var o,r,a;const{biomeSource:i}=await Xe(e,n),s=t.data,l=-Math.round(n.offset[0])-100+n.res/2,c=-Math.round(n.offset[1])-100+n.res/2,d=4*t.width/n.res,u=4/n.res,m=[l*n.scale,(200+l)*n.scale,n.res*n.scale],h=[c*n.scale,(200+c)*n.scale,n.res*n.scale],p=n.layers.has("biomes")?null==(o=i.getBiomes)?void 0:o.call(i,...m,64,65,1,...h):void 0,f=[...n.layers].filter((e=>"biomes"!==e)),g=0===f.length||null==(r=i.getClimate)?void 0:r.call(i,new Set(f),...m,64,65,1,...h);for(let v=0;v<200;v+=n.res)for(let e=0;e<200;e+=n.res){const t=e*d+v*u,o=v/n.res*200/n.res+e/n.res,r=(v+l)*n.scale,m=(e+c)*n.scale;let h=[50,50,50];if(n.layers.has("biomes"))h=Qe(null!=(a=null==p?void 0:p[o])?a:i.getBiome(r,64,m),n.biomeColors);else if(g&&f[0]){const e=g[o][f[0]],[t,n]=Ze[f[0]],r=(e-t)/(n-t)*256;h=[r,r,r]}s[t]=h[0],s[t+1]=h[1],s[t+2]=h[2],s[t+3]=255}}(t,e,n),4===_.current&&(clearTimeout(w.current),w.current=setTimeout((()=>{_.current=1,z()}),150))},async onDrag(e,t){v.current[0]=v.current[0]+200*e,v.current[1]=v.current[1]+200*t,clearTimeout(w.current),_.current="multi_noise"===M?4:1,z()},async onHover(e,n){const o={octaves:b,shaper:x,biomeColors:{},layers:f,offset:v.current,scale:i,seed:y,res:1,version:r},a=await async function(e,t,n,o){const{biomeSource:r}=await Xe(e,o),[a,i]=function([e,t],n){return[(e-n.offset[0]-100+n.res/2)*n.scale,(t-n.offset[1]-100+n.res/2)*n.scale]}([t,n],o);return r.getBiome(a,64,i)}(t,Math.floor(200*e),Math.floor(200*n),o);h(a)},onLeave(){h(void 0)}},[C,i,y,f]);c((()=>{n&&(_.current="multi_noise"===M?4:1,z())}),[C,i,y,f,n]);const E=e=>{v.current[0]=v.current[0]*i/e,v.current[1]=v.current[1]*i/e,s(e)};return d(S,null,d("div",{class:"controls"},l&&d(Y,{label:l,class:"no-pointer"}),"multi_noise"===M&&d(Q,{icon:"stack",tooltip:me(o,"configure_layers")},xt.map((e=>{const t=f.has(e);return d(Y,{label:me(o,`layer.${e}`),active:t,tooltip:me(o,t?"enabled":"disabled"),onClick:t=>{g(new Set([e])),t.stopPropagation()}})}))),("multi_noise"===M||"checkerboard"===M)&&d(S,null,d(Y,{icon:"dash",tooltip:me(o,"zoom_out"),onClick:()=>E(1.5*i)}),d(Y,{icon:"plus",tooltip:me(o,"zoom_in"),onClick:()=>E(i/1.5)})),"multi_noise"===M&&d(Y,{icon:"sync",tooltip:me(o,"generate_new_seed"),onClick:()=>_e(e)})),d("canvas",{ref:A,width:"200",height:"200"}))};function Mt(e){if("string"!=typeof e){const t=j.fromJson(p.DataModel.unwrapLists(e));e=0===t.noise.densityFactor&&-.030078125===t.noise.densityOffset?"minecraft:nether":"minecraft:overworld"}switch(e.replace(/^minecraft:/,"")){case"overworld":case"amplified":return{temperature:{firstOctave:-9,amplitudes:[1.5,0,1,0,0,0]},humidity:{firstOctave:-7,amplitudes:[1,1,0,0,0,0]},continentalness:{firstOctave:-9,amplitudes:[1,1,2,2,2,1,1,1,1]},erosion:{firstOctave:-9,amplitudes:[1,1,0,1,1]},weirdness:{firstOctave:-7,amplitudes:[1,2,1,0,0,0]},shift:{firstOctave:-3,amplitudes:[1,1,1,0]}};case"end":case"floating_islands":return{temperature:{firstOctave:0,amplitudes:[0]},humidity:{firstOctave:0,amplitudes:[0]},continentalness:{firstOctave:0,amplitudes:[0]},erosion:{firstOctave:0,amplitudes:[0]},weirdness:{firstOctave:0,amplitudes:[0]},shift:{firstOctave:0,amplitudes:[0]}};default:return{temperature:{firstOctave:-7,amplitudes:[1,1]},humidity:{firstOctave:-7,amplitudes:[1,1]},continentalness:{firstOctave:-7,amplitudes:[1,1]},erosion:{firstOctave:-7,amplitudes:[1,1]},weirdness:{firstOctave:-7,amplitudes:[1,1]},shift:{firstOctave:0,amplitudes:[0]}}}}const At=({data:e,version:t,shown:n,lang:o})=>{const[r,a]=m(4),[i,s]=m(ve()),{canvas:l,redraw:u}=q({size:()=>[16*r,16*r],async draw(n){at(e,n,{seed:i,version:t,size:[16*r,128,16*r]})}}),h=JSON.stringify(e);return c((()=>{n&&u()}),[h,r,i,n]),d(S,null,d("div",{class:"controls"},d(Y,{icon:"dash",tooltip:me(o,"zoom_out"),onClick:()=>a(Math.min(16,r+1))}),d(Y,{icon:"plus",tooltip:me(o,"zoom_in"),onClick:()=>a(Math.max(1,r-1))}),d(Y,{icon:"sync",tooltip:me(o,"generate_new_seed"),onClick:()=>s(ve())})),d("canvas",{ref:l,width:"64",height:"64"}))},zt=({lang:e,data:t,shown:n,version:o})=>{const[r,a]=m(ve()),[i,s]=m(2),l=u([0,0]),h=JSON.stringify([t]),{canvas:f,redraw:g}=q({size:()=>[256,256],async draw(e){const n={offset:l.current,scale:i,seed:r,version:o};!function(e,t,n){const o=new M(n.seed),r=L.fromJson(p.DataModel.unwrapLists(e)),a=new C(o,r),i=-n.offset[0]-100,s=-n.offset[1]-100,l=t.data;for(let c=0;c<256;c+=1)for(let e=0;e<256;e+=1){const t=4*c+4*e*256,o=(c+i)*n.scale,r=(e+s)*n.scale,d=128*(a.sample(o,r,0)+1);l[t]=d,l[t+1]=d,l[t+2]=d,l[t+3]=255}}(t,e,n)},async onDrag(e,t){l.current[0]=l.current[0]+256*e,l.current[1]=l.current[1]+256*t,g()}},[h,i,r]);c((()=>{n&&g()}),[h,i,r,n]);const v=e=>{l.current[0]=l.current[0]*i/e,l.current[1]=l.current[1]*i/e,s(e)};return d(S,null,d("div",{class:"controls"},d(Y,{icon:"dash",tooltip:me(e,"zoom_out"),onClick:()=>v(1.5*i)}),d(Y,{icon:"plus",tooltip:me(e,"zoom_in"),onClick:()=>v(i/1.5)}),d(Y,{icon:"sync",tooltip:me(e,"generate_new_seed"),onClick:()=>a(ve())})),d("canvas",{ref:f,width:"256",height:"256"}))},Et=({lang:e,data:t,shown:n,version:o})=>{var r,a;const i=me.bind(null,e),[s,l]=m(ve()),[h,p]=m(.2),[f,g]=m(.1),[v,_]=m(void 0),w=u(0),y=JSON.stringify([t,h,f]),b=null!=(a=null==(r=null==t?void 0:t.noise)?void 0:r.height)?a:256,{canvas:x,redraw:k}=q({size:()=>[b,b],async draw(e){const n={biomeDepth:f,biomeScale:h,offset:w.current,width:e.width,seed:s,version:o};wt(t,e,n)},async onDrag(e){w.current+=e*b,k()},async onHover(e,n){var o,r;const a=b-Math.max(1,Math.ceil(n*b))+(null!=(r=null==(o=null==t?void 0:t.noise)?void 0:o.min_y)?r:0);_(`${a}`)},onLeave(){_(void 0)}},[y,s]);return c((()=>{n&&k()}),[y,s,n]),d(S,null,d("div",{class:"controls"},v&&d(Y,{label:`Y = ${v}`,class:"no-pointer"}),De(o,void 0,"1.17")&&d(Q,{icon:"gear",tooltip:me(e,"terrain_settings")},d(Z,{label:i("preview.scale"),value:`${h}`,onChange:e=>p(Number(e))}),d(Z,{label:i("preview.depth"),value:`${f}`,onChange:e=>g(Number(e))})),d(Y,{icon:"sync",tooltip:me(e,"generate_new_seed"),onClick:()=>l(ve())})),d("canvas",{ref:x,width:b,height:b}))},Vt=["dimension","worldgen/noise","worldgen/noise_settings","worldgen/configured_feature"];function jt({lang:e,model:t,version:n,id:o,shown:r}){var a;const[,i]=m(0);if(X(t,(()=>{i((e=>e+1))})),"dimension"===o&&(null==(a=null==t?void 0:t.get(new p.Path(["generator","type"])))?void 0:a.endsWith("noise"))){const o=t.get(new p.Path(["generator","biome_source"]));if(o)return d(Ct,s({},{lang:e,model:t,version:n,shown:r,data:o}))}if("worldgen/noise"===o&&t){const o=t.get(new p.Path([]));if(o)return d(zt,s({},{lang:e,model:t,version:n,shown:r,data:o}))}if("worldgen/noise_settings"===o&&t){const o=t.get(new p.Path([]));if(o)return d(Et,s({},{lang:e,model:t,version:n,shown:r,data:o}))}if("worldgen/configured_feature"===o&&t){const o=t.get(new p.Path([]));if(o)return d(At,s({},{lang:e,model:t,version:n,shown:r,data:o}))}return d(S,null)}const It={base:({},e,t)=>t,choice({switchNode:e},t,n,o){return e.hook(this,t,n,o)},list({children:e},t,n,o){return Array.isArray(n)?n.map(((n,r)=>e.hook(this,t.push(r),n.node,o))):n},map({children:e,config:t},n,o,r){var a,i;if(void 0===o)return;const s="block_state_map"===(null==(a=t.validation)?void 0:a.validator)?null==(i=r.blockStates)?void 0:i[p.relativePath(n,t.validation.params.id).get()]:null,l={};return Object.keys(o).forEach((t=>{var a;s&&!Object.keys(null!=(a=s.properties)?a:{}).includes(t)||(l[t]=e.hook(this,n.push(t),o[t],r))})),l},object({getActiveFields:e},t,n,o){if(null==n||"object"!=typeof n)return n;const r={},a=e(t);return Object.keys(a).filter((e=>a[e].enabled(t))).forEach((e=>{r[e]=a[e].hook(this,t.push(e),n[e],o)})),r}};var Ot,$t;($t=Ot||(Ot={})).ID_LANGUAGE="language",$t.ID_THEME="theme",$t.ID_VERSION="schema_version",$t.ID_INDENT="indentation",$t.ID_SOUNDS_VERSION="minecraft_sounds_version",$t.getLanguage=function(){var e;return null!=(e=localStorage.getItem($t.ID_LANGUAGE))?e:"en"},$t.getTheme=function(){var e;return null!=(e=localStorage.getItem($t.ID_THEME))?e:"dark"},$t.getVersion=function(){const e=localStorage.getItem($t.ID_VERSION);return e&&je.includes(e)?e:"1.17"},$t.getIndent=function(){var e;return null!=(e=localStorage.getItem($t.ID_INDENT))?e:"2_spaces"},$t.getSoundsVersion=function(){var e;return null!=(e=localStorage.getItem($t.ID_SOUNDS_VERSION))?e:"latest"},$t.setLanguage=function(e){e&&localStorage.setItem($t.ID_LANGUAGE,e)},$t.setTheme=function(e){e&&localStorage.setItem($t.ID_THEME,e)},$t.setVersion=function(e){e&&localStorage.setItem($t.ID_VERSION,e)},$t.setIndent=function(e){e&&localStorage.setItem($t.ID_INDENT,e)},$t.setSoundsVersion=function(e){e&&localStorage.setItem($t.ID_SOUNDS_VERSION,e)};const Lt={"2_spaces":2,"4_spaces":4,tabs:"\t"};function St({lang:e,name:t,model:n,blockStates:o,doCopy:r,doDownload:a,doImport:i,copySuccess:s,onError:l}){const h=me.bind(null,e),[f,g]=m(Ot.getIndent()),v=u(null),_=u(null),w=u(),y=P(((e,t)=>{const n=e.schema.hook(It,new p.ModelPath(e),e.data,{blockStates:t});return JSON.stringify(n,null,Lt[f])+"\n"}),[f]);c((()=>{w.current=()=>{if(n&&o)try{const e=y(n,o);e.length>=1e4?v.current.value=e.slice(0,1e4)+"\n\nOutput is too large to display (+10000 chars)\nExport to view complete output\n\n":v.current.value=e}catch(e){l(`Error getting JSON output: ${Ae(e)}`),console.error(e),v.current.value=""}}})),X(n,(()=>{w.current()})),c((()=>{n&&w.current()}),[n]),c((()=>{w.current()}),[f]);c((()=>{r&&n&&o&&navigator.clipboard.writeText(y(n,o)).then((()=>{s()}))}),[r]),c((()=>{if(a&&n&&o&&_.current){const e=encodeURIComponent(y(n,o));_.current.setAttribute("href",`data:text/json;charset=utf-8,${e}`),_.current.setAttribute("download",`${t}.json`),_.current.click()}}),[a]),c((()=>{i&&v.current&&(v.current.value="",v.current.select())}),[i]);return d(S,null,d("div",{class:"controls"},d(Q,{icon:"gear",tooltip:h("output_settings")},Object.entries(Lt).map((([e])=>d(Y,{label:h(`indentation.${e}`),active:f===e,onClick:()=>{return t=e,Ot.setIndent(t),void g(t);var t}}))))),d("textarea",{ref:v,class:"source",onBlur:()=>{try{const e=JSON.parse(v.current.value);null==n||n.reset(p.DataModel.wrapLists(e),!1)}catch(e){l(`Error importing: ${Ae(e)}`),console.error(e)}},spellcheck:!1,autocorrect:"off",placeholder:h("source_placeholder")}),d("a",{ref:_,style:"display: none;"}))}class Pt extends p.DataModel{constructor(e,t,n,o){super(e),this.mapper=t,this.getter=n,this.setter=o}map(e){return this.mapper(e)}get(e){return this.getter(e)}set(e,t,n){return this.setter(e,t,n)}}const Dt=["loot_table.type","loot_entry.type","function.function","condition.condition","criterion.trigger","recipe.type","dimension.generator.type","dimension.generator.biome_source.type","dimension.generator.biome_source.preset","carver.type","feature.type","decorator.type","feature.tree.minimum_size.type","block_state_provider.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","int_provider.type","float_provider.type","height_provider.type","structure_feature.type","surface_builder.type","processor.processor_type","rule_test.predicate_type","pos_rule_test.predicate_type","template_element.element_type","block_placer.type","block_predicate.type","material_rule.type","material_condition.type"],Nt=["number_provider.type","score_provider.type","nbt_provider.type","int_provider.type","float_provider.type","height_provider.type"],Bt=["feature.config","decorator.config","int_provider.value","float_provider.value","block_state_provider.simple_state_provider.state","block_state_provider.rotated_block_provider.state","block_state_provider.weighted_state_provider.entries.entry.data","rule_test.block_state","structure_feature.config","surface_builder.config","template_pool.elements.entry.element","decorator.block_survives_filter.state","material_rule.block.result_state"],Tt=["loot_entry.type","function.function","condition.condition","criterion.trigger","dimension.generator.type","dimension.generator.biome_source.type","feature.type","decorator.type","block_state_provider.type","feature.tree.minimum_size.type","trunk_placer.type","foliage_placer.type","tree_decorator.type","block_placer.type","rule_test.predicate_type","processor.processor_type","template_element.element_type","nbt_operation.op","number_provider.value","score_provider.name","score_provider.target","nbt_provider.source","nbt_provider.target","generator_biome.biome","block_predicate.type","material_rule.type","material_condition.type"],Ht=["function.set_nbt.tag","advancement.display.icon.nbt","text_component_object.nbt","entity.nbt","block.nbt","item.nbt"],Rt=["generator_biome.parameters.temperature","generator_biome.parameters.humidity","generator_biome.parameters.continentalness","generator_biome.parameters.erosion","generator_biome.parameters.depth","generator_biome.parameters.weirdness","feature.end_spike.crystal_beam_target","feature.end_gateway.exit","decorator.block_filter.offset","block_predicate.matching_blocks.offset","block_predicate.matching_fluids.offset"],Ft=new p.DataModel(p.MapNode(p.StringNode(),p.StringNode()),{historyMax:0});function Jt({model:e,lang:t,blockStates:n}){var o;const r=new p.ModelPath(e),[a,i,s]=e.schema.hook(Wt,r,ze(e.data),t,n,{});return(null==(o=null==i?void 0:i.props)?void 0:o.children.some((e=>e)))?d("div",{class:`node ${e.schema.type(r)}-node`,"data-category":e.schema.category(r)},d("div",{class:"node-header"},a,i),d("div",{class:"node-body"},s)):s}const Wt={base:()=>[null,null,null],boolean:(e,t,n,o,r,a)=>[null,d(Yt,s({},l(s({},e),{path:t,value:n,lang:o,states:r,ctx:a}))),null],choice({choices:e,config:t,switchNode:n},o,r,a,i,s){const l=n.activeCase(o,!0),c=(null==t?void 0:t.context)?new p.ModelPath(o.getModel(),new p.Path(o.getArray(),[t.context])):o,[u,m,h]=l.node.hook(this,c,r,a,i,s);if(1===e.length)return[u,m,h];const f=(null==t?void 0:t.choiceContext)?new p.Path([],[t.choiceContext]):(null==t?void 0:t.context)?new p.Path([],[t.context]):o,g=d("select",{value:l.type,onChange:n=>(n=>{var a,i,s;const c=null!=(a=e.find((e=>e.type===n)))?a:l,d=c.change?c.change(p.DataModel.unwrapLists(r)):"feature"===t.choiceContext?null==(s=null==(i=c.node.default())?void 0:i.config)?void 0:s.feature:c.node.default();o.model.set(o,p.DataModel.wrapLists(d))})(n.target.value)},e.map((e=>d("option",{value:e.type},en(a,f.contextPush(e.type))))));return[u,d(S,null,g,m),h]},list({children:e,config:t},n,o,r,a,i){const{expand:c,collapse:u,isToggled:h}=Ut(),[f,g]=m(50),v=n.getContext().join(".");if(Rt.includes(v)){return[d(S,null,[...Array(t.maxLength)].map(((e,t)=>d(tn,{lang:r,path:n.modelPush(t)}))),d("div",{class:"fixed-list"})),d(S,null,[...Array(t.maxLength)].map(((t,s)=>{var l;return e.hook(this,n.modelPush(s),null==(l=null==o?void 0:o[s])?void 0:l.node,r,a,i)[1]}))),null]}return[null,d("button",{class:"add tooltipped tip-se","aria-label":me(r,"add_top"),onClick:()=>{Array.isArray(o)||(o=[]);const t=p.DataModel.wrapLists(e.default());n.model.set(n,[{node:t,id:ge()},...o])}},ee.plus_circle),d(S,null,o&&Array.isArray(o)&&o.map((({node:t,id:m},p)=>{if(p===f)return d("div",{class:"node node-header"},d("label",null,me(r,"entries_hidden",""+(o.length-f))),d("button",{onClick:()=>g(Math.min(f+50,o.length))},me(r,"entries_hidden.more","50")),d("button",{onClick:()=>g(o.length)},me(r,"entries_hidden.all")));if(p>f)return null;const v=n.push(p).contextPush("entry"),_="object"===e.type(v),w=h(m);if(_&&(!1===w||void 0===w&&o.length>20))return d("div",{class:"node node-header","data-category":e.category(v)},d(tn,{lang:r,path:v,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${me(r,"expand")}\n${me(r,"expand_all","Ctrl")}`,onClick:c(m)},ee.chevron_right),d("label",null,en(r,v,`${p}`)),d(Gt,{key:m,path:v,value:t,schema:e}));return d(Kt,l(s({key:m,path:v,schema:e,value:t},{lang:r,states:a,actions:[{icon:"duplicate",label:"duplicate",onSelect:()=>{const e=[...n.get()];e.splice(p,0,{id:ge(),node:ze(t)}),n.model.set(n,e)}}]}),{ctx:l(s({},i),{index:(0===p?1:0)+(p===o.length-1?2:0)})}),_&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${me(r,"collapse")}\n${me(r,"collapse_all","Ctrl")}`,onClick:u(m)},ee.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":me(r,"remove"),onClick:()=>v.set(void 0)},ee.trashcan),o.length>1&&d("div",{class:"node-move"},d("button",{class:"move tooltipped tip-se","aria-label":me(r,"move_up"),onClick:()=>{const e=[...n.get()];[e[p-1],e[p]]=[e[p],e[p-1]],n.model.set(n,e)},disabled:0===p},ee.chevron_up),d("button",{class:"move tooltipped tip-se","aria-label":me(r,"move_down"),onClick:()=>{const e=[...n.get()];[e[p+1],e[p]]=[e[p],e[p+1]],n.model.set(n,e)},disabled:p===o.length-1},ee.chevron_down)))})),o&&o.length>0&&o.length<=f&&d("div",{class:"node node-header"},d("button",{class:"add tooltipped tip-se","aria-label":me(r,"add_bottom"),onClick:()=>{Array.isArray(o)||(o=[]);const t=p.DataModel.wrapLists(e.default());n.model.set(n,[...o,{node:t,id:ge()}])}},ee.plus_circle)))]},map({children:e,keys:t,config:n},o,r,a,i,c){var u,m,h,f,g;const{expand:v,collapse:_,isToggled:w}=Ut(),y=new p.ModelPath(Ft,new p.Path([Qt(o.toString())])),b="block_state_map"===(null==(u=n.validation)?void 0:u.validator)?null==i?void 0:i[p.relativePath(o,n.validation.params.id).get()]:null,x=(null==b?void 0:b.properties)?p.StringNode(null,{enum:Object.keys(null!=(m=b.properties)?m:{})}):t;if(b&&"Properties"===o.last()){"object"!=typeof r&&(r={});const e=Object.entries(null!=(h=b.properties)?h:{}).map((([e,t])=>[e,p.StringNode(null,{enum:t})]));return Object.entries(null!=(f=b.properties)?f:{}).forEach((([e,t])=>{"string"!=typeof r[e]?o.model.errors.add(o.push(e),"error.expected_string"):t.includes(r[e])||o.model.errors.add(o.push(e),"error.invalid_enum_option",r[e])})),p.ObjectNode(Object.fromEntries(e)).hook(this,o,r,a,i,c)}return[null,d(S,null,x.hook(this,y,null!=(g=y.get())?g:"",a,i,c)[1],d("button",{class:"add tooltipped tip-se","aria-label":me(a,"add"),onClick:()=>{const t=y.get();o.model.set(o.push(t),p.DataModel.wrapLists(e.default()))}},ee.plus_circle)),d(S,null,"object"==typeof r&&Object.entries(r).map((([t,n])=>{var u,m,h,f;const g=o.modelPush(t),y="object"===e.type(g),x=w(t);if(y&&(!1===x||void 0===x&&r.length>20))return d("div",{class:"node node-header","data-category":e.category(g)},d(tn,{lang:a,path:g,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${me(a,"expand")}\n${me(a,"expand_all","Ctrl")}`,onClick:v(t)},ee.chevron_right),d("label",null,t),d(Gt,{key:t,path:g,value:n,schema:e}));const k=b?p.StringNode(null,{enum:null!=(m=null==(u=b.properties)?void 0:u[t])?m:[]}):e;(null==(h=null==b?void 0:b.properties)?void 0:h[t])&&"string"==typeof n&&!(null==(f=b.properties)?void 0:f[t].includes(n))&&o.model.errors.add(g,"error.invalid_enum_option",n);return d(Kt,l(s({key:t,schema:k,path:g,value:n},{lang:a,states:i,ctx:c}),{label:t}),y&&d("button",{class:"toggle tooltipped tip-se","aria-label":`${me(a,"collapse")}\n${me(a,"collapse_all","Ctrl")}`,onClick:_(t)},ee.chevron_down),d("button",{class:"remove tooltipped tip-se","aria-label":me(a,"remove"),onClick:()=>g.set(void 0)},ee.trashcan))})))]},number:(e,t,n,o,r,a)=>[null,d(Zt,s({},l(s({},e),{path:t,value:n,lang:o,states:r,ctx:a}))),null],object({node:e,config:t,getActiveFields:n,getChildModelPath:o},r,a,i,c,u){var m;const{expand:h,isToggled:f}=Ut();if(0==r.getArray().length&&function(e,t){var n;return"feature"===e&&"decorated"===(null==(n=null==t?void 0:t.type)?void 0:n.replace(/^minecraft:/,""))&&pe(null==t?void 0:t.config)}(t.context,a)){const{wrapper:e,fields:t}=function(e,t,n){const o=[],r=rn(n,o),a={type:e.type,config:p.ObjectNode({decorators:p.ListNode(Le),feature:Se},{context:"feature.decorated"})},i=p.ObjectNode(a,{context:"feature"}),s=new p.Path(["config","feature"]),l=new p.Path(["config","decorators"]),c=t.getModel(),d=new Pt(i,(e=>{if(e.startsWith(s))return new p.Path([...[...Array(o.length-1)].flatMap((()=>["config","feature"])),...e.modelArr]);if(e.startsWith(l)){if(2===e.modelArr.length)return new p.Path([]);const t=e.modelArr[2];if("number"==typeof t)return new p.Path([...[...Array(t)].flatMap((()=>["config","feature"])),"config","decorator",...e.modelArr.slice(3)])}return e}),(e=>{if(e.equals(l)){const e=[];return rn(c.data,e),e}return c.get(d.map(e))}),((e,t,n)=>{if(e.startsWith(s)){const o=[];rn(c.data,o);const r=new p.Path([...[...Array(o.length-1)].flatMap((()=>["config","feature"])),...e.modelArr]);return c.set(r,t,n)}if(e.startsWith(l)){const o=e.modelArr[2];if(2===e.modelArr.length){const e=d.get(s);return c.set(new p.Path,an(e,t),n)}if("number"==typeof o){if(3===e.modelArr.length&&void 0===t){const e=d.get(s),t=[];rn(c.data,t),t.splice(o,1);const r=an(e,t);return c.set(new p.Path,r,n)}{const r=new p.Path([...[...Array(o)].flatMap((()=>["config","feature"])),"config","decorator",...e.modelArr.slice(3)]);return c.set(r,t,n)}}}c.set(e,t,n)}));return d.data={type:c.data.type,config:{decorators:o,feature:r}},d.errors=c.errors,{fields:a,wrapper:d}}(n(r),r,a);a=e.data,n=()=>t,o=(t,n)=>new p.ModelPath(e,new p.Path(t.getArray(),["feature"])).push(n)}let g=null,v=null;if(e.optional())if(void 0===a){const t=()=>r.set(p.DataModel.wrapLists(e.default()));v=d("button",{class:"collapse closed tooltipped tip-se","aria-label":me(i,"expand"),onClick:t},ee.plus_circle)}else{const e=()=>r.set(void 0);v=d("button",{class:"collapse open tooltipped tip-se","aria-label":me(i,"remove"),onClick:e},ee.trashcan)}const _="object"==typeof a&&null!==a&&(null==(m=e.default())?void 0:m.pools)?l(s({},u),{loot:null==a?void 0:a.type}):u,w=d(S,null,"object"==typeof a&&null!==a&&!(e.optional()&&void 0===a)&&Object.entries(n(r)).filter((([e,t])=>t.enabled(r))).map((([e,t])=>{var n,l,m,p;const w=o(r,e),y="object"===t.type(w),b=f(e);if(y&&(!1===b||void 0===b&&(null!=(n=u.depth)?n:0)>5))return d("div",{class:"node node-header","data-category":t.category(w)},d(tn,{lang:i,path:w,nested:!0}),d("button",{class:"toggle tooltipped tip-se","aria-label":`${me(i,"expand")}\n${me(i,"expand_all","Ctrl")}`,onClick:h(e)},ee.chevron_right),d("label",null,en(i,w)));const x=w.getContext().join(".");if(Nt.includes(x))return null;const[k,C,M]=t.hook(this,w,a[e],i,c,_);if(!(k||C||(null!=(p=null==(m=null==(l=null==M?void 0:M.props)?void 0:l.children)?void 0:m.length)?p:0)>0))return null;const A="object"===t.type(w)&&Bt.includes(x),z=Tt.includes(x);return A||z?(g=d(S,null,g,d(tn,{lang:i,path:w}),d(nn,{lang:i,path:w}),k),v=d(S,null,v,C),A?M:null):d(Kt,s({key:e,schema:t,path:w,value:a[e]},{lang:i,states:c,ctx:_}))})));return[g,v,w]},string:(e,t,n,o,r,a)=>[null,d(qt,s({},l(s({},e),{path:t,value:n,lang:o,states:r,ctx:a}))),null]};function Gt({path:e,value:t}){var n,o,r,a,i;switch(e.getContext().join(".")){case"loot_table.pools.entry":return d("label",null,null!=(o=null==(n=null==t?void 0:t.entries)?void 0:n.length)?o:0," entries");case"function.set_contents.entries.entry":case"loot_pool.entries.entry":return d("label",null,null!=(i=null==(r=null==t?void 0:t.name)?void 0:r.replace(/^minecraft:/,""))?i:null==(a=null==t?void 0:t.type)?void 0:a.replace(/^minecraft:/,""))}for(const s of Object.values(null!=t?t:{}))if("string"==typeof s)return d("label",null,s.replace(/^minecraft:/,""));return null}function Ut(){const[e,t]=m(new Map),[n,o]=m(void 0);return{expand:e=>n=>{n.ctrlKey?(t(new Map),o(!0)):t((t=>new Map(t.set(e,!0))))},collapse:e=>n=>{n.ctrlKey?(t(new Map),o(!1)):t((t=>new Map(t.set(e,!1))))},isToggled:t=>{var o;return e instanceof Map&&(null!=(o=e.get(t))?o:n)}}}function Yt({path:e,node:t,value:n,lang:o}){const r=o=>{e.model.set(e,t.optional()&&n===o?void 0:o)};return d(S,null,d("button",{class:!1===n?"selected":"",onClick:()=>r(!1)},me(o,"false")),d("button",{class:!0===n?"selected":"",onClick:()=>r(!0)},me(o,"true")))}function Zt({path:e,config:t,integer:n,value:o,lang:r}){var a;const i=t=>{const o=t.target.value,r=n?parseInt(o):parseFloat(o);e.model.set(e,r)};return d(S,null,d("input",{type:"text",value:null!=o?o:"",onBlur:i,onKeyDown:e=>{"Enter"===e.key&&i(e)}}),(null==t?void 0:t.color)&&d("input",{type:"color",value:"#"+(null!=(a=null==o?void 0:o.toString(16).padStart(6,"0"))?a:"000000"),onChange:t=>{const n=t.target.value,o=parseInt(n.slice(1),16);e.model.set(e,o)}}),["dimension.generator.seed","dimension.generator.biome_source.seed","world_settings.seed"].includes(e.getContext().join("."))&&d("button",{onClick:()=>_e(e.model),class:"tooltipped tip-se","aria-label":me(r,"generate_new_seed")},ee.sync))}function qt({path:e,getValues:t,config:n,node:o,value:r,lang:a,states:i}){var s;const l=t=>{t.stopPropagation();const n=t.target.value;n!==r&&e.model.set(e,0===n.length?void 0:n)},c=t(),u=e.getContext().join(".");if(Ht.includes(u))return d("textarea",{value:null!=r?r:"",onBlur:l});if(Xt(n)&&!n.additional||Dt.includes(u)){let t=new p.Path([]);return Xt(n)&&"string"==typeof n.enum?t=t.contextPush(n.enum):Xt(n)||"resource"!==(null==n?void 0:n.validator)||"string"!=typeof n.params.pool?Xt(n)&&(t=e):t=t.contextPush(n.params.pool),d("select",{value:null!=r?r:"",onChange:l},o.optional()&&d("option",{value:""},me(a,"unset")),c.map((e=>d("option",{value:e},en(a,t.contextPush(e.replace(/^minecraft:/,"")))))))}if(Xt(n)||"block_state_key"!==(null==n?void 0:n.validator)){const e=ge();return d(S,null,d("input",{value:null!=r?r:"",onBlur:l,onKeyDown:e=>{"Enter"===e.key&&l(e)},list:c.length>0?e:""}),c.length>0&&d("datalist",{id:e},c.map((e=>d("option",{value:e})))))}{const t=null==i?void 0:i[p.relativePath(e,n.params.id).get()],o=Object.keys(null!=(s=null==t?void 0:t.properties)?s:{});return d("select",{value:null!=r?r:"",onChange:l},o.map((e=>d("option",null,e))))}}const Kt=D((function({label:e,schema:t,path:n,value:o,lang:r,states:a,ctx:i,actions:c,children:u}){var m;const h=t.type(n),p=t.category(n),f=n.getContext().join("."),[g,v]=K(),_=l(s({},i),{depth:(null!=(m=i.depth)?m:0)+1});delete _.index;const[w,y,b]=t.hook(Wt,n,o,r,a,_);return d("div",{class:`node ${h}-node`,"data-category":p},d("div",{class:"node-header",onContextMenu:e=>{e.preventDefault(),v()}},d(tn,{lang:r,path:n}),d(nn,{lang:r,path:n}),u,w,d("label",null,null!=e?e:en(r,n,`${n.last()}`),g&&d("div",{class:"node-menu"},null==c?void 0:c.map((e=>{var t;return d("div",{key:e.label,class:"menu-item"},d(Y,{icon:e.icon,tooltip:me(r,e.label),tooltipLoc:"se",onClick:()=>e.onSelect()}),d("span",null,null!=(t=e.description)?t:me(r,e.label)))})),d("div",{class:"menu-item"},d(Y,{icon:"clippy",tooltip:me(r,"copy_context"),tooltipLoc:"se",onClick:()=>navigator.clipboard.writeText(f)}),d("span",null,f)))),y),b&&d("div",{class:"node-body"},b))}),((e,t)=>e.schema===t.schema&&e.lang===t.lang&&e.path.equals(t.path)&&Ee(e.ctx,t.ctx)&&Ee(e.value,t.value)));function Xt(e){return!!(null==e?void 0:e.enum)}function Qt(e){var t,n=0;for(t=0;te.path.startsWith(t))):t.model.errors.get(t,!0);if(0===r.length)return null;const a=me(e,r[0].error,...null!=(o=r[0].params)?o:[]);return on("node-error","issue_opened",a)}function nn({lang:e,path:t}){const n=t.contextPush("help").getContext().join("."),o=me(e,n);return o===n?null:on("node-help","info",o)}const on=(e,t,n)=>{const[o,r]=K();return d("div",{class:`node-icon ${e}${o?" show":""}`,onClick:r},ee[t],d("span",{class:"icon-popup"},n))};function rn(e,t){var n,o;return"decorated"!==(null==(n=null==e?void 0:e.type)?void 0:n.replace(/^minecraft:/,""))?e:pe(null==e?void 0:e.config)?(t.push({id:t.length,node:e.config.decorator}),rn(null!=(o=e.config.feature)?o:"",t)):e}function an(e,t){return 0===t.length?e:{type:"minecraft:decorated",config:{decorator:t.shift().node,feature:an(e,t)}}}function sn({lang:e,model:t,blockStates:n,onError:o}){if(!t||!n||"none"===e)return d(S,null);const[r]=N((e=>{o(`Error rendering the tree: ${e.message}`),console.error(e)}));if(r)return d(S,null);const[,a]=m(0);return X(t,(()=>{a((e=>e+1))})),d("div",{class:"tree"},d(Jt,s({},{model:t,lang:e,blockStates:n})))}const ln={system:"device_desktop",dark:"moon",light:"sun"};function cn({lang:e,title:t,version:n,theme:o,changeTheme:r,language:a,changeLanguage:i}){const s=me.bind(null,e),l=ye(B());return d("header",null,d("div",{class:"title"},d(T,{class:"home-link",href:"/","aria-label":s("home")},dn.home),d("h2",null,t),l&&d(Q,{icon:"chevron_down",tooltip:s("switch_generator")},G.generators.filter((e=>e.category===(null==l?void 0:l.category)&&De(n,e.minVersion))).map((e=>d(Y,{label:s(e.id),active:e.id===l.id,onClick:()=>H(we(e.url))}))))),d("nav",null,d("ul",null,d("li",null,d(Q,{icon:"globe",tooltip:s("language")},G.languages.map((({code:e,name:t})=>d(Y,{label:t,active:e===a,onClick:()=>i(e)}))))),d("li",null,d(Q,{icon:ln[o],tooltip:s("theme")},Object.entries(ln).map((([e,t])=>d(Y,{icon:t,label:s(`theme.${e}`),active:e===o,onClick:()=>r(e)}))))),d("li",{class:"dimmed"},d("a",{href:"https://github.com/misode/misode.github.io",target:"_blank",rel:"noreferrer",class:"tooltipped tip-sw","aria-label":s("github")},ee.mark_github)))))}const dn={home:d("svg",{width:"32",height:"28",viewBox:"0 0 32 28",fill:"none",xmlns:"http://www.w3.org/2000/svg"},d("rect",{width:"26",height:"6",rx:"3",fill:"#7CB45C"}),d("rect",{x:"8",width:"18",height:"6",rx:"3",fill:"#4BA041"}),d("rect",{y:"11",width:"32",height:"6",rx:"3",fill:"#AAA8A8"}),d("rect",{x:"11",y:"11",width:"21",height:"6",rx:"3",fill:"#91908F"}),d("rect",{x:"11",y:"22",width:"21",height:"6",rx:"3",fill:"#70B5C3"}),d("rect",{x:"17",y:"22",width:"15",height:"6",rx:"3",fill:"#4D989B"})),report:d("svg",{width:"30",height:"36",viewBox:"0 0 30 36",xmlns:"http://www.w3.org/2000/svg"},d("path",{d:"M0 16C0 13.7909 1.79086 12 4 12V12C6.20914 12 8 13.7909 8 16V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V16Z",fill:"#6ACC5D"}),d("path",{d:"M11 4C11 1.79086 12.7909 0 15 0V0C17.2091 0 19 1.79086 19 4V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V4Z",fill:"#FF4C4C"}),d("path",{d:"M22 10C22 7.79086 23.7909 6 26 6V6C28.2091 6 30 7.79086 30 10V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V10Z",fill:"#E5B442"}),d("path",{d:"M0 23C0 20.7909 1.79086 19 4 19V19C6.20914 19 8 20.7909 8 23V32C8 34.2091 6.20914 36 4 36V36C1.79086 36 0 34.2091 0 32V23Z",fill:"#2BAD1D"}),d("path",{d:"M11 15C11 12.7909 12.7909 11 15 11V11C17.2091 11 19 12.7909 19 15V32C19 34.2091 17.2091 36 15 36V36C12.7909 36 11 34.2091 11 32V15Z",fill:"#C10B0B"}),d("path",{d:"M22 19C22 16.7909 23.7909 15 26 15V15C28.2091 15 30 16.7909 30 19V32C30 34.2091 28.2091 36 26 36V36C23.7909 36 22 34.2091 22 32V19Z",fill:"#CC8E00"})),sounds:d("svg",{width:"20",height:"20",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg"},d("circle",{cx:"10",cy:"10",r:"10",fill:"#451475"}),d("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.5 10C3.5 8.27609 4.18482 6.62279 5.40381 5.40381C6.62279 4.18482 8.27609 3.5 10 3.5C11.7239 3.5 13.3772 4.18482 14.5962 5.40381C15.8152 6.62279 16.5 8.27609 16.5 10C16.5 11.7239 15.8152 13.3772 14.5962 14.5962C13.3772 15.8152 11.7239 16.5 10 16.5C8.27609 16.5 6.62279 15.8152 5.40381 14.5962C4.18482 13.3772 3.5 11.7239 3.5 10V10ZM10 2C7.87827 2 5.84344 2.84285 4.34315 4.34315C2.84285 5.84344 2 7.87827 2 10C2 12.1217 2.84285 14.1566 4.34315 15.6569C5.84344 17.1571 7.87827 18 10 18C12.1217 18 14.1566 17.1571 15.6569 15.6569C17.1571 14.1566 18 12.1217 18 10C18 7.87827 17.1571 5.84344 15.6569 4.34315C14.1566 2.84285 12.1217 2 10 2V2ZM8.379 7.227C8.34101 7.20412 8.29762 7.19175 8.25327 7.19117C8.20892 7.19059 8.16522 7.20181 8.12664 7.2237C8.08807 7.24558 8.05601 7.27733 8.03375 7.3157C8.0115 7.35406 7.99985 7.39765 8 7.442V12.559C8.00003 12.6033 8.0118 12.6467 8.03413 12.685C8.05646 12.7232 8.08854 12.7548 8.12708 12.7765C8.16563 12.7983 8.20926 12.8095 8.25352 12.8088C8.29778 12.8082 8.34108 12.7958 8.379 12.773L12.643 10.214C12.6798 10.1917 12.7103 10.1604 12.7315 10.1229C12.7526 10.0854 12.7638 10.043 12.7638 10C12.7638 9.95695 12.7526 9.91463 12.7315 9.87714C12.7103 9.83965 12.6798 9.80825 12.643 9.786L8.379 7.227Z",fill:"#C5A5E6"}))};function un({lang:e,assets:t,sounds:n,sound:o,delay:r,pitch:a,volume:i,onEdit:s,onDelete:l,delayedPlay:h}){const p=me.bind(null,e),[f,g]=m(!0),[v,_]=m(!1),[w,y]=m(!1),b=u([]),x=`playsound minecraft:${o} master @s ~ ~ ~ ${i} ${a}`;c((()=>{var e,r,s;const l=n[o];y(0===(null!=(r=null==(e=null==l?void 0:l.sounds)?void 0:e.length)?r:0)),b.current.forEach((e=>e.stop())),b.current=(null!=(s=null==l?void 0:l.sounds)?s:[]).map((e=>{const n="string"==typeof e?e:e.name,o=We(t[`minecraft/sounds/${n}.ogg`].hash),r=new R.Howl({src:[o],format:["ogg"],volume:i,rate:a});r.on("end",(()=>{_(!1)}));const s=()=>{f&&b.current.every((e=>"loaded"===e.state()))&&g(!1)};return"loaded"===r.state()?setTimeout((()=>s())):r.on("load",(()=>{s()})),r})),g(!0)}),[o,n]),c((()=>{b.current.forEach((e=>e.rate(a)))}),[a]),c((()=>{b.current.forEach((e=>e.volume(i)))}),[i]);const k=()=>{if(f||w)return;C();const e=Math.floor(Math.random()*b.current.length);b.current[e].play(),_(!0)},C=()=>{b.current.forEach((e=>e.stop()))};c((()=>{h&&setTimeout((()=>k()),50*r)}),[h]),c((()=>()=>C()),[]);const[M,A]=m(!1),z=u(void 0);return d("div",{class:`sound-config${f?" loading":v?" playing":""}${w?" invalid":""}`},d(Y,{class:"play",icon:w?"alert":f?"sync":"play",label:p("sounds.play"),onClick:k,tooltip:p(w?"sounds.unknown_sound":f?"sounds.loading_sound":"sounds.play_sound"),tooltipLoc:"se"}),d(oe,{class:"btn btn-input sound",list:"sound-list",spellcheck:!1,value:o,onChange:e=>s({sound:e})}),d("label",{class:"delay-label"},p("sounds.delay"),": "),d(re,{class:"btn btn-input delay",min:0,value:r,onChange:e=>s({delay:e})}),d("label",{class:"pitch-label"},p("sounds.pitch"),": "),d(ae,{class:"pitch tooltipped tip-s",min:.5,max:2,step:.01,"aria-label":a.toFixed(2),style:`--x: ${100/1.5*(a-.5)}%`,value:a,onChange:e=>s({pitch:e})}),d("label",{class:"volume-label"},p("sounds.volume"),": "),d(ae,{class:"volume tooltipped tip-s",min:0,max:1,step:.01,"aria-label":i.toFixed(2),style:`--x: ${100*i}%`,value:i,onChange:e=>s({volume:e})}),d(Y,{class:"copy"+(M?" active":""),icon:M?"check":"terminal",label:p("copy"),tooltip:p(M?"copied":"sounds.copy_command"),onClick:()=>{navigator.clipboard.writeText(x),A(!0),void 0!==z.current&&clearTimeout(z.current),z.current=setTimeout((()=>{A(!1)}),2e3)}}),d(Y,{class:"remove",icon:"trashcan",tooltip:p("sounds.remove_sound"),onClick:()=>{l(),C()}}))}function mn({title:e,link:t,icon:n,children:o}){return d("a",{class:"tool-card",href:t},n&&dn[n],d("div",null,d("h3",null,e),o))}function hn({lang:e,changeTitle:t,version:n,changeVersion:o}){var r;const a=me.bind(null,e),[i,h]=m(null),[f,g]=N();if(f)return d("main",null,d(te,{error:`Something went wrong rendering the generator: ${f.message}`,onDismiss:g}));const v=ye(B());if(!v)return d("main",null,d(te,{error:`Cannot find generator "${B()}"`}));const _=G.versions.filter((e=>De(e.id,v.minVersion,v.maxVersion))).map((e=>e.id));t(a("title.generator",a(v.id)),_),De(n,v.minVersion)||h(`The minimum version for this generator is ${v.minVersion}`);const[w,y]=m(null),[b,x]=m(null);c((()=>{h(null),y(null),async function(e){return(await Pe(e)).blockStates}(n).then((e=>x(e))),async function(e,t){var n;if(!Oe[t]||Oe[t].version!==e){const r=await Pe(e);Le=p.Reference(r.schemas,"configured_decorator"),Se=p.ChoiceNode([{type:"string",node:p.StringNode(r.collections,{validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:p.Reference(r.schemas,"configured_feature")}],{choiceContext:"feature"});const a=null==(n=G.generators.find((e=>e.id===t)))?void 0:n.schema;if(!a)throw new Error(`Cannot find model ${t}`);try{const n=r.schemas.get(a),o=new p.DataModel(n,{wrapLists:!0});Oe[t]?o.reset(Oe[t].model.data,!1):(o.validate(!0),o.history=[JSON.stringify(o.data)]),Oe[t]={model:o,version:e}}catch(o){const n=new Error(`Cannot get generator "${t}" for version "${e}": ${Ae(o)}`);throw o instanceof Error&&(n.stack=o.stack),n}}return Oe[t].model}(n,v.id).then((e=>{W.setGenerator(v.id),y(e)})).catch((e=>{console.error(e),h(Ae(e))}))}),[n,v.id]),X(w,(()=>{h(null)}));const k=e=>{e.ctrlKey&&"z"===e.key?(W.generatorEvent("undo","Hotkey"),null==w||w.undo()):e.ctrlKey&&"y"===e.key&&(W.generatorEvent("redo","Hotkey"),null==w||w.redo())};c((()=>(document.addEventListener("keyup",k),()=>{document.removeEventListener("keyup",k)})),[w]);const[C,M]=m(""),[A,z]=m([]);c((()=>{(async function(e){return(await Pe(e)).collections})(n).then((e=>{const t=(null!=C?C:"").trim().split(" "),n=e.get(v.id).map((e=>e.slice(10))).filter((e=>t.every((t=>e.includes(t)))));n&&z(n)})).catch((e=>{console.error(e),h(e.message)}))}),[n,v.id,C]);const[E,V]=m(window.innerWidth>820),[j,I]=m(0),[O,$]=m(0),[L,P]=m(0),[D,T]=m(!1),H=u(void 0),[R,F]=m(!1),J=Vt.includes(v.id);R&&!J&&F(!1);let q=1;J&&(q+=1),E&&(q+=2);return d(S,null,d("main",{class:R?"has-preview":""},d(U,{id:"data-pack-generator",type:"text"}),d("div",{class:"controls"},d(Y,{icon:"upload",label:a("import"),onClick:()=>{W.generatorEvent("import"),V(!0),P(L+1)}}),d(Q,{icon:"archive",label:a("presets"),relative:!1},d(Z,{icon:"search",large:!0,value:C,onChange:M,doSelect:1,placeholder:a("search")}),d("div",{class:"result-list"},A.map((e=>d(Y,{label:e,onClick:()=>{return t=e,W.generatorEvent("load-preset",t),void Je(n,null!=(o=v.path)?o:v.id,t).then((e=>{var t,n;const o=null==w?void 0:w.get(new p.Path(["generator","seed"]));void 0!==(null==(t=null==e?void 0:e.generator)?void 0:t.seed)&&void 0!==o&&(e.generator.seed=o,void 0!==(null==(n=e.generator.biome_source)?void 0:n.seed)&&(e.generator.biome_source.seed=o)),null==w||w.reset(p.DataModel.wrapLists(e),!1)}));var t,o}})))),0===A.length&&d(Y,{label:a("no_presets")})),d(Q,{icon:"tag",label:n},_.reverse().map((e=>d(Y,{label:e,active:e===n,onClick:()=>o(e)})))),d(Q,{icon:"kebab_horizontal",tooltip:a("more")},d(Y,{icon:"history",label:a("reset"),onClick:()=>{W.generatorEvent("reset"),null==w||w.reset(p.DataModel.wrapLists(w.schema.default()),!0)}}),d(Y,{icon:"arrow_left",label:a("undo"),onClick:e=>{e.stopPropagation(),W.generatorEvent("undo","Menu"),null==w||w.undo()}}),d(Y,{icon:"arrow_right",label:a("redo"),onClick:e=>{e.stopPropagation(),W.generatorEvent("redo","Menu"),null==w||w.redo()}}))),i&&d(te,{error:i,onDismiss:()=>h(null)}),d(sn,l(s({},{lang:e,model:w,version:n,blockStates:b}),{onError:h}))),d("div",{class:"popup-actions",style:`--offset: -${8+50*q}px;`},d("div",{class:`popup-action action-preview${J?" shown":""} tooltipped tip-nw`,"aria-label":a(R?"hide_preview":"show_preview"),onClick:()=>{W.generatorEvent("toggle-preview",R?"hidden":"visible"),F(!R)}},R?ee.x_circle:ee.play),d("div",{class:`popup-action action-download${E?" shown":""} tooltipped tip-nw`,"aria-label":a("download"),onClick:()=>{W.generatorEvent("download"),$(O+1)}},ee.download),d("div",{class:`popup-action action-copy${E?" shown":""}${D?" active":""} tooltipped tip-nw`,"aria-label":a(D?"copied":"copy"),onClick:()=>{W.generatorEvent("copy"),I(j+1)}},D?ee.check:ee.clippy),d("div",{class:"popup-action action-code shown tooltipped tip-nw","aria-label":a(E?"hide_output":"show_output"),onClick:()=>{W.generatorEvent("toggle-output",E?"hidden":"visible"),V(!E),I(0),$(0),P(0)}},E?ee.chevron_right:ee.code)),d("div",{class:"popup-preview"+(R?" shown":"")},d(jt,l(s({},{lang:e,model:w,version:n,id:v.id}),{shown:R,onError:h}))),d("div",{class:"popup-source"+(E?" shown":"")},d(St,l(s({},{lang:e,model:w,blockStates:b,doCopy:j,doDownload:O,doImport:L}),{name:null!=(r=v.schema)?r:"data",copySuccess:()=>{T(!0),void 0!==H.current&&clearTimeout(H.current),H.current=setTimeout((()=>{T(!1)}),2e3)},onError:h}))))}function pn({lang:e,changeTitle:t}){const n=me.bind(null,e);return t(n("title.home")),d("main",null,d("div",{class:"home"},G.generators.filter((e=>!e.category)).map((e=>d(mn,{title:n(e.id),link:we(e.url)}))),d(mn,{title:n("worldgen"),link:"/worldgen/"}),d("hr",null),d(mn,{title:"Report Inspector",icon:"report",link:"https://misode.github.io/report/"},d("p",null,"Analyse your performance reports")),d(mn,{title:"Minecraft Sounds",icon:"sounds",link:"/sounds/"},d("p",null,"Browse through and mix all the vanilla sounds")),d(mn,{title:"Data Pack Upgrader",link:"https://misode.github.io/upgrader/"},d("p",null,"Convert your 1.16 data packs to 1.17"))))}let fn=null;const gn={},vn={};async function _n(){return fn||(fn=async function(){try{const e=await fetch("https://launchermeta.mojang.com/mc/game/version_manifest.json");return await e.json()}catch(e){throw new Error(`Error occurred while fetching version manifest: ${Ae(e)}`)}}()),fn}async function wn(e){return gn[e]||(gn[e]=(async()=>{const t=await _n();return await async function(e,t){var n;const o=G.versions.find((t=>t.id===e)),r=null!=(n=null==o?void 0:o.latest)?n:t.latest.snapshot;try{const e=await Ge(t.versions.find((e=>e.id===r)).url);return(await Ge(e.assetIndex.url)).objects}catch(a){throw new Error(`Error occurred while fetching assets for ${o}: ${Ae(a)}`)}}(e,t)})()),gn[e]}async function yn(e){return vn[e]||(vn[e]=(async()=>{const t=await wn(e);return await async function(e,t){try{const e=t["minecraft/sounds.json"].hash;return await Ge(We(e))}catch(n){throw new Error(`Error occurred while fetching sounds for ${e}: ${Ae(n)}`)}}(e,t)})()),vn[e]}function bn({lang:e,changeTitle:t,version:n,changeVersion:o}){const r=me.bind(null,e),[a,i]=m(null);t(r("title.sounds"));const[h,p]=m({}),[f,g]=m({}),v=Object.keys(null!=f?f:{});c((()=>{wn(n).then((e=>(p(e),yn(n)))).then((e=>{e&&g(e)})).catch((e=>{console.error(e),i(Ae(e))}))}),[n]);const[_,w]=m(""),[y,b]=m([]),x=()=>{b([{id:ge(),sound:_,delay:0,pitch:1,volume:1},...y])},k=e=>()=>{b(y.filter((t=>t.id!==e)))},[C,M]=m(0),A=u(null);return d("main",null,d(U,{type:"text",id:"sounds"}),a&&d(te,{error:a,onDismiss:()=>i(null)}),v.length>0&&d(S,null,d("div",{class:"controls sounds-controls"},d("div",{class:"sound-search-group"},d(oe,{class:"btn btn-input sound-search",list:"sound-list",placeholder:r("sounds.search"),value:_,onChange:w,onEnter:x}),d(Y,{icon:"plus",tooltip:r("sounds.add_sound"),class:"add-sound",onClick:x})),y.length>1&&d(Y,{icon:"play",label:r("sounds.play_all"),class:"play-all-sounds",onClick:()=>{M(C+1)}}),d("div",{class:"spacer"}),d(Y,{icon:"download",label:r("download"),tooltip:r("sounds.download_function"),class:"download-sounds",onClick:()=>{const e=y.some((e=>e.delay>0)),t=y.sort(((e,t)=>e.delay-t.delay)).map((t=>`${e?`execute if score @s delay matches ${t.delay} run `:""}playsound minecraft:${t.sound} master @s ~ ~ ~ ${t.volume} ${t.pitch}`)).join("\n");A.current.setAttribute("href","data:text/plain;charset=utf-8,"+t+"%0A"),A.current.setAttribute("download","sounds.mcfunction"),A.current.click()}}),d(Q,{icon:"tag",label:n},G.versions.reverse().map((e=>d(Y,{label:e.id,active:e.id===n,onClick:()=>o(e.id)}))))),d("div",{class:"sounds"},y.map((t=>{return d(un,l(s(s({key:t.id},t),{lang:e,assets:h,sounds:f,delayedPlay:C}),{onEdit:(n=t.id,e=>{b(y.map((t=>t.id===n?s(s({},t),e):t)))}),onDelete:k(t.id)}));var n}))),d("a",{ref:A,style:"display: none;"})),d("datalist",{id:"sound-list"},v.map((e=>d("option",{key:e,value:e})))))}function xn({lang:e,changeTitle:t}){const n=me.bind(null,e);return t(n("title.generator_category",n("worldgen"))),d("main",null,d("div",{class:"home"},G.generators.filter((e=>"worldgen"===e.category)).map((e=>d(mn,{title:n(e.id),link:we(e.url)})))))}function kn(){const[e,t]=m("none");c((()=>{(async()=>{const e=Ot.getLanguage();await Promise.all([he("en"),..."en"!==e?[he(e)]:[]]),t(e)})()}),[]);const[n,o]=m(Ot.getTheme());c((()=>{document.documentElement.setAttribute("data-theme",n)}),[n]);const[r,a]=m(Ot.getVersion()),i=e=>{W.setVersion(e),Ot.setVersion(e),a(e)},[l,u]=m(me(e,"title.home")),h=(e,t)=>{null!=t||(t=G.versions.map((e=>e.id))),t.splice(0,t.length-3),document.title=`${e} Minecraft ${t.join(", ")}`,u(e)};return d(S,null,d(cn,s({},{lang:e,title:l,version:r,theme:n,language:e,changeLanguage:async e=>{ue[e]||await he(e),W.setLanguage(e),Ot.setLanguage(e),t(e)},changeTheme:e=>{W.setTheme(e),Ot.setTheme(e),o(e)}})),d(J,{onChange:e=>{setTimeout((()=>W.pageview(we(e.url))))}},d(pn,s({path:"/"},{lang:e,changeTitle:h})),d(xn,s({path:"/worldgen"},{lang:e,changeTitle:h})),d(bn,s({path:"/sounds"},{lang:e,version:r,changeTitle:h,changeVersion:i})),d(hn,s({default:!0},{lang:e,version:r,changeTitle:h,changeVersion:i}))))}F(d(kn,null),document.body); -//# sourceMappingURL=index.660a24c0.js.map diff --git a/assets/index.660a24c0.js.map b/assets/index.660a24c0.js.map deleted file mode 100644 index 97a40d9e..00000000 --- a/assets/index.660a24c0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.660a24c0.js","sources":["../../src/app/Analytics.ts","../../src/app/components/Ad.tsx","../../src/app/components/Btn.tsx","../../src/app/components/BtnInput.tsx","../../src/app/hooks/useCanvas.ts","../../src/app/hooks/useFocus.ts","../../src/app/hooks/useModel.ts","../../src/app/components/BtnMenu.tsx","../../src/app/components/Octicon.tsx","../../src/app/components/ErrorPanel.tsx","../../src/app/components/forms/Input.tsx","../../vite/preload-helper","../../src/app/Locales.ts","../../src/app/Utils.ts","../../src/app/Schemas.ts","../../src/app/DataFetcher.ts","../../src/app/previews/BiomeSource.ts","../../src/app/previews/Decorator.ts","../../src/app/previews/noise/NoiseChunkGenerator.ts","../../src/app/previews/NoiseSettings.ts","../../src/app/components/previews/BiomeSourcePreview.tsx","../../src/app/components/previews/DecoratorPreview.tsx","../../src/app/components/previews/NoisePreview.tsx","../../src/app/previews/NormalNoise.ts","../../src/app/components/previews/NoiseSettingsPreview.tsx","../../src/app/components/generator/PreviewPanel.tsx","../../src/app/schema/transformOutput.ts","../../src/app/Store.ts","../../src/app/components/generator/SourcePanel.tsx","../../src/app/schema/ModelWrapper.ts","../../src/app/schema/renderHtml.tsx","../../src/app/components/generator/Tree.tsx","../../src/app/components/Header.tsx","../../src/app/components/Icons.tsx","../../src/app/components/sounds/SoundConfig.tsx","../../src/app/components/ToolCard.tsx","../../src/app/pages/Generator.tsx","../../src/app/pages/Home.tsx","../../src/app/Manifest.ts","../../src/app/pages/Sounds.tsx","../../src/app/pages/Worldgen.tsx","../../src/app/Main.tsx"],"sourcesContent":["export namespace Analytics {\n\tconst ID_SITE = 'Site'\n\tconst ID_GENERATOR = 'Generator'\n\n\tconst DIM_THEME = 1\n\tconst DIM_VERSION = 3\n\tconst DIM_LANGUAGE = 4\n\tconst DIM_PREVIEW = 5\n\tconst DIM_GENERATOR = 6\n\n\tfunction event(category: string, action: string, label?: string) {\n\t\tga('send', 'event', category, action, label)\n\t}\n\n\tfunction dimension(index: number, value: string) {\n\t\tga('set', `dimension${index}`, value)\n\t}\n\n\texport function pageview(page: string) {\n\t\tga('set', 'page', page)\n\t\tga('send', 'pageview')\n\t}\n\n\texport function setLanguage(language: string) {\n\t\tdimension(DIM_LANGUAGE, language)\n\t\tevent(ID_SITE, 'set-language', language)\n\t}\n\n\texport function setTheme(theme: string) {\n\t\tdimension(DIM_THEME, theme)\n\t\tevent(ID_SITE, 'set-theme', theme)\n\t}\n\n\texport function setVersion(version: string) {\n\t\tdimension(DIM_VERSION, version)\n\t\tevent(ID_GENERATOR, 'set-version', version)\n\t}\n\n\texport function setPreview(preview: string) {\n\t\tdimension(DIM_PREVIEW, preview)\n\t\tevent(ID_GENERATOR, 'set-preview', preview)\n\t}\n\n\texport function setGenerator(generator: string) {\n\t\tdimension(DIM_GENERATOR, generator)\n\t\tconsole.log(generator)\n\t}\n\n\texport function generatorEvent(action: string, label?: string) {\n\t\tevent(ID_GENERATOR, action, label)\n\t}\n}\n","import { useEffect } from 'preact/hooks'\n\ndeclare const ethicalads: any\n\ntype AdProps = {\n\ttype: 'text' | 'image',\n\tid: string,\n}\nexport function Ad({ type, id }: AdProps) {\n\tuseEffect(() => {\n\t\tdocument.getElementById('ad-placeholder')?.remove()\n\t\tif ('ethicalads' in window) {\n\t\t\tethicalads.load()\n\t\t}\n\t}, [])\n\n\treturn
\n}\n","import { Octicon } from '.'\n\ntype BtnProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tactive?: boolean,\n\ttooltip?: string,\n\ttooltipLoc?: 'se' | 'sw' | 'nw',\n\tclass?: string,\n\tonClick?: (event: MouseEvent) => unknown,\n}\nexport function Btn({ icon, label, active, class: clazz, tooltip, tooltipLoc, onClick }: BtnProps) {\n\treturn
\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t
\n}\n","import { useEffect, useRef } from 'preact/hooks'\nimport { Octicon } from '.'\n\ntype BtnInputProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\tlarge?: boolean,\n\tdoSelect?: number,\n\tvalue?: string,\n\tplaceholder?: string,\n\tonChange?: (value: string) => unknown,\n}\nexport function BtnInput({ icon, label, large, doSelect, value, placeholder, onChange }: BtnInputProps) {\n\tconst onInput = onChange === undefined ? () => {} : (e: any) => {\n\t\tconst value = (e.target as HTMLInputElement).value\n\t\tonChange?.(value)\n\t}\n\n\tconst ref = useRef(null)\n\tuseEffect(() => {\n\t\tif (doSelect && ref.current) {\n\t\t\tref.current.select()\n\t\t}\n\t}, [doSelect])\n\n\treturn
e.stopPropagation()}>\n\t\t{icon && Octicon[icon]}\n\t\t{label && {label}}\n\t\t\n\t
\n}\n","import type { Inputs } from 'preact/hooks'\nimport { useEffect, useRef } from 'preact/hooks'\n\ntype Vec2 = [number, number]\n\nexport function useCanvas({ size, draw, onDrag, onHover, onLeave }: {\n\tsize: () => Vec2,\n\tdraw: (img: ImageData) => Promise,\n\tonDrag?: (dx: number, dy: number) => Promise,\n\tonHover?: (x: number, y: number) => unknown,\n\tonLeave?: () => unknown,\n}, inputs?: Inputs) {\n\tconst canvas = useRef(null)\n\n\tconst dragStart = useRef()\n\tconst dragRequest = useRef()\n\tconst dragPending = useRef([0, 0])\n\tconst dragBusy = useRef(false)\n\n\tuseEffect(() => {\n\t\tconst onMouseDown = (e: MouseEvent) => {\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseMove = (e: MouseEvent) => {\n\t\t\tif (dragStart.current === undefined) {\n\t\t\t\tconst x = e.offsetX / canvas.current.clientWidth\n\t\t\t\tconst y = e.offsetY / canvas.current.clientHeight\n\t\t\t\tonHover?.(x, y)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (!onDrag) return\n\t\t\tconst dx = e.offsetX - dragStart.current[0]\n\t\t\tconst dy = e.offsetY - dragStart.current[1]\n\t\t\tif (!(dx === 0 && dy === 0)) {\n\t\t\t\tdragPending.current = [dragPending.current[0] + dx, dragPending.current[1] + dy]\n\t\t\t\tif (!dragBusy.current) {\n\t\t\t\t\tcancelAnimationFrame(dragRequest.current)\n\t\t\t\t\tdragRequest.current = requestAnimationFrame(async () => {\n\t\t\t\t\t\tdragBusy.current = true\n\t\t\t\t\t\tconst dx = dragPending.current[0] / canvas.current.clientWidth\n\t\t\t\t\t\tconst dy = dragPending.current[1] / canvas.current.clientHeight\n\t\t\t\t\t\tdragPending.current = [0, 0]\n\t\t\t\t\t\tawait onDrag?.(dx, dy)\n\t\t\t\t\t\tdragBusy.current = false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tdragStart.current = [e.offsetX, e.offsetY]\n\t\t}\n\t\tconst onMouseUp = () => {\n\t\t\tdragStart.current = undefined\n\t\t}\n\t\tconst onMouseLeave = () => {\n\t\t\tonLeave?.()\n\t\t}\n\n\t\tcanvas.current.addEventListener('mousedown', onMouseDown)\n\t\tcanvas.current.addEventListener('mousemove', onMouseMove)\n\t\tcanvas.current.addEventListener('mouseleave', onMouseLeave)\n\t\tdocument.body.addEventListener('mouseup', onMouseUp)\n\n\t\treturn () => {\n\t\t\tcanvas.current?.removeEventListener('mousedown', onMouseDown)\n\t\t\tcanvas.current?.removeEventListener('mousemove', onMouseMove)\n\t\t\tcanvas.current?.removeEventListener('mouseleave', onMouseLeave)\n\t\t\tdocument.body.removeEventListener('mouseup', onMouseUp)\n\t\t}\n\t}, [...inputs ?? [], canvas.current])\n\n\tconst redraw = useRef<() => Promise>()\n\tconst redrawCount = useRef(0)\n\tredraw.current = async () => {\n\t\tconst ctx = canvas.current.getContext('2d')!\n\t\tconst s = size()\n\t\tcanvas.current.width = s[0]\n\t\tcanvas.current.height = s[1]\n\t\tconst img = ctx.getImageData(0, 0, s[0], s[1])\n\t\tconst ownCount = redrawCount.current += 1\n\t\tawait draw(img)\n\t\tif (ownCount === redrawCount.current) {\n\t\t\tctx.putImageData(img, 0, 0)\n\t\t}\n\t}\n\n\treturn {\n\t\tcanvas,\n\t\tredraw: redraw.current,\n\t}\n}\n","import { useEffect, useState } from 'preact/hooks'\n\nexport function useFocus(): [boolean, () => unknown] {\n\tconst [active, setActive] = useState(false)\n\n\tconst hider = () => {\n\t\tsetActive(false)\n\t}\n\n\tuseEffect(() => {\n\t\tif (active) {\n\t\t\tdocument.body.addEventListener('click', hider)\n\t\t\tdocument.body.addEventListener('contextmenu', hider)\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.removeEventListener('click', hider)\n\t\t\tdocument.body.removeEventListener('contextmenu', hider)\n\t\t}\n\t}, [active])\n\n\treturn [active, () => setActive(true)]\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useEffect } from 'preact/hooks'\n\nexport function useModel(model: DataModel | undefined | null, invalidated: (model: DataModel) => unknown) {\n\tconst listener = {\n\t\tinvalidated() {\n\t\t\tif (model) {\n\t\t\t\tinvalidated(model)\n\t\t\t}\n\t\t},\n\t}\n\n\tuseEffect(() => {\n\t\tmodel?.addListener(listener)\n\t\treturn () => {\n\t\t\tmodel?.removeListener(listener)\n\t\t}\n\t}, [model])\n}\n","import type { ComponentChildren } from 'preact'\nimport type { Octicon } from '.'\nimport { Btn } from '.'\nimport { useFocus } from '../hooks'\n\ntype BtnMenuProps = {\n\ticon?: keyof typeof Octicon,\n\tlabel?: string,\n\trelative?: boolean,\n\ttooltip?: string,\n\tchildren: ComponentChildren,\n}\nexport function BtnMenu({ icon, label, relative, tooltip, children }: BtnMenuProps) {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t\n\t\t{active &&
\n\t\t\t{children}\n\t\t
}\n\t
\n}\n","export const Octicon = {\n\talert: ,\n\tarchive: ,\n\tarrow_left: ,\n\tarrow_right: ,\n\tcheck: ,\n\tchevron_down: ,\n\tchevron_right: ,\n\tchevron_up: ,\n\tclippy: ,\n\tcode: ,\n\tdash: ,\n\tdevice_desktop: ,\n\tdownload: ,\n\tduplicate: ,\n\teye: ,\n\teye_closed: ,\n\tgear: ,\n\tglobe: ,\n\thistory: ,\n\tinfo: ,\n\tissue_opened: ,\n\tkebab_horizontal: ,\n\tlink: ,\n\tmark_github: ,\n\tmoon: ,\n\tplay: ,\n\tplus: ,\n\tplus_circle: ,\n\tsearch: ,\n\tstack: ,\n\tsun: ,\n\tsync: ,\n\ttag: ,\n\tterminal: ,\n\tthree_bars: ,\n\ttrashcan: ,\n\tunfold: ,\n\tupload: ,\n\tx: ,\n\tx_circle: ,\n}\n","import { Octicon } from './Octicon'\n\ntype ErrorPanelProps = {\n\terror: string,\n\tonDismiss?: () => unknown,\n}\nexport function ErrorPanel({ error, onDismiss }: ErrorPanelProps) {\n\treturn
\n\t\t{onDismiss &&
{Octicon.x}
}\n\t\t

{error}

\n\t\t

If you think this is a bug, you can report it on GitHub

\n\t
\n}\n","import type { JSXInternal } from 'preact/src/jsx'\n\ntype InputProps = JSXInternal.HTMLAttributes\n\ntype BaseInputProps = Omit & {\n\tonChange?: (value: T) => unknown,\n\tonEnter?: (value: T) => unknown,\n}\nfunction BaseInput(name: string, type: string, fn: (value: string) => T) {\n\tconst component = (props: BaseInputProps) => {\n\t\tconst onChange = props.onChange && ((evt: Event) => {\n\t\t\tconst value = (evt.target as HTMLInputElement).value\n\t\t\tprops.onChange?.(fn(value))\n\t\t})\n\t\tconst onKeyDown = props.onEnter && ((evt: KeyboardEvent) => {\n\t\t\tif (evt.key === 'Enter') {\n\t\t\t\tconst value = (evt.target as HTMLInputElement).value\n\t\t\t\tprops.onEnter?.(fn(value))\n\t\t\t}\n\t\t})\n\t\treturn \n\t}\n\tcomponent.displayName = name\n\treturn component\n}\n\nexport const TextInput = BaseInput('TextInput', 'text', v => v)\n\nexport const NumberInput = BaseInput('NumberInput', 'number', v => Number(v))\n\nexport const RangeInput = BaseInput('RangeInput', 'range', v => Number(v))\n","let scriptRel;const seen = {};export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps) {\n return baseModule();\n }\n // @ts-ignore\n if (scriptRel === undefined) {\n // @ts-ignore\n const relList = document.createElement('link').relList;\n // @ts-ignore\n scriptRel =\n relList && relList.supports && relList.supports('modulepreload')\n ? 'modulepreload'\n : 'preload';\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', rej);\n });\n }\n })).then(() => baseModule());\n}","import config from '../config.json'\nimport English from '../locales/en.json'\n\nexport type Localize = (key: string, ...params: string[]) => string\n\ninterface Locale {\n\t[key: string]: string\n}\n\nexport const Locales: {\n\t[key: string]: Locale,\n} = {\n\tfallback: English,\n}\n\nfunction resolveLocaleParams(value: string, params?: string[]): string {\n\treturn value.replace(/%\\d+%/g, match => {\n\t\tconst index = parseInt(match.slice(1, -1))\n\t\treturn params?.[index] !== undefined ? params[index] : match\n\t})\n}\n\nexport function locale(language: string, key: string, ...params: string[]): string {\n\tconst value: string | undefined = Locales[language]?.[key]\n\t\t?? Locales.en?.[key] ?? Locales.fallback[key] ?? key\n\treturn resolveLocaleParams(value, params)\n}\n\nexport async function loadLocale(language: string) {\n\tconst langConfig = config.languages.find(lang => lang.code === language)\n\tif (!langConfig) return\n\tconst data = await import(`../locales/${language}.json`)\n\tconst schema = langConfig.schemas !== false\n\t\t&& await import(`../../node_modules/@mcschema/locales/src/${language}.json`)\n\tLocales[language] = { ...data.default, ...schema.default }\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport rfdc from 'rfdc'\nimport config from '../config.json'\n\nexport function isPromise(obj: any): obj is Promise {\n\treturn typeof (obj as any)?.then === 'function' \n}\n\nexport function isObject(obj: any) {\n\treturn typeof obj === 'object' && obj !== null\n}\n\nconst dec2hex = (dec: number) => ('0' + dec.toString(16)).substr(-2)\n\nexport function hexId(length = 12) {\n\tvar arr = new Uint8Array(length / 2)\n\twindow.crypto.getRandomValues(arr)\n\treturn Array.from(arr, dec2hex).join('')\n}\n\nexport function randomSeed() {\n\treturn BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER))\n}\n\nexport function newSeed(model: DataModel) {\n\tconst seed = Math.floor(Math.random() * (4294967296)) - 2147483648\n\tconst dimensions = model.get(new Path(['dimensions']))\n\tmodel.set(new Path(['seed']), seed, true)\n\tif (typeof dimensions === 'object' && dimensions !== null) {\n\t\tObject.keys(dimensions).forEach(id => {\n\t\t\tmodel.set(new Path(['dimensions', id, 'generator', 'seed']), seed, true)\n\t\t\tmodel.set(new Path(['dimensions', id, 'generator', 'biome_source', 'seed']), seed, true)\n\t\t})\n\t}\n\tmodel.set(new Path(['generator', 'seed']), seed, true)\n\tmodel.set(new Path(['generator', 'biome_source', 'seed']), seed)\n}\n\nexport function htmlEncode(str: string) {\n\treturn str.replace(/&/g, '&').replace(//g, '>')\n\t\t.replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/')\n}\n\nexport function hashString(s: string) {\n\tlet h = 0\n\tfor(let i = 0; i < s.length; i++)\n\t\th = Math.imul(31, h) + s.charCodeAt(i) | 0\n\treturn h\n}\n\nexport function cleanUrl(url: string) {\n\treturn `/${url}/`.replaceAll('//', '/')\n}\n\nexport function getGenerator(url: string) {\n\tconst trimmedUrl = url.replace(/^\\//, '').replace(/\\/$/, '').replace(/\\?.*/, '')\n\treturn config.generators.find(g => g.url === trimmedUrl)\n}\n\nexport function stringToColor(str: string): [number, number, number] {\n\tconst h = Math.abs(hashString(str))\n\treturn [h % 256, (h >> 8) % 256, (h >> 16) % 256]\n}\n\nexport function square(a: number) {\n\treturn a * a\n}\n\nexport function clamp(a: number, b: number, c: number) {\n\treturn Math.max(a, Math.min(b, c))\n}\n\nexport function clampedLerp(a: number, b: number, c: number): number {\n\tif (c < 0) {\n\t\treturn a\n\t} else if (c > 1) {\n\t\treturn b\n\t} else {\n\t\treturn lerp(c, a, b)\n\t}\n}\n\nexport function lerp(a: number, b: number, c: number): number {\n\treturn b + a * (c - b)\n}\n\nexport function lerp2(a: number, b: number, c: number, d: number, e: number, f: number): number {\n\treturn lerp(b, lerp(a, c, d), lerp(a, e, f))\n}\n\nexport function lerp3(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) {\n\treturn lerp(c, lerp2(a, b, d, e, f, g), lerp2(a, b, h, i, j, k))\n}\n\nexport function smoothstep(x: number): number {\n\treturn x * x * x * (x * (x * 6 - 15) + 10)\n}\n\nexport function message(e: unknown): string {\n\tif (e instanceof Error) return e.message\n\treturn `${e}`\n}\n\nexport const deepClone = rfdc()\n\n/**\n * MIT License\n * \n * Copyright (c) 2017 Evgeny Poberezkin\n * \n * https://github.com/epoberezkin/fast-deep-equal/blob/master/LICENSE\n */\nexport function deepEqual(a: any, b: any) {\n\tif (a === b) return true\n\n\tif (a && b && typeof a == 'object' && typeof b == 'object') {\n\t\tif (a.constructor !== b.constructor) return false\n\t\tlet length, i\n\t\tif (Array.isArray(a)) {\n\t\t\tlength = a.length\n\t\t\tif (length != b.length) return false\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tif (!deepEqual(a[i], b[i])) return false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tif (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf()\n\t\tif (a.toString !== Object.prototype.toString) return a.toString() === b.toString()\n\t\tconst keys = Object.keys(a)\n\t\tlength = keys.length\n\t\tif (length !== Object.keys(b).length) return false\n\t\tfor (i = length; i-- !== 0;)\n\t\t\tif (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false\n\t\tfor (i = length; i-- !== 0;) {\n\t\t\tconst key = keys[i]\n\t\t\tif (!deepEqual(a[key], b[key])) return false\n\t\t}\n\t\treturn true\n\t}\n\treturn a !== a && b !== b\n}\n\nexport class BiMap {\n\tprivate readonly forward: Map\n\tprivate readonly backward: Map\n\n\tconstructor() {\n\t\tthis.forward = new Map()\n\t\tthis.backward = new Map()\n\t}\n\n\tpublic set(a: A, b: B) {\n\t\tthis.forward.set(a, b)\n\t\tthis.backward.set(b, a)\n\t}\n\n\tpublic getA(key: B) {\n\t\treturn this.backward.get(key)\n\t}\n\n\tpublic getB(key: A) {\n\t\treturn this.forward.get(key)\n\t}\n\n\tpublic getOrPut(key: A, defaultValue: B) {\n\t\tconst b = this.forward.get(key)\n\t\tif (b === undefined) {\n\t\t\tthis.set(key, defaultValue)\n\t\t\treturn defaultValue\n\t\t}\n\t\treturn b\n\t}\n}\n","import type { CollectionRegistry, INode, SchemaRegistry } from '@mcschema/core'\nimport { ChoiceNode, DataModel, Reference, StringNode } from '@mcschema/core'\nimport * as java15 from '@mcschema/java-1.15'\nimport * as java16 from '@mcschema/java-1.16'\nimport * as java17 from '@mcschema/java-1.17'\nimport * as java18 from '@mcschema/java-1.18'\nimport config from '../config.json'\nimport { fetchData } from './DataFetcher'\nimport { message } from './Utils'\n\nexport const VersionIds = ['1.15', '1.16', '1.17', '1.18'] as const\nexport type VersionId = typeof VersionIds[number]\n\nexport type BlockStateRegistry = {\n\t[block: string]: {\n\t\tproperties?: {\n\t\t\t[key: string]: string[],\n\t\t},\n\t\tdefault?: {\n\t\t\t[key: string]: string,\n\t\t},\n\t},\n}\n\ntype VersionData = {\n\tcollections: CollectionRegistry,\n\tschemas: SchemaRegistry,\n\tblockStates: BlockStateRegistry,\n}\nconst Versions: Record> = {}\n\ntype ModelData = {\n\tmodel: DataModel,\n\tversion: VersionId,\n}\nconst Models: Record = {}\n\nconst versionGetter: {\n\t[versionId in VersionId]: {\n\t\tgetCollections: () => CollectionRegistry,\n\t\tgetSchemas: (collections: CollectionRegistry) => SchemaRegistry,\n\t}\n} = {\n\t1.15: java15,\n\t1.16: java16,\n\t1.17: java17,\n\t1.18: java18,\n}\n\nexport let CachedDecorator: INode\nexport let CachedFeature: INode\n\nasync function getVersion(id: VersionId): Promise {\n\tif (!Versions[id]) {\n\t\tVersions[id] = (async () => {\n\t\t\ttry {\n\t\t\t\tconst collections = versionGetter[id].getCollections()\n\t\t\t\tconst blockStates: BlockStateRegistry = {}\n\t\t\t\tawait fetchData(id, collections, blockStates)\n\t\t\t\tconst schemas = versionGetter[id].getSchemas(collections)\n\t\t\t\tVersions[id] = { collections, schemas, blockStates }\n\t\t\t\treturn Versions[id]\n\t\t\t} catch (e) {\n\t\t\t\tthrow new Error(`Cannot get version \"${id}\": ${message(e)}`)\n\t\t\t}\n\t\t})()\n\t\treturn Versions[id]\n\t}\n\treturn Versions[id]\n}\n\nexport async function getModel(version: VersionId, id: string): Promise {\n\tif (!Models[id] || Models[id].version !== version) {\n\t\tconst versionData = await getVersion(version)\n\t\t\n\t\tCachedDecorator = Reference(versionData.schemas, 'configured_decorator')\n\t\tCachedFeature = ChoiceNode([\n\t\t\t{\n\t\t\t\ttype: 'string',\n\t\t\t\tnode: StringNode(versionData.collections, { validator: 'resource', params: { pool: '$worldgen/configured_feature' } }),\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: 'object',\n\t\t\t\tnode: Reference(versionData.schemas, 'configured_feature'),\n\t\t\t},\n\t\t], { choiceContext: 'feature' })\n\n\t\tconst schemaName = config.generators.find(g => g.id === id)?.schema\n\t\tif (!schemaName) {\n\t\t\tthrow new Error(`Cannot find model ${id}`)\n\t\t}\n\t\ttry {\n\t\t\tconst schema = versionData.schemas.get(schemaName)\n\t\t\tconst model = new DataModel(schema, { wrapLists: true })\n\t\t\tif (Models[id]) {\n\t\t\t\tmodel.reset(Models[id].model.data, false)\n\t\t\t} else {\n\t\t\t\tmodel.validate(true)\n\t\t\t\tmodel.history = [JSON.stringify(model.data)]\n\t\t\t}\n\t\t\tModels[id] = { model, version }\n\t\t} catch (e) {\n\t\t\tconst err = new Error(`Cannot get generator \"${id}\" for version \"${version}\": ${message(e)}`)\n\t\t\tif (e instanceof Error) err.stack = e.stack\n\t\t\tthrow err\n\t\t}\n\t}\n\treturn Models[id].model\n}\n\nexport async function getCollections(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.collections\n}\n\nexport async function getBlockStates(version: VersionId): Promise {\n\tconst versionData = await getVersion(version)\n\treturn versionData.blockStates\n}\n\nexport function checkVersion(versionId: string, minVersionId: string | undefined, maxVersionId?: string) {\n\tconst version = config.versions.findIndex(v => v.id === versionId)\n\tconst minVersion = minVersionId ? config.versions.findIndex(v => v.id === minVersionId) : 0\n\tconst maxVersion = maxVersionId ? config.versions.findIndex(v => v.id === maxVersionId) : config.versions.length - 1\n\treturn minVersion <= version && version <= maxVersion\n}\n","import type { CollectionRegistry } from '@mcschema/core'\nimport config from '../config.json'\nimport type { VersionAssets, VersionManifest } from './Manifest'\nimport type { BlockStateRegistry, VersionId } from './Schemas'\nimport { checkVersion } from './Schemas'\nimport { message } from './Utils'\n\n['1.15', '1.16', '1.17'].forEach(v => localStorage.removeItem(`cache_${v}`))\n\nconst CACHE_NAME = 'misode-v1'\n\ntype VersionRef = 'mcdata_master' | 'vanilla_datapack_summary' | 'vanilla_datapack_data'\n\ntype Version = {\n\tid: string,\n\trefs: Partial<{ [key in VersionRef]: string }>,\n\tdynamic?: boolean,\n}\n\ndeclare var __MCDATA_MASTER_HASH__: string\ndeclare var __VANILLA_DATAPACK_SUMMARY_HASH__: string\n\nconst mcdataUrl = 'https://raw.githubusercontent.com/Arcensoth/mcdata'\nconst vanillaDatapackUrl = 'https://raw.githubusercontent.com/SPGoding/vanilla-datapack'\nconst manifestUrl = 'https://launchermeta.mojang.com/mc/game/version_manifest.json'\nconst resourceUrl = 'https://resources.download.minecraft.net/'\nconst corsUrl = 'https://misode-cors-anywhere.herokuapp.com/'\n\nconst refs: {\n\tid: VersionRef,\n\thash: string,\n\turl: string,\n}[] = [\n\t{\n\t\tid: 'mcdata_master',\n\t\thash: __MCDATA_MASTER_HASH__,\n\t\turl: mcdataUrl,\n\t},\n\t{\n\t\tid: 'vanilla_datapack_summary',\n\t\thash: __VANILLA_DATAPACK_SUMMARY_HASH__,\n\t\turl: vanillaDatapackUrl,\n\t},\n]\n\nexport async function fetchData(versionId: string, collectionTarget: CollectionRegistry, blockStateTarget: BlockStateRegistry) {\n\tconst version = config.versions.find(v => v.id === versionId) as Version | undefined\n\tif (!version) {\n\t\tconsole.error(`[fetchData] Unknown version ${version} in ${JSON.stringify(config.versions)}`)\n\t\treturn\n\t}\n\tconsole.debug(`[fetchData] ${JSON.stringify(version)}`)\n\n\tif (version.dynamic) {\n\t\tawait Promise.all(refs\n\t\t\t.filter(r => localStorage.getItem(`cached_${r.id}`) !== r.hash)\n\t\t\t.map(async r => {\n\t\t\t\tconsole.debug(`[deleteMatching] ${r.id} '${localStorage.getItem(`cached_${r.id}`)}' < '${r.hash}' ${r.url}/${version.refs[r.id]}`)\n\t\t\t\tawait deleteMatching(url => url.startsWith(`${r.url}/${version.refs[r.id]}`))\n\t\t\t\tconsole.debug(`[deleteMatching] Done! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t\tlocalStorage.setItem(`cached_${r.id}`, r.hash)\n\t\t\t\tconsole.debug(`[deleteMatching] Set! ${r.id} ${r.hash} '${localStorage.getItem(`cached_${r.id}`)}'`)\n\t\t\t}))\n\t}\n\n\tawait Promise.all([\n\t\tfetchRegistries(version, collectionTarget),\n\t\tfetchBlockStateMap(version, blockStateTarget),\n\t\tfetchDynamicRegistries(version, collectionTarget),\n\t])\n}\n\nasync function fetchRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => !r.dynamic)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, undefined, '1.15')) {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/registries.json`\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: {[id: string]: string[]} = {}\n\t\t\t\tObject.keys(data).forEach(k => {\n\t\t\t\t\tres[k.slice(10)] = Object.keys(data[k].entries)\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id] ?? [])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching registries:', message(e))\n\t\t}\n\t} else {\n\t\tawait Promise.all(registries.map(async r => {\n\t\t\ttry {\n\t\t\t\tconst url = r.path\n\t\t\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/${r.path}/data.min.json`\n\t\t\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/registries/${r.id}/data.min.json`\n\t\t\t\ttarget.register(r.id, await getData(url, v => v.values))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(`Error occurred while fetching registry ${r.id}:`, message(e))\n\t\t\t}\n\t\t}))\n\t}\n}\n\nasync function fetchBlockStateMap(version: Version, target: BlockStateRegistry) {\n\tconsole.debug(`[fetchBlockStateMap] ${version.id}`)\n\tif (checkVersion(version.id, undefined, '1.16')) {\n\t\tconst url = (checkVersion(version.id, undefined, '1.15'))\n\t\t\t? `${mcdataUrl}/${version.refs.mcdata_master}/generated/reports/blocks.json`\n\t\t\t: `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/data.min.json`\n\n\t\ttry {\n\t\t\tconst data = await getData(url, (data) => {\n\t\t\t\tconst res: BlockStateRegistry = {}\n\t\t\t\tObject.keys(data).forEach(b => {\n\t\t\t\t\tres[b] = {\n\t\t\t\t\t\tproperties: data[b].properties,\n\t\t\t\t\t\tdefault: data[b].states.find((s: any) => s.default).properties,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn res\n\t\t\t})\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t} else {\n\t\tconst url = `${mcdataUrl}/${version.refs.mcdata_master}/processed/reports/blocks/simplified/data.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tObject.assign(target, data)\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching block state map:', message(e))\n\t\t}\n\t}\n}\n\nasync function fetchDynamicRegistries(version: Version, target: CollectionRegistry) {\n\tconsole.debug(`[fetchDynamicRegistries] ${version.id}`)\n\tconst registries = config.registries\n\t\t.filter(r => r.dynamic)\n\t\t.filter(r => checkVersion(version.id, r.minVersion, r.maxVersion))\n\n\tif (checkVersion(version.id, '1.16')) {\n\t\tconst url = `${vanillaDatapackUrl}/${version.refs.vanilla_datapack_summary}/summary/flattened.min.json`\n\t\ttry {\n\t\t\tconst data = await getData(url)\n\t\t\tregistries.forEach(r => {\n\t\t\t\ttarget.register(r.id, data[r.id])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.warn('Error occurred while fetching dynamic registries:', message(e))\n\t\t}\n\t}\n\tif (checkVersion(version.id, '1.18')) {\n\t\ttarget.register('worldgen/noise', Noises)\n\t}\n}\n\nexport async function fetchPreset(version: VersionId, registry: string, id: string) {\n\tconsole.debug(`[fetchPreset] ${registry} ${id}`)\n\tconst versionData = config.versions.find(v => v.id === version)!\n\ttry {\n\t\tconst url = `${vanillaDatapackUrl}/${versionData.refs.vanilla_datapack_data}/data/minecraft/${registry}/${id}.json`\n\t\tconst res = await fetch(url)\n\t\tif (registry === 'worldgen/noise_settings' && version === '1.18') {\n\t\t\tlet text = await res.text()\n\t\t\ttext = text.replaceAll('\"max_threshold\": Infinity', '\"max_threshold\": 100')\n\t\t\tconst data = JSON.parse(text)\n\t\t\tif (id !== 'overworld' && id !== 'large_biomes') {\n\t\t\t\tdata.noise.terrain_shaper = { offset: 0, factor: 0, jaggedness: 0 }\n\t\t\t}\n\t\t\treturn data\n\t\t}\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tconsole.warn(`Error occurred while fetching ${registry} preset ${id}:`, message(e))\n\t}\n}\n\nexport async function fetchManifest() {\n\ttry {\n\t\tconst res = await fetch(manifestUrl)\n\t\treturn await res.json()\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching version manifest: ${message(e)}`)\n\t}\n}\n\nexport async function fetchAssets(versionId: VersionId, manifest: VersionManifest) {\n\tconst version = config.versions.find(v => v.id === versionId)\n\tconst id = version?.latest ?? manifest.latest.snapshot\n\ttry {\n\t\tconst versionMeta = await getData(manifest.versions.find(v => v.id === id)!.url)\n\t\n\t\treturn (await getData(versionMeta.assetIndex.url)).objects\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching assets for ${version}: ${message(e)}`)\n\t}\n}\n\nexport async function fetchSounds(version: VersionId, assets: VersionAssets) {\n\ttry {\n\t\tconst hash = assets['minecraft/sounds.json'].hash\n\t\treturn await getData(getResourceUrl(hash))\n\t} catch (e) {\n\t\tthrow new Error(`Error occurred while fetching sounds for ${version}: ${message(e)}`)\n\t}\n}\n\nexport function getResourceUrl(hash: string) {\n\treturn `${corsUrl}${resourceUrl}${hash.slice(0, 2)}/${hash}`\n}\n\nasync function getData(url: string, fn: (v: any) => T = (v: any) => v): Promise {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[getData] Opened cache ${CACHE_NAME} ${url}`)\n\t\tconst cacheResponse = await cache.match(url)\n \n\t\tif (cacheResponse && cacheResponse.ok) {\n\t\t\tconsole.debug(`[getData] Retrieving cached data ${url}`)\n\t\t\treturn await cacheResponse.json()\n\t\t}\n \n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\tawait cache.put(url, new Response(JSON.stringify(responseData)))\n\t\treturn responseData\n\t} catch (e) {\n\t\tconsole.warn(`[getData] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\n\t\tconsole.debug(`[getData] fetching data ${url}`)\n\t\tconst fetchResponse = await fetch(url)\n\t\tconst responseData = fn(await fetchResponse.json())\n\t\treturn responseData\n\t}\n}\n\nasync function deleteMatching(matches: (url: string) => boolean) {\n\ttry {\n\t\tconst cache = await caches.open(CACHE_NAME)\n\t\tconsole.debug(`[deleteMatching] Opened cache ${CACHE_NAME}`)\n\t\tconst promises: Promise[] = []\n \n\t\tfor (const request of await cache.keys()) {\n\t\t\tif (matches(request.url)) {\n\t\t\t\tpromises.push(cache.delete(request))\n\t\t\t}\n\t\t}\n\t\tconsole.debug(`[deleteMatching] Removing ${promises.length} cache objects...`)\n\t\tawait Promise.all(promises)\n\t} catch (e) {\n\t\tconsole.warn(`[deleteMatching] Failed to open cache ${CACHE_NAME}: ${message(e)}`)\n\t}\n}\n\nconst Noises = [\n\t'minecraft:aquifer_barrier',\n\t'minecraft:aquifer_fluid_level_floodedness',\n\t'minecraft:aquifer_fluid_level_spread',\n\t'minecraft:aquifer_lava',\n\t'minecraft:calcite',\n\t'minecraft:cave_cheese',\n\t'minecraft:cave_entrance',\n\t'minecraft:cave_layer',\n\t'minecraft:clay_bands_offset',\n\t'minecraft:continentalness',\n\t'minecraft:erosion',\n\t'minecraft:gravel',\n\t'minecraft:gravel_layer',\n\t'minecraft:ice',\n\t'minecraft:iceberg_and_badlands_pillar',\n\t'minecraft:iceberg_and_badlands_pillar_roof',\n\t'minecraft:jagged',\n\t'minecraft:nether_state_selector',\n\t'minecraft:nether_wart',\n\t'minecraft:netherrack',\n\t'minecraft:noodle',\n\t'minecraft:noodle_ridge_a',\n\t'minecraft:noodle_ridge_b',\n\t'minecraft:noodle_thickness',\n\t'minecraft:offset',\n\t'minecraft:ore_gap',\n\t'minecraft:ore_vein_a',\n\t'minecraft:ore_vein_b',\n\t'minecraft:ore_veininess',\n\t'minecraft:packed_ice',\n\t'minecraft:patch',\n\t'minecraft:pillar',\n\t'minecraft:pillar_rareness',\n\t'minecraft:pillar_thickness',\n\t'minecraft:powder_snow_surface',\n\t'minecraft:powder_snow_under',\n\t'minecraft:ridge',\n\t'minecraft:soul_sand_layer',\n\t'minecraft:spaghetti_2d',\n\t'minecraft:spaghetti_2d_elevation',\n\t'minecraft:spaghetti_2d_modulator',\n\t'minecraft:spaghetti_2d_thickness',\n\t'minecraft:spaghetti_3d_1',\n\t'minecraft:spaghetti_3d_2',\n\t'minecraft:spaghetti_3d_rarity',\n\t'minecraft:spaghetti_3d_thickness',\n\t'minecraft:spaghetti_roughness',\n\t'minecraft:spaghetti_roughness_modulator',\n\t'minecraft:surface',\n\t'minecraft:surface_swamp',\n\t'minecraft:temperature',\n\t'minecraft:vegetation',\n]\n","import { DataModel } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { FixedBiome, LegacyRandom, NormalNoise, TerrainShaper } from 'deepslate'\nimport init, { biome_parameters, climate_noise, climate_sampler, multi_noise } from 'deepslate-rs'\n// @ts-expect-error\nimport wasm from 'deepslate-rs/deepslate_rs_bg.wasm?url'\nimport { fetchPreset } from '../DataFetcher'\nimport type { VersionId } from '../Schemas'\nimport { BiMap, clamp, deepClone, deepEqual, square, stringToColor } from '../Utils'\n\nlet ready = false\nasync function loadWasm() {\n\tif (ready) return\n\tawait init(wasm)\n\tready = true\n\tconsole.debug(`Loaded deepslate-rs from \"${wasm}\"`)\n}\n\nconst LAYERS = {\n\ttemperature: [-1, 1],\n\thumidity: [-1, 1],\n\tcontinentalness: [-1.1, 1],\n\terosion: [-1, 1],\n\tweirdness: [-1, 1],\n\toffset: [-1, 1],\n\tfactor: [0, 12],\n\tjaggedness: [0, 1],\n}\n\ntype Triple = [number, number, number]\ntype BiomeColors = Record\ntype BiomeSourceOptions = {\n\toctaves: NoiseOctaves,\n\tshaper: TerrainShaper,\n\tbiomeColors: BiomeColors,\n\toffset: [number, number],\n\tscale: number,\n\tres: number,\n\tseed: bigint,\n\tversion: VersionId,\n\tlayers: Set,\n}\n\ninterface CachedBiomeSource {\n\tgetBiome(x: number, y: number, z: number): string\n\tgetBiomes?(xFrom: number, xTo: number, xStep: number, yFrom: number, yTo: number, yStep: number, zFrom: number, zTo: number, zStep: number): string[]\n\tgetClimate?(layers: Set, xFrom: number, xTo: number, xStep: number, yFrom: number, yTo: number, yStep: number, zFrom: number, zTo: number, zStep: number): {[k: string]: number}[]\n}\n\nlet cacheState: any\nlet biomeSourceCache: CachedBiomeSource\n\nexport async function biomeMap(state: any, img: ImageData, options: BiomeSourceOptions) {\n\tconst { biomeSource } = await getCached(state, options)\n\n\tconst data = img.data\n\tconst ox = -Math.round(options.offset[0]) - 100 + options.res / 2\n\tconst oz = -Math.round(options.offset[1]) - 100 + options.res / 2\n\tconst row = img.width * 4 / options.res\n\tconst col = 4 / options.res\n\n\tconst xRange: Triple = [ox * options.scale, (200 + ox) * options.scale, options.res * options.scale]\n\tconst zRange: Triple = [oz * options.scale, (200 + oz) * options.scale, options.res * options.scale]\n\n\tconst biomes = !options.layers.has('biomes') ? undefined : biomeSource.getBiomes?.(...xRange, 64, 65, 1, ...zRange)\n\tconst layers = [...options.layers].filter(l => l !== 'biomes') as (keyof typeof LAYERS)[]\n\tconst noise = layers.length === 0 ? undefined : biomeSource.getClimate?.(new Set(layers), ...xRange, 64, 65, 1, ...zRange)\n\n\tfor (let x = 0; x < 200; x += options.res) {\n\t\tfor (let z = 0; z < 200; z += options.res) {\n\t\t\tconst i = z * row + x * col\n\t\t\tconst j = (x / options.res) * 200 / options.res + z / options.res\n\t\t\tconst worldX = (x + ox) * options.scale\n\t\t\tconst worldZ = (z + oz) * options.scale\n\t\t\tlet color: Triple = [50, 50, 50]\n\t\t\tif (options.layers.has('biomes')) {\n\t\t\t\tconst biome = biomes?.[j] ?? biomeSource.getBiome(worldX, 64, worldZ)\n\t\t\t\tcolor = getBiomeColor(biome, options.biomeColors)\n\t\t\t} else if (noise && layers[0]) {\n\t\t\t\tconst value = noise[j][layers[0]]\n\t\t\t\tconst [min, max] = LAYERS[layers[0]]\n\t\t\t\tconst brightness = (value - min) / (max - min) * 256\n\t\t\t\tcolor = [brightness, brightness, brightness]\n\t\t\t}\n\t\t\tdata[i] = color[0]\n\t\t\tdata[i + 1] = color[1]\n\t\t\tdata[i + 2] = color[2]\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nexport async function getBiome(state: any, x: number, z: number, options: BiomeSourceOptions): Promise {\n\tconst { biomeSource } = await getCached(state, options)\n\n\tconst [xx, zz] = toWorld([x, z], options)\n\treturn biomeSource.getBiome(xx, 64, zz)\n}\n\nasync function getCached(state: any, options: BiomeSourceOptions): Promise<{ biomeSource: CachedBiomeSource}> {\n\tconst newState = [state, options.octaves, options.shaper.toJson(), `${options.seed}`, options.version]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\n\t\tbiomeSourceCache = await getBiomeSource(state, options)\n\t}\n\treturn {\n\t\tbiomeSource: biomeSourceCache,\n\t} \n}\n\nasync function getBiomeSource(state: any, options: BiomeSourceOptions): Promise {\n\tswitch (state?.type?.replace(/^minecraft:/, '')) {\n\t\tcase 'fixed':\n\t\t\treturn new FixedBiome(state.biome as string)\n\n\t\tcase 'checkerboard':\n\t\t\tconst shift = (state.scale ?? 2) + 2\n\t\t\tconst numBiomes = state.biomes?.length ?? 0\n\t\t\treturn {\n\t\t\t\tgetBiome(x: number, _y: number, z: number) {\n\t\t\t\t\tconst i = (((x >> shift) + (z >> shift)) % numBiomes + numBiomes) % numBiomes\n\t\t\t\t\treturn (state.biomes?.[i].node as string)\n\t\t\t\t},\n\t\t\t}\n\n\t\tcase 'multi_noise':\n\t\t\tswitch(state.preset?.replace(/^minecraft:/, '')) {\n\t\t\t\tcase 'nether':\n\t\t\t\t\tstate = options.version === '1.18' ? NetherPreset18 : NetherPreset\n\t\t\t\t\tbreak\n\t\t\t\tcase 'overworld':\n\t\t\t\t\tstate = options.version === '1.18' ? await OverworldPreset18() : state\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t\tstate = DataModel.unwrapLists(state)\n\t\t\tif (options.version === '1.18') {\n\t\t\t\tawait loadWasm()\n\t\t\t\tconst BiomeIds = new BiMap()\n\t\t\t\tconst param = (p: number | number[]) => {\n\t\t\t\t\treturn typeof p === 'number' ? [p, p] : p\n\t\t\t\t}\n\t\t\t\tconst [t0, t1, h0, h1, c0, c1, e0, e1, w0, w1, d0, d1, o, b] = [[], [], [], [], [], [], [], [], [], [], [], [], [], []] as number[][]\n\t\t\t\tfor (const i of state.biomes) {\n\t\t\t\t\tconst { temperature, humidity, continentalness, erosion, weirdness, depth, offset } = i.parameters\n\t\t\t\t\tt0.push(param(temperature)[0])\n\t\t\t\t\tt1.push(param(temperature)[1])\n\t\t\t\t\th0.push(param(humidity)[0])\n\t\t\t\t\th1.push(param(humidity)[1])\n\t\t\t\t\tc0.push(param(continentalness)[0])\n\t\t\t\t\tc1.push(param(continentalness)[1])\n\t\t\t\t\te0.push(param(erosion)[0])\n\t\t\t\t\te1.push(param(erosion)[1])\n\t\t\t\t\tw0.push(param(weirdness)[0])\n\t\t\t\t\tw1.push(param(weirdness)[1])\n\t\t\t\t\td0.push(param(depth)[0])\n\t\t\t\t\td1.push(param(depth)[1])\n\t\t\t\t\to.push(offset)\n\t\t\t\t\tb.push(BiomeIds.getOrPut(i.biome, Math.floor(Math.random() * 2147483647)))\n\t\t\t\t}\n\t\t\t\tconst parameters = biome_parameters(new Float64Array(t0), new Float64Array(t1), new Float64Array(h0), new Float64Array(h1), new Float64Array(c0), new Float64Array(c1), new Float64Array(e0), new Float64Array(e1), new Float64Array(w0), new Float64Array(w1), new Float64Array(d0), new Float64Array(d1), new Float64Array(o), new Int32Array(b))\n\t\t\t\tconst sampler = climate_sampler(options.seed, options.octaves.temperature.firstOctave, new Float64Array(options.octaves.temperature.amplitudes), options.octaves.humidity.firstOctave, new Float64Array(options.octaves.humidity.amplitudes), options.octaves.continentalness.firstOctave, new Float64Array(options.octaves.continentalness.amplitudes), options.octaves.erosion.firstOctave, new Float64Array(options.octaves.erosion.amplitudes), options.octaves.weirdness.firstOctave, new Float64Array(options.octaves.weirdness.amplitudes), options.octaves.shift.firstOctave, new Float64Array(options.octaves.shift.amplitudes))\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x, y, z) {\n\t\t\t\t\t\tconst ids = multi_noise(parameters, sampler, x, x + 1, 1, y, y + 1, 1, z, z + 1, 1)\n\t\t\t\t\t\treturn BiomeIds.getA(ids[0]) ?? 'unknown'\n\t\t\t\t\t},\n\t\t\t\t\tgetBiomes(xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep) {\n\t\t\t\t\t\tconst ids = multi_noise(parameters, sampler, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep)\n\t\t\t\t\t\treturn [...ids].map(id => BiomeIds.getA(id) ?? 'unknown')\n\t\t\t\t\t},\n\t\t\t\t\tgetClimate(layers, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep) {\n\t\t\t\t\t\tconst climate = climate_noise(sampler, xFrom, xTo, xStep, yFrom, yTo, yStep, zFrom, zTo, zStep)\n\t\t\t\t\t\tconst result = []\n\t\t\t\t\t\tfor (let i = 0; i < climate.length; i += 7) {\n\t\t\t\t\t\t\tconst [t, h, c, e, w] = climate.slice(i, i + 5)\n\t\t\t\t\t\t\tconst point = TerrainShaper.point(c, e, w)\n\t\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\t\ttemperature: t,\n\t\t\t\t\t\t\t\thumidity: h,\n\t\t\t\t\t\t\t\tcontinentalness: c,\n\t\t\t\t\t\t\t\terosion: e,\n\t\t\t\t\t\t\t\tweirdness: w,\n\t\t\t\t\t\t\t\t...layers.has('offset') && { offset: options.shaper.offset(point) },\n\t\t\t\t\t\t\t\t...layers.has('factor') && { factor: options.shaper.factor(point) },\n\t\t\t\t\t\t\t\t...layers.has('jaggedness') && { jaggedness: options.shaper.jaggedness(point) },\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst noise = ['altitude', 'temperature', 'humidity', 'weirdness']\n\t\t\t\t\t.map((id, i) => {\n\t\t\t\t\t\tconst config = state[`${id}_noise`]\n\t\t\t\t\t\tconfig.firstOctave = clamp(config.firstOctave ?? -7, -100, -1)\n\t\t\t\t\t\treturn new NormalNoise(new LegacyRandom(options.seed + BigInt(i)), config)\n\t\t\t\t\t})\n\t\t\t\tif (!Array.isArray(state.biomes) || state.biomes.length === 0) {\n\t\t\t\t\treturn new FixedBiome('unknown')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tgetBiome(x: number, _y: number, z: number): string {\n\t\t\t\t\t\tconst n = noise.map(n => n.sample(x, z, 0))\n\t\t\t\t\t\tlet minDist = Infinity\n\t\t\t\t\t\tlet minBiome = ''\n\t\t\t\t\t\tfor (const { biome, parameters: p } of state.biomes) {\n\t\t\t\t\t\t\tconst dist = square(p.altitude - n[0]) + square(p.temperature - n[1]) + square(p.humidity - n[2]) + square(p.weirdness - n[3]) + square(p.offset)\n\t\t\t\t\t\t\tif (dist < minDist) {\n\t\t\t\t\t\t\t\tminDist = dist\n\t\t\t\t\t\t\t\tminBiome = biome\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn minBiome\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t}\n\tthrow new Error('Unknown biome source')\n}\n\nfunction getBiomeColor(biome: string, biomeColors: BiomeColors): Triple {\n\tif (!biome) {\n\t\treturn [128, 128, 128]\n\t}\n\tconst color = biomeColors[biome] ?? VanillaColors[biome]\n\tif (color === undefined) {\n\t\treturn stringToColor(biome)\n\t}\n\treturn color\n}\n\nfunction toWorld([x, z]: [number, number], options: BiomeSourceOptions) {\n\tconst xx = (x - options.offset[0] - 100 + options.res / 2) * options.scale\n\tconst zz = (z - options.offset[1] - 100 + options.res / 2) * options.scale\n\treturn [xx, zz]\n}\n\nconst VanillaColors: Record = {\n\t'minecraft:badlands': [217,69,21],\n\t'minecraft:badlands_plateau': [202,140,101],\n\t'minecraft:bamboo_jungle': [118,142,20],\n\t'minecraft:bamboo_jungle_hills': [59,71,10],\n\t'minecraft:basalt_deltas': [64,54,54],\n\t'minecraft:beach': [250,222,85],\n\t'minecraft:birch_forest': [48,116,68],\n\t'minecraft:birch_forest_hills': [31,95,50],\n\t'minecraft:cold_ocean': [32,32,112],\n\t'minecraft:crimson_forest': [221,8,8],\n\t'minecraft:dark_forest': [64,81,26],\n\t'minecraft:dark_forest_hills': [104,121,66],\n\t'minecraft:deep_cold_ocean': [32,32,56],\n\t'minecraft:deep_frozen_ocean': [64,64,144],\n\t'minecraft:deep_lukewarm_ocean': [0,0,64],\n\t'minecraft:deep_ocean': [0,0,48],\n\t'minecraft:deep_warm_ocean': [0,0,80],\n\t'minecraft:desert': [250,148,24],\n\t'minecraft:desert_hills': [210,95,18],\n\t'minecraft:desert_lakes': [255,188,64],\n\t'minecraft:end_barrens': [128,128,255],\n\t'minecraft:end_highlands': [128,128,255],\n\t'minecraft:end_midlands': [128,128,255],\n\t'minecraft:eroded_badlands': [255,109,61],\n\t'minecraft:flower_forest': [45,142,73],\n\t'minecraft:forest': [5,102,33],\n\t'minecraft:frozen_ocean': [112,112,214],\n\t'minecraft:frozen_river': [160,160,255],\n\t'minecraft:giant_spruce_taiga': [129,142,121],\n\t'minecraft:old_growth_spruce_taiga': [129,142,121],\n\t'minecraft:giant_spruce_taiga_hills': [109,119,102],\n\t'minecraft:giant_tree_taiga': [89,102,81],\n\t'minecraft:old_growth_pine_taiga': [89,102,81],\n\t'minecraft:giant_tree_taiga_hills': [69,79,62],\n\t'minecraft:gravelly_hills': [136,136,136],\n\t'minecraft:gravelly_mountains': [136,136,136],\n\t'minecraft:windswept_gravelly_hills': [136,136,136],\n\t'minecraft:ice_spikes': [180,220,220],\n\t'minecraft:jungle': [83,123,9],\n\t'minecraft:jungle_edge': [98,139,23],\n\t'minecraft:sparse_jungle': [98,139,23],\n\t'minecraft:jungle_hills': [44,66,5],\n\t'minecraft:lukewarm_ocean': [0,0,144],\n\t'minecraft:modified_badlands_plateau': [242,180,141],\n\t'minecraft:modified_gravelly_mountains': [120,152,120],\n\t'minecraft:modified_jungle': [123,163,49],\n\t'minecraft:modified_jungle_edge': [138,179,63],\n\t'minecraft:modified_wooded_badlands_plateau': [216,191,141],\n\t'minecraft:mountain_edge': [114,120,154],\n\t'minecraft:extreme_hills': [96,96,96],\n\t'minecraft:mountains': [96,96,96],\n\t'minecraft:windswept_hills': [96,96,96],\n\t'minecraft:mushroom_field_shore': [160,0,255],\n\t'minecraft:mushroom_fields': [255,0,255],\n\t'minecraft:nether_wastes': [191,59,59],\n\t'minecraft:ocean': [0,0,112],\n\t'minecraft:plains': [141,179,96],\n\t'minecraft:river': [0,0,255],\n\t'minecraft:savanna': [189,178,95],\n\t'minecraft:savanna_plateau': [167,157,100],\n\t'minecraft:shattered_savanna': [229,218,135],\n\t'minecraft:windswept_savanna': [229,218,135],\n\t'minecraft:shattered_savanna_plateau': [207,197,140],\n\t'minecraft:small_end_islands': [128,128,255],\n\t'minecraft:snowy_beach': [250,240,192],\n\t'minecraft:snowy_mountains': [160,160,160],\n\t'minecraft:snowy_taiga': [49,85,74],\n\t'minecraft:snowy_taiga_hills': [36,63,54],\n\t'minecraft:snowy_taiga_mountains': [89,125,114],\n\t'minecraft:snowy_tundra': [255,255,255],\n\t'minecraft:snowy_plains': [255,255,255],\n\t'minecraft:soul_sand_valley': [94,56,48],\n\t'minecraft:stone_shore': [162,162,132],\n\t'minecraft:stony_shore': [162,162,132],\n\t'minecraft:sunflower_plains': [181,219,136],\n\t'minecraft:swamp': [7,249,178],\n\t'minecraft:swamp_hills': [47,255,218],\n\t'minecraft:taiga': [11,102,89],\n\t'minecraft:taiga_hills': [22,57,51],\n\t'minecraft:taiga_mountains': [51,142,129],\n\t'minecraft:tall_birch_forest': [88,156,108],\n\t'minecraft:old_growth_birch_forest': [88,156,108],\n\t'minecraft:tall_birch_hills': [71,135,90],\n\t'minecraft:the_end': [128,128,255],\n\t'minecraft:the_void': [0,0,0],\n\t'minecraft:warm_ocean': [0,0,172],\n\t'minecraft:warped_forest': [73,144,123],\n\t'minecraft:wooded_badlands_plateau': [176,151,101],\n\t'minecraft:wooded_badlands': [176,151,101],\n\t'minecraft:wooded_hills': [34,85,28],\n\t'minecraft:wooded_mountains': [80,112,80],\n\t'minecraft:windswept_forest': [80,112,80],\n\t'minecraft:snowy_slopes': [140, 195, 222],\n\t'minecraft:lofty_peaks': [196, 168, 193],\n\t'minecraft:jagged_peaks': [196, 168, 193],\n\t'minecraft:snowcapped_peaks': [200, 198, 200],\n\t'minecraft:frozen_peaks': [200, 198, 200],\n\t'minecraft:stony_peaks': [82, 92, 103],\n\t'minecraft:grove': [150, 150, 189],\n\t'minecraft:meadow': [169, 197, 80],\n\t'minecraft:lush_caves': [112, 255, 79],\n\t'minecraft:dripstone_caves': [140, 124, 0],\n}\n\nconst NetherPreset = {type:'minecraft:multi_noise',seed:0,altitude_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},humidity_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{biome:'minecraft:nether_wastes',parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{altitude:0,temperature:0,humidity:-0.5,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{altitude:0,temperature:0.4,humidity:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{altitude:0,temperature:0,humidity:0.5,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{altitude:0,temperature:-0.5,humidity:0,weirdness:0,offset:0.175}}]}\n\nconst NetherPreset18 = {type:'minecraft:multi_noise',biomes:[{biome:'minecraft:nether_wastes',parameters:{temperature:0,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:soul_sand_valley',parameters:{temperature:0,humidity:-0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:crimson_forest',parameters:{temperature:0.4,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0}},{biome:'minecraft:warped_forest',parameters:{temperature:0,humidity:0.5,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.375}},{biome:'minecraft:basalt_deltas',parameters:{temperature:-0.5,humidity:0,continentalness:0,erosion:0,depth:0,weirdness:0,offset:0.175}}]}\n\nasync function OverworldPreset18() {\n\tconst overworld = await fetchPreset('1.18', 'dimension', 'overworld')\n\treturn overworld.generator.biome_source\n}\n","import { DataModel } from '@mcschema/core'\nimport type { Random } from 'deepslate'\nimport { LegacyRandom, PerlinNoise } from 'deepslate'\nimport type { VersionId } from '../Schemas'\nimport { clamp, stringToColor } from '../Utils'\n\ntype BlockPos = [number, number, number]\ntype Placement = [BlockPos, number]\n\ntype PlacementContext = {\n\tplacements: Placement[],\n\tfeatures: string[],\n\trandom: Random,\n\tbiomeInfoNoise: PerlinNoise,\n\tseaLevel: number,\n\tversion: VersionId,\n\tnextFloat(): number,\n\tnextInt(max: number): number,\n\tsampleInt(provider: any): number,\n}\n\nconst terrain = [50, 50, 51, 51, 52, 52, 53, 54, 56, 57, 57, 58, 58, 59, 60, 60, 60, 59, 59, 59, 60, 61, 61, 62, 63, 63, 64, 64, 64, 65, 65, 66, 66, 65, 65, 66, 66, 67, 67, 67, 68, 69, 71, 73, 74, 76, 79, 80, 81, 81, 82, 83, 83, 82, 82, 81, 81, 80, 80, 80, 81, 81, 82, 82] \n\nconst featureColors = [\n\t[255, 77, 54], // red\n\t[59, 118, 255], // blue\n\t[91, 207, 25], // green\n\t[217, 32, 245], // magenta\n\t[255, 209, 41], // yellow\n\t[52, 204, 209], // cyan\n]\n\nexport type DecoratorOptions = {\n\tsize: [number, number, number],\n\tseed: bigint,\n\tversion: VersionId,\n}\nexport function decorator(state: any, img: ImageData, options: DecoratorOptions) {\n\tconst random = new LegacyRandom(options.seed)\n\tconst ctx: PlacementContext = {\n\t\tplacements: [],\n\t\tfeatures: [],\n\t\trandom,\n\t\tbiomeInfoNoise: new PerlinNoise(random.fork(), 0, [1]),\n\t\tseaLevel: 63,\n\t\tversion: options.version,\n\t\tnextFloat: () => random.nextFloat(),\n\t\tnextInt: (max: number) => random.nextInt(max),\n\t\tsampleInt(value) { return sampleInt(value, this) },\n\t}\n\n\tfor (let x = 0; x < options.size[0] / 16; x += 1) {\n\t\tfor (let z = 0; z < options.size[2] / 16; z += 1) {\n\t\t\tgetPlacements([x * 16, 0, z * 16], DataModel.unwrapLists(state), ctx)\n\t\t}\n\t}\n\n\tconst data = img.data\n\timg.data.fill(255)\n\n\tfor (const [pos, feature] of ctx.placements) {\n\t\tif (pos[0] < 0 || pos[1] < 0 || pos[2] < 0 || pos[0] >= options.size[0] || pos[1] >= options.size[1] || pos[2] >= options.size[2]) continue\n\t\tconst i = (pos[2] * (img.width * 4)) + (pos[0] * 4)\n\t\tconst color = feature < featureColors.length ? featureColors[feature] : stringToColor(ctx.features[feature])\n\t\tdata[i] = clamp(50, 205, color[0])\n\t\tdata[i + 1] = clamp(50, 205, color[1])\n\t\tdata[i + 2] = clamp(50, 205, color[2])\n\t\tdata[i + 3] = 255\n\t}\n\n\tfor (let x = 0; x < options.size[0]; x += 1) {\n\t\tfor (let y = 0; y < options.size[2]; y += 1) {\n\t\t\tif ((Math.floor(x / 16) + Math.floor(y / 16)) % 2 === 0) continue\n\t\t\tconst i = (y * (img.width * 4)) + (x * 4)\n\t\t\tfor (let j = 0; j < 3; j += 1) {\n\t\t\t\tdata[i + j] = 0.85 * data[i + j] \n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction normalize(id: string) {\n\treturn id.startsWith('minecraft:') ? id.slice(10) : id\n}\n\nfunction decorateY(pos: BlockPos, y: number): BlockPos[] {\n\treturn [[ pos[0], y, pos[2] ]]\n}\n\nfunction sampleInt(value: any, ctx: PlacementContext): number {\n\tif (typeof value === 'number') {\n\t\treturn value\n\t} else if (value.base) {\n\t\treturn value.base ?? 1 + ctx.nextInt(1 + (value.spread ?? 0))\n\t} else {\n\t\tswitch (normalize(value.type)) {\n\t\t\tcase 'constant': return value.value\n\t\t\tcase 'uniform': return value.value.min_inclusive + ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1)\n\t\t\tcase 'biased_to_bottom': return value.value.min_inclusive + ctx.nextInt(ctx.nextInt(value.value.max_inclusive - value.value.min_inclusive + 1) + 1)\n\t\t\tcase 'clamped': return Math.max(value.value.min_inclusive, Math.min(value.value.max_inclusive, sampleInt(value.value.source, ctx)))\n\t\t}\n\t\treturn 1\n\t}\n}\n\nfunction useFeature(s: string, ctx: PlacementContext) {\n\tconst i = ctx.features.indexOf(s)\n\tif (i != -1) return i\n\tctx.features.push(s)\n\treturn ctx.features.length - 1\n}\n\nfunction getPlacements(pos: BlockPos, feature: any, ctx: PlacementContext): void {\n\tif (typeof feature === 'string') {\n\t\tctx.placements.push([pos, useFeature(feature, ctx)])\n\t\treturn\n\t}\n\tconst type = normalize(feature?.type ?? 'no_op')\n\tconst featureFn = Features[type]\n\tif (featureFn) {\n\t\tfeatureFn(feature.config, pos, ctx)\n\t} else {\n\t\tctx.placements.push([pos, useFeature(JSON.stringify(feature), ctx)])\n\t}\n}\n\nfunction getPositions(pos: BlockPos, decorator: any, ctx: PlacementContext): BlockPos[] {\n\tconst type = normalize(decorator?.type ?? 'nope')\n\tconst decoratorFn = Decorators[type]\n\tif (!decoratorFn) {\n\t\treturn [pos]\n\t}\n\treturn decoratorFn(decorator?.config, pos, ctx)\n}\n\nconst Features: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => void,\n} = {\n\tdecorated: (config, pos, ctx) => {\n\t\tconst positions = getPositions(pos, config?.decorator, ctx)\n\t\tpositions.forEach(p => getPlacements(p, config?.feature, ctx))\n\t},\n\trandom_boolean_selector: (config, pos, ctx) => {\n\t\tconst feature = ctx.nextFloat() < 0.5 ? config?.feature_true : config?.feature_false\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n\trandom_selector: (config, pos, ctx) => {\n\t\tfor (const f of config?.features ?? []) {\n\t\t\tif (ctx.nextFloat() < (f?.chance ?? 0)) {\n\t\t\t\tgetPlacements(pos, f.feature, ctx)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tgetPlacements(pos, config?.default, ctx)\n\t},\n\tsimple_random_selector: (config, pos, ctx) => {\n\t\tconst feature = config?.features?.[ctx.nextInt(config?.features?.length ?? 0)]\n\t\tgetPlacements(pos, feature, ctx)\n\t},\n}\n\nconst Decorators: {\n\t[key: string]: (config: any, pos: BlockPos, ctx: PlacementContext) => BlockPos[],\n} = {\n\tchance: (config, pos, ctx) => {\n\t\treturn ctx.nextFloat() < 1 / (config?.chance ?? 1) ? [pos] : []\n\t},\n\tcount: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t},\n\tcount_extra: (config, pos, ctx) => {\n\t\tlet count = config?.count ?? 1\n\t\tif (ctx.nextFloat() < config.extra_chance ?? 0){\n\t\t\tcount += config.extra_count ?? 0\n\t\t}\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_multilayer: (config, pos, ctx) => {\n\t\treturn new Array(ctx.sampleInt(config?.count ?? 1)).fill(pos)\n\t\t\t.map(p => [\n\t\t\t\tp[0] + ctx.nextInt(16),\n\t\t\t\tp[1], \n\t\t\t\tp[2] + ctx.nextInt(16),\n\t\t\t])\n\t},\n\tcount_noise: (config, pos, ctx) => {\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / 200, 0, pos[2] / 200)\n\t\tconst count = noise < config.noise_level ? config.below_noise : config.above_noise\n\t\treturn new Array(count).fill(pos)\n\t},\n\tcount_noise_biased: (config, pos, ctx) => {\n\t\tconst factor = Math.max(1, config.noise_factor)\n\t\tconst noise = ctx.biomeInfoNoise.sample(pos[0] / factor, 0, pos[2] / factor)\n\t\tconst count = Math.max(0, Math.ceil((noise + (config.noise_offset ?? 0)) * config.noise_to_count_ratio))\n\t\treturn new Array(count).fill(pos)\n\t},\n\tdark_oak_tree: (_config, pos, ctx) => {\n\t\treturn [...new Array(16)].map((_, i) => {\n\t\t\tconst x = Math.floor(i / 4) * 4 + 1 + ctx.nextInt(3) + pos[0]\n\t\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, x)])\n\t\t\tconst z = Math.floor(i % 4) * 4 + 1 + ctx.nextInt(3) + pos[2]\n\t\t\treturn [x, y, z]\n\t\t})\n\t},\n\tdecorated: (config, pos, ctx) => {\n\t\treturn getPositions(pos, config?.outer, ctx).flatMap(p => {\n\t\t\treturn getPositions(p, config?.inner, ctx)\n\t\t})\n\t},\n\tdepth_average: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(config?.spread ?? 0) + ctx.nextInt(config?.spread ?? 0) - (config.spread ?? 0) + (config?.baseline ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\temerald_ore: (_config, pos, ctx) => {\n\t\tconst count = 3 + ctx.nextInt(6)\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t4 + ctx.nextInt(28),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tfire: (config, pos, ctx) => {\n\t\tconst count = 1 + ctx.nextInt(ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\tglowstone: (config, pos, ctx) => {\n\t\tconst count = ctx.nextInt(1 + ctx.nextInt(ctx.sampleInt(config?.count)))\n\t\treturn [...new Array(count)].map(() => [\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tctx.nextInt(128),\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t])\n\t},\n\theightmap: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\theightmap_spread_double: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, ctx.nextInt(y * 2))\n\t},\n\theightmap_world_surface: (_config, pos, ctx) => {\n\t\tconst y = Math.max(ctx.seaLevel, terrain[clamp(0, 63, pos[0])])\n\t\treturn decorateY(pos, y)\n\t},\n\ticeberg: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + 4 + ctx.nextInt(8),\n\t\t\tpos[1],\n\t\t\tpos[2] + 4 + ctx.nextInt(8),\n\t\t]]\n\t},\n\tlava_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt((config.chance ?? 1) / 10) === 0) {\n\t\t\tconst y = ctx.nextInt(ctx.nextInt(256 - 8) + 8)\n\t\t\tif (y < ctx.seaLevel || ctx.nextInt((config?.chance ?? 1) / 8) == 0) {\n\t\t\t\tconst x = ctx.nextInt(16) + pos[0]\n\t\t\t\tconst z = ctx.nextInt(16) + pos[2]\n\t\t\t\treturn [[x, y, z]]\n\t\t\t}\n\t\t}\n\t\treturn []\n\t},\n\tnope: (_config, pos) => {\n\t\treturn [pos]\n\t},\n\trange: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)\n\t\treturn decorateY(pos, y)\n\t},\n\trange_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\trange_very_biased: (config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(ctx.nextInt(ctx.nextInt((config?.maximum ?? 1) - (config?.top_offset ?? 0)) + (config?.bottom_offset ?? 0)) + (config?.bottom_offset ?? 0))\n\t\treturn decorateY(pos, y)\n\t},\n\tspread_32_above: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\ttop_solid_heightmap: (_config, pos) => {\n\t\tconst y = terrain[clamp(0, 63, pos[0])]\n\t\treturn decorateY(pos, y)\n\t},\n\tmagma: (_config, pos, ctx) => {\n\t\tconst y = ctx.nextInt(pos[1] + 32)\n\t\treturn decorateY(pos, y)\n\t},\n\tsquare: (_config, pos, ctx) => {\n\t\treturn [[\n\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\tpos[1],\n\t\t\tpos[2] + ctx.nextInt(16),\n\t\t]]\n\t},\n\tsurface_relative_threshold: (config, pos) => {\n\t\tconst height = terrain[clamp(0, 63, pos[0])]\n\t\tconst min = height + (config?.min_inclusive ?? -Infinity)\n\t\tconst max = height + (config?.max_inclusive ?? Infinity)\n\t\treturn (pos[1] < min || pos[1] > max) ? [pos] : []\n\t},\n\twater_lake: (config, pos, ctx) => {\n\t\tif (ctx.nextInt(config.chance ?? 1) === 0) {\n\t\t\treturn [[\n\t\t\t\tpos[0] + ctx.nextInt(16),\n\t\t\t\tctx.nextInt(256),\n\t\t\t\tpos[2] + ctx.nextInt(16),\n\t\t\t]]\n\t\t}\n\t\treturn []\n\t},\n}\n","import { LegacyRandom, PerlinNoise } from 'deepslate'\nimport { clampedLerp, lerp2 } from '../../Utils'\n\nexport class NoiseChunkGenerator {\n\tprivate readonly minLimitPerlinNoise: PerlinNoise\n\tprivate readonly maxLimitPerlinNoise: PerlinNoise\n\tprivate readonly mainPerlinNoise: PerlinNoise\n\tprivate readonly depthNoise: PerlinNoise\n\n\tprivate settings: any = {}\n\tprivate chunkWidth: number = 4\n\tprivate chunkHeight: number = 4\n\tprivate chunkCountY: number = 32\n\tprivate biomeDepth: number = 0.1\n\tprivate biomeScale: number = 0.2\n\n\tprivate noiseColumnCache: (number[] | null)[] = []\n\tprivate xOffset: number = 0\n\n\tconstructor(seed: bigint) {\n\t\tconst random = new LegacyRandom(seed)\n\t\tthis.minLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.maxLimitPerlinNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.mainPerlinNoise = new PerlinNoise(random, -7, [1, 1, 1, 1, 1, 1, 1, 1])\n\t\tthis.depthNoise = new PerlinNoise(random, -15, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n\t}\n\n\tpublic reset(settings: any, depth: number, scale: number, xOffset: number, width: number) {\n\t\tthis.settings = settings\n\t\tthis.chunkWidth = settings.size_horizontal * 4\n\t\tthis.chunkHeight = settings.size_vertical * 4\n\t\tthis.chunkCountY = Math.floor(settings.height / this.chunkHeight)\n\n\t\tif (settings.amplified && depth > 0) {\n\t\t\tdepth = 1 + depth * 2\n\t\t\tscale = 1 + scale * 4\n\t\t}\n\t\tthis.biomeDepth = 0.265625 * (depth * 0.5 - 0.125)\n\t\tthis.biomeScale = 96.0 / (scale * 0.9 + 0.1)\n\n\t\tthis.noiseColumnCache = Array(width).fill(null)\n\t\tthis.xOffset = xOffset\n\t}\n \n\tpublic iterateNoiseColumn(x: number): number[] {\n\t\tconst data = Array(this.chunkCountY * this.chunkHeight)\n\t\tconst cx = Math.floor(x / this.chunkWidth)\n\t\tconst ox = Math.floor(x % this.chunkWidth) / this.chunkWidth\n\t\tconst noise1 = this.fillNoiseColumn(cx)\n\t\tconst noise2 = this.fillNoiseColumn(cx + 1)\n\n\t\tfor (let y = this.chunkCountY - 1; y >= 0; y -= 1) {\n\t\t\tfor (let yy = this.chunkHeight; yy >= 0; yy -= 1) {\n\t\t\t\tconst oy = yy / this.chunkHeight\n\t\t\t\tconst i = y * this.chunkHeight + yy\n\t\t\t\tdata[i] = lerp2(oy, ox, noise1[y], noise1[y+1], noise2[y], noise2[y+1])\n\t\t\t}\n\t\t}\n\t\treturn data\n\t}\n\n\tprivate fillNoiseColumn(x: number): number[] {\n\t\tconst cachedColumn = this.noiseColumnCache[x - this.xOffset]\n\t\tif (cachedColumn) return cachedColumn\n\n\t\tconst data = Array(this.chunkCountY + 1)\n\n\t\tconst xzScale = 684.412 * this.settings.sampling.xz_scale\n\t\tconst yScale = 684.412 * this.settings.sampling.y_scale\n\t\tconst xzFactor = xzScale / this.settings.sampling.xz_factor\n\t\tconst yFactor = yScale / this.settings.sampling.y_factor\n\t\tconst randomDensity = this.settings.random_density_offset ? this.getRandomDensity(x) : 0\n\n\t\tfor (let y = 0; y <= this.chunkCountY; y += 1) {\n\t\t\tlet noise = this.sampleAndClampNoise(x, y, this.mainPerlinNoise.getOctaveNoise(0)!.zo, xzScale, yScale, xzFactor, yFactor)\n\t\t\tconst yOffset = 1 - y * 2 / this.chunkCountY + randomDensity\n\t\t\tconst density = yOffset * this.settings.density_factor + this.settings.density_offset\n\t\t\tconst falloff = (density + this.biomeDepth) * this.biomeScale\n\t\t\tnoise += falloff * (falloff > 0 ? 4 : 1)\n\n\t\t\tif (this.settings.top_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.top_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(this.chunkCountY - y - (this.settings.top_slide.offset)) / (this.settings.top_slide.size)\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (this.settings.bottom_slide.size > 0) {\n\t\t\t\tnoise = clampedLerp(\n\t\t\t\t\tthis.settings.bottom_slide.target,\n\t\t\t\t\tnoise,\n\t\t\t\t\t(y - (this.settings.bottom_slide.offset)) / (this.settings.bottom_slide.size)\n\t\t\t\t)\n\t\t\t}\n\t\t\tdata[y] = noise\n\t\t}\n\n\t\tthis.noiseColumnCache[x - this.xOffset] = data\n\t\treturn data\n\t}\n\n\tprivate getRandomDensity(x: number): number {\n\t\tconst noise = this.depthNoise.sample(x * 200, 10, this.depthNoise.getOctaveNoise(0)!.zo, 1, 0, true)\n\t\tconst a = (noise < 0) ? -noise * 0.3 : noise\n\t\tconst b = a * 24.575625 - 2\n\t\treturn (b < 0) ? b * 0.009486607142857142 : Math.min(b, 1) * 0.006640625\n\t}\n\n\tprivate sampleAndClampNoise(x: number, y: number, z: number, xzScale: number, yScale: number, xzFactor: number, yFactor: number): number {\n\t\tlet a = 0\n\t\tlet b = 0\n\t\tlet c = 0\n\t\tlet d = 1\n\n\t\tfor (let i = 0; i < 16; i += 1) {\n\t\t\tconst x2 = PerlinNoise.wrap(x * xzScale * d)\n\t\t\tconst y2 = PerlinNoise.wrap(y * yScale * d)\n\t\t\tconst z2 = PerlinNoise.wrap(z * xzScale * d)\n\t\t\tconst e = yScale * d\n\n\t\t\tconst minLimitNoise = this.minLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (minLimitNoise) {\n\t\t\t\ta += minLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tconst maxLimitNoise = this.maxLimitPerlinNoise.getOctaveNoise(i)\n\t\t\tif (maxLimitNoise) {\n\t\t\t\tb += maxLimitNoise.sample(x2, y2, z2, e, y * e) / d\n\t\t\t}\n\n\t\t\tif (i < 8) {\n\t\t\t\tconst mainNoise = this.mainPerlinNoise.getOctaveNoise(i)\n\t\t\t\tif (mainNoise) {\n\t\t\t\t\tc += mainNoise.sample(\n\t\t\t\t\t\tPerlinNoise.wrap(x * xzFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(y * yFactor * d),\n\t\t\t\t\t\tPerlinNoise.wrap(z * xzFactor * d),\n\t\t\t\t\t\tyFactor * d,\n\t\t\t\t\t\ty * yFactor * d \n\t\t\t\t\t) / d\n\t\t\t\t}\n\t\t\t}\n\n\t\t\td /= 2\n\t\t}\n\n\t\treturn clampedLerp(a / 512, b / 512, (c / 10 + 1) / 2)\n\t}\n}\n","import { DataModel } from '@mcschema/core'\nimport type { BlockPos, BlockState } from 'deepslate'\nimport { Chunk, ChunkPos, FixedBiome, NoiseChunkGenerator, NoiseGeneratorSettings } from 'deepslate'\nimport { getOctaves } from '../components'\nimport type { VersionId } from '../Schemas'\nimport { checkVersion } from '../Schemas'\nimport { deepClone, deepEqual } from '../Utils'\nimport { NoiseChunkGenerator as OldNoiseChunkGenerator } from './noise/NoiseChunkGenerator'\n\nexport type NoiseSettingsOptions = {\n\tbiomeScale?: number,\n\tbiomeDepth?: number,\n\toffset: number,\n\twidth: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nconst Z = 0\n\nconst colors: Record = {\n\t'minecraft:air': [150, 160, 170],\n\t'minecraft:water': [20, 80, 170],\n\t'minecraft:lava': [200, 100, 0],\n\t'minecraft:stone': [50, 50, 50],\n\t'minecraft:netherrack': [100, 40, 40],\n\t'minecraft:end_stone': [200, 200, 140],\n}\n\nlet cacheState: any\nlet generatorCache: NoiseChunkGenerator\nlet chunkCache: Chunk[] = []\n\nexport function noiseSettings(state: any, img: ImageData, options: NoiseSettingsOptions) {\n\tif (checkVersion(options.version, '1.18')) {\n\t\tconst { settings, generator } = getCached(state, options)\n\n\t\tconst slice = new LevelSlice(-options.offset, options.width, settings.noise.minY, settings.noise.height)\n\t\tslice.fill(generator)\n\n\t\tconst data = img.data\n\t\tfor (let x = 0; x < options.width; x += 1) {\n\t\t\tfor (let y = 0; y < settings.noise.height; y += 1) {\n\t\t\t\tconst i = x * 4 + (settings.noise.height-y-1) * 4 * img.width\n\t\t\t\tconst state = slice.getBlockState([x - options.offset, y, Z])\n\t\t\t\tconst color = colors[state.getName()] ?? [0, 0, 0]\n\t\t\t\tdata[i] = color[0]\n\t\t\t\tdata[i + 1] = color[1]\n\t\t\t\tdata[i + 2] = color[2]\n\t\t\t\tdata[i + 3] = 255\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tconst generator = new OldNoiseChunkGenerator(options.seed)\n\tgenerator.reset(state.noise, options.biomeDepth ?? 0, options.biomeScale ?? 0, options.offset, options.width)\n\tconst data = img.data\n\tconst row = img.width * 4\n\tfor (let x = 0; x < options.width; x += 1) {\n\t\tconst noise = generator.iterateNoiseColumn(x - options.offset).reverse()\n\t\tfor (let y = 0; y < state.noise.height; y += 1) {\n\t\t\tconst i = y * row + x * 4\n\t\t\tconst color = getColor(noise, y)\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n\nfunction getCached(state: unknown, options: NoiseSettingsOptions) {\n\tconst settings = NoiseGeneratorSettings.fromJson(DataModel.unwrapLists(state))\n\tsettings.octaves = getOctaves(settings)\n\n\tconst newState = [state, `${options.seed}`]\n\tif (!deepEqual(newState, cacheState)) {\n\t\tcacheState = deepClone(newState)\n\t\tchunkCache = []\n\t\tconst biomeSource = new FixedBiome('unknown')\n\t\tgeneratorCache = new NoiseChunkGenerator(options.seed, biomeSource, settings)\n\t}\n\treturn {\n\t\tsettings,\n\t\tgenerator: generatorCache,\n\t}\n}\n\nfunction getColor(noise: number[], y: number): number {\n\tif (noise[y] > 0) {\n\t\treturn 0\n\t}\n\tif (noise[y+1] > 0) {\n\t\treturn 150\n\t}\n\treturn 255\n}\n\nclass LevelSlice {\n\tprivate readonly chunks: Chunk[]\n\tprivate readonly filled: boolean[]\n\n\tconstructor(\n\t\tprivate readonly minX: number,\n\t\twidth: number,\n\t\tminY: number,\n\t\theight: number,\n\t) {\n\t\tthis.filled = []\n\t\tthis.chunks = [...Array(Math.ceil(width / 16) + 1)]\n\t\t\t.map((_, i) => {\n\t\t\t\tconst x = (minX >> 4) + i\n\t\t\t\tconst cached = chunkCache.find(c => c.pos[0] === x)\n\t\t\t\tif (cached) {\n\t\t\t\t\tthis.filled[i] = true\n\t\t\t\t\treturn cached\n\t\t\t\t}\n\t\t\t\treturn new Chunk(minY, height, ChunkPos.create(x, Z >> 4))\n\t\t\t})\n\t}\n\n\tpublic fill(generator: NoiseChunkGenerator) {\n\t\tthis.chunks.forEach((chunk, i) => {\n\t\t\tif (!this.filled[i]) {\n\t\t\t\tgenerator.fill(chunk)\n\t\t\t\tthis.filled[i] = true\n\t\t\t\tchunkCache.push(chunk)\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic getBlockState(pos: BlockPos): BlockState {\n\t\tconst chunkIndex = (pos[0] >> 4) - (this.minX >> 4)\n\t\treturn this.chunks[chunkIndex].getBlockState(pos)\n\t}\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport type { NoiseOctaves } from 'deepslate'\nimport { NoiseGeneratorSettings, TerrainShaper } from 'deepslate'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { biomeMap, getBiome } from '../../previews'\nimport { newSeed } from '../../Utils'\n\nconst LAYERS = ['biomes', 'temperature', 'humidity', 'continentalness', 'erosion', 'weirdness', 'offset', 'factor', 'jaggedness'] as const\n\nconst OverworldShaper = TerrainShaper.overworld()\n\nexport const BiomeSourcePreview = ({ model, data, shown, lang, version }: PreviewProps) => {\n\tconst [scale, setScale] = useState(2)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst [layers, setLayers] = useState(new Set(['biomes']))\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst res = useRef(1)\n\tconst refineTimeout = useRef(undefined)\n\n\tconst seed = BigInt(model.get(new Path(['generator', 'seed'])))\n\tconst octaves = getOctaves(model.get(new Path(['generator', 'settings'])))\n\tconst shaper = getShaper(model.get(new Path(['generator', 'settings'])))\n\tconst state = shown ? calculateState(data, octaves, shaper) : ''\n\tconst type: string = data.type?.replace(/^minecraft:/, '')\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [200 / res.current, 200 / res.current]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { octaves, shaper, biomeColors: {}, layers, offset: offset.current, scale, seed, res: res.current, version }\n\t\t\tawait biomeMap(data, img, options)\n\t\t\tif (res.current === 4) {\n\t\t\t\tclearTimeout(refineTimeout.current)\n\t\t\t\trefineTimeout.current = setTimeout(() => {\n\t\t\t\t\tres.current = 1\n\t\t\t\t\tredraw()\n\t\t\t\t}, 150) as any\n\t\t\t}\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 200\n\t\t\toffset.current[1] = offset.current[1] + dy * 200\n\t\t\tclearTimeout(refineTimeout.current)\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(x, y) {\n\t\t\tconst options = { octaves, shaper, biomeColors: {}, layers, offset: offset.current, scale, seed, res: 1, version }\n\t\t\tconst biome = await getBiome(data, Math.floor(x * 200), Math.floor(y * 200), options)\n\t\t\tsetFocused(biome)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, scale, seed, layers])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tres.current = type === 'multi_noise' ? 4 : 1\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, layers, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t\n\t\t\t\t\t{LAYERS.map(name => {\n\t\t\t\t\t\tconst enabled = layers.has(name)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tsetLayers(new Set([name]))\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t}} />\n\t\t\t\t\t})}\n\t\t\t\t}\n\t\t\t{(type === 'multi_noise' || type === 'checkerboard') && <>\n\t\t\t\t changeScale(scale * 1.5)} />\n\t\t\t\t changeScale(scale / 1.5)} />\n\t\t\t}\n\t\t\t{type === 'multi_noise' &&\n\t\t\t\t newSeed(model)} />}\n\t\t
\n\t\t\n\t\n}\n\nfunction calculateState(data: any, octaves: NoiseOctaves, shaper: TerrainShaper) {\n\treturn JSON.stringify([data, octaves, shaper.toJson()])\n}\n\nexport function getOctaves(obj: any): NoiseOctaves {\n\tif (typeof obj !== 'string') {\n\t\tconst settings = NoiseGeneratorSettings.fromJson(DataModel.unwrapLists(obj))\n\t\tobj = settings.noise.densityFactor === 0 && settings.noise.densityOffset === -0.030078125\n\t\t\t? 'minecraft:nether' : 'minecraft:overworld'\n\t}\n\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\tcase 'overworld':\n\t\tcase 'amplified':\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: -9, amplitudes: [1.5, 0, 1, 0, 0, 0] },\n\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1, 0, 0, 0, 0] },\n\t\t\t\tcontinentalness: { firstOctave: -9, amplitudes: [1, 1, 2, 2, 2, 1, 1, 1, 1] },\n\t\t\t\terosion: { firstOctave: -9, amplitudes: [1, 1, 0, 1, 1] },\n\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 2, 1, 0, 0, 0] },\n\t\t\t\tshift: { firstOctave: -3, amplitudes: [1, 1, 1, 0] },\n\t\t\t}\n\t\tcase 'end':\n\t\tcase 'floating_islands':\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\thumidity: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tcontinentalness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\terosion: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tweirdness: { firstOctave: 0, amplitudes: [0] },\n\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t}\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\ttemperature: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\thumidity: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tcontinentalness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\terosion: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tweirdness: { firstOctave: -7, amplitudes: [1, 1] },\n\t\t\t\tshift: { firstOctave: 0, amplitudes: [0] },\n\t\t\t}\n\t}\n}\n\nexport function getShaper(obj: any): TerrainShaper {\n\tif (typeof obj === 'string') {\n\t\tswitch (obj.replace(/^minecraft:/, '')) {\n\t\t\tcase 'overworld':\n\t\t\tcase 'amplified':\n\t\t\t\treturn OverworldShaper\n\t\t\tdefault:\n\t\t\t\treturn TerrainShaper.fromJson({ offset: 0, factor: 0, jaggedness: 0 })\n\t\t}\n\t}\n\treturn TerrainShaper.fromJson(DataModel.unwrapLists(obj?.noise?.terrain_shaper))\n}\n","import { useEffect, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { decorator } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const DecoratorPreview = ({ data, version, shown, lang }: PreviewProps) => {\n\tconst [scale, setScale] = useState(4)\n\tconst [seed, setSeed] = useState(randomSeed())\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [scale * 16, scale * 16]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tdecorator(data, img, { seed, version, size: [scale * 16, 128, scale * 16] })\n\t\t},\n\t})\n\n\tconst state = JSON.stringify(data)\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t setScale(Math.min(16, scale + 1))} />\n\t\t\t setScale(Math.max(1, scale - 1))} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { normalNoise } from '../../previews'\nimport { randomSeed } from '../../Utils'\n\nexport const NoisePreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [scale, setScale] = useState(2)\n\tconst offset = useRef<[number, number]>([0, 0])\n\tconst state = JSON.stringify([data])\n\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [256, 256]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { offset: offset.current, scale, seed, version }\n\t\t\tnormalNoise(data, img, options)\n\t\t},\n\t\tasync onDrag(dx, dy) {\n\t\t\toffset.current[0] = offset.current[0] + dx * 256\n\t\t\toffset.current[1] = offset.current[1] + dy * 256\n\t\t\tredraw()\n\t\t},\n\t}, [state, scale, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, scale, seed, shown])\n\n\tconst changeScale = (newScale: number) => {\n\t\toffset.current[0] = offset.current[0] * scale / newScale\n\t\toffset.current[1] = offset.current[1] * scale / newScale\n\t\tsetScale(newScale)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t changeScale(scale * 1.5)} />\n\t\t\t changeScale(scale / 1.5)} />\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import { DataModel } from '@mcschema/core'\nimport { LegacyRandom, NoiseParameters, NormalNoise } from 'deepslate'\nimport type { VersionId } from '../Schemas'\n\nexport type NoiseOptions = {\n\toffset: [number, number],\n\tscale: number,\n\tseed: bigint,\n\tversion: VersionId,\n}\n\nexport function normalNoise(state: any, img: ImageData, options: NoiseOptions) {\n\tconst random = new LegacyRandom(options.seed)\n\tconst params = NoiseParameters.fromJson(DataModel.unwrapLists(state))\n\tconst noise = new NormalNoise(random, params)\n\n\tconst ox = -options.offset[0] - 100\n\tconst oz = -options.offset[1] - 100\n\tconst data = img.data\n\tfor (let x = 0; x < 256; x += 1) {\n\t\tfor (let y = 0; y < 256; y += 1) {\n\t\t\tconst i = x * 4 + y * 4 * 256\n\t\t\tconst xx = (x + ox) * options.scale\n\t\t\tconst yy = (y + oz) * options.scale\n\t\t\tconst color = (noise.sample(xx, yy, 0) + 1) * 128\n\t\t\tdata[i] = color\n\t\t\tdata[i + 1] = color\n\t\t\tdata[i + 2] = color\n\t\t\tdata[i + 3] = 255\n\t\t}\n\t}\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport type { PreviewProps } from '.'\nimport { Btn, BtnInput, BtnMenu } from '..'\nimport { useCanvas } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { noiseSettings } from '../../previews'\nimport { checkVersion } from '../../Schemas'\nimport { randomSeed } from '../../Utils'\n\nexport const NoiseSettingsPreview = ({ lang, data, shown, version }: PreviewProps) => {\n\tconst loc = locale.bind(null, lang)\n\tconst [seed, setSeed] = useState(randomSeed())\n\tconst [biomeScale, setBiomeScale] = useState(0.2)\n\tconst [biomeDepth, setBiomeDepth] = useState(0.1)\n\tconst [focused, setFocused] = useState(undefined)\n\tconst offset = useRef(0)\n\tconst state = JSON.stringify([data, biomeScale, biomeDepth])\n\n\tconst size = data?.noise?.height ?? 256\n\tconst { canvas, redraw } = useCanvas({\n\t\tsize() {\n\t\t\treturn [size, size]\n\t\t},\n\t\tasync draw(img) {\n\t\t\tconst options = { biomeDepth, biomeScale, offset: offset.current, width: img.width, seed, version }\n\t\t\tnoiseSettings(data, img, options)\n\t\t},\n\t\tasync onDrag(dx) {\n\t\t\toffset.current += dx * size\n\t\t\tredraw()\n\t\t},\n\t\tasync onHover(_, y) {\n\t\t\tconst worldY = size - Math.max(1, Math.ceil(y * size)) + (data?.noise?.min_y ?? 0)\n\t\t\tsetFocused(`${worldY}`)\n\t\t},\n\t\tonLeave() {\n\t\t\tsetFocused(undefined)\n\t\t},\n\t}, [state, seed])\n\n\tuseEffect(() => {\n\t\tif (shown) {\n\t\t\tredraw()\n\t\t}\n\t}, [state, seed, shown])\n\n\treturn <>\n\t\t
\n\t\t\t{focused && }\n\t\t\t{checkVersion(version, undefined, '1.17') &&\n\t\t\t\t\n\t\t\t\t\t setBiomeScale(Number(v))} />\n\t\t\t\t\t setBiomeDepth(Number(v))} />\n\t\t\t\t\n\t\t\t}\n\t\t\t setSeed(randomSeed())} />\n\t\t
\n\t\t\n\t\n}\n","import type { DataModel } from '@mcschema/core'\nimport { Path } from '@mcschema/core'\nimport { useState } from 'preact/hooks'\nimport { useModel } from '../../hooks'\nimport type { VersionId } from '../../Schemas'\nimport { BiomeSourcePreview, DecoratorPreview, NoisePreview, NoiseSettingsPreview } from '../previews'\n\nexport const HasPreview = ['dimension', 'worldgen/noise', 'worldgen/noise_settings', 'worldgen/configured_feature']\n\ntype PreviewPanelProps = {\n\tlang: string,\n\tmodel: DataModel | null,\n\tversion: VersionId,\n\tid: string,\n\tshown: boolean,\n\tonError: (message: string) => unknown,\n}\nexport function PreviewPanel({ lang, model, version, id, shown }: PreviewPanelProps) {\n\tconst [, setCount] = useState(0)\n\n\tuseModel(model, () => {\n\t\tsetCount(count => count + 1)\n\t})\n\n\tif (id === 'dimension' && model?.get(new Path(['generator', 'type']))?.endsWith('noise')) {\n\t\tconst data = model.get(new Path(['generator', 'biome_source']))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/noise_settings' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\tif (id === 'worldgen/configured_feature' && model) {\n\t\tconst data = model.get(new Path([]))\n\t\tif (data) return \n\t}\n\n\treturn <>\n}\n","import type { Hook } from '@mcschema/core'\nimport { relativePath } from '@mcschema/core'\nimport type { BlockStateRegistry } from '../Schemas'\n\nexport type OutputProps = {\n\tblockStates: BlockStateRegistry,\n}\nexport const transformOutput: Hook<[any, OutputProps], any> = {\n\tbase({}, _, value) {\n\t\treturn value\n\t},\n\n\tchoice({ switchNode }, path, value, props) {\n\t\treturn switchNode.hook(this, path, value, props)\n\t},\n\n\tlist({ children }, path, value, props) {\n\t\tif (!Array.isArray(value)) return value\n\t\treturn value.map((obj, index) =>\n\t\t\tchildren.hook(this, path.push(index), obj.node, props)\n\t\t)\n\t},\n\n\tmap({ children, config }, path, value, props) {\n\t\tif (value === undefined) return undefined\n\t\tconst blockState = config.validation?.validator === 'block_state_map'? props.blockStates?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst res: any = {}\n\t\tObject.keys(value).forEach(f => {\n\t\t\tif (blockState) {\n\t\t\t\tif (!Object.keys(blockState.properties ?? {}).includes(f)) return\n\t\t\t}\n\t\t\tres[f] = children.hook(this, path.push(f), value[f], props)\n\t\t})\n\t\treturn res\n\t},\n\n\tobject({ getActiveFields }, path, value, props) {\n\t\tif (value === undefined || value === null || typeof value !== 'object') {\n\t\t\treturn value\n\t\t}\n\t\tconst res: any = {}\n\t\tconst activeFields = getActiveFields(path)\n\t\tObject.keys(activeFields)\n\t\t\t.filter(k => activeFields[k].enabled(path))\n\t\t\t.forEach(f => {\n\t\t\t\tres[f] = activeFields[f].hook(this, path.push(f), value[f], props)\n\t\t\t})\n\t\treturn res\n\t},\n}\n","import type { VersionId } from './Schemas'\nimport { VersionIds } from './Schemas'\n\nexport namespace Store {\n\texport const ID_LANGUAGE = 'language'\n\texport const ID_THEME = 'theme'\n\texport const ID_VERSION = 'schema_version'\n\texport const ID_INDENT = 'indentation'\n\texport const ID_SOUNDS_VERSION = 'minecraft_sounds_version'\n\n\texport function getLanguage() {\n\t\treturn localStorage.getItem(ID_LANGUAGE) ?? 'en'\n\t}\n\n\texport function getTheme() {\n\t\treturn localStorage.getItem(ID_THEME) ?? 'dark'\n\t}\n\n\texport function getVersion(): VersionId {\n\t\tconst version = localStorage.getItem(ID_VERSION)\n\t\tif (version && VersionIds.includes(version as VersionId)) {\n\t\t\treturn version as VersionId\n\t\t}\n\t\treturn '1.17'\n\t}\n\n\texport function getIndent() {\n\t\treturn localStorage.getItem(ID_INDENT) ?? '2_spaces'\n\t}\n\n\texport function getSoundsVersion() {\n\t\treturn localStorage.getItem(ID_SOUNDS_VERSION) ?? 'latest'\n\t}\n\n\texport function setLanguage(language: string | undefined) {\n\t\tif (language) localStorage.setItem(ID_LANGUAGE, language)\n\t}\n\n\texport function setTheme(theme: string | undefined) {\n\t\tif (theme) localStorage.setItem(ID_THEME, theme)\n\t}\n\n\texport function setVersion(version: VersionId | undefined) {\n\t\tif (version) localStorage.setItem(ID_VERSION, version)\n\t}\n\n\texport function setIndent(indent: string | undefined) {\n\t\tif (indent) localStorage.setItem(ID_INDENT, indent)\n\t}\n\n\texport function setSoundsVersion(version: string | undefined) {\n\t\tif (version) localStorage.setItem(ID_SOUNDS_VERSION, version)\n\t}\n}\n","import { DataModel, ModelPath } from '@mcschema/core'\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, BtnMenu } from '..'\nimport { useModel } from '../../hooks'\nimport { locale } from '../../Locales'\nimport { transformOutput } from '../../schema/transformOutput'\nimport type { BlockStateRegistry } from '../../Schemas'\nimport { Store } from '../../Store'\nimport { message } from '../../Utils'\n\nconst OUTPUT_CHARS_LIMIT = 10000\n\nconst INDENT: Record = {\n\t'2_spaces': 2,\n\t'4_spaces': 4,\n\ttabs: '\\t',\n}\n\ntype SourcePanelProps = {\n\tlang: string,\n\tname: string,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tdoCopy?: number,\n\tdoDownload?: number,\n\tdoImport?: number,\n\tcopySuccess: () => unknown,\n\tonError: (message: string) => unknown,\n}\nexport function SourcePanel({ lang, name, model, blockStates, doCopy, doDownload, doImport, copySuccess, onError }: SourcePanelProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [indent, setIndent] = useState(Store.getIndent())\n\tconst source = useRef(null)\n\tconst download = useRef(null)\n\tconst retransform = useRef()\n\n\tconst getOutput = useCallback((model: DataModel, blockStates: BlockStateRegistry) => {\n\t\tconst data = model.schema.hook(transformOutput, new ModelPath(model), model.data, { blockStates })\n\t\treturn JSON.stringify(data, null, INDENT[indent]) + '\\n'\n\t}, [indent])\n\n\tuseEffect(() => {\n\t\tretransform.current = () => {\n\t\t\tif (!model || !blockStates) return\n\t\t\ttry {\n\t\t\t\tconst output = getOutput(model, blockStates)\n\t\t\t\tif (output.length >= OUTPUT_CHARS_LIMIT) {\n\t\t\t\t\tsource.current.value = output.slice(0, OUTPUT_CHARS_LIMIT) + `\\n\\nOutput is too large to display (+${OUTPUT_CHARS_LIMIT} chars)\\nExport to view complete output\\n\\n`\n\t\t\t\t} else {\n\t\t\t\t\tsource.current.value = output\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tonError(`Error getting JSON output: ${message(e)}`)\n\t\t\t\tconsole.error(e)\n\t\t\t\tsource.current.value = ''\n\t\t\t}\n\t\t}\n\t})\n\n\tuseModel(model, () => {\n\t\tretransform.current()\n\t})\n\tuseEffect(() => {\n\t\tif (model) retransform.current()\n\t}, [model])\n\n\tuseEffect(() => {\n\t\tretransform.current()\n\t}, [indent])\n\n\tconst onImport = () => {\n\t\ttry {\n\t\t\tconst data = JSON.parse(source.current.value)\n\t\t\tmodel?.reset(DataModel.wrapLists(data), false)\n\t\t} catch (e) {\n\t\t\tonError(`Error importing: ${message(e)}`)\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\tuseEffect(() => {\n\t\tif (doCopy && model && blockStates) {\n\t\t\tnavigator.clipboard.writeText(getOutput(model, blockStates)).then(() => {\n\t\t\t\tcopySuccess()\n\t\t\t})\n\t\t}\n\t}, [doCopy])\n\n\tuseEffect(() => {\n\t\tif (doDownload && model && blockStates && download.current) {\n\t\t\tconst content = encodeURIComponent(getOutput(model, blockStates))\n\t\t\tdownload.current.setAttribute('href', `data:text/json;charset=utf-8,${content}`)\n\t\t\tdownload.current.setAttribute('download', `${name}.json`)\n\t\t\tdownload.current.click()\n\t\t}\n\t}, [doDownload])\n\n\tuseEffect(() => {\n\t\tif (doImport && source.current) {\n\t\t\tsource.current.value = ''\n\t\t\tsource.current.select()\n\t\t}\n\t}, [doImport])\n\n\tconst changeIndent = (value: string) => {\n\t\tStore.setIndent(value)\n\t\tsetIndent(value)\n\t}\n\n\treturn <> \n\t\t
\n\t\t\t\n\t\t\t\t{Object.entries(INDENT).map(([key]) =>\n\t\t\t\t\t changeIndent(key)}/>\n\t\t\t\t)}\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\n}\n","import type { INode, Path } from '@mcschema/core'\nimport { DataModel } from '@mcschema/core'\n\nexport class ModelWrapper extends DataModel {\n\tconstructor(\n\t\tschema: INode,\n\t\tprivate readonly mapper: (path: Path) => Path,\n\t\tprivate readonly getter: (path: Path) => any,\n\t\tprivate readonly setter: (path: Path, value: any, silent?: boolean) => any,\n\t) {\n\t\tsuper(schema)\n\t}\n\n\tmap(path: Path) {\n\t\treturn this.mapper(path)\n\t}\n\n\tget(path: Path) {\n\t\treturn this.getter(path)\n\t}\n\n\tset(path: Path, value: any, silent?: boolean) {\n\t\treturn this.setter(path, value, silent)\n\t}\n}\n","import type { BooleanHookParams, EnumOption, Hook, INode, NodeChildren, NumberHookParams, StringHookParams, ValidationOption } from '@mcschema/core'\nimport { DataModel, ListNode, MapNode, ModelPath, ObjectNode, Path, relativePath, StringNode } from '@mcschema/core'\nimport type { ComponentChildren, JSX } from 'preact'\nimport { memo } from 'preact/compat'\nimport { useState } from 'preact/hooks'\nimport { Btn } from '../components'\nimport { Octicon } from '../components/Octicon'\nimport { useFocus } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry } from '../Schemas'\nimport { CachedDecorator, CachedFeature } from '../Schemas'\nimport { deepClone, deepEqual, hexId, isObject, newSeed } from '../Utils'\nimport { ModelWrapper } from './ModelWrapper'\n\nconst selectRegistries = ['loot_table.type', 'loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'recipe.type', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'dimension.generator.biome_source.preset', 'carver.type', 'feature.type', 'decorator.type', 'feature.tree.minimum_size.type', 'block_state_provider.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'int_provider.type', 'float_provider.type', 'height_provider.type', 'structure_feature.type', 'surface_builder.type', 'processor.processor_type', 'rule_test.predicate_type', 'pos_rule_test.predicate_type', 'template_element.element_type', 'block_placer.type', 'block_predicate.type', 'material_rule.type', 'material_condition.type']\nconst hiddenFields = ['number_provider.type', 'score_provider.type', 'nbt_provider.type', 'int_provider.type', 'float_provider.type', 'height_provider.type']\nconst flattenedFields = ['feature.config', 'decorator.config', 'int_provider.value', 'float_provider.value', 'block_state_provider.simple_state_provider.state', 'block_state_provider.rotated_block_provider.state', 'block_state_provider.weighted_state_provider.entries.entry.data', 'rule_test.block_state', 'structure_feature.config', 'surface_builder.config', 'template_pool.elements.entry.element', 'decorator.block_survives_filter.state', 'material_rule.block.result_state']\nconst inlineFields = ['loot_entry.type', 'function.function', 'condition.condition', 'criterion.trigger', 'dimension.generator.type', 'dimension.generator.biome_source.type', 'feature.type', 'decorator.type', 'block_state_provider.type', 'feature.tree.minimum_size.type', 'trunk_placer.type', 'foliage_placer.type', 'tree_decorator.type', 'block_placer.type', 'rule_test.predicate_type', 'processor.processor_type', 'template_element.element_type', 'nbt_operation.op', 'number_provider.value', 'score_provider.name', 'score_provider.target', 'nbt_provider.source', 'nbt_provider.target', 'generator_biome.biome', 'block_predicate.type', 'material_rule.type', 'material_condition.type']\nconst nbtFields = ['function.set_nbt.tag', 'advancement.display.icon.nbt', 'text_component_object.nbt', 'entity.nbt', 'block.nbt', 'item.nbt']\nconst fixedLists = ['generator_biome.parameters.temperature', 'generator_biome.parameters.humidity', 'generator_biome.parameters.continentalness', 'generator_biome.parameters.erosion', 'generator_biome.parameters.depth', 'generator_biome.parameters.weirdness', 'feature.end_spike.crystal_beam_target', 'feature.end_gateway.exit', 'decorator.block_filter.offset', 'block_predicate.matching_blocks.offset', 'block_predicate.matching_fluids.offset']\n\n/**\n * Secondary model used to remember the keys of a map\n */\nconst keysModel = new DataModel(MapNode(\n\tStringNode(),\n\tStringNode()\n), { historyMax: 0 })\n\ntype JSXTriple = [JSX.Element | null, JSX.Element | null, JSX.Element | null]\ntype RenderHook = Hook<[any, string, BlockStateRegistry, Record], JSXTriple>\n\ntype NodeProps = T & {\n\tnode: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n}\n\nexport function FullNode({ model, lang, blockStates }: { model: DataModel, lang: string, blockStates: BlockStateRegistry }) {\n\tconst path = new ModelPath(model)\n\tconst [prefix, suffix, body] = model.schema.hook(renderHtml, path, deepClone(model.data), lang, blockStates, {})\n\treturn suffix?.props?.children.some((c: any) => c) ?
\n\t\t
{prefix}{suffix}
\n\t\t
{body}
\n\t
: body\n}\n\nconst renderHtml: RenderHook = {\n\tbase() {\n\t\treturn [null, null, null]\n\t},\n\n\tboolean(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tchoice({ choices, config, switchNode }, path, value, lang, states, ctx) {\n\t\tconst choice = switchNode.activeCase(path, true) as typeof choices[number]\n\t\tconst contextPath = (config?.context) ? new ModelPath(path.getModel(), new Path(path.getArray(), [config.context])) : path\n\t\tconst [prefix, suffix, body] = choice.node.hook(this, contextPath, value, lang, states, ctx)\n\t\tif (choices.length === 1) {\n\t\t\treturn [prefix, suffix, body]\n\t\t}\n\t\tconst choiceContextPath = config?.choiceContext ? new Path([], [config.choiceContext]) : config?.context ? new Path([], [config.context]) : path\n\t\tconst set = (type: string) => {\n\t\t\tconst c = choices.find(c => c.type === type) ?? choice\n\t\t\tconst newValue = c.change\n\t\t\t\t? c.change(DataModel.unwrapLists(value))\n\t\t\t\t: config.choiceContext === 'feature' ?\tc.node.default()?.config?.feature : c.node.default()\n\t\t\tpath.model.set(path, DataModel.wrapLists(newValue))\n\t\t}\n\t\tconst inject = \n\t\treturn [prefix, <>{inject}{suffix}, body]\n\t},\n\n\tlist({ children, config }, path, value, lang, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\t\tconst [maxShown, setMaxShown] = useState(50)\n\n\t\tconst context = path.getContext().join('.')\n\t\tif (fixedLists.includes(context)) {\n\t\t\tconst prefix = <>\n\t\t\t\t{[...Array(config.maxLength!)].map((_, i) =>\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t\n\t\t\tconst suffix = <>{[...Array(config.maxLength)].map((_, i) => {\n\t\t\t\tconst child = children.hook(this, path.modelPush(i), value?.[i]?.node, lang, states, ctx)\n\t\t\t\treturn child[1]\n\t\t\t})}\n\t\t\treturn [prefix, suffix, null]\n\t\t}\n\n\t\tconst onAdd = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [{ node, id: hexId() }, ...value])\n\t\t}\n\t\tconst onAddBottom = () => {\n\t\t\tif (!Array.isArray(value)) value = []\n\t\t\tconst node = DataModel.wrapLists(children.default())\n\t\t\tpath.model.set(path, [...value, { node, id: hexId() }])\n\t\t}\n\t\tconst suffix = \n\t\tconst body = <>\n\t\t\t{(value && Array.isArray(value)) && value.map(({ node: cValue, id: cId }, index) => {\n\t\t\t\tif (index === maxShown) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tif (index > maxShown) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\tconst cPath = path.push(index).contextPush('entry')\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(cId)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\tconst onMoveUp = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index - 1], v[index]] = [v[index], v[index - 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst onMoveDown = () => {\n\t\t\t\t\tconst v = [...path.get()];\n\t\t\t\t\t[v[index + 1], v[index]] = [v[index], v[index + 1]]\n\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t}\n\t\t\t\tconst actions: MenuAction[] = [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'duplicate',\n\t\t\t\t\t\tlabel: 'duplicate',\n\t\t\t\t\t\tonSelect: () => {\n\t\t\t\t\t\t\tconst v = [...path.get()]\n\t\t\t\t\t\t\tv.splice(index, 0, { id: hexId(), node: deepClone(cValue) })\n\t\t\t\t\t\t\tpath.model.set(path, v)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\t{value.length > 1 &&
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
}\n\t\t\t\t
\n\t\t\t})}\n\t\t\t{(value && value.length > 0 && value.length <= maxShown) &&
\n\t\t\t\t\n\t\t\t
}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tmap({ children, keys, config }, path, value, lang, states, ctx) {\n\t\tconst { expand, collapse, isToggled } = useToggles()\n\n\t\tconst keyPath = new ModelPath(keysModel, new Path([hashString(path.toString())]))\n\t\tconst onAdd = () => {\n\t\t\tconst key = keyPath.get()\n\t\t\tpath.model.set(path.push(key), DataModel.wrapLists(children.default()))\n\t\t}\n\t\tconst blockState = config.validation?.validator === 'block_state_map' ? states?.[relativePath(path, config.validation.params.id).get()] : null\n\t\tconst keysSchema = blockState?.properties\n\t\t\t? StringNode(null!, { enum: Object.keys(blockState.properties ?? {}) })\n\t\t\t: keys\n\t\tif (blockState && path.last() === 'Properties') {\n\t\t\tif (typeof value !== 'object') value = {}\n\t\t\tconst properties = Object.entries(blockState.properties ?? {})\n\t\t\t\t.map(([key, values]) => [key, StringNode(null!, { enum: values })])\n\t\t\tObject.entries(blockState.properties ?? {}).forEach(([key, values]) => {\n\t\t\t\tif (typeof value[key] !== 'string') {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.expected_string')\n\t\t\t\t} else if (!values.includes(value[key])) {\n\t\t\t\t\tpath.model.errors.add(path.push(key), 'error.invalid_enum_option', value[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn ObjectNode(Object.fromEntries(properties)).hook(this, path, value, lang, states, ctx)\n\t\t}\n\t\tconst suffix = <>\n\t\t\t{keysSchema.hook(this, keyPath, keyPath.get() ?? '', lang, states, ctx)[1]}\n\t\t\t\n\t\t\n\t\tconst body = <>\n\t\t\t{typeof value === 'object' && Object.entries(value).map(([key, cValue]) => {\n\n\t\t\t\tconst cPath = path.modelPush(key)\n\t\t\t\tconst canToggle = children.type(cPath) === 'object'\n\t\t\t\tconst toggle = isToggled(key)\n\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && value.length > 20))) {\n\t\t\t\t\treturn
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\tconst cSchema = blockState\n\t\t\t\t\t? StringNode(null!, { enum: blockState.properties?.[key] ?? [] })\n\t\t\t\t\t: children\n\t\t\t\tif (blockState?.properties?.[key] && typeof cValue === 'string'\n\t\t\t\t\t&& !blockState.properties?.[key].includes(cValue)) {\n\t\t\t\t\tpath.model.errors.add(cPath, 'error.invalid_enum_option', cValue)\n\t\t\t\t}\n\t\t\t\tconst onRemove = () => cPath.set(undefined)\n\t\t\t\treturn \n\t\t\t\t\t{canToggle && }\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t})}\n\t\t\n\t\treturn [null, suffix, body]\n\t},\n\n\tnumber(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n\n\tobject({ node, config, getActiveFields, getChildModelPath }, path, value, lang, states, ctx) {\n\t\tconst { expand, isToggled } = useToggles()\n\n\t\tif (path.getArray().length == 0 && isDecorated(config.context, value)) {\n\t\t\tconst { wrapper, fields } = createDecoratorsWrapper(getActiveFields(path), path, value)\n\t\t\tvalue = wrapper.data\n\t\t\tgetActiveFields = () => fields\n\t\t\tgetChildModelPath = (path, key) => new ModelPath(wrapper, new Path(path.getArray(), ['feature'])).push(key)\n\t\t}\n\n\t\tlet prefix: JSX.Element | null = null\n\t\tlet suffix: JSX.Element | null = null\n\t\tif (node.optional()) {\n\t\t\tif (value === undefined) {\n\t\t\t\tconst onExpand = () => path.set(DataModel.wrapLists(node.default()))\n\t\t\t\tsuffix = \n\t\t\t} else {\n\t\t\t\tconst onCollapse = () => path.set(undefined)\n\t\t\t\tsuffix = \n\t\t\t}\n\t\t}\n\t\tconst newCtx = (typeof value === 'object' && value !== null && node.default()?.pools)\n\t\t\t? { ...ctx, loot: value?.type } : ctx\n\t\tconst body = <>\n\t\t\t{(typeof value === 'object' && value !== null && !(node.optional() && value === undefined)) &&\n\t\t\t\tObject.entries(getActiveFields(path))\n\t\t\t\t\t.filter(([_, child]) => child.enabled(path))\n\t\t\t\t\t.map(([key, child]) => {\n\t\t\t\t\t\tconst cPath = getChildModelPath(path, key)\n\t\t\t\t\t\tconst canToggle = child.type(cPath) === 'object'\n\t\t\t\t\t\tconst toggle = isToggled(key)\n\t\t\t\t\t\tif (canToggle && (toggle === false || (toggle === undefined && (ctx.depth ?? 0) > 5))) {\n\t\t\t\t\t\t\treturn
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst context = cPath.getContext().join('.')\n\t\t\t\t\t\tif (hiddenFields.includes(context)) return null\n\t\t\t\t\t\tconst [cPrefix, cSuffix, cBody] = child.hook(this, cPath, value[key], lang, states, newCtx)\n\t\t\t\t\t\tif (!cPrefix && !cSuffix && !((cBody?.props?.children?.length ?? 0) > 0)) return null\n\t\t\t\t\t\tconst isFlattened = child.type(cPath) === 'object' && flattenedFields.includes(context)\n\t\t\t\t\t\tconst isInlined = inlineFields.includes(context)\n\t\t\t\t\t\tif (isFlattened || isInlined) {\n\t\t\t\t\t\t\tprefix = <>{prefix}{cPrefix}\n\t\t\t\t\t\t\tsuffix = <>{suffix}{cSuffix}\n\t\t\t\t\t\t\treturn isFlattened ? cBody : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn \n\t\t\t\t\t})\n\t\t\t}\n\t\t\n\t\treturn [prefix, suffix, body]\n\t},\n\n\tstring(params, path, value, lang, states, ctx) {\n\t\treturn [null, , null]\n\t},\n}\n\nfunction Collapsed({ path, value }: { path: ModelPath, value: any, schema: INode }) {\n\tconst context = path.getContext().join('.')\n\tswitch (context) {\n\t\tcase 'loot_table.pools.entry':\n\t\t\treturn \n\t\tcase 'function.set_contents.entries.entry':\n\t\tcase 'loot_pool.entries.entry':\n\t\t\treturn \n\t}\n\tfor (const child of Object.values(value ?? {})) {\n\t\tif (typeof child === 'string') {\n\t\t\treturn \n\t\t}\n\t}\n\treturn null\n}\n\nfunction useToggles() {\n\tconst [toggleState, setToggleState] = useState(new Map())\n\tconst [toggleAll, setToggleAll] = useState(undefined)\n\n\tconst expand = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(true)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, true)))\n\t\t}\n\t}\n\tconst collapse = (key: string) => (evt: MouseEvent) => {\n\t\tif (evt.ctrlKey) {\n\t\t\tsetToggleState(new Map())\n\t\t\tsetToggleAll(false)\n\t\t} else {\n\t\t\tsetToggleState(state => new Map(state.set(key, false)))\n\t\t}\n\t}\n\t\n\tconst isToggled = (key: string) => {\n\t\tif (!(toggleState instanceof Map)) return false\n\t\treturn toggleState.get(key) ?? toggleAll\n\t}\n\n\treturn { expand, collapse, isToggled }\n}\n\nfunction BooleanSuffix({ path, node, value, lang }: NodeProps) {\n\tconst set = (target: boolean) => {\n\t\tpath.model.set(path, node.optional() && value === target ? undefined : target)\n\t}\n\treturn <>\n\t\t\n\t\t\n\t\n}\n\nfunction NumberSuffix({ path, config, integer, value, lang }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = integer ? parseInt(value) : parseFloat(value)\n\t\tpath.model.set(path, parsed)\n\t}\n\tconst onColor = (evt: Event) => {\n\t\tconst value = (evt.target as HTMLInputElement).value\n\t\tconst parsed = parseInt(value.slice(1), 16)\n\t\tpath.model.set(path, parsed)\n\t}\n\treturn <>\n\t\t {if (evt.key === 'Enter') onChange(evt)}} />\n\t\t{config?.color && }\n\t\t{['dimension.generator.seed', 'dimension.generator.biome_source.seed', 'world_settings.seed'].includes(path.getContext().join('.')) && }\n\t\n}\n\nfunction StringSuffix({ path, getValues, config, node, value, lang, states }: NodeProps) {\n\tconst onChange = (evt: Event) => {\n\t\tevt.stopPropagation()\n\t\tconst newValue = (evt.target as HTMLSelectElement).value\n\t\tif (newValue === value) return\n\t\tpath.model.set(path, newValue.length === 0 ? undefined : newValue)\n\t}\n\tconst values = getValues()\n\tconst context = path.getContext().join('.')\n\tif (nbtFields.includes(context)) {\n\t\treturn \n\t} else if ((isEnum(config) && !config.additional) || selectRegistries.includes(context)) {\n\t\tlet context = new Path([])\n\t\tif (isEnum(config) && typeof config.enum === 'string') {\n\t\t\tcontext = context.contextPush(config.enum)\n\t\t} else if (!isEnum(config) && config?.validator === 'resource' && typeof config.params.pool === 'string') {\n\t\t\tcontext = context.contextPush(config.params.pool)\n\t\t} else if (isEnum(config)) {\n\t\t\tcontext = path\n\t\t}\n\t\treturn \n\t} else if (!isEnum(config) && config?.validator === 'block_state_key') {\n\t\tconst blockState = states?.[relativePath(path, config.params.id).get()]\n\t\tconst values = Object.keys(blockState?.properties ?? {})\n\t\treturn \n\t} else {\n\t\tconst datalistId = hexId()\n\t\treturn <>\n\t\t\t {if (evt.key === 'Enter') onChange(evt)}}\n\t\t\t\tlist={values.length > 0 ? datalistId : ''} />\n\t\t\t{values.length > 0 && \n\t\t\t\t{values.map(v => }\n\t\t\n\t}\n}\n\ntype MenuAction = {\n\tlabel: string,\n\tdescription?: string,\n\ticon: keyof typeof Octicon,\n\tonSelect: () => unknown,\n}\n\ntype TreeNodeProps = {\n\tschema: INode,\n\tpath: ModelPath,\n\tvalue: any,\n\tlang: string,\n\tstates: BlockStateRegistry,\n\tctx: Record,\n\tcompare?: any,\n\tlabel?: string,\n\tactions?: MenuAction[],\n\tchildren?: ComponentChildren,\n}\nfunction TreeNode({ label, schema, path, value, lang, states, ctx, actions, children }: TreeNodeProps) {\n\tconst type = schema.type(path)\n\tconst category = schema.category(path)\n\tconst context = path.getContext().join('.')\n\n\tconst [active, setActive] = useFocus()\n\tconst onContextMenu = (evt: MouseEvent) => {\n\t\tevt.preventDefault()\n\t\tsetActive()\n\t}\n\n\tconst newCtx: Record = { ...ctx, depth: (ctx.depth ?? 0) + 1 }\n\tdelete newCtx.index\n\tconst [prefix, suffix, body] = schema.hook(renderHtml, path, value, lang, states, newCtx)\n\treturn
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t{children}\n\t\t\t{prefix}\n\t\t\t\n\t\t\t{suffix}\n\t\t
\n\t\t{body &&
{body}
}\n\t
\n}\n\nconst MemoedTreeNode = memo(TreeNode, (prev, next) => {\n\treturn prev.schema === next.schema\n\t\t&& prev.lang === next.lang\n\t\t&& prev.path.equals(next.path)\n\t\t&& deepEqual(prev.ctx, next.ctx)\n\t\t&& deepEqual(prev.value, next.value)\n})\n\nfunction isEnum(value?: ValidationOption | EnumOption): value is EnumOption {\n\treturn !!(value as any)?.enum\n}\n\nfunction hashString(str: string) {\n\tvar hash = 0, i, chr\n\tfor (i = 0; i < str.length; i++) {\n\t\tchr = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + chr\n\t\thash |= 0\n\t}\n\treturn hash\n}\n\nfunction pathLocale(lang: string, path: Path, ...params: string[]) {\n\tconst ctx = path.getContext()\n\tfor (let i = 0; i < ctx.length; i += 1) {\n\t\tconst key = ctx.slice(i).join('.')\n\t\tconst result = locale(lang, key, ...params)\n\t\tif (key !== result) {\n\t\t\treturn result\n\t\t}\n\t}\n\treturn ctx[ctx.length - 1]\n}\n\nfunction ErrorPopup({ lang, path, nested }: { lang: string, path: ModelPath, nested?: boolean }) {\n\tif (path.model instanceof ModelWrapper) {\n\t\tpath = path.model.map(path).withModel(path.model)\n\t}\n\tconst e = nested\n\t\t?\tpath.model.errors.getAll().filter(e => e.path.startsWith(path))\n\t\t: path.model.errors.get(path, true)\n\tif (e.length === 0) return null\n\tconst message = locale(lang, e[0].error, ...(e[0].params ?? []))\n\treturn popupIcon('node-error', 'issue_opened', message)\n}\n\nfunction HelpPopup({ lang, path }: { lang: string, path: Path }) {\n\tconst key = path.contextPush('help').getContext().join('.')\n\tconst message = locale(lang, key)\n\tif (message === key) return null\n\treturn popupIcon('node-help', 'info', message)\n}\n\nconst popupIcon = (type: string, icon: keyof typeof Octicon, popup: string) => {\n\tconst [active, setActive] = useFocus()\n\n\treturn
\n\t\t{Octicon[icon]}\n\t\t{popup}\n\t
\n}\n\nfunction isDecorated(context: string | undefined, value: any) {\n\treturn context === 'feature'\n\t\t&& value?.type?.replace(/^minecraft:/, '') === 'decorated'\n\t\t&& isObject(value?.config)\n}\n\nfunction createDecoratorsWrapper(originalFields: NodeChildren, path: ModelPath, value: any) {\n\tconst decorators: any[] = []\n\tconst feature = iterateNestedDecorators(value, decorators)\n\tconst fields = {\n\t\ttype: originalFields.type,\n\t\tconfig: ObjectNode({\n\t\t\tdecorators: ListNode(CachedDecorator),\n\t\t\tfeature: CachedFeature,\n\t\t}, { context: 'feature.decorated' }),\n\t}\n\tconst schema = ObjectNode(fields, { context: 'feature' })\n\tconst featurePath = new Path(['config', 'feature'])\n\tconst decoratorsPath = new Path(['config', 'decorators'])\n\tconst model = path.getModel()\n\tconst wrapper: ModelWrapper = new ModelWrapper(schema, path => {\n\t\tif (path.startsWith(featurePath)) {\n\t\t\treturn new Path([...[...Array(decorators.length - 1)].flatMap(() => ['config', 'feature']), ...path.modelArr])\n\t\t} else if (path.startsWith(decoratorsPath)) {\n\t\t\tif (path.modelArr.length === 2) {\n\t\t\t\treturn new Path([])\n\t\t\t}\n\t\t\tconst index = path.modelArr[2]\n\t\t\tif (typeof index === 'number') {\n\t\t\t\treturn new Path([...[...Array(index)].flatMap(() => ['config', 'feature']), 'config', 'decorator', ...path.modelArr.slice(3)])\n\t\t\t}\n\t\t}\n\t\treturn path\n\t}, path => {\n\t\tif (path.equals(decoratorsPath)) {\n\t\t\tconst newDecorators: any[] = []\n\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\treturn newDecorators\n\t\t}\n\t\treturn model.get(wrapper.map(path))\n\t}, (path, value, silent) => {\n\t\tif (path.startsWith(featurePath)) {\n\t\t\tconst newDecorators: any[] = []\n\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\tconst newPath =new Path([...[...Array(newDecorators.length - 1)].flatMap(() => ['config', 'feature']), ...path.modelArr])\n\t\t\treturn model.set(newPath, value, silent)\n\t\t} else if (path.startsWith(decoratorsPath)) {\n\t\t\tconst index = path.modelArr[2]\n\t\t\tif (path.modelArr.length === 2) {\n\t\t\t\tconst feature = wrapper.get(featurePath)\n\t\t\t\treturn model.set(new Path(), produceNestedDecorators(feature, value), silent)\n\t\t\t} else if (typeof index === 'number') {\n\t\t\t\tif (path.modelArr.length === 3 && value === undefined) {\n\t\t\t\t\tconst feature = wrapper.get(featurePath)\n\t\t\t\t\tconst newDecorators: any[] = []\n\t\t\t\t\titerateNestedDecorators(model.data, newDecorators)\n\t\t\t\t\tnewDecorators.splice(index, 1)\n\t\t\t\t\tconst newValue = produceNestedDecorators(feature, newDecorators)\n\t\t\t\t\treturn model.set(new Path(), newValue, silent)\n\t\t\t\t} else {\n\t\t\t\t\tconst newPath = new Path([...[...Array(index)].flatMap(() => ['config', 'feature']), 'config', 'decorator', ...path.modelArr.slice(3)])\n\t\t\t\t\treturn model.set(newPath, value, silent)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tmodel.set(path, value, silent)\n\t})\n\twrapper.data = {\n\t\ttype: model.data.type,\n\t\tconfig: {\n\t\t\tdecorators,\n\t\t\tfeature,\n\t\t},\n\t}\n\twrapper.errors = model.errors\n\treturn { fields, wrapper }\n}\n\nfunction iterateNestedDecorators(value: any, decorators: any[]): any {\n\tif (value?.type?.replace(/^minecraft:/, '') !== 'decorated') {\n\t\treturn value\n\t}\n\tif (!isObject(value?.config)) {\n\t\treturn value\n\t}\n\tdecorators.push({ id: decorators.length, node: value.config.decorator })\n\treturn iterateNestedDecorators(value.config.feature ?? '', decorators)\n}\n\nfunction produceNestedDecorators(feature: any, decorators: any[]): any {\n\tif (decorators.length === 0) return feature\n\treturn {\n\t\ttype: 'minecraft:decorated',\n\t\tconfig: {\n\t\t\tdecorator: decorators.shift().node,\n\t\t\tfeature: produceNestedDecorators(feature, decorators),\n\t\t},\n\t}\n}\n","import type { DataModel } from '@mcschema/core'\nimport { useErrorBoundary, useState } from 'preact/hooks'\nimport { useModel } from '../../hooks'\nimport { FullNode } from '../../schema/renderHtml'\nimport type { BlockStateRegistry, VersionId } from '../../Schemas'\n\ntype TreePanelProps = {\n\tlang: string,\n\tversion: VersionId,\n\tmodel: DataModel | null,\n\tblockStates: BlockStateRegistry | null,\n\tonError: (message: string) => unknown,\n}\nexport function Tree({ lang, model, blockStates, onError }: TreePanelProps) {\n\tif (!model || !blockStates || lang === 'none') return <>\n\n\tconst [error] = useErrorBoundary(e => {\n\t\tonError(`Error rendering the tree: ${e.message}`)\n\t\tconsole.error(e)\n\t})\n\tif (error) return <>\n\n\tconst [, setState] = useState(0)\n\tuseModel(model, () => {\n\t\tsetState(state => state + 1)\n\t})\n\n\treturn
\n\t\t\n\t
\n}\n","import { getCurrentUrl, Link, route } from 'preact-router'\nimport { Btn, BtnMenu, Icons, Octicon } from '.'\nimport config from '../../config.json'\nimport { locale } from '../Locales'\nimport type { VersionId } from '../Schemas'\nimport { checkVersion } from '../Schemas'\nimport { cleanUrl, getGenerator } from '../Utils'\n\nconst Themes: Record = {\n\tsystem: 'device_desktop',\n\tdark: 'moon',\n\tlight: 'sun',\n}\n\ntype HeaderProps = {\n\tlang: string,\n\ttitle: string,\n\tversion: VersionId,\n\ttheme: string,\n\tchangeTheme: (theme: string) => unknown,\n\tlanguage: string,\n\tchangeLanguage: (language: string) => unknown,\n}\nexport function Header({ lang, title, version, theme, changeTheme, language, changeLanguage }: HeaderProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst gen = getGenerator(getCurrentUrl())\n\n\treturn
\n\t\t
\n\t\t\t{Icons.home}\n\t\t\t

{title}

\n\t\t\t{gen && \n\t\t\t\t{config.generators\n\t\t\t\t\t.filter(g => g.category === gen?.category && checkVersion(version, g.minVersion))\n\t\t\t\t\t.map(g =>\n\t\t\t\t\t\t route(cleanUrl(g.url))} />\n\t\t\t\t\t)}\n\t\t\t}\n\t\t
\n\t\t\n\t
\n}\n","export const Icons = {\n\thome: ,\n\treport: ,\n\tsounds: ,\n}\n","import { Howl } from 'howler'\nimport { useEffect, useRef, useState } from 'preact/hooks'\nimport { Btn, NumberInput, RangeInput, TextInput } from '..'\nimport { getResourceUrl } from '../../DataFetcher'\nimport { locale } from '../../Locales'\nimport type { SoundEvents, VersionAssets } from '../../Manifest'\n\nexport interface SoundConfig {\n\tid: string,\n\tsound: string,\n\tdelay: number,\n\tpitch: number,\n\tvolume: number,\n}\ntype SoundConfigProps = SoundConfig & {\n\tlang: string,\n\tassets: VersionAssets,\n\tsounds: SoundEvents,\n\tonEdit: (changes: Partial) => unknown,\n\tonDelete: () => unknown,\n\tdelayedPlay?: number,\n}\nexport function SoundConfig({ lang, assets, sounds, sound, delay, pitch, volume, onEdit, onDelete, delayedPlay }: SoundConfigProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [loading, setLoading] = useState(true)\n\tconst [playing, setPlaying] = useState(false)\n\tconst [invalid, setInvalid] = useState(false)\n\tconst howls = useRef([])\n\tconst command = `playsound minecraft:${sound} master @s ~ ~ ~ ${volume} ${pitch}`\n\n\tuseEffect(() => {\n\t\tconst soundEvent = sounds[sound]\n\t\tsetInvalid((soundEvent?.sounds?.length ?? 0) === 0)\n\t\thowls.current.forEach(h => h.stop())\n\t\thowls.current = (soundEvent?.sounds ?? []).map(entry => {\n\t\t\tconst soundPath = typeof entry === 'string' ? entry : entry.name\n\t\t\tconst hash = assets[`minecraft/sounds/${soundPath}.ogg`].hash\n\t\t\tconst url = getResourceUrl(hash)\n\t\t\tconst howl = new Howl({\n\t\t\t\tsrc: [url],\n\t\t\t\tformat: ['ogg'],\n\t\t\t\tvolume,\n\t\t\t\trate: pitch,\n\t\t\t})\n\t\t\thowl.on('end', () => {\n\t\t\t\tsetPlaying(false)\n\t\t\t})\n\t\t\tconst completed = () => {\n\t\t\t\tif (loading && howls.current.every(h => h.state() === 'loaded')) {\n\t\t\t\t\tsetLoading(false)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (howl.state() === 'loaded') {\n\t\t\t\tsetTimeout(() => completed())\n\t\t\t} else {\n\t\t\t\thowl.on('load', () => {\n\t\t\t\t\tcompleted()\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn howl\n\t\t})\n\t\tsetLoading(true)\n\t}, [sound, sounds])\n\n\tuseEffect(() => {\n\t\thowls.current.forEach(h => h.rate(pitch))\n\t}, [pitch])\n\n\tuseEffect(() => {\n\t\thowls.current.forEach(h => h.volume(volume))\n\t}, [volume])\n\n\tconst play = () => {\n\t\tif (loading || invalid) return\n\t\tstop()\n\t\tconst howl = Math.floor(Math.random() * howls.current.length)\n\t\thowls.current[howl].play()\n\t\tsetPlaying(true)\n\t}\n\tconst stop = () => {\n\t\thowls.current.forEach(h => h.stop())\n\t}\n\tuseEffect(() => {\n\t\tif (delayedPlay) setTimeout(() => play(), delay * 50)\n\t}, [delayedPlay])\n\n\tuseEffect(() => {\n\t\treturn () => stop()\n\t}, [])\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copy = () => {\n\t\tnavigator.clipboard.writeText(command)\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000) as any\n\t}\n\n\treturn
\n\t\t\n\t\t onEdit({ sound })} />\n\t\t\n\t\t onEdit({ delay })} />\n\t\t\n\t\t onEdit({ pitch })} />\n\t\t\n\t\t onEdit({ volume })} />\n\t\t\n\t\t {onDelete(); stop()}} />\n\t
\n}\n","import type { ComponentChildren } from 'preact'\nimport { Icons } from './Icons'\n\ntype ToolCardProps = {\n\ttitle: string,\n\tlink: string,\n\ticon?: keyof typeof Icons,\n\tchildren?: ComponentChildren,\n}\nexport function ToolCard({ title, link, icon, children }: ToolCardProps) {\n\treturn \n\t\t{icon && Icons[icon]}\n\t\t
\n\t\t\t

{title}

\n\t\t\t{children}\n\t\t
\n\t
\n}\n","import { DataModel, Path } from '@mcschema/core'\nimport { getCurrentUrl } from 'preact-router'\nimport { useEffect, useErrorBoundary, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Analytics } from '../Analytics'\nimport { Ad, Btn, BtnInput, BtnMenu, ErrorPanel, HasPreview, Octicon, PreviewPanel, SourcePanel, Tree } from '../components'\nimport { fetchPreset } from '../DataFetcher'\nimport { useModel } from '../hooks'\nimport { locale } from '../Locales'\nimport type { BlockStateRegistry, VersionId } from '../Schemas'\nimport { checkVersion, getBlockStates, getCollections, getModel } from '../Schemas'\nimport { getGenerator, message } from '../Utils'\n\ntype GeneratorProps = {\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tchangeVersion: (version: VersionId) => unknown,\n\tdefault?: true,\n}\nexport function Generator({ lang, changeTitle, version, changeVersion }: GeneratorProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tconst [errorBoundary, errorRetry] = useErrorBoundary()\n\tif (errorBoundary) {\n\t\treturn
\n\t}\n\n\tconst gen = getGenerator(getCurrentUrl())\n\tif (!gen) {\n\t\treturn
\n\t}\n\n\tconst allowedVersions = config.versions\n\t\t.filter(v => checkVersion(v.id, gen.minVersion, gen.maxVersion))\n\t\t.map(v => v.id as VersionId)\n\n\tchangeTitle(loc('title.generator', loc(gen.id)), allowedVersions)\n\n\tif (!checkVersion(version, gen.minVersion)) {\n\t\tsetError(`The minimum version for this generator is ${gen.minVersion}`)\n\t}\n\n\tconst [model, setModel] = useState(null)\n\tconst [blockStates, setBlockStates] = useState(null)\n\tuseEffect(() => {\n\t\tsetError(null)\n\t\tsetModel(null)\n\t\tgetBlockStates(version)\n\t\t\t.then(b => setBlockStates(b))\n\t\tgetModel(version, gen.id)\n\t\t\t.then(m => {\n\t\t\t\tAnalytics.setGenerator(gen.id)\n\t\t\t\tsetModel(m)\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(message(e)) })\n\t}, [version, gen.id])\n\n\tuseModel(model, () => {\n\t\tsetError(null)\n\t})\n\n\tconst reset = () => {\n\t\tAnalytics.generatorEvent('reset')\n\t\tmodel?.reset(DataModel.wrapLists(model.schema.default()), true)\n\t}\n\tconst undo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('undo', 'Menu')\n\t\tmodel?.undo()\n\t}\n\tconst redo = (e: MouseEvent) => {\n\t\te.stopPropagation()\n\t\tAnalytics.generatorEvent('redo', 'Menu')\n\t\tmodel?.redo()\n\t}\n\n\tconst onKeyUp = (e: KeyboardEvent) => {\n\t\tif (e.ctrlKey && e.key === 'z') {\n\t\t\tAnalytics.generatorEvent('undo', 'Hotkey')\n\t\t\tmodel?.undo()\n\t\t} else if (e.ctrlKey && e.key === 'y') {\n\t\t\tAnalytics.generatorEvent('redo', 'Hotkey')\n\t\t\tmodel?.redo()\n\t\t}\n\t}\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keyup', onKeyUp)\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keyup', onKeyUp)\n\t\t}\n\t}, [model])\n\n\tconst [presetFilter, setPresetFilter] = useState('')\n\tconst [presetResults, setPresetResults] = useState([])\n\tuseEffect(() => {\n\t\tgetCollections(version)\n\t\t\t.then(collections => {\n\t\t\t\tconst terms = (presetFilter ?? '').trim().split(' ')\n\t\t\t\tconst presets = collections.get(gen.id)\n\t\t\t\t\t.map(p => p.slice(10))\n\t\t\t\t\t.filter(p => terms.every(t => p.includes(t)))\n\t\t\t\tif (presets) {\n\t\t\t\t\tsetPresetResults(presets)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(e => { console.error(e); setError(e.message) })\n\t}, [version, gen.id, presetFilter])\n\n\tconst loadPreset = (id: string) => {\n\t\tAnalytics.generatorEvent('load-preset', id)\n\t\tfetchPreset(version, gen.path ?? gen.id, id).then(preset => {\n\t\t\tconst seed = model?.get(new Path(['generator', 'seed']))\n\t\t\tif (preset?.generator?.seed !== undefined && seed !== undefined) {\n\t\t\t\tpreset.generator.seed = seed\n\t\t\t\tif (preset.generator.biome_source?.seed !== undefined) {\n\t\t\t\t\tpreset.generator.biome_source.seed = seed\n\t\t\t\t}\n\t\t\t}\n\t\t\tmodel?.reset(DataModel.wrapLists(preset), false)\n\t\t})\n\t}\n\n\tconst [sourceShown, setSourceShown] = useState(window.innerWidth > 820)\n\tconst [doCopy, setCopy] = useState(0)\n\tconst [doDownload, setDownload] = useState(0)\n\tconst [doImport, setImport] = useState(0)\n\n\tconst copySource = () => {\n\t\tAnalytics.generatorEvent('copy')\n\t\tsetCopy(doCopy + 1)\n\t}\n\tconst downloadSource = () => {\n\t\tAnalytics.generatorEvent('download')\n\t\tsetDownload(doDownload + 1)\n\t}\n\tconst importSource = () => {\n\t\tAnalytics.generatorEvent('import')\n\t\tsetSourceShown(true)\n\t\tsetImport(doImport + 1)\n\t}\n\tconst toggleSource = () => {\n\t\tAnalytics.generatorEvent('toggle-output', !sourceShown ? 'visible' : 'hidden')\n\t\tsetSourceShown(!sourceShown)\n\t\tsetCopy(0)\n\t\tsetDownload(0)\n\t\tsetImport(0)\n\t}\n\n\tconst [copyActive, setCopyActive] = useState(false)\n\tconst copyTimeout = useRef(undefined)\n\tconst copySuccess = () => {\n\t\tsetCopyActive(true)\n\t\tif (copyTimeout.current !== undefined) clearTimeout(copyTimeout.current)\n\t\tcopyTimeout.current = setTimeout(() => {\n\t\t\tsetCopyActive(false)\n\t\t}, 2000) as any\n\t}\n\n\tconst [previewShown, setPreviewShown] = useState(false)\n\tconst hasPreview = HasPreview.includes(gen.id)\n\tif (previewShown && !hasPreview) setPreviewShown(false)\n\tlet actionsShown = 1\n\tif (hasPreview) actionsShown += 1\n\tif (sourceShown) actionsShown += 2\n\n\tconst togglePreview = () => {\n\t\tAnalytics.generatorEvent('toggle-preview', !previewShown ? 'visible' : 'hidden')\n\t\tsetPreviewShown(!previewShown)\n\t}\n\n\treturn <>\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{presetResults.map(preset => loadPreset(preset)} />)}\n\t\t\t\t\t
\n\t\t\t\t\t{presetResults.length === 0 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{allowedVersions.reverse().map(v =>\n\t\t\t\t\t\t changeVersion(v)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t{error && setError(null)} />}\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t{previewShown ? Octicon.x_circle : Octicon.play}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{Octicon.download}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{copyActive ? Octicon.check : Octicon.clippy}\n\t\t\t
\n\t\t\t
\n\t\t\t\t{sourceShown ? Octicon.chevron_right : Octicon.code}\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype HomeProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Home({ lang, changeTitle }: HomeProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.home'))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => !g.category).map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t

Analyse your performance reports

\n\t\t\t
\n\t\t\t\n\t\t\t\t

Browse through and mix all the vanilla sounds

\n\t\t\t
\n\t\t\t\n\t\t\t\t

Convert your 1.16 data packs to 1.17

\n\t\t\t
\n\t\t
\n\t
\n}\n","import { fetchAssets, fetchManifest, fetchSounds } from './DataFetcher'\nimport type { VersionId } from './Schemas'\n\nexport type VersionManifest = {\n\tlatest: {\n\t\trelease: string,\n\t\tsnapshot: string,\n\t},\n\tversions: {\n\t\tid: string,\n\t\ttype: string,\n\t\turl: string,\n\t}[],\n}\nlet Manifest: VersionManifest | Promise | null = null\n\nexport type VersionAssets = {\n\t[key: string]: {\n\t\thash: string,\n\t},\n}\nconst VersionAssets: Record> = {}\n\nexport type SoundEvents = {\n\t[key: string]: {\n\t\tsounds: (string | { name: string })[],\n\t},\n}\nconst SoundEvents: Record> = {}\n\nexport async function getManifest() {\n\tif (!Manifest) {\n\t\tManifest = fetchManifest()\n\t}\n\treturn Manifest\n}\n\nexport async function getAssets(version: VersionId) {\n\tif (!VersionAssets[version]) {\n\t\tVersionAssets[version] = (async () => {\n\t\t\tconst manifest = await getManifest()\n\t\t\treturn await fetchAssets(version, manifest)\n\t\t})()\n\t}\n\treturn VersionAssets[version]\n}\n\nexport async function getSounds(version: VersionId) {\n\tif (!SoundEvents[version]) {\n\t\tSoundEvents[version] = (async () => {\n\t\t\tconst assets = await getAssets(version)\n\t\t\treturn await fetchSounds(version, assets)\n\t\t})()\n\t}\n\treturn SoundEvents[version]\n}\n","import { useEffect, useRef, useState } from 'preact/hooks'\nimport config from '../../config.json'\nimport { Ad, Btn, BtnMenu, ErrorPanel, SoundConfig, TextInput } from '../components'\nimport { locale } from '../Locales'\nimport type { SoundEvents, VersionAssets } from '../Manifest'\nimport { getAssets, getSounds } from '../Manifest'\nimport type { VersionId } from '../Schemas'\nimport { hexId, message } from '../Utils'\n\ntype SoundsProps = {\n\tpath?: string,\n\tlang: string,\n\tchangeTitle: (title: string, versions?: VersionId[]) => unknown,\n\tversion: VersionId,\n\tchangeVersion: (version: VersionId) => unknown,\n}\nexport function Sounds({ lang, changeTitle, version, changeVersion }: SoundsProps) {\n\tconst loc = locale.bind(null, lang)\n\tconst [error, setError] = useState(null)\n\tchangeTitle(loc('title.sounds'))\n\n\tconst [assets, setAssets] = useState({})\n\tconst [sounds, setSounds] = useState({})\n\tconst soundKeys = Object.keys(sounds ?? {})\n\tuseEffect(() => {\n\t\tgetAssets(version)\n\t\t\t.then(assets => { setAssets(assets); return getSounds(version) })\n\t\t\t.then(sounds => { if (sounds) setSounds(sounds) })\n\t\t\t.catch(e => { console.error(e); setError(message(e)) })\n\t}, [version])\n\n\tconst [search, setSearch] = useState('')\n\tconst [configs, setConfigs] = useState([])\n\tconst addConfig = () => {\n\t\tsetConfigs([{ id: hexId(), sound: search, delay: 0, pitch: 1, volume: 1 }, ...configs])\n\t}\n\tconst editConfig = (id: string) => (changes: Partial) => {\n\t\tsetConfigs(configs.map(c => c.id === id ? { ...c, ...changes } : c))\n\t}\n\tconst deleteConfig = (id: string) => () => {\n\t\tsetConfigs(configs.filter(c => c.id !== id))\n\t}\n\n\tconst [delayedPlay, setDelayedPlay] = useState(0)\n\tconst playAll = () => {\n\t\tsetDelayedPlay(delayedPlay + 1)\n\t}\n\n\tconst download = useRef(null)\n\tconst downloadFunction = () => {\n\t\tconst hasDelay = configs.some(c => c.delay > 0)\n\t\tconst content = configs\n\t\t\t.sort((a, b) => a.delay - b.delay)\n\t\t\t.map(c => `${hasDelay ? `execute if score @s delay matches ${c.delay} run ` : ''}playsound minecraft:${c.sound} master @s ~ ~ ~ ${c.volume} ${c.pitch}`)\n\t\t\t.join('\\n')\n\t\tdownload.current.setAttribute('href', 'data:text/plain;charset=utf-8,' + content + '%0A')\n\t\tdownload.current.setAttribute('download', 'sounds.mcfunction')\n\t\tdownload.current.click()\n\t}\n\n\treturn
\n\t\t\n\t\t{error && setError(null)} />}\n\t\t{soundKeys.length > 0 && <>\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{configs.length > 1 && }\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{config.versions.reverse().map(v =>\n\t\t\t\t\t\t changeVersion(v.id as VersionId)} />\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t{configs.map(c => )}\n\t\t\t
\n\t\t\t\n\t\t}\n\t\t\n\t\t\t{soundKeys.map(s => \n\t
\n}\n","import config from '../../config.json'\nimport { ToolCard } from '../components'\nimport { locale } from '../Locales'\nimport { cleanUrl } from '../Utils'\n\ntype WorldgenProps = {\n\tlang: string,\n\tchangeTitle: (title: string) => unknown,\n\tpath?: string,\n}\nexport function Worldgen({ lang, changeTitle }: WorldgenProps) {\n\tconst loc = locale.bind(null, lang)\n\tchangeTitle(loc('title.generator_category', loc('worldgen')))\n\treturn
\n\t\t
\n\t\t\t{config.generators.filter(g => g.category === 'worldgen').map(g => \n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t
\n}\n","import { render } from 'preact'\nimport type { RouterOnChangeArgs } from 'preact-router'\nimport { Router } from 'preact-router'\nimport { useEffect, useState } from 'preact/hooks'\nimport config from '../config.json'\nimport '../styles/global.css'\nimport '../styles/nodes.css'\nimport { Analytics } from './Analytics'\nimport { Header } from './components'\nimport { loadLocale, locale, Locales } from './Locales'\nimport { Generator, Home, Sounds, Worldgen } from './pages'\nimport type { VersionId } from './Schemas'\nimport { Store } from './Store'\nimport { cleanUrl } from './Utils'\n\nconst VERSIONS_IN_TITLE = 3\n\nfunction Main() {\n\tconst [lang, setLanguage] = useState('none')\n\tconst changeLanguage = async (language: string) => {\n\t\tif (!Locales[language]) {\n\t\t\tawait loadLocale(language)\n\t\t}\n\t\tAnalytics.setLanguage(language)\n\t\tStore.setLanguage(language)\n\t\tsetLanguage(language)\n\t}\n\tuseEffect(() => {\n\t\t(async () => {\n\t\t\tconst target = Store.getLanguage()\n\t\t\tawait Promise.all([\n\t\t\t\tloadLocale('en'),\n\t\t\t\t...(target !== 'en' ? [loadLocale(target)] : []),\n\t\t\t])\n\t\t\tsetLanguage(target)\n\t\t})()\n\t}, [])\n\n\tconst [theme, setTheme] = useState(Store.getTheme())\n\tconst changeTheme = (theme: string) => {\n\t\tAnalytics.setTheme(theme)\n\t\tStore.setTheme(theme)\n\t\tsetTheme(theme)\n\t}\n\tuseEffect(() => {\n\t\tdocument.documentElement.setAttribute('data-theme', theme)\n\t}, [theme])\n\n\tconst [version, setVersion] = useState(Store.getVersion())\n\tconst changeVersion = (version: VersionId) => {\n\t\tAnalytics.setVersion(version)\n\t\tStore.setVersion(version)\n\t\tsetVersion(version)\n\t}\n\n\tconst [title, setTitle] = useState(locale(lang, 'title.home'))\n\tconst changeTitle = (title: string, versions?: VersionId[]) => {\n\t\tversions ??= config.versions.map(v => v.id as VersionId)\n\t\tversions.splice(0, versions.length - VERSIONS_IN_TITLE)\n\t\tdocument.title = `${title} Minecraft ${versions.join(', ')}`\n\t\tsetTitle(title)\n\t}\n\n\tconst changeRoute = (e: RouterOnChangeArgs) => {\n\t\t// Needs a timeout to ensure the title is set correctly\n\t\tsetTimeout(() => Analytics.pageview(cleanUrl(e.url)))\n\t}\n\n\treturn <>\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\n}\n\nrender(
, document.body)\n"],"names":["Analytics","type","id","getElementById","remove","window","load","data-ea-publisher","data-ea-type","class","icon","label","active","clazz","tooltip","tooltipLoc","onClick","aria-label","Octicon","large","doSelect","value","placeholder","onChange","onInput","e","value2","target","ref","useRef","current","select","stopPropagation","size","draw","onDrag","onHover","onLeave","inputs","canvas","dragStart","dragRequest","dragPending","dragBusy","onMouseDown","offsetX","offsetY","onMouseMove","x","clientWidth","y2","clientHeight","dx","dy","requestAnimationFrame","async","dx2","dy2","onMouseUp","onMouseLeave","addEventListener","body","removeEventListener","redraw","redrawCount","ctx","getContext","s2","width","height","img","getImageData","ownCount","putImageData","setActive","useState","hider","model","invalidated","listener","[object Object]","addListener","removeListener","relative","children","useFocus","Btn","__spreadProps","Analytics2","ID_SITE","ID_GENERATOR","category","action","index","pageview","page","setLanguage","language","setTheme","theme","setVersion","version","setPreview","preview","setGenerator","generator","log","generatorEvent","alert","xmlns","viewBox","fill-rule","d","archive","arrow_left","arrow_right","check","chevron_down","chevron_right","chevron_up","clippy","code","dash","device_desktop","download","duplicate","eye","eye_closed","gear","globe","history","info","issue_opened","kebab_horizontal","link","mark_github","moon","play","plus","plus_circle","search","stack","sun","sync","tag","terminal","three_bars","trashcan","unfold","upload","x_circle","error","onDismiss","href","component","props","evt","fn","onKeyDown","onEnter","key","__spreadValues","displayName","name","TextInput","BaseInput","v","NumberInput","Number","RangeInput","scriptRel","seen","__vitePreload","baseModule","deps","relList","document","createElement","supports","Promise","all","map","dep","isCss","endsWith","cssSelector","querySelector","rel","as","crossOrigin","head","appendChild","res","rej","then","Locales","fallback","English","params","replace","parseInt","match","slice","resolveLocaleParams","en","langConfig","config","languages","find","lang","data","__variableDynamicImportRuntime0__","schema","schemas","__variableDynamicImportRuntime1__","default","obj","dec2hex","dec","toString","substr","length","arr","Uint8Array","crypto","getRandomValues","Array","from","join","BigInt","Math","floor","random","MAX_SAFE_INTEGER","seed","dimensions","get","Path","set","keys","forEach","url","replaceAll","trimmedUrl","generators","g2","str","h","abs","i","imul","charCodeAt","hashString","a2","b","c","max","min","lerp","Error","message","deepClone","rfdc","constructor","isArray","deepEqual","valueOf","Object","prototype","hasOwnProperty","call","forward","Map","backward","this","defaultValue","VersionIds","Versions","Models","versionGetter","1.15","java15","1.16","java16","1.17","java17","1.18","java18","CachedDecorator","CachedFeature","collections","getCollections","blockStates","versionId","collectionTarget","blockStateTarget","versions","JSON","stringify","debug","dynamic","refs","filter","localStorage","getItem","r","hash","matches","cache","caches","open","promises","request","push","delete","warn","deleteMatching","startsWith","setItem","fetchRegistries","fetchBlockStateMap","fetchDynamicRegistries","fetchData","getSchemas","minVersionId","maxVersionId","findIndex","minVersion","maxVersion","removeItem","mcdataUrl","vanillaDatapackUrl","registries","checkVersion","mcdata_master","getData","data2","k","entries","register","path","values","properties","states","assign","vanilla_datapack_summary","Noises","registry","versionData","vanilla_datapack_data","fetch","text","parse","noise","terrain_shaper","offset","factor","jaggedness","json","cacheResponse","ok","fetchResponse","responseData","put","Response","ready","LAYERS","temperature","humidity","continentalness","erosion","weirdness","cacheState","biomeSourceCache","state","options","newState","octaves","shaper","toJson","FixedBiome","biome","shift","scale","numBiomes","biomes","_y","z","node","preset","NetherPreset18","NetherPreset","fetchPreset","biome_source","OverworldPreset18","DataModel","unwrapLists","init","wasm","loadWasm","BiomeIds","BiMap","param","p","t0","t1","h0","h1","c0","c1","e0","e1","w0","w1","d0","d1","o","depth","parameters","getOrPut","biome_parameters","Float64Array","Int32Array","sampler","climate_sampler","firstOctave","amplitudes","ids","multi_noise","getA","getBiomes","xFrom","xTo","xStep","yFrom","yTo","yStep","zFrom","zTo","zStep","layers","climate","climate_noise","result","t","w","point","TerrainShaper","has","config2","clamp","NormalNoise","LegacyRandom","n","n2","sample","minDist","Infinity","minBiome","dist","square","altitude","getBiomeSource","biomeSource","biomeColors","color","VanillaColors","stringToColor","minecraft:badlands","minecraft:badlands_plateau","minecraft:bamboo_jungle","minecraft:bamboo_jungle_hills","minecraft:basalt_deltas","minecraft:beach","minecraft:birch_forest","minecraft:birch_forest_hills","minecraft:cold_ocean","minecraft:crimson_forest","minecraft:dark_forest","minecraft:dark_forest_hills","minecraft:deep_cold_ocean","minecraft:deep_frozen_ocean","minecraft:deep_lukewarm_ocean","minecraft:deep_ocean","minecraft:deep_warm_ocean","minecraft:desert","minecraft:desert_hills","minecraft:desert_lakes","minecraft:end_barrens","minecraft:end_highlands","minecraft:end_midlands","minecraft:eroded_badlands","minecraft:flower_forest","minecraft:forest","minecraft:frozen_ocean","minecraft:frozen_river","minecraft:giant_spruce_taiga","minecraft:old_growth_spruce_taiga","minecraft:giant_spruce_taiga_hills","minecraft:giant_tree_taiga","minecraft:old_growth_pine_taiga","minecraft:giant_tree_taiga_hills","minecraft:gravelly_hills","minecraft:gravelly_mountains","minecraft:windswept_gravelly_hills","minecraft:ice_spikes","minecraft:jungle","minecraft:jungle_edge","minecraft:sparse_jungle","minecraft:jungle_hills","minecraft:lukewarm_ocean","minecraft:modified_badlands_plateau","minecraft:modified_gravelly_mountains","minecraft:modified_jungle","minecraft:modified_jungle_edge","minecraft:modified_wooded_badlands_plateau","minecraft:mountain_edge","minecraft:extreme_hills","minecraft:mountains","minecraft:windswept_hills","minecraft:mushroom_field_shore","minecraft:mushroom_fields","minecraft:nether_wastes","minecraft:ocean","minecraft:plains","minecraft:river","minecraft:savanna","minecraft:savanna_plateau","minecraft:shattered_savanna","minecraft:windswept_savanna","minecraft:shattered_savanna_plateau","minecraft:small_end_islands","minecraft:snowy_beach","minecraft:snowy_mountains","minecraft:snowy_taiga","minecraft:snowy_taiga_hills","minecraft:snowy_taiga_mountains","minecraft:snowy_tundra","minecraft:snowy_plains","minecraft:soul_sand_valley","minecraft:stone_shore","minecraft:stony_shore","minecraft:sunflower_plains","minecraft:swamp","minecraft:swamp_hills","minecraft:taiga","minecraft:taiga_hills","minecraft:taiga_mountains","minecraft:tall_birch_forest","minecraft:old_growth_birch_forest","minecraft:tall_birch_hills","minecraft:the_end","minecraft:the_void","minecraft:warm_ocean","minecraft:warped_forest","minecraft:wooded_badlands_plateau","minecraft:wooded_badlands","minecraft:wooded_hills","minecraft:wooded_mountains","minecraft:windswept_forest","minecraft:snowy_slopes","minecraft:lofty_peaks","minecraft:jagged_peaks","minecraft:snowcapped_peaks","minecraft:frozen_peaks","minecraft:stony_peaks","minecraft:grove","minecraft:meadow","minecraft:lush_caves","minecraft:dripstone_caves","altitude_noise","temperature_noise","humidity_noise","weirdness_noise","terrain","featureColors","placements","features","biomeInfoNoise","PerlinNoise","fork","seaLevel","nextFloat","nextInt","sampleInt","fill","pos","feature","j","base","spread","normalize","min_inclusive","max_inclusive","source","indexOf","useFeature","featureFn","Features","decorator2","decoratorFn","Decorators","decorated","getPositions","decorator","getPlacements","random_boolean_selector","feature_true","feature_false","random_selector","f","chance","simple_random_selector","count","count_extra","extra_chance","extra_count","count_multilayer","count_noise","noise_level","below_noise","above_noise","count_noise_biased","noise_factor","ceil","noise_offset","noise_to_count_ratio","dark_oak_tree","_config","_","outer","flatMap","inner","depth_average","decorateY","baseline","emerald_ore","fire","glowstone","heightmap","heightmap_spread_double","heightmap_world_surface","iceberg","lava_lake","nope","range","maximum","top_offset","bottom_offset","range_biased","range_very_biased","spread_32_above","top_solid_heightmap","magma","surface_relative_threshold","water_lake","minLimitPerlinNoise","maxLimitPerlinNoise","mainPerlinNoise","depthNoise","settings","xOffset","chunkWidth","size_horizontal","chunkHeight","size_vertical","chunkCountY","amplified","biomeDepth","biomeScale","noiseColumnCache","cx","ox","noise1","fillNoiseColumn","noise2","yy","oy","cachedColumn","xzScale","sampling","xz_scale","yScale","y_scale","xzFactor","xz_factor","yFactor","y_factor","randomDensity","random_density_offset","getRandomDensity","sampleAndClampNoise","getOctaveNoise","zo","falloff","density_factor","density_offset","top_slide","clampedLerp","bottom_slide","x2","wrap","y22","z2","minLimitNoise","maxLimitNoise","mainNoise","colors","minecraft:air","minecraft:water","minecraft:lava","minecraft:stone","minecraft:netherrack","minecraft:end_stone","generatorCache","chunkCache","NoiseGeneratorSettings","fromJson","getOctaves","NoiseChunkGenerator","getCached","LevelSlice","minY","generator2","state2","getBlockState","getName","OldNoiseChunkGenerator","reset","row","iterateNoiseColumn","reverse","getColor","minX","filled","chunks","cached","Chunk","ChunkPos","create","Z","chunk","chunkIndex","OverworldShaper","overworld","BiomeSourcePreview","shown","setScale","focused","setFocused","setLayers","Set","refineTimeout","getShaper","calculateState","useCanvas","round","oz","col","xRange","zRange","l2","getClimate","worldX","worldZ","getBiomeColor","getBiome","brightness","biomeMap","setTimeout","xx","zz","toWorld","changeScale","newScale","BtnMenu","locale","enabled","newSeed","densityFactor","densityOffset","DecoratorPreview","setSeed","randomSeed","NoisePreview","NoiseParameters","NoiseSettingsPreview","loc","bind","setBiomeScale","setBiomeDepth","worldY","min_y","BtnInput","HasPreview","setCount","transformOutput","switchNode","hook","blockState","validation","validator","relativePath","includes","getActiveFields","activeFields","Store","Store2","getLanguage","getTheme","getVersion","getIndent","getSoundsVersion","setIndent","indent","setSoundsVersion","INDENT","2_spaces","4_spaces","tabs","doCopy","doDownload","doImport","copySuccess","onError","retransform","getOutput","useCallback","model2","blockStates2","ModelPath","output","clipboard","writeText","content","encodeURIComponent","setAttribute","click","changeIndent","onBlur","wrapLists","spellcheck","autocorrect","style","mapper","getter","setter","silent","selectRegistries","hiddenFields","flattenedFields","inlineFields","nbtFields","fixedLists","keysModel","MapNode","StringNode","historyMax","prefix","suffix","renderHtml","some","data-category","boolean","BooleanSuffix","choices","choice","activeCase","contextPath","context","getModel","getArray","choiceContextPath","choiceContext","inject","c2","newValue","change","pathLocale","contextPush","expand","collapse","isToggled","useToggles","maxShown","setMaxShown","maxLength","ErrorPopup","modelPush","hexId","cValue","cId","cPath","canToggle","toggle","nested","Collapsed","MemoedTreeNode","actions","onSelect","splice","disabled","keyPath","keysSchema","enum","last","errors","add","ObjectNode","fromEntries","cSchema","number","NumberSuffix","getChildModelPath","isObject","isDecorated","wrapper","fields","originalFields","decorators","iterateNestedDecorators","ListNode","featurePath","decoratorsPath","ModelWrapper","path2","modelArr","equals","newDecorators","newPath","feature2","produceNestedDecorators","createDecoratorsWrapper","optional","onExpand","onCollapse","newCtx","pools","loot","child","cPrefix","cSuffix","cBody","isFlattened","isInlined","HelpPopup","string","StringSuffix","toggleState","setToggleState","toggleAll","setToggleAll","ctrlKey","integer","parsed","parseFloat","padStart","getValues","isEnum","additional","context2","pool","datalistId","list","values2","memo","onContextMenu","preventDefault","a","description","navigator","prev","next","withModel","getAll","e2","message2","popupIcon","popup","useErrorBoundary","setState","FullNode","Themes","system","dark","light","title","changeTheme","changeLanguage","gen","getGenerator","getCurrentUrl","Link","Icons","home","route","cleanUrl","th","rx","y","report","sounds","cy","clip-rule","assets","sound","delay","pitch","volume","onEdit","onDelete","delayedPlay","loading","setLoading","playing","setPlaying","invalid","setInvalid","howls","command","soundEvent","h2","stop","soundPath","entry","getResourceUrl","howl","Howl","src","format","rate","on","completed","every","copyActive","setCopyActive","copyTimeout","step","toFixed","changeTitle","changeVersion","setError","errorBoundary","errorRetry","ErrorPanel","allowedVersions","setModel","setBlockStates","Reference","ChoiceNode","schemaName","validate","err","m","catch","onKeyUp","undo","redo","presetFilter","setPresetFilter","presetResults","setPresetResults","terms","trim","split","presets","sourceShown","setSourceShown","innerWidth","setCopy","setDownload","setImport","previewShown","setPreviewShown","hasPreview","actionsShown","Ad","loadPreset","Tree","PreviewPanel","SourcePanel","ToolCard","Manifest","VersionAssets","SoundEvents","fetchManifest","manifest","getManifest","latest","snapshot","versionMeta","assetIndex","objects","fetchAssets","getAssets","fetchSounds","setAssets","setSounds","soundKeys","assets2","getSounds","sounds2","setSearch","configs","setConfigs","addConfig","deleteConfig","setDelayedPlay","hasDelay","sort","SoundConfig","changes","loadLocale","documentElement","version2","setTitle","title2","Header","theme2","Router","Home","Worldgen","Sounds","Generator","render","Main"],"mappings":"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"} \ No newline at end of file diff --git a/assets/index.bda2035d.css b/assets/index.bda2035d.css deleted file mode 100644 index 9bf8bebd..00000000 --- a/assets/index.bda2035d.css +++ /dev/null @@ -1 +0,0 @@ -:root{--background-1:#1b1b1b;--background-2:#252525;--background-3:#222222;--background-4:#3d3d3d;--background-5:#383838;--background-6:#575757;--text-1:#ffffff;--text-2:#dcdcdc;--text-3:#c3c3c3;--accent-primary:#50baf9;--accent-success:#3eb84f;--accent-sounds-1:#451475;--accent-sounds-2:#39155e;--accent-sounds-3:#6a08a3;--accent-sounds-4:#d1a5e6;--nav:#91908f;--nav-hover:#b4b3b0;--nav-faded:#4d4c4c;--nav-faded-hover:#6e6e6e;--selection:#6786dd99;--errors-background:#62190f;--errors-text:#ffffffcc;--invalid-text:#fd7951}:root[data-theme=light]{--background-1:#fafafa;--background-2:#e2e2e2;--background-3:#d4d3d3;--background-4:#b8b8b8;--background-5:#bdbdbd;--background-6:#cecece;--text-1:#000000;--text-2:#2f2f2f;--text-3:#494949;--accent-primary:#088cdb;--accent-success:#1a7f37;--accent-sounds-1:#b481e7;--accent-sounds-2:#c18df5;--accent-sounds-3:#af72d3;--accent-sounds-4:#efd3fd;--nav:#343a40;--nav-hover:#565d64;--nav-faded:#9fa2a7;--nav-faded-hover:#bcbfc3;--selection:#6786dd99;--errors-background:#f66653;--errors-text:#000000cc;--invalid-text:#a32600}@media (prefers-color-scheme:light){:root[data-theme=system]{--background-1:#fafafa;--background-2:#e2e2e2;--background-3:#d4d3d3;--background-4:#b8b8b8;--background-5:#bdbdbd;--background-6:#cecece;--text-1:#000000;--text-2:#2f2f2f;--text-3:#494949;--accent-primary:#088cdb;--accent-success:#1a7f37;--accent-sounds-1:#b481e7;--accent-sounds-2:#c18df5;--accent-sounds-3:#af72d3;--accent-sounds-4:#efd3fd;--nav:#343a40;--nav-hover:#565d64;--nav-faded:#9fa2a7;--nav-faded-hover:#bcbfc3;--selection:#6786dd99;--errors-background:#f66653;--errors-text:#000000cc;--invalid-text:#a32600}}*{box-sizing:border-box;margin:0;padding:0}::selection{background-color:var(--selection)}a svg{pointer-events:none}body{font-size:18px;font-family:Arial,Helvetica,sans-serif;min-height:100vh;overflow-x:hidden;background-color:var(--background-1)}header{display:flex;justify-content:space-between;align-items:center;padding:10px;width:100%;height:56px;z-index:5;position:fixed;box-shadow:0 0 9px -3px #000;background-color:var(--background-2)}body[data-panel=home] header,body[data-panel=settings] header{position:fixed}.title{display:flex;align-items:center}.title h2{color:var(--nav)}.home-link{margin:0 8px 0 0}.home-link svg{display:block;width:32px;height:32px;padding:2px}.home-link svg rect:nth-child(2n){transition:transform .2s}.home-link:hover rect:nth-child(2){transform:translateX(-8px)}.home-link:hover rect:nth-child(4){transform:translateX(-11px)}.home-link:hover rect:nth-child(6){transform:translateX(-6px)}nav ul{display:flex;align-items:center}nav li{display:flex;align-items:center;cursor:pointer;margin:0 16px;fill:var(--nav);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.home-link:hover svg{fill:var(--nav-hover)}nav li.dimmed svg{fill:var(--nav-faded)}nav li.dimmed:hover svg{fill:var(--nav-faded-hover)}nav li svg,nav li>*{width:24px;height:24px}.title .btn-menu{margin:0 8px}.title .btn-menu>.btn svg{width:24px;height:24px}header .btn-menu>.btn{background:0 0!important;padding:0;box-shadow:none;fill:var(--nav)}header .btn-menu>.btn:hover{fill:var(--nav-hover)}main{padding-top:68px;color:var(--text-1);fill:var(--text-1);transition:padding .3s}.controls{display:flex;justify-content:flex-end;position:fixed;top:12px;right:16px;left:16px;z-index:1;pointer-events:none}main>.controls{position:sticky;margin-right:16px;margin-left:16px;top:68px}.controls>*{pointer-events:all}.controls>:not(:last-child){margin-right:8px}.tree{margin-top:-36px;overflow-x:auto;padding:4px 16px 50vh}.error+.tree{margin-top:0}.popup-source{position:fixed;display:flex;flex-direction:column;width:40vw;left:100%;bottom:0;z-index:1;transition:transform .3s;border-radius:6px 0 0 0}.popup-source.shown{transform:translateX(-100%)}.source{width:100%;height:40vh;max-height:50vh;padding:12px;border:none;font-family:Consolas,monospace;font-size:14px;white-space:pre;overflow-wrap:normal;overflow-x:auto;tab-size:4;-moz-tab-size:4;-o-tab-size:4;-webkit-tab-size:4;outline:0;resize:none;position:static;background-color:var(--background-2);border-top-left-radius:6px;color:var(--text-1);box-shadow:0 0 7px -3px #000}.popup-preview{position:fixed;display:flex;flex-direction:column;height:calc(100% - 56px);width:40vw;left:100%;bottom:0;z-index:1;background-color:var(--background-2);box-shadow:0 0 7px -3px #000;transition:transform .3s}main.has-preview{padding-right:40vw}.popup-preview.shown{transform:translateX(-100%)}.popup-preview canvas{width:100%;background-color:var(--nav-faded);display:block;cursor:crosshair;image-rendering:-moz-crisp-edges;image-rendering:-webkit-crisp-edges;image-rendering:crisp-edges;image-rendering:pixelated;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.btn{display:flex;align-items:center;border:none;height:32px;border-radius:6px;padding:7px 11px;cursor:pointer;outline:0;font-size:1rem;white-space:nowrap;background-color:var(--background-4);box-shadow:0 1px 7px -2px #000;color:var(--text-2);fill:var(--text-2);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.btn.active{color:var(--accent-primary);fill:var(--accent-primary)}.btn:not(.btn-input):hover{background-color:var(--background-5)}.btn.no-pointer{pointer-events:none}.btn svg:not(:last-child){margin-right:5px}.btn-menu:not(.no-relative){position:relative}.btn-menu>.btn{height:100%}.btn-menu .btn-group{display:flex;flex-direction:column;position:absolute;right:0;top:100%;margin-top:8px}.btn-group{border-radius:6px;box-shadow:0 0 7px -2px #000}.btn-group .btn{box-shadow:none}.btn-group .btn:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group .btn:not(:first-child),.btn-menu .result-list .btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-input{cursor:initial;padding-right:7px}.btn-input input{background:var(--background-1);color:var(--text-1);font-size:17px;border:none;padding:0 3px;margin-left:5px;width:100px}.btn-input.large-input{padding:5px;padding-left:11px}.btn-input.large-input input{width:100%;height:100%}.btn-menu .result-list{display:block;width:380px;height:unset;overflow-y:auto;overflow-x:hidden;max-height:240px;border-bottom-left-radius:6px;border-bottom-right-radius:6px}.popup-actions{display:flex;position:fixed;bottom:8px;left:100%;z-index:5;padding-right:16px;background-color:var(--background-4);box-shadow:0 0 7px -3px #000;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;transform:translateX(var(--offset));transition:padding .1s,transform .3s;border-top-left-radius:24px;border-bottom-left-radius:24px}.popup-action{padding:12px;fill:var(--text-3);cursor:pointer;border-top-left-radius:50%;border-bottom-left-radius:50%;padding-left:16px}.popup-action.shown~.popup-action{border-top-left-radius:0;border-bottom-left-radius:0;padding-left:12px}.popup-action:not(.shown){pointer-events:none;order:1;visibility:hidden}.popup-action>svg{display:block;width:24px;height:24px}.popup-action:hover{background-color:var(--background-5)}.popup-action.action-preview{fill:var(--accent-primary)}.popup-action.action-copy.active{fill:var(--accent-success)}.tooltipped{position:relative}.tooltipped::after{content:attr(aria-label);position:absolute;z-index:100;padding:3px 7px;display:none;white-space:pre;pointer-events:none;background-color:var(--background-6);color:var(--text-1);border-radius:6px;font-size:14px;line-height:1.5;text-align:left;opacity:0}.tooltipped.tip-ne::after,.tooltipped.tip-nw::after{bottom:100%;margin-bottom:6px}.tooltipped.tip-s::after,.tooltipped.tip-se::after,.tooltipped.tip-sw::after{top:100%;margin-top:6px}.tooltipped.tip-ne::after,.tooltipped.tip-se::after{left:50%;margin-left:-16px}.tooltipped.tip-nw::after,.tooltipped.tip-sw::after{right:50%;margin-right:-16px}.tooltipped.tip-n::before,.tooltipped.tip-ne::before,.tooltipped.tip-nw::before{bottom:auto;top:-7px;border-top-color:var(--background-6)}.tooltipped.tip-s::before,.tooltipped.tip-se::before,.tooltipped.tip-sw::before{top:auto;bottom:-7px;border-bottom-color:var(--background-6)}.tooltipped.tip-n::after,.tooltipped.tip-n::before,.tooltipped.tip-s::after,.tooltipped.tip-s::before{left:var(--x,50%);transform:translate(-50%,8px)}.tooltipped::before{content:'';position:absolute;z-index:101;display:none;right:50%;width:0;height:0;margin-right:-8px;pointer-events:none;border:8px solid transparent;opacity:0}.tooltipped:not([disabled]):hover::after,.tooltipped:not([disabled]):hover::before{display:inline-block;animation:tooltip-appear .1s ease-in .4s forwards}.tooltipped:not([disabled]):hover::after{box-shadow:0 1px 3px 0 #0007}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.error{padding:5px 14px;margin:12px 16px;color:var(--text-1);background-color:var(--errors-background);border-radius:3px}.error>*{margin:10px 0}.error .error-dismiss{float:right;cursor:pointer;margin-left:10px}.error-dismiss svg{display:block;width:24px;height:24px}.error a{color:var(--text-1)}.home{padding:16px}.generator-picker{display:flex}.home.center{flex-direction:column;align-items:center;color:var(--nav)}.home.center p{padding-bottom:20px;text-align:center;font-size:20px}.home{max-width:960px;margin:0 auto}.tool-card{display:flex;padding:10px;margin-bottom:8px;color:var(--text-2);background-color:var(--background-2);box-shadow:1px 1px 7px -3px #000;border-radius:6px;text-decoration:none}.tool-card:hover{background-color:var(--background-3)}.tool-card svg{width:32px;height:32px;flex-shrink:0;margin-right:8px}.tool-card h3{font-weight:unset}.tool-card p{color:var(--text-3)}hr{margin:12px 0;border:none}.settings{padding:20px}.settings p{color:var(--nav);padding:8px;border-bottom:2px solid var(--background-4)}.field-list{width:100%;border-collapse:collapse;list-style-type:none}.field-list li{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--background-4)}.field-prop{display:inline-flex;align-items:center;max-width:100%;margin:4px}.field-prop>input,.field-prop>label{height:34px;color:var(--text-1);margin-right:-1px;border:1px solid;border-color:var(--nav-faded-hover)}.field-prop label{padding:0 9px;line-height:1.94rem;background-color:var(--node-background-label);white-space:nowrap;border-top-left-radius:3px;border-bottom-left-radius:3px}.field-prop input{width:100%;line-height:1.6rem;background-color:var(--node-background-input);color:var(--text-1);padding-left:9px;font-size:18px;border-top-right-radius:3px;border-bottom-right-radius:3px}.field-prop svg{padding:4px;margin:0 4px;height:28px;width:28px;fill:var(--nav);cursor:pointer}.field-prop .hidden svg{fill:#be4b2e}.field-prop .dimmed svg{fill:var(--nav-faded)}.very-large{font-size:80px;font-weight:100}[data-ea-publisher]{margin:0 16px 8px}.ea-content{margin:0!important;background:var(--background-2)!important}.ea-content span{color:var(--text-2)!important}.ea-content strong{color:var(--accent-primary)!important}.ea-callout{margin:.25rem 0!important;padding:0!important}.ea-callout a{color:var(--text-3)!important}.sounds{padding:16px}.sound-search-group{flex-basis:350px;height:32px;display:flex;border-radius:6px;box-shadow:0 1px 7px -2px #000}.sound-search{flex-basis:100%;padding:8px;color:var(--text-1);background-color:var(--background-2);border:none;border-radius:6px;font-size:16px;border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0!important;box-shadow:none}.btn.add-sound{border-top-left-radius:0;border-bottom-left-radius:0;background-color:var(--accent-sounds-1);box-shadow:none}.btn.add-sound:hover{background-color:var(--accent-sounds-2)}.spacer{margin-right:auto!important}.sound-config{display:grid;grid-template-columns:min-content 2fr min-content min-content min-content 1fr min-content 1fr min-content min-content;align-items:center;gap:12px 8px;padding:10px;background-color:var(--background-2);border-radius:5px}.sound-config:not(:last-child){margin-bottom:8px}.sound-config .btn{box-shadow:none}.sound-config .sound{width:100%}.sound-config label{color:var(--text-2);white-space:nowrap}.sound-config .delay{width:50px;padding:4px}.sound-config input[type=range]{-webkit-appearance:none;width:100%;background:0 0}.sound-config input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}.sound-config input[type=range]:focus{outline:0}.sound-config input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:16px;width:16px;border-radius:50%;background:var(--text-3);cursor:pointer;margin-top:-5px}.sound-config input[type=range]::-moz-range-thumb{border:none;height:16px;width:16px;border-radius:50%;background:var(--text-3);cursor:pointer}.sound-config input[type=range]::-webkit-slider-runnable-track{width:100%;height:8px;cursor:pointer;background:var(--background-4);border-radius:2px;border:none}.sound-config input[type=range]:focus::-webkit-slider-runnable-track{background:var(--background-5)}.sound-config input[type=range]::-moz-range-track{width:100%;height:8px;cursor:pointer;background:var(--background-4);border-radius:2px;border:none}.sound-config input[type=range]:focus::-moz-range-track{background:var(--background-5)}.sound-config .copy[data-command]{position:relative}.sound-config .copy[data-command]::after{content:attr(data-command);position:absolute;top:100%;right:0;margin-top:6px;padding:8px 12px;background-color:var(--background-3);border-radius:5px;box-shadow:0 2px 4px var(--background-1);cursor:initial}.sound-config.invalid .play,.sound-config.loading .play{cursor:initial}.sound-config.playing{background-color:var(--background-3)}.sound-config.playing .play{background-image:linear-gradient(110deg,var(--accent-sounds-3),var(--accent-sounds-3) 45%,var(--accent-sounds-4) 47%,var(--accent-sounds-4) 53%,var(--accent-sounds-3) 55%);background-size:300%;background-position:right;animation:playing 1s infinite}@keyframes playing{0%{background-position:left}100%{background-position:right}}.sound-config.loading:not(.invalid) .play svg{animation:spinning 2s infinite linear}.sound-config.invalid .sound{color:var(--invalid-text)}@media screen and (max-width:720px){.sound-search-group{margin-bottom:8px;flex-basis:100%;margin-right:0!important}.sounds-controls{flex-wrap:wrap}.sounds .btn{padding:8px 10px}.sounds .btn svg{margin-right:0!important}.sounds .btn span{display:none}.sound-config{grid-template-columns:min-content min-content 1fr min-content 1fr min-content;grid-template-areas:"play sound sound sound sound copy" "pitch-label pitch-label pitch volume-label volume remove"}.sound-config .play{grid-area:play}.sound-config .sound{grid-area:sound}.sound-config .delay-label{display:none}.sound-config .delay{display:none}.sound-config .pitch-label{grid-area:pitch-label}.sound-config .pitch{grid-area:pitch}.sound-config .volume-label{grid-area:volume-label}.sound-config .volume{grid-area:volume}.sound-config .copy{grid-area:copy}.sound-config .remove{grid-area:remove}}@keyframes spinning{0%{transform:rotate(0)}100%{transform:rotate(-360deg)}}@keyframes fadein{from{opacity:0}to{opacity:1}}@media screen and (max-width:1300px){main.has-preview .tree{margin-top:8px}}@media screen and (max-width:800px){main .tree{margin-top:4px!important}}@media screen and (max-width:580px){.title h2{font-size:18px}body nav li{margin:0 8px}main.has-preview{padding-right:0}main .controls{top:64px}.tree{padding-left:8px;padding-right:8px}.popup-source{width:100vw}.source{border-radius:0}.popup-preview{width:100vw;height:unset;bottom:0;background-color:transparent;box-shadow:none}.popup-preview canvas{margin-top:8px}.btn-menu .result-list,.btn.btn.large-input{width:calc(100vw - 10px)}.generator-picker{justify-content:center}}:root{--node-border:#3f3f3f;--node-background-label:#1b1b1b;--node-background-input:#272727;--node-background-hover:#1f1f1f;--node-text:#dadada;--node-text-dimmed:#b4b4b4;--node-selected:#ad9715;--node-selected-hover:#a38c0a;--node-selected-border:#8d7a0d;--node-add:#487c13;--node-add-hover:#3e7409;--node-add-border:#3b6e0c;--node-remove:#9b341b;--node-remove-hover:#922d13;--node-remove-border:#7e1d05;--node-indent-border:#454749;--category-predicate:#306163;--category-predicate-border:#224849;--category-predicate-background:#1d3333;--category-function:#838383;--category-function-border:#6b6b6b;--category-function-background:#414141;--category-pool:#386330;--category-pool-border:#2e4922;--category-pool-background:#21331d}:root[data-theme=light]{--node-border:#bcbfc3;--node-background-label:#e4e4e4;--node-background-input:#ffffff;--node-background-hover:#e7e7e7;--node-text:#000000;--node-text-dimmed:#2c2c2c;--node-selected:#f0e65e;--node-selected-hover:#faf06c;--node-selected-border:#b9a327;--node-add:#9bd464;--node-add-hover:#a5dd70;--node-add-border:#498d09;--node-remove:#e76f51;--node-remove-hover:#f57656;--node-remove-border:#be4b2e;--node-indent-border:#b9b9b9;--category-predicate:#65b5b8;--category-predicate-border:#187e81;--category-predicate-background:#95c5c7;--category-function:#979fa7;--category-function-border:#788086;--category-function-background:#dce0e4;--category-pool:#76b865;--category-pool-border:#398118;--category-pool-background:#b1d6a6}@media (prefers-color-scheme:light){:root[data-theme=system]{--node-border:#bcbfc3;--node-background-label:#e4e4e4;--node-background-input:#ffffff;--node-background-hover:#e7e7e7;--node-text:#000000;--node-text-dimmed:#2c2c2c;--node-selected:#f0e65e;--node-selected-hover:#faf06c;--node-selected-border:#b9a327;--node-add:#9bd464;--node-add-hover:#a5dd70;--node-add-border:#498d09;--node-remove:#e76f51;--node-remove-hover:#f57656;--node-remove-border:#be4b2e;--node-indent-border:#b9b9b9;--category-predicate:#65b5b8;--category-predicate-border:#187e81;--category-predicate-background:#95c5c7;--category-function:#979fa7;--category-function-border:#788086;--category-function-background:#dce0e4;--category-pool:#76b865;--category-pool-border:#398118;--category-pool-background:#b1d6a6}}.node-header{display:inline-flex;position:relative;align-items:center;width:100%}.node-header>*{height:34px;border:1px solid;color:var(--node-text);border-color:var(--node-border)}.node-header>label{align-self:flex-start;padding:0 9px;line-height:1.94rem;white-space:nowrap;user-select:none;background-color:var(--node-background-label)}.node-header>input{font-size:18px;padding-left:9px;background-color:var(--node-background-input)}.node-header>input[type=color]{padding:0 2px}.node-header>textarea{min-width:236.33px;min-height:34px;font-size:18px;padding-left:9px;padding-top:5px;background-color:var(--node-background-input)}.node-header>datalist,.node-header>select{font-size:18px;padding-left:6px;background-color:var(--node-background-input)}.node-header button{font-size:18px;padding:0 9px;line-height:1.94rem;white-space:nowrap;user-select:none;cursor:pointer;background-color:var(--node-background-input)}.node-header button:not([disabled]):hover{background-color:var(--node-background-hover)}.object-node>.node-header>.collapse{cursor:pointer}.node-error+.fixed-list~input,.node-error~input:last-child,.node-error~input[list]:nth-last-child(2),.node-error~select:last-child{border-color:var(--node-remove)!important}.node-header>.node-icon{order:1}.node-header>.node-icon:first-child+*,.node-header>:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.node-header>:last-child,.node-header>input[list]:nth-last-child(2){border-top-right-radius:3px;border-bottom-right-radius:3px}.node-header>*{margin-right:-1px}.list-node>.node-header>:first-child,.map-node>.node-header>:first-child,.object-node:not(.no-body)>.node-header>:first-child{border-top-left-radius:8px;border-bottom-left-radius:0}button.selected{background-color:var(--node-selected);border-color:var(--node-selected-border)}button:not([disabled]).selected:hover{background-color:var(--node-selected-hover)}.collapse svg{fill:var(--node-text)}.collapse.closed,button.add{background-color:var(--node-add);border-color:var(--node-add-border)}.collapse:not([disabled]).closed:hover,button:not([disabled]).add:hover{background-color:var(--node-add-hover)}.collapse.open,button.remove{background-color:var(--node-remove);border-color:var(--node-remove-border)}.collapse:not([disabled]).open:hover,button:not([disabled]).remove:hover{background-color:var(--node-remove-hover)}.node-header>button svg{display:inline-block;position:relative;top:2px;fill:var(--node-text)}.node-header>button.add:last-child,.node-header>button.collapse:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}.node-move{display:flex;flex-direction:column;width:34px}button.move{height:50%;border:none;display:flex}button.move+button.move{border-top:1px solid var(--node-border)}button.move:disabled{cursor:unset;fill:var(--node-border)}.node-icon{border:none;position:relative;display:inline-block}.node-icon .icon-popup{visibility:hidden;width:240px;background-color:var(--background-6);color:var(--text-1);text-align:center;border-radius:6px;padding:8px 4px;position:absolute;z-index:2;top:125%;left:50%;margin-left:-120px}.node-icon .icon-popup::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-3px;border-width:5px;border-style:solid;border-color:transparent transparent var(--background-6) transparent}.node-icon svg:hover+.icon-popup,.node-icon.show .icon-popup{visibility:visible}.node-icon svg{height:34px;width:34px;min-width:34px;margin-left:6px;cursor:pointer}.node-icon.node-help svg{fill:var(--node-border)}.node-icon.node-error svg{fill:var(--node-remove)}.node-menu{position:absolute;left:0;top:100%;width:min-content;margin-top:4px;margin-left:4px;z-index:1;color:var(--text-1);font-size:16px;border-radius:6px;background-color:var(--background-6);box-shadow:0 1px 5px -2px #000}.node-menu::after{content:"";position:absolute;bottom:100%;left:0;margin-left:6px;border-width:5px;border-style:solid;border-color:transparent transparent var(--background-6) transparent}.menu-item{padding:4px;display:flex;align-items:center;white-space:normal}.menu-item>*{margin-right:4px}.menu-item .btn{padding:8px;box-shadow:unset}.menu-item span{color:var(--text-2)}.node{margin-bottom:4px}.node-body>.node:first-child{margin-top:4px}.node:last-child{margin-bottom:0}.node-body{border-left:3px solid var(--node-indent-border)}.node-body{display:flex;flex-direction:column;padding-left:18px}.list-node>.node-body>.object-node>.node-body,.map-node>.node-body>.object-node>.node-body{padding-left:0}.list-node>.node-body>.object-node>.node-body>.node>.node-body,.map-node>.node-body>.object-node>.node-body>.node>.node-body{border-left:none}.list-node>.node-body>.object-node>.node-body>.node>.node-header>.node-icon:first-child+*,.list-node>.node-body>.object-node>.node-body>.node>.node-header>:first-child,.map-node>.node-body>.object-node>.node-body>.node>.node-header>.node-icon:first-child+*,.map-node>.node-body>.object-node>.node-body>.node>.node-header>:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.node-body>.list-node[data-category],.node-body>.map-node[data-category],.node-body>.object-node[data-category]{width:100%;min-width:max-content;padding:5px;padding-left:0;border:2px solid var(--node-border);border-radius:3px}.node-body>.object-node[data-category]>.node-header>.node-icon:first-child+*,.node-body>.object-node[data-category]>.node-header>:first-child{border-top-left-radius:0;border-bottom-left-radius:0;border-left:none}.node-body>.list-node[data-category]>.node-body,.node-body>.map-node[data-category]>.node-body,.node-body>.object-node[data-category]>.node-body{border:none}.range-node select{width:25px}.fixed-list{display:none}.fixed-list~input,.number-node input,.range-node input{width:100px}[data-category=predicate].node-header>label,[data-category=predicate]>.node-body>.node>.node-header>label,[data-category=predicate]>.node-header>label{background-color:var(--category-predicate)}[data-category=predicate].node-header>label,[data-category=predicate]>.node-body,[data-category=predicate]>.node-body>.node>.node-header>:not(.selected),[data-category=predicate]>.node-header>:not(.selected),[data-category=predicate]>.node-header>label{border-color:var(--category-predicate-border)}.node-body>.node.list-node[data-category=predicate],.node-body>.node.map-node[data-category=predicate],.node-body>.node.object-node[data-category=predicate]{background-color:var(--category-predicate-background);border-color:var(--category-predicate-border)}[data-category=function].node-header>label,[data-category=function]>.node-body>.node>.node-header>label,[data-category=function]>.node-header>label{background-color:var(--category-function)}[data-category=function].node-header>label,[data-category=function]>.node-body,[data-category=function]>.node-body>.node>.node-header>:not(.selected),[data-category=function]>.node-header>:not(.selected),[data-category=function]>.node-header>label{border-color:var(--category-function-border)}.node-body>.node.list-node[data-category=function],.node-body>.node.map-node[data-category=function],.node-body>.node.object-node[data-category=function]{background-color:var(--category-function-background);border-color:var(--category-function-border)}[data-category=pool].node-header>label,[data-category=pool]>.node-body>.node>.node-header>label,[data-category=pool]>.node-header>label{background-color:var(--category-pool)}[data-category=pool].node-header>label,[data-category=pool]>.node-body,[data-category=pool]>.node-body>.node>.node-header>:not(.selected),[data-category=pool]>.node-header>:not(.selected),[data-category=pool]>.node-header>label{border-color:var(--category-pool-border)}.node-body>.node.list-node[data-category=pool],.node-body>.node.map-node[data-category=pool],.node-body>.node.object-node[data-category=pool]{background-color:var(--category-pool-background);border-color:var(--category-pool-border)} \ No newline at end of file diff --git a/assets/vendor.18ce7a46.js.map b/assets/vendor.18ce7a46.js.map deleted file mode 100644 index f0f4dd63..00000000 --- a/assets/vendor.18ce7a46.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vendor.18ce7a46.js","sources":["../../node_modules/preact/dist/preact.module.js","../../node_modules/preact-router/dist/preact-router.es.js","../../node_modules/preact/hooks/dist/hooks.module.js","../../node_modules/@mcschema/core/lib/model/Path.js","../../node_modules/@mcschema/core/lib/model/Errors.js","../../node_modules/@mcschema/core/lib/utils.js","../../node_modules/@mcschema/core/lib/model/DataModel.js","../../node_modules/@mcschema/core/lib/nodes/Node.js","../../node_modules/@mcschema/core/lib/nodes/BooleanNode.js","../../node_modules/@mcschema/core/lib/nodes/ListNode.js","../../node_modules/@mcschema/core/lib/nodes/SwitchNode.js","../../node_modules/@mcschema/core/lib/nodes/ChoiceNode.js","../../node_modules/@mcschema/core/lib/nodes/MapNode.js","../../node_modules/@mcschema/core/lib/nodes/NumberNode.js","../../node_modules/@mcschema/core/lib/nodes/ObjectNode.js","../../node_modules/@mcschema/core/lib/nodes/Reference.js","../../node_modules/@mcschema/core/lib/nodes/StringNode.js","../../node_modules/@mcschema/core/lib/Hook.js","../../node_modules/@mcschema/core/lib/Registries.js","../../node_modules/@mcschema/core/lib/ValidationOption.js","../../node_modules/@mcschema/core/lib/index.js","../../node_modules/pako/dist/pako.esm.mjs","../../node_modules/crypt/crypt.js","../../node_modules/charenc/charenc.js","../../node_modules/is-buffer/index.js","../../node_modules/md5/md5.js","../../node_modules/deepslate/dist/deepslate.esm.js","../../node_modules/deepslate-rs/deepslate_rs.js","../../node_modules/deepslate-rs/deepslate_rs_bg.wasm?url","../../node_modules/@mcschema/java-1.15/lib/Collections.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Common.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Predicates.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Advancement.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Condition.js","../../node_modules/@mcschema/java-1.15/lib/LootContext.js","../../node_modules/@mcschema/java-1.15/lib/schemas/LootTable.js","../../node_modules/@mcschema/java-1.15/lib/schemas/PackMcmeta.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Recipe.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Tags.js","../../node_modules/@mcschema/java-1.15/lib/schemas/TextComponent.js","../../node_modules/@mcschema/java-1.15/lib/schemas/index.js","../../node_modules/@mcschema/java-1.15/lib/index.js","../../node_modules/@mcschema/java-1.16/lib/Collections.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Common.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Advancement.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Condition.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Dimension.js","../../node_modules/@mcschema/java-1.16/lib/schemas/DimensionType.js","../../node_modules/@mcschema/java-1.16/lib/LootContext.js","../../node_modules/@mcschema/java-1.16/lib/schemas/LootTable.js","../../node_modules/@mcschema/java-1.16/lib/schemas/PackMcmeta.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Predicates.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Recipe.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Tags.js","../../node_modules/@mcschema/java-1.16/lib/schemas/TextComponent.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/Biome.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/Carver.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/Decorator.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/ProcessorList.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/Feature.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/NoiseSettings.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/StructureFeature.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/SurfaceBuilder.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/TemplatePool.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/index.js","../../node_modules/@mcschema/java-1.16/lib/schemas/WorldSettings.js","../../node_modules/@mcschema/java-1.16/lib/schemas/index.js","../../node_modules/@mcschema/java-1.16/lib/index.js","../../node_modules/@mcschema/java-1.17/lib/Collections.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Advancement.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Common.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Condition.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Dimension.js","../../node_modules/@mcschema/java-1.17/lib/schemas/DimensionType.js","../../node_modules/@mcschema/java-1.17/lib/schemas/ItemModifier.js","../../node_modules/@mcschema/java-1.17/lib/LootContext.js","../../node_modules/@mcschema/java-1.17/lib/schemas/LootTable.js","../../node_modules/@mcschema/java-1.17/lib/schemas/PackMcmeta.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Predicates.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Recipe.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Tags.js","../../node_modules/@mcschema/java-1.17/lib/schemas/TextComponent.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/Biome.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/Carver.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/Decorator.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/ProcessorList.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/Feature.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/NoiseSettings.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/StructureFeature.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/SurfaceBuilder.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/TemplatePool.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/index.js","../../node_modules/@mcschema/java-1.17/lib/schemas/WorldSettings.js","../../node_modules/@mcschema/java-1.17/lib/schemas/index.js","../../node_modules/@mcschema/java-1.17/lib/index.js","../../node_modules/@mcschema/java-1.18/lib/Collections.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Advancement.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Common.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Condition.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Dimension.js","../../node_modules/@mcschema/java-1.18/lib/schemas/DimensionType.js","../../node_modules/@mcschema/java-1.18/lib/schemas/ItemModifier.js","../../node_modules/@mcschema/java-1.18/lib/LootContext.js","../../node_modules/@mcschema/java-1.18/lib/schemas/LootTable.js","../../node_modules/@mcschema/java-1.18/lib/schemas/PackMcmeta.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Predicates.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Recipe.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Tags.js","../../node_modules/@mcschema/java-1.18/lib/schemas/TextComponent.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/Biome.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/Carver.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/Decorator.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/ProcessorList.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/Feature.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/NoiseSettings.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/StructureFeature.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/SurfaceRule.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/TemplatePool.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/index.js","../../node_modules/@mcschema/java-1.18/lib/schemas/WorldSettings.js","../../node_modules/@mcschema/java-1.18/lib/schemas/index.js","../../node_modules/@mcschema/java-1.18/lib/index.js","../../node_modules/rfdc/index.js","../../node_modules/preact/compat/dist/compat.module.js","../../node_modules/howler/dist/howler.js"],"sourcesContent":["var n,l,u,i,t,o,r={},f=[],e=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function c(n,l){for(var u in l)n[u]=l[u];return n}function s(n){var l=n.parentNode;l&&l.removeChild(n)}function a(n,l,u){var i,t,o,r=arguments,f={};for(o in l)\"key\"==o?i=l[o]:\"ref\"==o?t=l[o]:f[o]=l[o];if(arguments.length>3)for(u=[u],o=3;o0?v(k.type,k.props,k.key,null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(_=A[h])||_&&k.key==_.key&&k.type===_.type)A[h]=void 0;else for(p=0;p3)for(u=[u],o=3;o b.rank) ? -1 :\n\t\t\t\t(a.index - b.index)\n\t);\n}\n\n// filter out VNodes without attributes (which are unrankeable), and add `index`/`rank` properties to be used in sorting.\nfunction prepareVNodeForRanking(vnode, index) {\n\tvnode.index = index;\n\tvnode.rank = rankChild(vnode);\n\treturn vnode.props;\n}\n\nfunction segmentize(url) {\n\treturn url.replace(/(^\\/+|\\/+$)/g, '').split('/');\n}\n\nfunction rankSegment(segment) {\n\treturn segment.charAt(0)==':' ? (1 + '*+?'.indexOf(segment.charAt(segment.length-1))) || 4 : 5;\n}\n\nfunction rank(path) {\n\treturn segmentize(path).map(rankSegment).join('');\n}\n\nfunction rankChild(vnode) {\n\treturn vnode.props.default ? 0 : rank(vnode.props.path);\n}\n\nvar customHistory = null;\n\nvar ROUTERS = [];\n\nvar subscribers = [];\n\nvar EMPTY = {};\n\nfunction setUrl(url, type) {\n\tif ( type === void 0 ) type='push';\n\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tvar url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn (\"\" + (url.pathname || '') + (url.search || ''));\n}\n\n\n\nfunction route(url, replace) {\n\tif ( replace === void 0 ) replace=false;\n\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (var i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) { return true; }\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tvar didRoute = false;\n\tfor (var i=0; i 0;\n\t};\n\n\t/** Re-render children with a new URL to match against. */\n\tRouter.prototype.routeTo = function routeTo (url) {\n\t\tthis.setState({ url: url });\n\n\t\tvar didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) { this.forceUpdate(); }\n\n\t\treturn didRoute;\n\t};\n\n\tRouter.prototype.componentWillMount = function componentWillMount () {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t};\n\n\tRouter.prototype.componentDidMount = function componentDidMount () {\n\t\tvar this$1 = this;\n\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen(function (location) {\n\t\t\t\tthis$1.routeTo((\"\" + (location.pathname || '') + (location.search || '')));\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t};\n\n\tRouter.prototype.componentWillUnmount = function componentWillUnmount () {\n\t\tif (typeof this.unlisten==='function') { this.unlisten(); }\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t};\n\n\tRouter.prototype.componentWillUpdate = function componentWillUpdate () {\n\t\tthis.updating = true;\n\t};\n\n\tRouter.prototype.componentDidUpdate = function componentDidUpdate () {\n\t\tthis.updating = false;\n\t};\n\n\tRouter.prototype.getMatchingChildren = function getMatchingChildren (children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( function (vnode) {\n\t\t\t\tvar matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tvar newProps = { url: url, matches: matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t};\n\n\tRouter.prototype.render = function render (ref, ref$1) {\n\t\tvar children = ref.children;\n\t\tvar onChange = ref.onChange;\n\t\tvar url = ref$1.url;\n\n\t\tvar active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tvar current = active[0] || null;\n\n\t\tvar previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl: url,\n\t\t\t\t\tprevious: previous,\n\t\t\t\t\tactive: active,\n\t\t\t\t\tcurrent: current\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t};\n\n\treturn Router;\n}(Component));\n\nvar Link = function (props) { return (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n); };\n\nvar Route = function (props) { return createElement(props.component, props); };\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };export default Router;\n//# sourceMappingURL=preact-router.es.js.map\n","import{options as n}from\"preact\";var t,u,r,o=0,i=[],c=n.__b,f=n.__r,e=n.diffed,a=n.__c,v=n.unmount;function m(t,r){n.__h&&n.__h(u,t,o||r),o=0;var i=u.__H||(u.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({}),i.__[t]}function l(n){return o=1,p(w,n)}function p(n,r,o){var i=m(t++,2);return i.t=n,i.__c||(i.__=[o?o(r):w(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}))}],i.__c=u),i.__}function y(r,o){var i=m(t++,3);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i))}function h(r,o){var i=m(t++,4);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i))}function s(n){return o=5,d(function(){return{current:n}},[])}function _(n,t,u){o=6,h(function(){\"function\"==typeof n?n(t()):n&&(n.current=t())},null==u?u:u.concat(n))}function d(n,u){var r=m(t++,7);return k(r.__H,u)&&(r.__=n(),r.__H=u,r.__h=n),r.__}function A(n,t){return o=8,d(function(){return n},t)}function F(n){var r=u.context[n.__c],o=m(t++,9);return o.__c=n,r?(null==o.__&&(o.__=!0,r.sub(u)),r.props.value):n.__}function T(t,u){n.useDebugValue&&n.useDebugValue(u?u(t):t)}function q(n){var r=m(t++,10),o=l();return r.__=n,u.componentDidCatch||(u.componentDidCatch=function(n){r.__&&r.__(n),o[1](n)}),[o[0],function(){o[1](void 0)}]}function x(){i.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(g),t.__H.__h.forEach(j),t.__H.__h=[]}catch(u){t.__H.__h=[],n.__e(u,t.__v)}}),i=[]}n.__b=function(n){u=null,c&&c(n)},n.__r=function(n){f&&f(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(g),r.__h.forEach(j),r.__h=[])},n.diffed=function(t){e&&e(t);var o=t.__c;o&&o.__H&&o.__H.__h.length&&(1!==i.push(o)&&r===n.requestAnimationFrame||((r=n.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),b&&cancelAnimationFrame(t),setTimeout(n)},r=setTimeout(u,100);b&&(t=requestAnimationFrame(u))})(x)),u=void 0},n.__c=function(t,u){u.some(function(t){try{t.__h.forEach(g),t.__h=t.__h.filter(function(n){return!n.__||j(n)})}catch(r){u.some(function(n){n.__h&&(n.__h=[])}),u=[],n.__e(r,t.__v)}}),a&&a(t,u)},n.unmount=function(t){v&&v(t);var u=t.__c;if(u&&u.__H)try{u.__H.__.forEach(g)}catch(t){n.__e(t,u.__v)}};var b=\"function\"==typeof requestAnimationFrame;function g(n){var t=u;\"function\"==typeof n.__c&&n.__c(),u=t}function j(n){var t=u;n.__c=n.__(),u=t}function k(n,t){return!n||n.length!==t.length||t.some(function(t,u){return t!==n[u]})}function w(n,t){return\"function\"==typeof t?t(n):t}export{l as useState,p as useReducer,y as useEffect,h as useLayoutEffect,s as useRef,_ as useImperativeHandle,d as useMemo,A as useCallback,F as useContext,T as useDebugValue,q as useErrorBoundary};\n//# sourceMappingURL=hooks.module.js.map\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ModelPath = exports.Path = exports.relativePath = void 0;\r\nfunction relativePath(start, relativePath) {\r\n return relativePath.reduce((path, e) => {\r\n if (e === 'pop') {\r\n return path.pop();\r\n }\r\n else {\r\n return path.push(e.push);\r\n }\r\n }, start);\r\n}\r\nexports.relativePath = relativePath;\r\n/**\r\n * Immutable helper class to represent a path in data\r\n */\r\nclass Path {\r\n /**\r\n * @param modelArr Initial array of path model elements. Empty if not given\r\n * @param contextArr Initial array of path context elements. Empty if not given\r\n */\r\n constructor(modelArr, contextArr) {\r\n this.modelArr = modelArr !== null && modelArr !== void 0 ? modelArr : [];\r\n this.contextArr = contextArr !== null && contextArr !== void 0 ? contextArr : [];\r\n }\r\n /**\r\n * The last model element of this path\r\n */\r\n last() {\r\n return this.modelArr[this.modelArr.length - 1];\r\n }\r\n /**\r\n * A new path with the specific sliced module elements\r\n */\r\n slice(start, end) {\r\n return new Path(this.modelArr.slice(start, end), this.contextArr);\r\n }\r\n /**\r\n * A new path with the first model element removed\r\n */\r\n shift() {\r\n return new Path(this.modelArr.slice(1), this.contextArr);\r\n }\r\n /**\r\n * A new path with the last model element removed\r\n */\r\n pop() {\r\n return new Path(this.modelArr.slice(0, -1), this.contextArr);\r\n }\r\n /**\r\n * A new path with an element added at the end\r\n * @param element element to push at the end of the array\r\n */\r\n push(element) {\r\n return this.modelPush(element).contextPush(element);\r\n }\r\n /**\r\n * Push an element exclusivly to the model array\r\n * @param element\r\n */\r\n modelPush(element) {\r\n return new Path([...this.modelArr, element], [...this.contextArr]);\r\n }\r\n /**\r\n * Push an element exclusivly to the context array\r\n * @param element\r\n */\r\n contextPush(element) {\r\n if (typeof element === 'number')\r\n return this.copy();\r\n const newElement = element.startsWith('minecraft:') ? element.slice(10) : element;\r\n return new Path([...this.modelArr], [...this.contextArr, newElement]);\r\n }\r\n copy() {\r\n return new Path([...this.modelArr], [...this.contextArr]);\r\n }\r\n getArray() {\r\n return this.modelArr;\r\n }\r\n /**\r\n * Attaches a model to this path and all paths created from this\r\n * @param model\r\n */\r\n withModel(model) {\r\n return new ModelPath(model, this);\r\n }\r\n getContext() {\r\n return this.contextArr;\r\n }\r\n /**\r\n * Checks path equality\r\n * @param other path to compare\r\n */\r\n equals(other) {\r\n return other.modelArr.length === this.modelArr.length\r\n && other.modelArr.every((v, i) => v === this.modelArr[i]);\r\n }\r\n /**\r\n * Checks if this path starts with another path\r\n * @param other path that this path should start with\r\n */\r\n startsWith(other) {\r\n if (this.modelArr.length < other.modelArr.length)\r\n return false;\r\n return other.modelArr.every((v, i) => v === this.modelArr[i]);\r\n }\r\n /**\r\n * Checks if this path ends with another path\r\n * @param other parent path where this path should end with\r\n */\r\n endsWith(other) {\r\n const offset = this.modelArr.length - other.modelArr.length;\r\n if (offset < 0)\r\n return false;\r\n return other.modelArr.every((v, i) => v === this.modelArr[offset + i]);\r\n }\r\n toString() {\r\n return this.modelArr\r\n .map(e => (typeof e === 'string') ? `.${e}` : `[${e}]`)\r\n .join('')\r\n .replace(/^\\./, '');\r\n }\r\n forEach(fn, thisArg) {\r\n return this.modelArr.forEach(fn, thisArg);\r\n }\r\n}\r\nexports.Path = Path;\r\nclass ModelPath extends Path {\r\n constructor(model, path) {\r\n super(path === null || path === void 0 ? void 0 : path.modelArr, path === null || path === void 0 ? void 0 : path.contextArr);\r\n this.model = model;\r\n }\r\n getModel() {\r\n return this.model;\r\n }\r\n /**\r\n * Gets the data from the model if it was attached\r\n * @returns undefined, if no model was attached\r\n */\r\n get() {\r\n var _a;\r\n return (_a = this.model) === null || _a === void 0 ? void 0 : _a.get(this);\r\n }\r\n /**\r\n * Sets the value to the model if it was attached\r\n */\r\n set(value) {\r\n var _a;\r\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.set(this, value);\r\n }\r\n /**\r\n * A new path with the specific sliced module elements\r\n */\r\n slice(start, end) {\r\n return new ModelPath(this.model, super.slice(start, end));\r\n }\r\n /**\r\n * A new path with the first model element removed\r\n */\r\n shift() {\r\n return new ModelPath(this.model, super.shift());\r\n }\r\n /**\r\n * A new path with the last model element removed\r\n */\r\n pop() {\r\n return new ModelPath(this.model, super.pop());\r\n }\r\n /**\r\n * A new path with an element added at the end\r\n * @param element element to push at the end of the array\r\n */\r\n push(element) {\r\n return this.modelPush(element).contextPush(element);\r\n }\r\n /**\r\n * Push an element exclusivly to the model array\r\n * @param element\r\n */\r\n modelPush(element) {\r\n return new ModelPath(this.model, super.modelPush(element));\r\n }\r\n /**\r\n * Push an element exclusivly to the context array\r\n * @param element\r\n */\r\n contextPush(element) {\r\n return new ModelPath(this.model, super.contextPush(element));\r\n }\r\n copy() {\r\n return new ModelPath(this.model, super.copy());\r\n }\r\n}\r\nexports.ModelPath = ModelPath;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Errors = void 0;\r\n/**\r\n * Collects errors from data paths\r\n */\r\nclass Errors {\r\n constructor() {\r\n this.errors = [];\r\n }\r\n add(path, error, ...params) {\r\n this.errors.push({ path, error, params });\r\n return false;\r\n }\r\n get(path, exact = false) {\r\n return exact ? this.errors.filter(e => e.path.equals(path))\r\n : this.errors.filter(e => e.path.startsWith(path));\r\n }\r\n getAll() {\r\n return this.errors;\r\n }\r\n clear() {\r\n this.errors = [];\r\n }\r\n count() {\r\n return this.errors.length;\r\n }\r\n *[Symbol.iterator]() {\r\n for (const e of this.errors) {\r\n yield e;\r\n }\r\n }\r\n}\r\nexports.Errors = Errors;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.hexId = exports.quoteString = exports.escapeString = void 0;\r\nfunction escapeString(str) {\r\n return str.replace(/(\\\\|\")/g, '\\\\$1');\r\n}\r\nexports.escapeString = escapeString;\r\nfunction quoteString(str) {\r\n return `\"${escapeString(str)}\"`;\r\n}\r\nexports.quoteString = quoteString;\r\nconst dec2hex = (dec) => ('0' + dec.toString(16)).substr(-2);\r\nfunction hexId(length = 12) {\r\n var arr = new Uint8Array(length / 2);\r\n window.crypto.getRandomValues(arr);\r\n return Array.from(arr, dec2hex).join('');\r\n}\r\nexports.hexId = hexId;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DataModel = void 0;\r\nconst Path_1 = require(\"./Path\");\r\nconst Errors_1 = require(\"./Errors\");\r\nconst utils_1 = require(\"../utils\");\r\n/**\r\n * Holding the data linked to a given schema\r\n */\r\nclass DataModel {\r\n /**\r\n * @param schema node to use as schema for this model\r\n */\r\n constructor(schema, options) {\r\n var _a, _b, _c, _d;\r\n this.historyMax = (_a = options === null || options === void 0 ? void 0 : options.historyMax) !== null && _a !== void 0 ? _a : 50;\r\n this.verbose = (_b = options === null || options === void 0 ? void 0 : options.verbose) !== null && _b !== void 0 ? _b : false;\r\n this.wrapLists = (_c = options === null || options === void 0 ? void 0 : options.wrapLists) !== null && _c !== void 0 ? _c : false;\r\n this.schema = schema;\r\n const data = (_d = options === null || options === void 0 ? void 0 : options.initialData) !== null && _d !== void 0 ? _d : schema.default();\r\n this.data = this.wrapLists ? DataModel.wrapLists(data) : data;\r\n this.listeners = [];\r\n this.errors = new Errors_1.Errors();\r\n this.history = [JSON.stringify(this.data)];\r\n this.historyIndex = 0;\r\n }\r\n /**\r\n * Adds a listener to notify when the model is invalidated\r\n * @param listener the listener to be notified\r\n */\r\n addListener(listener) {\r\n this.listeners.push(listener);\r\n }\r\n /**\r\n * Removes a listener from this model\r\n * @param listener the listener to be removed\r\n */\r\n removeListener(listener) {\r\n const index = this.listeners.indexOf(listener);\r\n if (index > -1) {\r\n this.listeners.splice(index, 1);\r\n }\r\n }\r\n /**\r\n * Updates the history and notifies all\r\n * listeners that the model is invalidated\r\n */\r\n invalidate() {\r\n const newHistory = JSON.stringify(this.data);\r\n if (this.history[this.historyIndex] !== newHistory) {\r\n this.historyIndex += 1;\r\n this.history.splice(this.historyIndex, this.historyMax, newHistory);\r\n if (this.history.length > this.historyMax) {\r\n this.history.splice(0, 1);\r\n this.historyIndex -= 1;\r\n }\r\n }\r\n this.silentInvalidate();\r\n }\r\n /**\r\n * Notifies all listeners that the model is invalidated\r\n */\r\n silentInvalidate() {\r\n this.listeners.forEach(l => {\r\n if (l.invalidated)\r\n l.invalidated(this);\r\n if (l.errors)\r\n l.errors(this.errors);\r\n });\r\n }\r\n /**\r\n * Resets the full data and notifies listeners\r\n * @param value new model data\r\n */\r\n reset(value, loose) {\r\n this.data = value;\r\n this.validate(loose);\r\n this.invalidate();\r\n }\r\n /**\r\n * Gets the data at a specified path\r\n * @param path path at which to find the data\r\n * @returns undefined, if the the path does not exist in the data\r\n */\r\n get(path) {\r\n let node = this.data;\r\n path.forEach(e => {\r\n if (node === undefined)\r\n return node;\r\n if (this.wrapLists && typeof e === 'number') {\r\n node = node[e].node;\r\n }\r\n else {\r\n node = node[e];\r\n }\r\n });\r\n return node;\r\n }\r\n /**\r\n * Updates the data on a path. Node will be removed when value is undefined\r\n * @param path path to update\r\n * @param value new data at the specified path\r\n */\r\n set(path, value, silent) {\r\n if (path.getArray().length === 0) {\r\n this.reset(value, true);\r\n return;\r\n }\r\n let node = this.data;\r\n path.pop().forEach(e => {\r\n if (node[e] === undefined || typeof node[e] === 'string' || typeof node[e] === 'number') {\r\n if (this.wrapLists && typeof e === 'number') {\r\n node[e] = { node: {}, id: utils_1.hexId() };\r\n }\r\n else {\r\n node[e] = {};\r\n }\r\n }\r\n if (this.wrapLists && typeof e === 'number') {\r\n node = node[e].node;\r\n }\r\n else {\r\n node = node[e];\r\n }\r\n });\r\n if (node === null)\r\n return;\r\n if (value === undefined || (typeof value === 'number' && isNaN(value))) {\r\n if (typeof path.last() === 'number') {\r\n node.splice(path.last(), 1);\r\n }\r\n else {\r\n delete node[path.last()];\r\n }\r\n }\r\n else if (this.wrapLists && typeof path.last() === 'number') {\r\n node[path.last()] = { node: value, id: utils_1.hexId() };\r\n }\r\n else {\r\n node[path.last()] = value;\r\n }\r\n if (silent)\r\n return;\r\n if (this.verbose) {\r\n console.log('Set', path.toString(), JSON.stringify(value));\r\n }\r\n this.validate(true);\r\n this.invalidate();\r\n }\r\n /**\r\n * Go one step back in history\r\n */\r\n undo() {\r\n if (this.historyIndex > 0) {\r\n this.historyIndex -= 1;\r\n this.data = JSON.parse(this.history[this.historyIndex]);\r\n this.validate(false);\r\n this.silentInvalidate();\r\n }\r\n }\r\n /**\r\n * Go one step forward in history.\r\n */\r\n redo() {\r\n if (this.historyIndex < this.history.length - 1) {\r\n this.historyIndex += 1;\r\n this.data = JSON.parse(this.history[this.historyIndex]);\r\n this.validate(false);\r\n this.silentInvalidate();\r\n }\r\n }\r\n /**\r\n * Uses the schema to check whether the data is valid\r\n */\r\n validate(loose) {\r\n var _a;\r\n const path = new Path_1.Path().withModel(this);\r\n this.errors.clear();\r\n this.data = (_a = this.schema.validate(path, this.data, this.errors, { loose, wrapLists: this.wrapLists })) !== null && _a !== void 0 ? _a : {};\r\n }\r\n error(path, error, ...params) {\r\n const tempErrors = new Errors_1.Errors();\r\n tempErrors.add(path, error, params);\r\n this.listeners.forEach(l => {\r\n if (l.errors)\r\n l.errors(tempErrors);\r\n });\r\n }\r\n static wrapLists(value) {\r\n if (Array.isArray(value)) {\r\n return value.map(v => ({\r\n node: this.wrapLists(v),\r\n id: utils_1.hexId(),\r\n }));\r\n }\r\n else if (typeof value === 'object' && value !== null) {\r\n const res = {};\r\n Object.entries(value).map(([k, v]) => {\r\n res[k] = this.wrapLists(v);\r\n });\r\n return res;\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n static unwrapLists(value) {\r\n if (Array.isArray(value)) {\r\n return value.map(v => this.unwrapLists(v.node));\r\n }\r\n else if (typeof value === 'object' && value !== null) {\r\n const res = {};\r\n Object.entries(value).map(([k, v]) => {\r\n res[k] = this.unwrapLists(v);\r\n });\r\n return res;\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n}\r\nexports.DataModel = DataModel;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Keep = exports.Opt = exports.Has = exports.Mod = exports.Base = void 0;\r\nexports.Base = ({\r\n type: () => 'base',\r\n category: () => undefined,\r\n default: () => undefined,\r\n enabled: () => true,\r\n keep: () => false,\r\n optional: () => false,\r\n navigate() { return this; },\r\n pathPush: (p) => p,\r\n suggest: () => [],\r\n validate: (_, v) => v,\r\n validationOption: () => undefined,\r\n hook(hook, path, ...args) { return hook.base({ node: this }, path, ...args); },\r\n canUpdate: () => false,\r\n update: () => []\r\n});\r\nexports.Mod = (node, mods) => ({\r\n ...node, ...(typeof mods === 'function' ? mods(node) : mods)\r\n});\r\nexports.Has = (key, node) => exports.Mod(node, {\r\n enabled: (p) => p.push(key).get() !== undefined\r\n});\r\nfunction Opt(node) {\r\n return {\r\n ...node,\r\n optional: () => true\r\n };\r\n}\r\nexports.Opt = Opt;\r\nfunction Keep(node) {\r\n return {\r\n ...node,\r\n keep: () => true\r\n };\r\n}\r\nexports.Keep = Keep;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BooleanNode = void 0;\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nconst Node_1 = require(\"./Node\");\r\n/**\r\n * Boolean node with two buttons for true/false\r\n */\r\nexports.BooleanNode = () => {\r\n return {\r\n ...Node_1.Base,\r\n type: () => 'boolean',\r\n default: () => false,\r\n suggest: () => ['false', 'true'],\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'boolean') {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (typeof value !== 'boolean' || value === undefined) {\r\n errors.add(path, 'error.expected_boolean');\r\n }\r\n return value;\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.boolean) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this }, path, ...args);\r\n }\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ListNode = void 0;\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nconst Node_1 = require(\"./Node\");\r\nexports.ListNode = (children, config) => {\r\n var _a, _b;\r\n const min = (_a = config === null || config === void 0 ? void 0 : config.minLength) !== null && _a !== void 0 ? _a : 0;\r\n const max = (_b = config === null || config === void 0 ? void 0 : config.maxLength) !== null && _b !== void 0 ? _b : Infinity;\r\n const between = (config === null || config === void 0 ? void 0 : config.minLength) && (config === null || config === void 0 ? void 0 : config.maxLength);\r\n return ({\r\n ...Node_1.Base,\r\n type: () => 'list',\r\n default: () => (config === null || config === void 0 ? void 0 : config.minLength) ? [...Array(min)].map(_ => children.default()) : [],\r\n navigate(path, index) {\r\n const nextIndex = index + 1;\r\n const pathElements = path.getArray();\r\n if (pathElements.length <= nextIndex) {\r\n return this;\r\n }\r\n return children.navigate(path, nextIndex);\r\n },\r\n pathPush(path, index) {\r\n return path.push(parseInt(index.toString())).contextPush('entry');\r\n },\r\n validate(path, value, errors, options) {\r\n if (options.loose && !Array.isArray(value)) {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (!Array.isArray(value)) {\r\n errors.add(path, 'error.expected_list');\r\n return value;\r\n }\r\n else if (between && (value.length < min || value.length > max)) {\r\n if (min === max) {\r\n errors.add(path, 'error.invalid_list_range.exact', value.length, min);\r\n }\r\n else {\r\n errors.add(path, 'error.invalid_list_range.between', value.length, min, max);\r\n }\r\n }\r\n else if (value.length < min) {\r\n errors.add(path, 'error.invalid_list_range.smaller', value.length, min);\r\n }\r\n else if (value.length > max) {\r\n errors.add(path, 'error.invalid_list_range.larger', value.length, max);\r\n }\r\n return value.map((obj, index) => {\r\n const newObj = children.validate(path.push(index), options.wrapLists ? obj.node : obj, errors, options);\r\n return options.wrapLists ? { node: newObj, id: obj.id } : newObj;\r\n });\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.list) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, children, config: config !== null && config !== void 0 ? config : {} }, path, ...args);\r\n }\r\n });\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwitchNode = void 0;\r\nconst Node_1 = require(\"./Node\");\r\n/**\r\n * Node that allows multiple types\r\n */\r\nexports.SwitchNode = (cases) => {\r\n return {\r\n ...Node_1.Base,\r\n type(path) {\r\n return this.activeCase(path, true)\r\n .node.type(path);\r\n },\r\n category(path) {\r\n return this.activeCase(path, true)\r\n .node.category(path);\r\n },\r\n default: () => cases[0].node.default(),\r\n navigate(path, index) {\r\n var _a;\r\n const nextIndex = index + 1;\r\n return (_a = this.activeCase(path.slice(0, nextIndex))) === null || _a === void 0 ? void 0 : _a.node.navigate(path, index);\r\n },\r\n pathPush(path, key) {\r\n var _a, _b;\r\n return (_b = (_a = this.activeCase(path)) === null || _a === void 0 ? void 0 : _a.node.pathPush(path, key)) !== null && _b !== void 0 ? _b : path;\r\n },\r\n suggest(path, value) {\r\n var _a, _b;\r\n return (_b = (_a = this.activeCase(path)) === null || _a === void 0 ? void 0 : _a.node.suggest(path, value)) !== null && _b !== void 0 ? _b : cases\r\n .filter(c => c.match(path))\r\n .map(c => c.node.suggest(path, value))\r\n .reduce((p, c) => p.concat(c));\r\n },\r\n validate(path, value, errors, options) {\r\n let c = this.activeCase(path);\r\n if (c === undefined) {\r\n return value;\r\n }\r\n return c.node.validate(path, value, errors, options);\r\n },\r\n validationOption(path) {\r\n var _a;\r\n return (_a = this.activeCase(path)) === null || _a === void 0 ? void 0 : _a.node.validationOption(path);\r\n },\r\n activeCase(path, fallback) {\r\n const sorter = (a, b) => { var _a, _b; return ((_a = b.priority) !== null && _a !== void 0 ? _a : 0) - ((_b = a.priority) !== null && _b !== void 0 ? _b : 0); };\r\n const matchedCases = cases.filter(c => c.match(path)).sort(sorter);\r\n if (fallback && matchedCases.length === 0) {\r\n return cases.sort(sorter)[0];\r\n }\r\n return (matchedCases.length > 0 ? matchedCases[0] : undefined);\r\n },\r\n hook(hook, path, ...args) {\r\n return this.activeCase(path, true)\r\n .node.hook(hook, path, ...args);\r\n },\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ObjectOrPreset = exports.StringOrList = exports.ObjectOrList = exports.ChoiceNode = void 0;\r\nconst ListNode_1 = require(\"./ListNode\");\r\nconst SwitchNode_1 = require(\"./SwitchNode\");\r\n/**\r\n * Node that allows multiple types\r\n */\r\nexports.ChoiceNode = (choices, config) => {\r\n const isValid = (choice, value) => {\r\n if (choice.match) {\r\n return choice.match(value);\r\n }\r\n switch (choice.type) {\r\n case 'list': return Array.isArray(value);\r\n case 'object': return typeof value === 'object' && !Array.isArray(value);\r\n default: return typeof value === choice.type;\r\n }\r\n };\r\n const switchNode = SwitchNode_1.SwitchNode(choices.map(c => ({\r\n type: c.type,\r\n priority: c.priority,\r\n match: (path) => isValid(c, path.get()),\r\n node: c.node\r\n })));\r\n return {\r\n ...switchNode,\r\n validate(path, value, errors, options) {\r\n let choice = switchNode.activeCase(path, true);\r\n if (choice.node.optional()) {\r\n return value;\r\n }\r\n return choice.node.validate(path, value, errors, options);\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.choice) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, choices, config: config !== null && config !== void 0 ? config : {}, switchNode }, path, ...args);\r\n }\r\n };\r\n};\r\nconst XOrList = (x) => ((node, config) => {\r\n return exports.ChoiceNode([\r\n {\r\n type: x,\r\n node,\r\n change: v => { var _a; return (_a = v[0]) !== null && _a !== void 0 ? _a : node.default(); }\r\n },\r\n {\r\n type: 'list',\r\n node: ListNode_1.ListNode(node),\r\n change: v => v ? [v] : []\r\n }\r\n ], config);\r\n});\r\nexports.ObjectOrList = XOrList('object');\r\nexports.StringOrList = XOrList('string');\r\nexports.ObjectOrPreset = (presetNode, objectNode, presets) => {\r\n return exports.ChoiceNode([\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: presetNode,\r\n change: v => Object.keys(presets)[0]\r\n },\r\n {\r\n type: 'object',\r\n node: objectNode,\r\n change: v => { var _a; return (_a = presets[v]) !== null && _a !== void 0 ? _a : presets[Object.keys(presets)[0]]; }\r\n }\r\n ]);\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MapNode = void 0;\r\nconst Node_1 = require(\"./Node\");\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\n/**\r\n * Map nodes similar to list nodes, but a string key is required to add children\r\n */\r\nexports.MapNode = (keys, children, config) => {\r\n return {\r\n ...Node_1.Base,\r\n type: () => 'map',\r\n default: () => ({}),\r\n navigate(path, index) {\r\n const nextIndex = index + 1;\r\n const pathElements = path.getArray();\r\n if (pathElements.length <= nextIndex) {\r\n return this;\r\n }\r\n return children.navigate(path, nextIndex);\r\n },\r\n pathPush(path, key) {\r\n return path.modelPush(key);\r\n },\r\n suggest: (path) => keys.suggest(path, ''),\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'object') {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (value === null || typeof value !== 'object') {\r\n errors.add(path, 'error.expected_object');\r\n return value;\r\n }\r\n let res = {};\r\n Object.keys(value).forEach(k => {\r\n keys.validate(path, k, errors, options);\r\n res[k] = children.validate(path.push(k), value[k], errors, options);\r\n });\r\n return res;\r\n },\r\n validationOption(path) {\r\n var _a;\r\n return (_a = config === null || config === void 0 ? void 0 : config.validation) !== null && _a !== void 0 ? _a : keys.validationOption(path.push(''));\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.map) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, keys, children, config: config !== null && config !== void 0 ? config : {} }, path, ...args);\r\n }\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NumberNode = void 0;\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nconst Node_1 = require(\"./Node\");\r\nexports.NumberNode = (config) => {\r\n var _a, _b, _c;\r\n const integer = (config === null || config === void 0 ? void 0 : config.color) ? true : (_a = config === null || config === void 0 ? void 0 : config.integer) !== null && _a !== void 0 ? _a : false;\r\n const min = (config === null || config === void 0 ? void 0 : config.color) ? 0 : (_b = config === null || config === void 0 ? void 0 : config.min) !== null && _b !== void 0 ? _b : -Infinity;\r\n const max = (config === null || config === void 0 ? void 0 : config.color) ? 16777215 : (_c = config === null || config === void 0 ? void 0 : config.max) !== null && _c !== void 0 ? _c : Infinity;\r\n const between = (config === null || config === void 0 ? void 0 : config.min) !== undefined && (config === null || config === void 0 ? void 0 : config.max) !== undefined;\r\n return {\r\n ...Node_1.Base,\r\n type: () => 'number',\r\n default: () => min > 0 ? min : 0,\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'number') {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (typeof value !== 'number') {\r\n errors.add(path, 'error.expected_number');\r\n }\r\n else if (integer && !Number.isInteger(value)) {\r\n errors.add(path, 'error.expected_integer');\r\n }\r\n else if (between && (value < min || value > max)) {\r\n errors.add(path, 'error.invalid_number_range.between', value, min, max);\r\n }\r\n else if (value < min) {\r\n errors.add(path, 'error.invalid_number_range.smaller', value, min);\r\n }\r\n else if (value > max) {\r\n errors.add(path, 'error.invalid_number_range.larger', value, max);\r\n }\r\n return value;\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.number) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, integer, min, max, between, config: config !== null && config !== void 0 ? config : {} }, path, ...args);\r\n }\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ObjectNode = exports.Case = exports.Switch = void 0;\r\nconst Node_1 = require(\"./Node\");\r\nconst Path_1 = require(\"../model/Path\");\r\nconst Errors_1 = require(\"../model/Errors\");\r\nconst utils_1 = require(\"../utils\");\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nexports.Switch = Symbol('switch');\r\nexports.Case = Symbol('case');\r\nexports.ObjectNode = (fields, config) => {\r\n const { [exports.Switch]: filter, [exports.Case]: cases, ...defaultFields } = fields;\r\n const getActiveFields = (path) => {\r\n if (filter === undefined)\r\n return defaultFields;\r\n const switchValue = Path_1.relativePath(path, filter).get();\r\n const activeCase = cases[switchValue];\r\n return { ...defaultFields, ...activeCase };\r\n };\r\n const getChildModelPath = (path, childKey) => {\r\n var _a;\r\n const switchValue = filter ? Path_1.relativePath(path, filter).get() : undefined;\r\n const caseFields = filter ? ((_a = cases[switchValue]) !== null && _a !== void 0 ? _a : {}) : {};\r\n const caseKeys = Object.keys(caseFields);\r\n const pathWithContext = (config === null || config === void 0 ? void 0 : config.context) ?\r\n new Path_1.ModelPath(path.getModel(), new Path_1.Path(path.getArray(), [config.context])) : path;\r\n const pathWithFilter = !(config === null || config === void 0 ? void 0 : config.disableSwitchContext) && switchValue && caseKeys.includes(childKey) ?\r\n pathWithContext.contextPush(switchValue) : pathWithContext;\r\n return pathWithFilter.push(childKey);\r\n };\r\n return ({\r\n ...Node_1.Base,\r\n type: () => 'object',\r\n category: () => config === null || config === void 0 ? void 0 : config.category,\r\n default: () => ({}),\r\n keep() {\r\n return this.optional();\r\n },\r\n navigate(path, index) {\r\n const nextIndex = index + 1;\r\n const pathElements = path.getArray();\r\n if (pathElements.length <= nextIndex) {\r\n return this;\r\n }\r\n const activeFields = getActiveFields(path.slice(0, nextIndex));\r\n const node = activeFields[pathElements[nextIndex]];\r\n return node === null || node === void 0 ? void 0 : node.navigate(path, nextIndex);\r\n },\r\n pathPush(path, key) {\r\n return getChildModelPath(path, key.toString());\r\n },\r\n suggest(path, value) {\r\n const activeFields = getActiveFields(path);\r\n const existingKeys = Object.keys(typeof value === 'object' ? value : {});\r\n return Object.keys(activeFields)\r\n .filter(k => activeFields[k].enabled(path))\r\n .filter(k => !existingKeys.includes(k))\r\n .map(utils_1.quoteString);\r\n },\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'object') {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (typeof value !== 'object' || value === null) {\r\n errors.add(path, 'error.expected_object');\r\n return value;\r\n }\r\n let activeFields = defaultFields;\r\n if (filter) {\r\n const filterPath = Path_1.relativePath(path, filter);\r\n let switchValue = filterPath.get();\r\n if (path.equals(filterPath.pop())) {\r\n const filterField = filterPath.last();\r\n switchValue = defaultFields[filterField].validate(path.push(filterField), value[filterField], new Errors_1.Errors(), options);\r\n }\r\n activeFields = { ...activeFields, ...cases[switchValue] };\r\n }\r\n const activeKeys = Object.keys(activeFields);\r\n const forcedKeys = activeKeys.filter(k => !activeFields[k].optional());\r\n const keys = new Set([...forcedKeys, ...Object.keys(value)]);\r\n let res = {};\r\n keys.forEach(k => {\r\n if (activeKeys.includes(k)) {\r\n if (!activeFields[k].enabled(path))\r\n return;\r\n const newValue = activeFields[k].validate(path.push(k), value[k], errors, options);\r\n if (!activeFields[k].keep() && activeFields[k].optional()\r\n && (newValue === undefined\r\n || (Array.isArray(newValue) && newValue.length === 0)\r\n || (newValue.constructor === Object && Object.keys(newValue).length === 0))) {\r\n delete res[k];\r\n }\r\n else {\r\n res[k] = newValue;\r\n path.getModel().set(path.push(k), newValue, true);\r\n }\r\n }\r\n else {\r\n res[k] = value[k];\r\n }\r\n });\r\n return res;\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.object) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, fields: defaultFields, config: config !== null && config !== void 0 ? config : {}, filter, cases, getActiveFields, getChildModelPath }, path, ...args);\r\n }\r\n });\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Reference = void 0;\r\nexports.Reference = (schemas, schema) => ({\r\n type(path) {\r\n return schemas.get(schema).type.bind(this)(path);\r\n },\r\n category(path) {\r\n return schemas.get(schema).category.bind(this)(path);\r\n },\r\n default() {\r\n return schemas.get(schema).default.bind(this)();\r\n },\r\n transform(path, value) {\r\n return schemas.get(schema).transform(path, value);\r\n },\r\n enabled(path) {\r\n return schemas.get(schema).enabled.bind(this)(path);\r\n },\r\n keep() {\r\n return schemas.get(schema).keep.bind(this)();\r\n },\r\n optional() {\r\n return schemas.get(schema).optional.bind(this)();\r\n },\r\n navigate(path, index) {\r\n return schemas.get(schema).navigate.bind(this)(path, index);\r\n },\r\n pathPush(path, key) {\r\n return schemas.get(schema).pathPush.bind(this)(path, key);\r\n },\r\n suggest(path, value) {\r\n return schemas.get(schema).suggest.bind(this)(path, value);\r\n },\r\n validate(path, value, errors, options) {\r\n return schemas.get(schema).validate.bind(this)(path, value, errors, options);\r\n },\r\n validationOption(path) {\r\n return schemas.get(schema).validationOption.bind(this)(path);\r\n },\r\n hook(hook, path, ...args) {\r\n return schemas.get(schema).hook.bind(this)(hook, path, ...args);\r\n },\r\n activeCase(path, fallback) {\r\n return schemas.get(schema).activeCase.bind(this)(path, fallback);\r\n },\r\n canUpdate(path, value) {\r\n return schemas.get(schema).canUpdate.bind(this)(path, value);\r\n },\r\n update(path, value) {\r\n return schemas.get(schema).update.bind(this)(path, value);\r\n }\r\n});\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StringNode = void 0;\r\nconst Node_1 = require(\"./Node\");\r\nconst utils_1 = require(\"../utils\");\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nconst isEnum = (value) => {\r\n var _a;\r\n return !!((_a = value) === null || _a === void 0 ? void 0 : _a.enum);\r\n};\r\nconst isValidator = (value) => {\r\n var _a;\r\n return !!((_a = value) === null || _a === void 0 ? void 0 : _a.validator);\r\n};\r\n/**\r\n * Simple string node with one text field\r\n */\r\nexports.StringNode = (collections, config) => {\r\n const getValues = isEnum(config)\r\n ? ((typeof config.enum === 'string')\r\n ? () => { var _a; return (_a = collections === null || collections === void 0 ? void 0 : collections.get(config.enum)) !== null && _a !== void 0 ? _a : []; }\r\n : () => config.enum)\r\n : (((config === null || config === void 0 ? void 0 : config.validator) === 'resource')\r\n ? ((typeof config.params.pool === 'string')\r\n ? (config.params.pool.startsWith('$')\r\n ? () => { var _a; return (_a = collections === null || collections === void 0 ? void 0 : collections.get(config.params.pool.slice(1))) !== null && _a !== void 0 ? _a : []; }\r\n : () => { var _a; return (_a = collections === null || collections === void 0 ? void 0 : collections.get(config.params.pool)) !== null && _a !== void 0 ? _a : []; })\r\n : () => config.params.pool)\r\n : () => []);\r\n return {\r\n ...Node_1.Base,\r\n type: () => 'string',\r\n default: () => '',\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'string') {\r\n value = (options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default()) || undefined;\r\n }\r\n if (typeof value !== 'string') {\r\n errors.add(path, 'error.expected_string');\r\n return value;\r\n }\r\n if (isValidator(config)) {\r\n if (config.validator === 'resource' && value.length > 0 && !value.includes(':')) {\r\n value = value[0] === '#'\r\n ? '#minecraft:' + value.slice(1)\r\n : 'minecraft:' + value;\r\n }\r\n if (config.validator === 'resource' && ((typeof config.params.pool === 'string' && config.params.pool.startsWith('$')) ||\r\n (config.params.allowTag && value[0] === '#') ||\r\n config.params.isDefinition ||\r\n config.params.allowUnknown)) {\r\n return value;\r\n }\r\n }\r\n if ((isEnum(config) && config.additional)) {\r\n return value;\r\n }\r\n const values = getValues();\r\n if (values.length > 0 && !values.includes(value)) {\r\n errors.add(path, 'error.invalid_enum_option', value);\r\n }\r\n return value;\r\n },\r\n suggest: () => getValues().map(utils_1.quoteString),\r\n validationOption() {\r\n return isValidator(config) ? config : undefined;\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.string) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, getValues, config }, path, ...args);\r\n }\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CollectionRegistry = exports.SchemaRegistry = void 0;\r\n/**\r\n * Registry for schemas\r\n */\r\nclass SchemaRegistry {\r\n constructor() {\r\n this.registry = {};\r\n }\r\n register(id, node) {\r\n this.registry[id] = node;\r\n }\r\n get(id) {\r\n const node = this.registry[id];\r\n if (node === undefined) {\r\n console.error(`Tried to access schema \"${id}\", but that doesn't exist.`);\r\n }\r\n return node;\r\n }\r\n}\r\nexports.SchemaRegistry = SchemaRegistry;\r\n/**\r\n * Registry for collections\r\n */\r\nclass CollectionRegistry {\r\n constructor() {\r\n this.registry = {};\r\n }\r\n register(id, list) {\r\n this.registry[id] = list;\r\n }\r\n get(id) {\r\n const list = this.registry[id];\r\n if (list === undefined) {\r\n console.warn(`Tried to access collection \"${id}\", but that doesn't exist.`);\r\n }\r\n return list !== null && list !== void 0 ? list : [];\r\n }\r\n}\r\nexports.CollectionRegistry = CollectionRegistry;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__exportStar(require(\"./model/DataModel\"), exports);\r\n__exportStar(require(\"./model/Path\"), exports);\r\n__exportStar(require(\"./model/Errors\"), exports);\r\n__exportStar(require(\"./nodes/Node\"), exports);\r\n__exportStar(require(\"./nodes/BooleanNode\"), exports);\r\n__exportStar(require(\"./nodes/ChoiceNode\"), exports);\r\n__exportStar(require(\"./nodes/ListNode\"), exports);\r\n__exportStar(require(\"./nodes/MapNode\"), exports);\r\n__exportStar(require(\"./nodes/NumberNode\"), exports);\r\n__exportStar(require(\"./nodes/ObjectNode\"), exports);\r\n__exportStar(require(\"./nodes/Reference\"), exports);\r\n__exportStar(require(\"./nodes/StringNode\"), exports);\r\n__exportStar(require(\"./nodes/SwitchNode\"), exports);\r\n__exportStar(require(\"./Hook\"), exports);\r\n__exportStar(require(\"./Registries\"), exports);\r\n__exportStar(require(\"./ValidationOption\"), exports);\r\n","\n/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED$1 = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN$1 = 2;\n\n/*============================================================================*/\n\n\nfunction zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH$1 = 3;\nconst MAX_MATCH$1 = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES$1 = 30;\n/* number of distance codes */\n\nconst BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\n\nconst MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES$1);\nzero$1(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES$1);\nzero$1(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) =>\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS$1; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES$1; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES$1; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES$1; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES$1; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nconst copy_block = (s, buf, len, header) =>\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n s.pending_buf.set(s.window.subarray(buf, buf + len), s.pending);\n s.pending += len;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) =>\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let lx = 0; /* running index in l_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE$1;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) =>\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let black_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS$1; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init$1 = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block$1 = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align$1 = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nconst _tr_flush_block$1 = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN$1) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block$1(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally$1 = (s, dist, lc) =>\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //let out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n};\n\nvar _tr_init_1 = _tr_init$1;\nvar _tr_stored_block_1 = _tr_stored_block$1;\nvar _tr_flush_block_1 = _tr_flush_block$1;\nvar _tr_tally_1 = _tr_tally$1;\nvar _tr_align_1 = _tr_align$1;\n\nvar trees = {\n\t_tr_init: _tr_init_1,\n\t_tr_stored_block: _tr_stored_block_1,\n\t_tr_flush_block: _tr_flush_block_1,\n\t_tr_tally: _tr_tally_1,\n\t_tr_align: _tr_align_1\n};\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nvar adler32_1 = adler32;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nvar crc32_1 = crc32;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants$2 = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;\n\n\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1,\n Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1,\n Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n Z_UNKNOWN,\n Z_DEFLATED: Z_DEFLATED$2\n} = constants$2;\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES = 30;\n/* number of distance codes */\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42;\nconst EXTRA_STATE = 69;\nconst NAME_STATE = 73;\nconst COMMENT_STATE = 91;\nconst HCRC_STATE = 103;\nconst BUSY_STATE = 113;\nconst FINISH_STATE = 666;\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = messages[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32_1(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32_1(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n let max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n const max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n};\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED$2; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nconst deflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH$2;\n _tr_init(s);\n return Z_OK$3;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK$3) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$2; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR$2; }\n strm.state.gzhead = head;\n return Z_OK$3;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR$2;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION$1) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);\n};\n\n\nconst deflate$2 = (strm, flush) => {\n\n let beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK$1 || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH$3)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);\n }\n\n s.strm = strm; /* just in case */\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK$3;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH$3) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) {\n let bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK$3;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH$1) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK$3;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH$3) { return Z_OK$3; }\n if (s.wrap <= 0) { return Z_STREAM_END$3; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR$2;\n }\n\n const status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR$2;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK$3;\n};\n\n\nvar deflateInit_1 = deflateInit;\nvar deflateInit2_1 = deflateInit2;\nvar deflateReset_1 = deflateReset;\nvar deflateResetKeep_1 = deflateResetKeep;\nvar deflateSetHeader_1 = deflateSetHeader;\nvar deflate_2$1 = deflate$2;\nvar deflateEnd_1 = deflateEnd;\nvar deflateSetDictionary_1 = deflateSetDictionary;\nvar deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n\nvar deflate_1$2 = {\n\tdeflateInit: deflateInit_1,\n\tdeflateInit2: deflateInit2_1,\n\tdeflateReset: deflateReset_1,\n\tdeflateResetKeep: deflateResetKeep_1,\n\tdeflateSetHeader: deflateSetHeader_1,\n\tdeflate: deflate_2$1,\n\tdeflateEnd: deflateEnd_1,\n\tdeflateSetDictionary: deflateSetDictionary_1,\n\tdeflateInfo: deflateInfo\n};\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nvar assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nvar flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n\nvar common = {\n\tassign: assign,\n\tflattenChunks: flattenChunks\n};\n\n// String encode/decode helpers\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nvar string2buf = (str) => {\n if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n return new TextEncoder().encode(str);\n }\n\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nvar buf2string = (buf, max) => {\n const len = max || buf.length;\n\n if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n return new TextDecoder().decode(buf.subarray(0, max));\n }\n\n let i, out;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\nvar strings = {\n\tstring2buf: string2buf,\n\tbuf2string: buf2string,\n\tutf8border: utf8border\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nvar zstream = ZStream;\n\nconst toString$1 = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2,\n Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2,\n Z_DEFAULT_COMPRESSION,\n Z_DEFAULT_STRATEGY,\n Z_DEFLATED: Z_DEFLATED$1\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate$1(options) {\n this.options = common.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED$1,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = deflate_1$2.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n if (opt.header) {\n deflate_1$2.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflate_1$2.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = deflate_1$2.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END$2) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = deflate_1$2.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK$2;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK$2) {\n this.result = common.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n const deflator = new Deflate$1(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || messages[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip$1(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\n\nvar Deflate_1$1 = Deflate$1;\nvar deflate_2 = deflate$1;\nvar deflateRaw_1$1 = deflateRaw$1;\nvar gzip_1$1 = gzip$1;\nvar constants$1 = constants$2;\n\nvar deflate_1$1 = {\n\tDeflate: Deflate_1$1,\n\tdeflate: deflate_2,\n\tdeflateRaw: deflateRaw_1$1,\n\tgzip: gzip_1$1,\n\tconstants: constants$1\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD$1 = 30; /* got a data error -- remain here until reset */\nconst TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE$1;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n let base_index = 0;\n// let shoextra; /* extra bits table to use */\n let end; /* use base and extra for symbol > end */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n let extra_index = 0;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES$1 || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES$1) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS$1) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nvar inftrees = inflate_table;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,\n Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR,\n Z_DEFLATED\n} = constants$2;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 1; /* i: waiting for magic header */\nconst FLAGS = 2; /* i: waiting for method and flags (gzip) */\nconst TIME = 3; /* i: waiting for modification time (gzip) */\nconst OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 5; /* i: waiting for extra length (gzip) */\nconst EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nconst NAME = 7; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 8; /* i: waiting for end of comment (gzip) */\nconst HCRC = 9; /* i: waiting for header crc (gzip) */\nconst DICTID = 10; /* i: waiting for dictionary check value */\nconst DICT = 11; /* waiting for inflateSetDictionary() call */\nconst TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 14; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 17; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 18; /* i: waiting for code length code lengths */\nconst CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 20; /* i: same as LEN below, but only first time in */\nconst LEN = 21; /* i: waiting for length/lit/eob code */\nconst LENEXT = 22; /* i: waiting for length extra bits */\nconst DIST = 23; /* i: waiting for distance code */\nconst DISTEXT = 24; /* i: waiting for distance extra bits */\nconst MATCH = 25; /* o: waiting for output space to copy string */\nconst LIT = 26; /* o: waiting for output space to write literal */\nconst CHECK = 27; /* i: waiting for 32-bit check value */\nconst LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 29; /* finished check, done -- remain here until reset */\nconst BAD = 30; /* got a data error -- remain here until reset */\nconst MEM = 31; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate$2 = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32_1(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inffast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR$1;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32_1(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR$1;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n};\n\n\nvar inflateReset_1 = inflateReset;\nvar inflateReset2_1 = inflateReset2;\nvar inflateResetKeep_1 = inflateResetKeep;\nvar inflateInit_1 = inflateInit;\nvar inflateInit2_1 = inflateInit2;\nvar inflate_2$1 = inflate$2;\nvar inflateEnd_1 = inflateEnd;\nvar inflateGetHeader_1 = inflateGetHeader;\nvar inflateSetDictionary_1 = inflateSetDictionary;\nvar inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\n*/\n\nvar inflate_1$2 = {\n\tinflateReset: inflateReset_1,\n\tinflateReset2: inflateReset2_1,\n\tinflateResetKeep: inflateResetKeep_1,\n\tinflateInit: inflateInit_1,\n\tinflateInit2: inflateInit2_1,\n\tinflate: inflate_2$1,\n\tinflateEnd: inflateEnd_1,\n\tinflateGetHeader: inflateGetHeader_1,\n\tinflateSetDictionary: inflateSetDictionary_1,\n\tinflateInfo: inflateInfo\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nvar gzheader = GZheader;\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate$1(options) {\n this.options = common.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = inflate_1$2.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n\n this.header = new gzheader();\n\n inflate_1$2.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate_1$2.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = inflate_1$2.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = inflate_1$2.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n inflate_1$2.inflateReset(strm);\n status = inflate_1$2.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = inflate_1$2.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = common.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err) {\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n const inflator = new Inflate$1(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nvar Inflate_1$1 = Inflate$1;\nvar inflate_2 = inflate$1;\nvar inflateRaw_1$1 = inflateRaw$1;\nvar ungzip$1 = inflate$1;\nvar constants = constants$2;\n\nvar inflate_1$1 = {\n\tInflate: Inflate_1$1,\n\tinflate: inflate_2,\n\tinflateRaw: inflateRaw_1$1,\n\tungzip: ungzip$1,\n\tconstants: constants\n};\n\nconst { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;\n\nconst { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;\n\n\n\nvar Deflate_1 = Deflate;\nvar deflate_1 = deflate;\nvar deflateRaw_1 = deflateRaw;\nvar gzip_1 = gzip;\nvar Inflate_1 = Inflate;\nvar inflate_1 = inflate;\nvar inflateRaw_1 = inflateRaw;\nvar ungzip_1 = ungzip;\nvar constants_1 = constants$2;\n\nvar pako = {\n\tDeflate: Deflate_1,\n\tdeflate: deflate_1,\n\tdeflateRaw: deflateRaw_1,\n\tgzip: gzip_1,\n\tInflate: Inflate_1,\n\tinflate: inflate_1,\n\tinflateRaw: inflateRaw_1,\n\tungzip: ungzip_1,\n\tconstants: constants_1\n};\n\nexport { Deflate_1 as Deflate, Inflate_1 as Inflate, constants_1 as constants, pako as default, deflate_1 as deflate, deflateRaw_1 as deflateRaw, gzip_1 as gzip, inflate_1 as inflate, inflateRaw_1 as inflateRaw, ungzip_1 as ungzip };\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","import t from\"pako\";import e from\"md5\";import{vec3 as i,mat4 as s,glMatrix as n}from\"gl-matrix\";var r;!function(t){t.UP=\"up\",t.DOWN=\"down\",t.NORTH=\"north\",t.EAST=\"east\",t.SOUTH=\"south\",t.WEST=\"west\"}(r||(r={}));const o={[r.UP]:[0,1,0],[r.DOWN]:[0,-1,0],[r.NORTH]:[0,0,-1],[r.EAST]:[1,0,0],[r.SOUTH]:[0,0,1],[r.WEST]:[-1,0,0]};var a;!function(t){t.ALL=[t.UP,t.DOWN,t.NORTH,t.EAST,t.SOUTH,t.WEST],t.normal=function(t){return o[t]}}(r||(r={})),function(t){t.create=function(t,e,i){return[t,e,i]},t.offset=function(t,e,i,s){return[t[0]+e,t[1]+i,t[2]+s]},t.towards=function(e,i){return t.offset(e,...r.normal(i))}}(a||(a={}));const l={end:0,byte:1,short:2,int:3,long:4,float:5,double:6,byteArray:7,string:8,list:9,compound:10,intArray:11,longArray:12},h=[\"end\",\"byte\",\"short\",\"int\",\"long\",\"float\",\"double\",\"byteArray\",\"string\",\"list\",\"compound\",\"intArray\",\"longArray\"];class u{constructor(t,e=!1){this.byte=this.readNum.bind(this,\"getInt8\",1),this.short=this.readNum.bind(this,\"getInt16\",2),this.int=this.readNum.bind(this,\"getInt32\",4),this.float=this.readNum.bind(this,\"getFloat32\",4),this.double=this.readNum.bind(this,\"getFloat64\",8),this.offset=0,this.littleEndian=e,this.arrayView=t,this.dataView=new DataView(t.buffer,t.byteOffset)}end(){return null}readNum(t,e){const i=this.dataView[t](this.offset,this.littleEndian);return this.offset+=e,i}long(){return[this.int(),this.int()]}byteArray(){const t=this.int(),e=[];for(let i=0;i=e)return;let i=this.buffer.byteLength;for(;ithis.buffer.byteLength&&n.fill(0,this.buffer.byteLength,this.offset),this.buffer=s,this.dataView=new DataView(s),this.arrayView=n}getData(){return this.accommodate(0),this.arrayView.slice(0,this.offset)}end(t){}writeNum(t,e,i){this.accommodate(e),this.dataView[t](this.offset,i,this.littleEndian),this.offset+=e}long(t){this.int(t[0]),this.int(t[1])}byteArray(t){this.int(t.length),this.accommodate(t.length),this.arrayView.set(t,this.offset),this.offset+=t.length}intArray(t){this.int(t.length);for(let e=0;e>6),s.push(128|63&i)):i<65536?(s.push(224|i>>12),s.push(128|i>>6&63),s.push(128|63&i)):(s.push(240|i>>18&7),s.push(128|i>>12&63),s.push(128|i>>6&63),s.push(128|63&i));return s}(t);this.short(e.length),this.accommodate(e.length),this.arrayView.set(e,this.offset),this.offset+=e.length}list(t){this.byte(l[t.type]),this.int(t.value.length),t.value;for(let e=0;e>16),s.setInt16(t+1,65535&n),s.setInt8(t+3,r),s.setInt32(t+4096,e.timestamp);const o=4096*n;s.setInt32(o,e.data.length+1),s.setInt8(o+4,e.compression),i.set(e.data,o+5),n+=r}return i}function y(t,e,i,s){const n=x(t,e,i);switch(n.compression){case 1:n.data=b(s);break;case 2:n.data=b(s,!1,!0);break;case 3:n.data=v(s);break;default:throw new Error(`Invalid compression mode ${n.compression}`)}return n}function x(t,e,i){const s=t.find((t=>t.x===e&&t.z===i));if(void 0===s)throw new Error(`Cannot find chunk [${e}, ${i}]`);return s}function S(t,e,i){if(!t[e])throw new Error(`Missing ${e} tag`);if(t[e].type!==i)throw new Error(`Expected ${e} to be of type ${i}, but found ${t[e].type}`);return t[e].value}function B(t,e,i,s){const n=S(t,e,\"list\");if(n.type!==i)throw new Error(`Expected ${e} to be a list of ${i}s, but found ${n.type}s`);if(s&&n.value.length!==s)throw new Error(`Expected ${e} to be a list of length ${s}, but found length ${n.value.length}`);return n.value}function I(t,e){try{return t()}catch(t){return e}}var P,E,A,C,R;!function(t){function e(t){return\"object\"==typeof t&&null!==t?t:void 0}t.readNumber=function(t){return\"number\"==typeof t?t:void 0},t.readInt=function(t){return\"number\"==typeof t?Math.floor(t):void 0},t.readString=function(t){return\"string\"==typeof t?t:void 0},t.readBoolean=function(t){return\"boolean\"==typeof t?t:void 0},t.readObject=e,t.readArray=function(t,e){if(Array.isArray(t))return t.map((t=>e(t)))},t.readMap=function(t,i){var s;const n=null!==(s=e(t))&&void 0!==s?s:{};return Object.fromEntries(Object.entries(n).map((([t,e])=>[t,i(e)])))},t.compose=function(t,e,i){const s=e(t);return s?i(s):void 0}}(P||(P={}));class N{constructor(t,e={}){this.name=t,this.properties=e}getName(){return this.name}getProperties(){return this.properties}getProperty(t){return this.properties[t]}isFluid(){return\"minecraft:water\"===this.name||\"minecraft:lava\"===this.name}equals(t){return this.name===t.name&&Object.keys(this.properties).every((e=>t.properties[e]===this.properties[e]))}toString(){return 0===Object.keys(this.properties).length?this.name:`${this.name}[${Object.entries(this.properties).map((([t,e])=>t+\"=\"+e)).join(\",\")}]`}static fromNbt(t){const e=S(t.value,\"Name\",\"string\"),i=I((()=>S(t.value,\"Properties\",\"compound\")),{}),s=Object.keys(i).reduce(((t,e)=>Object.assign(Object.assign({},t),{[e]:S(i,e,\"string\")})),{});return new N(e,s)}static fromJson(t){var e,i;const s=null!==(e=P.readObject(t))&&void 0!==e?e:{},n=null!==(i=P.readString(s.Name))&&void 0!==i?i:\"minecraft:stone\",r=P.readMap(s.Properties,(t=>{var e;return null!==(e=P.readString(t))&&void 0!==e?e:\"\"}));return new N(n,r)}}N.AIR=new N(\"minecraft:air\");class k{constructor(t){this.minY=t,this.storage=Array(k.SIZE),this.palette=[N.AIR]}get minBlockY(){return this.minY<<4}index(t,e,i){return(t<<8)+(e<<4)+i}getBlockState(t,e,i){var s;const n=this.storage[this.index(t,e,i)];return null!==(s=this.palette[n])&&void 0!==s?s:N.AIR}setBlockState(t,e,i,s){let n=this.palette.findIndex((t=>t.equals(s)));-1===n&&(n=this.palette.length,this.palette.push(s)),this.storage[this.index(t,e,i)]=n}}k.WIDTH=16,k.SIZE=k.WIDTH*k.WIDTH*k.WIDTH;class T{constructor(t,e,i){this.minY=t,this.height=e,this.pos=i,this.sections=Array(this.sectionsCount).fill(null)}get maxY(){return this.minY+this.height}get minSection(){return this.minY>>4}get maxSection(){return 1+(this.maxY-1>>4)}get sectionsCount(){return this.maxSection-this.minSection}getSectionIndex(t){return(t>>4)-this.minSection}getBlockState(t){var e;const[i,s,n]=t,r=this.sections[this.getSectionIndex(s)];return null!==(e=null==r?void 0:r.getBlockState(15&i,15&s,15&n))&&void 0!==e?e:N.AIR}setBlockState(t,e){const[i,s,n]=t,r=this.getSectionIndex(s);let o=this.sections[r];if(null===o){if(e.equals(N.AIR))return;o=this.getOrCreateSection(r)}o.setBlockState(15&i,15&s,15&n,e)}getOrCreateSection(t){return null==this.sections[t]&&(this.sections[t]=new k(this.minSection+t)),this.sections[t]}}!function(t){t.create=function(t,e){return[t,e]},t.fromBlockPos=function(t){return[t[0]>>4,t[2]>>4]},t.fromLong=function(t){return[4294967295&Number(t),Number(t>>BigInt(32))]},t.minBlockX=function(t){return t[0]<<4},t.minBlockZ=function(t){return t[1]<<4},t.maxBlockX=function(t){return t[0]<<19},t.maxBlockZ=function(t){return t[1]<<19}}(E||(E={}));class _{constructor(t,e=[],i=[]){this.size=t,this.palette=e,this.blocks=i,this.blocksMap=[],i.forEach((e=>{if(!this.isInside(e.pos))throw new Error(`Found block at ${e.pos} which is outside the structure bounds ${this.size}`);this.blocksMap[e.pos[0]*t[1]*t[2]+e.pos[1]*t[2]+e.pos[2]]=e}))}getSize(){return this.size}addBlock(t,e,i,s){if(!this.isInside(t))throw new Error(`Cannot add block at ${t} outside the structure bounds ${this.size}`);const n=new N(e,i);let r=this.palette.findIndex((t=>t.equals(n)));return-1===r&&(r=this.palette.length,this.palette.push(n)),this.blocks.push({pos:t,state:r,nbt:s}),this.blocksMap[t[0]*this.size[1]*this.size[2]+t[1]*this.size[2]+t[2]]={pos:t,state:r,nbt:s},this}getBlocks(){return this.blocks.map((t=>({pos:t.pos,state:this.palette[t.state],nbt:t.nbt})))}getBlock(t){if(!this.isInside(t))return null;const e=this.blocksMap[t[0]*this.size[1]*this.size[2]+t[1]*this.size[2]+t[2]];if(!e)return null;return{pos:e.pos,state:this.palette[e.state],nbt:e.nbt}}isInside(t){return t[0]>=0&&t[0]=0&&t[1]=0&&t[2]N.fromNbt({name:\"\",value:t}))),s=B(t.value,\"blocks\",\"compound\").map((t=>({pos:B(t,\"pos\",\"int\",3),state:S(t,\"state\",\"int\"),nbt:I((()=>S(t,\"nbt\",\"compound\")),void 0)})));return new _(e,i,s)}}function O(t){return t*t}function M(t,e,i){return Math.max(e,Math.min(i,t))}function L(t,e,i){return e+t*(i-e)}function D(t,e,i,s,n,r){return L(e,L(t,i,s),L(t,n,r))}function U(t,e,i,s,n,r,o,a,l,h,u){return L(i,D(t,e,s,n,r,o),D(t,e,a,l,h,u))}function X(t,e,i){return i<0?t:i>1?e:L(i,t,e)}function z(t){return t*t*t*(t*(6*t-15)+10)}function j(t,e,i){let s=e-t;for(;s>0;){const e=Math.floor(s/2),n=t+e;i(n)?s=e:(t=n+1,s-=e+1)}return t}class V{constructor(t){this.seed=BigInt(0),this.setSeed(t)}fork(){return new V(this.nextLong())}setSeed(t){this.seed=t^V.MULTIPLIER&V.MODULUS_MASK}advance(){this.seed=this.seed*V.MULTIPLIER+V.INCREMENT&V.MODULUS_MASK}consume(t){for(let e=0;e>BigInt(V.MODULUS_BITS-t));return e>2147483647?e-4294967296:e}nextInt(t){if(void 0===t)return this.next(32);if(0==(t&t-1))return Number(BigInt(t)*BigInt(this.next(31))>>BigInt(31));let e,i;for(;(e=this.next(31))-(i=e%t)+(t-1)<0;);return i}nextLong(){return(BigInt(this.next(32))<>BigInt(30))*BigInt(\"-4658895280553007687\")&BigInt(\"0xFFFFFFFFFFFFFFFF\"))^t>>BigInt(27))*BigInt(\"-7723592293110705685\")&BigInt(\"0xFFFFFFFFFFFFFFFF\"))^t>>BigInt(31))&BigInt(\"0xFFFFFFFFFFFFFFFF\")}static upgradeSeedTo128bit(t){t<0&&(t+=BigInt(\"0x10000000000000000\"));const e=t^W.SILVER_RATIO_64,i=e+W.GOLDEN_RATIO_64&BigInt(\"0xFFFFFFFFFFFFFFFF\");return[W.mixStafford13(e),W.mixStafford13(i)]}static rotateLeft(t,e){return t<>BigInt(64)-e}setSeed(t){this.seed=W.upgradeSeedTo128bit(t)}fork(){return new W([this.next(),this.next()])}static getSeed(t,e,i){let s=t*BigInt(3129871)^i*BigInt(116129781)^e;return s=s*s*BigInt(42317861)+s*BigInt(11),s>>BigInt(16)}forkAt(t,e,i){const s=W.getSeed(t,e,i)^this.seed[0];return new W([s,this.seed[1]])}static LongfromBytes(t,e,i,s,n,r,o,a){return BigInt(t)<BigInt(\"0x8000000000000000\")&&(t-=BigInt(\"0x10000000000000000\")),t}consume(t){let e=this.seed[0],i=this.seed[1];for(let s=0;s>BigInt(64-t)}nextInt(t){var e=this.next()&BigInt(4294967295);if(t){const o=BigInt(t);var i=e*o,s=i&BigInt(4294967295);if(s>BigInt(32);return Number(r)}var o=Number(e);return o>=2147483648&&(o-=4294967296),o}nextFloat(){return Number(this.nextBits(24))*W.FLOAT_MULTIPLIER}nextDouble(){return Number(this.nextBits(53))*W.DOUBLE_MULTIPLIER}parityConfigString(){return\"seedLo: \"+this.seed[0]+\", seedHi: \"+this.seed[1]}}W.SILVER_RATIO_64=BigInt(\"7640891576956012809\"),W.GOLDEN_RATIO_64=BigInt(\"-7046029254386353131\"),W.FLOAT_MULTIPLIER=1/Math.pow(2,24),W.DOUBLE_MULTIPLIER=11102230246251565e-32;class Y{constructor(t){this.xo=256*t.nextDouble(),this.yo=256*t.nextDouble(),this.zo=256*t.nextDouble(),this.p=Array(256);for(let t=0;t<256;t+=1)this.p[t]=t;for(let e=0;e<256;e+=1){const i=t.nextInt(256-e),s=this.p[e];this.p[e]=this.p[e+i],this.p[e+i]=s}}sample2D(t,e){let i,s,n;const r=(t+e)*Y.F2,o=Math.floor(t+r),a=t-(o-(i=(o+(s=Math.floor(e+r)))*Y.G2));let l,h;a>(n=e-(s-i))?(l=1,h=0):(l=0,h=1);const u=a-l+Y.G2,c=n-h+Y.G2,d=a-1+2*Y.G2,f=n-1+2*Y.G2,g=255&o,p=255&s,m=this.P(g+this.P(p))%12,v=this.P(g+l+this.P(p+h))%12,b=this.P(g+1+this.P(p+1))%12;return 70*(this.getCornerNoise3D(m,a,n,0,.5)+this.getCornerNoise3D(v,u,c,0,.5)+this.getCornerNoise3D(b,d,f,0,.5))}sample(t,e,i){const s=.3333333333333333*(t+e+i),n=Math.floor(t+s),r=Math.floor(e+s),o=Math.floor(i+s),a=.16666666666666666*(n+r+o),l=t-(n-a),h=e-(r-a),u=i-(o-a);let c,d,f,g,p,m;l>=h?h>=u?(c=1,d=0,f=0,g=1,p=1,m=0):l>=u?(c=1,d=0,f=0,g=1,p=0,m=1):(c=0,d=0,f=1,g=1,p=0,m=1):h127?t-256:t;for(let e=0;e<256;e+=1){const i=t.nextInt(256-e),s=this.p[e];this.p[e]=this.p[e+i],this.p[e+i]=s}}sample(t,e,i,s=0,n=0){const r=t+this.xo,o=e+this.yo,a=i+this.zo,l=Math.floor(r),h=Math.floor(o),u=Math.floor(a),c=r-l,d=o-h,f=a-u;let g=0;if(0!==s){const t=n>=0&&n=0;s-=1)s0&&(s=this.maxLimitNoise.getOctaveNoise(l))&&(a+=s.sample(c,d,f,u,e*u)/r),r/=2}return X(o/512,a/512,n)/128}}!function(t){t.fromJson=function(t){var e,i,s,n,r;const o=null!==(e=P.readObject(t))&&void 0!==e?e:{};return{xzScale:null!==(i=P.readNumber(o.xz_scale))&&void 0!==i?i:1,yScale:null!==(s=P.readNumber(o.y_scale))&&void 0!==s?s:1,xzFactor:null!==(n=P.readNumber(o.xz_factor))&&void 0!==n?n:80,yFactor:null!==(r=P.readNumber(o.y_factor))&&void 0!==r?r:80}}}(A||(A={}));class G{constructor(t,{firstOctave:e,amplitudes:i}){this.first=new Z(t,e,i),this.second=new Z(t,e,i);let s=1/0,n=-1/0;for(let t=0;t{var e;return null!==(e=P.readNumber(t))&&void 0!==e?e:0})))&&void 0!==s?s:[]}}}(C||(C={}));class ${constructor(t,e){const i=e[e.length-1],s=-e[0]+i+1,n=new Set(e),r=new Y(t);this.noiseLevels=Array(s),i>=0&&i=0&&n.has(i-e)?this.noiseLevels[e]=new Y(t):t.consume(262);if(i>0)throw new Error(\"Positive octaves are not allowed\");this.highestFreqInputFactor=Math.pow(2,i),this.highestFreqValueFactor=1/(Math.pow(2,s)-1)}sample(t,e,i){let s=0,n=this.highestFreqInputFactor,r=this.highestFreqValueFactor;for(let o=0;o{var e;return null!==(e=P.readObject(t))&&void 0!==e?e:{}})))&&void 0!==n?n:[];if(0===h.length)return new q(0);for(const e of h){const s=null!==(r=P.readNumber(e.location))&&void 0!==r?r:0,n=t.fromJson(e.value,i),a=null!==(o=P.readNumber(e.derivative))&&void 0!==o?o:0;l.addPoint(s,n,a)}return l}}(R||(R={}));class q{constructor(t){this.value=t}apply(){return this.value}toJson(){return this.value}}class K{constructor(t,e=[],i=[],s=[]){this.coordinate=t,this.locations=e,this.values=i,this.derivatives=s}apply(t){const e=this.coordinate.apply(t),i=j(0,this.locations.length,(t=>e({location:t,value:this.values[e].toJson(),derivative:this.derivatives[e]})))}}}const Q=t=>[(t>>16&255)/256,(t>>8&255)/256,(255&t)/256],tt=[124/256,189/256,107/256],et=Q(6396257),it=Q(8431445),st=Q(4764952),nt=Q(4159204),rt=Q(8431445),ot=Q(2129968),at=t=>[t/8,1-t/32,64*t],lt={large_fern:()=>tt,tall_grass:()=>tt,grass_block:()=>tt,fern:()=>tt,grass:()=>tt,potted_fern:()=>tt,spruce_leaves:()=>et,birch_leaves:()=>it,oak_leaves:()=>st,jungle_leaves:()=>st,acacia_leaves:()=>st,dark_oak_leaves:()=>st,vine:()=>st,water:()=>nt,bubble_column:()=>nt,cauldron:()=>nt,redstone_wire:t=>{var e;return(t=>{const e=t/15;return[.6*e+(e>0?.4:.3),M(e*e*.7-.5,0,1),M(e*e*.6-.7,0,1)]})(parseInt(null!==(e=t.power)&&void 0!==e?e:\"0\"))},sugar_cane:()=>tt,attached_melon_stem:()=>rt,attached_pumpkin_stem:()=>rt,melon_stem:t=>{var e;return at(parseInt(null!==(e=t.age)&&void 0!==e?e:\"0\"))},pumpkin_stem:t=>{var e;return at(parseInt(null!==(e=t.age)&&void 0!==e?e:\"0\"))},lily_pad:()=>ot};var ht;function ut(...t){let e=0;for(const i of t)e+=i.length;const i=new Float32Array(e);let s=0;for(const e of t)i.set(e,s),s+=e.length;return i}function ct(t,e){const s=i.create();for(let n=0;nthis.matchesVariant(e,t)));if(0===e.length)return[];const i=this.variants[e[0]];return[Array.isArray(i)?i[0]:i]}if(this.multipart){return this.multipart.filter((e=>!e.when||this.matchesCase(e.when,t))).map((t=>Array.isArray(t.apply)?t.apply[0]:t.apply))}return[]}getBuffers(t,e,i,r,o,a){var l,h,u,c;const d=this.getModelVariants(e),f=[],g=[],p=[],m=[];for(const v of d){const d=ht.rotate(a,null!==(l=v.x)&&void 0!==l?l:0,null!==(h=v.y)&&void 0!==h?h:0),b=r.getBlockModel(v.model).getBuffers(t,e,i,o,d);if(v.x||v.y){const t=s.create();s.identity(t),s.translate(t,t,[8,8,8]),s.rotateY(t,t,-n.toRadian(null!==(u=v.y)&&void 0!==u?u:0)),s.rotateX(t,t,-n.toRadian(null!==(c=v.x)&&void 0!==c?c:0)),s.translate(t,t,[-8,-8,-8]),ct(b.position,t)}f.push(b.position),g.push(...b.texCoord),p.push(...b.tintColor),m.push(...b.index),o+=b.texCoord.length/2}const v=s.create();s.identity(v),s.scale(v,v,[.0625,.0625,.0625]);const b=ut(...f);return ct(b,v),{position:b,texCoord:g,tintColor:p,index:m}}matchesVariant(t,e){return t.split(\",\").every((t=>{const[i,s]=t.split(\"=\");return e[i]===s}))}matchesCase(t,e){if(Array.isArray(t.OR))return t.OR.some((t=>this.matchesCase(t,e)));const i=t;return Object.keys(i).every((t=>i[t].split(\"|\").includes(e[t])))}static fromJson(t,e){return new dt(t,e.variants,e.multipart)}}const ft={0:[0,3,2,3,2,1,0,1],90:[2,3,2,1,0,1,0,3],180:[2,1,0,1,0,3,2,3],270:[0,1,0,3,2,3,2,1]},gt={x:[1,0,0],y:[0,1,0],z:[0,0,1]},pt=1.41421356237,mt={x:[1,pt,pt],y:[pt,1,pt],z:[pt,pt,1]};class vt{constructor(t,e,i,s){this.id=t,this.parent=e,this.textures=i,this.elements=s,this.flattened=!1}getBuffers(t,e,i,s,n){var r;const o=[],a=[],l=[],h=[];for(const u of null!==(r=this.elements)&&void 0!==r?r:[]){const r=this.getElementBuffers(t,e,u,s,i,n);o.push(r.position),a.push(...r.texCoord),l.push(...r.tintColor),h.push(...r.index),s+=r.texCoord.length/2}return{position:ut(...o),texCoord:a,tintColor:l,index:h}}getElementBuffers(t,e,r,o,a,l){var h,u,c,d,f,g,p,m,v,b,w,F;const y=r.from[0],x=r.from[1],S=r.from[2],B=r.to[0],I=r.to[1],P=r.to[2],E=[],A=[],C=[],R=[],N=(i,s,n)=>{var r,l,h,u,c,d,f,g,p,m,v,b;const[w,F,y,x]=a.getTextureUV(this.getTexture(i.texture)),S=(y-w)/16,B=(x-F)/16,I=S/16,P=B/16;s[0]=(null!==(l=null===(r=i.uv)||void 0===r?void 0:r[0])&&void 0!==l?l:s[0])*S+I,s[1]=(null!==(u=null===(h=i.uv)||void 0===h?void 0:h[1])&&void 0!==u?u:s[1])*B+P,s[2]=(null!==(d=null===(c=i.uv)||void 0===c?void 0:c[2])&&void 0!==d?d:s[2])*S-I,s[3]=(null!==(g=null===(f=i.uv)||void 0===f?void 0:f[3])&&void 0!==g?g:s[3])*B-P;const N=ft[null!==(p=i.rotation)&&void 0!==p?p:0];A.push(w+s[N[0]],F+s[N[1]],w+s[N[2]],F+s[N[3]],w+s[N[4]],F+s[N[5]],w+s[N[6]],F+s[N[7]]);const k=(null!==(m=i.tintindex)&&void 0!==m?m:-1)>=0&&null!==(b=null===(v=lt[t.slice(10)])||void 0===v?void 0:v.call(lt,e))&&void 0!==b?b:[1,1,1];C.push(...k,...k,...k,...k),E.push(...n),R.push(o,o+1,o+2,o,o+2,o+3),o+=4};!(null===(u=null===(h=r.faces)||void 0===h?void 0:h.up)||void 0===u?void 0:u.texture)||r.faces.up.cullface&&l[r.faces.up.cullface]||N(r.faces.up,[y,16-P,B,16-S],[y,I,P,B,I,P,B,I,S,y,I,S]),!(null===(d=null===(c=r.faces)||void 0===c?void 0:c.down)||void 0===d?void 0:d.texture)||r.faces.down.cullface&&l[r.faces.down.cullface]||N(r.faces.down,[16-P,16-B,16-S,16-y],[y,x,S,B,x,S,B,x,P,y,x,P]),!(null===(g=null===(f=r.faces)||void 0===f?void 0:f.south)||void 0===g?void 0:g.texture)||r.faces.south.cullface&&l[r.faces.south.cullface]||N(r.faces.south,[y,16-I,B,16-x],[y,x,P,B,x,P,B,I,P,y,I,P]),!(null===(m=null===(p=r.faces)||void 0===p?void 0:p.north)||void 0===m?void 0:m.texture)||r.faces.north.cullface&&l[r.faces.north.cullface]||N(r.faces.north,[16-B,16-I,16-y,16-x],[B,x,S,y,x,S,y,I,S,B,I,S]),!(null===(b=null===(v=r.faces)||void 0===v?void 0:v.east)||void 0===b?void 0:b.texture)||r.faces.east.cullface&&l[r.faces.east.cullface]||N(r.faces.east,[16-P,16-I,16-S,16-x],[B,x,P,B,x,S,B,I,S,B,I,P]),!(null===(F=null===(w=r.faces)||void 0===w?void 0:w.west)||void 0===F?void 0:F.texture)||r.faces.west.cullface&&l[r.faces.west.cullface]||N(r.faces.west,[S,16-I,P,16-x],[y,x,S,y,x,P,y,I,P,y,I,S]);const k=s.create();if(s.identity(k),r.rotation){const t=i.fromValues(...r.rotation.origin);s.translate(k,k,t),s.rotate(k,k,n.toRadian(r.rotation.angle),gt[r.rotation.axis]),r.rotation.rescale&&s.scale(k,k,mt[r.rotation.axis]),i.negate(t,t),s.translate(k,k,t)}const T=new Float32Array(E);return ct(T,k),{position:T,texCoord:A,tintColor:C,index:R}}getTexture(t){for(var e,i;t.startsWith(\"#\");)t=null!==(i=null===(e=this.textures)||void 0===e?void 0:e[t.slice(1)])&&void 0!==i?i:\"\";return t.startsWith(\"minecraft:\")||(t=\"minecraft:\"+t),t}flatten(t){var e;if(!this.flattened&&this.parent){const i=t.getBlockModel(this.parent);if(!i)return console.warn(`parent ${this.parent} does not exist!`),void(this.flattened=!0);i.flatten(t),this.elements||(this.elements=i.elements),this.textures||(this.textures={}),Object.keys(null!==(e=i.textures)&&void 0!==e?e:{}).forEach((t=>{this.textures[t]||(this.textures[t]=i.textures[t])})),this.flattened=!0}}static fromJson(t,e){let i=e.parent;return i&&!i.startsWith(\"minecraft:\")&&(i=\"minecraft:\"+i),new vt(t,i,e.textures,e.elements)}}class bt{constructor(t,e,i){this.gl=t,this.program=this.initShaderProgram(e,i)}getProgram(){return this.program}initShaderProgram(t,e){const i=this.loadShader(this.gl.VERTEX_SHADER,t),s=this.loadShader(this.gl.FRAGMENT_SHADER,e),n=this.gl.createProgram();if(this.gl.attachShader(n,i),this.gl.attachShader(n,s),this.gl.linkProgram(n),!this.gl.getProgramParameter(n,this.gl.LINK_STATUS))throw new Error(`Unable to link shader program: ${this.gl.getProgramInfoLog(n)}`);return n}loadShader(t,e){const i=this.gl.createShader(t);if(this.gl.shaderSource(i,e),this.gl.compileShader(i),!this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS)){const e=new Error(`Compiling ${t===this.gl.VERTEX_SHADER?\"vertex\":\"fragment\"} shader: ${this.gl.getShaderInfoLog(i)}`);throw this.gl.deleteShader(i),e}return i}}function wt(t,e,i,s,n){const r=new dt(\"\",{\"\":{model:\"\"}},void 0),o={getBlockModel:()=>n};return n.flatten(o),r.getBuffers(t,{},e,o,i,s)}function Ft(t,e,i,s,n,o){const a=n.up?16:[14.2,12.5,10.5,9,7,5.3,3.7,1.9,16,16,16,16,16,16,16,16][i];return wt(`minecraft:${t}`,s,e,n,new vt(\"\",\"\",{still:`minecraft:block/${t}_still`,flow:`minecraft:block/${t}_flow`},[{from:[0,0,0],to:[16,a,16],faces:{up:{texture:\"#still\",tintindex:o,cullface:r.UP},down:{texture:\"#still\",tintindex:o,cullface:r.DOWN},north:{texture:\"#flow\",tintindex:o,cullface:r.NORTH},east:{texture:\"#flow\",tintindex:o,cullface:r.EAST},south:{texture:\"#flow\",tintindex:o,cullface:r.SOUTH},west:{texture:\"#flow\",tintindex:o,cullface:r.WEST}}}]))}const yt={\"minecraft:water\":(t,e,i,s)=>Ft(\"water\",t,parseInt(e.level),i,s,0),\"minecraft:lava\":(t,e,i,s)=>Ft(\"lava\",t,parseInt(e.level),i,s),\"minecraft:chest\":(t,e,i)=>function(t,e,i,s){return wt(\"minecraft:chest\",s,t,{},new vt(\"\",\"\",{0:\"minecraft:block/chest\"},[{from:[1,0,1],to:[15,14,15],faces:{up:{texture:\"#0\"},down:{texture:\"#0\"},north:{texture:\"#0\"},east:{texture:\"#0\"},south:{texture:\"#0\"},west:{texture:\"#0\"}}}]))}(t,e.facing,e.type,i)},xt=new Set(Object.keys(yt));class St{constructor(t,e,i,s){var n,r;this.gl=t,this.structure=e,this.resources=i,this.chunks=[],(null==s?void 0:s.facesPerBuffer)&&console.warn(\"webgl render warning: facesPerBuffer option has been removed in favor of chunkSize\"),this.chunkSize=null!==(n=null==s?void 0:s.chunkSize)&&void 0!==n?n:16,this.useInvisibleBlockBuffer=null===(r=null==s?void 0:s.useInvisibleBlockBuffer)||void 0===r||r,this.shaderProgram=new bt(t,\"\\n attribute vec4 vertPos;\\n attribute vec2 texCoord;\\n attribute vec3 tintColor;\\n attribute vec3 normal;\\n\\n uniform mat4 mView;\\n uniform mat4 mProj;\\n\\n varying highp vec2 vTexCoord;\\n varying highp vec3 vTintColor;\\n varying highp float vLighting;\\n\\n void main(void) {\\n gl_Position = mProj * mView * vertPos;\\n vTexCoord = texCoord;\\n vTintColor = tintColor;\\n vLighting = normal.y * 0.2 + abs(normal.z) * 0.1 + 0.8;\\n }\\n\",\"\\n precision highp float;\\n varying highp vec2 vTexCoord;\\n varying highp vec3 vTintColor;\\n varying highp float vLighting;\\n\\n uniform sampler2D sampler;\\n\\n void main(void) {\\n vec4 texColor = texture2D(sampler, vTexCoord);\\n if(texColor.a < 0.01) discard;\\n gl_FragColor = vec4(texColor.xyz * vTintColor * vLighting, texColor.a);\\n }\\n\").getProgram(),this.gridShaderProgram=new bt(t,\"\\n attribute vec4 vertPos;\\n attribute vec3 vertColor;\\n\\n uniform mat4 mView;\\n uniform mat4 mProj;\\n\\n varying highp vec3 vColor;\\n\\n void main(void) {\\n gl_Position = mProj * mView * vertPos;\\n vColor = vertColor;\\n }\\n\",\"\\n precision highp float;\\n varying highp vec3 vColor;\\n\\n void main(void) {\\n gl_FragColor = vec4(vColor, 1.0);\\n }\\n\").getProgram(),this.colorShaderProgram=new bt(t,\"\\n attribute vec4 vertPos;\\n attribute vec3 blockPos;\\n\\n uniform mat4 mView;\\n uniform mat4 mProj;\\n\\n varying highp vec3 vColor;\\n\\n void main(void) {\\n gl_Position = mProj * mView * vertPos;\\n vColor = blockPos / 256.0;\\n }\\n\",\"\\n precision highp float;\\n varying highp vec3 vColor;\\n\\n void main(void) {\\n gl_FragColor = vec4(vColor, 1.0);\\n }\\n\").getProgram(),this.updateStructureBuffers(),this.gridBuffers=this.getGridBuffers(),this.outlineBuffers=this.getOutlineBuffers(),this.invisibleBlockBuffers=this.getInvisibleBlockBuffers(),this.atlasTexture=this.getBlockTexture(),this.projMatrix=this.getPerspective(),this.activeShader=this.shaderProgram,this.initialize()}setStructure(t){this.structure=t,this.updateStructureBuffers(),this.gridBuffers=this.getGridBuffers(),this.invisibleBlockBuffers=this.getInvisibleBlockBuffers()}initialize(){this.gl.enable(this.gl.DEPTH_TEST),this.gl.depthFunc(this.gl.LEQUAL),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.enable(this.gl.CULL_FACE),this.gl.cullFace(this.gl.BACK)}getBlockTexture(){const t=this.gl.createTexture();return this.gl.bindTexture(this.gl.TEXTURE_2D,t),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.resources.getTextureAtlas()),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST),t}getPerspective(){const t=70*Math.PI/180,e=this.gl.canvas.clientWidth/this.gl.canvas.clientHeight,i=s.create();return s.perspective(i,t,e,.1,500),i}getChunk(t){const e=2*Math.abs(t[0])+(t[0]<0?1:0),i=2*Math.abs(t[1])+(t[1]<0?1:0),s=2*Math.abs(t[2])+(t[2]<0?1:0);return this.chunks[e]||(this.chunks[e]=[]),this.chunks[e][i]||(this.chunks[e][i]=[]),this.chunks[e][i][s]||(this.chunks[e][i][s]={positions:[],textureCoordinates:[],tintColors:[],blockPositions:[],normals:[],indices:[],indexOffset:0}),this.chunks[e][i][s]}updateStructureBuffers(t){var e;const n=(t,e,n)=>{const r=s.create();s.translate(r,r,e),ct(t.position,r),n.positions.push(t.position),n.textureCoordinates.push(...t.texCoord),n.tintColors.push(...t.tintColor);for(let e=0;e{t.positions=[],t.textureCoordinates=[],t.tintColors=[],t.blockPositions=[],t.normals=[],t.indices=[],t.indexOffset=0},a=t=>{t.buffer?(this.updateBuffer(t.buffer.position,this.gl.ARRAY_BUFFER,ut(...t.positions)),this.updateBuffer(t.buffer.texCoord,this.gl.ARRAY_BUFFER,new Float32Array(t.textureCoordinates)),this.updateBuffer(t.buffer.tintColor,this.gl.ARRAY_BUFFER,new Float32Array(t.tintColors)),this.updateBuffer(t.buffer.normal,this.gl.ARRAY_BUFFER,new Float32Array(t.normals)),this.updateBuffer(t.buffer.blockPos,this.gl.ARRAY_BUFFER,new Float32Array(t.blockPositions)),this.updateBuffer(t.buffer.index,this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array(t.indices)),t.buffer.length=t.indices.length):t.buffer={position:this.createBuffer(this.gl.ARRAY_BUFFER,ut(...t.positions)),texCoord:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t.textureCoordinates)),tintColor:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t.tintColors)),blockPos:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t.blockPositions)),normal:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t.normals)),index:this.createBuffer(this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array(t.indices)),length:t.indices.length}};let l;t?t.forEach((t=>{const e=this.getChunk(t);o(e)})):this.chunks.forEach((t=>t.forEach((t=>t.forEach((t=>{o(t)}))))));for(const s of this.structure.getBlocks()){const o=s.state.getName(),a=s.state.getProperties(),h=null!==(e=this.resources.getDefaultBlockProperties(o))&&void 0!==e?e:{};Object.entries(h).forEach((([t,e])=>{a[t]||(a[t]=e)}));const u=[Math.floor(s.pos[0]/this.chunkSize),Math.floor(s.pos[1]/this.chunkSize),Math.floor(s.pos[2]/this.chunkSize)];if(t&&!t.some((t=>i.equals(t,u))))continue;const c=this.getChunk(u);try{const t=this.resources.getBlockDefinition(o),e={up:this.needsCull(s,r.UP),down:this.needsCull(s,r.DOWN),west:this.needsCull(s,r.WEST),east:this.needsCull(s,r.EAST),north:this.needsCull(s,r.NORTH),south:this.needsCull(s,r.SOUTH)};t&&(l=t.getBuffers(o,a,this.resources,this.resources,c.indexOffset,e),n(l,s.pos,c)),xt.has(o)&&(l=yt[o](c.indexOffset,a,this.resources,e),n(l,s.pos,c))}catch(t){console.error(`Error rendering block ${o}`,t)}}t?t.forEach((t=>{const e=this.getChunk(t);a(e)})):this.chunks.forEach((t=>t.forEach((t=>t.forEach((t=>{a(t)}))))))}needsCull(t,e){var i,s;const n=null===(i=this.structure.getBlock(a.towards(t.pos,e)))||void 0===i?void 0:i.state;return!!n&&((null===(s=this.resources.getBlockFlags(n.getName()))||void 0===s?void 0:s.opaque)?!(e===r.UP&&t.state.isFluid()):t.state.isFluid()&&n.isFluid())}getGridBuffers(){const[t,e,i]=this.structure.getSize(),s=[],n=[];s.push(0,0,0,t,0,0),n.push(1,0,0,1,0,0),s.push(0,0,0,0,0,i),n.push(0,0,1,0,0,1),s.push(0,0,0,0,e,0),s.push(t,0,0,t,e,0),s.push(0,0,i,0,e,i),s.push(t,0,i,t,e,i),s.push(0,e,0,0,e,i),s.push(t,e,0,t,e,i),s.push(0,e,0,t,e,0),s.push(0,e,i,t,e,i);for(let e=1;e<=t;e+=1)s.push(e,0,0,e,0,i);for(let e=1;e<=i;e+=1)s.push(0,0,e,t,0,e);for(let e=0;e<8+t+i;e+=1)n.push(.8,.8,.8,.8,.8,.8);return{position:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(s)),color:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(n)),length:s.length/3}}getOutlineBuffers(){const t=[],e=[];return this.addCube(t,e,[1,1,1],[0,0,0],[1,1,1]),{position:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t)),color:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(e)),length:t.length/3}}getInvisibleBlockBuffers(){if(!this.useInvisibleBlockBuffer)return;const t=this.structure.getSize(),e=[],i=[];for(let s=0;s{t.forEach((t=>{t.forEach((t=>{t.buffer&&(this.setVertexAttr(\"vertPos\",3,t.buffer.position),this.setVertexAttr(\"texCoord\",2,t.buffer.texCoord),this.setVertexAttr(\"tintColor\",3,t.buffer.tintColor),this.setVertexAttr(\"normal\",3,t.buffer.normal),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,t.buffer.index),this.gl.drawElements(this.gl.TRIANGLES,t.buffer.length,this.gl.UNSIGNED_SHORT,0))}))}))}))}drawColoredStructure(t){this.setShader(this.colorShaderProgram),this.setUniform(\"mView\",t),this.setUniform(\"mProj\",this.projMatrix),this.chunks.forEach((t=>{t.forEach((t=>{t.forEach((t=>{t.buffer&&(this.setVertexAttr(\"vertPos\",3,t.buffer.position),this.setVertexAttr(\"blockPos\",3,t.buffer.blockPos),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,t.buffer.index),this.gl.drawElements(this.gl.TRIANGLES,t.buffer.length,this.gl.UNSIGNED_SHORT,0))}))}))}))}drawOutline(t,e){this.setShader(this.gridShaderProgram),this.setVertexAttr(\"vertPos\",3,this.outlineBuffers.position),this.setVertexAttr(\"vertColor\",3,this.outlineBuffers.color);const i=s.create();s.copy(i,t),s.translate(i,i,e),this.setUniform(\"mView\",i),this.setUniform(\"mProj\",this.projMatrix),this.gl.drawArrays(this.gl.LINES,0,this.outlineBuffers.length)}setViewport(t,e,i,s){this.gl.viewport(t,e,i,s),this.projMatrix=this.getPerspective()}setShader(t){this.gl.useProgram(t),this.activeShader=t}setVertexAttr(t,e,i){const s=this.gl.getAttribLocation(this.activeShader,t);this.gl.bindBuffer(this.gl.ARRAY_BUFFER,i),this.gl.vertexAttribPointer(s,e,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(s)}setUniform(t,e){const i=this.gl.getUniformLocation(this.activeShader,t);this.gl.uniformMatrix4fv(i,!1,e)}}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */function Bt(t,e,i,s){return new(i||(i=Promise))((function(n,r){function o(t){try{l(s.next(t))}catch(t){r(t)}}function a(t){try{l(s.throw(t))}catch(t){r(t)}}function l(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,a)}l((s=s.apply(t,e||[])).next())}))}class It{constructor(t,e){this.img=t,this.idMap=e,this.part=16/t.width}getTextureAtlas(){return this.img}getTextureUV(t){var e;return null!==(e=this.idMap[t])&&void 0!==e?e:[0,0,this.part,this.part]}static fromBlobs(t){return Bt(this,void 0,void 0,(function*(){const e=Math.sqrt(Object.keys(t).length+1),i=Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))),s=16*i,n=1/i,r=document.createElement(\"canvas\");r.width=s,r.height=s;const o=r.getContext(\"2d\");this.drawInvalidTexture(o);const a={};let l=1;return yield Promise.all(Object.keys(t).map((e=>Bt(this,void 0,void 0,(function*(){const s=l%i,r=Math.floor(l/i);l+=1,a[e]=[n*s,n*r,n*s+n,n*r+n];const h=yield createImageBitmap(t[e]);o.drawImage(h,0,0,16,16,16*s,16*r,16,16)}))))),new It(o.getImageData(0,0,s,s),a)}))}static empty(){const t=document.createElement(\"canvas\");t.width=16,t.height=16;const e=t.getContext(\"2d\");return It.drawInvalidTexture(e),new It(e.getImageData(0,0,16,16),{})}static drawInvalidTexture(t){t.fillStyle=\"black\",t.fillRect(0,0,16,16),t.fillStyle=\"magenta\",t.fillRect(0,0,8,8),t.fillRect(8,8,8,8)}}var Pt,Et,At,Ct,Rt,Nt,kt,Tt,_t;!function(t){function e(t,e){return\"number\"==typeof t?new i(t,null!=e?e:t):t}t.target=function(t,e,i,s,r,o){return new n(t,e,i,s,r,o)},t.parameters=function(t,i,n,r,o,a,l){return new s(e(t),e(i),e(n),e(r),e(o),e(a),l)},t.param=e;class i{constructor(t,e){this.min=t,this.max=e}distance(t){const e=(\"number\"==typeof t?t:t.min)-this.max,i=this.min-(\"number\"==typeof t?t:t.max);return e>0?e:Math.max(i,0)}union(t){return new i(Math.min(this.min,t.min),Math.max(this.max,t.max))}static fromJson(t){var e;if(\"number\"==typeof t)return new i(t,t);const[s,n]=null!==(e=P.readArray(t,(t=>P.readNumber(t))))&&void 0!==e?e:[];return new i(null!=s?s:0,null!=n?n:0)}}t.Param=i;class s{constructor(t,e,i,s,n,r,o){this.temperature=t,this.humidity=e,this.continentalness=i,this.erosion=s,this.depth=n,this.weirdness=r,this.offset=o}fittness(t){return O(this.temperature.distance(t.temperature))+O(this.humidity.distance(t.humidity))+O(this.continentalness.distance(t.continentalness))+O(this.erosion.distance(t.erosion))+O(this.depth.distance(t.depth))+O(this.weirdness.distance(t.weirdness))+O(this.offset-t.offset)}space(){return[this.temperature,this.humidity,this.continentalness,this.erosion,this.depth,this.weirdness,new i(this.offset,this.offset)]}static fromJson(t){var e,n;const r=null!==(e=P.readObject(t))&&void 0!==e?e:{};return new s(i.fromJson(r.temperature),i.fromJson(r.humidity),i.fromJson(r.continentalness),i.fromJson(r.erosion),i.fromJson(r.depth),i.fromJson(r.weirdness),null!==(n=P.readInt(r.offset))&&void 0!==n?n:0)}}t.ParamPoint=s;class n{constructor(t,e,i,s,n,r){this.temperature=t,this.humidity=e,this.continentalness=i,this.erosion=s,this.depth=n,this.weirdness=r}get offset(){return 0}toArray(){return[this.temperature,this.humidity,this.continentalness,this.erosion,this.depth,this.weirdness,this.offset]}}t.TargetPoint=n;t.Parameters=class{constructor(t){this.things=t,this.index=new r(t)}find(t){return this.index.search(t,((t,e)=>t.distance(e)))}};class r{constructor(t){this.root=r.build(t.map((([t,e])=>new l(t,e))))}static build(t){if(1===t.length)return t[0];if(t.length<=r.CHILDREN_PER_NODE){const e=t.map((t=>{let e=0;for(let i=0;i<7;i+=1){const s=t.space[i];e+=Math.abs((s.min+s.max)/2)}return{key:e,node:t}})).sort(((t,e)=>t.key-e.key)).map((({node:t})=>t));return new a(e)}let e=1/0,i=-1,s=[];for(let n=0;n<7;++n){t=r.sort(t,n,!1),s=r.bucketize(t);let o=0;for(const t of s)o+=r.area(t.space);e>o&&(e=o,i=n)}return t=r.sort(t,i,!1),s=r.bucketize(t),s=r.sort(s,i,!0),new a(s.map((t=>r.build(t.children))))}static sort(t,e,i){return t.map((t=>{const s=t.space[e],n=(s.min+s.max)/2;return{key:i?Math.abs(n):n,node:t}})).sort(((t,e)=>t.key-e.key)).map((({node:t})=>t))}static bucketize(t){const e=[];let i=[];const s=Math.pow(10,Math.floor(Math.log(t.length-.01)/Math.log(10)));for(const n of t)i.push(n),i.lengthnew i(1/0,-1/0)));for(const i of t)e=[...Array(7)].map(((t,s)=>e[s].union(i.space[s])));return e}search(t,e){let i=1/0,s=null;for(const n of this.children){const r=e(n,t);if(i<=r)continue;const o=n.search(t,e),a=n==o?r:e(o,t);i<=a||(i=a,s=o)}return s}}t.RSubTree=a;class l extends o{constructor(t,e){super(t.space()),this.thing=e}search(){return this}}t.RLeaf=l}(Pt||(Pt={}));class Ot{constructor(t){this.biome=t}getBiome(){return this.biome}static fromJson(t){var e,i;const s=null!==(e=P.readObject(t))&&void 0!==e?e:{},n=null!==(i=P.readString(s.biome))&&void 0!==i?i:\"minecraft:the_void\";return new Ot(n)}}class Mt{constructor(t){this.parameters=t}getBiome(t,e,i,s){const n=s(t,e,i);return this.parameters.find(n)}static fromJson(t){var e,i;const s=null!==(e=P.readObject(t))&&void 0!==e?e:{},n=(null!==(i=P.readArray(s.biomes,(t=>{var e;return(t=>{var e;return{biome:null!==(e=P.readString(t.biome))&&void 0!==e?e:\"minecraft:the_void\",parameters:Pt.ParamPoint.fromJson(t.parameters)}})(null!==(e=P.readObject(t))&&void 0!==e?e:{})})))&&void 0!==i?i:[]).map((t=>[t.parameters,()=>t.biome]));return new Mt(new Pt.Parameters(n))}}class Lt{constructor(t,e,i){this.offsetSampler=t,this.factorSampler=e,this.jaggednessSampler=i}static extractor(t){return{apply:e=>e[t],toJson:()=>t}}static fromJson(t){var e;const i=null!==(e=P.readObject(t))&&void 0!==e?e:{};return new Lt(R.fromJson(i.offset,this.EXTRACTOR),R.fromJson(i.factor,this.EXTRACTOR),R.fromJson(i.jaggedness,this.EXTRACTOR))}toJson(){return{offset:this.offsetSampler.toJson(),factor:this.factorSampler.toJson(),jaggedness:this.jaggednessSampler.toJson()}}offset(t){return this.offsetSampler.apply(t)+Lt.GLOBAL_OFFSET}factor(t){return this.factorSampler.apply(t)}jaggedness(t){return this.jaggednessSampler.apply(t)}static point(t,e,i){return{continents:t,erosion:e,weirdness:i,ridges:this.peaksAndValleys(i)}}static peaksAndValleys(t){return 3*-(Math.abs(Math.abs(t)-.6666667)-.33333334)}static overworld(){const t=this.buildErosionOffsetSpline(-.05,0,0,.1,0,-.03,!1,!1),e=this.buildErosionOffsetSpline(-.1,.03,.1,.1,.01,-.03,!1,!1),i=this.buildErosionOffsetSpline(-.1,.03,.1,.7,.01,-.03,!0,!0),s=this.buildErosionOffsetSpline(.3,.03,.1,1,.01,.01,!0,!0),n=new K(this.CONTINENTS).addPoint(-1.1,.044).addPoint(-1.02,-.2222).addPoint(-.51,-.2222).addPoint(-.44,-.12).addPoint(-.18,-.12).addPoint(-.16,t).addPoint(-.15,t).addPoint(-.1,e).addPoint(.25,i).addPoint(1,s),r=new K(this.CONTINENTS).addPoint(-.19,3.95).addPoint(-.15,this.getErosionFactor(6.25,!0)).addPoint(-.1,this.getErosionFactor(5.47,!0)).addPoint(.03,this.getErosionFactor(5.08,!0)).addPoint(.06,this.getErosionFactor(4.69,!1)),o=new K(this.CONTINENTS).addPoint(.11,0).addPoint(.03,this.buildErosionJaggednessSpline(1,.5,0,0)).addPoint(.65,this.buildErosionJaggednessSpline(1,1,1,0));return new Lt(n,r,o)}static getErosionFactor(t,e){const i=new K(this.WEIRDNESS).addPoint(-.2,6.3).addPoint(.2,t),s=new K(this.EROSION).addPoint(-.6,i).addPoint(-.5,new K(this.WEIRDNESS).addPoint(-.05,6.3).addPoint(.05,2.67)).addPoint(-.35,i).addPoint(-.25,i).addPoint(-.1,new K(this.WEIRDNESS).addPoint(-.05,2.67).addPoint(.05,6.3)).addPoint(.03,i);if(e){const e=new K(this.WEIRDNESS).addPoint(0,t).addPoint(.1,.625),i=new K(this.RIDGES).addPoint(-.9,t).addPoint(-.69,e);s.addPoint(.35,t).addPoint(.45,i).addPoint(.55,i).addPoint(.62,t)}else{const e=new K(this.RIDGES).addPoint(-.7,i).addPoint(-.15,1.37),n=new K(this.RIDGES).addPoint(.45,i).addPoint(.7,1.56);s.addPoint(.05,n).addPoint(.4,n).addPoint(.45,e).addPoint(.55,e).addPoint(.58,t)}return s}static buildErosionOffsetSpline(t,e,i,s,n,r,o,a){const l=this.buildMountainRidgeSplineWithPoints(L(s,.6,1.5),a),h=this.buildMountainRidgeSplineWithPoints(L(s,.6,1),a),u=this.buildMountainRidgeSplineWithPoints(s,a),c=this.ridgeSpline(t-.15,.5*s,L(.5,.5,.5)*s,.5*s,.6*s,.5),d=this.ridgeSpline(t,n*s,e*s,.5*s,.6*s,.5),f=this.ridgeSpline(t,n,n,e,i,.5),g=this.ridgeSpline(t,n,n,e,i,.5),p=new K(this.RIDGES).addPoint(-1,t).addPoint(-.4,f).addPoint(0,i+.07),m=this.ridgeSpline(-.02,r,r,e,i,0),v=new K(this.EROSION).addPoint(-.85,l).addPoint(-.7,h).addPoint(-.4,u).addPoint(-.35,c).addPoint(-.1,d).addPoint(.2,f);return o&&v.addPoint(.4,g).addPoint(.45,p).addPoint(.55,p).addPoint(.58,g),v.addPoint(.7,m),v}static buildMountainRidgeSplineWithPoints(t,e){const i=new K(this.RIDGES),s=this.mountainContinentalness(-1,t,-.7),n=this.mountainContinentalness(1,t,-.7),r=this.calculateMountainRidgeZeroContinentalnessPoint(t);if(-.650?this.buildWeirdnessJaggednessSpline(e):0).addPoint(1,t>0?this.buildWeirdnessJaggednessSpline(t):0)}static buildWeirdnessJaggednessSpline(t){return new K(Lt.WEIRDNESS).addPoint(-.01,.63*t).addPoint(.01,.3*t)}}Lt.GLOBAL_OFFSET=-.50375,Lt.EXTRACTOR=t=>{var e;const i=null!==(e=P.readString(t))&&void 0!==e?e:\"continents\";return Lt.extractor(i)},Lt.CONTINENTS=Lt.extractor(\"continents\"),Lt.EROSION=Lt.extractor(\"erosion\"),Lt.WEIRDNESS=Lt.extractor(\"weirdness\"),Lt.RIDGES=Lt.extractor(\"ridges\"),function(t){t.fromList=function(t){return(e,i,s,n)=>{for(const r of t){const t=r(e,i,s,n);if(t)return t}return null}}}(Et||(Et={}));class Dt{constructor(t,e){this.chunk=t,this.filler=e,this.noise000=0,this.noise001=0,this.noise100=0,this.noise101=0,this.noise010=0,this.noise011=0,this.noise110=0,this.noise111=0,this.valueXZ00=0,this.valueXZ10=0,this.valueXZ01=0,this.valueXZ11=0,this.valueZ0=0,this.valueZ1=0,this.value=0,this.slice0=Dt.allocateSlice(t.cellCountY,t.cellCountXZ),this.slice1=Dt.allocateSlice(t.cellCountY,t.cellCountXZ)}static allocateSlice(t,e){const i=Array(e+1);for(let s=0;st.initializeForFirstCellX()))}advanceCellX(t){this.interpolators.forEach((e=>e.advanceCellX(t)))}selectCellYZ(t,e){this.interpolators.forEach((i=>i.selectCellYZ(t,e)))}updateForY(t){this.interpolators.forEach((e=>e.updateForY(t)))}updateForX(t){this.interpolators.forEach((e=>e.updateForX(t)))}updateForZ(t){this.interpolators.forEach((e=>e.updateForZ(t)))}swapSlices(){this.interpolators.forEach((t=>t.swapSlices()))}updateNoiseAndGenerateBaseState(t,e,i){return this.baseNoise(t,e,i)}}!function(t){t.create=function(t,e,i){return{offset:t,factor:e,jaggedness:i}}}(At||(At={})),function(t){t.create=function(t,e,i){const s=e+t.getOffset(e,0,i),n=i+t.getOffset(i,e,0),r=t.getContinentalness(s,n),o=t.getWeirdness(s,n),a=t.getErosion(s,n);return{shiftedX:s,shiftedZ:n,continentalness:r,weirdness:o,erosion:a,terrainInfo:t.getTerrainInfo(s<<2,n<<2,r,o,a)}}}(Ct||(Ct={})),function(t){t.fromJson=function(t){var e,i,s,n,r,o,a,l,h,u,c,d;const f=null!==(e=P.readObject(t))&&void 0!==e?e:{};return{minY:null!==(i=P.readInt(f.min_y))&&void 0!==i?i:0,height:null!==(s=P.readInt(f.height))&&void 0!==s?s:256,xzSize:null!==(n=P.readInt(f.size_horizontal))&&void 0!==n?n:1,ySize:null!==(r=P.readInt(f.size_vertical))&&void 0!==r?r:1,densityFactor:null!==(o=P.readNumber(f.density_factor))&&void 0!==o?o:0,densityOffset:null!==(a=P.readNumber(f.density_offset))&&void 0!==a?a:0,sampling:A.fromJson(f.sampling),topSlide:Nt.fromJson(f.top_slide),bottomSlide:Nt.fromJson(f.bottom_slide),terrainShaper:Lt.fromJson(f.terrain_shaper),useSimplexSurfaceNoise:null!==(l=P.readBoolean(f.simplex_surface_noise))&&void 0!==l&&l,randomDensityOffset:null!==(h=P.readBoolean(f.random_density_offset))&&void 0!==h&&h,islandNoiseOverride:null!==(u=P.readBoolean(f.island_noise_override))&&void 0!==u&&u,isAmplified:null!==(c=P.readBoolean(f.amplified))&&void 0!==c&&c,useLegacyRandom:null!==(d=P.readBoolean(f.use_legacy_random))&&void 0!==d&&d}}}(Rt||(Rt={})),function(t){t.fromJson=function(t){var e,i,s,n;const r=null!==(e=P.readObject(t))&&void 0!==e?e:{};return{target:null!==(i=P.readNumber(r.target))&&void 0!==i?i:0,size:null!==(s=P.readInt(r.size))&&void 0!==s?s:0,offset:null!==(n=P.readInt(r.offset))&&void 0!==n?n:0}},t.apply=function(t,e,i){if(t.size<=0)return e;const s=(i-t.offset)/t.size;return X(t.target,e,s)}}(Nt||(Nt={}));class Xt{constructor(t,e,i,s,n,r,o=!1){if(this.cellWidth=t,this.cellHeight=e,this.cellCountY=i,this.settings=s,o){const i=new V(r),o=s.useLegacyRandom?new V(r):i.fork();this.blendedNoise=new H(o,s.sampling,t,e),i.consume(8),this.temperatureNoise=new G(new V(r),n.temperature),this.humidityNoise=new G(new V(r+BigInt(1)),n.humidity),this.continentalnessNoise=new G(new V(r+BigInt(2)),n.continentalness),this.erosionNoise=new G(new V(r+BigInt(3)),n.erosion),this.weirdnessNoise=new G(new V(r+BigInt(4)),n.weirdness),this.offsetNoise=new G(new V(r+BigInt(5)),n.shift),this.jaggedNoise=new G(i.fork(),{firstOctave:-16,amplitudes:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]})}else{const i=W.create(r).fork();this.blendedNoise=new H(i.forkWithHashOf(\"minecraft:terrain\"),s.sampling,t,e),this.temperatureNoise=new G(i.forkWithHashOf(\"minecraft:temperature\"),n.temperature),this.humidityNoise=new G(i.forkWithHashOf(\"minecraft:vegetation\"),n.humidity),this.continentalnessNoise=new G(i.forkWithHashOf(\"minecraft:continentalness\"),n.continentalness),this.erosionNoise=new G(i.forkWithHashOf(\"minecraft:erosion\"),n.erosion),this.weirdnessNoise=new G(i.forkWithHashOf(\"minecraft:ridge\"),n.weirdness),this.offsetNoise=new G(i.forkWithHashOf(\"minecraft:offset\"),n.shift),this.jaggedNoise=new G(i.forkWithHashOf(\"minecraft:jagged\"),{firstOctave:-16,amplitudes:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]})}this.shaper=s.terrainShaper,this.baseNoise=t=>{const e=t.createNoiseInterpolator(((e,i,s)=>this.calculateBaseNoise(e,i,s,t.getTerrainInfo(e>>2,s>>2))));return()=>e.sample()}}sample(t,e,i){const s=t+this.getOffset(t,0,i),n=i+this.getOffset(i,t,0),r=this.getContinentalness(s,n),o=this.getErosion(s,n),a=this.getWeirdness(s,n),l=this.shaper.offset(Lt.point(r,o,a));return this.target(t,e,i,s,n,r,o,a,l)}target(t,e,i,s,n,r,o,a,l){const h=e+this.getOffset(e,i,t),u=this.getTemperature(s,h,n),c=this.getHumidity(s,h,n),d=this.computeDimensionDensity(e<<2)+l;return Pt.target(u,c,r,o,d,a)}getOffset(t,e,i){return 4*this.offsetNoise.sample(t,e,i)}getTemperature(t,e,i){return this.temperatureNoise.sample(t,e,i)}getHumidity(t,e,i){return this.humidityNoise.sample(t,e,i)}getContinentalness(t,e){return this.continentalnessNoise.sample(t,0,e)}getErosion(t,e){return this.erosionNoise.sample(t,0,e)}getWeirdness(t,e){return this.weirdnessNoise.sample(t,0,e)}getTerrainInfo(t,e,i,s,n){const r=Lt.point(i,s,n);return At.create(this.shaper.offset(r),this.shaper.factor(r),this.shaper.jaggedness(r))}makeBaseNoiseFiller(t,e){const i=this.baseNoise(t);return(t,s,n)=>{let r=i();return r=M(.64*r,-1,1),r=r/2-r*r*r/24,r+=e(t,s,n),r>0?null:N.AIR}}calculateBaseNoise(t,e,i,s){let n=this.blendedNoise.sample(t,e,i);if(s){const r=this.sampleJaggedNoise(s.jaggedness,t,i),o=this.computeDimensionDensity(e),a=s.factor*(s.offset+r+o);n+=a>0?4*a:a}return n=M(n,-64,64),n=this.applySlide(n,e/this.cellHeight),n=M(n,-64,64),n}sampleJaggedNoise(t,e,i){if(0===t)return 0;const s=this.jaggedNoise.sample(1500*e,0,1500*i);return s>0?t*s:t/2*s}computeDimensionDensity(t){return(1-t/128)*this.settings.densityFactor+this.settings.densityOffset}applySlide(t,e){const i=e-Math.floor(this.settings.minY/this.cellHeight);return t=Nt.apply(this.settings.topSlide,t,this.cellCountY-i),t=Nt.apply(this.settings.bottomSlide,t,i)}}class zt{constructor(t,e,i){this.biomeSource=e,this.settings=i,this.cellHeight=i.noise.ySize<<2,this.cellWidth=i.noise.xzSize<<2,this.cellCountXZ=Math.floor(16/this.cellWidth),this.cellCountY=Math.floor(i.noise.height/this.cellHeight),this.sampler=new Xt(this.cellWidth,this.cellHeight,this.cellCountY,i.noise,i.octaves,t,i.legacyRandomSource),this.materialRule=Et.fromList([(t,e,i,s)=>t.updateNoiseAndGenerateBaseState(e,i,s)])}fillBiomes(t){const e=Math.max(t.minY,this.settings.noise.minY),i=Math.min(t.maxY,this.settings.noise.minY+this.settings.noise.height),s=Math.floor(e/this.cellHeight);Math.floor((i-e)/this.cellHeight);const n=E.minBlockX(t.pos),r=E.minBlockZ(t.pos),o=new Ut(this.cellWidth,this.cellHeight,this.cellCountXZ,this.cellCountY,s,this.sampler,n,r,(()=>0));for(let e=0;em))}}}fill(t){var e;const i=Math.max(t.minY,this.settings.noise.minY),s=Math.min(t.maxY,this.settings.noise.minY+this.settings.noise.height),n=Math.floor(i/this.cellHeight),r=Math.floor((s-i)/this.cellHeight),o=E.minBlockX(t.pos),a=E.minBlockZ(t.pos),l=new Ut(this.cellWidth,this.cellHeight,this.cellCountXZ,this.cellCountY,n,this.sampler,o,a,(()=>0));l.initializeForFirstCellX();for(let i=0;i=0;u-=1){l.selectCellYZ(u,s);for(let r=this.cellHeight-1;r>=0;r-=1){const c=(n+u)*this.cellHeight+r,d=15&c,f=t.getSectionIndex(c);t.getSectionIndex(h.minBlockY)!==f&&(h=t.getOrCreateSection(f));const g=r/this.cellHeight;l.updateForY(g);for(let t=0;t{var e,i,s;return{distance:null!==(e=P.readInt(t.distance))&&void 0!==e?e:0,spread:null!==(i=P.readInt(t.spread))&&void 0!==i?i:0,count:null!==(s=P.readInt(t.count))&&void 0!==s?s:0}})),structures:P.readMap(i.structures,(t=>{var e;return(t=>{var e,i,s;return{spacing:null!==(e=P.readInt(t.spacing))&&void 0!==e?e:0,separation:null!==(i=P.readInt(t.separation))&&void 0!==i?i:0,salt:null!==(s=P.readInt(t.salt))&&void 0!==s?s:0}})(null!==(e=P.readObject(t))&&void 0!==e?e:{})}))}}}(Tt||(Tt={})),function(t){t.fromJson=function(t){var e;const i=null!==(e=P.readObject(t))&&void 0!==e?e:{};return{temperature:C.fromJson(i.temperature),humidity:C.fromJson(i.humidity),continentalness:C.fromJson(i.continentalness),erosion:C.fromJson(i.erosion),weirdness:C.fromJson(i.weirdness),shift:C.fromJson(i.shift)}}}(_t||(_t={}));export{H as BlendedNoise,lt as BlockColors,dt as BlockDefinition,vt as BlockModel,a as BlockPos,N as BlockState,T as Chunk,E as ChunkPos,k as ChunkSection,Pt as Climate,q as ConstantProvider,r as Direction,Ot as FixedBiome,Ct as FlatNoiseData,J as ImprovedNoise,P as Json,V as LegacyRandom,Et as MaterialRule,Mt as MultiNoise,u as NbtReader,c as NbtWriter,Ut as NoiseChunk,zt as NoiseChunkGenerator,kt as NoiseGeneratorSettings,Dt as NoiseInterpolator,_t as NoiseOctaves,C as NoiseParameters,Xt as NoiseSampler,A as NoiseSamplingSettings,Rt as NoiseSettings,Nt as NoiseSlideSettings,G as NormalNoise,R as NumberProvider,Z as PerlinNoise,$ as PerlinSimplexNoise,Y as SimplexNoise,K as Spline,_ as Structure,St as StructureRenderer,Tt as StructureSettings,At as TerrainInfo,Lt as TerrainShaper,It as TextureAtlas,W as XoroshiroRandom,j as binarySearch,M as clamp,X as clampedLerp,B as getListTag,I as getOptional,S as getTag,L as lerp,D as lerp2,U as lerp3,g as read,m as readChunk,f as readCompressed,p as readRegion,d as readUncompressed,z as smoothstep,O as square,h as tagNames,l as tagTypes,w as write,y as writeChunk,b as writeCompressed,F as writeRegion,v as writeUncompressed};\n//# sourceMappingURL=deepslate.esm.js.map\n","\nlet wasm;\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nconst u32CvtShim = new Uint32Array(2);\n\nconst int64CvtShim = new BigInt64Array(u32CvtShim.buffer);\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nlet cachegetFloat64Memory0 = null;\nfunction getFloat64Memory0() {\n if (cachegetFloat64Memory0 === null || cachegetFloat64Memory0.buffer !== wasm.memory.buffer) {\n cachegetFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachegetFloat64Memory0;\n}\n\nfunction getArrayF64FromWasm0(ptr, len) {\n return getFloat64Memory0().subarray(ptr / 8, ptr / 8 + len);\n}\n/**\n* @param {BigInt} seed\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Float64Array}\n*/\nexport function improved_noise(seed, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n int64CvtShim[0] = seed;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.improved_noise(retptr, low0, high0, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayF64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArrayF64ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 8);\n getFloat64Memory0().set(arg, ptr / 8);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* @param {BigInt} seed\n* @param {number} first_octave\n* @param {Float64Array} amplitudes\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Float64Array}\n*/\nexport function perlin_noise(seed, first_octave, amplitudes, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n int64CvtShim[0] = seed;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n var ptr1 = passArrayF64ToWasm0(amplitudes, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n wasm.perlin_noise(retptr, low0, high0, first_octave, ptr1, len1, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v2 = getArrayF64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {BigInt} seed\n* @param {number} first_octave\n* @param {Float64Array} amplitudes\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Float64Array}\n*/\nexport function normal_noise(seed, first_octave, amplitudes, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n int64CvtShim[0] = seed;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n var ptr1 = passArrayF64ToWasm0(amplitudes, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n wasm.normal_noise(retptr, low0, high0, first_octave, ptr1, len1, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v2 = getArrayF64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nlet cachegetUint32Memory0 = null;\nfunction getUint32Memory0() {\n if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachegetUint32Memory0;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4);\n getUint32Memory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* @param {Float64Array} t_min\n* @param {Float64Array} t_max\n* @param {Float64Array} h_min\n* @param {Float64Array} h_max\n* @param {Float64Array} c_min\n* @param {Float64Array} c_max\n* @param {Float64Array} e_min\n* @param {Float64Array} e_max\n* @param {Float64Array} w_min\n* @param {Float64Array} w_max\n* @param {Float64Array} d_min\n* @param {Float64Array} d_max\n* @param {Float64Array} offset\n* @param {Int32Array} biome\n* @returns {ParameterList}\n*/\nexport function biome_parameters(t_min, t_max, h_min, h_max, c_min, c_max, e_min, e_max, w_min, w_max, d_min, d_max, offset, biome) {\n var ptr0 = passArrayF64ToWasm0(t_min, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passArrayF64ToWasm0(t_max, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passArrayF64ToWasm0(h_min, wasm.__wbindgen_malloc);\n var len2 = WASM_VECTOR_LEN;\n var ptr3 = passArrayF64ToWasm0(h_max, wasm.__wbindgen_malloc);\n var len3 = WASM_VECTOR_LEN;\n var ptr4 = passArrayF64ToWasm0(c_min, wasm.__wbindgen_malloc);\n var len4 = WASM_VECTOR_LEN;\n var ptr5 = passArrayF64ToWasm0(c_max, wasm.__wbindgen_malloc);\n var len5 = WASM_VECTOR_LEN;\n var ptr6 = passArrayF64ToWasm0(e_min, wasm.__wbindgen_malloc);\n var len6 = WASM_VECTOR_LEN;\n var ptr7 = passArrayF64ToWasm0(e_max, wasm.__wbindgen_malloc);\n var len7 = WASM_VECTOR_LEN;\n var ptr8 = passArrayF64ToWasm0(w_min, wasm.__wbindgen_malloc);\n var len8 = WASM_VECTOR_LEN;\n var ptr9 = passArrayF64ToWasm0(w_max, wasm.__wbindgen_malloc);\n var len9 = WASM_VECTOR_LEN;\n var ptr10 = passArrayF64ToWasm0(d_min, wasm.__wbindgen_malloc);\n var len10 = WASM_VECTOR_LEN;\n var ptr11 = passArrayF64ToWasm0(d_max, wasm.__wbindgen_malloc);\n var len11 = WASM_VECTOR_LEN;\n var ptr12 = passArrayF64ToWasm0(offset, wasm.__wbindgen_malloc);\n var len12 = WASM_VECTOR_LEN;\n var ptr13 = passArray32ToWasm0(biome, wasm.__wbindgen_malloc);\n var len13 = WASM_VECTOR_LEN;\n var ret = wasm.biome_parameters(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7, ptr8, len8, ptr9, len9, ptr10, len10, ptr11, len11, ptr12, len12, ptr13, len13);\n return ParameterList.__wrap(ret);\n}\n\n/**\n* @param {number} first_octave\n* @param {Float64Array} amplitudes\n* @returns {NoiseParameters}\n*/\nexport function noise_parameters(first_octave, amplitudes) {\n var ptr0 = passArrayF64ToWasm0(amplitudes, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.noise_parameters(first_octave, ptr0, len0);\n return NoiseParameters.__wrap(ret);\n}\n\n/**\n* @param {BigInt} seed\n* @param {number} t_first\n* @param {Float64Array} t_amplitudes\n* @param {number} h_first\n* @param {Float64Array} h_amplitudes\n* @param {number} c_first\n* @param {Float64Array} c_amplitudes\n* @param {number} e_first\n* @param {Float64Array} e_amplitudes\n* @param {number} w_first\n* @param {Float64Array} w_amplitudes\n* @param {number} s_first\n* @param {Float64Array} s_amplitudes\n* @returns {Sampler}\n*/\nexport function climate_sampler(seed, t_first, t_amplitudes, h_first, h_amplitudes, c_first, c_amplitudes, e_first, e_amplitudes, w_first, w_amplitudes, s_first, s_amplitudes) {\n int64CvtShim[0] = seed;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n var ptr1 = passArrayF64ToWasm0(t_amplitudes, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passArrayF64ToWasm0(h_amplitudes, wasm.__wbindgen_malloc);\n var len2 = WASM_VECTOR_LEN;\n var ptr3 = passArrayF64ToWasm0(c_amplitudes, wasm.__wbindgen_malloc);\n var len3 = WASM_VECTOR_LEN;\n var ptr4 = passArrayF64ToWasm0(e_amplitudes, wasm.__wbindgen_malloc);\n var len4 = WASM_VECTOR_LEN;\n var ptr5 = passArrayF64ToWasm0(w_amplitudes, wasm.__wbindgen_malloc);\n var len5 = WASM_VECTOR_LEN;\n var ptr6 = passArrayF64ToWasm0(s_amplitudes, wasm.__wbindgen_malloc);\n var len6 = WASM_VECTOR_LEN;\n var ret = wasm.climate_sampler(low0, high0, t_first, ptr1, len1, h_first, ptr2, len2, c_first, ptr3, len3, e_first, ptr4, len4, w_first, ptr5, len5, s_first, ptr6, len6);\n return Sampler.__wrap(ret);\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n/**\n* @param {ParameterList} parameters\n* @param {Float64Array} target\n* @returns {number}\n*/\nexport function find_biome(parameters, target) {\n _assertClass(parameters, ParameterList);\n var ptr0 = passArrayF64ToWasm0(target, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.find_biome(parameters.ptr, ptr0, len0);\n return ret;\n}\n\nfunction getArrayI32FromWasm0(ptr, len) {\n return getInt32Memory0().subarray(ptr / 4, ptr / 4 + len);\n}\n/**\n* @param {ParameterList} parameters\n* @param {Sampler} sampler\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Int32Array}\n*/\nexport function multi_noise(parameters, sampler, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(parameters, ParameterList);\n _assertClass(sampler, Sampler);\n wasm.multi_noise(retptr, parameters.ptr, sampler.ptr, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayI32FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {Sampler} sampler\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Float64Array}\n*/\nexport function climate_noise(sampler, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(sampler, Sampler);\n wasm.climate_noise(retptr, sampler.ptr, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayF64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} x\n* @returns {Test}\n*/\nexport function create_test(x) {\n var ret = wasm.create_test(x);\n return Test.__wrap(ret);\n}\n\n/**\n* @param {Test} test\n* @returns {number}\n*/\nexport function calc_test(test) {\n _assertClass(test, Test);\n var ret = wasm.calc_test(test.ptr);\n return ret;\n}\n\n/**\n*/\nexport class ImprovedNoise {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_improvednoise_free(ptr);\n }\n}\n/**\n*/\nexport class NoiseOctaves {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_noiseoctaves_free(ptr);\n }\n}\n/**\n*/\nexport class NoiseParameters {\n\n static __wrap(ptr) {\n const obj = Object.create(NoiseParameters.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_noiseparameters_free(ptr);\n }\n}\n/**\n*/\nexport class NormalNoise {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_normalnoise_free(ptr);\n }\n}\n/**\n*/\nexport class ParameterList {\n\n static __wrap(ptr) {\n const obj = Object.create(ParameterList.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_parameterlist_free(ptr);\n }\n}\n/**\n*/\nexport class PerlinNoise {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_perlinnoise_free(ptr);\n }\n}\n/**\n*/\nexport class Sampler {\n\n static __wrap(ptr) {\n const obj = Object.create(Sampler.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_sampler_free(ptr);\n }\n}\n/**\n*/\nexport class Test {\n\n static __wrap(ptr) {\n const obj = Object.create(Test.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_test_free(ptr);\n }\n}\n\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nasync function init(input) {\n if (typeof input === 'undefined') {\n input = new URL('deepslate_rs_bg.wasm', import.meta.url);\n }\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n\n\n const { instance, module } = await load(await input, imports);\n\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport default init;\n\n","export default \"__VITE_ASSET__4990c219__\"","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCollections = void 0;\r\nfunction initCollections(collections) {\r\n collections.register('advancement_trigger', [\r\n 'minecraft:bee_nest_destroyed',\r\n 'minecraft:bred_animals',\r\n 'minecraft:brewed_potion',\r\n 'minecraft:changed_dimension',\r\n 'minecraft:channeled_lightning',\r\n 'minecraft:construct_beacon',\r\n 'minecraft:consume_item',\r\n 'minecraft:cured_zombie_villager',\r\n 'minecraft:effects_changed',\r\n 'minecraft:enchanted_item',\r\n 'minecraft:enter_block',\r\n 'minecraft:entity_hurt_player',\r\n 'minecraft:entity_killed_player',\r\n 'minecraft:filled_bucket',\r\n 'minecraft:fishing_rod_hooked',\r\n 'minecraft:hero_of_the_village',\r\n 'minecraft:impossible',\r\n 'minecraft:inventory_changed',\r\n 'minecraft:item_durability_changed',\r\n 'minecraft:killed_by_crossbow',\r\n 'minecraft:levitation',\r\n 'minecraft:location',\r\n 'minecraft:nether_travel',\r\n 'minecraft:placed_block',\r\n 'minecraft:player_hurt_entity',\r\n 'minecraft:player_killed_entity',\r\n 'minecraft:recipe_unlocked',\r\n 'minecraft:shot_crossbow',\r\n 'minecraft:safely_harvest_honey',\r\n 'minecraft:slept_in_bed',\r\n 'minecraft:slide_down_block',\r\n 'minecraft:summoned_entity',\r\n 'minecraft:tame_animal',\r\n 'minecraft:tick',\r\n 'minecraft:used_ender_eye',\r\n 'minecraft:used_totem',\r\n 'minecraft:villager_trade',\r\n 'minecraft:voluntary_exile'\r\n ]);\r\n collections.register('loot_pool_entry_type', [\r\n 'minecraft:empty',\r\n 'minecraft:item',\r\n 'minecraft:tag',\r\n 'minecraft:loot_table',\r\n 'minecraft:alternatives',\r\n 'minecraft:sequence',\r\n 'minecraft:group',\r\n 'minecraft:dynamic'\r\n ]);\r\n collections.register('loot_condition_type', [\r\n 'minecraft:alternative',\r\n 'minecraft:inverted',\r\n 'minecraft:reference',\r\n 'minecraft:entity_properties',\r\n 'minecraft:block_state_property',\r\n 'minecraft:match_tool',\r\n 'minecraft:damage_source_properties',\r\n 'minecraft:location_check',\r\n 'minecraft:weather_check',\r\n 'minecraft:time_check',\r\n 'minecraft:entity_scores',\r\n 'minecraft:random_chance',\r\n 'minecraft:random_chance_with_looting',\r\n 'minecraft:table_bonus',\r\n 'minecraft:killed_by_player',\r\n 'minecraft:survives_explosion'\r\n ]);\r\n collections.register('loot_function_type', [\r\n 'minecraft:set_count',\r\n 'minecraft:set_damage',\r\n 'minecraft:set_name',\r\n 'minecraft:set_lore',\r\n 'minecraft:set_nbt',\r\n 'minecraft:set_attributes',\r\n 'minecraft:set_contents',\r\n 'minecraft:enchant_randomly',\r\n 'minecraft:enchant_with_levels',\r\n 'minecraft:looting_enchant',\r\n 'minecraft:limit_count',\r\n 'minecraft:furnace_smelt',\r\n 'minecraft:explosion_decay',\r\n 'minecraft:fill_player_head',\r\n 'minecraft:copy_name',\r\n 'minecraft:copy_nbt',\r\n 'minecraft:copy_state',\r\n 'minecraft:apply_bonus',\r\n 'minecraft:exploration_map',\r\n 'minecraft:set_stew_effect'\r\n ]);\r\n collections.register('attribute', [\r\n 'generic.maxHealth',\r\n 'generic.followRange',\r\n 'generic.knockbackResistance',\r\n 'generic.movementSpeed',\r\n 'generic.attackDamage',\r\n 'generic.armor',\r\n 'generic.armorToughness',\r\n 'generic.attackSpeed',\r\n 'generic.luck',\r\n 'horse.jumpStrength',\r\n 'generic.attackKnockback',\r\n 'generic.flyingSpeed',\r\n 'zombie.spawnReinforcements'\r\n ]);\r\n collections.register('structure_feature', [\r\n 'pillager_outpost',\r\n 'mineshaft',\r\n 'mansion',\r\n 'jungle_pyramid',\r\n 'desert_pyramid',\r\n 'igloo',\r\n 'shipwreck',\r\n 'swamp_hut',\r\n 'stronghold',\r\n 'monument',\r\n 'ocean_ruin',\r\n 'fortress',\r\n 'endcity',\r\n 'buried_treasure',\r\n 'village'\r\n ]);\r\n collections.register('dimension', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('keybind', [\r\n 'key.advancements',\r\n 'key.attack',\r\n 'key.back',\r\n 'key.chat',\r\n 'key.command',\r\n 'key.drop',\r\n 'key.forward',\r\n 'key.fullscreen',\r\n 'key.hotbar.1',\r\n 'key.hotbar.2',\r\n 'key.hotbar.3',\r\n 'key.hotbar.4',\r\n 'key.hotbar.5',\r\n 'key.hotbar.6',\r\n 'key.hotbar.7',\r\n 'key.hotbar.8',\r\n 'key.hotbar.9',\r\n 'key.inventory',\r\n 'key.jump',\r\n 'key.left',\r\n 'key.loadToolbarActivator',\r\n 'key.pickItem',\r\n 'key.playerlist',\r\n 'key.right',\r\n 'key.saveToolbarActivator',\r\n 'key.screenshot',\r\n 'key.smoothCamera',\r\n 'key.sneak',\r\n 'key.spectatorOutlines',\r\n 'key.sprint',\r\n 'key.swapOffhand',\r\n 'key.togglePerspective',\r\n 'key.use'\r\n ]);\r\n collections.register('slot', [\r\n 'mainhand',\r\n 'offhand',\r\n 'head',\r\n 'chest',\r\n 'legs',\r\n 'feet'\r\n ]);\r\n collections.register('gamemode', [\r\n 'survival',\r\n 'creative',\r\n 'adventure',\r\n 'spectator'\r\n ]);\r\n collections.register('entity_source', [\r\n 'this',\r\n 'direct_killer',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('copy_source', [\r\n 'block_entity',\r\n 'this',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('loot_table_apply_bonus_formula', [\r\n 'minecraft:uniform_bonus_count',\r\n 'minecraft:binomial_with_bonus_count',\r\n 'minecraft:ore_drops'\r\n ]);\r\n collections.register('map_decoration', [\r\n 'mansion',\r\n 'monument',\r\n 'player',\r\n 'frame',\r\n 'red_marker',\r\n 'blue_marker',\r\n 'target_x',\r\n 'target_point',\r\n 'player_off_map',\r\n 'player_off_limits',\r\n 'red_x',\r\n 'banner_white',\r\n 'banner_orange',\r\n 'banner_magenta',\r\n 'banner_light_blue',\r\n 'banner_yellow',\r\n 'banner_lime',\r\n 'banner_pink',\r\n 'banner_gray',\r\n 'banner_light_gray',\r\n 'banner_cyan',\r\n 'banner_purple',\r\n 'banner_blue',\r\n 'banner_brown',\r\n 'banner_green',\r\n 'banner_red',\r\n 'banner_black'\r\n ]);\r\n collections.register('recipe_group', [\r\n 'bed',\r\n 'light_gray_dye',\r\n 'iron_ingot',\r\n 'wooden_stairs',\r\n 'black_dye',\r\n 'stained_terracotta',\r\n 'dyed_bed',\r\n 'magenta_dye',\r\n 'bark',\r\n 'rabbit_stew',\r\n 'light_blue_dye',\r\n 'wooden_fence_gate',\r\n 'planks',\r\n 'stained_glass',\r\n 'wooden_door',\r\n 'stained_glass_pane',\r\n 'wooden_fence',\r\n 'sticks',\r\n 'concrete_powder',\r\n 'wooden_pressure_plate',\r\n 'boat',\r\n 'brown_dye',\r\n 'yellow_dye',\r\n 'bonemeal',\r\n 'red_dye',\r\n 'wooden_trapdoor',\r\n 'wooden_button',\r\n 'gold_ingot',\r\n 'pink_dye',\r\n 'wooden_slab',\r\n 'orange_dye',\r\n 'carpet',\r\n 'sign',\r\n 'wool',\r\n 'sugar',\r\n 'blue_dye',\r\n 'white_dye',\r\n 'banner',\r\n 'netherite_ingot'\r\n ]);\r\n collections.register('loot_context_type', [\r\n 'minecraft:empty',\r\n 'minecraft:chest',\r\n 'minecraft:command',\r\n 'minecraft:selector',\r\n 'minecraft:fishing',\r\n 'minecraft:entity',\r\n 'minecraft:gift',\r\n 'minecraft:barter',\r\n 'minecraft:advancement_reward',\r\n 'minecraft:advancement_entity',\r\n 'minecraft:generic',\r\n 'minecraft:block'\r\n ]);\r\n}\r\nexports.initCollections = initCollections;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCommonSchemas = exports.Range = exports.ConditionCases = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initCommonSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('block_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'Name' }] } } }))\r\n }, { context: 'block_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('fluid_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'fluid' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode()))\r\n }, { context: 'fluid_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:water',\r\n Properties: {\r\n 'level': '0'\r\n }\r\n })\r\n }));\r\n schemas.register('block_pos', core_1.Mod(core_1.ListNode(core_1.NumberNode({ integer: true })), {\r\n default: () => [0, 0, 0]\r\n }));\r\n exports.Range = (config) => core_1.ChoiceNode([\r\n ...((config === null || config === void 0 ? void 0 : config.forceRange) ? [] : [{\r\n type: 'number',\r\n node: core_1.NumberNode(config),\r\n change: (v) => { var _a, _b, _c; return v === undefined ? 0 : (_c = (_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : v.n) !== null && _c !== void 0 ? _c : 0; }\r\n }]),\r\n {\r\n type: 'object',\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n min: (config === null || config === void 0 ? void 0 : config.bounds) ? core_1.NumberNode(config) : core_1.Opt(core_1.NumberNode(config)),\r\n max: (config === null || config === void 0 ? void 0 : config.bounds) ? core_1.NumberNode(config) : core_1.Opt(core_1.NumberNode(config))\r\n }, { context: 'range' }),\r\n change: (v) => ({\r\n min: typeof v === 'number' ? v : v === undefined ? 1 : v.n,\r\n max: typeof v === 'number' ? v : v === undefined ? 1 : v.n\r\n })\r\n },\r\n ...((config === null || config === void 0 ? void 0 : config.allowBinomial) ? [{\r\n type: 'binomial',\r\n node: core_1.ObjectNode({\r\n type: StringNode({ enum: ['minecraft:binomial'] }),\r\n n: core_1.NumberNode({ integer: true, min: 0 }),\r\n p: core_1.NumberNode({ min: 0, max: 1 })\r\n }, { context: 'range' }),\r\n match: (v) => v !== undefined && v.type === 'minecraft:binomial',\r\n change: (v) => {\r\n var _a, _b;\r\n return ({\r\n type: 'minecraft:binomial',\r\n n: typeof v === 'number' ? v : v === undefined ? 1 : ((_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : 1),\r\n p: 0.5\r\n });\r\n }\r\n }] : [])\r\n ], { choiceContext: 'range' });\r\n exports.ConditionCases = {\r\n 'minecraft:alternative': {\r\n terms: core_1.ListNode(Reference('condition'))\r\n },\r\n 'minecraft:block_state_property': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })\r\n },\r\n 'minecraft:damage_source_properties': {\r\n predicate: Reference('damage_source_predicate')\r\n },\r\n 'minecraft:entity_properties': {\r\n entity: StringNode({ enum: 'entity_source' }),\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: StringNode({ enum: 'entity_source' }),\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), exports.Range({ forceRange: true, bounds: true }))\r\n },\r\n 'minecraft:inverted': {\r\n term: Reference('condition')\r\n },\r\n 'minecraft:killed_by_player': {\r\n inverse: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:location_check': {\r\n offsetX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetY: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n predicate: Reference('location_predicate')\r\n },\r\n 'minecraft:match_tool': {\r\n predicate: Reference('item_predicate')\r\n },\r\n 'minecraft:random_chance': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_chance_with_looting': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n looting_multiplier: core_1.NumberNode()\r\n },\r\n 'minecraft:reference': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$predicate' } })\r\n },\r\n 'minecraft:table_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n chances: core_1.ListNode(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:time_check': {\r\n value: exports.Range(),\r\n period: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:weather_check': {\r\n raining: core_1.Opt(core_1.BooleanNode()),\r\n thundering: core_1.Opt(core_1.BooleanNode())\r\n }\r\n };\r\n}\r\nexports.initCommonSchemas = initCommonSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPredicatesSchemas = exports.LocationFields = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initPredicatesSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const StateChoice = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode(),\r\n change: v => (typeof v === 'boolean' || typeof v === 'number') ? v.toString() : ''\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => (typeof v === 'string') ? parseInt(v) : 0\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }),\r\n change: v => (typeof v === 'number') ? ({ min: v, max: v }) : ({})\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => v === 'true' || v === 1\r\n }\r\n ]);\r\n schemas.register('item_predicate', core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } })),\r\n count: core_1.Opt(Common_1.Range()),\r\n durability: core_1.Opt(Common_1.Range()),\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } })),\r\n enchantments: core_1.Opt(core_1.ListNode(Reference('enchantment_predicate')))\r\n }, { context: 'item' }));\r\n schemas.register('enchantment_predicate', core_1.ObjectNode({\r\n enchantment: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })),\r\n levels: core_1.Opt(Common_1.Range())\r\n }, { context: 'enchantment' }));\r\n schemas.register('block_predicate', core_1.ObjectNode({\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block', id: ['pop', { push: 'block' }] } } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice, { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n }, { context: 'block' }));\r\n schemas.register('fluid_predicate', core_1.ObjectNode({\r\n fluid: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'fluid' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/fluid' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice))\r\n }, { context: 'fluid' }));\r\n exports.LocationFields = {\r\n position: core_1.Opt(core_1.ObjectNode({\r\n x: core_1.Opt(Common_1.Range()),\r\n y: core_1.Opt(Common_1.Range()),\r\n z: core_1.Opt(Common_1.Range())\r\n })),\r\n biome: core_1.Opt(StringNode({ enum: 'biome' })),\r\n feature: core_1.Opt(StringNode({ enum: 'structure_feature' })),\r\n dimension: core_1.Opt(StringNode({ enum: 'dimension' })),\r\n light: core_1.Opt(core_1.ObjectNode({\r\n light: core_1.Opt(Common_1.Range({ integer: true, min: 0, max: 15 }))\r\n })),\r\n block: core_1.Opt(Reference('block_predicate')),\r\n fluid: core_1.Opt(Reference('fluid_predicate'))\r\n };\r\n schemas.register('location_predicate', core_1.ObjectNode(exports.LocationFields, { context: 'location' }));\r\n schemas.register('statistic_predicate', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'stat_type' } }),\r\n stat: StringNode(),\r\n value: Common_1.Range(),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:mined': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:crafted': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:used': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:broken': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:picked_up': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:dropped': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:killed': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:killed_by': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:custom': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'custom_stat' } })\r\n }\r\n }\r\n }));\r\n schemas.register('player_predicate', core_1.ObjectNode({\r\n gamemode: core_1.Opt(StringNode({ enum: 'gamemode' })),\r\n level: core_1.Opt(Common_1.Range()),\r\n advancements: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$advancement' } }), core_1.ChoiceNode([\r\n { type: 'boolean', node: core_1.BooleanNode(), change: _ => true },\r\n {\r\n type: 'object', node: core_1.MapNode(StringNode(), core_1.BooleanNode())\r\n }\r\n ]))),\r\n recipes: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }), core_1.BooleanNode())),\r\n stats: core_1.Opt(core_1.ListNode(Reference('statistic_predicate')))\r\n }, { context: 'player' }));\r\n schemas.register('status_effect_predicate', core_1.ObjectNode({\r\n amplifier: core_1.Opt(Common_1.Range()),\r\n duration: core_1.Opt(Common_1.Range()),\r\n ambient: core_1.Opt(core_1.BooleanNode()),\r\n visible: core_1.Opt(core_1.BooleanNode())\r\n }, { context: 'status_effect' }));\r\n schemas.register('distance_predicate', core_1.ObjectNode({\r\n x: core_1.Opt(Common_1.Range()),\r\n y: core_1.Opt(Common_1.Range()),\r\n z: core_1.Opt(Common_1.Range()),\r\n absolute: core_1.Opt(Common_1.Range()),\r\n horizontal: core_1.Opt(Common_1.Range())\r\n }, { context: 'distance' }));\r\n schemas.register('entity_predicate', core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'entity_type', allowTag: true } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:entity', id: ['pop', { push: 'type' }] } } })),\r\n team: core_1.Opt(StringNode({ validator: 'team' })),\r\n location: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n flags: core_1.Opt(core_1.ObjectNode({\r\n is_on_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_sneaking: core_1.Opt(core_1.BooleanNode()),\r\n is_sprinting: core_1.Opt(core_1.BooleanNode()),\r\n is_swimming: core_1.Opt(core_1.BooleanNode()),\r\n is_baby: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n equipment: core_1.Opt(core_1.MapNode(StringNode({ enum: 'slot' }), Reference('item_predicate'))),\r\n player: core_1.Opt(Reference('player_predicate')),\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n }, { context: 'entity' }));\r\n schemas.register('damage_source_predicate', core_1.ObjectNode({\r\n is_explosion: core_1.Opt(core_1.BooleanNode()),\r\n is_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_magic: core_1.Opt(core_1.BooleanNode()),\r\n is_projectile: core_1.Opt(core_1.BooleanNode()),\r\n is_lightning: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_armor: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_invulnerability: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_magic: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n direct_entity: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'damage_source' }));\r\n schemas.register('damage_predicate', core_1.ObjectNode({\r\n dealt: core_1.Opt(Common_1.Range()),\r\n taken: core_1.Opt(Common_1.Range()),\r\n blocked: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n type: core_1.Opt(Reference('damage_source_predicate'))\r\n }, { context: 'damage' }));\r\n}\r\nexports.initPredicatesSchemas = initPredicatesSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initAdvancementSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nfunction initAdvancementSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('advancement', core_1.Mod(core_1.ObjectNode({\r\n display: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n icon: core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } }))\r\n }),\r\n title: Reference('text_component'),\r\n description: Reference('text_component'),\r\n background: core_1.Opt(StringNode()),\r\n frame: core_1.Opt(StringNode({ enum: ['task', 'challenge', 'goal'] })),\r\n show_toast: core_1.Opt(core_1.BooleanNode()),\r\n announce_to_chat: core_1.Opt(core_1.BooleanNode()),\r\n hidden: core_1.Opt(core_1.BooleanNode())\r\n }), {\r\n default: () => ({\r\n icon: {\r\n item: 'minecraft:stone'\r\n },\r\n title: '',\r\n description: ''\r\n })\r\n })),\r\n parent: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$advancement' } })),\r\n criteria: core_1.MapNode(StringNode(), Reference('advancement_criteria')),\r\n requirements: core_1.Opt(core_1.ListNode(core_1.ListNode(StringNode() // TODO: add validation\r\n ))),\r\n rewards: core_1.Opt(core_1.ObjectNode({\r\n function: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$function' } })),\r\n loot: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$loot_table' } }))),\r\n recipes: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }))),\r\n experience: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n })),\r\n }, { context: 'advancement' }), {\r\n default: () => ({\r\n criteria: {\r\n requirement: {\r\n trigger: 'minecraft:location'\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('advancement_criteria', core_1.ObjectNode({\r\n trigger: StringNode({ validator: 'resource', params: { pool: collections.get('advancement_trigger') } }),\r\n conditions: core_1.Opt(core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'trigger' }],\r\n [core_1.Case]: {\r\n 'minecraft:bee_nest_destroyed': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n num_bees_inside: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:bred_animals': {\r\n parent: core_1.Opt(Reference('entity_predicate')),\r\n partner: core_1.Opt(Reference('entity_predicate')),\r\n child: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:brewed_potion': {\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } }))\r\n },\r\n 'minecraft:changed_dimension': {\r\n from: core_1.Opt(StringNode({ enum: 'dimension' })),\r\n to: core_1.Opt(StringNode({ enum: 'dimension' }))\r\n },\r\n 'minecraft:channeled_lightning': {\r\n victims: core_1.Opt(core_1.ListNode(core_1.Opt(Reference('entity_predicate'))))\r\n },\r\n 'minecraft:construct_beacon': {\r\n level: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:consume_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:cured_zombie_villager': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n zombie: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:effects_changed': {\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n },\r\n 'minecraft:enter_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n },\r\n 'minecraft:enchanted_item': {\r\n levels: core_1.Opt(Common_1.Range()),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:entity_hurt_player': {\r\n damage: core_1.Opt(Reference('damage_predicate'))\r\n },\r\n 'minecraft:entity_killed_player': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:filled_bucket': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:fishing_rod_hooked': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:hero_of_the_village': Predicates_1.LocationFields,\r\n 'minecraft:inventory_changed': {\r\n slots: core_1.Opt(core_1.ObjectNode({\r\n empty: core_1.Opt(Common_1.Range()),\r\n occupied: core_1.Opt(Common_1.Range()),\r\n full: core_1.Opt(Common_1.Range())\r\n })),\r\n items: core_1.Opt(core_1.ListNode(Reference('item_predicate')))\r\n },\r\n 'minecraft:item_durability_changed': {\r\n delta: core_1.Opt(Common_1.Range()),\r\n durability: core_1.Opt(Common_1.Range()),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:killed_by_crossbow': {\r\n unique_entity_types: core_1.Opt(Common_1.Range()),\r\n victims: core_1.Opt(core_1.ListNode(core_1.Opt(Reference('entity_predicate'))))\r\n },\r\n 'minecraft:levitation': {\r\n distance: core_1.Opt(Common_1.Range()),\r\n duration: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:location': Predicates_1.LocationFields,\r\n 'minecraft:nether_travel': {\r\n distance: core_1.Opt(Common_1.Range()),\r\n entered: core_1.Opt(Reference('location_predicate')),\r\n exited: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:placed_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })),\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:player_hurt_entity': {\r\n damage: core_1.Opt(Reference('damage_predicate')),\r\n entity: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:player_killed_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:recipe_unlocked': {\r\n recipe: StringNode({ validator: 'resource', params: { pool: '$recipe' } })\r\n },\r\n 'minecraft:safely_harvest_honey': {\r\n block: core_1.Opt(core_1.ObjectNode({\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } }))\r\n })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:slept_in_bed': Predicates_1.LocationFields,\r\n 'minecraft:slide_down_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:shot_crossbow': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:summoned_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:tame_animal': {\r\n entity: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:used_ender_eye': {\r\n distance: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:used_totem': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:villager_trade': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:voluntary_exile': Predicates_1.LocationFields\r\n }\r\n }, { context: 'criterion' }))\r\n }, { category: 'predicate', context: 'criterion' }));\r\n}\r\nexports.initAdvancementSchemas = initAdvancementSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initConditionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initConditionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('predicate', core_1.ObjectOrList(Reference('condition'), { choiceContext: 'condition' }));\r\n schemas.register('condition', core_1.Mod(core_1.ObjectNode({\r\n condition: StringNode({ validator: 'resource', params: { pool: 'loot_condition_type' } }),\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:entity_properties',\r\n entity: 'this'\r\n })\r\n }));\r\n}\r\nexports.initConditionSchemas = initConditionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LootFunctions = exports.LootConditions = exports.LootCopySources = exports.LootEntitySources = exports.LootTableTypes = void 0;\r\nexports.LootTableTypes = new Map([\r\n ['minecraft:advancement_entity', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:advancement_reward', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:barter', { requires: [8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:block', { requires: [1 /* BlockState */, 7 /* Origin */, 9 /* Tool */], allows: [0 /* BlockEntity */, 4 /* ExplosionRadius */, 8 /* ThisEntity */] }],\r\n ['minecraft:chest', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:command', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:empty', { requires: [], allows: [] }],\r\n ['minecraft:entity', { requires: [2 /* DamageSource */, 7 /* Origin */, 8 /* ThisEntity */], allows: [3 /* DirectKillerEntity */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */] }],\r\n ['minecraft:fishing', { requires: [7 /* Origin */, 9 /* Tool */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:generic', { requires: [2 /* DamageSource */, 0 /* BlockEntity */, 1 /* BlockState */, 3 /* DirectKillerEntity */, 4 /* ExplosionRadius */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */, 7 /* Origin */, 8 /* ThisEntity */, 9 /* Tool */], allows: [] }],\r\n ['minecraft:gift', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:selector', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }]\r\n]);\r\n/**\r\n * A map from loot entity sources to an array of their required context.\r\n */\r\nexports.LootEntitySources = new Map([\r\n ['direct_killer', [3 /* DirectKillerEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot copy sources to an array of their required context.\r\n */\r\nexports.LootCopySources = new Map([\r\n ['block_entity', [0 /* BlockEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot condition IDs to an array of their required context.\r\n */\r\nexports.LootConditions = new Map([\r\n ['minecraft:alternative', []],\r\n ['minecraft:block_state_property', [1 /* BlockState */]],\r\n ['minecraft:damage_source_properties', [2 /* DamageSource */]],\r\n ['minecraft:entity_properties', [7 /* Origin */]],\r\n ['minecraft:entity_scores', []],\r\n ['minecraft:inverted', []],\r\n ['minecraft:killed_by_player', [6 /* LastDamagePlayer */]],\r\n ['minecraft:location_check', []],\r\n ['minecraft:match_tool', [9 /* Tool */]],\r\n ['minecraft:random_chance', []],\r\n ['minecraft:random_chance_with_looting', [5 /* KillerEntity */]],\r\n ['minecraft:reference', []],\r\n ['minecraft:survives_explosion', [4 /* ExplosionRadius */]],\r\n ['minecraft:table_bonus', [9 /* Tool */]],\r\n ['minecraft:time_check', []],\r\n ['minecraft:weather_check', []]\r\n]);\r\n/**\r\n * A map from loot function IDs to an array of their required context.\r\n */\r\nexports.LootFunctions = new Map([\r\n ['minecraft:apply_bonus', [9 /* Tool */]],\r\n ['minecraft:copy_name', []],\r\n ['minecraft:copy_nbt', []],\r\n ['minecraft:copy_state', [1 /* BlockState */]],\r\n ['minecraft:enchant_randomly', []],\r\n ['minecraft:enchant_with_levels', []],\r\n ['minecraft:exploration_map', [7 /* Origin */]],\r\n ['minecraft:explosion_decay', []],\r\n ['minecraft:fill_player_head', []],\r\n ['minecraft:furnace_smelt', []],\r\n ['minecraft:limit_count', []],\r\n ['minecraft:looting_enchant', [5 /* KillerEntity */]],\r\n ['minecraft:set_attributes', []],\r\n ['minecraft:set_contents', []],\r\n ['minecraft:set_count', []],\r\n ['minecraft:set_damage', []],\r\n ['minecraft:set_loot_table', []],\r\n ['minecraft:set_lore', []],\r\n ['minecraft:set_name', []],\r\n ['minecraft:set_nbt', []],\r\n ['minecraft:set_stew_effect', []]\r\n]);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initLootTableSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst LootContext_1 = require(\"../LootContext\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initLootTableSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('loot_condition')))\r\n };\r\n const functionsAndConditions = {\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function'))),\r\n ...conditions\r\n };\r\n function compileSwitchNode(contextMap, collectionID, getNode) {\r\n const cases = [];\r\n const getAvailableOptions = (providedContext) => collections\r\n .get(collectionID)\r\n .filter(t => {\r\n var _a;\r\n const requiredContext = (_a = contextMap.get(t)) !== null && _a !== void 0 ? _a : [];\r\n return requiredContext.every(c => providedContext.includes(c));\r\n });\r\n for (const [tableType, { allows, requires }] of LootContext_1.LootTableTypes) {\r\n const providedContext = [...allows, ...requires];\r\n cases.push({\r\n match: path => path.getModel().get(new core_1.Path(['type'])) === tableType,\r\n node: getNode(getAvailableOptions(providedContext))\r\n });\r\n }\r\n cases.push({ match: _ => true, node: getNode(collectionID) });\r\n return core_1.SwitchNode(cases);\r\n }\r\n const conditionSwtichNode = compileSwitchNode(LootContext_1.LootConditions, 'loot_condition_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_condition_type` } }));\r\n const functionSwtichNode = compileSwitchNode(LootContext_1.LootFunctions, 'loot_function_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_function_type` } }));\r\n const entitySourceSwtichNode = compileSwitchNode(LootContext_1.LootEntitySources, 'entity_source', type => StringNode({ enum: type }));\r\n const copySourceSwtichNode = compileSwitchNode(LootContext_1.LootCopySources, 'copy_source', type => StringNode({ enum: type }));\r\n schemas.register('loot_table', core_1.Mod(core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: \"resource\", params: { pool: collections.get('loot_context_type') } })),\r\n pools: core_1.Opt(core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n rolls: Common_1.Range({ allowBinomial: true, integer: true }),\r\n bonus_rolls: core_1.Opt(Common_1.Range({ integer: true })),\r\n entries: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n }, { category: 'pool', context: 'loot_pool' }), {\r\n default: () => ({\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n })\r\n }))),\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function')))\r\n }, { context: 'loot_table' }), {\r\n default: () => ({\r\n pools: [{\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n }]\r\n })\r\n }));\r\n const weightMod = {\r\n enabled: path => {\r\n var _a;\r\n return ((_a = path.pop().get()) === null || _a === void 0 ? void 0 : _a.length) > 1\r\n && !['minecraft:alternatives', 'minecraft:group', 'minecraft:sequence'].includes(path.push('type').get());\r\n }\r\n };\r\n schemas.register('loot_entry', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'loot_pool_entry_type' } }),\r\n weight: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true, min: 1 }), weightMod)),\r\n quality: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), weightMod)),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alternatives': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:dynamic': {\r\n name: StringNode(),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:group': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:item': {\r\n name: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:sequence': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:tag': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$tag/item' } }),\r\n expand: core_1.Opt(core_1.BooleanNode()),\r\n ...functionsAndConditions\r\n }\r\n }\r\n }, { context: 'loot_entry' }), {\r\n default: () => ({\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('loot_function', core_1.Mod(core_1.ObjectNode({\r\n function: functionSwtichNode,\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: (() => {\r\n const cases = {\r\n 'minecraft:apply_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n formula: StringNode({ validator: 'resource', params: { pool: collections.get('loot_table_apply_bonus_formula') } }),\r\n parameters: core_1.Mod(core_1.ObjectNode({\r\n bonusMultiplier: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:uniform_bonus_count'\r\n }),\r\n extra: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n }),\r\n probability: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n })\r\n }), {\r\n enabled: path => path.push('formula').get() !== 'minecraft:ore_drops'\r\n })\r\n },\r\n 'minecraft:copy_name': {\r\n source: copySourceSwtichNode\r\n },\r\n 'minecraft:copy_nbt': {\r\n source: copySourceSwtichNode,\r\n ops: core_1.ListNode(core_1.ObjectNode({\r\n source: StringNode({ validator: 'nbt_path', params: { category: { getter: 'copy_source', path: ['pop', 'pop', 'pop', { push: 'source' }] } } }),\r\n target: StringNode({ validator: 'nbt_path', params: { category: 'minecraft:item' } }),\r\n op: StringNode({ enum: ['replace', 'append', 'merge'] })\r\n }, { context: 'nbt_operation' }))\r\n },\r\n 'minecraft:copy_state': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.ListNode(StringNode({ validator: 'block_state_key', params: { id: ['pop', 'pop', { push: 'block' }] } }))\r\n },\r\n 'minecraft:enchant_randomly': {\r\n enchantments: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })))\r\n },\r\n 'minecraft:enchant_with_levels': {\r\n levels: Common_1.Range({ allowBinomial: true }),\r\n treasure: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:exploration_map': {\r\n destination: core_1.Opt(StringNode({ enum: 'structure_feature' })),\r\n decoration: core_1.Opt(StringNode({ enum: 'map_decoration' })),\r\n zoom: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n search_radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n skip_existing_chunks: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:fill_player_head': {\r\n entity: entitySourceSwtichNode\r\n },\r\n 'minecraft:limit_count': {\r\n limit: Common_1.Range({ bounds: true })\r\n },\r\n 'minecraft:looting_enchant': {\r\n count: Common_1.Range({ bounds: true }),\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_attributes': {\r\n modifiers: core_1.ListNode(Reference('attribute_modifier'))\r\n },\r\n 'minecraft:set_contents': {\r\n entries: core_1.ListNode(Reference('loot_entry'))\r\n },\r\n 'minecraft:set_count': {\r\n count: Common_1.Range({ allowBinomial: true })\r\n },\r\n 'minecraft:set_damage': {\r\n damage: Common_1.Range({ forceRange: true })\r\n },\r\n 'minecraft:set_loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n seed: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_lore': {\r\n entity: core_1.Opt(entitySourceSwtichNode),\r\n lore: core_1.ListNode(Reference('text_component')),\r\n replace: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_name': {\r\n entity: core_1.Opt(entitySourceSwtichNode),\r\n name: core_1.Opt(Reference('text_component'))\r\n },\r\n 'minecraft:set_nbt': {\r\n tag: StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item' } } })\r\n },\r\n 'minecraft:set_stew_effect': {\r\n effects: core_1.Opt(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }),\r\n duration: Common_1.Range()\r\n })))\r\n }\r\n };\r\n const res = {};\r\n collections.get('loot_function_type').forEach(f => {\r\n res[f] = { ...cases[f], ...conditions };\r\n });\r\n return res;\r\n })()\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => ({\r\n function: 'minecraft:set_count',\r\n count: 1\r\n })\r\n }));\r\n schemas.register('loot_condition', core_1.Mod(core_1.ObjectNode({\r\n condition: conditionSwtichNode,\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: {\r\n ...Common_1.ConditionCases,\r\n 'minecraft:entity_properties': {\r\n entity: entitySourceSwtichNode,\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: entitySourceSwtichNode,\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), Common_1.Range({ bounds: true }))\r\n }\r\n }\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:random_chance',\r\n chance: 0.5\r\n })\r\n }));\r\n schemas.register('attribute_modifier', core_1.Mod(core_1.ObjectNode({\r\n attribute: StringNode({ validator: 'resource', params: { pool: 'attribute' } }),\r\n name: StringNode(),\r\n amount: Common_1.Range({ bounds: true }),\r\n operation: StringNode({ enum: ['addition', 'multiply_base', 'multiply_total'] }),\r\n slot: core_1.StringOrList(StringNode({ enum: 'slot' }))\r\n }, { context: 'attribute_modifier' }), {\r\n default: () => ({\r\n attribute: 'minecraft:generic.max_health',\r\n name: '',\r\n amount: 1,\r\n operation: 'addition',\r\n slot: 'mainhand'\r\n })\r\n }));\r\n}\r\nexports.initLootTableSchemas = initLootTableSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPackMcmetaSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initPackMcmetaSchemas(schemas, _) {\r\n const getSimpleString = (jsonText) => { var _a, _b; return jsonText instanceof Array ? getSimpleString(jsonText[0]) : (_b = (_a = jsonText === null || jsonText === void 0 ? void 0 : jsonText.text) !== null && _a !== void 0 ? _a : jsonText === null || jsonText === void 0 ? void 0 : jsonText.toString()) !== null && _b !== void 0 ? _b : ''; };\r\n schemas.register('pack_mcmeta', core_1.Mod(core_1.ObjectNode({\r\n pack: core_1.Mod(core_1.ObjectNode({\r\n pack_format: core_1.Mod(core_1.NumberNode({ integer: true, min: 5, max: 5 }), { default: () => 5 }),\r\n description: core_1.Reference(schemas, 'text_component')\r\n }), {\r\n default: () => ({\r\n pack_format: 5,\r\n description: ''\r\n })\r\n })\r\n }), {\r\n default: () => ({\r\n pack: {\r\n pack_format: 5,\r\n description: ''\r\n }\r\n })\r\n }));\r\n}\r\nexports.initPackMcmetaSchemas = initPackMcmetaSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initRecipeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initRecipeSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('recipe', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'recipe_serializer' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:crafting_shaped': {\r\n group: core_1.Opt(StringNode({ enum: 'recipe_group', additional: true })),\r\n pattern: core_1.ListNode(StringNode()),\r\n key: core_1.MapNode(StringNode(), // TODO: add validation\r\n Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:crafting_shapeless': {\r\n group: core_1.Opt(StringNode()),\r\n ingredients: core_1.ListNode(Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:smelting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 200 }))\r\n },\r\n 'minecraft:blasting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:smoking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:campfire_cooking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:stonecutting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:smithing': {\r\n group: core_1.Opt(StringNode()),\r\n base: Reference('recipe_ingredient_object'),\r\n addition: Reference('recipe_ingredient_object'),\r\n result: Reference('recipe_result')\r\n }\r\n }\r\n }, { context: 'recipe', disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:crafting_shaped'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('recipe_ingredient_object'),\r\n change: v => v[0]\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('recipe_ingredient_object')),\r\n change: v => [v]\r\n }\r\n ]), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient_object', core_1.Mod(core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_result', core_1.Mod(core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 1 }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n}\r\nexports.initRecipeSchemas = initRecipeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTagsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTagsSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const TagBase = (type) => core_1.Mod(core_1.ObjectNode({\r\n replace: core_1.Opt(core_1.BooleanNode()),\r\n values: core_1.ListNode(core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: type, allowTag: true } }),\r\n change: v => v.id\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: type, allowTag: true, allowUnknown: true } }),\r\n required: core_1.BooleanNode()\r\n }),\r\n change: v => ({ id: v })\r\n }\r\n ])),\r\n }, { context: 'tag' }), {\r\n default: () => ({\r\n values: []\r\n })\r\n });\r\n schemas.register('block_tag', TagBase('block'));\r\n schemas.register('entity_type_tag', TagBase('entity_type'));\r\n schemas.register('fluid_tag', TagBase('fluid'));\r\n schemas.register('function_tag', TagBase('$function'));\r\n schemas.register('item_tag', TagBase('item'));\r\n}\r\nexports.initTagsSchemas = initTagsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTextComponentSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTextComponentSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const getSimpleString = (v) => { var _a; return v instanceof Array ? getSimpleString(v[0]) : (_a = v === null || v === void 0 ? void 0 : v.text) !== null && _a !== void 0 ? _a : (typeof v === 'object' ? '' : v === null || v === void 0 ? void 0 : v.toString()); };\r\n schemas.register('text_component', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('text_component_object'),\r\n change: v => v instanceof Array ? (typeof v[0] === 'object' ? v[0] : { text: getSimpleString(v[0]) }) : typeof v === 'object' ? v : { text: getSimpleString(v) }\r\n },\r\n {\r\n type: 'list',\r\n node: Reference('text_component_list'),\r\n change: v => [v]\r\n },\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: StringNode(),\r\n change: getSimpleString\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => {\r\n const n = parseFloat(getSimpleString(v));\r\n return isFinite(n) ? n : (!!v ? 1 : 0);\r\n }\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => {\r\n const s = getSimpleString(v);\r\n return s === 'true' || s === 'false' ? s === 'true' : !!s;\r\n }\r\n }\r\n ], { context: 'text_component' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n const CommonFields = {\r\n bold: core_1.Opt(core_1.BooleanNode()),\r\n italic: core_1.Opt(core_1.BooleanNode()),\r\n underlined: core_1.Opt(core_1.BooleanNode()),\r\n strikethrough: core_1.Opt(core_1.BooleanNode()),\r\n obfuscated: core_1.Opt(core_1.BooleanNode()),\r\n insertion: core_1.Opt(StringNode()),\r\n clickEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['open_url', 'open_file', 'run_command', 'suggest_command', 'change_page', 'copy_to_clipboard'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'change_page': {\r\n value: StringNode()\r\n },\r\n 'copy_to_clipboard': {\r\n value: StringNode()\r\n },\r\n 'open_file': {\r\n value: StringNode()\r\n },\r\n 'open_url': {\r\n value: StringNode()\r\n },\r\n 'run_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n },\r\n 'suggest_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n }\r\n }\r\n })),\r\n hoverEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['show_text', 'show_item', 'show_entity'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'show_text': {\r\n value: core_1.Opt(Reference('text_component'))\r\n },\r\n 'show_item': {\r\n value: core_1.Opt(StringNode({ validator: 'nbt', params: { module: 'util::InventoryItem' } }))\r\n },\r\n 'show_entity': {\r\n value: core_1.Opt(core_1.ObjectNode({\r\n name: core_1.Opt(StringNode()),\r\n type: core_1.Opt(StringNode()),\r\n id: core_1.Opt(StringNode())\r\n }))\r\n }\r\n }\r\n })),\r\n extra: core_1.Opt(Reference('text_component_list'))\r\n };\r\n schemas.register('text_component_object', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'text',\r\n match: v => typeof v === 'object',\r\n change: v => ({ text: '' }),\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n text: StringNode(),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'translation',\r\n match: v => (v === null || v === void 0 ? void 0 : v.translate) !== undefined,\r\n change: v => ({ translate: '' }),\r\n node: core_1.ObjectNode({\r\n translate: StringNode(),\r\n with: core_1.Opt(Reference('text_component_list')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'score',\r\n match: v => (v === null || v === void 0 ? void 0 : v.score) !== undefined,\r\n change: v => ({ score: {} }),\r\n node: core_1.ObjectNode({\r\n score: core_1.ObjectNode({\r\n name: StringNode({ validator: 'entity', params: { amount: 'single', type: 'entities', isScoreHolder: true } }),\r\n objective: StringNode({ validator: 'objective' }),\r\n value: core_1.Opt(StringNode())\r\n }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'selector',\r\n match: v => (v === null || v === void 0 ? void 0 : v.selector) !== undefined,\r\n change: v => ({ selector: '' }),\r\n node: core_1.ObjectNode({\r\n selector: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'keybind',\r\n match: v => (v === null || v === void 0 ? void 0 : v.keybind) !== undefined,\r\n change: v => ({ keybind: '' }),\r\n node: core_1.ObjectNode({\r\n keybind: StringNode({ enum: 'keybind', additional: true }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'nbt',\r\n match: v => (v === null || v === void 0 ? void 0 : v.nbt) !== undefined,\r\n change: v => ({ nbt: '' }),\r\n node: core_1.ObjectNode({\r\n nbt: StringNode({ validator: 'nbt_path' }),\r\n block: core_1.Opt(StringNode({ validator: 'vector', params: { dimension: 3, isInteger: true } })),\r\n entity: core_1.Opt(StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } })),\r\n storage: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$storage' } })),\r\n interpret: core_1.Opt(core_1.BooleanNode()),\r\n ...CommonFields\r\n })\r\n }\r\n ], { context: 'text_component_object', choiceContext: 'text_component.object' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n schemas.register('text_component_list', core_1.Mod(core_1.ListNode(Reference('text_component')), {\r\n default: () => [{\r\n text: \"\"\r\n }]\r\n }));\r\n}\r\nexports.initTextComponentSchemas = initTextComponentSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSchemas = void 0;\r\nconst Advancement_1 = require(\"./Advancement\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Condition_1 = require(\"./Condition\");\r\nconst LootTable_1 = require(\"./LootTable\");\r\nconst PackMcmeta_1 = require(\"./PackMcmeta\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nconst Recipe_1 = require(\"./Recipe\");\r\nconst Tags_1 = require(\"./Tags\");\r\nconst TextComponent_1 = require(\"./TextComponent\");\r\nfunction initSchemas(schemas, collections) {\r\n // `Common.ts` and `Predicates.ts` are files that have exports. They should be initialized first. \r\n Common_1.initCommonSchemas(schemas, collections);\r\n Predicates_1.initPredicatesSchemas(schemas, collections);\r\n Advancement_1.initAdvancementSchemas(schemas, collections);\r\n Condition_1.initConditionSchemas(schemas, collections);\r\n LootTable_1.initLootTableSchemas(schemas, collections);\r\n PackMcmeta_1.initPackMcmetaSchemas(schemas, collections);\r\n Recipe_1.initRecipeSchemas(schemas, collections);\r\n Tags_1.initTagsSchemas(schemas, collections);\r\n TextComponent_1.initTextComponentSchemas(schemas, collections);\r\n}\r\nexports.initSchemas = initSchemas;\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getSchemas = exports.getCollections = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Collections_1 = require(\"./Collections\");\r\nconst schemas_1 = require(\"./schemas\");\r\nexports.lootContext = __importStar(require(\"./LootContext\"));\r\nfunction getCollections() {\r\n const collections = new core_1.CollectionRegistry();\r\n Collections_1.initCollections(collections);\r\n return collections;\r\n}\r\nexports.getCollections = getCollections;\r\n/**\r\n * @param collections The CollectionRegistry for this version. Note that apart from\r\n * the built-in collections, the client of this module is responsible for futhermore\r\n * adding the vanilla registries to it: the collection IDs shouldn't contain the\r\n * namespace (`minecraft:`) part, while the values within the collections should.\r\n *\r\n * @example\r\n * for (const key in VANILLA_REGISTRIES>) {\r\n * collections.register(\r\n * key.replace(/^minecraft:/, ''),\r\n * Object.keys(VANILLA_REGISTRIES[key].entries)\r\n * )\r\n * }\r\n */\r\nfunction getSchemas(collections) {\r\n const schemas = new core_1.SchemaRegistry();\r\n schemas_1.initSchemas(schemas, collections);\r\n return schemas;\r\n}\r\nexports.getSchemas = getSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCollections = void 0;\r\nfunction initCollections(collections) {\r\n collections.register('advancement_trigger', [\r\n 'minecraft:bee_nest_destroyed',\r\n 'minecraft:bred_animals',\r\n 'minecraft:brewed_potion',\r\n 'minecraft:changed_dimension',\r\n 'minecraft:channeled_lightning',\r\n 'minecraft:construct_beacon',\r\n 'minecraft:consume_item',\r\n 'minecraft:cured_zombie_villager',\r\n 'minecraft:effects_changed',\r\n 'minecraft:enchanted_item',\r\n 'minecraft:enter_block',\r\n 'minecraft:entity_hurt_player',\r\n 'minecraft:entity_killed_player',\r\n 'minecraft:filled_bucket',\r\n 'minecraft:fishing_rod_hooked',\r\n 'minecraft:hero_of_the_village',\r\n 'minecraft:impossible',\r\n 'minecraft:inventory_changed',\r\n 'minecraft:item_durability_changed',\r\n 'minecraft:item_used_on_block',\r\n 'minecraft:killed_by_crossbow',\r\n 'minecraft:levitation',\r\n 'minecraft:location',\r\n 'minecraft:nether_travel',\r\n 'minecraft:placed_block',\r\n 'minecraft:player_generates_container_loot',\r\n 'minecraft:player_hurt_entity',\r\n 'minecraft:player_interacted_with_entity',\r\n 'minecraft:player_killed_entity',\r\n 'minecraft:recipe_unlocked',\r\n 'minecraft:shot_crossbow',\r\n 'minecraft:slept_in_bed',\r\n 'minecraft:slide_down_block',\r\n 'minecraft:summoned_entity',\r\n 'minecraft:tame_animal',\r\n 'minecraft:target_hit',\r\n 'minecraft:tick',\r\n 'minecraft:thrown_item_picked_up_by_entity',\r\n 'minecraft:used_ender_eye',\r\n 'minecraft:used_totem',\r\n 'minecraft:villager_trade',\r\n 'minecraft:voluntary_exile'\r\n ]);\r\n collections.register('dimension', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('dimension_type', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('keybind', [\r\n 'key.advancements',\r\n 'key.attack',\r\n 'key.back',\r\n 'key.chat',\r\n 'key.command',\r\n 'key.drop',\r\n 'key.forward',\r\n 'key.fullscreen',\r\n 'key.hotbar.1',\r\n 'key.hotbar.2',\r\n 'key.hotbar.3',\r\n 'key.hotbar.4',\r\n 'key.hotbar.5',\r\n 'key.hotbar.6',\r\n 'key.hotbar.7',\r\n 'key.hotbar.8',\r\n 'key.hotbar.9',\r\n 'key.inventory',\r\n 'key.jump',\r\n 'key.left',\r\n 'key.loadToolbarActivator',\r\n 'key.pickItem',\r\n 'key.playerlist',\r\n 'key.right',\r\n 'key.saveToolbarActivator',\r\n 'key.screenshot',\r\n 'key.smoothCamera',\r\n 'key.sneak',\r\n 'key.spectatorOutlines',\r\n 'key.sprint',\r\n 'key.swapOffhand',\r\n 'key.togglePerspective',\r\n 'key.use'\r\n ]);\r\n collections.register('slot', [\r\n 'mainhand',\r\n 'offhand',\r\n 'head',\r\n 'chest',\r\n 'legs',\r\n 'feet'\r\n ]);\r\n collections.register('gamemode', [\r\n 'survival',\r\n 'creative',\r\n 'adventure',\r\n 'spectator'\r\n ]);\r\n collections.register('worldgen/noise_settings', [\r\n 'minecraft:overworld',\r\n 'minecraft:nether',\r\n 'minecraft:end',\r\n 'minecraft:amplified',\r\n 'minecraft:caves',\r\n 'minecraft:floating_islands'\r\n ]);\r\n collections.register('entity_source', [\r\n 'this',\r\n 'direct_killer',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('copy_source', [\r\n 'block_entity',\r\n 'this',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('loot_table_apply_bonus_formula', [\r\n 'minecraft:uniform_bonus_count',\r\n 'minecraft:binomial_with_bonus_count',\r\n 'minecraft:ore_drops'\r\n ]);\r\n collections.register('map_decoration', [\r\n 'mansion',\r\n 'monument',\r\n 'player',\r\n 'frame',\r\n 'red_marker',\r\n 'blue_marker',\r\n 'target_x',\r\n 'target_point',\r\n 'player_off_map',\r\n 'player_off_limits',\r\n 'red_x',\r\n 'banner_white',\r\n 'banner_orange',\r\n 'banner_magenta',\r\n 'banner_light_blue',\r\n 'banner_yellow',\r\n 'banner_lime',\r\n 'banner_pink',\r\n 'banner_gray',\r\n 'banner_light_gray',\r\n 'banner_cyan',\r\n 'banner_purple',\r\n 'banner_blue',\r\n 'banner_brown',\r\n 'banner_green',\r\n 'banner_red',\r\n 'banner_black'\r\n ]);\r\n collections.register('map_feature', [\r\n 'bastion_remnant',\r\n 'buried_treasure',\r\n 'desert_pyramid',\r\n 'endcity',\r\n 'fortress',\r\n 'igloo',\r\n 'jungle_pyramid',\r\n 'mansion',\r\n 'mineshaft',\r\n 'monument',\r\n 'nether_fossil',\r\n 'ocean_ruin',\r\n 'pillager_outpost',\r\n 'ruined_portal',\r\n 'shipwreck',\r\n 'stronghold',\r\n 'swamp_hut',\r\n 'village'\r\n ]);\r\n collections.register('recipe_group', [\r\n 'bed',\r\n 'light_gray_dye',\r\n 'iron_ingot',\r\n 'wooden_stairs',\r\n 'black_dye',\r\n 'stained_terracotta',\r\n 'dyed_bed',\r\n 'magenta_dye',\r\n 'bark',\r\n 'rabbit_stew',\r\n 'light_blue_dye',\r\n 'wooden_fence_gate',\r\n 'planks',\r\n 'stained_glass',\r\n 'wooden_door',\r\n 'stained_glass_pane',\r\n 'wooden_fence',\r\n 'sticks',\r\n 'concrete_powder',\r\n 'wooden_pressure_plate',\r\n 'boat',\r\n 'brown_dye',\r\n 'yellow_dye',\r\n 'bonemeal',\r\n 'red_dye',\r\n 'wooden_trapdoor',\r\n 'wooden_button',\r\n 'gold_ingot',\r\n 'pink_dye',\r\n 'wooden_slab',\r\n 'orange_dye',\r\n 'carpet',\r\n 'sign',\r\n 'wool',\r\n 'sugar',\r\n 'blue_dye',\r\n 'white_dye',\r\n 'banner',\r\n 'netherite_ingot'\r\n ]);\r\n collections.register('worldgen/configured_feature', [\r\n 'minecraft:acacia',\r\n 'minecraft:bamboo_light',\r\n 'minecraft:bamboo_vegetation',\r\n 'minecraft:bamboo',\r\n 'minecraft:basalt_blobs',\r\n 'minecraft:basalt_pillar',\r\n 'minecraft:birch_bees_0002',\r\n 'minecraft:birch_bees_002',\r\n 'minecraft:birch_bees_005',\r\n 'minecraft:birch_other',\r\n 'minecraft:birch_tall',\r\n 'minecraft:birch',\r\n 'minecraft:blackstone_blobs',\r\n 'minecraft:blue_ice',\r\n 'minecraft:bonus_chest',\r\n 'minecraft:brown_mushroom_giant',\r\n 'minecraft:brown_mushroom_nether',\r\n 'minecraft:brown_mushroom_normal',\r\n 'minecraft:brown_mushroom_swamp',\r\n 'minecraft:brown_mushroom_taiga',\r\n 'minecraft:chorus_plant',\r\n 'minecraft:crimson_forest_vegetation',\r\n 'minecraft:crimson_fungi_planted',\r\n 'minecraft:crimson_fungi',\r\n 'minecraft:dark_forest_vegetation_brown',\r\n 'minecraft:dark_forest_vegetation_red',\r\n 'minecraft:dark_oak',\r\n 'minecraft:delta',\r\n 'minecraft:desert_well',\r\n 'minecraft:disk_clay',\r\n 'minecraft:disk_gravel',\r\n 'minecraft:disk_sand',\r\n 'minecraft:end_gateway_delayed',\r\n 'minecraft:end_gateway',\r\n 'minecraft:end_island_decorated',\r\n 'minecraft:end_island',\r\n 'minecraft:end_spike',\r\n 'minecraft:fancy_oak_bees_0002',\r\n 'minecraft:fancy_oak_bees_002',\r\n 'minecraft:fancy_oak_bees_005',\r\n 'minecraft:fancy_oak',\r\n 'minecraft:flower_default',\r\n 'minecraft:flower_forest',\r\n 'minecraft:flower_plain_decorated',\r\n 'minecraft:flower_plain',\r\n 'minecraft:flower_swamp',\r\n 'minecraft:flower_warm',\r\n 'minecraft:forest_flower_trees',\r\n 'minecraft:forest_flower_vegetation_common',\r\n 'minecraft:forest_flower_vegetation',\r\n 'minecraft:forest_rock',\r\n 'minecraft:fossil',\r\n 'minecraft:freeze_top_layer',\r\n 'minecraft:glowstone_extra',\r\n 'minecraft:glowstone',\r\n 'minecraft:huge_brown_mushroom',\r\n 'minecraft:huge_red_mushroom',\r\n 'minecraft:ice_patch',\r\n 'minecraft:ice_spike',\r\n 'minecraft:iceberg_blue',\r\n 'minecraft:iceberg_packed',\r\n 'minecraft:jungle_bush',\r\n 'minecraft:jungle_tree_no_vine',\r\n 'minecraft:jungle_tree',\r\n 'minecraft:kelp_cold',\r\n 'minecraft:kelp_warm',\r\n 'minecraft:lake_lava',\r\n 'minecraft:lake_water',\r\n 'minecraft:large_basalt_columns',\r\n 'minecraft:mega_jungle_tree',\r\n 'minecraft:mega_pine',\r\n 'minecraft:mega_spruce',\r\n 'minecraft:monster_room',\r\n 'minecraft:mushroom_field_vegetation',\r\n 'minecraft:nether_sprouts',\r\n 'minecraft:oak_badlands',\r\n 'minecraft:oak_bees_0002',\r\n 'minecraft:oak_bees_002',\r\n 'minecraft:oak_bees_005',\r\n 'minecraft:oak',\r\n 'minecraft:ore_andesite',\r\n 'minecraft:ore_blackstone',\r\n 'minecraft:ore_coal',\r\n 'minecraft:ore_debris_large',\r\n 'minecraft:ore_debris_small',\r\n 'minecraft:ore_diamond',\r\n 'minecraft:ore_diorite',\r\n 'minecraft:ore_dirt',\r\n 'minecraft:ore_emerald',\r\n 'minecraft:ore_gold_deltas',\r\n 'minecraft:ore_gold_extra',\r\n 'minecraft:ore_gold_nether',\r\n 'minecraft:ore_gold',\r\n 'minecraft:ore_granite',\r\n 'minecraft:ore_gravel_nether',\r\n 'minecraft:ore_gravel',\r\n 'minecraft:ore_infested',\r\n 'minecraft:ore_iron',\r\n 'minecraft:ore_lapis',\r\n 'minecraft:ore_magma',\r\n 'minecraft:ore_quartz_deltas',\r\n 'minecraft:ore_quartz_nether',\r\n 'minecraft:ore_redstone',\r\n 'minecraft:ore_soul_sand',\r\n 'minecraft:patch_berry_bush',\r\n 'minecraft:patch_berry_decorated',\r\n 'minecraft:patch_berry_sparse',\r\n 'minecraft:patch_brown_mushroom',\r\n 'minecraft:patch_cactus_decorated',\r\n 'minecraft:patch_cactus_desert',\r\n 'minecraft:patch_cactus',\r\n 'minecraft:patch_crimson_roots',\r\n 'minecraft:patch_dead_bush_2',\r\n 'minecraft:patch_dead_bush_badlands',\r\n 'minecraft:patch_dead_bush',\r\n 'minecraft:patch_fire',\r\n 'minecraft:patch_grass_badlands',\r\n 'minecraft:patch_grass_forest',\r\n 'minecraft:patch_grass_jungle',\r\n 'minecraft:patch_grass_normal',\r\n 'minecraft:patch_grass_plain',\r\n 'minecraft:patch_grass_savanna',\r\n 'minecraft:patch_grass_taiga_2',\r\n 'minecraft:patch_grass_taiga',\r\n 'minecraft:patch_large_fern',\r\n 'minecraft:patch_melon',\r\n 'minecraft:patch_pumpkin',\r\n 'minecraft:patch_red_mushroom',\r\n 'minecraft:patch_soul_fire',\r\n 'minecraft:patch_sugar_cane_badlands',\r\n 'minecraft:patch_sugar_cane_desert',\r\n 'minecraft:patch_sugar_cane_swamp',\r\n 'minecraft:patch_sugar_cane',\r\n 'minecraft:patch_sunflower',\r\n 'minecraft:patch_taiga_grass',\r\n 'minecraft:patch_tall_grass_2',\r\n 'minecraft:patch_tall_grass',\r\n 'minecraft:patch_waterlilly',\r\n 'minecraft:pile_hay',\r\n 'minecraft:pile_ice',\r\n 'minecraft:pile_melon',\r\n 'minecraft:pile_pumpkin',\r\n 'minecraft:pile_snow',\r\n 'minecraft:pine',\r\n 'minecraft:plain_vegetation',\r\n 'minecraft:red_mushroom_giant',\r\n 'minecraft:red_mushroom_nether',\r\n 'minecraft:red_mushroom_normal',\r\n 'minecraft:red_mushroom_swamp',\r\n 'minecraft:red_mushroom_taiga',\r\n 'minecraft:sea_pickle',\r\n 'minecraft:seagrass_cold',\r\n 'minecraft:seagrass_deep_cold',\r\n 'minecraft:seagrass_deep_warm',\r\n 'minecraft:seagrass_deep',\r\n 'minecraft:seagrass_normal',\r\n 'minecraft:seagrass_river',\r\n 'minecraft:seagrass_simple',\r\n 'minecraft:seagrass_swamp',\r\n 'minecraft:seagrass_warm',\r\n 'minecraft:small_basalt_columns',\r\n 'minecraft:spring_closed_double',\r\n 'minecraft:spring_closed',\r\n 'minecraft:spring_delta',\r\n 'minecraft:spring_lava_double',\r\n 'minecraft:spring_lava',\r\n 'minecraft:spring_open',\r\n 'minecraft:spring_water',\r\n 'minecraft:spruce_snowy',\r\n 'minecraft:spruce',\r\n 'minecraft:super_birch_bees_0002',\r\n 'minecraft:swamp_tree',\r\n 'minecraft:taiga_vegetation',\r\n 'minecraft:trees_birch',\r\n 'minecraft:trees_giant_spruce',\r\n 'minecraft:trees_giant',\r\n 'minecraft:trees_jungle_edge',\r\n 'minecraft:trees_jungle',\r\n 'minecraft:trees_mountain_edge',\r\n 'minecraft:trees_mountain',\r\n 'minecraft:trees_savanna',\r\n 'minecraft:trees_shattered_savanna',\r\n 'minecraft:trees_water',\r\n 'minecraft:twisting_vines',\r\n 'minecraft:vines',\r\n 'minecraft:void_start_platform',\r\n 'minecraft:warm_ocean_vegetation',\r\n 'minecraft:warped_forest_vegetation',\r\n 'minecraft:warped_fungi_planted',\r\n 'minecraft:warped_fungi',\r\n 'minecraft:weeping_vines'\r\n ]);\r\n collections.register('worldgen/configured_structure_feature', [\r\n 'minecraft:bastion_remnant',\r\n 'minecraft:buried_treasure',\r\n 'minecraft:desert_pyramid',\r\n 'minecraft:end_city',\r\n 'minecraft:fortress',\r\n 'minecraft:igloo',\r\n 'minecraft:jungle_pyramid',\r\n 'minecraft:mansion',\r\n 'minecraft:mineshaft_mesa',\r\n 'minecraft:mineshaft',\r\n 'minecraft:monument',\r\n 'minecraft:nether_fossil',\r\n 'minecraft:ocean_ruin_cold',\r\n 'minecraft:ocean_ruin_warm',\r\n 'minecraft:pillager_outpost',\r\n 'minecraft:ruined_portal_desert',\r\n 'minecraft:ruined_portal_jungle',\r\n 'minecraft:ruined_portal_mountain',\r\n 'minecraft:ruined_portal_nether',\r\n 'minecraft:ruined_portal_ocean',\r\n 'minecraft:ruined_portal_swamp',\r\n 'minecraft:ruined_portal',\r\n 'minecraft:shipwreck_beached',\r\n 'minecraft:shipwreck',\r\n 'minecraft:stronghold',\r\n 'minecraft:swamp_hut',\r\n 'minecraft:village_desert',\r\n 'minecraft:village_plains',\r\n 'minecraft:village_savanna',\r\n 'minecraft:village_snowy',\r\n 'minecraft:village_taiga'\r\n ]);\r\n collections.register('worldgen/configured_surface_builder', [\r\n 'minecraft:badlands',\r\n 'minecraft:basalt_deltas',\r\n 'minecraft:crimson_forest',\r\n 'minecraft:desert',\r\n 'minecraft:end',\r\n 'minecraft:eroded_badlands',\r\n 'minecraft:frozen_ocean',\r\n 'minecraft:full_sand',\r\n 'minecraft:giant_tree_taiga',\r\n 'minecraft:grass',\r\n 'minecraft:gravelly_mountain',\r\n 'minecraft:ice_spikes',\r\n 'minecraft:mountain',\r\n 'minecraft:mycelium',\r\n 'minecraft:nether',\r\n 'minecraft:nope',\r\n 'minecraft:ocean_sand',\r\n 'minecraft:shattered_savanna',\r\n 'minecraft:soul_sand_valley',\r\n 'minecraft:stone',\r\n 'minecraft:swamp',\r\n 'minecraft:warped_forest',\r\n 'minecraft:wooded_badlands'\r\n ]);\r\n collections.register('biome_category', [\r\n 'beach',\r\n 'desert',\r\n 'extreme_hills',\r\n 'forest',\r\n 'icy',\r\n 'jungle',\r\n 'mesa',\r\n 'mushroom',\r\n 'nether',\r\n 'none',\r\n 'ocean',\r\n 'plains',\r\n 'river',\r\n 'savanna',\r\n 'swamp',\r\n 'taiga',\r\n 'the_end'\r\n ]);\r\n collections.register('heightmap_type', [\r\n 'MOTION_BLOCKING',\r\n 'MOTION_BLOCKING_NO_LEAVES',\r\n 'OCEAN_FLOOR',\r\n 'OCEAN_FLOOR_WG',\r\n 'WORLD_SURFACE',\r\n 'WORLD_SURFACE_WG'\r\n ]);\r\n collections.register('generation_step', [\r\n 'air',\r\n 'liquid'\r\n ]);\r\n collections.register('loot_context_type', [\r\n 'minecraft:empty',\r\n 'minecraft:chest',\r\n 'minecraft:command',\r\n 'minecraft:selector',\r\n 'minecraft:fishing',\r\n 'minecraft:entity',\r\n 'minecraft:gift',\r\n 'minecraft:barter',\r\n 'minecraft:advancement_reward',\r\n 'minecraft:advancement_entity',\r\n 'minecraft:generic',\r\n 'minecraft:block'\r\n ]);\r\n}\r\nexports.initCollections = initCollections;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCommonSchemas = exports.UniformInt = exports.Range = exports.NoiseSettingsPresets = exports.DefaultNoiseSettings = exports.DimensionTypePresets = exports.DefaultDimensionType = exports.ConditionCases = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nexports.DefaultDimensionType = {\r\n ultrawarm: false,\r\n natural: true,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: true,\r\n has_raids: true,\r\n has_skylight: true,\r\n has_ceiling: false,\r\n coordinate_scale: 1,\r\n ambient_light: 0,\r\n logical_height: 256,\r\n infiniburn: 'minecraft:infiniburn_overworld',\r\n};\r\nexports.DefaultNoiseSettings = {\r\n name: 'minecraft:overworld',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n disable_mob_generation: false,\r\n noise: {\r\n density_factor: 1,\r\n density_offset: -0.46875,\r\n simplex_surface_noise: true,\r\n random_density_offset: true,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n height: 256,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -10,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 0,\r\n offset: 0\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n};\r\nfunction initCommonSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('block_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'Name' }] } } }))\r\n }, { context: 'block_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('fluid_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'fluid' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode()))\r\n }, { context: 'fluid_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:water',\r\n Properties: {\r\n 'level': '0'\r\n }\r\n })\r\n }));\r\n schemas.register('block_pos', core_1.Mod(core_1.ListNode(core_1.NumberNode({ integer: true }), { minLength: 3, maxLength: 3 }), {\r\n default: () => [0, 0, 0]\r\n }));\r\n exports.Range = (config) => core_1.ChoiceNode([\r\n ...((config === null || config === void 0 ? void 0 : config.forceRange) ? [] : [{\r\n type: 'number',\r\n node: core_1.NumberNode(config),\r\n change: (v) => { var _a, _b, _c; return v === undefined ? 0 : (_c = (_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : v.n) !== null && _c !== void 0 ? _c : 0; }\r\n }]),\r\n {\r\n type: 'object',\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n min: (config === null || config === void 0 ? void 0 : config.bounds) ? core_1.NumberNode(config) : core_1.Opt(core_1.NumberNode(config)),\r\n max: (config === null || config === void 0 ? void 0 : config.bounds) ? core_1.NumberNode(config) : core_1.Opt(core_1.NumberNode(config))\r\n }, { context: 'range' }),\r\n change: (v) => ({\r\n min: typeof v === 'number' ? v : v === undefined ? 1 : v.n,\r\n max: typeof v === 'number' ? v : v === undefined ? 1 : v.n\r\n })\r\n },\r\n ...((config === null || config === void 0 ? void 0 : config.allowBinomial) ? [{\r\n type: 'binomial',\r\n node: core_1.ObjectNode({\r\n type: StringNode({ enum: ['minecraft:binomial'] }),\r\n n: core_1.NumberNode({ integer: true, min: 0 }),\r\n p: core_1.NumberNode({ min: 0, max: 1 })\r\n }, { context: 'range' }),\r\n match: (v) => v !== undefined && v.type === 'minecraft:binomial',\r\n change: (v) => {\r\n var _a, _b;\r\n return ({\r\n type: 'minecraft:binomial',\r\n n: typeof v === 'number' ? v : v === undefined ? 1 : ((_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : 1),\r\n p: 0.5\r\n });\r\n }\r\n }] : [])\r\n ], { choiceContext: 'range' });\r\n exports.UniformInt = (config) => core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer: true, min: config === null || config === void 0 ? void 0 : config.min, max: config === null || config === void 0 ? void 0 : config.max }),\r\n change: v => v.base\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n base: core_1.NumberNode({ integer: true, min: config === null || config === void 0 ? void 0 : config.min, max: config === null || config === void 0 ? void 0 : config.max }),\r\n spread: core_1.NumberNode({ integer: true, min: 0, max: config === null || config === void 0 ? void 0 : config.maxSpread })\r\n }),\r\n change: v => ({\r\n base: v,\r\n spread: 0\r\n })\r\n }\r\n ], { context: 'uniform_int' });\r\n exports.ConditionCases = {\r\n 'minecraft:alternative': {\r\n terms: core_1.ListNode(Reference('condition'))\r\n },\r\n 'minecraft:block_state_property': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })\r\n },\r\n 'minecraft:damage_source_properties': {\r\n predicate: Reference('damage_source_predicate')\r\n },\r\n 'minecraft:entity_properties': {\r\n entity: StringNode({ enum: 'entity_source' }),\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: StringNode({ enum: 'entity_source' }),\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), exports.Range({ forceRange: true }))\r\n },\r\n 'minecraft:inverted': {\r\n term: Reference('condition')\r\n },\r\n 'minecraft:killed_by_player': {\r\n inverse: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:location_check': {\r\n offsetX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetY: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n predicate: Reference('location_predicate')\r\n },\r\n 'minecraft:match_tool': {\r\n predicate: Reference('item_predicate')\r\n },\r\n 'minecraft:random_chance': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_chance_with_looting': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n looting_multiplier: core_1.NumberNode()\r\n },\r\n 'minecraft:reference': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$predicate' } })\r\n },\r\n 'minecraft:table_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n chances: core_1.ListNode(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:time_check': {\r\n value: exports.Range(),\r\n period: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:weather_check': {\r\n raining: core_1.Opt(core_1.BooleanNode()),\r\n thundering: core_1.Opt(core_1.BooleanNode())\r\n }\r\n };\r\n exports.DimensionTypePresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$dimension_type' } }), node, {\r\n 'minecraft:overworld': exports.DefaultDimensionType,\r\n 'minecraft:the_nether': {\r\n name: 'minecraft:the_nether',\r\n ultrawarm: true,\r\n natural: false,\r\n shrunk: true,\r\n piglin_safe: true,\r\n respawn_anchor_works: true,\r\n bed_works: false,\r\n has_raids: false,\r\n has_skylight: false,\r\n has_ceiling: true,\r\n ambient_light: 0.1,\r\n fixed_time: 18000,\r\n logical_height: 128,\r\n effects: 'minecraft:the_nether',\r\n infiniburn: 'minecraft:infiniburn_nether',\r\n },\r\n 'minecraft:the_end': {\r\n name: 'minecraft:the_end',\r\n ultrawarm: false,\r\n natural: false,\r\n shrunk: false,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: false,\r\n has_raids: true,\r\n has_skylight: false,\r\n has_ceiling: false,\r\n ambient_light: 0,\r\n fixed_time: 6000,\r\n logical_height: 256,\r\n effects: 'minecraft:the_end',\r\n infiniburn: 'minecraft:infiniburn_end',\r\n }\r\n });\r\n exports.NoiseSettingsPresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings' } }), node, {\r\n 'minecraft:overworld': exports.DefaultNoiseSettings,\r\n 'minecraft:nether': {\r\n name: 'minecraft:nether',\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n disable_mob_generation: true,\r\n noise: {\r\n density_factor: 0,\r\n density_offset: 0.019921875,\r\n simplex_surface_noise: false,\r\n random_density_offset: false,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n height: 128,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 3,\r\n xz_factor: 80,\r\n y_factor: 60\r\n },\r\n top_slide: {\r\n target: 120,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 320,\r\n size: 4,\r\n offset: -1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:netherrack\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:lava\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:end': {\r\n name: 'minecraft:end',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: -10,\r\n sea_level: 0,\r\n disable_mob_generation: true,\r\n noise: {\r\n density_factor: 0,\r\n density_offset: 0,\r\n simplex_surface_noise: true,\r\n random_density_offset: false,\r\n island_noise_override: true,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n height: 128,\r\n sampling: {\r\n xz_scale: 2,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -3000,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 7,\r\n offset: 1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:end_stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:air\"\r\n }\r\n },\r\n 'minecraft:amplified': {\r\n name: 'minecraft:amplified',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n disable_mob_generation: false,\r\n noise: {\r\n density_factor: 1,\r\n density_offset: -0.46875,\r\n simplex_surface_noise: true,\r\n random_density_offset: true,\r\n amplified: true,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n height: 256,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -10,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 0,\r\n offset: 0\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:caves': {\r\n name: 'minecraft:caves',\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n disable_mob_generation: true,\r\n noise: {\r\n density_factor: 0,\r\n density_offset: 0.019921875,\r\n simplex_surface_noise: false,\r\n random_density_offset: false,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n height: 128,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 3,\r\n xz_factor: 80,\r\n y_factor: 60\r\n },\r\n top_slide: {\r\n target: 120,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 320,\r\n size: 4,\r\n offset: -1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:floating_islands': {\r\n name: 'minecraft:floating_islands',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: -10,\r\n sea_level: 0,\r\n disable_mob_generation: true,\r\n noise: {\r\n density_factor: 0,\r\n density_offset: 0,\r\n simplex_surface_noise: true,\r\n random_density_offset: false,\r\n island_noise_override: true,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n height: 128,\r\n sampling: {\r\n xz_scale: 2,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -3000,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 7,\r\n offset: 1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n }\r\n });\r\n}\r\nexports.initCommonSchemas = initCommonSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initAdvancementSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initAdvancementSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const EntityPredicate = core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.Opt(Reference('entity_predicate')),\r\n change: v => { var _a, _b; return (_b = (_a = v[0]) === null || _a === void 0 ? void 0 : _a.predicate) !== null && _b !== void 0 ? _b : ({}); }\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('condition')),\r\n change: v => [{\r\n condition: 'minecraft:entity_properties',\r\n predicate: v\r\n }]\r\n }\r\n ], { context: 'conditions' });\r\n schemas.register('advancement', core_1.Mod(core_1.ObjectNode({\r\n display: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n icon: core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } }))\r\n }),\r\n title: Reference('text_component'),\r\n description: Reference('text_component'),\r\n background: core_1.Opt(StringNode()),\r\n frame: core_1.Opt(StringNode({ enum: ['task', 'challenge', 'goal'] })),\r\n show_toast: core_1.Opt(core_1.BooleanNode()),\r\n announce_to_chat: core_1.Opt(core_1.BooleanNode()),\r\n hidden: core_1.Opt(core_1.BooleanNode())\r\n }), {\r\n default: () => ({\r\n icon: {\r\n item: 'minecraft:stone'\r\n },\r\n title: '',\r\n description: ''\r\n })\r\n })),\r\n parent: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$advancement' } })),\r\n criteria: core_1.MapNode(StringNode(), Reference('advancement_criteria')),\r\n requirements: core_1.Opt(core_1.ListNode(core_1.ListNode(StringNode() // TODO: add validation\r\n ))),\r\n rewards: core_1.Opt(core_1.ObjectNode({\r\n function: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$function' } })),\r\n loot: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$loot_table' } }))),\r\n recipes: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }))),\r\n experience: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n })),\r\n }, { context: 'advancement' }), {\r\n default: () => ({\r\n criteria: {\r\n requirement: {\r\n trigger: 'minecraft:location'\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('advancement_criteria', core_1.ObjectNode({\r\n trigger: StringNode({ validator: 'resource', params: { pool: collections.get('advancement_trigger') } }),\r\n conditions: core_1.Opt(core_1.ObjectNode({\r\n player: core_1.Mod(EntityPredicate, {\r\n enabled: path => path.pop().push('trigger').get() !== 'minecraft:impossible'\r\n }),\r\n [core_1.Switch]: ['pop', { push: 'trigger' }],\r\n [core_1.Case]: {\r\n 'minecraft:bee_nest_destroyed': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n num_bees_inside: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:bred_animals': {\r\n parent: EntityPredicate,\r\n partner: EntityPredicate,\r\n child: EntityPredicate\r\n },\r\n 'minecraft:brewed_potion': {\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } }))\r\n },\r\n 'minecraft:changed_dimension': {\r\n from: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n to: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } }))\r\n },\r\n 'minecraft:channeled_lightning': {\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:construct_beacon': {\r\n level: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:consume_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:cured_zombie_villager': {\r\n villager: EntityPredicate,\r\n zombie: EntityPredicate\r\n },\r\n 'minecraft:effects_changed': {\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n },\r\n 'minecraft:enter_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n },\r\n 'minecraft:enchanted_item': {\r\n levels: core_1.Opt(Common_1.Range()),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:entity_hurt_player': {\r\n damage: core_1.Opt(Reference('damage_predicate'))\r\n },\r\n 'minecraft:entity_killed_player': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:filled_bucket': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:fishing_rod_hooked': {\r\n entity: EntityPredicate,\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:hero_of_the_village': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:inventory_changed': {\r\n slots: core_1.Opt(core_1.ObjectNode({\r\n empty: core_1.Opt(Common_1.Range()),\r\n occupied: core_1.Opt(Common_1.Range()),\r\n full: core_1.Opt(Common_1.Range())\r\n })),\r\n items: core_1.Opt(core_1.ListNode(Reference('item_predicate')))\r\n },\r\n 'minecraft:item_durability_changed': {\r\n delta: core_1.Opt(Common_1.Range()),\r\n durability: core_1.Opt(Common_1.Range()),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:item_used_on_block': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:killed_by_crossbow': {\r\n unique_entity_types: core_1.Opt(Common_1.Range()),\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:levitation': {\r\n distance: core_1.Opt(Common_1.Range()),\r\n duration: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:location': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:nether_travel': {\r\n distance: core_1.Opt(Common_1.Range()),\r\n entered: core_1.Opt(Reference('location_predicate')),\r\n exited: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:placed_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })),\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:player_generates_container_loot': {\r\n loot_table: StringNode({ validator: 'resource', params: { pool: '$loot_table' } })\r\n },\r\n 'minecraft:player_hurt_entity': {\r\n damage: core_1.Opt(Reference('damage_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_interacted_with_entity': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_killed_entity': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:recipe_unlocked': {\r\n recipe: StringNode({ validator: 'resource', params: { pool: '$recipe' } })\r\n },\r\n 'minecraft:slept_in_bed': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:slide_down_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:shot_crossbow': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:summoned_entity': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:tame_animal': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:target_hit': {\r\n projectile: EntityPredicate,\r\n shooter: EntityPredicate,\r\n signal_strength: core_1.Opt(Common_1.Range({ integer: true }))\r\n },\r\n 'minecraft:thrown_item_picked_up_by_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:used_ender_eye': {\r\n distance: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:used_totem': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:villager_trade': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:voluntary_exile': {\r\n location: Reference('location_predicate')\r\n }\r\n }\r\n }, { context: 'criterion' }))\r\n }, { category: 'predicate', context: 'criterion' }));\r\n}\r\nexports.initAdvancementSchemas = initAdvancementSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initConditionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initConditionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('predicate', core_1.ObjectOrList(Reference('condition'), { choiceContext: 'condition' }));\r\n schemas.register('condition', core_1.Mod(core_1.ObjectNode({\r\n condition: StringNode({ validator: 'resource', params: { pool: 'loot_condition_type' } }),\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:entity_properties',\r\n entity: 'this'\r\n })\r\n }));\r\n}\r\nexports.initConditionSchemas = initConditionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const NoPreset = (node) => core_1.Mod(node, {\r\n enabled: path => path.push('preset').get() === undefined\r\n });\r\n schemas.register('dimension', core_1.Mod(core_1.ObjectNode({\r\n type: Common_1.DimensionTypePresets(Reference('dimension_type')),\r\n generator: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/chunk_generator' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n settings: Common_1.NoiseSettingsPresets(Reference('noise_settings')),\r\n biome_source: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/biome_source' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:fixed': {\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })\r\n },\r\n 'minecraft:multi_noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n preset: core_1.Opt(StringNode({ enum: ['nether'] })),\r\n altitude_noise: NoPreset(Reference('generator_biome_noise')),\r\n temperature_noise: NoPreset(Reference('generator_biome_noise')),\r\n humidity_noise: NoPreset(Reference('generator_biome_noise')),\r\n weirdness_noise: NoPreset(Reference('generator_biome_noise')),\r\n biomes: NoPreset(core_1.Mod(core_1.ListNode(Reference('generator_biome')), {\r\n default: () => [{\r\n biome: 'minecraft:plains'\r\n }]\r\n }))\r\n },\r\n 'minecraft:checkerboard': {\r\n scale: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 62 })),\r\n biomes: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }))\r\n },\r\n 'minecraft:the_end': {\r\n seed: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:vanilla_layered': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n large_biomes: core_1.Opt(core_1.BooleanNode()),\r\n legacy_biome_init_layer: core_1.Opt(core_1.BooleanNode())\r\n }\r\n }\r\n }, { category: 'predicate', disableSwitchContext: true })\r\n },\r\n 'minecraft:flat': {\r\n settings: core_1.ObjectNode({\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n lakes: core_1.Opt(core_1.BooleanNode()),\r\n features: core_1.Opt(core_1.BooleanNode()),\r\n layers: core_1.ListNode(Reference('generator_layer')),\r\n structures: Reference('generator_structures')\r\n })\r\n }\r\n }\r\n }, { disableSwitchContext: true })\r\n }, { category: 'pool', context: 'dimension' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:fixed',\r\n seed,\r\n biome: 'minecraft:plains'\r\n },\r\n settings: 'minecraft:overworld'\r\n }\r\n };\r\n }\r\n }));\r\n schemas.register('generator_biome', core_1.Mod(core_1.ObjectNode({\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }),\r\n parameters: core_1.ObjectNode({\r\n altitude: core_1.NumberNode(),\r\n temperature: core_1.NumberNode(),\r\n humidity: core_1.NumberNode(),\r\n weirdness: core_1.NumberNode(),\r\n offset: core_1.NumberNode()\r\n })\r\n }, { context: 'generator_biome' }), {\r\n default: () => ({\r\n biome: 'minecraft:plains',\r\n parameters: {\r\n altitude: 0,\r\n temperature: 0,\r\n humidity: 0,\r\n weirdness: 0,\r\n offset: 0\r\n }\r\n })\r\n }));\r\n schemas.register('generator_biome_noise', core_1.Mod(core_1.ObjectNode({\r\n firstOctave: core_1.NumberNode({ integer: true }),\r\n amplitudes: core_1.ListNode(core_1.NumberNode())\r\n }, { context: 'generator_biome_noise' }), {\r\n default: () => ({\r\n firstOctave: -7,\r\n amplitudes: [1, 1]\r\n })\r\n }));\r\n}\r\nexports.initDimensionSchemas = initDimensionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionTypeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionTypeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('dimension_type', core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Mod(StringNode({ validator: 'resource', params: { pool: '$dimension_type', isDefinition: true } }), {\r\n enabled: (path) => path.getArray().length > 0\r\n }),\r\n ultrawarm: core_1.BooleanNode(),\r\n natural: core_1.BooleanNode(),\r\n piglin_safe: core_1.BooleanNode(),\r\n respawn_anchor_works: core_1.BooleanNode(),\r\n bed_works: core_1.BooleanNode(),\r\n has_raids: core_1.BooleanNode(),\r\n has_skylight: core_1.BooleanNode(),\r\n has_ceiling: core_1.BooleanNode(),\r\n coordinate_scale: core_1.NumberNode({ min: 0.00001, max: 30000000 }),\r\n ambient_light: core_1.NumberNode(),\r\n fixed_time: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n logical_height: core_1.NumberNode({ integer: true, min: 0, max: 256 }),\r\n effects: core_1.Opt(StringNode({ enum: ['minecraft:overworld', 'minecraft:the_nether', 'minecraft:the_end'] })),\r\n infiniburn: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }, { context: 'dimension_type' }), {\r\n default: () => Common_1.DefaultDimensionType\r\n }));\r\n}\r\nexports.initDimensionTypeSchemas = initDimensionTypeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LootFunctions = exports.LootConditions = exports.LootCopySources = exports.LootEntitySources = exports.LootTableTypes = void 0;\r\nexports.LootTableTypes = new Map([\r\n ['minecraft:advancement_entity', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:advancement_reward', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:barter', { requires: [8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:block', { requires: [1 /* BlockState */, 7 /* Origin */, 9 /* Tool */], allows: [0 /* BlockEntity */, 4 /* ExplosionRadius */, 8 /* ThisEntity */] }],\r\n ['minecraft:chest', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:command', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:empty', { requires: [], allows: [] }],\r\n ['minecraft:entity', { requires: [2 /* DamageSource */, 7 /* Origin */, 8 /* ThisEntity */], allows: [3 /* DirectKillerEntity */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */] }],\r\n ['minecraft:fishing', { requires: [7 /* Origin */, 9 /* Tool */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:generic', { requires: [2 /* DamageSource */, 0 /* BlockEntity */, 1 /* BlockState */, 3 /* DirectKillerEntity */, 4 /* ExplosionRadius */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */, 7 /* Origin */, 8 /* ThisEntity */, 9 /* Tool */], allows: [] }],\r\n ['minecraft:gift', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:selector', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }]\r\n]);\r\n/**\r\n * A map from loot entity sources to an array of their required context.\r\n */\r\nexports.LootEntitySources = new Map([\r\n ['direct_killer', [3 /* DirectKillerEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot copy sources to an array of their required context.\r\n */\r\nexports.LootCopySources = new Map([\r\n ['block_entity', [0 /* BlockEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot condition IDs to an array of their required context.\r\n */\r\nexports.LootConditions = new Map([\r\n ['minecraft:alternative', []],\r\n ['minecraft:block_state_property', [1 /* BlockState */]],\r\n ['minecraft:damage_source_properties', [2 /* DamageSource */]],\r\n ['minecraft:entity_properties', [7 /* Origin */]],\r\n ['minecraft:entity_scores', []],\r\n ['minecraft:inverted', []],\r\n ['minecraft:killed_by_player', [6 /* LastDamagePlayer */]],\r\n ['minecraft:location_check', []],\r\n ['minecraft:match_tool', [9 /* Tool */]],\r\n ['minecraft:random_chance', []],\r\n ['minecraft:random_chance_with_looting', [5 /* KillerEntity */]],\r\n ['minecraft:reference', []],\r\n ['minecraft:survives_explosion', [4 /* ExplosionRadius */]],\r\n ['minecraft:table_bonus', [9 /* Tool */]],\r\n ['minecraft:time_check', []],\r\n ['minecraft:weather_check', []]\r\n]);\r\n/**\r\n * A map from loot function IDs to an array of their required context.\r\n */\r\nexports.LootFunctions = new Map([\r\n ['minecraft:apply_bonus', [9 /* Tool */]],\r\n ['minecraft:copy_name', []],\r\n ['minecraft:copy_nbt', []],\r\n ['minecraft:copy_state', [1 /* BlockState */]],\r\n ['minecraft:enchant_randomly', []],\r\n ['minecraft:enchant_with_levels', []],\r\n ['minecraft:exploration_map', [7 /* Origin */]],\r\n ['minecraft:explosion_decay', []],\r\n ['minecraft:fill_player_head', []],\r\n ['minecraft:furnace_smelt', []],\r\n ['minecraft:limit_count', []],\r\n ['minecraft:looting_enchant', [5 /* KillerEntity */]],\r\n ['minecraft:set_attributes', []],\r\n ['minecraft:set_contents', []],\r\n ['minecraft:set_count', []],\r\n ['minecraft:set_damage', []],\r\n ['minecraft:set_loot_table', []],\r\n ['minecraft:set_lore', []],\r\n ['minecraft:set_name', []],\r\n ['minecraft:set_nbt', []],\r\n ['minecraft:set_stew_effect', []]\r\n]);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initLootTableSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst LootContext_1 = require(\"../LootContext\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initLootTableSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('loot_condition')))\r\n };\r\n const functionsAndConditions = {\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function'))),\r\n ...conditions\r\n };\r\n function compileSwitchNode(contextMap, collectionID, getNode) {\r\n const cases = [];\r\n const getAvailableOptions = (providedContext) => collections\r\n .get(collectionID)\r\n .filter(t => {\r\n var _a;\r\n const requiredContext = (_a = contextMap.get(t)) !== null && _a !== void 0 ? _a : [];\r\n return requiredContext.every(c => providedContext.includes(c));\r\n });\r\n for (const [tableType, { allows, requires }] of LootContext_1.LootTableTypes) {\r\n const providedContext = [...allows, ...requires];\r\n cases.push({\r\n match: path => path.getModel().get(new core_1.Path(['type'])) === tableType,\r\n node: getNode(getAvailableOptions(providedContext))\r\n });\r\n }\r\n cases.push({ match: _ => true, node: getNode(collectionID) });\r\n return core_1.SwitchNode(cases);\r\n }\r\n const conditionSwtichNode = compileSwitchNode(LootContext_1.LootConditions, 'loot_condition_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_condition_type` } }));\r\n const functionSwtichNode = compileSwitchNode(LootContext_1.LootFunctions, 'loot_function_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_function_type` } }));\r\n const entitySourceSwtichNode = compileSwitchNode(LootContext_1.LootEntitySources, 'entity_source', type => StringNode({ enum: type }));\r\n const copySourceSwtichNode = compileSwitchNode(LootContext_1.LootCopySources, 'copy_source', type => StringNode({ enum: type }));\r\n schemas.register('loot_table', core_1.Mod(core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: \"resource\", params: { pool: collections.get('loot_context_type') } })),\r\n pools: core_1.Opt(core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n rolls: Common_1.Range({ allowBinomial: true, integer: true }),\r\n bonus_rolls: core_1.Opt(Common_1.Range({ integer: true })),\r\n entries: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n }, { category: 'pool', context: 'loot_pool' }), {\r\n default: () => ({\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n })\r\n }))),\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function')))\r\n }, { context: 'loot_table' }), {\r\n default: () => ({\r\n pools: [{\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n }]\r\n })\r\n }));\r\n const weightMod = {\r\n enabled: path => {\r\n var _a;\r\n return ((_a = path.pop().get()) === null || _a === void 0 ? void 0 : _a.length) > 1\r\n && !['minecraft:alternatives', 'minecraft:group', 'minecraft:sequence'].includes(path.push('type').get());\r\n }\r\n };\r\n schemas.register('loot_entry', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'loot_pool_entry_type' } }),\r\n weight: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true, min: 1 }), weightMod)),\r\n quality: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), weightMod)),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alternatives': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:dynamic': {\r\n name: StringNode(),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:group': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:item': {\r\n name: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:sequence': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:tag': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$tag/item' } }),\r\n expand: core_1.Opt(core_1.BooleanNode()),\r\n ...functionsAndConditions\r\n }\r\n }\r\n }, { context: 'loot_entry' }), {\r\n default: () => ({\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('loot_function', core_1.Mod(core_1.ObjectNode({\r\n function: functionSwtichNode,\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: (() => {\r\n const cases = {\r\n 'minecraft:apply_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n formula: StringNode({ validator: 'resource', params: { pool: collections.get('loot_table_apply_bonus_formula') } }),\r\n parameters: core_1.Mod(core_1.ObjectNode({\r\n bonusMultiplier: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:uniform_bonus_count'\r\n }),\r\n extra: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n }),\r\n probability: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n })\r\n }), {\r\n enabled: path => path.push('formula').get() !== 'minecraft:ore_drops'\r\n })\r\n },\r\n 'minecraft:copy_name': {\r\n source: copySourceSwtichNode\r\n },\r\n 'minecraft:copy_nbt': {\r\n source: copySourceSwtichNode,\r\n ops: core_1.ListNode(core_1.ObjectNode({\r\n source: StringNode({ validator: 'nbt_path', params: { category: { getter: 'copy_source', path: ['pop', 'pop', 'pop', { push: 'source' }] } } }),\r\n target: StringNode({ validator: 'nbt_path', params: { category: 'minecraft:item' } }),\r\n op: StringNode({ enum: ['replace', 'append', 'merge'] })\r\n }, { context: 'nbt_operation' }))\r\n },\r\n 'minecraft:copy_state': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.ListNode(StringNode({ validator: 'block_state_key', params: { id: ['pop', 'pop', { push: 'block' }] } }))\r\n },\r\n 'minecraft:enchant_randomly': {\r\n enchantments: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })))\r\n },\r\n 'minecraft:enchant_with_levels': {\r\n levels: Common_1.Range({ allowBinomial: true }),\r\n treasure: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:exploration_map': {\r\n destination: core_1.Opt(StringNode({ enum: 'map_feature' })),\r\n decoration: core_1.Opt(StringNode({ enum: 'map_decoration' })),\r\n zoom: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n search_radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n skip_existing_chunks: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:fill_player_head': {\r\n entity: entitySourceSwtichNode\r\n },\r\n 'minecraft:limit_count': {\r\n limit: Common_1.Range({ bounds: true })\r\n },\r\n 'minecraft:looting_enchant': {\r\n count: Common_1.Range({ bounds: true }),\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_attributes': {\r\n modifiers: core_1.ListNode(Reference('attribute_modifier'))\r\n },\r\n 'minecraft:set_contents': {\r\n entries: core_1.ListNode(Reference('loot_entry'))\r\n },\r\n 'minecraft:set_count': {\r\n count: Common_1.Range({ allowBinomial: true })\r\n },\r\n 'minecraft:set_damage': {\r\n damage: Common_1.Range({ forceRange: true })\r\n },\r\n 'minecraft:set_loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n seed: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_lore': {\r\n entity: core_1.Opt(entitySourceSwtichNode),\r\n lore: core_1.ListNode(Reference('text_component')),\r\n replace: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_name': {\r\n entity: core_1.Opt(entitySourceSwtichNode),\r\n name: core_1.Opt(Reference('text_component'))\r\n },\r\n 'minecraft:set_nbt': {\r\n tag: StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item' } } })\r\n },\r\n 'minecraft:set_stew_effect': {\r\n effects: core_1.Opt(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }),\r\n duration: Common_1.Range()\r\n })))\r\n }\r\n };\r\n const res = {};\r\n collections.get('loot_function_type').forEach(f => {\r\n res[f] = { ...cases[f], ...conditions };\r\n });\r\n return res;\r\n })()\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => ({\r\n function: 'minecraft:set_count',\r\n count: 1\r\n })\r\n }));\r\n schemas.register('loot_condition', core_1.Mod(core_1.ObjectNode({\r\n condition: conditionSwtichNode,\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: {\r\n ...Common_1.ConditionCases,\r\n 'minecraft:entity_properties': {\r\n entity: entitySourceSwtichNode,\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: entitySourceSwtichNode,\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), Common_1.Range({ bounds: true }))\r\n }\r\n }\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:random_chance',\r\n chance: 0.5\r\n })\r\n }));\r\n schemas.register('attribute_modifier', core_1.Mod(core_1.ObjectNode({\r\n attribute: StringNode({ validator: 'resource', params: { pool: 'attribute' } }),\r\n name: StringNode(),\r\n amount: Common_1.Range({ bounds: true }),\r\n operation: StringNode({ enum: ['addition', 'multiply_base', 'multiply_total'] }),\r\n slot: core_1.StringOrList(StringNode({ enum: 'slot' }))\r\n }, { context: 'attribute_modifier' }), {\r\n default: () => ({\r\n attribute: 'minecraft:generic.max_health',\r\n name: '',\r\n amount: 1,\r\n operation: 'addition',\r\n slot: 'mainhand'\r\n })\r\n }));\r\n}\r\nexports.initLootTableSchemas = initLootTableSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPackMcmetaSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initPackMcmetaSchemas(schemas, _) {\r\n const getSimpleString = (jsonText) => { var _a, _b; return jsonText instanceof Array ? getSimpleString(jsonText[0]) : (_b = (_a = jsonText === null || jsonText === void 0 ? void 0 : jsonText.text) !== null && _a !== void 0 ? _a : jsonText === null || jsonText === void 0 ? void 0 : jsonText.toString()) !== null && _b !== void 0 ? _b : ''; };\r\n schemas.register('pack_mcmeta', core_1.Mod(core_1.ObjectNode({\r\n pack: core_1.Mod(core_1.ObjectNode({\r\n pack_format: core_1.Mod(core_1.NumberNode({ integer: true, min: 6, max: 6 }), { default: () => 6 }),\r\n description: core_1.Reference(schemas, 'text_component')\r\n }), {\r\n default: () => ({\r\n pack_format: 6,\r\n description: ''\r\n })\r\n })\r\n }), {\r\n default: () => ({\r\n pack: {\r\n pack_format: 6,\r\n description: ''\r\n }\r\n })\r\n }));\r\n}\r\nexports.initPackMcmetaSchemas = initPackMcmetaSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPredicatesSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initPredicatesSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const StateChoice = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode(),\r\n change: v => (typeof v === 'boolean' || typeof v === 'number') ? v.toString() : ''\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => (typeof v === 'string') ? parseInt(v) : 0\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }),\r\n change: v => (typeof v === 'number') ? ({ min: v, max: v }) : ({})\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => v === 'true' || v === 1\r\n }\r\n ]);\r\n schemas.register('item_predicate', core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } })),\r\n count: core_1.Opt(Common_1.Range()),\r\n durability: core_1.Opt(Common_1.Range()),\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } })),\r\n enchantments: core_1.Opt(core_1.ListNode(Reference('enchantment_predicate')))\r\n }, { context: 'item' }));\r\n schemas.register('enchantment_predicate', core_1.ObjectNode({\r\n enchantment: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })),\r\n levels: core_1.Opt(Common_1.Range())\r\n }, { context: 'enchantment' }));\r\n schemas.register('block_predicate', core_1.ObjectNode({\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block', id: ['pop', { push: 'block' }] } } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice, { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n }, { context: 'block' }));\r\n schemas.register('fluid_predicate', core_1.ObjectNode({\r\n fluid: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'fluid' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/fluid' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice))\r\n }, { context: 'fluid' }));\r\n schemas.register('location_predicate', core_1.ObjectNode({\r\n position: core_1.Opt(core_1.ObjectNode({\r\n x: core_1.Opt(Common_1.Range()),\r\n y: core_1.Opt(Common_1.Range()),\r\n z: core_1.Opt(Common_1.Range())\r\n })),\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n feature: core_1.Opt(StringNode({ enum: collections.get('worldgen/structure_feature').map(v => v.slice(10)) })),\r\n dimension: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n light: core_1.Opt(core_1.ObjectNode({\r\n light: core_1.Opt(Common_1.Range({ integer: true, min: 0, max: 15 }))\r\n })),\r\n smokey: core_1.Opt(core_1.BooleanNode()),\r\n block: core_1.Opt(Reference('block_predicate')),\r\n fluid: core_1.Opt(Reference('fluid_predicate'))\r\n }, { context: 'location' }));\r\n schemas.register('statistic_predicate', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'stat_type' } }),\r\n stat: StringNode(),\r\n value: Common_1.Range(),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:mined': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:crafted': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:used': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:broken': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:picked_up': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:dropped': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:killed': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:killed_by': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:custom': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'custom_stat' } })\r\n }\r\n }\r\n }));\r\n schemas.register('player_predicate', core_1.ObjectNode({\r\n gamemode: core_1.Opt(StringNode({ enum: 'gamemode' })),\r\n level: core_1.Opt(Common_1.Range()),\r\n advancements: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$advancement' } }), core_1.ChoiceNode([\r\n { type: 'boolean', node: core_1.BooleanNode(), change: _ => true },\r\n {\r\n type: 'object', node: core_1.MapNode(StringNode(), core_1.BooleanNode())\r\n }\r\n ]))),\r\n recipes: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }), core_1.BooleanNode())),\r\n stats: core_1.Opt(core_1.ListNode(Reference('statistic_predicate')))\r\n }, { context: 'player' }));\r\n schemas.register('status_effect_predicate', core_1.ObjectNode({\r\n amplifier: core_1.Opt(Common_1.Range()),\r\n duration: core_1.Opt(Common_1.Range()),\r\n ambient: core_1.Opt(core_1.BooleanNode()),\r\n visible: core_1.Opt(core_1.BooleanNode())\r\n }, { context: 'status_effect' }));\r\n schemas.register('distance_predicate', core_1.ObjectNode({\r\n x: core_1.Opt(Common_1.Range()),\r\n y: core_1.Opt(Common_1.Range()),\r\n z: core_1.Opt(Common_1.Range()),\r\n absolute: core_1.Opt(Common_1.Range()),\r\n horizontal: core_1.Opt(Common_1.Range())\r\n }, { context: 'distance' }));\r\n schemas.register('entity_predicate', core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'entity_type', allowTag: true } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:entity', id: ['pop', { push: 'type' }] } } })),\r\n team: core_1.Opt(StringNode({ validator: 'team' })),\r\n location: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n flags: core_1.Opt(core_1.ObjectNode({\r\n is_on_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_sneaking: core_1.Opt(core_1.BooleanNode()),\r\n is_sprinting: core_1.Opt(core_1.BooleanNode()),\r\n is_swimming: core_1.Opt(core_1.BooleanNode()),\r\n is_baby: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n equipment: core_1.Opt(core_1.MapNode(StringNode({ enum: 'slot' }), Reference('item_predicate'))),\r\n vehicle: core_1.Opt(Reference('entity_predicate')),\r\n targeted_entity: core_1.Opt(Reference('entity_predicate')),\r\n player: core_1.Opt(Reference('player_predicate')),\r\n fishing_hook: core_1.Opt(core_1.ObjectNode({\r\n in_open_water: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n }, { context: 'entity' }));\r\n schemas.register('damage_source_predicate', core_1.ObjectNode({\r\n is_explosion: core_1.Opt(core_1.BooleanNode()),\r\n is_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_magic: core_1.Opt(core_1.BooleanNode()),\r\n is_projectile: core_1.Opt(core_1.BooleanNode()),\r\n is_lightning: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_armor: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_invulnerability: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_magic: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n direct_entity: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'damage_source' }));\r\n schemas.register('damage_predicate', core_1.ObjectNode({\r\n dealt: core_1.Opt(Common_1.Range()),\r\n taken: core_1.Opt(Common_1.Range()),\r\n blocked: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n type: core_1.Opt(Reference('damage_source_predicate'))\r\n }, { context: 'damage' }));\r\n}\r\nexports.initPredicatesSchemas = initPredicatesSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initRecipeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initRecipeSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('recipe', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'recipe_serializer' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:crafting_shaped': {\r\n group: core_1.Opt(StringNode({ enum: 'recipe_group', additional: true })),\r\n pattern: core_1.ListNode(StringNode()),\r\n key: core_1.MapNode(StringNode(), // TODO: add validation\r\n Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:crafting_shapeless': {\r\n group: core_1.Opt(StringNode()),\r\n ingredients: core_1.ListNode(Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:smelting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 200 }))\r\n },\r\n 'minecraft:blasting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:smoking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:campfire_cooking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:stonecutting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:smithing': {\r\n group: core_1.Opt(StringNode()),\r\n base: Reference('recipe_ingredient_object'),\r\n addition: Reference('recipe_ingredient_object'),\r\n result: Reference('recipe_result')\r\n }\r\n }\r\n }, { context: 'recipe', disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:crafting_shaped'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('recipe_ingredient_object'),\r\n change: v => v[0]\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('recipe_ingredient_object')),\r\n change: v => [v]\r\n }\r\n ]), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient_object', core_1.Mod(core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_result', core_1.Mod(core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 1 }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n}\r\nexports.initRecipeSchemas = initRecipeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTagsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTagsSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const TagBase = (type) => core_1.Mod(core_1.ObjectNode({\r\n replace: core_1.Opt(core_1.BooleanNode()),\r\n values: core_1.ListNode(core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: type, allowTag: true } }),\r\n change: v => v.id\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: type, allowTag: true, allowUnknown: true } }),\r\n required: core_1.BooleanNode()\r\n }),\r\n change: v => ({ id: v })\r\n }\r\n ])),\r\n }, { context: 'tag' }), {\r\n default: () => ({\r\n values: []\r\n })\r\n });\r\n schemas.register('block_tag', TagBase('block'));\r\n schemas.register('entity_type_tag', TagBase('entity_type'));\r\n schemas.register('fluid_tag', TagBase('fluid'));\r\n schemas.register('function_tag', TagBase('$function'));\r\n schemas.register('item_tag', TagBase('item'));\r\n}\r\nexports.initTagsSchemas = initTagsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTextComponentSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTextComponentSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const getSimpleString = (v) => { var _a; return v instanceof Array ? getSimpleString(v[0]) : (_a = v === null || v === void 0 ? void 0 : v.text) !== null && _a !== void 0 ? _a : (typeof v === 'object' ? '' : v === null || v === void 0 ? void 0 : v.toString()); };\r\n schemas.register('text_component', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('text_component_object'),\r\n change: v => v instanceof Array ? (typeof v[0] === 'object' ? v[0] : { text: getSimpleString(v[0]) }) : typeof v === 'object' ? v : { text: getSimpleString(v) }\r\n },\r\n {\r\n type: 'list',\r\n node: Reference('text_component_list'),\r\n change: v => [v]\r\n },\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: StringNode(),\r\n change: getSimpleString\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => {\r\n const n = parseFloat(getSimpleString(v));\r\n return isFinite(n) ? n : (!!v ? 1 : 0);\r\n }\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => {\r\n const s = getSimpleString(v);\r\n return s === 'true' || s === 'false' ? s === 'true' : !!s;\r\n }\r\n }\r\n ], { context: 'text_component' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n const CommonFields = {\r\n color: core_1.Opt(StringNode()) /* TODO */,\r\n font: core_1.Opt(StringNode()),\r\n bold: core_1.Opt(core_1.BooleanNode()),\r\n italic: core_1.Opt(core_1.BooleanNode()),\r\n underlined: core_1.Opt(core_1.BooleanNode()),\r\n strikethrough: core_1.Opt(core_1.BooleanNode()),\r\n obfuscated: core_1.Opt(core_1.BooleanNode()),\r\n insertion: core_1.Opt(StringNode()),\r\n clickEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['open_url', 'open_file', 'run_command', 'suggest_command', 'change_page', 'copy_to_clipboard'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'change_page': {\r\n value: StringNode()\r\n },\r\n 'copy_to_clipboard': {\r\n value: StringNode()\r\n },\r\n 'open_file': {\r\n value: StringNode()\r\n },\r\n 'open_url': {\r\n value: StringNode()\r\n },\r\n 'run_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n },\r\n 'suggest_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n }\r\n }\r\n })),\r\n hoverEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['show_text', 'show_item', 'show_entity'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'show_text': {\r\n value: core_1.Opt(Reference('text_component')),\r\n contents: core_1.Opt(Reference('text_component'))\r\n },\r\n 'show_item': {\r\n value: core_1.Opt(StringNode({ validator: 'nbt', params: { module: 'util::InventoryItem' } })),\r\n contents: core_1.Opt(core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n tag: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'id' }] } } }))\r\n }))\r\n },\r\n 'show_entity': {\r\n value: core_1.Opt(core_1.ObjectNode({\r\n name: core_1.Opt(StringNode()),\r\n type: core_1.Opt(StringNode()),\r\n id: core_1.Opt(StringNode())\r\n })),\r\n contents: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Opt(Reference('text_component')),\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n id: StringNode({ validator: 'uuid' })\r\n }), {\r\n default: () => ({\r\n type: 'minecraft:pig',\r\n id: '00000001-0001-0001-0001-000000000001'\r\n })\r\n }))\r\n }\r\n }\r\n })),\r\n extra: core_1.Opt(Reference('text_component_list'))\r\n };\r\n schemas.register('text_component_object', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'text',\r\n match: v => typeof v === 'object',\r\n change: v => ({ text: '' }),\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n text: StringNode(),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'translation',\r\n match: v => (v === null || v === void 0 ? void 0 : v.translate) !== undefined,\r\n change: v => ({ translate: '' }),\r\n node: core_1.ObjectNode({\r\n translate: StringNode(),\r\n with: core_1.Opt(Reference('text_component_list')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'score',\r\n match: v => (v === null || v === void 0 ? void 0 : v.score) !== undefined,\r\n change: v => ({ score: {} }),\r\n node: core_1.ObjectNode({\r\n score: core_1.ObjectNode({\r\n name: StringNode({ validator: 'entity', params: { amount: 'single', type: 'entities', isScoreHolder: true } }),\r\n objective: StringNode({ validator: 'objective' }),\r\n value: core_1.Opt(StringNode())\r\n }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'selector',\r\n match: v => (v === null || v === void 0 ? void 0 : v.selector) !== undefined,\r\n change: v => ({ selector: '' }),\r\n node: core_1.ObjectNode({\r\n selector: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'keybind',\r\n match: v => (v === null || v === void 0 ? void 0 : v.keybind) !== undefined,\r\n change: v => ({ keybind: '' }),\r\n node: core_1.ObjectNode({\r\n keybind: StringNode({ enum: 'keybind', additional: true }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'nbt',\r\n match: v => (v === null || v === void 0 ? void 0 : v.nbt) !== undefined,\r\n change: v => ({ nbt: '' }),\r\n node: core_1.ObjectNode({\r\n nbt: StringNode({ validator: 'nbt_path' }),\r\n block: core_1.Opt(StringNode({ validator: 'vector', params: { dimension: 3, isInteger: true } })),\r\n entity: core_1.Opt(StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } })),\r\n storage: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$storage' } })),\r\n interpret: core_1.Opt(core_1.BooleanNode()),\r\n ...CommonFields\r\n })\r\n }\r\n ], { context: 'text_component_object', choiceContext: 'text_component.object' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n schemas.register('text_component_list', core_1.Mod(core_1.ListNode(Reference('text_component')), {\r\n default: () => [{\r\n text: \"\"\r\n }]\r\n }));\r\n}\r\nexports.initTextComponentSchemas = initTextComponentSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initBiomeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initBiomeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('biome', core_1.Mod(core_1.ObjectNode({\r\n surface_builder: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_surface_builder' } }),\r\n depth: core_1.NumberNode(),\r\n scale: core_1.NumberNode(),\r\n temperature: core_1.NumberNode(),\r\n downfall: core_1.NumberNode(),\r\n precipitation: StringNode({ enum: ['none', 'rain', 'snow'] }),\r\n temperature_modifier: core_1.Opt(StringNode({ enum: ['none', 'frozen'] })),\r\n category: StringNode({ enum: 'biome_category' }),\r\n player_spawn_friendly: core_1.Opt(core_1.BooleanNode()),\r\n creature_spawn_probability: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n effects: core_1.ObjectNode({\r\n sky_color: core_1.NumberNode({ color: true }),\r\n fog_color: core_1.NumberNode({ color: true }),\r\n water_color: core_1.NumberNode({ color: true }),\r\n water_fog_color: core_1.NumberNode({ color: true }),\r\n grass_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n foliage_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n grass_color_modifier: core_1.Opt(StringNode({ enum: ['none', 'dark_forest', 'swamp'] })),\r\n ambient_sound: core_1.Opt(StringNode()),\r\n mood_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_delay: core_1.NumberNode({ integer: true }),\r\n block_search_extent: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode()\r\n })),\r\n additions_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n })),\r\n music: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n min_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n max_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n replace_current_music: core_1.BooleanNode()\r\n })),\r\n particle: core_1.Opt(core_1.ObjectNode({\r\n options: core_1.ObjectNode({\r\n type: StringNode()\r\n }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }))\r\n }),\r\n starts: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_structure_feature' } })),\r\n spawners: core_1.MapNode(StringNode({ enum: [\r\n 'water_ambient',\r\n 'ambient',\r\n 'misc',\r\n 'water_creature',\r\n 'creature',\r\n 'monster'\r\n ] }), core_1.Mod(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n weight: core_1.NumberNode({ integer: true }),\r\n minCount: core_1.NumberNode({ integer: true }),\r\n maxCount: core_1.NumberNode({ integer: true })\r\n })), {\r\n category: () => 'pool',\r\n default: () => [{\r\n type: 'minecraft:bat',\r\n weight: 1\r\n }]\r\n })),\r\n spawn_costs: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'entity_type' } }), core_1.Mod(core_1.ObjectNode({\r\n energy_budget: core_1.NumberNode(),\r\n charge: core_1.NumberNode()\r\n }, { category: 'function' }), {\r\n default: () => ({\r\n energy_budget: 0.12,\r\n charge: 1.0\r\n })\r\n })),\r\n carvers: core_1.MapNode(StringNode({ enum: ['air', 'liquid'] }), core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_carver' } })), {\r\n default: () => ['minecraft:cave']\r\n })),\r\n features: core_1.ListNode(core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })), { category: () => 'predicate' }), { maxLength: 10 })\r\n }, { context: 'biome' }), {\r\n default: () => ({\r\n surface_builder: 'minecraft:grass',\r\n depth: 0.125,\r\n scale: 0.05,\r\n temperature: 0.8,\r\n downfall: 0.4,\r\n precipitation: 'rain',\r\n category: 'plains',\r\n effects: {\r\n sky_color: 7907327,\r\n fog_color: 12638463,\r\n water_color: 4159204,\r\n water_fog_color: 329011\r\n }\r\n })\r\n }));\r\n}\r\nexports.initBiomeSchemas = initBiomeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCarverSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initCarverSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('configured_carver', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/carver' } }),\r\n config: core_1.ObjectNode({\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n })\r\n }, { context: 'carver' }), {\r\n default: () => ({\r\n type: 'minecraft:cave',\r\n config: {\r\n probability: 0.1\r\n }\r\n })\r\n }));\r\n}\r\nexports.initCarverSchemas = initCarverSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDecoratorSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initDecoratorSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const RangeConfig = {\r\n maximum: core_1.NumberNode({ integer: true }),\r\n bottom_offset: core_1.NumberNode({ integer: true }),\r\n top_offset: core_1.NumberNode({ integer: true })\r\n };\r\n const ChanceConfig = {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n };\r\n const CountConfig = {\r\n count: Common_1.UniformInt({ min: -10, max: 128, maxSpread: 128 })\r\n };\r\n schemas.register('configured_decorator', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/decorator' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:carving_mask': {\r\n step: StringNode({ enum: 'generation_step' }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:chance': ChanceConfig,\r\n 'minecraft:count': CountConfig,\r\n 'minecraft:count_extra': {\r\n count: core_1.NumberNode({ integer: true }),\r\n extra_count: core_1.NumberNode({ integer: true }),\r\n extra_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:count_multilayer': CountConfig,\r\n 'minecraft:count_noise': {\r\n noise_level: core_1.NumberNode(),\r\n below_noise: core_1.NumberNode({ integer: true }),\r\n above_noise: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:count_noise_biased': {\r\n noise_to_count_ratio: core_1.NumberNode({ integer: true }),\r\n noise_factor: core_1.NumberNode(),\r\n noise_offset: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:decorated': {\r\n outer: Reference('configured_decorator'),\r\n inner: Reference('configured_decorator')\r\n },\r\n 'minecraft:depth_average': {\r\n baseline: core_1.NumberNode({ integer: true }),\r\n spread: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:fire': CountConfig,\r\n 'minecraft:glowstone': CountConfig,\r\n 'minecraft:lava_lake': ChanceConfig,\r\n 'minecraft:range': RangeConfig,\r\n 'minecraft:range_biased': RangeConfig,\r\n 'minecraft:range_very_biased': RangeConfig,\r\n 'minecraft:water_lake': ChanceConfig\r\n }\r\n }, { context: 'decorator', category: 'predicate' })\r\n }, { context: 'decorator', category: 'predicate' }));\r\n}\r\nexports.initDecoratorSchemas = initDecoratorSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initProcessorListSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initProcessorListSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('processor_list', core_1.Mod(core_1.ObjectNode({\r\n processors: core_1.ListNode(Reference('processor'))\r\n }, { context: 'processor_list' }), {\r\n default: () => ({\r\n processors: [{\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n }]\r\n })\r\n }));\r\n schemas.register('processor', core_1.Mod(core_1.ObjectNode({\r\n processor_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_processor' } }),\r\n [core_1.Switch]: [{ push: 'processor_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_age': {\r\n mossiness: core_1.NumberNode()\r\n },\r\n 'minecraft:block_ignore': {\r\n blocks: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:block_rot': {\r\n integrity: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:gravity': {\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n offset: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:rule': {\r\n rules: core_1.ListNode(Reference('processor_rule'))\r\n }\r\n }\r\n }, { category: 'function', context: 'processor' }), {\r\n default: () => ({\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n })\r\n }));\r\n schemas.register('processor_rule', core_1.Mod(core_1.ObjectNode({\r\n position_predicate: core_1.Opt(Reference('pos_rule_test')),\r\n location_predicate: Reference('rule_test'),\r\n input_predicate: Reference('rule_test'),\r\n output_state: Reference('block_state'),\r\n output_nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block' } } }))\r\n }, { category: 'predicate', context: 'processor_rule' }), {\r\n default: () => ({\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n })\r\n }));\r\n const posTestFields = {\r\n min_dist: core_1.NumberNode({ min: 0, max: 255, integer: true }),\r\n max_dist: core_1.NumberNode({ min: 0, max: 255, integer: true }),\r\n min_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n max_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n };\r\n schemas.register('pos_rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'pos_rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:axis_aligned_linear_pos': {\r\n axis: StringNode({ enum: ['x', 'y', 'z'] }),\r\n ...posTestFields\r\n },\r\n 'minecraft:linear_pos': posTestFields\r\n }\r\n }, { context: 'pos_rule_test', disableSwitchContext: true }));\r\n schemas.register('rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:blockstate_match': {\r\n block_state: Reference('block_state')\r\n },\r\n 'minecraft:random_block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_blockstate_match': {\r\n block_state: Reference('block_state'),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:tag_match': {\r\n tag: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }\r\n }\r\n }, { context: 'rule_test', disableSwitchContext: true }));\r\n}\r\nexports.initProcessorListSchemas = initProcessorListSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nrequire(\"./Decorator\");\r\nrequire(\"./ProcessorList\");\r\nfunction initFeatureSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const RandomPatchConfig = {\r\n can_replace: core_1.BooleanNode(),\r\n project: core_1.BooleanNode(),\r\n need_water: core_1.BooleanNode(),\r\n xspread: core_1.NumberNode({ integer: true }),\r\n yspread: core_1.NumberNode({ integer: true }),\r\n zspread: core_1.NumberNode({ integer: true }),\r\n tries: core_1.NumberNode({ integer: true }),\r\n state_provider: Reference('block_state_provider'),\r\n block_placer: Reference('block_placer'),\r\n whitelist: core_1.ListNode(Reference('block_state')),\r\n blacklist: core_1.ListNode(Reference('block_state'))\r\n };\r\n const DiskConfig = {\r\n state: Reference('block_state'),\r\n radius: Common_1.UniformInt({ min: 0, max: 4, maxSpread: 4 }),\r\n half_height: core_1.NumberNode({ integer: true, min: 0, max: 4 }),\r\n targets: core_1.ListNode(Reference('block_state'))\r\n };\r\n const HugeMushroomConfig = {\r\n cap_provider: Reference('block_state_provider'),\r\n stem_provider: Reference('block_state_provider'),\r\n foliage_radius: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n };\r\n const OreConfig = {\r\n state: Reference('block_state'),\r\n size: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n target: Reference('rule_test')\r\n };\r\n const CountConfig = {\r\n count: Common_1.UniformInt({ min: -10, max: 128, maxSpread: 128 })\r\n };\r\n const Feature = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('configured_feature')\r\n }\r\n ], { choiceContext: 'feature' });\r\n schemas.register('configured_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bamboo': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:basalt_columns': {\r\n reach: Common_1.UniformInt({ min: 0, max: 2, maxSpread: 1 }),\r\n height: Common_1.UniformInt({ min: 1, max: 5, maxSpread: 5 })\r\n },\r\n 'minecraft:block_pile': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:decorated': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:delta_feature': {\r\n contents: Reference('block_state'),\r\n rim: Reference('block_state'),\r\n size: Common_1.UniformInt({ min: 0, max: 8, maxSpread: 8 }),\r\n rim_size: Common_1.UniformInt({ min: 0, max: 8, maxSpread: 8 })\r\n },\r\n 'minecraft:disk': DiskConfig,\r\n 'minecraft:emerald_ore': {\r\n state: Reference('block_state'),\r\n target: Reference('block_state')\r\n },\r\n 'minecraft:end_gateway': {\r\n exact: core_1.BooleanNode(),\r\n exit: core_1.Opt(Reference('block_pos'))\r\n },\r\n 'minecraft:end_spike': {\r\n crystal_invulnerable: core_1.Opt(core_1.BooleanNode()),\r\n crystal_beam_target: core_1.Opt(Reference('block_pos')),\r\n spikes: core_1.ListNode(core_1.ObjectNode({\r\n centerX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n centerZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n height: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n guarded: core_1.Opt(core_1.BooleanNode())\r\n }))\r\n },\r\n 'minecraft:fill_layer': {\r\n state: Reference('block_state'),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 255 })\r\n },\r\n 'minecraft:flower': RandomPatchConfig,\r\n 'minecraft:forest_rock': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:huge_brown_mushroom': HugeMushroomConfig,\r\n 'minecraft:huge_fungus': {\r\n hat_state: Reference('block_state'),\r\n decor_state: Reference('block_state'),\r\n stem_state: Reference('block_state'),\r\n valid_base_block: Reference('block_state'),\r\n planted: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:huge_red_mushroom': HugeMushroomConfig,\r\n 'minecraft:ice_patch': DiskConfig,\r\n 'minecraft:iceberg': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:lake': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:nether_forest_vegetation': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:netherrack_replace_blobs': {\r\n state: Reference('block_state'),\r\n target: Reference('block_state'),\r\n radius: Common_1.UniformInt()\r\n },\r\n 'minecraft:no_bonemeal_flower': RandomPatchConfig,\r\n 'minecraft:no_surface_ore': OreConfig,\r\n 'minecraft:ore': OreConfig,\r\n 'minecraft:random_patch': RandomPatchConfig,\r\n 'minecraft:random_boolean_selector': {\r\n feature_false: Feature,\r\n feature_true: Feature\r\n },\r\n 'minecraft:random_selector': {\r\n features: core_1.ListNode(core_1.ObjectNode({\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n feature: Feature\r\n })),\r\n default: Feature\r\n },\r\n 'minecraft:sea_pickle': CountConfig,\r\n 'minecraft:seagrass': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:simple_block': {\r\n to_place: Reference('block_state'),\r\n place_on: core_1.ListNode(Reference('block_state')),\r\n place_in: core_1.ListNode(Reference('block_state')),\r\n place_under: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:simple_random_selector': {\r\n features: core_1.ListNode(Feature)\r\n },\r\n 'minecraft:spring_feature': {\r\n state: Reference('fluid_state'),\r\n rock_count: core_1.NumberNode({ integer: true }),\r\n hole_count: core_1.NumberNode({ integer: true }),\r\n requires_block_below: core_1.BooleanNode(),\r\n valid_blocks: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:tree': {\r\n max_water_depth: core_1.NumberNode({ integer: true }),\r\n ignore_vines: core_1.BooleanNode(),\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n minimum_size: Reference('feature_size'),\r\n trunk_provider: Reference('block_state_provider'),\r\n leaves_provider: Reference('block_state_provider'),\r\n trunk_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/trunk_placer_type' } }),\r\n base_height: core_1.NumberNode({ integer: true, min: 0, max: 32 }),\r\n height_rand_a: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n height_rand_b: core_1.NumberNode({ integer: true, min: 0, max: 24 })\r\n }, { context: 'trunk_placer' }),\r\n foliage_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/foliage_placer_type' } }),\r\n radius: Common_1.UniformInt({ min: 0, max: 8, maxSpread: 8 }),\r\n offset: Common_1.UniformInt({ min: 0, max: 8, maxSpread: 8 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:blob_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:bush_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:fancy_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:jungle_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:mega_pine_foliage_placer': {\r\n crown_height: Common_1.UniformInt({ min: 0, max: 16, maxSpread: 8 })\r\n },\r\n 'minecraft:pine_foliage_placer': {\r\n height: Common_1.UniformInt({ min: 0, max: 16, maxSpread: 8 })\r\n },\r\n 'minecraft:spruce_foliage_placer': {\r\n trunk_height: Common_1.UniformInt({ min: 0, max: 16, maxSpread: 8 })\r\n }\r\n }\r\n }, { context: 'foliage_placer', disableSwitchContext: true }),\r\n decorators: core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/tree_decorator_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alter_ground': {\r\n provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:beehive': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:cocoa': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }\r\n }\r\n }, { context: 'tree_decorator' }))\r\n }\r\n }\r\n }, { context: 'feature' })\r\n }, { context: 'feature' }), {\r\n default: () => ({\r\n type: 'minecraft:decorated',\r\n config: {\r\n decorator: {\r\n type: 'minecraft:count',\r\n config: {\r\n count: 4\r\n }\r\n },\r\n feature: {\r\n type: 'minecraft:tree',\r\n config: {\r\n max_water_depth: 0,\r\n ignore_vines: true,\r\n minimum_size: {},\r\n trunk_placer: {\r\n base_height: 5,\r\n height_rand_a: 2,\r\n height_rand_b: 0\r\n },\r\n foliage_placer: {\r\n radius: 2,\r\n offset: 0,\r\n height: 3\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('feature_size', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature_size_type' } }),\r\n min_clipped_height: core_1.Opt(core_1.NumberNode({ min: 0, max: 80 })),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:two_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 81 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n },\r\n 'minecraft:three_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n upper_limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n middle_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n }\r\n }\r\n }, { disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:two_layers_feature_size'\r\n })\r\n }));\r\n schemas.register('block_state_provider', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_state_provider_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:rotated_block_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:simple_state_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:weighted_state_provider': {\r\n entries: core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n data: Reference('block_state')\r\n }), {\r\n default: () => ({\r\n data: {}\r\n })\r\n }))\r\n }\r\n }\r\n }, { context: 'block_state_provider' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_state_provider'\r\n })\r\n }));\r\n schemas.register('block_placer', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_placer_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:column_placer': {\r\n min_size: core_1.NumberNode({ integer: true }),\r\n extra_size: core_1.NumberNode({ integer: true })\r\n }\r\n }\r\n }, { context: 'block_placer' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_block_placer'\r\n })\r\n }));\r\n}\r\nexports.initFeatureSchemas = initFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initNoiseSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initNoiseSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('noise_settings', core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Mod(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings', isDefinition: true } }), {\r\n enabled: (path) => path.getArray().length > 0\r\n }),\r\n bedrock_roof_position: core_1.NumberNode({ integer: true }),\r\n bedrock_floor_position: core_1.NumberNode({ integer: true }),\r\n sea_level: core_1.NumberNode({ integer: true }),\r\n disable_mob_generation: core_1.BooleanNode(),\r\n default_block: Reference('block_state'),\r\n default_fluid: Reference('block_state'),\r\n noise: core_1.ObjectNode({\r\n height: core_1.NumberNode({ integer: true }),\r\n density_factor: core_1.NumberNode(),\r\n density_offset: core_1.NumberNode(),\r\n size_horizontal: core_1.NumberNode({ integer: true }),\r\n size_vertical: core_1.NumberNode({ integer: true }),\r\n simplex_surface_noise: core_1.BooleanNode(),\r\n random_density_offset: core_1.Opt(core_1.BooleanNode()),\r\n island_noise_override: core_1.Opt(core_1.BooleanNode()),\r\n amplified: core_1.Opt(core_1.BooleanNode()),\r\n sampling: core_1.ObjectNode({\r\n xz_scale: core_1.NumberNode(),\r\n y_scale: core_1.NumberNode(),\r\n xz_factor: core_1.NumberNode(),\r\n y_factor: core_1.NumberNode()\r\n }),\r\n bottom_slide: core_1.ObjectNode({\r\n target: core_1.NumberNode({ integer: true }),\r\n size: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode({ integer: true })\r\n }),\r\n top_slide: core_1.ObjectNode({\r\n target: core_1.NumberNode({ integer: true }),\r\n size: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode({ integer: true })\r\n })\r\n }),\r\n structures: Reference('generator_structures')\r\n }, { context: 'noise_settings' }), {\r\n default: () => Common_1.DefaultNoiseSettings\r\n }));\r\n schemas.register('generator_structures', core_1.ObjectNode({\r\n stronghold: core_1.Opt(core_1.ObjectNode({\r\n distance: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n spread: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n count: core_1.NumberNode({ integer: true, min: 1, max: 4095 })\r\n })),\r\n structures: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }), core_1.Mod(core_1.ObjectNode({\r\n spacing: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n separation: core_1.Mod(core_1.NumberNode({ integer: true, min: 0, max: 4096 }), (node) => ({\r\n validate: (path, value, errors, options) => {\r\n if (path.pop().push('spacing').get() <= value) {\r\n errors.add(path, 'error.separation_smaller_spacing');\r\n }\r\n return node.validate(path, value, errors, options);\r\n }\r\n })),\r\n salt: core_1.NumberNode({ integer: true, min: 0 })\r\n }, { context: 'generator_structure' }), {\r\n default: () => ({\r\n spacing: 10,\r\n separation: 5,\r\n salt: 0\r\n })\r\n }))\r\n }));\r\n schemas.register('generator_layer', core_1.Mod(core_1.ObjectNode({\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n height: core_1.NumberNode({ integer: true, min: 1 })\r\n }), {\r\n default: () => ({\r\n block: 'minecraft:stone',\r\n height: 1\r\n })\r\n }));\r\n}\r\nexports.initNoiseSettingsSchemas = initNoiseSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initStructureFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initStructureFeatureSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const templatePoolConfig = {\r\n start_pool: StringNode({ validator: 'resource', params: { pool: '$worldgen/template_pool' } }),\r\n size: core_1.NumberNode({ integer: true })\r\n };\r\n schemas.register('configured_structure_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bastion_remnant': templatePoolConfig,\r\n 'minecraft:buried_treasure': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:mineshaft': {\r\n type: StringNode({ enum: ['normal', 'mesa'] }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:ocean_ruin': {\r\n biome_temp: StringNode({ enum: ['cold', 'warm'] }),\r\n large_probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n cluster_probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:pillager_outpost': templatePoolConfig,\r\n 'minecraft:ruined_portal': {\r\n portal_type: StringNode({ enum: ['standard', 'desert', 'jungle', 'mountain', 'nether', 'ocean', 'swamp'] })\r\n },\r\n 'minecraft:shipwreck': {\r\n is_beached: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:village': templatePoolConfig\r\n }\r\n }, { context: 'structure_feature', disableSwitchContext: true })\r\n }, { context: 'structure_feature' }), {\r\n default: () => ({\r\n type: 'minecraft:bastion_remnant',\r\n config: {\r\n start_pool: 'minecraft:bastion/starts',\r\n size: 6\r\n }\r\n })\r\n }));\r\n}\r\nexports.initStructureFeatureSchemas = initStructureFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSurfaceBuilderSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initSurfaceBuilderSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('configured_surface_builder', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/surface_builder' } }),\r\n config: core_1.ObjectNode({\r\n top_material: Reference('block_state'),\r\n under_material: Reference('block_state'),\r\n underwater_material: Reference('block_state'),\r\n }, { context: 'surface_builder' })\r\n }, { context: 'surface_builder' }), {\r\n default: () => ({\r\n type: 'minecraft:default',\r\n config: {\r\n top_material: {\r\n Name: 'minecraft:grass_block',\r\n Properties: {\r\n snowy: 'false'\r\n }\r\n },\r\n under_material: {\r\n Name: 'minecraft:dirt'\r\n },\r\n underwater_material: {\r\n Name: 'minecraft:gravel'\r\n }\r\n }\r\n })\r\n }));\r\n}\r\nexports.initSurfaceBuilderSchemas = initSurfaceBuilderSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTemplatePoolSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nrequire(\"./ProcessorList\");\r\nfunction initTemplatePoolSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Processors = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/processor_list' } }),\r\n change: v => undefined\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('processor_list'),\r\n change: v => ({\r\n processors: [{\r\n \"processor_type\": \"minecraft:nop\"\r\n }]\r\n })\r\n }\r\n ]);\r\n schemas.register('template_pool', core_1.Mod(core_1.ObjectNode({\r\n name: StringNode(),\r\n fallback: StringNode(),\r\n elements: core_1.ListNode(Reference('template_weighted_element'))\r\n }, { context: 'template_pool' }), {\r\n default: () => ({\r\n fallback: 'minecraft:empty',\r\n elements: [\r\n {\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n }\r\n ]\r\n })\r\n }));\r\n schemas.register('template_weighted_element', core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n element: Reference('template_element')\r\n }, { category: 'pool' }), {\r\n default: () => ({\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n })\r\n }));\r\n schemas.register('template_element', core_1.Mod(core_1.ObjectNode({\r\n element_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_pool_element' } }),\r\n projection: StringNode({ enum: ['rigid', 'terrain_matching'] }),\r\n [core_1.Switch]: [{ push: 'element_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:feature_pool_element': {\r\n feature: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n 'minecraft:legacy_single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: Processors\r\n },\r\n 'minecraft:list_pool_element': {\r\n elements: core_1.ListNode(Reference('template_element'))\r\n },\r\n 'minecraft:single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: Processors\r\n }\r\n }\r\n }, { context: 'template_element', disableSwitchContext: true }), {\r\n default: () => ({\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n })\r\n }));\r\n}\r\nexports.initTemplatePoolSchemas = initTemplatePoolSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldgenSchemas = void 0;\r\nconst Biome_1 = require(\"./Biome\");\r\nconst Carver_1 = require(\"./Carver\");\r\nconst Decorator_1 = require(\"./Decorator\");\r\nconst Feature_1 = require(\"./Feature\");\r\nconst NoiseSettings_1 = require(\"./NoiseSettings\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nconst StructureFeature_1 = require(\"./StructureFeature\");\r\nconst SurfaceBuilder_1 = require(\"./SurfaceBuilder\");\r\nconst TemplatePool_1 = require(\"./TemplatePool\");\r\nfunction initWorldgenSchemas(schemas, collections) {\r\n Biome_1.initBiomeSchemas(schemas, collections);\r\n Carver_1.initCarverSchemas(schemas, collections);\r\n Decorator_1.initDecoratorSchemas(schemas, collections);\r\n Feature_1.initFeatureSchemas(schemas, collections);\r\n NoiseSettings_1.initNoiseSettingsSchemas(schemas, collections);\r\n ProcessorList_1.initProcessorListSchemas(schemas, collections);\r\n StructureFeature_1.initStructureFeatureSchemas(schemas, collections);\r\n SurfaceBuilder_1.initSurfaceBuilderSchemas(schemas, collections);\r\n TemplatePool_1.initTemplatePoolSchemas(schemas, collections);\r\n}\r\nexports.initWorldgenSchemas = initWorldgenSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initWorldSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('world_settings', core_1.Mod(core_1.ObjectNode({\r\n generate_features: core_1.BooleanNode(),\r\n bonus_chest: core_1.BooleanNode(),\r\n seed: core_1.NumberNode({ integer: true }),\r\n dimensions: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$dimension' } }), Reference('dimension'))\r\n }, { context: 'world_settings' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n generate_features: true,\r\n bonus_chest: false,\r\n seed,\r\n dimensions: {\r\n 'minecraft:overworld': {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:vanilla_layered',\r\n seed\r\n },\r\n settings: 'minecraft:overworld',\r\n }\r\n },\r\n 'minecraft:the_nether': {\r\n type: 'minecraft:the_nether',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:multi_noise',\r\n seed,\r\n humidity_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n altitude_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n weirdness_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n temperature_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n biomes: [\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: 0.0 },\r\n biome: 'minecraft:nether_wastes'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: -0.5 },\r\n biome: 'minecraft:soul_sand_valley'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.4, humidity: 0.0 },\r\n biome: 'minecraft:crimson_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.375, temperature: 0.0, humidity: 0.5 },\r\n biome: 'minecraft:warped_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.175, temperature: -0.5, humidity: 0.0 },\r\n biome: 'minecraft:basalt_deltas'\r\n }\r\n ]\r\n },\r\n settings: 'minecraft:nether'\r\n }\r\n },\r\n 'minecraft:the_end': {\r\n type: \"minecraft:the_end\",\r\n generator: {\r\n type: \"minecraft:noise\",\r\n seed,\r\n biome_source: {\r\n type: \"minecraft:the_end\",\r\n seed\r\n },\r\n settings: \"minecraft:end\"\r\n }\r\n }\r\n }\r\n };\r\n }\r\n }));\r\n}\r\nexports.initWorldSettingsSchemas = initWorldSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSchemas = void 0;\r\nconst Advancement_1 = require(\"./Advancement\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Condition_1 = require(\"./Condition\");\r\nconst Dimension_1 = require(\"./Dimension\");\r\nconst DimensionType_1 = require(\"./DimensionType\");\r\nconst LootTable_1 = require(\"./LootTable\");\r\nconst PackMcmeta_1 = require(\"./PackMcmeta\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nconst Recipe_1 = require(\"./Recipe\");\r\nconst Tags_1 = require(\"./Tags\");\r\nconst TextComponent_1 = require(\"./TextComponent\");\r\nconst worldgen_1 = require(\"./worldgen\");\r\nconst WorldSettings_1 = require(\"./WorldSettings\");\r\nfunction initSchemas(schemas, collections) {\r\n // `Common.ts` is the only file that has exports. It should be initialized first. \r\n Common_1.initCommonSchemas(schemas, collections);\r\n Advancement_1.initAdvancementSchemas(schemas, collections);\r\n Condition_1.initConditionSchemas(schemas, collections);\r\n DimensionType_1.initDimensionTypeSchemas(schemas, collections);\r\n Dimension_1.initDimensionSchemas(schemas, collections);\r\n LootTable_1.initLootTableSchemas(schemas, collections);\r\n PackMcmeta_1.initPackMcmetaSchemas(schemas, collections);\r\n Predicates_1.initPredicatesSchemas(schemas, collections);\r\n Recipe_1.initRecipeSchemas(schemas, collections);\r\n Tags_1.initTagsSchemas(schemas, collections);\r\n TextComponent_1.initTextComponentSchemas(schemas, collections);\r\n worldgen_1.initWorldgenSchemas(schemas, collections);\r\n WorldSettings_1.initWorldSettingsSchemas(schemas, collections);\r\n}\r\nexports.initSchemas = initSchemas;\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getSchemas = exports.getCollections = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Collections_1 = require(\"./Collections\");\r\nconst schemas_1 = require(\"./schemas\");\r\nexports.lootContext = __importStar(require(\"./LootContext\"));\r\nfunction getCollections() {\r\n const collections = new core_1.CollectionRegistry();\r\n Collections_1.initCollections(collections);\r\n return collections;\r\n}\r\nexports.getCollections = getCollections;\r\n/**\r\n * @param collections The CollectionRegistry for this version. Note that apart from\r\n * the built-in collections, the client of this module is responsible for futhermore\r\n * adding the vanilla registries to it: the collection IDs shouldn't contain the\r\n * namespace (`minecraft:`) part, while the values within the collections should.\r\n *\r\n * @example\r\n * for (const key in VANILLA_REGISTRIES>) {\r\n * collections.register(\r\n * key.replace(/^minecraft:/, ''),\r\n * Object.keys(VANILLA_REGISTRIES[key].entries)\r\n * )\r\n * }\r\n */\r\nfunction getSchemas(collections) {\r\n const schemas = new core_1.SchemaRegistry();\r\n schemas_1.initSchemas(schemas, collections);\r\n return schemas;\r\n}\r\nexports.getSchemas = getSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCollections = void 0;\r\nfunction initCollections(collections) {\r\n collections.register('advancement_trigger', [\r\n 'minecraft:bee_nest_destroyed',\r\n 'minecraft:bred_animals',\r\n 'minecraft:brewed_potion',\r\n 'minecraft:changed_dimension',\r\n 'minecraft:channeled_lightning',\r\n 'minecraft:construct_beacon',\r\n 'minecraft:consume_item',\r\n 'minecraft:cured_zombie_villager',\r\n 'minecraft:effects_changed',\r\n 'minecraft:enchanted_item',\r\n 'minecraft:enter_block',\r\n 'minecraft:entity_hurt_player',\r\n 'minecraft:entity_killed_player',\r\n 'minecraft:filled_bucket',\r\n 'minecraft:fishing_rod_hooked',\r\n 'minecraft:hero_of_the_village',\r\n 'minecraft:impossible',\r\n 'minecraft:inventory_changed',\r\n 'minecraft:item_durability_changed',\r\n 'minecraft:item_used_on_block',\r\n 'minecraft:killed_by_crossbow',\r\n 'minecraft:levitation',\r\n 'minecraft:lightning_strike',\r\n 'minecraft:location',\r\n 'minecraft:nether_travel',\r\n 'minecraft:placed_block',\r\n 'minecraft:player_generates_container_loot',\r\n 'minecraft:player_hurt_entity',\r\n 'minecraft:player_interacted_with_entity',\r\n 'minecraft:player_killed_entity',\r\n 'minecraft:recipe_unlocked',\r\n 'minecraft:shot_crossbow',\r\n 'minecraft:slept_in_bed',\r\n 'minecraft:slide_down_block',\r\n 'minecraft:started_riding',\r\n 'minecraft:summoned_entity',\r\n 'minecraft:tame_animal',\r\n 'minecraft:target_hit',\r\n 'minecraft:tick',\r\n 'minecraft:thrown_item_picked_up_by_entity',\r\n 'minecraft:used_ender_eye',\r\n 'minecraft:used_totem',\r\n 'minecraft:using_item',\r\n 'minecraft:villager_trade',\r\n 'minecraft:voluntary_exile'\r\n ]);\r\n collections.register('dimension', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('dimension_type', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('keybind', [\r\n 'key.advancements',\r\n 'key.attack',\r\n 'key.back',\r\n 'key.chat',\r\n 'key.command',\r\n 'key.drop',\r\n 'key.forward',\r\n 'key.fullscreen',\r\n 'key.hotbar.1',\r\n 'key.hotbar.2',\r\n 'key.hotbar.3',\r\n 'key.hotbar.4',\r\n 'key.hotbar.5',\r\n 'key.hotbar.6',\r\n 'key.hotbar.7',\r\n 'key.hotbar.8',\r\n 'key.hotbar.9',\r\n 'key.inventory',\r\n 'key.jump',\r\n 'key.left',\r\n 'key.loadToolbarActivator',\r\n 'key.pickItem',\r\n 'key.playerlist',\r\n 'key.right',\r\n 'key.saveToolbarActivator',\r\n 'key.screenshot',\r\n 'key.smoothCamera',\r\n 'key.sneak',\r\n 'key.spectatorOutlines',\r\n 'key.sprint',\r\n 'key.swapOffhand',\r\n 'key.togglePerspective',\r\n 'key.use'\r\n ]);\r\n collections.register('slot', [\r\n 'mainhand',\r\n 'offhand',\r\n 'head',\r\n 'chest',\r\n 'legs',\r\n 'feet'\r\n ]);\r\n collections.register('gamemode', [\r\n 'survival',\r\n 'creative',\r\n 'adventure',\r\n 'spectator'\r\n ]);\r\n collections.register('worldgen/noise_settings', [\r\n 'minecraft:overworld',\r\n 'minecraft:nether',\r\n 'minecraft:end',\r\n 'minecraft:amplified',\r\n 'minecraft:caves',\r\n 'minecraft:floating_islands'\r\n ]);\r\n collections.register('entity_source', [\r\n 'this',\r\n 'killer',\r\n 'direct_killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('copy_source', [\r\n 'block_entity',\r\n 'this',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('loot_table_apply_bonus_formula', [\r\n 'minecraft:uniform_bonus_count',\r\n 'minecraft:binomial_with_bonus_count',\r\n 'minecraft:ore_drops'\r\n ]);\r\n collections.register('map_decoration', [\r\n 'mansion',\r\n 'monument',\r\n 'player',\r\n 'frame',\r\n 'red_marker',\r\n 'blue_marker',\r\n 'target_x',\r\n 'target_point',\r\n 'player_off_map',\r\n 'player_off_limits',\r\n 'red_x',\r\n 'banner_white',\r\n 'banner_orange',\r\n 'banner_magenta',\r\n 'banner_light_blue',\r\n 'banner_yellow',\r\n 'banner_lime',\r\n 'banner_pink',\r\n 'banner_gray',\r\n 'banner_light_gray',\r\n 'banner_cyan',\r\n 'banner_purple',\r\n 'banner_blue',\r\n 'banner_brown',\r\n 'banner_green',\r\n 'banner_red',\r\n 'banner_black'\r\n ]);\r\n collections.register('map_feature', [\r\n 'bastion_remnant',\r\n 'buried_treasure',\r\n 'desert_pyramid',\r\n 'endcity',\r\n 'fortress',\r\n 'igloo',\r\n 'jungle_pyramid',\r\n 'mansion',\r\n 'mineshaft',\r\n 'monument',\r\n 'nether_fossil',\r\n 'ocean_ruin',\r\n 'pillager_outpost',\r\n 'ruined_portal',\r\n 'shipwreck',\r\n 'stronghold',\r\n 'swamp_hut',\r\n 'village'\r\n ]);\r\n collections.register('recipe_group', [\r\n 'bed',\r\n 'light_gray_dye',\r\n 'iron_ingot',\r\n 'wooden_stairs',\r\n 'black_dye',\r\n 'stained_terracotta',\r\n 'dyed_bed',\r\n 'magenta_dye',\r\n 'bark',\r\n 'rabbit_stew',\r\n 'light_blue_dye',\r\n 'wooden_fence_gate',\r\n 'planks',\r\n 'stained_glass',\r\n 'wooden_door',\r\n 'stained_glass_pane',\r\n 'wooden_fence',\r\n 'sticks',\r\n 'concrete_powder',\r\n 'wooden_pressure_plate',\r\n 'boat',\r\n 'brown_dye',\r\n 'yellow_dye',\r\n 'bonemeal',\r\n 'red_dye',\r\n 'wooden_trapdoor',\r\n 'wooden_button',\r\n 'gold_ingot',\r\n 'pink_dye',\r\n 'wooden_slab',\r\n 'orange_dye',\r\n 'carpet',\r\n 'sign',\r\n 'wool',\r\n 'sugar',\r\n 'blue_dye',\r\n 'white_dye',\r\n 'banner',\r\n 'netherite_ingot'\r\n ]);\r\n collections.register('worldgen/configured_feature', [\r\n 'minecraft:acacia',\r\n 'minecraft:bamboo_light',\r\n 'minecraft:bamboo_vegetation',\r\n 'minecraft:bamboo',\r\n 'minecraft:basalt_blobs',\r\n 'minecraft:basalt_pillar',\r\n 'minecraft:birch_bees_0002',\r\n 'minecraft:birch_bees_002',\r\n 'minecraft:birch_bees_005',\r\n 'minecraft:birch_other',\r\n 'minecraft:birch_tall',\r\n 'minecraft:birch',\r\n 'minecraft:blackstone_blobs',\r\n 'minecraft:blue_ice',\r\n 'minecraft:bonus_chest',\r\n 'minecraft:brown_mushroom_giant',\r\n 'minecraft:brown_mushroom_nether',\r\n 'minecraft:brown_mushroom_normal',\r\n 'minecraft:brown_mushroom_swamp',\r\n 'minecraft:brown_mushroom_taiga',\r\n 'minecraft:chorus_plant',\r\n 'minecraft:crimson_forest_vegetation',\r\n 'minecraft:crimson_fungi_planted',\r\n 'minecraft:crimson_fungi',\r\n 'minecraft:dark_forest_vegetation_brown',\r\n 'minecraft:dark_forest_vegetation_red',\r\n 'minecraft:dark_oak',\r\n 'minecraft:delta',\r\n 'minecraft:desert_well',\r\n 'minecraft:disk_clay',\r\n 'minecraft:disk_gravel',\r\n 'minecraft:disk_sand',\r\n 'minecraft:end_gateway_delayed',\r\n 'minecraft:end_gateway',\r\n 'minecraft:end_island_decorated',\r\n 'minecraft:end_island',\r\n 'minecraft:end_spike',\r\n 'minecraft:fancy_oak_bees_0002',\r\n 'minecraft:fancy_oak_bees_002',\r\n 'minecraft:fancy_oak_bees_005',\r\n 'minecraft:fancy_oak',\r\n 'minecraft:flower_default',\r\n 'minecraft:flower_forest',\r\n 'minecraft:flower_plain_decorated',\r\n 'minecraft:flower_plain',\r\n 'minecraft:flower_swamp',\r\n 'minecraft:flower_warm',\r\n 'minecraft:forest_flower_trees',\r\n 'minecraft:forest_flower_vegetation_common',\r\n 'minecraft:forest_flower_vegetation',\r\n 'minecraft:forest_rock',\r\n 'minecraft:fossil',\r\n 'minecraft:freeze_top_layer',\r\n 'minecraft:glowstone_extra',\r\n 'minecraft:glowstone',\r\n 'minecraft:huge_brown_mushroom',\r\n 'minecraft:huge_red_mushroom',\r\n 'minecraft:ice_patch',\r\n 'minecraft:ice_spike',\r\n 'minecraft:iceberg_blue',\r\n 'minecraft:iceberg_packed',\r\n 'minecraft:jungle_bush',\r\n 'minecraft:jungle_tree_no_vine',\r\n 'minecraft:jungle_tree',\r\n 'minecraft:kelp_cold',\r\n 'minecraft:kelp_warm',\r\n 'minecraft:lake_lava',\r\n 'minecraft:lake_water',\r\n 'minecraft:large_basalt_columns',\r\n 'minecraft:mega_jungle_tree',\r\n 'minecraft:mega_pine',\r\n 'minecraft:mega_spruce',\r\n 'minecraft:monster_room',\r\n 'minecraft:mushroom_field_vegetation',\r\n 'minecraft:nether_sprouts',\r\n 'minecraft:oak_badlands',\r\n 'minecraft:oak_bees_0002',\r\n 'minecraft:oak_bees_002',\r\n 'minecraft:oak_bees_005',\r\n 'minecraft:oak',\r\n 'minecraft:ore_andesite',\r\n 'minecraft:ore_blackstone',\r\n 'minecraft:ore_coal',\r\n 'minecraft:ore_debris_large',\r\n 'minecraft:ore_debris_small',\r\n 'minecraft:ore_diamond',\r\n 'minecraft:ore_diorite',\r\n 'minecraft:ore_dirt',\r\n 'minecraft:ore_emerald',\r\n 'minecraft:ore_gold_deltas',\r\n 'minecraft:ore_gold_extra',\r\n 'minecraft:ore_gold_nether',\r\n 'minecraft:ore_gold',\r\n 'minecraft:ore_granite',\r\n 'minecraft:ore_gravel_nether',\r\n 'minecraft:ore_gravel',\r\n 'minecraft:ore_infested',\r\n 'minecraft:ore_iron',\r\n 'minecraft:ore_lapis',\r\n 'minecraft:ore_magma',\r\n 'minecraft:ore_quartz_deltas',\r\n 'minecraft:ore_quartz_nether',\r\n 'minecraft:ore_redstone',\r\n 'minecraft:ore_soul_sand',\r\n 'minecraft:patch_berry_bush',\r\n 'minecraft:patch_berry_decorated',\r\n 'minecraft:patch_berry_sparse',\r\n 'minecraft:patch_brown_mushroom',\r\n 'minecraft:patch_cactus_decorated',\r\n 'minecraft:patch_cactus_desert',\r\n 'minecraft:patch_cactus',\r\n 'minecraft:patch_crimson_roots',\r\n 'minecraft:patch_dead_bush_2',\r\n 'minecraft:patch_dead_bush_badlands',\r\n 'minecraft:patch_dead_bush',\r\n 'minecraft:patch_fire',\r\n 'minecraft:patch_grass_badlands',\r\n 'minecraft:patch_grass_forest',\r\n 'minecraft:patch_grass_jungle',\r\n 'minecraft:patch_grass_normal',\r\n 'minecraft:patch_grass_plain',\r\n 'minecraft:patch_grass_savanna',\r\n 'minecraft:patch_grass_taiga_2',\r\n 'minecraft:patch_grass_taiga',\r\n 'minecraft:patch_large_fern',\r\n 'minecraft:patch_melon',\r\n 'minecraft:patch_pumpkin',\r\n 'minecraft:patch_red_mushroom',\r\n 'minecraft:patch_soul_fire',\r\n 'minecraft:patch_sugar_cane_badlands',\r\n 'minecraft:patch_sugar_cane_desert',\r\n 'minecraft:patch_sugar_cane_swamp',\r\n 'minecraft:patch_sugar_cane',\r\n 'minecraft:patch_sunflower',\r\n 'minecraft:patch_taiga_grass',\r\n 'minecraft:patch_tall_grass_2',\r\n 'minecraft:patch_tall_grass',\r\n 'minecraft:patch_waterlilly',\r\n 'minecraft:pile_hay',\r\n 'minecraft:pile_ice',\r\n 'minecraft:pile_melon',\r\n 'minecraft:pile_pumpkin',\r\n 'minecraft:pile_snow',\r\n 'minecraft:pine',\r\n 'minecraft:plain_vegetation',\r\n 'minecraft:red_mushroom_giant',\r\n 'minecraft:red_mushroom_nether',\r\n 'minecraft:red_mushroom_normal',\r\n 'minecraft:red_mushroom_swamp',\r\n 'minecraft:red_mushroom_taiga',\r\n 'minecraft:sea_pickle',\r\n 'minecraft:seagrass_cold',\r\n 'minecraft:seagrass_deep_cold',\r\n 'minecraft:seagrass_deep_warm',\r\n 'minecraft:seagrass_deep',\r\n 'minecraft:seagrass_normal',\r\n 'minecraft:seagrass_river',\r\n 'minecraft:seagrass_simple',\r\n 'minecraft:seagrass_swamp',\r\n 'minecraft:seagrass_warm',\r\n 'minecraft:small_basalt_columns',\r\n 'minecraft:spring_closed_double',\r\n 'minecraft:spring_closed',\r\n 'minecraft:spring_delta',\r\n 'minecraft:spring_lava_double',\r\n 'minecraft:spring_lava',\r\n 'minecraft:spring_open',\r\n 'minecraft:spring_water',\r\n 'minecraft:spruce_snowy',\r\n 'minecraft:spruce',\r\n 'minecraft:super_birch_bees_0002',\r\n 'minecraft:swamp_tree',\r\n 'minecraft:taiga_vegetation',\r\n 'minecraft:trees_birch',\r\n 'minecraft:trees_giant_spruce',\r\n 'minecraft:trees_giant',\r\n 'minecraft:trees_jungle_edge',\r\n 'minecraft:trees_jungle',\r\n 'minecraft:trees_mountain_edge',\r\n 'minecraft:trees_mountain',\r\n 'minecraft:trees_savanna',\r\n 'minecraft:trees_shattered_savanna',\r\n 'minecraft:trees_water',\r\n 'minecraft:twisting_vines',\r\n 'minecraft:vines',\r\n 'minecraft:void_start_platform',\r\n 'minecraft:warm_ocean_vegetation',\r\n 'minecraft:warped_forest_vegetation',\r\n 'minecraft:warped_fungi_planted',\r\n 'minecraft:warped_fungi',\r\n 'minecraft:weeping_vines'\r\n ]);\r\n collections.register('worldgen/configured_structure_feature', [\r\n 'minecraft:bastion_remnant',\r\n 'minecraft:buried_treasure',\r\n 'minecraft:desert_pyramid',\r\n 'minecraft:end_city',\r\n 'minecraft:fortress',\r\n 'minecraft:igloo',\r\n 'minecraft:jungle_pyramid',\r\n 'minecraft:mansion',\r\n 'minecraft:mineshaft_mesa',\r\n 'minecraft:mineshaft',\r\n 'minecraft:monument',\r\n 'minecraft:nether_fossil',\r\n 'minecraft:ocean_ruin_cold',\r\n 'minecraft:ocean_ruin_warm',\r\n 'minecraft:pillager_outpost',\r\n 'minecraft:ruined_portal_desert',\r\n 'minecraft:ruined_portal_jungle',\r\n 'minecraft:ruined_portal_mountain',\r\n 'minecraft:ruined_portal_nether',\r\n 'minecraft:ruined_portal_ocean',\r\n 'minecraft:ruined_portal_swamp',\r\n 'minecraft:ruined_portal',\r\n 'minecraft:shipwreck_beached',\r\n 'minecraft:shipwreck',\r\n 'minecraft:stronghold',\r\n 'minecraft:swamp_hut',\r\n 'minecraft:village_desert',\r\n 'minecraft:village_plains',\r\n 'minecraft:village_savanna',\r\n 'minecraft:village_snowy',\r\n 'minecraft:village_taiga'\r\n ]);\r\n collections.register('worldgen/configured_surface_builder', [\r\n 'minecraft:badlands',\r\n 'minecraft:basalt_deltas',\r\n 'minecraft:crimson_forest',\r\n 'minecraft:desert',\r\n 'minecraft:end',\r\n 'minecraft:eroded_badlands',\r\n 'minecraft:frozen_ocean',\r\n 'minecraft:full_sand',\r\n 'minecraft:giant_tree_taiga',\r\n 'minecraft:grass',\r\n 'minecraft:gravelly_mountain',\r\n 'minecraft:ice_spikes',\r\n 'minecraft:mountain',\r\n 'minecraft:mycelium',\r\n 'minecraft:nether',\r\n 'minecraft:nope',\r\n 'minecraft:ocean_sand',\r\n 'minecraft:shattered_savanna',\r\n 'minecraft:soul_sand_valley',\r\n 'minecraft:stone',\r\n 'minecraft:swamp',\r\n 'minecraft:warped_forest',\r\n 'minecraft:wooded_badlands'\r\n ]);\r\n collections.register('biome_category', [\r\n 'beach',\r\n 'desert',\r\n 'extreme_hills',\r\n 'forest',\r\n 'icy',\r\n 'jungle',\r\n 'mesa',\r\n 'mushroom',\r\n 'nether',\r\n 'none',\r\n 'ocean',\r\n 'plains',\r\n 'river',\r\n 'savanna',\r\n 'swamp',\r\n 'taiga',\r\n 'the_end',\r\n 'underground'\r\n ]);\r\n collections.register('heightmap_type', [\r\n 'MOTION_BLOCKING',\r\n 'MOTION_BLOCKING_NO_LEAVES',\r\n 'OCEAN_FLOOR',\r\n 'OCEAN_FLOOR_WG',\r\n 'WORLD_SURFACE',\r\n 'WORLD_SURFACE_WG'\r\n ]);\r\n collections.register('generation_step', [\r\n 'air',\r\n 'liquid'\r\n ]);\r\n collections.register('loot_context_type', [\r\n 'minecraft:empty',\r\n 'minecraft:chest',\r\n 'minecraft:command',\r\n 'minecraft:selector',\r\n 'minecraft:fishing',\r\n 'minecraft:entity',\r\n 'minecraft:gift',\r\n 'minecraft:barter',\r\n 'minecraft:advancement_reward',\r\n 'minecraft:advancement_entity',\r\n 'minecraft:generic',\r\n 'minecraft:block'\r\n ]);\r\n collections.register('banner_pattern', [\r\n 'base',\r\n 'square_bottom_left',\r\n 'square_bottom_right',\r\n 'square_top_left',\r\n 'square_top_right',\r\n 'stripe_bottom',\r\n 'stripe_top',\r\n 'stripe_left',\r\n 'stripe_right',\r\n 'stripe_center',\r\n 'stripe_middle',\r\n 'stripe_downright',\r\n 'stripe_downleft',\r\n 'small_stripes',\r\n 'cross',\r\n 'straight_cross',\r\n 'triangle_bottom',\r\n 'triangle_top',\r\n 'triangles_bottom',\r\n 'triangles_top',\r\n 'diagonal_left',\r\n 'diagonal_up_right',\r\n 'diagonal_up_left',\r\n 'diagonal_right',\r\n 'circle',\r\n 'rhombus',\r\n 'half_vertical',\r\n 'half_horizontal',\r\n 'half_vertical_right',\r\n 'half_horizontal_bottom',\r\n 'border',\r\n 'curly_border',\r\n 'gradient',\r\n 'gradient_up',\r\n 'bricks',\r\n 'globe',\r\n 'creeper',\r\n 'skull',\r\n 'flower',\r\n 'mojang',\r\n 'piglin'\r\n ]);\r\n collections.register('dye_color', [\r\n 'white',\r\n 'orange',\r\n 'magenta',\r\n 'light_blue',\r\n 'yellow',\r\n 'lime',\r\n 'pink',\r\n 'gray',\r\n 'light_gray',\r\n 'cyan',\r\n 'purple',\r\n 'blue',\r\n 'brown',\r\n 'green',\r\n 'red',\r\n 'black'\r\n ]);\r\n}\r\nexports.initCollections = initCollections;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initAdvancementSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initAdvancementSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const EntityPredicate = core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.Opt(Reference('entity_predicate')),\r\n change: v => { var _a, _b; return (_b = (_a = v[0]) === null || _a === void 0 ? void 0 : _a.predicate) !== null && _b !== void 0 ? _b : ({}); }\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('condition')),\r\n change: v => [{\r\n condition: 'minecraft:entity_properties',\r\n predicate: v\r\n }]\r\n }\r\n ], { context: 'conditions' });\r\n schemas.register('advancement', core_1.Mod(core_1.ObjectNode({\r\n display: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n icon: core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } }))\r\n }),\r\n title: Reference('text_component'),\r\n description: Reference('text_component'),\r\n background: core_1.Opt(StringNode()),\r\n frame: core_1.Opt(StringNode({ enum: ['task', 'challenge', 'goal'] })),\r\n show_toast: core_1.Opt(core_1.BooleanNode()),\r\n announce_to_chat: core_1.Opt(core_1.BooleanNode()),\r\n hidden: core_1.Opt(core_1.BooleanNode())\r\n }), {\r\n default: () => ({\r\n icon: {\r\n item: 'minecraft:stone'\r\n },\r\n title: '',\r\n description: ''\r\n })\r\n })),\r\n parent: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$advancement' } })),\r\n criteria: core_1.MapNode(StringNode(), Reference('advancement_criteria')),\r\n requirements: core_1.Opt(core_1.ListNode(core_1.ListNode(StringNode() // TODO: add validation\r\n ))),\r\n rewards: core_1.Opt(core_1.ObjectNode({\r\n function: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$function' } })),\r\n loot: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$loot_table' } }))),\r\n recipes: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }))),\r\n experience: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n })),\r\n }, { context: 'advancement' }), {\r\n default: () => ({\r\n criteria: {\r\n requirement: {\r\n trigger: 'minecraft:location'\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('advancement_criteria', core_1.ObjectNode({\r\n trigger: StringNode({ validator: 'resource', params: { pool: collections.get('advancement_trigger') } }),\r\n conditions: core_1.Opt(core_1.ObjectNode({\r\n player: core_1.Mod(EntityPredicate, {\r\n enabled: path => path.pop().push('trigger').get() !== 'minecraft:impossible'\r\n }),\r\n [core_1.Switch]: ['pop', { push: 'trigger' }],\r\n [core_1.Case]: {\r\n 'minecraft:bee_nest_destroyed': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n num_bees_inside: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:bred_animals': {\r\n parent: EntityPredicate,\r\n partner: EntityPredicate,\r\n child: EntityPredicate\r\n },\r\n 'minecraft:brewed_potion': {\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } }))\r\n },\r\n 'minecraft:changed_dimension': {\r\n from: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n to: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } }))\r\n },\r\n 'minecraft:channeled_lightning': {\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:construct_beacon': {\r\n level: Reference('int_bounds')\r\n },\r\n 'minecraft:consume_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:cured_zombie_villager': {\r\n villager: EntityPredicate,\r\n zombie: EntityPredicate\r\n },\r\n 'minecraft:effects_changed': {\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), core_1.ObjectNode({\r\n amplifier: Reference('int_bounds'),\r\n duration: Reference('int_bounds')\r\n }))),\r\n source: core_1.Opt(EntityPredicate)\r\n },\r\n 'minecraft:enter_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n },\r\n 'minecraft:enchanted_item': {\r\n levels: Reference('int_bounds'),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:entity_hurt_player': {\r\n damage: core_1.Opt(Reference('damage_predicate'))\r\n },\r\n 'minecraft:entity_killed_player': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:filled_bucket': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:fishing_rod_hooked': {\r\n entity: EntityPredicate,\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:hero_of_the_village': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:inventory_changed': {\r\n slots: core_1.Opt(core_1.ObjectNode({\r\n empty: Reference('int_bounds'),\r\n occupied: Reference('int_bounds'),\r\n full: Reference('int_bounds')\r\n })),\r\n items: core_1.Opt(core_1.ListNode(Reference('item_predicate')))\r\n },\r\n 'minecraft:item_durability_changed': {\r\n delta: Reference('int_bounds'),\r\n durability: Reference('int_bounds'),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:item_used_on_block': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:killed_by_crossbow': {\r\n unique_entity_types: Reference('int_bounds'),\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:levitation': {\r\n distance: Reference('distance_predicate'),\r\n duration: Reference('int_bounds')\r\n },\r\n 'minecraft:lightning_strike': {\r\n lightning: EntityPredicate,\r\n bystander: EntityPredicate,\r\n },\r\n 'minecraft:location': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:nether_travel': {\r\n distance: Reference('distance_predicate'),\r\n entered: core_1.Opt(Reference('location_predicate')),\r\n exited: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:placed_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })),\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:player_generates_container_loot': {\r\n loot_table: StringNode({ validator: 'resource', params: { pool: '$loot_table' } })\r\n },\r\n 'minecraft:player_hurt_entity': {\r\n damage: core_1.Opt(Reference('damage_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_interacted_with_entity': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_killed_entity': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:recipe_unlocked': {\r\n recipe: StringNode({ validator: 'resource', params: { pool: '$recipe' } })\r\n },\r\n 'minecraft:slept_in_bed': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:slide_down_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:shot_crossbow': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:summoned_entity': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:tame_animal': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:target_hit': {\r\n projectile: EntityPredicate,\r\n shooter: EntityPredicate,\r\n signal_strength: Reference('int_bounds')\r\n },\r\n 'minecraft:thrown_item_picked_up_by_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:used_ender_eye': {\r\n distance: Reference('float_bounds')\r\n },\r\n 'minecraft:used_totem': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:using_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:villager_trade': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:voluntary_exile': {\r\n location: Reference('location_predicate')\r\n }\r\n }\r\n }, { context: 'criterion' }))\r\n }, { category: 'predicate', context: 'criterion' }));\r\n}\r\nexports.initAdvancementSchemas = initAdvancementSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCommonSchemas = exports.IntProvider = exports.FloatProvider = exports.NoiseSettingsPresets = exports.DefaultNoiseSettings = exports.DimensionTypePresets = exports.DefaultDimensionType = exports.FunctionCases = exports.ConditionCases = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nexports.DefaultDimensionType = {\r\n ultrawarm: false,\r\n natural: true,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: true,\r\n has_raids: true,\r\n has_skylight: true,\r\n has_ceiling: false,\r\n coordinate_scale: 1,\r\n ambient_light: 0,\r\n logical_height: 256,\r\n infiniburn: 'minecraft:infiniburn_overworld',\r\n min_y: 0,\r\n height: 256,\r\n};\r\nexports.DefaultNoiseSettings = {\r\n name: 'minecraft:overworld',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n disable_mob_generation: false,\r\n noise_caves_enabled: true,\r\n aquifers_enabled: true,\r\n deepslate_enabled: true,\r\n noise: {\r\n min_y: 0,\r\n height: 256,\r\n density_factor: 1,\r\n density_offset: -0.46875,\r\n simplex_surface_noise: true,\r\n random_density_offset: true,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -10,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 0,\r\n offset: 0\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n};\r\nfunction initCommonSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('block_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'Name' }] } } }))\r\n }, { context: 'block_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('fluid_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'fluid' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode()))\r\n }, { context: 'fluid_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:water',\r\n Properties: {\r\n 'level': '0'\r\n }\r\n })\r\n }));\r\n schemas.register('block_pos', core_1.Mod(core_1.ListNode(core_1.NumberNode({ integer: true }), { minLength: 3, maxLength: 3 }), {\r\n default: () => [0, 0, 0]\r\n }));\r\n const Bounds = (integer) => core_1.Opt(core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer }),\r\n change: (v) => { var _a, _b; return v === undefined ? 0 : (_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : 0; }\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer })),\r\n max: core_1.Opt(core_1.NumberNode({ integer }))\r\n }, { context: 'range' }),\r\n change: (v) => ({\r\n min: v !== null && v !== void 0 ? v : 0,\r\n max: v !== null && v !== void 0 ? v : 0\r\n })\r\n }\r\n ]));\r\n schemas.register('int_bounds', Bounds(true));\r\n schemas.register('float_bounds', Bounds());\r\n schemas.register('int_range', core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(Reference('number_provider')),\r\n max: core_1.Opt(Reference('number_provider'))\r\n })\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer: true })\r\n }\r\n ], { context: 'range' }));\r\n const ObjectWithType = (pool, directType, directPath, directDefault, objectDefault, context, cases) => {\r\n let defaultCase = {};\r\n if (objectDefault) {\r\n Object.keys(cases[objectDefault]).forEach(k => {\r\n defaultCase[k] = core_1.Mod(cases[objectDefault][k], {\r\n enabled: path => path.push('type').get() === undefined\r\n });\r\n });\r\n }\r\n const provider = core_1.ObjectNode({\r\n type: core_1.Mod(core_1.Opt(StringNode({ validator: 'resource', params: { pool } })), {\r\n hidden: () => true\r\n }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: cases,\r\n ...defaultCase\r\n }, { context, disableSwitchContext: true });\r\n const choices = [{\r\n type: directType,\r\n node: cases[directDefault][directPath]\r\n }];\r\n if (objectDefault) {\r\n choices.push({\r\n type: 'object',\r\n priority: -1,\r\n node: provider\r\n });\r\n }\r\n Object.keys(cases).forEach(k => {\r\n choices.push({\r\n type: k,\r\n match: (v) => {\r\n var _a;\r\n const type = 'minecraft:' + ((_a = v === null || v === void 0 ? void 0 : v.type) === null || _a === void 0 ? void 0 : _a.replace(/^minecraft:/, ''));\r\n if (type === k)\r\n return true;\r\n const keys = v ? Object.keys(v) : [];\r\n return typeof v === 'object' && ((keys === null || keys === void 0 ? void 0 : keys.length) === 0 || ((keys === null || keys === void 0 ? void 0 : keys.length) === 1 && (keys === null || keys === void 0 ? void 0 : keys[0]) === 'type'));\r\n },\r\n node: provider,\r\n change: (v) => ({ type: k })\r\n });\r\n });\r\n return core_1.ChoiceNode(choices, { context, choiceContext: `${context}.type` });\r\n };\r\n schemas.register('number_provider', ObjectWithType('loot_number_provider_type', 'number', 'value', 'minecraft:constant', 'minecraft:uniform', 'number_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode()\r\n },\r\n 'minecraft:uniform': {\r\n min: Reference('number_provider'),\r\n max: Reference('number_provider')\r\n },\r\n 'minecraft:binomial': {\r\n n: Reference('number_provider'),\r\n p: Reference('number_provider')\r\n },\r\n 'minecraft:score': {\r\n target: Reference('scoreboard_name_provider'),\r\n score: StringNode({ validator: 'objective' }),\r\n scale: core_1.Opt(core_1.NumberNode())\r\n }\r\n }));\r\n schemas.register('scoreboard_name_provider', ObjectWithType('loot_score_provider_type', 'string', 'target', 'minecraft:context', null, 'score_provider', {\r\n 'minecraft:fixed': {\r\n name: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities', isScoreHolder: true } }) // FIXME: doesn't support selectors\r\n },\r\n 'minecraft:context': {\r\n target: core_1.Mod(StringNode({ enum: 'entity_source' }), { default: () => 'this' })\r\n }\r\n }));\r\n schemas.register('nbt_provider', ObjectWithType('loot_nbt_provider_type', 'string', 'target', 'minecraft:context', null, 'nbt_provider', {\r\n 'minecraft:storage': {\r\n source: StringNode({ validator: 'resource', params: { pool: '$storage' } })\r\n },\r\n 'minecraft:context': {\r\n target: core_1.Mod(StringNode({ enum: 'copy_source' }), { default: () => 'this' })\r\n }\r\n }));\r\n exports.FloatProvider = (config) => ObjectWithType('float_provider_type', 'number', 'value', 'minecraft:constant', null, 'float_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode(config)\r\n },\r\n 'minecraft:uniform': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode(config),\r\n max_exclusive: core_1.NumberNode(config)\r\n })\r\n },\r\n 'minecraft:clamped_normal': {\r\n value: core_1.ObjectNode({\r\n min: core_1.NumberNode(),\r\n max: core_1.NumberNode(),\r\n mean: core_1.NumberNode(),\r\n deviation: core_1.NumberNode()\r\n })\r\n },\r\n 'minecraft:trapezoid': {\r\n value: core_1.ObjectNode({\r\n min: core_1.NumberNode(),\r\n max: core_1.NumberNode(),\r\n plateau: core_1.NumberNode()\r\n })\r\n }\r\n });\r\n schemas.register('float_provider', exports.FloatProvider());\r\n exports.IntProvider = (config) => ObjectWithType('int_provider_type', 'number', 'value', 'minecraft:constant', null, 'int_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode({ integer: true, ...config })\r\n },\r\n 'minecraft:uniform': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config })\r\n })\r\n },\r\n 'minecraft:biased_to_bottom': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config })\r\n })\r\n },\r\n 'minecraft:clamped': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n source: Reference('int_provider')\r\n })\r\n }\r\n });\r\n schemas.register('int_provider', exports.IntProvider());\r\n schemas.register('vertical_anchor', core_1.ChoiceNode(['absolute', 'above_bottom', 'below_top'].map(t => ({\r\n type: t,\r\n match: v => (v === null || v === void 0 ? void 0 : v[t]) !== undefined,\r\n change: v => { var _a, _b, _c; return ({ [t]: (_c = (_b = (_a = v.absolute) !== null && _a !== void 0 ? _a : v.above_bottom) !== null && _b !== void 0 ? _b : v.below_top) !== null && _c !== void 0 ? _c : 0 }); },\r\n node: core_1.ObjectNode({\r\n [t]: core_1.NumberNode({ integer: true, min: -2048, max: 2047 })\r\n })\r\n })), { context: 'vertical_anchor' }));\r\n schemas.register('height_provider', ObjectWithType('height_provider_type', 'number', 'value', 'minecraft:constant', null, 'height_provider', {\r\n 'minecraft:constant': {\r\n value: Reference('vertical_anchor')\r\n },\r\n 'minecraft:uniform': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor')\r\n },\r\n 'minecraft:biased_to_bottom': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n inner: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n },\r\n 'minecraft:very_biased_to_bottom': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n inner: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n },\r\n 'minecraft:trapezoid': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n plateau: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }\r\n }));\r\n exports.ConditionCases = (entitySourceNode = StringNode({ enum: 'entity_source' })) => ({\r\n 'minecraft:alternative': {\r\n terms: core_1.ListNode(Reference('condition'))\r\n },\r\n 'minecraft:block_state_property': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })\r\n },\r\n 'minecraft:damage_source_properties': {\r\n predicate: Reference('damage_source_predicate')\r\n },\r\n 'minecraft:entity_properties': {\r\n entity: entitySourceNode,\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: entitySourceNode,\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), Reference('int_range'))\r\n },\r\n 'minecraft:inverted': {\r\n term: Reference('condition')\r\n },\r\n 'minecraft:killed_by_player': {\r\n inverse: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:location_check': {\r\n offsetX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetY: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n predicate: Reference('location_predicate')\r\n },\r\n 'minecraft:match_tool': {\r\n predicate: Reference('item_predicate')\r\n },\r\n 'minecraft:random_chance': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_chance_with_looting': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n looting_multiplier: core_1.NumberNode()\r\n },\r\n 'minecraft:reference': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$predicate' } })\r\n },\r\n 'minecraft:table_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n chances: core_1.ListNode(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:time_check': {\r\n value: Reference('int_range'),\r\n period: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:value_check': {\r\n value: Reference('number_provider'),\r\n range: Reference('int_range')\r\n },\r\n 'minecraft:weather_check': {\r\n raining: core_1.Opt(core_1.BooleanNode()),\r\n thundering: core_1.Opt(core_1.BooleanNode())\r\n }\r\n });\r\n exports.FunctionCases = (conditions, copySourceNode = StringNode({ enum: 'copy_source' }), entitySourceNode = StringNode({ enum: 'entity_source' })) => {\r\n const cases = {\r\n 'minecraft:apply_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n formula: StringNode({ validator: 'resource', params: { pool: collections.get('loot_table_apply_bonus_formula') } }),\r\n parameters: core_1.Mod(core_1.ObjectNode({\r\n bonusMultiplier: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:uniform_bonus_count'\r\n }),\r\n extra: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n }),\r\n probability: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n })\r\n }), {\r\n enabled: path => path.push('formula').get() !== 'minecraft:ore_drops'\r\n })\r\n },\r\n 'minecraft:copy_name': {\r\n source: copySourceNode\r\n },\r\n 'minecraft:copy_nbt': {\r\n source: Reference('nbt_provider'),\r\n ops: core_1.ListNode(core_1.ObjectNode({\r\n source: StringNode({ validator: 'nbt_path', params: { category: { getter: 'copy_source', path: ['pop', 'pop', 'pop', { push: 'source' }] } } }),\r\n target: StringNode({ validator: 'nbt_path', params: { category: 'minecraft:item' } }),\r\n op: StringNode({ enum: ['replace', 'append', 'merge'] })\r\n }, { context: 'nbt_operation' }))\r\n },\r\n 'minecraft:copy_state': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.ListNode(StringNode({ validator: 'block_state_key', params: { id: ['pop', 'pop', { push: 'block' }] } }))\r\n },\r\n 'minecraft:enchant_randomly': {\r\n enchantments: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })))\r\n },\r\n 'minecraft:enchant_with_levels': {\r\n levels: Reference('number_provider'),\r\n treasure: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:exploration_map': {\r\n destination: core_1.Opt(StringNode({ enum: 'map_feature' })),\r\n decoration: core_1.Opt(StringNode({ enum: 'map_decoration' })),\r\n zoom: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n search_radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n skip_existing_chunks: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:fill_player_head': {\r\n entity: entitySourceNode\r\n },\r\n 'minecraft:limit_count': {\r\n limit: Reference('int_range')\r\n },\r\n 'minecraft:looting_enchant': {\r\n count: Reference('number_provider'),\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_attributes': {\r\n modifiers: core_1.ListNode(Reference('attribute_modifier'))\r\n },\r\n 'minecraft:set_banner_pattern': {\r\n patterns: core_1.ListNode(core_1.ObjectNode({\r\n pattern: StringNode({ enum: 'banner_pattern' }),\r\n color: StringNode({ enum: 'dye_color' })\r\n })),\r\n append: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_contents': {\r\n entries: core_1.ListNode(Reference('loot_entry'))\r\n },\r\n 'minecraft:set_count': {\r\n count: Reference('number_provider'),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_damage': {\r\n damage: Reference('number_provider'),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_enchantments': {\r\n enchantments: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } }), Reference('number_provider')),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n seed: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_lore': {\r\n entity: core_1.Opt(entitySourceNode),\r\n lore: core_1.ListNode(Reference('text_component')),\r\n replace: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_name': {\r\n entity: core_1.Opt(entitySourceNode),\r\n name: core_1.Opt(Reference('text_component'))\r\n },\r\n 'minecraft:set_nbt': {\r\n tag: StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item' } } })\r\n },\r\n 'minecraft:set_stew_effect': {\r\n effects: core_1.Opt(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }),\r\n duration: Reference('number_provider')\r\n })))\r\n }\r\n };\r\n const res = {};\r\n collections.get('loot_function_type').forEach(f => {\r\n res[f] = { ...cases[f], ...conditions };\r\n });\r\n return res;\r\n };\r\n exports.DimensionTypePresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$dimension_type' } }), node, {\r\n 'minecraft:overworld': exports.DefaultDimensionType,\r\n 'minecraft:the_nether': {\r\n name: 'minecraft:the_nether',\r\n ultrawarm: true,\r\n natural: false,\r\n shrunk: true,\r\n piglin_safe: true,\r\n respawn_anchor_works: true,\r\n bed_works: false,\r\n has_raids: false,\r\n has_skylight: false,\r\n has_ceiling: true,\r\n ambient_light: 0.1,\r\n fixed_time: 18000,\r\n logical_height: 128,\r\n effects: 'minecraft:the_nether',\r\n infiniburn: 'minecraft:infiniburn_nether',\r\n min_y: 0,\r\n height: 256,\r\n },\r\n 'minecraft:the_end': {\r\n name: 'minecraft:the_end',\r\n ultrawarm: false,\r\n natural: false,\r\n shrunk: false,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: false,\r\n has_raids: true,\r\n has_skylight: false,\r\n has_ceiling: false,\r\n ambient_light: 0,\r\n fixed_time: 6000,\r\n logical_height: 256,\r\n effects: 'minecraft:the_end',\r\n infiniburn: 'minecraft:infiniburn_end',\r\n min_y: 0,\r\n height: 256,\r\n }\r\n });\r\n exports.NoiseSettingsPresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings' } }), node, {\r\n 'minecraft:overworld': exports.DefaultNoiseSettings,\r\n 'minecraft:nether': {\r\n name: 'minecraft:nether',\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n disable_mob_generation: true,\r\n noise_caves_enabled: false,\r\n aquifers_enabled: false,\r\n deepslate_enabled: false,\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n density_factor: 0,\r\n density_offset: 0.019921875,\r\n simplex_surface_noise: false,\r\n random_density_offset: false,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 3,\r\n xz_factor: 80,\r\n y_factor: 60\r\n },\r\n top_slide: {\r\n target: 120,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 320,\r\n size: 4,\r\n offset: -1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:netherrack\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:lava\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:end': {\r\n name: 'minecraft:end',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: -10,\r\n sea_level: 0,\r\n disable_mob_generation: true,\r\n noise_caves_enabled: false,\r\n aquifers_enabled: false,\r\n deepslate_enabled: false,\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n density_factor: 0,\r\n density_offset: 0,\r\n simplex_surface_noise: true,\r\n random_density_offset: false,\r\n island_noise_override: true,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n sampling: {\r\n xz_scale: 2,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -3000,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 7,\r\n offset: 1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:end_stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:air\"\r\n }\r\n },\r\n 'minecraft:amplified': {\r\n name: 'minecraft:amplified',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n disable_mob_generation: false,\r\n noise_caves_enabled: true,\r\n aquifers_enabled: true,\r\n deepslate_enabled: true,\r\n noise: {\r\n min_y: 0,\r\n height: 256,\r\n density_factor: 1,\r\n density_offset: -0.46875,\r\n simplex_surface_noise: true,\r\n random_density_offset: true,\r\n amplified: true,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -10,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 0,\r\n offset: 0\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:caves': {\r\n name: 'minecraft:caves',\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n disable_mob_generation: true,\r\n noise_caves_enabled: false,\r\n aquifers_enabled: false,\r\n deepslate_enabled: false,\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n density_factor: 0,\r\n density_offset: 0.019921875,\r\n simplex_surface_noise: false,\r\n random_density_offset: false,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 3,\r\n xz_factor: 80,\r\n y_factor: 60\r\n },\r\n top_slide: {\r\n target: 120,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 320,\r\n size: 4,\r\n offset: -1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:floating_islands': {\r\n name: 'minecraft:floating_islands',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: -10,\r\n sea_level: 0,\r\n disable_mob_generation: true,\r\n noise_caves_enabled: false,\r\n aquifers_enabled: false,\r\n deepslate_enabled: false,\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n density_factor: 0,\r\n density_offset: 0,\r\n simplex_surface_noise: true,\r\n random_density_offset: false,\r\n island_noise_override: true,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n sampling: {\r\n xz_scale: 2,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -3000,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 7,\r\n offset: 1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n }\r\n });\r\n}\r\nexports.initCommonSchemas = initCommonSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initConditionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initConditionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('predicate', core_1.ObjectOrList(Reference('condition'), { choiceContext: 'condition' }));\r\n schemas.register('condition', core_1.Mod(core_1.ObjectNode({\r\n condition: StringNode({ validator: 'resource', params: { pool: 'loot_condition_type' } }),\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases()\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:entity_properties',\r\n entity: 'this'\r\n })\r\n }));\r\n}\r\nexports.initConditionSchemas = initConditionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const NoPreset = (node) => core_1.Mod(node, {\r\n enabled: path => path.push('preset').get() === undefined\r\n });\r\n schemas.register('dimension', core_1.Mod(core_1.ObjectNode({\r\n type: Common_1.DimensionTypePresets(Reference('dimension_type')),\r\n generator: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/chunk_generator' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n settings: Common_1.NoiseSettingsPresets(Reference('noise_settings')),\r\n biome_source: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/biome_source' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:fixed': {\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })\r\n },\r\n 'minecraft:multi_noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n preset: core_1.Opt(StringNode({ enum: ['nether'] })),\r\n altitude_noise: NoPreset(Reference('generator_biome_noise')),\r\n temperature_noise: NoPreset(Reference('generator_biome_noise')),\r\n humidity_noise: NoPreset(Reference('generator_biome_noise')),\r\n weirdness_noise: NoPreset(Reference('generator_biome_noise')),\r\n biomes: NoPreset(core_1.Mod(core_1.ListNode(Reference('generator_biome')), {\r\n default: () => [{\r\n biome: 'minecraft:plains'\r\n }]\r\n }))\r\n },\r\n 'minecraft:checkerboard': {\r\n scale: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 62 })),\r\n biomes: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }))\r\n },\r\n 'minecraft:the_end': {\r\n seed: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:vanilla_layered': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n large_biomes: core_1.Opt(core_1.BooleanNode()),\r\n legacy_biome_init_layer: core_1.Opt(core_1.BooleanNode())\r\n }\r\n }\r\n }, { category: 'predicate', disableSwitchContext: true })\r\n },\r\n 'minecraft:flat': {\r\n settings: core_1.ObjectNode({\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n lakes: core_1.Opt(core_1.BooleanNode()),\r\n features: core_1.Opt(core_1.BooleanNode()),\r\n layers: core_1.ListNode(Reference('generator_layer')),\r\n structures: Reference('generator_structures')\r\n })\r\n }\r\n }\r\n }, { disableSwitchContext: true })\r\n }, { category: 'pool', context: 'dimension' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:fixed',\r\n seed,\r\n biome: 'minecraft:plains'\r\n },\r\n settings: 'minecraft:overworld'\r\n }\r\n };\r\n }\r\n }));\r\n schemas.register('generator_biome', core_1.Mod(core_1.ObjectNode({\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }),\r\n parameters: core_1.ObjectNode({\r\n altitude: core_1.NumberNode(),\r\n temperature: core_1.NumberNode(),\r\n humidity: core_1.NumberNode(),\r\n weirdness: core_1.NumberNode(),\r\n offset: core_1.NumberNode()\r\n })\r\n }, { context: 'generator_biome' }), {\r\n default: () => ({\r\n biome: 'minecraft:plains',\r\n parameters: {\r\n altitude: 0,\r\n temperature: 0,\r\n humidity: 0,\r\n weirdness: 0,\r\n offset: 0\r\n }\r\n })\r\n }));\r\n schemas.register('generator_biome_noise', core_1.Mod(core_1.ObjectNode({\r\n firstOctave: core_1.NumberNode({ integer: true }),\r\n amplitudes: core_1.ListNode(core_1.NumberNode())\r\n }, { context: 'generator_biome_noise' }), {\r\n default: () => ({\r\n firstOctave: -7,\r\n amplitudes: [1, 1]\r\n })\r\n }));\r\n}\r\nexports.initDimensionSchemas = initDimensionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionTypeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionTypeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('dimension_type', core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Mod(StringNode({ validator: 'resource', params: { pool: '$dimension_type', isDefinition: true } }), {\r\n enabled: (path) => path.getArray().length > 0\r\n }),\r\n ultrawarm: core_1.BooleanNode(),\r\n natural: core_1.BooleanNode(),\r\n piglin_safe: core_1.BooleanNode(),\r\n respawn_anchor_works: core_1.BooleanNode(),\r\n bed_works: core_1.BooleanNode(),\r\n has_raids: core_1.BooleanNode(),\r\n has_skylight: core_1.BooleanNode(),\r\n has_ceiling: core_1.BooleanNode(),\r\n coordinate_scale: core_1.NumberNode({ min: 0.00001, max: 30000000 }),\r\n ambient_light: core_1.NumberNode(),\r\n fixed_time: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n logical_height: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n effects: core_1.Opt(StringNode({ enum: ['minecraft:overworld', 'minecraft:the_nether', 'minecraft:the_end'] })),\r\n infiniburn: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n min_y: core_1.NumberNode({ integer: true, min: -2048, max: 2047 }),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 4096 })\r\n }, { context: 'dimension_type' }), node => ({\r\n default: () => Common_1.DefaultDimensionType,\r\n validate: (path, value, errors, options) => {\r\n value = node.validate(path, value, errors, options);\r\n if ((value === null || value === void 0 ? void 0 : value.min_y) + (value === null || value === void 0 ? void 0 : value.height) > 2047) {\r\n errors.add(path.push('height'), 'error.min_y_plus_height', 2047);\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.logical_height) > (value === null || value === void 0 ? void 0 : value.height)) {\r\n errors.add(path.push('logical_height'), 'error.logical_height');\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.height) % 16 !== 0) {\r\n errors.add(path.push('height'), 'error.height_multiple', 16);\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.min_y) % 16 !== 0) {\r\n errors.add(path.push('min_y'), 'error.min_y_multiple', 16);\r\n }\r\n return value;\r\n }\r\n })));\r\n}\r\nexports.initDimensionTypeSchemas = initDimensionTypeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initItemModifierSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initItemModifierSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('item_modifier', core_1.ObjectOrList(Reference('function'), { choiceContext: 'function' }));\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('condition')))\r\n };\r\n schemas.register('function', core_1.Mod(core_1.ObjectNode({\r\n function: StringNode({ validator: 'resource', params: { pool: 'loot_function_type' } }),\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: Common_1.FunctionCases(conditions)\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => [{\r\n function: 'minecraft:set_count',\r\n count: 1\r\n }]\r\n }));\r\n}\r\nexports.initItemModifierSchemas = initItemModifierSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LootFunctions = exports.LootConditions = exports.LootCopySources = exports.LootEntitySources = exports.LootTableTypes = void 0;\r\nexports.LootTableTypes = new Map([\r\n ['minecraft:advancement_entity', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:advancement_reward', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:barter', { requires: [8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:block', { requires: [1 /* BlockState */, 7 /* Origin */, 9 /* Tool */], allows: [0 /* BlockEntity */, 4 /* ExplosionRadius */, 8 /* ThisEntity */] }],\r\n ['minecraft:chest', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:command', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:empty', { requires: [], allows: [] }],\r\n ['minecraft:entity', { requires: [2 /* DamageSource */, 7 /* Origin */, 8 /* ThisEntity */], allows: [3 /* DirectKillerEntity */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */] }],\r\n ['minecraft:fishing', { requires: [7 /* Origin */, 9 /* Tool */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:generic', { requires: [2 /* DamageSource */, 0 /* BlockEntity */, 1 /* BlockState */, 3 /* DirectKillerEntity */, 4 /* ExplosionRadius */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */, 7 /* Origin */, 8 /* ThisEntity */, 9 /* Tool */], allows: [] }],\r\n ['minecraft:gift', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:selector', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }]\r\n]);\r\n/**\r\n * A map from loot entity sources to an array of their required context.\r\n */\r\nexports.LootEntitySources = new Map([\r\n ['direct_killer', [3 /* DirectKillerEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot copy sources to an array of their required context.\r\n */\r\nexports.LootCopySources = new Map([\r\n ['block_entity', [0 /* BlockEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot condition IDs to an array of their required context.\r\n */\r\nexports.LootConditions = new Map([\r\n ['minecraft:alternative', []],\r\n ['minecraft:block_state_property', [1 /* BlockState */]],\r\n ['minecraft:damage_source_properties', [2 /* DamageSource */]],\r\n ['minecraft:entity_properties', [7 /* Origin */]],\r\n ['minecraft:entity_scores', []],\r\n ['minecraft:inverted', []],\r\n ['minecraft:killed_by_player', [6 /* LastDamagePlayer */]],\r\n ['minecraft:location_check', []],\r\n ['minecraft:match_tool', [9 /* Tool */]],\r\n ['minecraft:random_chance', []],\r\n ['minecraft:random_chance_with_looting', [5 /* KillerEntity */]],\r\n ['minecraft:reference', []],\r\n ['minecraft:survives_explosion', [4 /* ExplosionRadius */]],\r\n ['minecraft:table_bonus', [9 /* Tool */]],\r\n ['minecraft:time_check', []],\r\n ['minecraft:weather_check', []]\r\n]);\r\n/**\r\n * A map from loot function IDs to an array of their required context.\r\n */\r\nexports.LootFunctions = new Map([\r\n ['minecraft:apply_bonus', [9 /* Tool */]],\r\n ['minecraft:copy_name', []],\r\n ['minecraft:copy_nbt', []],\r\n ['minecraft:copy_state', [1 /* BlockState */]],\r\n ['minecraft:enchant_randomly', []],\r\n ['minecraft:enchant_with_levels', []],\r\n ['minecraft:exploration_map', [7 /* Origin */]],\r\n ['minecraft:explosion_decay', []],\r\n ['minecraft:fill_player_head', []],\r\n ['minecraft:furnace_smelt', []],\r\n ['minecraft:limit_count', []],\r\n ['minecraft:looting_enchant', [5 /* KillerEntity */]],\r\n ['minecraft:set_attributes', []],\r\n ['minecraft:set_banner_pattern', []],\r\n ['minecraft:set_contents', []],\r\n ['minecraft:set_count', []],\r\n ['minecraft:set_damage', []],\r\n ['minecraft:set_loot_table', []],\r\n ['minecraft:set_lore', []],\r\n ['minecraft:set_name', []],\r\n ['minecraft:set_nbt', []],\r\n ['minecraft:set_stew_effect', []]\r\n]);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initLootTableSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst LootContext_1 = require(\"../LootContext\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initLootTableSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('loot_condition')))\r\n };\r\n const functionsAndConditions = {\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function'))),\r\n ...conditions\r\n };\r\n function compileSwitchNode(contextMap, collectionID, getNode) {\r\n const cases = [];\r\n const getAvailableOptions = (providedContext) => collections\r\n .get(collectionID)\r\n .filter(t => {\r\n var _a;\r\n const requiredContext = (_a = contextMap.get(t)) !== null && _a !== void 0 ? _a : [];\r\n return requiredContext.every(c => providedContext.includes(c));\r\n });\r\n for (const [tableType, { allows, requires }] of LootContext_1.LootTableTypes) {\r\n const providedContext = [...allows, ...requires];\r\n cases.push({\r\n match: path => path.getModel().get(new core_1.Path(['type'])) === tableType,\r\n node: getNode(getAvailableOptions(providedContext))\r\n });\r\n }\r\n cases.push({ match: _ => true, node: getNode(collectionID) });\r\n return core_1.SwitchNode(cases);\r\n }\r\n const conditionIDSwtichNode = compileSwitchNode(LootContext_1.LootConditions, 'loot_condition_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_condition_type` } }));\r\n const functionIDSwtichNode = compileSwitchNode(LootContext_1.LootFunctions, 'loot_function_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_function_type` } }));\r\n const entitySourceSwtichNode = compileSwitchNode(LootContext_1.LootEntitySources, 'entity_source', type => StringNode({ enum: type }));\r\n const copySourceSwtichNode = compileSwitchNode(LootContext_1.LootCopySources, 'copy_source', type => StringNode({ enum: type }));\r\n schemas.register('loot_table', core_1.Mod(core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: \"resource\", params: { pool: collections.get('loot_context_type') } })),\r\n pools: core_1.Opt(core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n rolls: Reference('number_provider'),\r\n bonus_rolls: core_1.Opt(Reference('number_provider')),\r\n entries: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n }, { category: 'pool', context: 'loot_pool' }), {\r\n default: () => ({\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n })\r\n }))),\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function')))\r\n }, { context: 'loot_table' }), {\r\n default: () => ({\r\n pools: [{\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n }]\r\n })\r\n }));\r\n const weightMod = {\r\n enabled: path => {\r\n var _a;\r\n return ((_a = path.pop().get()) === null || _a === void 0 ? void 0 : _a.length) > 1\r\n && !['minecraft:alternatives', 'minecraft:group', 'minecraft:sequence'].includes(path.push('type').get());\r\n }\r\n };\r\n schemas.register('loot_entry', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'loot_pool_entry_type' } }),\r\n weight: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true, min: 1 }), weightMod)),\r\n quality: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), weightMod)),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alternatives': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:dynamic': {\r\n name: StringNode(),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:group': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:item': {\r\n name: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:sequence': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:tag': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$tag/item' } }),\r\n expand: core_1.Opt(core_1.BooleanNode()),\r\n ...functionsAndConditions\r\n }\r\n }\r\n }, { context: 'loot_entry' }), {\r\n default: () => ({\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('loot_function', core_1.Mod(core_1.ObjectNode({\r\n function: functionIDSwtichNode,\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: Common_1.FunctionCases(conditions, copySourceSwtichNode, entitySourceSwtichNode)\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => ({\r\n function: 'minecraft:set_count',\r\n count: 1\r\n })\r\n }));\r\n schemas.register('loot_condition', core_1.Mod(core_1.ObjectNode({\r\n condition: conditionIDSwtichNode,\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases(entitySourceSwtichNode)\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:random_chance',\r\n chance: 0.5\r\n })\r\n }));\r\n schemas.register('attribute_modifier', core_1.Mod(core_1.ObjectNode({\r\n attribute: StringNode({ validator: 'resource', params: { pool: 'attribute' } }),\r\n name: StringNode(),\r\n amount: Reference('number_provider'),\r\n operation: StringNode({ enum: ['addition', 'multiply_base', 'multiply_total'] }),\r\n slot: core_1.StringOrList(StringNode({ enum: 'slot' }))\r\n }, { context: 'attribute_modifier' }), {\r\n default: () => ({\r\n attribute: 'minecraft:generic.max_health',\r\n name: '',\r\n amount: 1,\r\n operation: 'addition',\r\n slot: 'mainhand'\r\n })\r\n }));\r\n}\r\nexports.initLootTableSchemas = initLootTableSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPackMcmetaSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst CURRENT_PACK_FORMAT = 7;\r\nfunction initPackMcmetaSchemas(schemas, _) {\r\n const getSimpleString = (jsonText) => { var _a, _b; return jsonText instanceof Array ? getSimpleString(jsonText[0]) : (_b = (_a = jsonText === null || jsonText === void 0 ? void 0 : jsonText.text) !== null && _a !== void 0 ? _a : jsonText === null || jsonText === void 0 ? void 0 : jsonText.toString()) !== null && _b !== void 0 ? _b : ''; };\r\n schemas.register('pack_mcmeta', core_1.Mod(core_1.ObjectNode({\r\n pack: core_1.Mod(core_1.ObjectNode({\r\n pack_format: core_1.Mod(core_1.NumberNode({ integer: true, min: CURRENT_PACK_FORMAT, max: CURRENT_PACK_FORMAT }), {\r\n default: () => CURRENT_PACK_FORMAT,\r\n canUpdate: (_p, v) => v !== CURRENT_PACK_FORMAT,\r\n update: () => [{ name: 'pack_format', params: [CURRENT_PACK_FORMAT], newValue: CURRENT_PACK_FORMAT }]\r\n }),\r\n description: core_1.Reference(schemas, 'text_component')\r\n }), {\r\n default: () => ({\r\n pack_format: CURRENT_PACK_FORMAT,\r\n description: ''\r\n })\r\n })\r\n }), {\r\n default: () => ({\r\n pack: {\r\n pack_format: CURRENT_PACK_FORMAT,\r\n description: ''\r\n }\r\n })\r\n }));\r\n}\r\nexports.initPackMcmetaSchemas = initPackMcmetaSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPredicatesSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initPredicatesSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const StateChoice = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode(),\r\n change: v => (typeof v === 'boolean' || typeof v === 'number') ? v.toString() : ''\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => (typeof v === 'string') ? parseInt(v) : 0\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }),\r\n change: v => (typeof v === 'number') ? ({ min: v, max: v }) : ({})\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => v === 'true' || v === 1\r\n }\r\n ]);\r\n schemas.register('item_predicate', core_1.ObjectNode({\r\n items: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'item' } }))),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } })),\r\n count: Reference('int_bounds'),\r\n durability: Reference('int_bounds'),\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } })),\r\n enchantments: core_1.Opt(core_1.ListNode(Reference('enchantment_predicate')))\r\n }, { context: 'item' }));\r\n schemas.register('enchantment_predicate', core_1.ObjectNode({\r\n enchantment: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })),\r\n levels: Reference('int_bounds')\r\n }, { context: 'enchantment' }));\r\n schemas.register('block_predicate', core_1.ObjectNode({\r\n blocks: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block', id: ['pop', { push: 'block' }] } } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice, { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n }, { context: 'block' }));\r\n schemas.register('fluid_predicate', core_1.ObjectNode({\r\n fluid: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'fluid' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/fluid' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice))\r\n }, { context: 'fluid' }));\r\n schemas.register('location_predicate', core_1.ObjectNode({\r\n position: core_1.Opt(core_1.ObjectNode({\r\n x: Reference('float_bounds'),\r\n y: Reference('float_bounds'),\r\n z: Reference('float_bounds')\r\n })),\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n feature: core_1.Opt(StringNode({ enum: collections.get('worldgen/structure_feature').map(v => v.slice(10)) })),\r\n dimension: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n light: core_1.Opt(core_1.ObjectNode({\r\n light: Reference('int_bounds')\r\n })),\r\n smokey: core_1.Opt(core_1.BooleanNode()),\r\n block: core_1.Opt(Reference('block_predicate')),\r\n fluid: core_1.Opt(Reference('fluid_predicate'))\r\n }, { context: 'location' }));\r\n schemas.register('statistic_predicate', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'stat_type' } }),\r\n stat: StringNode(),\r\n value: Reference('int_bounds'),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:mined': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:crafted': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:used': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:broken': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:picked_up': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:dropped': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:killed': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:killed_by': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:custom': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'custom_stat' } })\r\n }\r\n }\r\n }));\r\n schemas.register('player_predicate', core_1.ObjectNode({\r\n gamemode: core_1.Opt(StringNode({ enum: 'gamemode' })),\r\n level: Reference('int_bounds'),\r\n advancements: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$advancement' } }), core_1.ChoiceNode([\r\n { type: 'boolean', node: core_1.BooleanNode(), change: _ => true },\r\n {\r\n type: 'object', node: core_1.MapNode(StringNode(), core_1.BooleanNode())\r\n }\r\n ]))),\r\n recipes: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }), core_1.BooleanNode())),\r\n stats: core_1.Opt(core_1.ListNode(Reference('statistic_predicate'))),\r\n looking_at: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'player' }));\r\n schemas.register('status_effect_predicate', core_1.ObjectNode({\r\n amplifier: Reference('int_bounds'),\r\n duration: Reference('int_bounds'),\r\n ambient: core_1.Opt(core_1.BooleanNode()),\r\n visible: core_1.Opt(core_1.BooleanNode())\r\n }, { context: 'status_effect' }));\r\n schemas.register('distance_predicate', core_1.ObjectNode({\r\n x: Reference('float_bounds'),\r\n y: Reference('float_bounds'),\r\n z: Reference('float_bounds'),\r\n absolute: Reference('float_bounds'),\r\n horizontal: Reference('float_bounds')\r\n }, { context: 'distance' }));\r\n schemas.register('entity_predicate', core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'entity_type', allowTag: true } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:entity', id: ['pop', { push: 'type' }] } } })),\r\n team: core_1.Opt(StringNode({ validator: 'team' })),\r\n location: core_1.Opt(Reference('location_predicate')),\r\n stepping_on: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n flags: core_1.Opt(core_1.ObjectNode({\r\n is_on_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_sneaking: core_1.Opt(core_1.BooleanNode()),\r\n is_sprinting: core_1.Opt(core_1.BooleanNode()),\r\n is_swimming: core_1.Opt(core_1.BooleanNode()),\r\n is_baby: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n equipment: core_1.Opt(core_1.MapNode(StringNode({ enum: 'slot' }), Reference('item_predicate'))),\r\n player: core_1.Opt(Reference('player_predicate')),\r\n vehicle: core_1.Opt(Reference('entity_predicate')),\r\n passenger: core_1.Opt(Reference('entity_predicate')),\r\n targeted_entity: core_1.Opt(Reference('entity_predicate')),\r\n lightning_bolt: core_1.Opt(core_1.ObjectNode({\r\n blocks_set_on_fire: core_1.Opt(Reference('int_bounds')),\r\n entity_struck: core_1.Opt(Reference('entity_predicate'))\r\n })),\r\n fishing_hook: core_1.Opt(core_1.ObjectNode({\r\n in_open_water: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n }, { context: 'entity' }));\r\n schemas.register('damage_source_predicate', core_1.ObjectNode({\r\n is_explosion: core_1.Opt(core_1.BooleanNode()),\r\n is_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_magic: core_1.Opt(core_1.BooleanNode()),\r\n is_projectile: core_1.Opt(core_1.BooleanNode()),\r\n is_lightning: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_armor: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_invulnerability: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_magic: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n direct_entity: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'damage_source' }));\r\n schemas.register('damage_predicate', core_1.ObjectNode({\r\n dealt: Reference('float_bounds'),\r\n taken: Reference('float_bounds'),\r\n blocked: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n type: core_1.Opt(Reference('damage_source_predicate'))\r\n }, { context: 'damage' }));\r\n}\r\nexports.initPredicatesSchemas = initPredicatesSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initRecipeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initRecipeSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('recipe', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'recipe_serializer' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:crafting_shaped': {\r\n group: core_1.Opt(StringNode({ enum: 'recipe_group', additional: true })),\r\n pattern: core_1.ListNode(StringNode()),\r\n key: core_1.MapNode(StringNode(), // TODO: add validation\r\n Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:crafting_shapeless': {\r\n group: core_1.Opt(StringNode()),\r\n ingredients: core_1.ListNode(Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:smelting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 200 }))\r\n },\r\n 'minecraft:blasting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:smoking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:campfire_cooking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:stonecutting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:smithing': {\r\n group: core_1.Opt(StringNode()),\r\n base: Reference('recipe_ingredient_object'),\r\n addition: Reference('recipe_ingredient_object'),\r\n result: Reference('recipe_result')\r\n }\r\n }\r\n }, { context: 'recipe', disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:crafting_shaped'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('recipe_ingredient_object'),\r\n change: v => v[0]\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('recipe_ingredient_object')),\r\n change: v => [v]\r\n }\r\n ]), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient_object', core_1.Mod(core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_result', core_1.Mod(core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 1 }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n}\r\nexports.initRecipeSchemas = initRecipeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTagsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTagsSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const TagBase = (type) => core_1.Mod(core_1.ObjectNode({\r\n replace: core_1.Opt(core_1.BooleanNode()),\r\n values: core_1.ListNode(core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: type, allowTag: true } }),\r\n change: v => v.id\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: type, allowTag: true, allowUnknown: true } }),\r\n required: core_1.BooleanNode()\r\n }),\r\n change: v => ({ id: v })\r\n }\r\n ])),\r\n }, { context: 'tag' }), {\r\n default: () => ({\r\n values: []\r\n })\r\n });\r\n schemas.register('block_tag', TagBase('block'));\r\n schemas.register('entity_type_tag', TagBase('entity_type'));\r\n schemas.register('fluid_tag', TagBase('fluid'));\r\n schemas.register('function_tag', TagBase('$function'));\r\n schemas.register('game_event_tag', TagBase('game_event'));\r\n schemas.register('item_tag', TagBase('item'));\r\n}\r\nexports.initTagsSchemas = initTagsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTextComponentSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTextComponentSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const getSimpleString = (v) => { var _a; return v instanceof Array ? getSimpleString(v[0]) : (_a = v === null || v === void 0 ? void 0 : v.text) !== null && _a !== void 0 ? _a : (typeof v === 'object' ? '' : v === null || v === void 0 ? void 0 : v.toString()); };\r\n schemas.register('text_component', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('text_component_object'),\r\n change: v => v instanceof Array ? (typeof v[0] === 'object' ? v[0] : { text: getSimpleString(v[0]) }) : typeof v === 'object' ? v : { text: getSimpleString(v) }\r\n },\r\n {\r\n type: 'list',\r\n node: Reference('text_component_list'),\r\n change: v => [v]\r\n },\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: StringNode(),\r\n change: getSimpleString\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => {\r\n const n = parseFloat(getSimpleString(v));\r\n return isFinite(n) ? n : (!!v ? 1 : 0);\r\n }\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => {\r\n const s = getSimpleString(v);\r\n return s === 'true' || s === 'false' ? s === 'true' : !!s;\r\n }\r\n }\r\n ], { context: 'text_component' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n const CommonFields = {\r\n color: core_1.Opt(StringNode()) /* TODO */,\r\n font: core_1.Opt(StringNode()),\r\n bold: core_1.Opt(core_1.BooleanNode()),\r\n italic: core_1.Opt(core_1.BooleanNode()),\r\n underlined: core_1.Opt(core_1.BooleanNode()),\r\n strikethrough: core_1.Opt(core_1.BooleanNode()),\r\n obfuscated: core_1.Opt(core_1.BooleanNode()),\r\n insertion: core_1.Opt(StringNode()),\r\n clickEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['open_url', 'open_file', 'run_command', 'suggest_command', 'change_page', 'copy_to_clipboard'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'change_page': {\r\n value: StringNode()\r\n },\r\n 'copy_to_clipboard': {\r\n value: StringNode()\r\n },\r\n 'open_file': {\r\n value: StringNode()\r\n },\r\n 'open_url': {\r\n value: StringNode()\r\n },\r\n 'run_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n },\r\n 'suggest_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n }\r\n }\r\n })),\r\n hoverEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['show_text', 'show_item', 'show_entity'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'show_text': {\r\n value: core_1.Opt(Reference('text_component')),\r\n contents: core_1.Opt(Reference('text_component'))\r\n },\r\n 'show_item': {\r\n value: core_1.Opt(StringNode({ validator: 'nbt', params: { module: 'util::InventoryItem' } })),\r\n contents: core_1.Opt(core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n tag: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'id' }] } } }))\r\n }))\r\n },\r\n 'show_entity': {\r\n value: core_1.Opt(core_1.ObjectNode({\r\n name: core_1.Opt(StringNode()),\r\n type: core_1.Opt(StringNode()),\r\n id: core_1.Opt(StringNode())\r\n })),\r\n contents: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Opt(Reference('text_component')),\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n id: StringNode({ validator: 'uuid' })\r\n }), {\r\n default: () => ({\r\n type: 'minecraft:pig',\r\n id: '00000001-0001-0001-0001-000000000001'\r\n })\r\n }))\r\n }\r\n }\r\n })),\r\n extra: core_1.Opt(Reference('text_component_list'))\r\n };\r\n schemas.register('text_component_object', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'text',\r\n match: v => typeof v === 'object',\r\n change: v => ({ text: '' }),\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n text: StringNode(),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'translation',\r\n match: v => (v === null || v === void 0 ? void 0 : v.translate) !== undefined,\r\n change: v => ({ translate: '' }),\r\n node: core_1.ObjectNode({\r\n translate: StringNode(),\r\n with: core_1.Opt(Reference('text_component_list')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'score',\r\n match: v => (v === null || v === void 0 ? void 0 : v.score) !== undefined,\r\n change: v => ({ score: {} }),\r\n node: core_1.ObjectNode({\r\n score: core_1.ObjectNode({\r\n name: StringNode({ validator: 'entity', params: { amount: 'single', type: 'entities', isScoreHolder: true } }),\r\n objective: StringNode({ validator: 'objective' }),\r\n value: core_1.Opt(StringNode())\r\n }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'selector',\r\n match: v => (v === null || v === void 0 ? void 0 : v.selector) !== undefined,\r\n change: v => ({ selector: '' }),\r\n node: core_1.ObjectNode({\r\n selector: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } }),\r\n separator: core_1.Opt(Reference('text_component')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'keybind',\r\n match: v => (v === null || v === void 0 ? void 0 : v.keybind) !== undefined,\r\n change: v => ({ keybind: '' }),\r\n node: core_1.ObjectNode({\r\n keybind: StringNode({ enum: 'keybind', additional: true }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'nbt',\r\n match: v => (v === null || v === void 0 ? void 0 : v.nbt) !== undefined,\r\n change: v => ({ nbt: '' }),\r\n node: core_1.ObjectNode({\r\n nbt: StringNode({ validator: 'nbt_path' }),\r\n block: core_1.Opt(StringNode({ validator: 'vector', params: { dimension: 3, isInteger: true } })),\r\n entity: core_1.Opt(StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } })),\r\n storage: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$storage' } })),\r\n interpret: core_1.Opt(core_1.BooleanNode()),\r\n separator: core_1.Opt(Reference('text_component')),\r\n ...CommonFields\r\n })\r\n }\r\n ], { context: 'text_component_object', choiceContext: 'text_component.object' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n schemas.register('text_component_list', core_1.Mod(core_1.ListNode(Reference('text_component')), {\r\n default: () => [{\r\n text: \"\"\r\n }]\r\n }));\r\n}\r\nexports.initTextComponentSchemas = initTextComponentSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initBiomeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initBiomeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('biome', core_1.Mod(core_1.ObjectNode({\r\n surface_builder: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_surface_builder' } }),\r\n depth: core_1.NumberNode(),\r\n scale: core_1.NumberNode(),\r\n temperature: core_1.NumberNode(),\r\n downfall: core_1.NumberNode(),\r\n precipitation: StringNode({ enum: ['none', 'rain', 'snow'] }),\r\n temperature_modifier: core_1.Opt(StringNode({ enum: ['none', 'frozen'] })),\r\n category: StringNode({ enum: 'biome_category' }),\r\n player_spawn_friendly: core_1.Opt(core_1.BooleanNode()),\r\n creature_spawn_probability: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n effects: core_1.ObjectNode({\r\n sky_color: core_1.NumberNode({ color: true }),\r\n fog_color: core_1.NumberNode({ color: true }),\r\n water_color: core_1.NumberNode({ color: true }),\r\n water_fog_color: core_1.NumberNode({ color: true }),\r\n grass_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n foliage_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n grass_color_modifier: core_1.Opt(StringNode({ enum: ['none', 'dark_forest', 'swamp'] })),\r\n ambient_sound: core_1.Opt(StringNode()),\r\n mood_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_delay: core_1.NumberNode({ integer: true }),\r\n block_search_extent: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode()\r\n })),\r\n additions_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n })),\r\n music: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n min_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n max_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n replace_current_music: core_1.BooleanNode()\r\n })),\r\n particle: core_1.Opt(core_1.ObjectNode({\r\n options: core_1.ObjectNode({\r\n type: StringNode()\r\n }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }))\r\n }),\r\n starts: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_structure_feature' } })),\r\n spawners: core_1.MapNode(StringNode({ enum: [\r\n 'monster',\r\n 'creature',\r\n 'ambient',\r\n 'underground_water_creature',\r\n 'water_creature',\r\n 'water_ambient',\r\n 'misc'\r\n ] }), core_1.Mod(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n weight: core_1.NumberNode({ integer: true }),\r\n minCount: core_1.NumberNode({ integer: true }),\r\n maxCount: core_1.NumberNode({ integer: true })\r\n })), {\r\n category: () => 'pool',\r\n default: () => [{\r\n type: 'minecraft:bat',\r\n weight: 1\r\n }]\r\n })),\r\n spawn_costs: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'entity_type' } }), core_1.Mod(core_1.ObjectNode({\r\n energy_budget: core_1.NumberNode(),\r\n charge: core_1.NumberNode()\r\n }, { category: 'function' }), {\r\n default: () => ({\r\n energy_budget: 0.12,\r\n charge: 1.0\r\n })\r\n })),\r\n carvers: core_1.MapNode(StringNode({ enum: ['air', 'liquid'] }), core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_carver' } })), {\r\n default: () => ['minecraft:cave']\r\n })),\r\n features: core_1.ListNode(core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })), { category: () => 'predicate' }), { maxLength: 10 })\r\n }, { context: 'biome' }), {\r\n default: () => ({\r\n surface_builder: 'minecraft:grass',\r\n depth: 0.125,\r\n scale: 0.05,\r\n temperature: 0.8,\r\n downfall: 0.4,\r\n precipitation: 'rain',\r\n category: 'plains',\r\n effects: {\r\n sky_color: 7907327,\r\n fog_color: 12638463,\r\n water_color: 4159204,\r\n water_fog_color: 329011\r\n }\r\n })\r\n }));\r\n}\r\nexports.initBiomeSchemas = initBiomeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCarverSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initCarverSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const CanyonConfig = {\r\n vertical_rotation: Common_1.FloatProvider(),\r\n shape: core_1.ObjectNode({\r\n distance_factor: Common_1.FloatProvider(),\r\n thickness: Common_1.FloatProvider(),\r\n width_smoothness: core_1.NumberNode({ integer: true, min: 0 }),\r\n horizontal_radius_factor: Common_1.FloatProvider(),\r\n vertical_radius_default_factor: core_1.NumberNode(),\r\n vertical_radius_center_factor: core_1.NumberNode()\r\n })\r\n };\r\n const CaveConfig = {\r\n horizontal_radius_multiplier: Common_1.FloatProvider(),\r\n vertical_radius_multiplier: Common_1.FloatProvider(),\r\n floor_level: Common_1.FloatProvider({ min: -1, max: 1 }),\r\n };\r\n schemas.register('configured_carver', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/carver' } }),\r\n config: core_1.ObjectNode({\r\n probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n y: Reference('height_provider'),\r\n yScale: Common_1.FloatProvider(),\r\n lava_level: Reference('vertical_anchor'),\r\n aquifers_enabled: core_1.BooleanNode(),\r\n debug_settings: core_1.Opt(core_1.ObjectNode({\r\n debug_mode: core_1.Opt(core_1.BooleanNode()),\r\n air_state: core_1.Opt(Reference('block_state')),\r\n water_state: core_1.Opt(Reference('block_state')),\r\n lava_state: core_1.Opt(Reference('block_state')),\r\n barrier_state: core_1.Opt(Reference('block_state'))\r\n })),\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:canyon': CanyonConfig,\r\n 'minecraft:cave': CaveConfig,\r\n 'minecraft:nether_cave': CaveConfig\r\n },\r\n })\r\n }, { context: 'carver' }), {\r\n default: () => ({\r\n type: 'minecraft:cave',\r\n config: {\r\n probability: 0.1\r\n }\r\n })\r\n }));\r\n}\r\nexports.initCarverSchemas = initCarverSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDecoratorSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initDecoratorSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const CountConfig = {\r\n count: Common_1.IntProvider({ min: 0, max: 256 })\r\n };\r\n schemas.register('configured_decorator', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/decorator' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:carving_mask': {\r\n step: StringNode({ enum: 'generation_step' })\r\n },\r\n 'minecraft:cave_surface': {\r\n surface: StringNode({ enum: ['floor', 'ceiling'] }),\r\n floor_to_ceiling_search_range: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:chance': {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n },\r\n 'minecraft:count': CountConfig,\r\n 'minecraft:count_extra': {\r\n count: core_1.NumberNode({ integer: true, min: 0 }),\r\n extra_count: core_1.NumberNode({ integer: true, min: 0 }),\r\n extra_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:count_multilayer': CountConfig,\r\n 'minecraft:count_noise': {\r\n noise_level: core_1.NumberNode(),\r\n below_noise: core_1.NumberNode({ integer: true }),\r\n above_noise: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:count_noise_biased': {\r\n noise_to_count_ratio: core_1.NumberNode({ integer: true }),\r\n noise_factor: core_1.NumberNode(),\r\n noise_offset: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:decorated': {\r\n outer: Reference('configured_decorator'),\r\n inner: Reference('configured_decorator')\r\n },\r\n 'minecraft:heightmap': {\r\n heightmap: StringNode({ enum: 'heightmap_type' })\r\n },\r\n 'minecraft:heightmap_spread_double': {\r\n heightmap: StringNode({ enum: 'heightmap_type' })\r\n },\r\n 'minecraft:lava_lake': {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n },\r\n 'minecraft:range': {\r\n height: Reference('height_provider')\r\n },\r\n 'minecraft:water_depth_threshold': {\r\n max_water_depth: core_1.NumberNode({ integer: true })\r\n }\r\n }\r\n }, { context: 'decorator', category: 'predicate' })\r\n }, { context: 'decorator', category: 'predicate' }));\r\n}\r\nexports.initDecoratorSchemas = initDecoratorSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initProcessorListSchemas = exports.Processors = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initProcessorListSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n exports.Processors = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/processor_list' } }),\r\n change: v => undefined\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('processor_list'),\r\n change: v => ({\r\n processors: [{\r\n \"processor_type\": \"minecraft:nop\"\r\n }]\r\n })\r\n }\r\n ]);\r\n schemas.register('processor_list', core_1.Mod(core_1.ObjectNode({\r\n processors: core_1.ListNode(Reference('processor'))\r\n }, { context: 'processor_list' }), {\r\n default: () => ({\r\n processors: [{\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n }]\r\n })\r\n }));\r\n schemas.register('processor', core_1.Mod(core_1.ObjectNode({\r\n processor_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_processor' } }),\r\n [core_1.Switch]: [{ push: 'processor_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_age': {\r\n mossiness: core_1.NumberNode()\r\n },\r\n 'minecraft:block_ignore': {\r\n blocks: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:block_rot': {\r\n integrity: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:gravity': {\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n offset: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:protected_blocks': {\r\n value: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n },\r\n 'minecraft:rule': {\r\n rules: core_1.ListNode(Reference('processor_rule'))\r\n }\r\n }\r\n }, { category: 'function', context: 'processor' }), {\r\n default: () => ({\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n })\r\n }));\r\n schemas.register('processor_rule', core_1.Mod(core_1.ObjectNode({\r\n position_predicate: core_1.Opt(Reference('pos_rule_test')),\r\n location_predicate: Reference('rule_test'),\r\n input_predicate: Reference('rule_test'),\r\n output_state: Reference('block_state'),\r\n output_nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block' } } }))\r\n }, { category: 'predicate', context: 'processor_rule' }), {\r\n default: () => ({\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n })\r\n }));\r\n const posTestFields = {\r\n min_dist: core_1.Opt(core_1.NumberNode({ min: 0, max: 255, integer: true })),\r\n max_dist: core_1.Opt(core_1.NumberNode({ min: 0, max: 255, integer: true })),\r\n min_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n max_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 }))\r\n };\r\n schemas.register('pos_rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'pos_rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:axis_aligned_linear_pos': {\r\n axis: StringNode({ enum: ['x', 'y', 'z'] }),\r\n ...posTestFields\r\n },\r\n 'minecraft:linear_pos': posTestFields\r\n }\r\n }, { context: 'pos_rule_test', disableSwitchContext: true }));\r\n schemas.register('rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:blockstate_match': {\r\n block_state: Reference('block_state')\r\n },\r\n 'minecraft:random_block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_blockstate_match': {\r\n block_state: Reference('block_state'),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:tag_match': {\r\n tag: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }\r\n }\r\n }, { context: 'rule_test', disableSwitchContext: true }));\r\n}\r\nexports.initProcessorListSchemas = initProcessorListSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nrequire(\"./Decorator\");\r\nrequire(\"./ProcessorList\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nfunction initFeatureSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const RandomPatchConfig = {\r\n can_replace: core_1.Opt(core_1.BooleanNode()),\r\n project: core_1.Opt(core_1.BooleanNode()),\r\n need_water: core_1.Opt(core_1.BooleanNode()),\r\n xspread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n yspread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n zspread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n tries: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 })),\r\n state_provider: Reference('block_state_provider'),\r\n block_placer: Reference('block_placer'),\r\n whitelist: core_1.ListNode(Reference('block_state')),\r\n blacklist: core_1.ListNode(Reference('block_state'))\r\n };\r\n const DiskConfig = {\r\n state: Reference('block_state'),\r\n radius: Common_1.IntProvider({ min: 0, max: 8 }),\r\n half_height: core_1.NumberNode({ integer: true, min: 0, max: 4 }),\r\n targets: core_1.ListNode(Reference('block_state'))\r\n };\r\n const HugeMushroomConfig = {\r\n cap_provider: Reference('block_state_provider'),\r\n stem_provider: Reference('block_state_provider'),\r\n foliage_radius: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n };\r\n const TargetBlockState = core_1.ObjectNode({\r\n target: Reference('rule_test'),\r\n state: Reference('block_state')\r\n });\r\n const OreConfig = {\r\n size: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n discard_chance_on_air_exposure: core_1.NumberNode({ min: 0, max: 1 }),\r\n targets: core_1.ListNode(TargetBlockState)\r\n };\r\n const Feature = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('configured_feature')\r\n }\r\n ], { choiceContext: 'feature' });\r\n const VegetationPatchConfig = {\r\n surface: StringNode({ enum: ['floor', 'ceiling'] }),\r\n depth: Common_1.IntProvider({ min: 1, max: 128 }),\r\n vertical_range: core_1.NumberNode({ integer: true, min: 1, max: 256 }),\r\n extra_bottom_block_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n extra_edge_column_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n vegetation_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n xz_radius: Common_1.IntProvider(),\r\n replaceable: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n ground_state: Reference('block_state_provider'),\r\n vegetation_feature: Feature\r\n };\r\n schemas.register('configured_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bamboo': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:basalt_columns': {\r\n reach: Common_1.IntProvider({ min: 0, max: 3 }),\r\n height: Common_1.IntProvider({ min: 1, max: 10 })\r\n },\r\n 'minecraft:block_pile': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:decorated': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:decorated_flower': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:delta_feature': {\r\n contents: Reference('block_state'),\r\n rim: Reference('block_state'),\r\n size: Common_1.IntProvider({ min: 0, max: 16 }),\r\n rim_size: Common_1.IntProvider({ min: 0, max: 16 })\r\n },\r\n 'minecraft:disk': DiskConfig,\r\n 'minecraft:dripstone_cluster': {\r\n floor_to_ceiling_search_range: core_1.NumberNode({ integer: true, min: 1, max: 512 }),\r\n height: Common_1.IntProvider({ min: 0, max: 128 }),\r\n radius: Common_1.IntProvider({ min: 0, max: 128 }),\r\n max_stalagmite_stalactite_height_diff: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n height_deviation: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n dripstone_block_layer_thickness: Common_1.IntProvider({ min: 0, max: 128 }),\r\n density: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n wetness: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n chance_of_dripstone_column_at_max_distance_from_center: core_1.NumberNode({ min: 0, max: 1 }),\r\n max_distance_from_edge_affecting_chance_of_dripstone_column: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n max_distance_from_center_affecting_height_bias: core_1.NumberNode({ integer: true, min: 1, max: 64 })\r\n },\r\n 'minecraft:end_gateway': {\r\n exact: core_1.BooleanNode(),\r\n exit: core_1.Opt(Reference('block_pos'))\r\n },\r\n 'minecraft:end_spike': {\r\n crystal_invulnerable: core_1.Opt(core_1.BooleanNode()),\r\n crystal_beam_target: core_1.Opt(Reference('block_pos')),\r\n spikes: core_1.ListNode(core_1.ObjectNode({\r\n centerX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n centerZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n height: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n guarded: core_1.Opt(core_1.BooleanNode())\r\n }))\r\n },\r\n 'minecraft:fill_layer': {\r\n state: Reference('block_state'),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 255 })\r\n },\r\n 'minecraft:flower': RandomPatchConfig,\r\n 'minecraft:forest_rock': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:fossil': {\r\n max_empty_corners_allowed: core_1.NumberNode({ integer: true, min: 0, max: 7 }),\r\n fossil_structures: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$structure' } })),\r\n overlay_structures: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$structure' } })),\r\n fossil_processors: ProcessorList_1.Processors,\r\n overlay_processors: ProcessorList_1.Processors,\r\n },\r\n 'minecraft:geode': {\r\n blocks: core_1.ObjectNode({\r\n filling_provider: Reference('block_state_provider'),\r\n inner_layer_provider: Reference('block_state_provider'),\r\n alternate_inner_layer_provider: Reference('block_state_provider'),\r\n middle_layer_provider: Reference('block_state_provider'),\r\n outer_layer_provider: Reference('block_state_provider'),\r\n inner_placements: core_1.ListNode(Reference('block_state')),\r\n cannot_replace: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n invalid_blocks: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }),\r\n layers: core_1.ObjectNode({\r\n filling: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n inner_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n middle_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n outer_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n }),\r\n crack: core_1.ObjectNode({\r\n generate_crack_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n base_crack_size: core_1.Opt(core_1.NumberNode({ min: 0, max: 5 })),\r\n crack_point_offset: core_1.Opt(core_1.NumberNode({ min: 0, max: 10, integer: true })),\r\n }),\r\n noise_multiplier: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n use_potential_placements_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n use_alternate_layer0_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n placements_require_layer0_alternate: core_1.Opt(core_1.BooleanNode()),\r\n outer_wall_distance: core_1.Opt(Common_1.IntProvider({ min: 1, max: 20 })),\r\n distribution_points: core_1.Opt(Common_1.IntProvider({ min: 1, max: 20 })),\r\n point_offset: core_1.Opt(Common_1.IntProvider({ min: 0, max: 10 })),\r\n min_gen_offset: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max_gen_offset: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n invalid_blocks_threshold: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:glow_lichen': {\r\n search_range: core_1.Opt(core_1.NumberNode({ min: 1, max: 64, integer: true })),\r\n chance_of_spreading: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n can_place_on_floor: core_1.Opt(core_1.BooleanNode()),\r\n can_place_on_ceiling: core_1.Opt(core_1.BooleanNode()),\r\n can_place_on_wall: core_1.Opt(core_1.BooleanNode()),\r\n can_be_placed_on: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:growing_plant': {\r\n direction: StringNode({ enum: ['up', 'down', 'north', 'east', 'south', 'west'] }),\r\n allow_water: core_1.BooleanNode(),\r\n height_distribution: core_1.ListNode(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true }),\r\n data: Common_1.IntProvider()\r\n })),\r\n body_provider: Reference('block_state_provider'),\r\n head_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:huge_brown_mushroom': HugeMushroomConfig,\r\n 'minecraft:huge_fungus': {\r\n hat_state: Reference('block_state'),\r\n decor_state: Reference('block_state'),\r\n stem_state: Reference('block_state'),\r\n valid_base_block: Reference('block_state'),\r\n planted: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:huge_red_mushroom': HugeMushroomConfig,\r\n 'minecraft:ice_patch': DiskConfig,\r\n 'minecraft:iceberg': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:lake': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:large_dripstone': {\r\n floor_to_ceiling_search_range: core_1.Opt(core_1.NumberNode({ integer: true, min: 1, max: 512 })),\r\n column_radius: Common_1.IntProvider({ min: 0, max: 60 }),\r\n height_scale: Common_1.FloatProvider({ min: 0, max: 20 }),\r\n max_column_radius_to_cave_height_ratio: core_1.NumberNode({ min: 0, max: 1 }),\r\n stalactite_bluntness: Common_1.FloatProvider({ min: 0.1, max: 10 }),\r\n stalagmite_bluntness: Common_1.FloatProvider({ min: 0.1, max: 10 }),\r\n wind_speed: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n min_radius_for_wind: core_1.NumberNode({ integer: true, min: 0, max: 100 }),\r\n min_bluntness_for_wind: core_1.NumberNode({ min: 0, max: 5 })\r\n },\r\n 'minecraft:nether_forest_vegetation': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:netherrack_replace_blobs': {\r\n state: Reference('block_state'),\r\n target: Reference('block_state'),\r\n radius: Common_1.IntProvider({ min: 0, max: 12 })\r\n },\r\n 'minecraft:no_bonemeal_flower': RandomPatchConfig,\r\n 'minecraft:ore': OreConfig,\r\n 'minecraft:random_patch': RandomPatchConfig,\r\n 'minecraft:random_boolean_selector': {\r\n feature_false: Feature,\r\n feature_true: Feature\r\n },\r\n 'minecraft:random_selector': {\r\n features: core_1.ListNode(core_1.ObjectNode({\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n feature: Feature\r\n })),\r\n default: Feature\r\n },\r\n 'minecraft:replace_single_block': {\r\n targets: core_1.ListNode(TargetBlockState)\r\n },\r\n 'minecraft:root_system': {\r\n required_vertical_space_for_tree: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_radius: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_placement_attempts: core_1.NumberNode({ integer: true, min: 1, max: 256 }),\r\n root_column_max_height: core_1.NumberNode({ integer: true, min: 1, max: 4096 }),\r\n hanging_root_radius: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n hanging_roots_vertical_span: core_1.NumberNode({ integer: true, min: 0, max: 16 }),\r\n hanging_root_placement_attempts: core_1.NumberNode({ integer: true, min: 0, max: 256 }),\r\n allowed_vertical_water_for_tree: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_replaceable: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n root_state_provider: Reference('block_state_provider'),\r\n hanging_root_state_provider: Reference('block_state_provider'),\r\n feature: Feature\r\n },\r\n 'minecraft:scattered_ore': OreConfig,\r\n 'minecraft:sea_pickle': {\r\n count: Common_1.IntProvider({ min: 0, max: 256 })\r\n },\r\n 'minecraft:seagrass': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:simple_block': {\r\n to_place: Reference('block_state_provider'),\r\n place_on: core_1.Opt(core_1.ListNode(Reference('block_state'))),\r\n place_in: core_1.Opt(core_1.ListNode(Reference('block_state'))),\r\n place_under: core_1.Opt(core_1.ListNode(Reference('block_state')))\r\n },\r\n 'minecraft:simple_random_selector': {\r\n features: core_1.ListNode(Feature)\r\n },\r\n 'minecraft:small_dripstone': {\r\n max_placements: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 100 })),\r\n empty_space_search_radius: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 20 })),\r\n max_offset_from_origin: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 20 })),\r\n chance_of_taller_dripstone: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:spring_feature': {\r\n state: Reference('fluid_state'),\r\n rock_count: core_1.NumberNode({ integer: true }),\r\n hole_count: core_1.NumberNode({ integer: true }),\r\n requires_block_below: core_1.BooleanNode(),\r\n valid_blocks: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:tree': {\r\n ignore_vines: core_1.Opt(core_1.BooleanNode()),\r\n force_dirt: core_1.Opt(core_1.BooleanNode()),\r\n minimum_size: Reference('feature_size'),\r\n dirt_provider: Reference('block_state_provider'),\r\n sapling_provider: Reference('block_state_provider'),\r\n trunk_provider: Reference('block_state_provider'),\r\n foliage_provider: Reference('block_state_provider'),\r\n trunk_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/trunk_placer_type' } }),\r\n base_height: core_1.NumberNode({ integer: true, min: 0, max: 32 }),\r\n height_rand_a: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n height_rand_b: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bending_trunk_placer': {\r\n bend_length: Common_1.IntProvider({ min: 1, max: 64 }),\r\n min_height_for_leaves: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n }\r\n }\r\n }, { context: 'trunk_placer' }),\r\n foliage_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/foliage_placer_type' } }),\r\n radius: Common_1.IntProvider({ min: 0, max: 16 }),\r\n offset: Common_1.IntProvider({ min: 0, max: 16 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:blob_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:bush_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:fancy_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:jungle_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:mega_pine_foliage_placer': {\r\n crown_height: Common_1.IntProvider({ min: 0, max: 24 })\r\n },\r\n 'minecraft:pine_foliage_placer': {\r\n height: Common_1.IntProvider({ min: 0, max: 24 })\r\n },\r\n 'minecraft:random_spread_foliage_placer': {\r\n foliage_height: Common_1.IntProvider({ min: 1, max: 512 }),\r\n leaf_placement_attempts: core_1.NumberNode({ integer: true, min: 0, max: 256 })\r\n },\r\n 'minecraft:spruce_foliage_placer': {\r\n trunk_height: Common_1.IntProvider({ min: 0, max: 24 })\r\n }\r\n }\r\n }, { context: 'foliage_placer', disableSwitchContext: true }),\r\n decorators: core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/tree_decorator_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alter_ground': {\r\n provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:beehive': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:cocoa': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }\r\n }\r\n }, { context: 'tree_decorator' }))\r\n },\r\n 'minecraft:underwater_magma': {\r\n floor_search_range: core_1.NumberNode({ integer: true, min: 0, max: 512 }),\r\n placement_radius_around_floor: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n placement_probability_per_valid_position: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:vegetation_patch': VegetationPatchConfig,\r\n 'minecraft:waterlogged_vegetation_patch': VegetationPatchConfig\r\n }\r\n }, { context: 'feature' })\r\n }, { context: 'feature' }), {\r\n default: () => ({\r\n type: 'minecraft:decorated',\r\n config: {\r\n decorator: {\r\n type: 'minecraft:count',\r\n config: {\r\n count: 4\r\n }\r\n },\r\n feature: {\r\n type: 'minecraft:tree',\r\n config: {\r\n max_water_depth: 0,\r\n ignore_vines: true,\r\n minimum_size: {},\r\n trunk_placer: {\r\n base_height: 5,\r\n height_rand_a: 2,\r\n height_rand_b: 0\r\n },\r\n foliage_placer: {\r\n radius: 2,\r\n offset: 0,\r\n height: 3\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('feature_size', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature_size_type' } }),\r\n min_clipped_height: core_1.Opt(core_1.NumberNode({ min: 0, max: 80 })),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:two_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 81 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n },\r\n 'minecraft:three_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n upper_limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n middle_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n }\r\n }\r\n }, { disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:two_layers_feature_size'\r\n })\r\n }));\r\n schemas.register('block_state_provider', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_state_provider_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:randomized_int_state_provider': {\r\n property: StringNode(),\r\n values: Common_1.IntProvider(),\r\n source: Reference('block_state_provider')\r\n },\r\n 'minecraft:rotated_block_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:simple_state_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:weighted_state_provider': {\r\n entries: core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n data: Reference('block_state')\r\n }), {\r\n default: () => ({\r\n data: {}\r\n })\r\n }))\r\n }\r\n }\r\n }, { context: 'block_state_provider' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_state_provider'\r\n })\r\n }));\r\n schemas.register('block_placer', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_placer_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:column_placer': {\r\n size: Common_1.IntProvider({ min: 0 })\r\n }\r\n }\r\n }, { context: 'block_placer' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_block_placer'\r\n })\r\n }));\r\n}\r\nexports.initFeatureSchemas = initFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initNoiseSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initNoiseSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('noise_settings', core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Mod(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings', isDefinition: true } }), {\r\n enabled: (path) => path.getArray().length > 0\r\n }),\r\n bedrock_roof_position: core_1.NumberNode({ integer: true }),\r\n bedrock_floor_position: core_1.NumberNode({ integer: true }),\r\n sea_level: core_1.NumberNode({ integer: true }),\r\n min_surface_level: core_1.NumberNode({ integer: true }),\r\n disable_mob_generation: core_1.BooleanNode(),\r\n noise_caves_enabled: core_1.BooleanNode(),\r\n noodle_caves_enabled: core_1.BooleanNode(),\r\n aquifers_enabled: core_1.BooleanNode(),\r\n deepslate_enabled: core_1.BooleanNode(),\r\n ore_veins_enabled: core_1.BooleanNode(),\r\n default_block: Reference('block_state'),\r\n default_fluid: Reference('block_state'),\r\n noise: core_1.ObjectNode({\r\n min_y: core_1.NumberNode({ integer: true, min: -2048, max: 2047 }),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n density_factor: core_1.NumberNode(),\r\n density_offset: core_1.NumberNode(),\r\n size_horizontal: core_1.NumberNode({ integer: true }),\r\n size_vertical: core_1.NumberNode({ integer: true }),\r\n simplex_surface_noise: core_1.BooleanNode(),\r\n random_density_offset: core_1.Opt(core_1.BooleanNode()),\r\n island_noise_override: core_1.Opt(core_1.BooleanNode()),\r\n amplified: core_1.Opt(core_1.BooleanNode()),\r\n sampling: core_1.ObjectNode({\r\n xz_scale: core_1.NumberNode(),\r\n y_scale: core_1.NumberNode(),\r\n xz_factor: core_1.NumberNode(),\r\n y_factor: core_1.NumberNode()\r\n }),\r\n bottom_slide: core_1.ObjectNode({\r\n target: core_1.NumberNode({ integer: true }),\r\n size: core_1.NumberNode({ integer: true, min: 0 }),\r\n offset: core_1.NumberNode({ integer: true })\r\n }),\r\n top_slide: core_1.ObjectNode({\r\n target: core_1.NumberNode({ integer: true }),\r\n size: core_1.NumberNode({ integer: true, min: 0 }),\r\n offset: core_1.NumberNode({ integer: true })\r\n })\r\n }),\r\n structures: Reference('generator_structures')\r\n }, { context: 'noise_settings' }), node => ({\r\n default: () => Common_1.DefaultNoiseSettings,\r\n validate: (path, value, errors, options) => {\r\n var _a, _b, _c, _d;\r\n value = node.validate(path, value, errors, options);\r\n if (((_a = value === null || value === void 0 ? void 0 : value.noise) === null || _a === void 0 ? void 0 : _a.min_y) + ((_b = value === null || value === void 0 ? void 0 : value.noise) === null || _b === void 0 ? void 0 : _b.height) > 2047) {\r\n errors.add(path.push('noise').push('height'), 'error.min_y_plus_height', 2047);\r\n }\r\n if (((_c = value === null || value === void 0 ? void 0 : value.noise) === null || _c === void 0 ? void 0 : _c.height) % 16 !== 0) {\r\n errors.add(path.push('noise').push('height'), 'error.height_multiple', 16);\r\n }\r\n if (((_d = value === null || value === void 0 ? void 0 : value.noise) === null || _d === void 0 ? void 0 : _d.min_y) % 16 !== 0) {\r\n errors.add(path.push('noise').push('min_y'), 'error.min_y_multiple', 16);\r\n }\r\n return value;\r\n }\r\n })));\r\n schemas.register('generator_structures', core_1.ObjectNode({\r\n stronghold: core_1.Opt(core_1.ObjectNode({\r\n distance: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n spread: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n count: core_1.NumberNode({ integer: true, min: 1, max: 4095 })\r\n })),\r\n structures: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }), core_1.Mod(core_1.ObjectNode({\r\n spacing: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n separation: core_1.Mod(core_1.NumberNode({ integer: true, min: 0, max: 4096 }), (node) => ({\r\n validate: (path, value, errors, options) => {\r\n if (path.pop().push('spacing').get() <= value) {\r\n errors.add(path, 'error.separation_smaller_spacing');\r\n }\r\n return node.validate(path, value, errors, options);\r\n }\r\n })),\r\n salt: core_1.NumberNode({ integer: true, min: 0 })\r\n }, { context: 'generator_structure' }), {\r\n default: () => ({\r\n spacing: 10,\r\n separation: 5,\r\n salt: 0\r\n })\r\n }))\r\n }));\r\n schemas.register('generator_layer', core_1.Mod(core_1.ObjectNode({\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n height: core_1.NumberNode({ integer: true, min: 1 })\r\n }), {\r\n default: () => ({\r\n block: 'minecraft:stone',\r\n height: 1\r\n })\r\n }));\r\n}\r\nexports.initNoiseSettingsSchemas = initNoiseSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initStructureFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initStructureFeatureSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const templatePoolConfig = {\r\n start_pool: StringNode({ validator: 'resource', params: { pool: '$worldgen/template_pool' } }),\r\n size: core_1.NumberNode({ integer: true })\r\n };\r\n schemas.register('configured_structure_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bastion_remnant': templatePoolConfig,\r\n 'minecraft:buried_treasure': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:mineshaft': {\r\n type: StringNode({ enum: ['normal', 'mesa'] }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:nether_fossil': {\r\n height: Reference('height_provider')\r\n },\r\n 'minecraft:ocean_ruin': {\r\n biome_temp: StringNode({ enum: ['cold', 'warm'] }),\r\n large_probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n cluster_probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:pillager_outpost': templatePoolConfig,\r\n 'minecraft:ruined_portal': {\r\n portal_type: StringNode({ enum: ['standard', 'desert', 'jungle', 'mountain', 'nether', 'ocean', 'swamp'] })\r\n },\r\n 'minecraft:shipwreck': {\r\n is_beached: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:village': templatePoolConfig\r\n }\r\n }, { context: 'structure_feature', disableSwitchContext: true })\r\n }, { context: 'structure_feature' }), {\r\n default: () => ({\r\n type: 'minecraft:bastion_remnant',\r\n config: {\r\n start_pool: 'minecraft:bastion/starts',\r\n size: 6\r\n }\r\n })\r\n }));\r\n}\r\nexports.initStructureFeatureSchemas = initStructureFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSurfaceBuilderSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initSurfaceBuilderSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('configured_surface_builder', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/surface_builder' } }),\r\n config: core_1.ObjectNode({\r\n top_material: Reference('block_state'),\r\n under_material: Reference('block_state'),\r\n underwater_material: Reference('block_state'),\r\n }, { context: 'surface_builder' })\r\n }, { context: 'surface_builder' }), {\r\n default: () => ({\r\n type: 'minecraft:default',\r\n config: {\r\n top_material: {\r\n Name: 'minecraft:grass_block',\r\n Properties: {\r\n snowy: 'false'\r\n }\r\n },\r\n under_material: {\r\n Name: 'minecraft:dirt'\r\n },\r\n underwater_material: {\r\n Name: 'minecraft:gravel'\r\n }\r\n }\r\n })\r\n }));\r\n}\r\nexports.initSurfaceBuilderSchemas = initSurfaceBuilderSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTemplatePoolSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nrequire(\"./ProcessorList\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nfunction initTemplatePoolSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('template_pool', core_1.Mod(core_1.ObjectNode({\r\n name: StringNode(),\r\n fallback: StringNode(),\r\n elements: core_1.ListNode(Reference('template_weighted_element'))\r\n }, { context: 'template_pool' }), {\r\n default: () => ({\r\n fallback: 'minecraft:empty',\r\n elements: [\r\n {\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n }\r\n ]\r\n })\r\n }));\r\n schemas.register('template_weighted_element', core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n element: Reference('template_element')\r\n }, { category: 'pool' }), {\r\n default: () => ({\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n })\r\n }));\r\n schemas.register('template_element', core_1.Mod(core_1.ObjectNode({\r\n element_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_pool_element' } }),\r\n projection: StringNode({ enum: ['rigid', 'terrain_matching'] }),\r\n [core_1.Switch]: [{ push: 'element_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:feature_pool_element': {\r\n feature: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n 'minecraft:legacy_single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: ProcessorList_1.Processors\r\n },\r\n 'minecraft:list_pool_element': {\r\n elements: core_1.ListNode(Reference('template_element'))\r\n },\r\n 'minecraft:single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: ProcessorList_1.Processors\r\n }\r\n }\r\n }, { context: 'template_element', disableSwitchContext: true }), {\r\n default: () => ({\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n })\r\n }));\r\n}\r\nexports.initTemplatePoolSchemas = initTemplatePoolSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldgenSchemas = void 0;\r\nconst Biome_1 = require(\"./Biome\");\r\nconst Carver_1 = require(\"./Carver\");\r\nconst Decorator_1 = require(\"./Decorator\");\r\nconst Feature_1 = require(\"./Feature\");\r\nconst NoiseSettings_1 = require(\"./NoiseSettings\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nconst StructureFeature_1 = require(\"./StructureFeature\");\r\nconst SurfaceBuilder_1 = require(\"./SurfaceBuilder\");\r\nconst TemplatePool_1 = require(\"./TemplatePool\");\r\nfunction initWorldgenSchemas(schemas, collections) {\r\n // `ProcessorList.ts` has exports. It should be initialized first. \r\n ProcessorList_1.initProcessorListSchemas(schemas, collections);\r\n Biome_1.initBiomeSchemas(schemas, collections);\r\n Carver_1.initCarverSchemas(schemas, collections);\r\n Decorator_1.initDecoratorSchemas(schemas, collections);\r\n Feature_1.initFeatureSchemas(schemas, collections);\r\n NoiseSettings_1.initNoiseSettingsSchemas(schemas, collections);\r\n StructureFeature_1.initStructureFeatureSchemas(schemas, collections);\r\n SurfaceBuilder_1.initSurfaceBuilderSchemas(schemas, collections);\r\n TemplatePool_1.initTemplatePoolSchemas(schemas, collections);\r\n}\r\nexports.initWorldgenSchemas = initWorldgenSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initWorldSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('world_settings', core_1.Mod(core_1.ObjectNode({\r\n generate_features: core_1.BooleanNode(),\r\n bonus_chest: core_1.BooleanNode(),\r\n seed: core_1.NumberNode({ integer: true }),\r\n dimensions: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$dimension' } }), Reference('dimension'))\r\n }, { context: 'world_settings' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n generate_features: true,\r\n bonus_chest: false,\r\n seed,\r\n dimensions: {\r\n 'minecraft:overworld': {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:vanilla_layered',\r\n seed\r\n },\r\n settings: 'minecraft:overworld',\r\n }\r\n },\r\n 'minecraft:the_nether': {\r\n type: 'minecraft:the_nether',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:multi_noise',\r\n seed,\r\n humidity_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n altitude_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n weirdness_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n temperature_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n biomes: [\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: 0.0 },\r\n biome: 'minecraft:nether_wastes'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: -0.5 },\r\n biome: 'minecraft:soul_sand_valley'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.4, humidity: 0.0 },\r\n biome: 'minecraft:crimson_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.375, temperature: 0.0, humidity: 0.5 },\r\n biome: 'minecraft:warped_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.175, temperature: -0.5, humidity: 0.0 },\r\n biome: 'minecraft:basalt_deltas'\r\n }\r\n ]\r\n },\r\n settings: 'minecraft:nether'\r\n }\r\n },\r\n 'minecraft:the_end': {\r\n type: \"minecraft:the_end\",\r\n generator: {\r\n type: \"minecraft:noise\",\r\n seed,\r\n biome_source: {\r\n type: \"minecraft:the_end\",\r\n seed\r\n },\r\n settings: \"minecraft:end\"\r\n }\r\n }\r\n }\r\n };\r\n }\r\n }));\r\n}\r\nexports.initWorldSettingsSchemas = initWorldSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSchemas = void 0;\r\nconst Advancement_1 = require(\"./Advancement\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Condition_1 = require(\"./Condition\");\r\nconst Dimension_1 = require(\"./Dimension\");\r\nconst DimensionType_1 = require(\"./DimensionType\");\r\nconst ItemModifier_1 = require(\"./ItemModifier\");\r\nconst LootTable_1 = require(\"./LootTable\");\r\nconst PackMcmeta_1 = require(\"./PackMcmeta\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nconst Recipe_1 = require(\"./Recipe\");\r\nconst Tags_1 = require(\"./Tags\");\r\nconst TextComponent_1 = require(\"./TextComponent\");\r\nconst worldgen_1 = require(\"./worldgen\");\r\nconst WorldSettings_1 = require(\"./WorldSettings\");\r\nfunction initSchemas(schemas, collections) {\r\n // `Common.ts` is the only file that has exports. It should be initialized first. \r\n Common_1.initCommonSchemas(schemas, collections);\r\n Advancement_1.initAdvancementSchemas(schemas, collections);\r\n Condition_1.initConditionSchemas(schemas, collections);\r\n DimensionType_1.initDimensionTypeSchemas(schemas, collections);\r\n Dimension_1.initDimensionSchemas(schemas, collections);\r\n ItemModifier_1.initItemModifierSchemas(schemas, collections);\r\n LootTable_1.initLootTableSchemas(schemas, collections);\r\n PackMcmeta_1.initPackMcmetaSchemas(schemas, collections);\r\n Predicates_1.initPredicatesSchemas(schemas, collections);\r\n Recipe_1.initRecipeSchemas(schemas, collections);\r\n Tags_1.initTagsSchemas(schemas, collections);\r\n TextComponent_1.initTextComponentSchemas(schemas, collections);\r\n worldgen_1.initWorldgenSchemas(schemas, collections);\r\n WorldSettings_1.initWorldSettingsSchemas(schemas, collections);\r\n}\r\nexports.initSchemas = initSchemas;\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getSchemas = exports.getCollections = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Collections_1 = require(\"./Collections\");\r\nconst schemas_1 = require(\"./schemas\");\r\nexports.lootContext = __importStar(require(\"./LootContext\"));\r\nfunction getCollections() {\r\n const collections = new core_1.CollectionRegistry();\r\n Collections_1.initCollections(collections);\r\n return collections;\r\n}\r\nexports.getCollections = getCollections;\r\n/**\r\n * @param collections The CollectionRegistry for this version. Note that apart from\r\n * the built-in collections, the client of this module is responsible for futhermore\r\n * adding the vanilla registries to it: the collection IDs shouldn't contain the\r\n * namespace (`minecraft:`) part, while the values within the collections should.\r\n *\r\n * @example\r\n * for (const key in VANILLA_REGISTRIES>) {\r\n * collections.register(\r\n * key.replace(/^minecraft:/, ''),\r\n * Object.keys(VANILLA_REGISTRIES[key].entries)\r\n * )\r\n * }\r\n */\r\nfunction getSchemas(collections) {\r\n const schemas = new core_1.SchemaRegistry();\r\n schemas_1.initSchemas(schemas, collections);\r\n return schemas;\r\n}\r\nexports.getSchemas = getSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCollections = void 0;\r\nfunction initCollections(collections) {\r\n collections.register('advancement_trigger', [\r\n 'minecraft:bee_nest_destroyed',\r\n 'minecraft:bred_animals',\r\n 'minecraft:brewed_potion',\r\n 'minecraft:changed_dimension',\r\n 'minecraft:channeled_lightning',\r\n 'minecraft:construct_beacon',\r\n 'minecraft:consume_item',\r\n 'minecraft:cured_zombie_villager',\r\n 'minecraft:effects_changed',\r\n 'minecraft:enchanted_item',\r\n 'minecraft:enter_block',\r\n 'minecraft:entity_hurt_player',\r\n 'minecraft:entity_killed_player',\r\n 'minecraft:fall_from_height',\r\n 'minecraft:filled_bucket',\r\n 'minecraft:fishing_rod_hooked',\r\n 'minecraft:hero_of_the_village',\r\n 'minecraft:impossible',\r\n 'minecraft:inventory_changed',\r\n 'minecraft:item_durability_changed',\r\n 'minecraft:item_used_on_block',\r\n 'minecraft:killed_by_crossbow',\r\n 'minecraft:levitation',\r\n 'minecraft:lightning_strike',\r\n 'minecraft:location',\r\n 'minecraft:nether_travel',\r\n 'minecraft:placed_block',\r\n 'minecraft:player_generates_container_loot',\r\n 'minecraft:player_hurt_entity',\r\n 'minecraft:player_interacted_with_entity',\r\n 'minecraft:player_killed_entity',\r\n 'minecraft:recipe_unlocked',\r\n 'minecraft:ride_entity_in_lava',\r\n 'minecraft:shot_crossbow',\r\n 'minecraft:slept_in_bed',\r\n 'minecraft:slide_down_block',\r\n 'minecraft:started_riding',\r\n 'minecraft:summoned_entity',\r\n 'minecraft:tame_animal',\r\n 'minecraft:target_hit',\r\n 'minecraft:tick',\r\n 'minecraft:thrown_item_picked_up_by_entity',\r\n 'minecraft:used_ender_eye',\r\n 'minecraft:used_totem',\r\n 'minecraft:using_item',\r\n 'minecraft:villager_trade',\r\n 'minecraft:voluntary_exile'\r\n ]);\r\n collections.register('keybind', [\r\n 'key.advancements',\r\n 'key.attack',\r\n 'key.back',\r\n 'key.chat',\r\n 'key.command',\r\n 'key.drop',\r\n 'key.forward',\r\n 'key.fullscreen',\r\n 'key.hotbar.1',\r\n 'key.hotbar.2',\r\n 'key.hotbar.3',\r\n 'key.hotbar.4',\r\n 'key.hotbar.5',\r\n 'key.hotbar.6',\r\n 'key.hotbar.7',\r\n 'key.hotbar.8',\r\n 'key.hotbar.9',\r\n 'key.inventory',\r\n 'key.jump',\r\n 'key.left',\r\n 'key.loadToolbarActivator',\r\n 'key.pickItem',\r\n 'key.playerlist',\r\n 'key.right',\r\n 'key.saveToolbarActivator',\r\n 'key.screenshot',\r\n 'key.smoothCamera',\r\n 'key.sneak',\r\n 'key.spectatorOutlines',\r\n 'key.sprint',\r\n 'key.swapOffhand',\r\n 'key.togglePerspective',\r\n 'key.use'\r\n ]);\r\n collections.register('slot', [\r\n 'mainhand',\r\n 'offhand',\r\n 'head',\r\n 'chest',\r\n 'legs',\r\n 'feet'\r\n ]);\r\n collections.register('gamemode', [\r\n 'survival',\r\n 'creative',\r\n 'adventure',\r\n 'spectator'\r\n ]);\r\n collections.register('entity_source', [\r\n 'this',\r\n 'killer',\r\n 'direct_killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('copy_source', [\r\n 'block_entity',\r\n 'this',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('loot_table_apply_bonus_formula', [\r\n 'minecraft:uniform_bonus_count',\r\n 'minecraft:binomial_with_bonus_count',\r\n 'minecraft:ore_drops'\r\n ]);\r\n collections.register('map_decoration', [\r\n 'mansion',\r\n 'monument',\r\n 'player',\r\n 'frame',\r\n 'red_marker',\r\n 'blue_marker',\r\n 'target_x',\r\n 'target_point',\r\n 'player_off_map',\r\n 'player_off_limits',\r\n 'red_x',\r\n 'banner_white',\r\n 'banner_orange',\r\n 'banner_magenta',\r\n 'banner_light_blue',\r\n 'banner_yellow',\r\n 'banner_lime',\r\n 'banner_pink',\r\n 'banner_gray',\r\n 'banner_light_gray',\r\n 'banner_cyan',\r\n 'banner_purple',\r\n 'banner_blue',\r\n 'banner_brown',\r\n 'banner_green',\r\n 'banner_red',\r\n 'banner_black'\r\n ]);\r\n collections.register('map_feature', [\r\n 'bastion_remnant',\r\n 'buried_treasure',\r\n 'desert_pyramid',\r\n 'endcity',\r\n 'fortress',\r\n 'igloo',\r\n 'jungle_pyramid',\r\n 'mansion',\r\n 'mineshaft',\r\n 'monument',\r\n 'nether_fossil',\r\n 'ocean_ruin',\r\n 'pillager_outpost',\r\n 'ruined_portal',\r\n 'shipwreck',\r\n 'stronghold',\r\n 'swamp_hut',\r\n 'village'\r\n ]);\r\n collections.register('recipe_group', [\r\n 'bed',\r\n 'light_gray_dye',\r\n 'iron_ingot',\r\n 'wooden_stairs',\r\n 'black_dye',\r\n 'stained_terracotta',\r\n 'dyed_bed',\r\n 'magenta_dye',\r\n 'bark',\r\n 'rabbit_stew',\r\n 'light_blue_dye',\r\n 'wooden_fence_gate',\r\n 'planks',\r\n 'stained_glass',\r\n 'wooden_door',\r\n 'stained_glass_pane',\r\n 'wooden_fence',\r\n 'sticks',\r\n 'concrete_powder',\r\n 'wooden_pressure_plate',\r\n 'boat',\r\n 'brown_dye',\r\n 'yellow_dye',\r\n 'bonemeal',\r\n 'red_dye',\r\n 'wooden_trapdoor',\r\n 'wooden_button',\r\n 'gold_ingot',\r\n 'pink_dye',\r\n 'wooden_slab',\r\n 'orange_dye',\r\n 'carpet',\r\n 'sign',\r\n 'wool',\r\n 'sugar',\r\n 'blue_dye',\r\n 'white_dye',\r\n 'banner',\r\n 'netherite_ingot'\r\n ]);\r\n collections.register('biome_category', [\r\n 'beach',\r\n 'desert',\r\n 'extreme_hills',\r\n 'forest',\r\n 'icy',\r\n 'jungle',\r\n 'mesa',\r\n 'mountain',\r\n 'mushroom',\r\n 'nether',\r\n 'none',\r\n 'ocean',\r\n 'plains',\r\n 'river',\r\n 'savanna',\r\n 'swamp',\r\n 'taiga',\r\n 'the_end',\r\n 'underground'\r\n ]);\r\n collections.register('heightmap_type', [\r\n 'MOTION_BLOCKING',\r\n 'MOTION_BLOCKING_NO_LEAVES',\r\n 'OCEAN_FLOOR',\r\n 'OCEAN_FLOOR_WG',\r\n 'WORLD_SURFACE',\r\n 'WORLD_SURFACE_WG'\r\n ]);\r\n collections.register('generation_step', [\r\n 'air',\r\n 'liquid'\r\n ]);\r\n collections.register('loot_context_type', [\r\n 'minecraft:empty',\r\n 'minecraft:chest',\r\n 'minecraft:command',\r\n 'minecraft:selector',\r\n 'minecraft:fishing',\r\n 'minecraft:entity',\r\n 'minecraft:gift',\r\n 'minecraft:barter',\r\n 'minecraft:advancement_reward',\r\n 'minecraft:advancement_entity',\r\n 'minecraft:generic',\r\n 'minecraft:block'\r\n ]);\r\n collections.register('banner_pattern', [\r\n 'base',\r\n 'square_bottom_left',\r\n 'square_bottom_right',\r\n 'square_top_left',\r\n 'square_top_right',\r\n 'stripe_bottom',\r\n 'stripe_top',\r\n 'stripe_left',\r\n 'stripe_right',\r\n 'stripe_center',\r\n 'stripe_middle',\r\n 'stripe_downright',\r\n 'stripe_downleft',\r\n 'small_stripes',\r\n 'cross',\r\n 'straight_cross',\r\n 'triangle_bottom',\r\n 'triangle_top',\r\n 'triangles_bottom',\r\n 'triangles_top',\r\n 'diagonal_left',\r\n 'diagonal_up_right',\r\n 'diagonal_up_left',\r\n 'diagonal_right',\r\n 'circle',\r\n 'rhombus',\r\n 'half_vertical',\r\n 'half_horizontal',\r\n 'half_vertical_right',\r\n 'half_horizontal_bottom',\r\n 'border',\r\n 'curly_border',\r\n 'gradient',\r\n 'gradient_up',\r\n 'bricks',\r\n 'globe',\r\n 'creeper',\r\n 'skull',\r\n 'flower',\r\n 'mojang',\r\n 'piglin'\r\n ]);\r\n collections.register('dye_color', [\r\n 'white',\r\n 'orange',\r\n 'magenta',\r\n 'light_blue',\r\n 'yellow',\r\n 'lime',\r\n 'pink',\r\n 'gray',\r\n 'light_gray',\r\n 'cyan',\r\n 'purple',\r\n 'blue',\r\n 'brown',\r\n 'green',\r\n 'red',\r\n 'black'\r\n ]);\r\n collections.register('cave_surface', [\r\n 'floor',\r\n 'ceiling'\r\n ]);\r\n}\r\nexports.initCollections = initCollections;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initAdvancementSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initAdvancementSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const EntityPredicate = core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.Opt(Reference('entity_predicate')),\r\n change: v => { var _a, _b; return (_b = (_a = v[0]) === null || _a === void 0 ? void 0 : _a.predicate) !== null && _b !== void 0 ? _b : ({}); }\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('condition')),\r\n change: v => [{\r\n condition: 'minecraft:entity_properties',\r\n predicate: v\r\n }]\r\n }\r\n ], { context: 'conditions' });\r\n schemas.register('advancement', core_1.Mod(core_1.ObjectNode({\r\n display: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n icon: core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } }))\r\n }),\r\n title: Reference('text_component'),\r\n description: Reference('text_component'),\r\n background: core_1.Opt(StringNode()),\r\n frame: core_1.Opt(StringNode({ enum: ['task', 'challenge', 'goal'] })),\r\n show_toast: core_1.Opt(core_1.BooleanNode()),\r\n announce_to_chat: core_1.Opt(core_1.BooleanNode()),\r\n hidden: core_1.Opt(core_1.BooleanNode())\r\n }), {\r\n default: () => ({\r\n icon: {\r\n item: 'minecraft:stone'\r\n },\r\n title: '',\r\n description: ''\r\n })\r\n })),\r\n parent: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$advancement' } })),\r\n criteria: core_1.MapNode(StringNode(), Reference('advancement_criteria')),\r\n requirements: core_1.Opt(core_1.ListNode(core_1.ListNode(StringNode() // TODO: add validation\r\n ))),\r\n rewards: core_1.Opt(core_1.ObjectNode({\r\n function: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$function' } })),\r\n loot: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$loot_table' } }))),\r\n recipes: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }))),\r\n experience: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n })),\r\n }, { context: 'advancement' }), {\r\n default: () => ({\r\n criteria: {\r\n requirement: {\r\n trigger: 'minecraft:location'\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('advancement_criteria', core_1.ObjectNode({\r\n trigger: StringNode({ validator: 'resource', params: { pool: collections.get('advancement_trigger') } }),\r\n conditions: core_1.Opt(core_1.ObjectNode({\r\n player: core_1.Mod(EntityPredicate, {\r\n enabled: path => path.pop().push('trigger').get() !== 'minecraft:impossible'\r\n }),\r\n [core_1.Switch]: ['pop', { push: 'trigger' }],\r\n [core_1.Case]: {\r\n 'minecraft:bee_nest_destroyed': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n num_bees_inside: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:bred_animals': {\r\n parent: EntityPredicate,\r\n partner: EntityPredicate,\r\n child: EntityPredicate\r\n },\r\n 'minecraft:brewed_potion': {\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } }))\r\n },\r\n 'minecraft:changed_dimension': {\r\n from: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n to: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } }))\r\n },\r\n 'minecraft:channeled_lightning': {\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:construct_beacon': {\r\n level: Reference('int_bounds')\r\n },\r\n 'minecraft:consume_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:cured_zombie_villager': {\r\n villager: EntityPredicate,\r\n zombie: EntityPredicate\r\n },\r\n 'minecraft:effects_changed': {\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), core_1.ObjectNode({\r\n amplifier: Reference('int_bounds'),\r\n duration: Reference('int_bounds')\r\n }))),\r\n source: core_1.Opt(EntityPredicate)\r\n },\r\n 'minecraft:enter_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n },\r\n 'minecraft:enchanted_item': {\r\n levels: Reference('int_bounds'),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:entity_hurt_player': {\r\n damage: core_1.Opt(Reference('damage_predicate'))\r\n },\r\n 'minecraft:entity_killed_player': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:fall_from_height': {\r\n start_position: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate'))\r\n },\r\n 'minecraft:filled_bucket': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:fishing_rod_hooked': {\r\n entity: EntityPredicate,\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:hero_of_the_village': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:inventory_changed': {\r\n slots: core_1.Opt(core_1.ObjectNode({\r\n empty: Reference('int_bounds'),\r\n occupied: Reference('int_bounds'),\r\n full: Reference('int_bounds')\r\n })),\r\n items: core_1.Opt(core_1.ListNode(Reference('item_predicate')))\r\n },\r\n 'minecraft:item_durability_changed': {\r\n delta: Reference('int_bounds'),\r\n durability: Reference('int_bounds'),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:item_used_on_block': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:killed_by_crossbow': {\r\n unique_entity_types: Reference('int_bounds'),\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:levitation': {\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n duration: Reference('int_bounds')\r\n },\r\n 'minecraft:lightning_strike': {\r\n lightning: EntityPredicate,\r\n bystander: EntityPredicate,\r\n },\r\n 'minecraft:location': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:nether_travel': {\r\n start_position: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n },\r\n 'minecraft:placed_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })),\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:player_generates_container_loot': {\r\n loot_table: StringNode({ validator: 'resource', params: { pool: '$loot_table' } })\r\n },\r\n 'minecraft:player_hurt_entity': {\r\n damage: core_1.Opt(Reference('damage_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_interacted_with_entity': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_killed_entity': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:recipe_unlocked': {\r\n recipe: StringNode({ validator: 'resource', params: { pool: '$recipe' } })\r\n },\r\n 'minecraft:ride_entity_in_lava': {\r\n start_position: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate'))\r\n },\r\n 'minecraft:slept_in_bed': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:slide_down_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:shot_crossbow': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:summoned_entity': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:tame_animal': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:target_hit': {\r\n projectile: EntityPredicate,\r\n shooter: EntityPredicate,\r\n signal_strength: Reference('int_bounds')\r\n },\r\n 'minecraft:thrown_item_picked_up_by_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:used_ender_eye': {\r\n distance: core_1.Opt(Reference('float_bounds'))\r\n },\r\n 'minecraft:used_totem': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:using_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:villager_trade': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:voluntary_exile': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n }\r\n }\r\n }, { context: 'criterion' }))\r\n }, { category: 'predicate', context: 'criterion' }));\r\n}\r\nexports.initAdvancementSchemas = initAdvancementSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCommonSchemas = exports.InclusiveRange = exports.IntProvider = exports.FloatProvider = exports.NoiseSettingsPresets = exports.DefaultNoiseSettings = exports.DimensionTypePresets = exports.DefaultDimensionType = exports.FunctionCases = exports.ConditionCases = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nexports.DefaultDimensionType = {\r\n ultrawarm: false,\r\n natural: true,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: true,\r\n has_raids: true,\r\n has_skylight: true,\r\n has_ceiling: false,\r\n coordinate_scale: 1,\r\n ambient_light: 0,\r\n logical_height: 256,\r\n infiniburn: 'minecraft:infiniburn_overworld',\r\n min_y: 0,\r\n height: 256,\r\n};\r\nconst DefaultStructureSettings = {\r\n 'minecraft:igloo': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 14357618\r\n },\r\n 'minecraft:mansion': {\r\n spacing: 80,\r\n separation: 20,\r\n salt: 10387319\r\n },\r\n 'minecraft:jungle_pyramid': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 14357619\r\n },\r\n 'minecraft:nether_fossil': {\r\n spacing: 2,\r\n separation: 1,\r\n salt: 14357921\r\n },\r\n 'minecraft:stronghold': {\r\n spacing: 1,\r\n separation: 0,\r\n salt: 0\r\n },\r\n 'minecraft:shipwreck': {\r\n spacing: 24,\r\n separation: 4,\r\n salt: 165745295\r\n },\r\n 'minecraft:mineshaft': {\r\n spacing: 1,\r\n separation: 0,\r\n salt: 0\r\n },\r\n 'minecraft:desert_pyramid': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 14357617\r\n },\r\n 'minecraft:ruined_portal': {\r\n spacing: 40,\r\n separation: 15,\r\n salt: 34222645\r\n },\r\n 'minecraft:fortress': {\r\n spacing: 27,\r\n separation: 4,\r\n salt: 30084232\r\n },\r\n 'minecraft:pillager_outpost': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 165745296\r\n },\r\n 'minecraft:village': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 10387312\r\n },\r\n 'minecraft:endcity': {\r\n spacing: 20,\r\n separation: 11,\r\n salt: 10387313\r\n },\r\n 'minecraft:buried_treasure': {\r\n spacing: 1,\r\n separation: 0,\r\n salt: 0\r\n },\r\n 'minecraft:ocean_ruin': {\r\n spacing: 20,\r\n separation: 8,\r\n salt: 14357621\r\n },\r\n 'minecraft:bastion_remnant': {\r\n spacing: 27,\r\n separation: 4,\r\n salt: 30084232\r\n },\r\n 'minecraft:swamp_hut': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 14357620\r\n },\r\n 'minecraft:monument': {\r\n spacing: 32,\r\n separation: 5,\r\n salt: 10387313\r\n }\r\n};\r\nexports.DefaultNoiseSettings = {\r\n bedrock_roof_position: -2147483648,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n noise_caves_enabled: true,\r\n deepslate_enabled: true,\r\n ore_veins_enabled: true,\r\n noodle_caves_enabled: true,\r\n disable_mob_generation: false,\r\n aquifers_enabled: true,\r\n default_block: {\r\n Name: 'minecraft:stone'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:water'\r\n },\r\n noise: {\r\n min_y: -64,\r\n height: 384,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n density_factor: 1,\r\n density_offset: -0.51875,\r\n top_slide: {\r\n target: -0.078125,\r\n size: 2,\r\n offset: 8\r\n },\r\n bottom_slide: {\r\n target: 0.1171875,\r\n size: 3,\r\n offset: 0\r\n },\r\n sampling: {\r\n xz_scale: 0.9999999814507745,\r\n y_scale: 0.9999999814507745,\r\n xz_factor: 80,\r\n y_factor: 160\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n stronghold: {\r\n distance: 32,\r\n spread: 3,\r\n count: 128\r\n },\r\n structures: DefaultStructureSettings,\r\n }\r\n};\r\nfunction initCommonSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('block_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'Name' }] } } }))\r\n }, { context: 'block_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('fluid_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'fluid' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode()))\r\n }, { context: 'fluid_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:water',\r\n Properties: {\r\n 'level': '0'\r\n }\r\n })\r\n }));\r\n schemas.register('block_pos', core_1.Mod(core_1.ListNode(core_1.NumberNode({ integer: true }), { minLength: 3, maxLength: 3 }), {\r\n default: () => [0, 0, 0]\r\n }));\r\n const Bounds = (integer) => core_1.Opt(core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer }),\r\n change: (v) => { var _a, _b; return v === undefined ? 0 : (_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : 0; }\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer })),\r\n max: core_1.Opt(core_1.NumberNode({ integer }))\r\n }, { context: 'range' }),\r\n change: (v) => ({\r\n min: v !== null && v !== void 0 ? v : 0,\r\n max: v !== null && v !== void 0 ? v : 0\r\n })\r\n }\r\n ]));\r\n schemas.register('int_bounds', Bounds(true));\r\n schemas.register('float_bounds', Bounds());\r\n schemas.register('int_range', core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(Reference('number_provider')),\r\n max: core_1.Opt(Reference('number_provider'))\r\n })\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer: true })\r\n }\r\n ], { context: 'range' }));\r\n const ObjectWithType = (pool, directType, directPath, directDefault, objectDefault, context, cases) => {\r\n let defaultCase = {};\r\n if (objectDefault) {\r\n Object.keys(cases[objectDefault]).forEach(k => {\r\n defaultCase[k] = core_1.Mod(cases[objectDefault][k], {\r\n enabled: path => path.push('type').get() === undefined\r\n });\r\n });\r\n }\r\n const provider = core_1.ObjectNode({\r\n type: core_1.Mod(core_1.Opt(StringNode({ validator: 'resource', params: { pool } })), {\r\n hidden: () => true\r\n }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: cases,\r\n ...defaultCase\r\n }, { context, disableSwitchContext: true });\r\n const choices = [{\r\n type: directType,\r\n node: cases[directDefault][directPath]\r\n }];\r\n if (objectDefault) {\r\n choices.push({\r\n type: 'object',\r\n priority: -1,\r\n node: provider\r\n });\r\n }\r\n Object.keys(cases).forEach(k => {\r\n choices.push({\r\n type: k,\r\n match: (v) => {\r\n var _a;\r\n const type = 'minecraft:' + ((_a = v === null || v === void 0 ? void 0 : v.type) === null || _a === void 0 ? void 0 : _a.replace(/^minecraft:/, ''));\r\n if (type === k)\r\n return true;\r\n const keys = v ? Object.keys(v) : [];\r\n return typeof v === 'object' && ((keys === null || keys === void 0 ? void 0 : keys.length) === 0 || ((keys === null || keys === void 0 ? void 0 : keys.length) === 1 && (keys === null || keys === void 0 ? void 0 : keys[0]) === 'type'));\r\n },\r\n node: provider,\r\n change: (v) => ({ type: k })\r\n });\r\n });\r\n return core_1.ChoiceNode(choices, { context, choiceContext: `${context}.type` });\r\n };\r\n schemas.register('number_provider', ObjectWithType('loot_number_provider_type', 'number', 'value', 'minecraft:constant', 'minecraft:uniform', 'number_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode()\r\n },\r\n 'minecraft:uniform': {\r\n min: Reference('number_provider'),\r\n max: Reference('number_provider')\r\n },\r\n 'minecraft:binomial': {\r\n n: Reference('number_provider'),\r\n p: Reference('number_provider')\r\n },\r\n 'minecraft:score': {\r\n target: Reference('scoreboard_name_provider'),\r\n score: StringNode({ validator: 'objective' }),\r\n scale: core_1.Opt(core_1.NumberNode())\r\n }\r\n }));\r\n schemas.register('scoreboard_name_provider', ObjectWithType('loot_score_provider_type', 'string', 'target', 'minecraft:context', null, 'score_provider', {\r\n 'minecraft:fixed': {\r\n name: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities', isScoreHolder: true } }) // FIXME: doesn't support selectors\r\n },\r\n 'minecraft:context': {\r\n target: core_1.Mod(StringNode({ enum: 'entity_source' }), { default: () => 'this' })\r\n }\r\n }));\r\n schemas.register('nbt_provider', ObjectWithType('loot_nbt_provider_type', 'string', 'target', 'minecraft:context', null, 'nbt_provider', {\r\n 'minecraft:storage': {\r\n source: StringNode({ validator: 'resource', params: { pool: '$storage' } })\r\n },\r\n 'minecraft:context': {\r\n target: core_1.Mod(StringNode({ enum: 'copy_source' }), { default: () => 'this' })\r\n }\r\n }));\r\n exports.FloatProvider = (config) => ObjectWithType('float_provider_type', 'number', 'value', 'minecraft:constant', null, 'float_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode(config)\r\n },\r\n 'minecraft:uniform': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode(config),\r\n max_exclusive: core_1.NumberNode(config)\r\n })\r\n },\r\n 'minecraft:clamped_normal': {\r\n value: core_1.ObjectNode({\r\n min: core_1.NumberNode(),\r\n max: core_1.NumberNode(),\r\n mean: core_1.NumberNode(),\r\n deviation: core_1.NumberNode()\r\n })\r\n },\r\n 'minecraft:trapezoid': {\r\n value: core_1.ObjectNode({\r\n min: core_1.NumberNode(),\r\n max: core_1.NumberNode(),\r\n plateau: core_1.NumberNode()\r\n })\r\n }\r\n });\r\n schemas.register('float_provider', exports.FloatProvider());\r\n exports.IntProvider = (config) => ObjectWithType('int_provider_type', 'number', 'value', 'minecraft:constant', null, 'int_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode({ integer: true, ...config })\r\n },\r\n 'minecraft:uniform': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config })\r\n })\r\n },\r\n 'minecraft:biased_to_bottom': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config })\r\n })\r\n },\r\n 'minecraft:clamped': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n source: Reference('int_provider')\r\n })\r\n },\r\n 'minecraft:clamped_normal': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n mean: core_1.NumberNode(),\r\n deviation: core_1.NumberNode()\r\n })\r\n },\r\n 'minecraft:weighted_list': {\r\n distribution: core_1.ListNode(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true }),\r\n data: Reference('int_provider'),\r\n }))\r\n }\r\n });\r\n schemas.register('int_provider', exports.IntProvider());\r\n schemas.register('vertical_anchor', core_1.ChoiceNode(['absolute', 'above_bottom', 'below_top'].map(t => ({\r\n type: t,\r\n match: v => (v === null || v === void 0 ? void 0 : v[t]) !== undefined,\r\n change: v => { var _a, _b, _c; return ({ [t]: (_c = (_b = (_a = v.absolute) !== null && _a !== void 0 ? _a : v.above_bottom) !== null && _b !== void 0 ? _b : v.below_top) !== null && _c !== void 0 ? _c : 0 }); },\r\n node: core_1.ObjectNode({\r\n [t]: core_1.NumberNode({ integer: true, min: -2048, max: 2047 })\r\n })\r\n })), { context: 'vertical_anchor' }));\r\n schemas.register('height_provider', ObjectWithType('height_provider_type', 'number', 'value', 'minecraft:constant', null, 'height_provider', {\r\n 'minecraft:constant': {\r\n value: Reference('vertical_anchor')\r\n },\r\n 'minecraft:uniform': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor')\r\n },\r\n 'minecraft:biased_to_bottom': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n inner: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n },\r\n 'minecraft:very_biased_to_bottom': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n inner: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n },\r\n 'minecraft:trapezoid': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n plateau: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }\r\n }));\r\n exports.InclusiveRange = (config) => core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode(config),\r\n max_inclusive: core_1.NumberNode(config)\r\n }, { context: 'range' });\r\n schemas.register('noise_parameters', core_1.Mod(core_1.ObjectNode({\r\n firstOctave: core_1.NumberNode({ integer: true }),\r\n amplitudes: core_1.ListNode(core_1.NumberNode())\r\n }, { context: 'noise_parameters' }), {\r\n default: () => ({\r\n firstOctave: -7,\r\n amplitudes: [1, 1]\r\n })\r\n }));\r\n exports.ConditionCases = (entitySourceNode = StringNode({ enum: 'entity_source' })) => ({\r\n 'minecraft:alternative': {\r\n terms: core_1.ListNode(Reference('condition'))\r\n },\r\n 'minecraft:block_state_property': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })\r\n },\r\n 'minecraft:damage_source_properties': {\r\n predicate: Reference('damage_source_predicate')\r\n },\r\n 'minecraft:entity_properties': {\r\n entity: entitySourceNode,\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: entitySourceNode,\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), Reference('int_range'))\r\n },\r\n 'minecraft:inverted': {\r\n term: Reference('condition')\r\n },\r\n 'minecraft:killed_by_player': {\r\n inverse: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:location_check': {\r\n offsetX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetY: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n predicate: Reference('location_predicate')\r\n },\r\n 'minecraft:match_tool': {\r\n predicate: Reference('item_predicate')\r\n },\r\n 'minecraft:random_chance': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_chance_with_looting': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n looting_multiplier: core_1.NumberNode()\r\n },\r\n 'minecraft:reference': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$predicate' } })\r\n },\r\n 'minecraft:table_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n chances: core_1.ListNode(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:time_check': {\r\n value: Reference('int_range'),\r\n period: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:value_check': {\r\n value: Reference('number_provider'),\r\n range: Reference('int_range')\r\n },\r\n 'minecraft:weather_check': {\r\n raining: core_1.Opt(core_1.BooleanNode()),\r\n thundering: core_1.Opt(core_1.BooleanNode())\r\n }\r\n });\r\n exports.FunctionCases = (conditions, copySourceNode = StringNode({ enum: 'copy_source' }), entitySourceNode = StringNode({ enum: 'entity_source' })) => {\r\n const cases = {\r\n 'minecraft:apply_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n formula: StringNode({ validator: 'resource', params: { pool: collections.get('loot_table_apply_bonus_formula') } }),\r\n parameters: core_1.Mod(core_1.ObjectNode({\r\n bonusMultiplier: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:uniform_bonus_count'\r\n }),\r\n extra: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n }),\r\n probability: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n })\r\n }), {\r\n enabled: path => path.push('formula').get() !== 'minecraft:ore_drops'\r\n })\r\n },\r\n 'minecraft:copy_name': {\r\n source: copySourceNode\r\n },\r\n 'minecraft:copy_nbt': {\r\n source: Reference('nbt_provider'),\r\n ops: core_1.ListNode(core_1.ObjectNode({\r\n source: StringNode({ validator: 'nbt_path', params: { category: { getter: 'copy_source', path: ['pop', 'pop', 'pop', { push: 'source' }] } } }),\r\n target: StringNode({ validator: 'nbt_path', params: { category: 'minecraft:item' } }),\r\n op: StringNode({ enum: ['replace', 'append', 'merge'] })\r\n }, { context: 'nbt_operation' }))\r\n },\r\n 'minecraft:copy_state': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.ListNode(StringNode({ validator: 'block_state_key', params: { id: ['pop', 'pop', { push: 'block' }] } }))\r\n },\r\n 'minecraft:enchant_randomly': {\r\n enchantments: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })))\r\n },\r\n 'minecraft:enchant_with_levels': {\r\n levels: Reference('number_provider'),\r\n treasure: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:exploration_map': {\r\n destination: core_1.Opt(StringNode({ enum: 'map_feature' })),\r\n decoration: core_1.Opt(StringNode({ enum: 'map_decoration' })),\r\n zoom: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n search_radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n skip_existing_chunks: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:fill_player_head': {\r\n entity: entitySourceNode\r\n },\r\n 'minecraft:limit_count': {\r\n limit: Reference('int_range')\r\n },\r\n 'minecraft:looting_enchant': {\r\n count: Reference('number_provider'),\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_attributes': {\r\n modifiers: core_1.ListNode(Reference('attribute_modifier'))\r\n },\r\n 'minecraft:set_banner_pattern': {\r\n patterns: core_1.ListNode(core_1.ObjectNode({\r\n pattern: StringNode({ enum: 'banner_pattern' }),\r\n color: StringNode({ enum: 'dye_color' })\r\n })),\r\n append: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_contents': {\r\n entries: core_1.ListNode(Reference('loot_entry'))\r\n },\r\n 'minecraft:set_count': {\r\n count: Reference('number_provider'),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_damage': {\r\n damage: Reference('number_provider'),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_enchantments': {\r\n enchantments: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } }), Reference('number_provider')),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n seed: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_lore': {\r\n entity: core_1.Opt(entitySourceNode),\r\n lore: core_1.ListNode(Reference('text_component')),\r\n replace: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_name': {\r\n entity: core_1.Opt(entitySourceNode),\r\n name: core_1.Opt(Reference('text_component'))\r\n },\r\n 'minecraft:set_nbt': {\r\n tag: StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item' } } })\r\n },\r\n 'minecraft:set_potion': {\r\n id: StringNode({ validator: 'resource', params: { pool: 'potion' } })\r\n },\r\n 'minecraft:set_stew_effect': {\r\n effects: core_1.Opt(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }),\r\n duration: Reference('number_provider')\r\n })))\r\n }\r\n };\r\n const res = {};\r\n collections.get('loot_function_type').forEach(f => {\r\n res[f] = { ...cases[f], ...conditions };\r\n });\r\n return res;\r\n };\r\n exports.DimensionTypePresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$dimension_type' } }), node, {\r\n 'minecraft:overworld': exports.DefaultDimensionType,\r\n 'minecraft:the_nether': {\r\n name: 'minecraft:the_nether',\r\n ultrawarm: true,\r\n natural: false,\r\n shrunk: true,\r\n piglin_safe: true,\r\n respawn_anchor_works: true,\r\n bed_works: false,\r\n has_raids: false,\r\n has_skylight: false,\r\n has_ceiling: true,\r\n ambient_light: 0.1,\r\n fixed_time: 18000,\r\n logical_height: 128,\r\n effects: 'minecraft:the_nether',\r\n infiniburn: 'minecraft:infiniburn_nether',\r\n min_y: 0,\r\n height: 256,\r\n },\r\n 'minecraft:the_end': {\r\n name: 'minecraft:the_end',\r\n ultrawarm: false,\r\n natural: false,\r\n shrunk: false,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: false,\r\n has_raids: true,\r\n has_skylight: false,\r\n has_ceiling: false,\r\n ambient_light: 0,\r\n fixed_time: 6000,\r\n logical_height: 256,\r\n effects: 'minecraft:the_end',\r\n infiniburn: 'minecraft:infiniburn_end',\r\n min_y: 0,\r\n height: 256,\r\n }\r\n });\r\n exports.NoiseSettingsPresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings' } }), node, {\r\n 'minecraft:overworld': exports.DefaultNoiseSettings,\r\n 'minecraft:nether': {\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n noise_caves_enabled: false,\r\n deepslate_enabled: false,\r\n ore_veins_enabled: false,\r\n noodle_caves_enabled: false,\r\n disable_mob_generation: false,\r\n aquifers_enabled: false,\r\n default_block: {\r\n Name: 'minecraft:netherrack'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:lava'\r\n },\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n density_factor: 0,\r\n density_offset: -0.030078125,\r\n top_slide: {\r\n target: 0.9375,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 2.5,\r\n size: 4,\r\n offset: -1\r\n },\r\n sampling: {\r\n xz_scale: 1.0,\r\n y_scale: 3.0,\r\n xz_factor: 80.0,\r\n y_factor: 60.0\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n structures: DefaultStructureSettings,\r\n }\r\n },\r\n 'minecraft:end': {\r\n bedrock_roof_position: -2147483648,\r\n bedrock_floor_position: -2147483648,\r\n sea_level: 0,\r\n noise_caves_enabled: false,\r\n deepslate_enabled: false,\r\n ore_veins_enabled: false,\r\n noodle_caves_enabled: false,\r\n disable_mob_generation: false,\r\n aquifers_enabled: false,\r\n default_block: {\r\n Name: 'minecraft:end_stone'\r\n },\r\n default_fluid: {\r\n Name: 'minecraft:air'\r\n },\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n density_factor: 0,\r\n density_offset: 0,\r\n island_noise_override: true,\r\n top_slide: {\r\n target: -23.4375,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -0.234375,\r\n size: 7,\r\n offset: 1\r\n },\r\n sampling: {\r\n xz_scale: 2.0,\r\n y_scale: 1.0,\r\n xz_factor: 80.0,\r\n y_factor: 160.0\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n structures: DefaultStructureSettings\r\n }\r\n },\r\n 'minecraft:amplified': {\r\n bedrock_roof_position: -2147483648,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n noise_caves_enabled: true,\r\n deepslate_enabled: true,\r\n ore_veins_enabled: true,\r\n noodle_caves_enabled: true,\r\n disable_mob_generation: false,\r\n aquifers_enabled: true,\r\n default_block: {\r\n Name: 'minecraft:stone'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:water'\r\n },\r\n noise: {\r\n min_y: -64,\r\n height: 384,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n density_factor: 1,\r\n density_offset: -0.51875,\r\n amplified: true,\r\n top_slide: {\r\n target: -0.078125,\r\n size: 2,\r\n offset: 8\r\n },\r\n bottom_slide: {\r\n target: 0.1171875,\r\n size: 3,\r\n offset: 0\r\n },\r\n sampling: {\r\n xz_scale: 0.9999999814507745,\r\n y_scale: 0.9999999814507745,\r\n xz_factor: 80,\r\n y_factor: 160\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n stronghold: {\r\n distance: 32,\r\n spread: 3,\r\n count: 128\r\n },\r\n structures: DefaultStructureSettings,\r\n },\r\n },\r\n 'minecraft:caves': {\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n noise_caves_enabled: false,\r\n deepslate_enabled: false,\r\n ore_veins_enabled: false,\r\n noodle_caves_enabled: false,\r\n disable_mob_generation: false,\r\n aquifers_enabled: false,\r\n default_block: {\r\n Name: 'minecraft:stone'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:water'\r\n },\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n density_factor: 0,\r\n density_offset: -0.030078125,\r\n top_slide: {\r\n target: 0.9375,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 2.5,\r\n size: 4,\r\n offset: -1\r\n },\r\n sampling: {\r\n xz_scale: 1.0,\r\n y_scale: 3.0,\r\n xz_factor: 80.0,\r\n y_factor: 60.0\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n stronghold: {\r\n distance: 32,\r\n spread: 3,\r\n count: 128\r\n },\r\n structures: DefaultStructureSettings,\r\n }\r\n },\r\n 'minecraft:floating_islands': {\r\n bedrock_roof_position: -2147483648,\r\n bedrock_floor_position: -2147483648,\r\n sea_level: 0,\r\n noise_caves_enabled: false,\r\n deepslate_enabled: false,\r\n ore_veins_enabled: false,\r\n noodle_caves_enabled: false,\r\n disable_mob_generation: false,\r\n aquifers_enabled: false,\r\n default_block: {\r\n Name: 'minecraft:stone'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:water'\r\n },\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n density_factor: 0,\r\n density_offset: 0,\r\n island_noise_override: true,\r\n top_slide: {\r\n target: -23.4375,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -0.234375,\r\n size: 7,\r\n offset: 1\r\n },\r\n sampling: {\r\n xz_scale: 2.0,\r\n y_scale: 1.0,\r\n xz_factor: 80.0,\r\n y_factor: 160.0\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n stronghold: {\r\n distance: 32,\r\n spread: 3,\r\n count: 128\r\n },\r\n structures: DefaultStructureSettings,\r\n }\r\n }\r\n });\r\n}\r\nexports.initCommonSchemas = initCommonSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initConditionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initConditionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('predicate', core_1.ObjectOrList(Reference('condition'), { choiceContext: 'condition' }));\r\n schemas.register('condition', core_1.Mod(core_1.ObjectNode({\r\n condition: StringNode({ validator: 'resource', params: { pool: 'loot_condition_type' } }),\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases()\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:entity_properties',\r\n entity: 'this'\r\n })\r\n }));\r\n}\r\nexports.initConditionSchemas = initConditionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('dimension', core_1.Mod(core_1.ObjectNode({\r\n type: Common_1.DimensionTypePresets(Reference('dimension_type')),\r\n generator: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/chunk_generator' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n settings: Common_1.NoiseSettingsPresets(Reference('noise_settings')),\r\n biome_source: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/biome_source' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:fixed': {\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })\r\n },\r\n 'minecraft:multi_noise': {\r\n preset: core_1.Opt(StringNode({ validator: 'resource', params: { pool: ['minecraft:overworld', 'minecraft:nether'] } })),\r\n biomes: core_1.Mod(core_1.ListNode(Reference('generator_biome')), {\r\n enabled: path => path.push('preset').get() === undefined,\r\n default: () => [{\r\n biome: 'minecraft:plains'\r\n }]\r\n })\r\n },\r\n 'minecraft:checkerboard': {\r\n scale: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 62 })),\r\n biomes: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }))\r\n },\r\n 'minecraft:the_end': {\r\n seed: core_1.NumberNode({ integer: true })\r\n }\r\n }\r\n }, { category: 'predicate', disableSwitchContext: true })\r\n },\r\n 'minecraft:flat': {\r\n settings: core_1.ObjectNode({\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n lakes: core_1.Opt(core_1.BooleanNode()),\r\n features: core_1.Opt(core_1.BooleanNode()),\r\n layers: core_1.ListNode(Reference('generator_layer')),\r\n structures: Reference('generator_structures')\r\n })\r\n }\r\n }\r\n }, { disableSwitchContext: true })\r\n }, { category: 'pool', context: 'dimension' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:fixed',\r\n seed,\r\n biome: 'minecraft:plains'\r\n },\r\n settings: 'minecraft:overworld'\r\n }\r\n };\r\n }\r\n }));\r\n const ClimateParameter = core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ min: -2, max: 2 }),\r\n change: (v) => { var _a; return (_a = v[0]) !== null && _a !== void 0 ? _a : 0; }\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(core_1.NumberNode({ min: -2, max: 2 }), { minLength: 2, maxLength: 2 }),\r\n change: (v) => [v !== null && v !== void 0 ? v : 0, v !== null && v !== void 0 ? v : 0]\r\n }\r\n ]);\r\n schemas.register('generator_biome', core_1.Mod(core_1.ObjectNode({\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }),\r\n parameters: core_1.ObjectNode({\r\n temperature: ClimateParameter,\r\n humidity: ClimateParameter,\r\n continentalness: ClimateParameter,\r\n erosion: ClimateParameter,\r\n weirdness: ClimateParameter,\r\n depth: ClimateParameter,\r\n offset: core_1.NumberNode({ min: 0, max: 1 })\r\n })\r\n }, { context: 'generator_biome' }), {\r\n default: () => ({\r\n biome: 'minecraft:plains',\r\n parameters: {\r\n altitude: 0,\r\n temperature: 0,\r\n humidity: 0,\r\n weirdness: 0,\r\n offset: 0\r\n }\r\n })\r\n }));\r\n}\r\nexports.initDimensionSchemas = initDimensionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionTypeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionTypeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('dimension_type', core_1.Mod(core_1.ObjectNode({\r\n ultrawarm: core_1.BooleanNode(),\r\n natural: core_1.BooleanNode(),\r\n piglin_safe: core_1.BooleanNode(),\r\n respawn_anchor_works: core_1.BooleanNode(),\r\n bed_works: core_1.BooleanNode(),\r\n has_raids: core_1.BooleanNode(),\r\n has_skylight: core_1.BooleanNode(),\r\n has_ceiling: core_1.BooleanNode(),\r\n coordinate_scale: core_1.NumberNode({ min: 0.00001, max: 30000000 }),\r\n ambient_light: core_1.NumberNode(),\r\n fixed_time: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n logical_height: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n effects: core_1.Opt(StringNode({ enum: ['minecraft:overworld', 'minecraft:the_nether', 'minecraft:the_end'] })),\r\n infiniburn: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n min_y: core_1.NumberNode({ integer: true, min: -2048, max: 2047 }),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 4096 })\r\n }, { context: 'dimension_type' }), node => ({\r\n default: () => Common_1.DefaultDimensionType,\r\n validate: (path, value, errors, options) => {\r\n value = node.validate(path, value, errors, options);\r\n if ((value === null || value === void 0 ? void 0 : value.min_y) + (value === null || value === void 0 ? void 0 : value.height) > 2047) {\r\n errors.add(path.push('height'), 'error.min_y_plus_height', 2047);\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.logical_height) > (value === null || value === void 0 ? void 0 : value.height)) {\r\n errors.add(path.push('logical_height'), 'error.logical_height');\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.height) % 16 !== 0) {\r\n errors.add(path.push('height'), 'error.height_multiple', 16);\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.min_y) % 16 !== 0) {\r\n errors.add(path.push('min_y'), 'error.min_y_multiple', 16);\r\n }\r\n return value;\r\n }\r\n })));\r\n}\r\nexports.initDimensionTypeSchemas = initDimensionTypeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initItemModifierSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initItemModifierSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('item_modifier', core_1.ObjectOrList(Reference('function'), { choiceContext: 'function' }));\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('condition')))\r\n };\r\n schemas.register('function', core_1.Mod(core_1.ObjectNode({\r\n function: StringNode({ validator: 'resource', params: { pool: 'loot_function_type' } }),\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: Common_1.FunctionCases(conditions)\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => [{\r\n function: 'minecraft:set_count',\r\n count: 1\r\n }]\r\n }));\r\n}\r\nexports.initItemModifierSchemas = initItemModifierSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LootFunctions = exports.LootConditions = exports.LootCopySources = exports.LootEntitySources = exports.LootTableTypes = void 0;\r\nexports.LootTableTypes = new Map([\r\n ['minecraft:advancement_entity', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:advancement_reward', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:barter', { requires: [8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:block', { requires: [1 /* BlockState */, 7 /* Origin */, 9 /* Tool */], allows: [0 /* BlockEntity */, 4 /* ExplosionRadius */, 8 /* ThisEntity */] }],\r\n ['minecraft:chest', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:command', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:empty', { requires: [], allows: [] }],\r\n ['minecraft:entity', { requires: [2 /* DamageSource */, 7 /* Origin */, 8 /* ThisEntity */], allows: [3 /* DirectKillerEntity */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */] }],\r\n ['minecraft:fishing', { requires: [7 /* Origin */, 9 /* Tool */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:generic', { requires: [2 /* DamageSource */, 0 /* BlockEntity */, 1 /* BlockState */, 3 /* DirectKillerEntity */, 4 /* ExplosionRadius */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */, 7 /* Origin */, 8 /* ThisEntity */, 9 /* Tool */], allows: [] }],\r\n ['minecraft:gift', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:selector', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }]\r\n]);\r\n/**\r\n * A map from loot entity sources to an array of their required context.\r\n */\r\nexports.LootEntitySources = new Map([\r\n ['direct_killer', [3 /* DirectKillerEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot copy sources to an array of their required context.\r\n */\r\nexports.LootCopySources = new Map([\r\n ['block_entity', [0 /* BlockEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot condition IDs to an array of their required context.\r\n */\r\nexports.LootConditions = new Map([\r\n ['minecraft:alternative', []],\r\n ['minecraft:block_state_property', [1 /* BlockState */]],\r\n ['minecraft:damage_source_properties', [2 /* DamageSource */]],\r\n ['minecraft:entity_properties', [7 /* Origin */]],\r\n ['minecraft:entity_scores', []],\r\n ['minecraft:inverted', []],\r\n ['minecraft:killed_by_player', [6 /* LastDamagePlayer */]],\r\n ['minecraft:location_check', []],\r\n ['minecraft:match_tool', [9 /* Tool */]],\r\n ['minecraft:random_chance', []],\r\n ['minecraft:random_chance_with_looting', [5 /* KillerEntity */]],\r\n ['minecraft:reference', []],\r\n ['minecraft:survives_explosion', [4 /* ExplosionRadius */]],\r\n ['minecraft:table_bonus', [9 /* Tool */]],\r\n ['minecraft:time_check', []],\r\n ['minecraft:weather_check', []]\r\n]);\r\n/**\r\n * A map from loot function IDs to an array of their required context.\r\n */\r\nexports.LootFunctions = new Map([\r\n ['minecraft:apply_bonus', [9 /* Tool */]],\r\n ['minecraft:copy_name', []],\r\n ['minecraft:copy_nbt', []],\r\n ['minecraft:copy_state', [1 /* BlockState */]],\r\n ['minecraft:enchant_randomly', []],\r\n ['minecraft:enchant_with_levels', []],\r\n ['minecraft:exploration_map', [7 /* Origin */]],\r\n ['minecraft:explosion_decay', []],\r\n ['minecraft:fill_player_head', []],\r\n ['minecraft:furnace_smelt', []],\r\n ['minecraft:limit_count', []],\r\n ['minecraft:looting_enchant', [5 /* KillerEntity */]],\r\n ['minecraft:set_attributes', []],\r\n ['minecraft:set_banner_pattern', []],\r\n ['minecraft:set_contents', []],\r\n ['minecraft:set_count', []],\r\n ['minecraft:set_damage', []],\r\n ['minecraft:set_loot_table', []],\r\n ['minecraft:set_lore', []],\r\n ['minecraft:set_name', []],\r\n ['minecraft:set_nbt', []],\r\n ['minecraft:set_stew_effect', []]\r\n]);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initLootTableSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst LootContext_1 = require(\"../LootContext\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initLootTableSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('loot_condition')))\r\n };\r\n const functionsAndConditions = {\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function'))),\r\n ...conditions\r\n };\r\n function compileSwitchNode(contextMap, collectionID, getNode) {\r\n const cases = [];\r\n const getAvailableOptions = (providedContext) => collections\r\n .get(collectionID)\r\n .filter(t => {\r\n var _a;\r\n const requiredContext = (_a = contextMap.get(t)) !== null && _a !== void 0 ? _a : [];\r\n return requiredContext.every(c => providedContext.includes(c));\r\n });\r\n for (const [tableType, { allows, requires }] of LootContext_1.LootTableTypes) {\r\n const providedContext = [...allows, ...requires];\r\n cases.push({\r\n match: path => path.getModel().get(new core_1.Path(['type'])) === tableType,\r\n node: getNode(getAvailableOptions(providedContext))\r\n });\r\n }\r\n cases.push({ match: _ => true, node: getNode(collectionID) });\r\n return core_1.SwitchNode(cases);\r\n }\r\n const conditionIDSwtichNode = compileSwitchNode(LootContext_1.LootConditions, 'loot_condition_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_condition_type` } }));\r\n const functionIDSwtichNode = compileSwitchNode(LootContext_1.LootFunctions, 'loot_function_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_function_type` } }));\r\n const entitySourceSwtichNode = compileSwitchNode(LootContext_1.LootEntitySources, 'entity_source', type => StringNode({ enum: type }));\r\n const copySourceSwtichNode = compileSwitchNode(LootContext_1.LootCopySources, 'copy_source', type => StringNode({ enum: type }));\r\n schemas.register('loot_table', core_1.Mod(core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: \"resource\", params: { pool: collections.get('loot_context_type') } })),\r\n pools: core_1.Opt(core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n rolls: Reference('number_provider'),\r\n bonus_rolls: core_1.Opt(Reference('number_provider')),\r\n entries: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n }, { category: 'pool', context: 'loot_pool' }), {\r\n default: () => ({\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n })\r\n }))),\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function')))\r\n }, { context: 'loot_table' }), {\r\n default: () => ({\r\n pools: [{\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n }]\r\n })\r\n }));\r\n const weightMod = {\r\n enabled: path => {\r\n var _a;\r\n return ((_a = path.pop().get()) === null || _a === void 0 ? void 0 : _a.length) > 1\r\n && !['minecraft:alternatives', 'minecraft:group', 'minecraft:sequence'].includes(path.push('type').get());\r\n }\r\n };\r\n schemas.register('loot_entry', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'loot_pool_entry_type' } }),\r\n weight: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true, min: 1 }), weightMod)),\r\n quality: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), weightMod)),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alternatives': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:dynamic': {\r\n name: StringNode(),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:group': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:item': {\r\n name: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:sequence': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:tag': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$tag/item' } }),\r\n expand: core_1.Opt(core_1.BooleanNode()),\r\n ...functionsAndConditions\r\n }\r\n }\r\n }, { context: 'loot_entry' }), {\r\n default: () => ({\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('loot_function', core_1.Mod(core_1.ObjectNode({\r\n function: functionIDSwtichNode,\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: Common_1.FunctionCases(conditions, copySourceSwtichNode, entitySourceSwtichNode)\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => ({\r\n function: 'minecraft:set_count',\r\n count: 1\r\n })\r\n }));\r\n schemas.register('loot_condition', core_1.Mod(core_1.ObjectNode({\r\n condition: conditionIDSwtichNode,\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases(entitySourceSwtichNode)\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:random_chance',\r\n chance: 0.5\r\n })\r\n }));\r\n schemas.register('attribute_modifier', core_1.Mod(core_1.ObjectNode({\r\n attribute: StringNode({ validator: 'resource', params: { pool: 'attribute' } }),\r\n name: StringNode(),\r\n amount: Reference('number_provider'),\r\n operation: StringNode({ enum: ['addition', 'multiply_base', 'multiply_total'] }),\r\n slot: core_1.StringOrList(StringNode({ enum: 'slot' }))\r\n }, { context: 'attribute_modifier' }), {\r\n default: () => ({\r\n attribute: 'minecraft:generic.max_health',\r\n name: '',\r\n amount: 1,\r\n operation: 'addition',\r\n slot: 'mainhand'\r\n })\r\n }));\r\n}\r\nexports.initLootTableSchemas = initLootTableSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPackMcmetaSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst CURRENT_PACK_FORMAT = 7;\r\nfunction initPackMcmetaSchemas(schemas, _) {\r\n const getSimpleString = (jsonText) => { var _a, _b; return jsonText instanceof Array ? getSimpleString(jsonText[0]) : (_b = (_a = jsonText === null || jsonText === void 0 ? void 0 : jsonText.text) !== null && _a !== void 0 ? _a : jsonText === null || jsonText === void 0 ? void 0 : jsonText.toString()) !== null && _b !== void 0 ? _b : ''; };\r\n schemas.register('pack_mcmeta', core_1.Mod(core_1.ObjectNode({\r\n pack: core_1.Mod(core_1.ObjectNode({\r\n pack_format: core_1.Mod(core_1.NumberNode({ integer: true, min: CURRENT_PACK_FORMAT, max: CURRENT_PACK_FORMAT }), {\r\n default: () => CURRENT_PACK_FORMAT,\r\n canUpdate: (_p, v) => v !== CURRENT_PACK_FORMAT,\r\n update: () => [{ name: 'pack_format', params: [CURRENT_PACK_FORMAT], newValue: CURRENT_PACK_FORMAT }]\r\n }),\r\n description: core_1.Reference(schemas, 'text_component')\r\n }), {\r\n default: () => ({\r\n pack_format: CURRENT_PACK_FORMAT,\r\n description: ''\r\n })\r\n })\r\n }), {\r\n default: () => ({\r\n pack: {\r\n pack_format: CURRENT_PACK_FORMAT,\r\n description: ''\r\n }\r\n })\r\n }));\r\n}\r\nexports.initPackMcmetaSchemas = initPackMcmetaSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPredicatesSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initPredicatesSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const StateChoice = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode(),\r\n change: v => (typeof v === 'boolean' || typeof v === 'number') ? v.toString() : ''\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => (typeof v === 'string') ? parseInt(v) : 0\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }),\r\n change: v => (typeof v === 'number') ? ({ min: v, max: v }) : ({})\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => v === 'true' || v === 1\r\n }\r\n ]);\r\n schemas.register('item_predicate', core_1.ObjectNode({\r\n items: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'item' } }))),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } })),\r\n count: Reference('int_bounds'),\r\n durability: Reference('int_bounds'),\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } })),\r\n enchantments: core_1.Opt(core_1.ListNode(Reference('enchantment_predicate')))\r\n }, { context: 'item' }));\r\n schemas.register('enchantment_predicate', core_1.ObjectNode({\r\n enchantment: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })),\r\n levels: Reference('int_bounds')\r\n }, { context: 'enchantment' }));\r\n schemas.register('block_predicate', core_1.ObjectNode({\r\n blocks: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block', id: ['pop', { push: 'block' }] } } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice, { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n }, { context: 'block' }));\r\n schemas.register('fluid_predicate', core_1.ObjectNode({\r\n fluid: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'fluid' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/fluid' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice))\r\n }, { context: 'fluid' }));\r\n schemas.register('location_predicate', core_1.ObjectNode({\r\n position: core_1.Opt(core_1.ObjectNode({\r\n x: Reference('float_bounds'),\r\n y: Reference('float_bounds'),\r\n z: Reference('float_bounds')\r\n })),\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n feature: core_1.Opt(StringNode({ enum: collections.get('worldgen/structure_feature').map(v => v.slice(10)) })),\r\n dimension: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n light: core_1.Opt(core_1.ObjectNode({\r\n light: Reference('int_bounds')\r\n })),\r\n smokey: core_1.Opt(core_1.BooleanNode()),\r\n block: core_1.Opt(Reference('block_predicate')),\r\n fluid: core_1.Opt(Reference('fluid_predicate'))\r\n }, { context: 'location' }));\r\n schemas.register('statistic_predicate', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'stat_type' } }),\r\n stat: StringNode(),\r\n value: Reference('int_bounds'),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:mined': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:crafted': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:used': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:broken': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:picked_up': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:dropped': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:killed': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:killed_by': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:custom': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'custom_stat' } })\r\n }\r\n }\r\n }));\r\n schemas.register('player_predicate', core_1.ObjectNode({\r\n gamemode: core_1.Opt(StringNode({ enum: 'gamemode' })),\r\n level: Reference('int_bounds'),\r\n advancements: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$advancement' } }), core_1.ChoiceNode([\r\n { type: 'boolean', node: core_1.BooleanNode(), change: _ => true },\r\n {\r\n type: 'object', node: core_1.MapNode(StringNode(), core_1.BooleanNode())\r\n }\r\n ]))),\r\n recipes: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }), core_1.BooleanNode())),\r\n stats: core_1.Opt(core_1.ListNode(Reference('statistic_predicate'))),\r\n looking_at: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'player' }));\r\n schemas.register('status_effect_predicate', core_1.ObjectNode({\r\n amplifier: Reference('int_bounds'),\r\n duration: Reference('int_bounds'),\r\n ambient: core_1.Opt(core_1.BooleanNode()),\r\n visible: core_1.Opt(core_1.BooleanNode())\r\n }, { context: 'status_effect' }));\r\n schemas.register('distance_predicate', core_1.ObjectNode({\r\n x: Reference('float_bounds'),\r\n y: Reference('float_bounds'),\r\n z: Reference('float_bounds'),\r\n absolute: Reference('float_bounds'),\r\n horizontal: Reference('float_bounds')\r\n }, { context: 'distance' }));\r\n schemas.register('entity_predicate', core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'entity_type', allowTag: true } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:entity', id: ['pop', { push: 'type' }] } } })),\r\n team: core_1.Opt(StringNode({ validator: 'team' })),\r\n location: core_1.Opt(Reference('location_predicate')),\r\n stepping_on: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n flags: core_1.Opt(core_1.ObjectNode({\r\n is_on_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_sneaking: core_1.Opt(core_1.BooleanNode()),\r\n is_sprinting: core_1.Opt(core_1.BooleanNode()),\r\n is_swimming: core_1.Opt(core_1.BooleanNode()),\r\n is_baby: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n equipment: core_1.Opt(core_1.MapNode(StringNode({ enum: 'slot' }), Reference('item_predicate'))),\r\n player: core_1.Opt(Reference('player_predicate')),\r\n vehicle: core_1.Opt(Reference('entity_predicate')),\r\n passenger: core_1.Opt(Reference('entity_predicate')),\r\n targeted_entity: core_1.Opt(Reference('entity_predicate')),\r\n lightning_bolt: core_1.Opt(core_1.ObjectNode({\r\n blocks_set_on_fire: core_1.Opt(Reference('int_bounds')),\r\n entity_struck: core_1.Opt(Reference('entity_predicate'))\r\n })),\r\n fishing_hook: core_1.Opt(core_1.ObjectNode({\r\n in_open_water: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n }, { context: 'entity' }));\r\n schemas.register('damage_source_predicate', core_1.ObjectNode({\r\n is_explosion: core_1.Opt(core_1.BooleanNode()),\r\n is_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_magic: core_1.Opt(core_1.BooleanNode()),\r\n is_projectile: core_1.Opt(core_1.BooleanNode()),\r\n is_lightning: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_armor: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_invulnerability: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_magic: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n direct_entity: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'damage_source' }));\r\n schemas.register('damage_predicate', core_1.ObjectNode({\r\n dealt: Reference('float_bounds'),\r\n taken: Reference('float_bounds'),\r\n blocked: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n type: core_1.Opt(Reference('damage_source_predicate'))\r\n }, { context: 'damage' }));\r\n}\r\nexports.initPredicatesSchemas = initPredicatesSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initRecipeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initRecipeSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('recipe', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'recipe_serializer' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:crafting_shaped': {\r\n group: core_1.Opt(StringNode({ enum: 'recipe_group', additional: true })),\r\n pattern: core_1.ListNode(StringNode()),\r\n key: core_1.MapNode(StringNode(), // TODO: add validation\r\n Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:crafting_shapeless': {\r\n group: core_1.Opt(StringNode()),\r\n ingredients: core_1.ListNode(Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:smelting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 200 }))\r\n },\r\n 'minecraft:blasting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:smoking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:campfire_cooking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:stonecutting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:smithing': {\r\n group: core_1.Opt(StringNode()),\r\n base: Reference('recipe_ingredient_object'),\r\n addition: Reference('recipe_ingredient_object'),\r\n result: Reference('recipe_result')\r\n }\r\n }\r\n }, { context: 'recipe', disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:crafting_shaped'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('recipe_ingredient_object'),\r\n change: v => v[0]\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('recipe_ingredient_object')),\r\n change: v => [v]\r\n }\r\n ]), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient_object', core_1.Mod(core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_result', core_1.Mod(core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 1 }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n}\r\nexports.initRecipeSchemas = initRecipeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTagsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTagsSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const TagBase = (type) => core_1.Mod(core_1.ObjectNode({\r\n replace: core_1.Opt(core_1.BooleanNode()),\r\n values: core_1.ListNode(core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: type, allowTag: true } }),\r\n change: v => v.id\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: type, allowTag: true, allowUnknown: true } }),\r\n required: core_1.BooleanNode()\r\n }),\r\n change: v => ({ id: v })\r\n }\r\n ])),\r\n }, { context: 'tag' }), {\r\n default: () => ({\r\n values: []\r\n })\r\n });\r\n schemas.register('block_tag', TagBase('block'));\r\n schemas.register('entity_type_tag', TagBase('entity_type'));\r\n schemas.register('fluid_tag', TagBase('fluid'));\r\n schemas.register('function_tag', TagBase('$function'));\r\n schemas.register('game_event_tag', TagBase('game_event'));\r\n schemas.register('item_tag', TagBase('item'));\r\n}\r\nexports.initTagsSchemas = initTagsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTextComponentSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTextComponentSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const getSimpleString = (v) => { var _a; return v instanceof Array ? getSimpleString(v[0]) : (_a = v === null || v === void 0 ? void 0 : v.text) !== null && _a !== void 0 ? _a : (typeof v === 'object' ? '' : v === null || v === void 0 ? void 0 : v.toString()); };\r\n schemas.register('text_component', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('text_component_object'),\r\n change: v => v instanceof Array ? (typeof v[0] === 'object' ? v[0] : { text: getSimpleString(v[0]) }) : typeof v === 'object' ? v : { text: getSimpleString(v) }\r\n },\r\n {\r\n type: 'list',\r\n node: Reference('text_component_list'),\r\n change: v => [v]\r\n },\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: StringNode(),\r\n change: getSimpleString\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => {\r\n const n = parseFloat(getSimpleString(v));\r\n return isFinite(n) ? n : (!!v ? 1 : 0);\r\n }\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => {\r\n const s = getSimpleString(v);\r\n return s === 'true' || s === 'false' ? s === 'true' : !!s;\r\n }\r\n }\r\n ], { context: 'text_component' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n const CommonFields = {\r\n color: core_1.Opt(StringNode()) /* TODO */,\r\n font: core_1.Opt(StringNode()),\r\n bold: core_1.Opt(core_1.BooleanNode()),\r\n italic: core_1.Opt(core_1.BooleanNode()),\r\n underlined: core_1.Opt(core_1.BooleanNode()),\r\n strikethrough: core_1.Opt(core_1.BooleanNode()),\r\n obfuscated: core_1.Opt(core_1.BooleanNode()),\r\n insertion: core_1.Opt(StringNode()),\r\n clickEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['open_url', 'open_file', 'run_command', 'suggest_command', 'change_page', 'copy_to_clipboard'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'change_page': {\r\n value: StringNode()\r\n },\r\n 'copy_to_clipboard': {\r\n value: StringNode()\r\n },\r\n 'open_file': {\r\n value: StringNode()\r\n },\r\n 'open_url': {\r\n value: StringNode()\r\n },\r\n 'run_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n },\r\n 'suggest_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n }\r\n }\r\n })),\r\n hoverEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['show_text', 'show_item', 'show_entity'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'show_text': {\r\n value: core_1.Opt(Reference('text_component')),\r\n contents: core_1.Opt(Reference('text_component'))\r\n },\r\n 'show_item': {\r\n value: core_1.Opt(StringNode({ validator: 'nbt', params: { module: 'util::InventoryItem' } })),\r\n contents: core_1.Opt(core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n tag: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'id' }] } } }))\r\n }))\r\n },\r\n 'show_entity': {\r\n value: core_1.Opt(core_1.ObjectNode({\r\n name: core_1.Opt(StringNode()),\r\n type: core_1.Opt(StringNode()),\r\n id: core_1.Opt(StringNode())\r\n })),\r\n contents: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Opt(Reference('text_component')),\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n id: StringNode({ validator: 'uuid' })\r\n }), {\r\n default: () => ({\r\n type: 'minecraft:pig',\r\n id: '00000001-0001-0001-0001-000000000001'\r\n })\r\n }))\r\n }\r\n }\r\n })),\r\n extra: core_1.Opt(Reference('text_component_list'))\r\n };\r\n schemas.register('text_component_object', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'text',\r\n match: v => typeof v === 'object',\r\n change: v => ({ text: '' }),\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n text: StringNode(),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'translation',\r\n match: v => (v === null || v === void 0 ? void 0 : v.translate) !== undefined,\r\n change: v => ({ translate: '' }),\r\n node: core_1.ObjectNode({\r\n translate: StringNode(),\r\n with: core_1.Opt(Reference('text_component_list')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'score',\r\n match: v => (v === null || v === void 0 ? void 0 : v.score) !== undefined,\r\n change: v => ({ score: {} }),\r\n node: core_1.ObjectNode({\r\n score: core_1.ObjectNode({\r\n name: StringNode({ validator: 'entity', params: { amount: 'single', type: 'entities', isScoreHolder: true } }),\r\n objective: StringNode({ validator: 'objective' }),\r\n value: core_1.Opt(StringNode())\r\n }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'selector',\r\n match: v => (v === null || v === void 0 ? void 0 : v.selector) !== undefined,\r\n change: v => ({ selector: '' }),\r\n node: core_1.ObjectNode({\r\n selector: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } }),\r\n separator: core_1.Opt(Reference('text_component')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'keybind',\r\n match: v => (v === null || v === void 0 ? void 0 : v.keybind) !== undefined,\r\n change: v => ({ keybind: '' }),\r\n node: core_1.ObjectNode({\r\n keybind: StringNode({ enum: 'keybind', additional: true }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'nbt',\r\n match: v => (v === null || v === void 0 ? void 0 : v.nbt) !== undefined,\r\n change: v => ({ nbt: '' }),\r\n node: core_1.ObjectNode({\r\n nbt: StringNode({ validator: 'nbt_path' }),\r\n block: core_1.Opt(StringNode({ validator: 'vector', params: { dimension: 3, isInteger: true } })),\r\n entity: core_1.Opt(StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } })),\r\n storage: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$storage' } })),\r\n interpret: core_1.Opt(core_1.BooleanNode()),\r\n separator: core_1.Opt(Reference('text_component')),\r\n ...CommonFields\r\n })\r\n }\r\n ], { context: 'text_component_object', choiceContext: 'text_component.object' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n schemas.register('text_component_list', core_1.Mod(core_1.ListNode(Reference('text_component')), {\r\n default: () => [{\r\n text: \"\"\r\n }]\r\n }));\r\n}\r\nexports.initTextComponentSchemas = initTextComponentSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initBiomeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initBiomeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('biome', core_1.Mod(core_1.ObjectNode({\r\n temperature: core_1.NumberNode(),\r\n downfall: core_1.NumberNode(),\r\n precipitation: StringNode({ enum: ['none', 'rain', 'snow'] }),\r\n temperature_modifier: core_1.Opt(StringNode({ enum: ['none', 'frozen'] })),\r\n category: StringNode({ enum: 'biome_category' }),\r\n player_spawn_friendly: core_1.Opt(core_1.BooleanNode()),\r\n creature_spawn_probability: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n effects: core_1.ObjectNode({\r\n sky_color: core_1.NumberNode({ color: true }),\r\n fog_color: core_1.NumberNode({ color: true }),\r\n water_color: core_1.NumberNode({ color: true }),\r\n water_fog_color: core_1.NumberNode({ color: true }),\r\n grass_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n foliage_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n grass_color_modifier: core_1.Opt(StringNode({ enum: ['none', 'dark_forest', 'swamp'] })),\r\n ambient_sound: core_1.Opt(StringNode()),\r\n mood_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_delay: core_1.NumberNode({ integer: true }),\r\n block_search_extent: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode()\r\n })),\r\n additions_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n })),\r\n music: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n min_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n max_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n replace_current_music: core_1.BooleanNode()\r\n })),\r\n particle: core_1.Opt(core_1.ObjectNode({\r\n options: core_1.ObjectNode({\r\n type: StringNode()\r\n }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }))\r\n }),\r\n spawners: core_1.MapNode(StringNode({ enum: [\r\n 'monster',\r\n 'creature',\r\n 'ambient',\r\n 'axolotls',\r\n 'underground_water_creature',\r\n 'water_creature',\r\n 'water_ambient',\r\n 'misc'\r\n ] }), core_1.Mod(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n weight: core_1.NumberNode({ integer: true }),\r\n minCount: core_1.NumberNode({ integer: true }),\r\n maxCount: core_1.NumberNode({ integer: true })\r\n })), {\r\n category: () => 'pool',\r\n default: () => [{\r\n type: 'minecraft:bat',\r\n weight: 1\r\n }]\r\n })),\r\n spawn_costs: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'entity_type' } }), core_1.Mod(core_1.ObjectNode({\r\n energy_budget: core_1.NumberNode(),\r\n charge: core_1.NumberNode()\r\n }, { category: 'function' }), {\r\n default: () => ({\r\n energy_budget: 0.12,\r\n charge: 1.0\r\n })\r\n })),\r\n carvers: core_1.MapNode(StringNode({ enum: ['air', 'liquid'] }), core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_carver' } })), {\r\n default: () => ['minecraft:cave']\r\n })),\r\n features: core_1.ListNode(core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })), { category: () => 'predicate' }), { maxLength: 11 })\r\n }, { context: 'biome' }), {\r\n default: () => ({\r\n temperature: 0.8,\r\n downfall: 0.4,\r\n precipitation: 'rain',\r\n category: 'plains',\r\n effects: {\r\n sky_color: 7907327,\r\n fog_color: 12638463,\r\n water_color: 4159204,\r\n water_fog_color: 329011\r\n }\r\n })\r\n }));\r\n}\r\nexports.initBiomeSchemas = initBiomeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCarverSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initCarverSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const CanyonConfig = {\r\n vertical_rotation: Common_1.FloatProvider(),\r\n shape: core_1.ObjectNode({\r\n distance_factor: Common_1.FloatProvider(),\r\n thickness: Common_1.FloatProvider(),\r\n width_smoothness: core_1.NumberNode({ integer: true, min: 0 }),\r\n horizontal_radius_factor: Common_1.FloatProvider(),\r\n vertical_radius_default_factor: core_1.NumberNode(),\r\n vertical_radius_center_factor: core_1.NumberNode()\r\n })\r\n };\r\n const CaveConfig = {\r\n horizontal_radius_multiplier: Common_1.FloatProvider(),\r\n vertical_radius_multiplier: Common_1.FloatProvider(),\r\n floor_level: Common_1.FloatProvider({ min: -1, max: 1 }),\r\n };\r\n schemas.register('configured_carver', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/carver' } }),\r\n config: core_1.ObjectNode({\r\n probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n y: Reference('height_provider'),\r\n yScale: Common_1.FloatProvider(),\r\n lava_level: Reference('vertical_anchor'),\r\n debug_settings: core_1.Opt(core_1.ObjectNode({\r\n debug_mode: core_1.Opt(core_1.BooleanNode()),\r\n air_state: core_1.Opt(Reference('block_state')),\r\n water_state: core_1.Opt(Reference('block_state')),\r\n lava_state: core_1.Opt(Reference('block_state')),\r\n barrier_state: core_1.Opt(Reference('block_state'))\r\n })),\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:canyon': CanyonConfig,\r\n 'minecraft:cave': CaveConfig,\r\n 'minecraft:nether_cave': CaveConfig\r\n },\r\n })\r\n }, { context: 'carver' }), {\r\n default: () => ({\r\n type: 'minecraft:cave',\r\n config: {\r\n probability: 0.1\r\n }\r\n })\r\n }));\r\n}\r\nexports.initCarverSchemas = initCarverSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDecoratorSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initDecoratorSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const CountConfig = {\r\n count: Common_1.IntProvider({ min: 0, max: 256 })\r\n };\r\n schemas.register('configured_decorator', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/decorator' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_filter': {\r\n predicate: Reference('block_predicate_worldgen')\r\n },\r\n 'minecraft:carving_mask': {\r\n step: StringNode({ enum: 'generation_step' })\r\n },\r\n 'minecraft:cave_surface': {\r\n surface: StringNode({ enum: ['floor', 'ceiling'] }),\r\n floor_to_ceiling_search_range: core_1.NumberNode({ integer: true }),\r\n allow_water: core_1.BooleanNode(),\r\n },\r\n 'minecraft:chance': {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n },\r\n 'minecraft:count': CountConfig,\r\n 'minecraft:count_extra': {\r\n count: core_1.NumberNode({ integer: true, min: 0 }),\r\n extra_count: core_1.NumberNode({ integer: true, min: 0 }),\r\n extra_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:count_multilayer': CountConfig,\r\n 'minecraft:count_noise': {\r\n noise_level: core_1.NumberNode(),\r\n below_noise: core_1.NumberNode({ integer: true }),\r\n above_noise: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:count_noise_biased': {\r\n noise_to_count_ratio: core_1.NumberNode({ integer: true }),\r\n noise_factor: core_1.NumberNode(),\r\n noise_offset: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:decorated': {\r\n outer: Reference('configured_decorator'),\r\n inner: Reference('configured_decorator')\r\n },\r\n 'minecraft:environment_scan': {\r\n direction_of_search: StringNode({ enum: ['up', 'down'] }),\r\n max_steps: core_1.NumberNode({ integer: true, min: 1, max: 32 }),\r\n target_condition: Reference('block_predicate_worldgen')\r\n },\r\n 'minecraft:heightmap': {\r\n heightmap: StringNode({ enum: 'heightmap_type' })\r\n },\r\n 'minecraft:lava_lake': {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n },\r\n 'minecraft:range': {\r\n height: Reference('height_provider')\r\n },\r\n 'minecraft:scatter': {\r\n xz_spread: Common_1.IntProvider({ min: -16, max: 16 }),\r\n y_spread: Common_1.IntProvider({ min: -16, max: 16 }),\r\n },\r\n 'minecraft:surface_relative_threshold': {\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n min_inclusive: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max_inclusive: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:water_depth_threshold': {\r\n max_water_depth: core_1.NumberNode({ integer: true })\r\n }\r\n }\r\n }, { context: 'decorator', category: 'predicate' })\r\n }, { context: 'decorator', category: 'predicate' }));\r\n}\r\nexports.initDecoratorSchemas = initDecoratorSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initProcessorListSchemas = exports.Processors = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initProcessorListSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n exports.Processors = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/processor_list' } }),\r\n change: v => undefined\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('processor_list'),\r\n change: v => ({\r\n processors: [{\r\n \"processor_type\": \"minecraft:nop\"\r\n }]\r\n })\r\n }\r\n ]);\r\n schemas.register('processor_list', core_1.Mod(core_1.ObjectNode({\r\n processors: core_1.ListNode(Reference('processor'))\r\n }, { context: 'processor_list' }), {\r\n default: () => ({\r\n processors: [{\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n }]\r\n })\r\n }));\r\n schemas.register('processor', core_1.Mod(core_1.ObjectNode({\r\n processor_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_processor' } }),\r\n [core_1.Switch]: [{ push: 'processor_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_age': {\r\n mossiness: core_1.NumberNode()\r\n },\r\n 'minecraft:block_ignore': {\r\n blocks: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:block_rot': {\r\n integrity: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:gravity': {\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n offset: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:protected_blocks': {\r\n value: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n },\r\n 'minecraft:rule': {\r\n rules: core_1.ListNode(Reference('processor_rule'))\r\n }\r\n }\r\n }, { category: 'function', context: 'processor' }), {\r\n default: () => ({\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n })\r\n }));\r\n schemas.register('processor_rule', core_1.Mod(core_1.ObjectNode({\r\n position_predicate: core_1.Opt(Reference('pos_rule_test')),\r\n location_predicate: Reference('rule_test'),\r\n input_predicate: Reference('rule_test'),\r\n output_state: Reference('block_state'),\r\n output_nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block' } } }))\r\n }, { category: 'predicate', context: 'processor_rule' }), {\r\n default: () => ({\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n })\r\n }));\r\n const posTestFields = {\r\n min_dist: core_1.Opt(core_1.NumberNode({ min: 0, max: 255, integer: true })),\r\n max_dist: core_1.Opt(core_1.NumberNode({ min: 0, max: 255, integer: true })),\r\n min_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n max_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 }))\r\n };\r\n schemas.register('pos_rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'pos_rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:axis_aligned_linear_pos': {\r\n axis: StringNode({ enum: ['x', 'y', 'z'] }),\r\n ...posTestFields\r\n },\r\n 'minecraft:linear_pos': posTestFields\r\n }\r\n }, { context: 'pos_rule_test', disableSwitchContext: true }));\r\n schemas.register('rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:blockstate_match': {\r\n block_state: Reference('block_state')\r\n },\r\n 'minecraft:random_block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_blockstate_match': {\r\n block_state: Reference('block_state'),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:tag_match': {\r\n tag: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }\r\n }\r\n }, { context: 'rule_test', disableSwitchContext: true }));\r\n}\r\nexports.initProcessorListSchemas = initProcessorListSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nrequire(\"./Decorator\");\r\nrequire(\"./ProcessorList\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nfunction initFeatureSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Feature = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('configured_feature')\r\n }\r\n ], { choiceContext: 'feature' });\r\n const RandomPatchConfig = {\r\n tries: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 })),\r\n xz_spread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n y_spread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n feature: Feature,\r\n };\r\n const DiskConfig = {\r\n state: Reference('block_state'),\r\n radius: Common_1.IntProvider({ min: 0, max: 8 }),\r\n half_height: core_1.NumberNode({ integer: true, min: 0, max: 4 }),\r\n targets: core_1.ListNode(Reference('block_state'))\r\n };\r\n const HugeMushroomConfig = {\r\n cap_provider: Reference('block_state_provider'),\r\n stem_provider: Reference('block_state_provider'),\r\n foliage_radius: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n };\r\n const TargetBlockState = core_1.ObjectNode({\r\n target: Reference('rule_test'),\r\n state: Reference('block_state')\r\n });\r\n const OreConfig = {\r\n size: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n discard_chance_on_air_exposure: core_1.NumberNode({ min: 0, max: 1 }),\r\n targets: core_1.ListNode(TargetBlockState)\r\n };\r\n const VegetationPatchConfig = {\r\n surface: StringNode({ enum: 'cave_surface' }),\r\n depth: Common_1.IntProvider({ min: 1, max: 128 }),\r\n vertical_range: core_1.NumberNode({ integer: true, min: 1, max: 256 }),\r\n extra_bottom_block_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n extra_edge_column_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n vegetation_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n xz_radius: Common_1.IntProvider(),\r\n replaceable: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n ground_state: Reference('block_state_provider'),\r\n vegetation_feature: Feature\r\n };\r\n schemas.register('configured_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bamboo': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:basalt_columns': {\r\n reach: Common_1.IntProvider({ min: 0, max: 3 }),\r\n height: Common_1.IntProvider({ min: 1, max: 10 })\r\n },\r\n 'minecraft:block_column': {\r\n direction: StringNode({ enum: ['up', 'down', 'north', 'east', 'south', 'west'] }),\r\n allowed_placement: Reference('block_predicate_worldgen'),\r\n prioritize_tip: core_1.BooleanNode(),\r\n layers: core_1.ListNode(core_1.ObjectNode({\r\n height: Common_1.IntProvider({ min: 0 }),\r\n provider: Reference('block_state_provider')\r\n }))\r\n },\r\n 'minecraft:block_pile': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:decorated': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:decorated_flower': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:delta_feature': {\r\n contents: Reference('block_state'),\r\n rim: Reference('block_state'),\r\n size: Common_1.IntProvider({ min: 0, max: 16 }),\r\n rim_size: Common_1.IntProvider({ min: 0, max: 16 })\r\n },\r\n 'minecraft:disk': DiskConfig,\r\n 'minecraft:dripstone_cluster': {\r\n floor_to_ceiling_search_range: core_1.NumberNode({ integer: true, min: 1, max: 512 }),\r\n height: Common_1.IntProvider({ min: 0, max: 128 }),\r\n radius: Common_1.IntProvider({ min: 0, max: 128 }),\r\n max_stalagmite_stalactite_height_diff: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n height_deviation: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n dripstone_block_layer_thickness: Common_1.IntProvider({ min: 0, max: 128 }),\r\n density: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n wetness: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n chance_of_dripstone_column_at_max_distance_from_center: core_1.NumberNode({ min: 0, max: 1 }),\r\n max_distance_from_edge_affecting_chance_of_dripstone_column: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n max_distance_from_center_affecting_height_bias: core_1.NumberNode({ integer: true, min: 1, max: 64 })\r\n },\r\n 'minecraft:end_gateway': {\r\n exact: core_1.BooleanNode(),\r\n exit: core_1.Opt(Reference('block_pos'))\r\n },\r\n 'minecraft:end_spike': {\r\n crystal_invulnerable: core_1.Opt(core_1.BooleanNode()),\r\n crystal_beam_target: core_1.Opt(Reference('block_pos')),\r\n spikes: core_1.ListNode(core_1.ObjectNode({\r\n centerX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n centerZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n height: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n guarded: core_1.Opt(core_1.BooleanNode())\r\n }))\r\n },\r\n 'minecraft:fill_layer': {\r\n state: Reference('block_state'),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 255 })\r\n },\r\n 'minecraft:flower': RandomPatchConfig,\r\n 'minecraft:forest_rock': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:fossil': {\r\n max_empty_corners_allowed: core_1.NumberNode({ integer: true, min: 0, max: 7 }),\r\n fossil_structures: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$structure' } })),\r\n overlay_structures: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$structure' } })),\r\n fossil_processors: ProcessorList_1.Processors,\r\n overlay_processors: ProcessorList_1.Processors,\r\n },\r\n 'minecraft:geode': {\r\n blocks: core_1.ObjectNode({\r\n filling_provider: Reference('block_state_provider'),\r\n inner_layer_provider: Reference('block_state_provider'),\r\n alternate_inner_layer_provider: Reference('block_state_provider'),\r\n middle_layer_provider: Reference('block_state_provider'),\r\n outer_layer_provider: Reference('block_state_provider'),\r\n inner_placements: core_1.ListNode(Reference('block_state')),\r\n cannot_replace: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n invalid_blocks: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }),\r\n layers: core_1.ObjectNode({\r\n filling: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n inner_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n middle_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n outer_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n }),\r\n crack: core_1.ObjectNode({\r\n generate_crack_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n base_crack_size: core_1.Opt(core_1.NumberNode({ min: 0, max: 5 })),\r\n crack_point_offset: core_1.Opt(core_1.NumberNode({ min: 0, max: 10, integer: true })),\r\n }),\r\n noise_multiplier: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n use_potential_placements_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n use_alternate_layer0_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n placements_require_layer0_alternate: core_1.Opt(core_1.BooleanNode()),\r\n outer_wall_distance: core_1.Opt(Common_1.IntProvider({ min: 1, max: 20 })),\r\n distribution_points: core_1.Opt(Common_1.IntProvider({ min: 1, max: 20 })),\r\n point_offset: core_1.Opt(Common_1.IntProvider({ min: 0, max: 10 })),\r\n min_gen_offset: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max_gen_offset: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n invalid_blocks_threshold: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:glow_lichen': {\r\n search_range: core_1.Opt(core_1.NumberNode({ min: 1, max: 64, integer: true })),\r\n chance_of_spreading: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n can_place_on_floor: core_1.Opt(core_1.BooleanNode()),\r\n can_place_on_ceiling: core_1.Opt(core_1.BooleanNode()),\r\n can_place_on_wall: core_1.Opt(core_1.BooleanNode()),\r\n can_be_placed_on: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:huge_brown_mushroom': HugeMushroomConfig,\r\n 'minecraft:huge_fungus': {\r\n hat_state: Reference('block_state'),\r\n decor_state: Reference('block_state'),\r\n stem_state: Reference('block_state'),\r\n valid_base_block: Reference('block_state'),\r\n planted: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:huge_red_mushroom': HugeMushroomConfig,\r\n 'minecraft:ice_patch': DiskConfig,\r\n 'minecraft:iceberg': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:lake': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:large_dripstone': {\r\n floor_to_ceiling_search_range: core_1.Opt(core_1.NumberNode({ integer: true, min: 1, max: 512 })),\r\n column_radius: Common_1.IntProvider({ min: 0, max: 60 }),\r\n height_scale: Common_1.FloatProvider({ min: 0, max: 20 }),\r\n max_column_radius_to_cave_height_ratio: core_1.NumberNode({ min: 0, max: 1 }),\r\n stalactite_bluntness: Common_1.FloatProvider({ min: 0.1, max: 10 }),\r\n stalagmite_bluntness: Common_1.FloatProvider({ min: 0.1, max: 10 }),\r\n wind_speed: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n min_radius_for_wind: core_1.NumberNode({ integer: true, min: 0, max: 100 }),\r\n min_bluntness_for_wind: core_1.NumberNode({ min: 0, max: 5 })\r\n },\r\n 'minecraft:nether_forest_vegetation': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:netherrack_replace_blobs': {\r\n state: Reference('block_state'),\r\n target: Reference('block_state'),\r\n radius: Common_1.IntProvider({ min: 0, max: 12 })\r\n },\r\n 'minecraft:no_bonemeal_flower': RandomPatchConfig,\r\n 'minecraft:ore': OreConfig,\r\n 'minecraft:pointed_dripstone': {\r\n chance_of_taller_dripstone: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n chance_of_directional_spread: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n chance_of_spread_radius2: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n chance_of_spread_radius3: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n },\r\n 'minecraft:random_patch': RandomPatchConfig,\r\n 'minecraft:random_boolean_selector': {\r\n feature_false: Feature,\r\n feature_true: Feature\r\n },\r\n 'minecraft:random_selector': {\r\n features: core_1.ListNode(core_1.ObjectNode({\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n feature: Feature\r\n })),\r\n default: Feature\r\n },\r\n 'minecraft:replace_single_block': {\r\n targets: core_1.ListNode(TargetBlockState)\r\n },\r\n 'minecraft:root_system': {\r\n required_vertical_space_for_tree: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_radius: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_placement_attempts: core_1.NumberNode({ integer: true, min: 1, max: 256 }),\r\n root_column_max_height: core_1.NumberNode({ integer: true, min: 1, max: 4096 }),\r\n hanging_root_radius: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n hanging_roots_vertical_span: core_1.NumberNode({ integer: true, min: 0, max: 16 }),\r\n hanging_root_placement_attempts: core_1.NumberNode({ integer: true, min: 0, max: 256 }),\r\n allowed_vertical_water_for_tree: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_replaceable: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n root_state_provider: Reference('block_state_provider'),\r\n hanging_root_state_provider: Reference('block_state_provider'),\r\n feature: Feature\r\n },\r\n 'minecraft:scattered_ore': OreConfig,\r\n 'minecraft:sea_pickle': {\r\n count: Common_1.IntProvider({ min: 0, max: 256 })\r\n },\r\n 'minecraft:seagrass': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:simple_block': {\r\n to_place: Reference('block_state_provider')\r\n },\r\n 'minecraft:simple_random_selector': {\r\n features: core_1.ListNode(Feature)\r\n },\r\n 'minecraft:spring_feature': {\r\n state: Reference('fluid_state'),\r\n rock_count: core_1.NumberNode({ integer: true }),\r\n hole_count: core_1.NumberNode({ integer: true }),\r\n requires_block_below: core_1.BooleanNode(),\r\n valid_blocks: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:tree': {\r\n ignore_vines: core_1.Opt(core_1.BooleanNode()),\r\n force_dirt: core_1.Opt(core_1.BooleanNode()),\r\n minimum_size: Reference('feature_size'),\r\n dirt_provider: Reference('block_state_provider'),\r\n trunk_provider: Reference('block_state_provider'),\r\n foliage_provider: Reference('block_state_provider'),\r\n trunk_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/trunk_placer_type' } }),\r\n base_height: core_1.NumberNode({ integer: true, min: 0, max: 32 }),\r\n height_rand_a: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n height_rand_b: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bending_trunk_placer': {\r\n bend_length: Common_1.IntProvider({ min: 1, max: 64 }),\r\n min_height_for_leaves: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n }\r\n }\r\n }, { context: 'trunk_placer' }),\r\n foliage_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/foliage_placer_type' } }),\r\n radius: Common_1.IntProvider({ min: 0, max: 16 }),\r\n offset: Common_1.IntProvider({ min: 0, max: 16 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:blob_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:bush_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:fancy_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:jungle_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:mega_pine_foliage_placer': {\r\n crown_height: Common_1.IntProvider({ min: 0, max: 24 })\r\n },\r\n 'minecraft:pine_foliage_placer': {\r\n height: Common_1.IntProvider({ min: 0, max: 24 })\r\n },\r\n 'minecraft:random_spread_foliage_placer': {\r\n foliage_height: Common_1.IntProvider({ min: 1, max: 512 }),\r\n leaf_placement_attempts: core_1.NumberNode({ integer: true, min: 0, max: 256 })\r\n },\r\n 'minecraft:spruce_foliage_placer': {\r\n trunk_height: Common_1.IntProvider({ min: 0, max: 24 })\r\n }\r\n }\r\n }, { context: 'foliage_placer', disableSwitchContext: true }),\r\n decorators: core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/tree_decorator_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alter_ground': {\r\n provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:beehive': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:cocoa': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }\r\n }\r\n }, { context: 'tree_decorator' }))\r\n },\r\n 'minecraft:underwater_magma': {\r\n floor_search_range: core_1.NumberNode({ integer: true, min: 0, max: 512 }),\r\n placement_radius_around_floor: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n placement_probability_per_valid_position: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:vegetation_patch': VegetationPatchConfig,\r\n 'minecraft:waterlogged_vegetation_patch': VegetationPatchConfig\r\n }\r\n }, { context: 'feature' })\r\n }, { context: 'feature' }), {\r\n default: () => ({\r\n type: 'minecraft:decorated',\r\n config: {\r\n decorator: {\r\n type: 'minecraft:count',\r\n config: {\r\n count: 4\r\n }\r\n },\r\n feature: {\r\n type: 'minecraft:tree',\r\n config: {\r\n ignore_vines: true,\r\n minimum_size: {\r\n type: 'minecraft:two_layers_feature_size'\r\n },\r\n trunk_placer: {\r\n type: 'minecraft:straight_trunk_placer',\r\n base_height: 5,\r\n height_rand_a: 2,\r\n height_rand_b: 0\r\n },\r\n foliage_placer: {\r\n type: 'minecraft:blob_foliage_placer',\r\n radius: 2,\r\n offset: 0,\r\n height: 3\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('feature_size', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature_size_type' } }),\r\n min_clipped_height: core_1.Opt(core_1.NumberNode({ min: 0, max: 80 })),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:two_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 81 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n },\r\n 'minecraft:three_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n upper_limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n middle_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n }\r\n }\r\n }, { disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:two_layers_feature_size'\r\n })\r\n }));\r\n const NoiseProvider = {\r\n seed: core_1.NumberNode({ integer: true }),\r\n noise: Reference('noise_parameters'),\r\n scale: core_1.Mod(core_1.NumberNode({ min: Number.MIN_VALUE }), { default: () => 1 })\r\n };\r\n schemas.register('block_state_provider', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_state_provider_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:dual_noise_provider': {\r\n ...NoiseProvider,\r\n variety: Common_1.InclusiveRange({ integer: true, min: 1, max: 64 }),\r\n slow_noise: Reference('noise_parameters'),\r\n slow_scale: core_1.Mod(core_1.NumberNode({ min: Number.MIN_VALUE }), { default: () => 1 }),\r\n states: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:noise_threshold_provider': {\r\n ...NoiseProvider,\r\n threshold: core_1.NumberNode({ min: -1, max: 1 }),\r\n high_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n default_state: Reference('block_state'),\r\n low_states: core_1.ListNode(Reference('block_state')),\r\n high_states: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:noise_provider': {\r\n ...NoiseProvider,\r\n states: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:randomized_int_state_provider': {\r\n property: StringNode(),\r\n values: Common_1.IntProvider(),\r\n source: Reference('block_state_provider')\r\n },\r\n 'minecraft:rotated_block_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:simple_state_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:weighted_state_provider': {\r\n entries: core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n data: Reference('block_state')\r\n }), {\r\n default: () => ({\r\n data: {}\r\n })\r\n }))\r\n }\r\n }\r\n }, { context: 'block_state_provider' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_state_provider'\r\n })\r\n }));\r\n schemas.register('block_predicate_worldgen', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'block_predicate_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:all_of': {\r\n predicates: core_1.ListNode(Reference('block_predicate_worldgen'))\r\n },\r\n 'minecraft:any_of': {\r\n predicates: core_1.ListNode(Reference('block_predicate_worldgen'))\r\n },\r\n 'minecraft:matching_blocks': {\r\n offset: core_1.Opt(Reference('block_pos')),\r\n blocks: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:matching_fluids': {\r\n offset: core_1.Opt(Reference('block_pos')),\r\n fluids: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'fluid' } }))\r\n },\r\n 'minecraft:not': {\r\n predicate: Reference('block_predicate_worldgen')\r\n },\r\n 'minecraft:would_survive': {\r\n offset: core_1.Opt(Reference('block_pos')),\r\n state: Reference('block_state')\r\n }\r\n }\r\n }, { context: 'block_predicate' }), {\r\n default: () => ({\r\n type: 'minecraft:true'\r\n })\r\n }));\r\n}\r\nexports.initFeatureSchemas = initFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initNoiseSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initNoiseSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('noise_settings', core_1.Mod(core_1.ObjectNode({\r\n bedrock_roof_position: core_1.NumberNode({ integer: true }),\r\n bedrock_floor_position: core_1.NumberNode({ integer: true }),\r\n sea_level: core_1.NumberNode({ integer: true }),\r\n disable_mob_generation: core_1.BooleanNode(),\r\n noise_caves_enabled: core_1.BooleanNode(),\r\n noodle_caves_enabled: core_1.BooleanNode(),\r\n aquifers_enabled: core_1.BooleanNode(),\r\n deepslate_enabled: core_1.BooleanNode(),\r\n ore_veins_enabled: core_1.BooleanNode(),\r\n legacy_random_source: core_1.BooleanNode(),\r\n default_block: Reference('block_state'),\r\n default_fluid: Reference('block_state'),\r\n noise: core_1.ObjectNode({\r\n min_y: core_1.NumberNode({ integer: true, min: -2048, max: 2047 }),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n density_factor: core_1.NumberNode(),\r\n density_offset: core_1.NumberNode(),\r\n size_horizontal: core_1.NumberNode({ integer: true }),\r\n size_vertical: core_1.NumberNode({ integer: true }),\r\n island_noise_override: core_1.Opt(core_1.BooleanNode()),\r\n amplified: core_1.Opt(core_1.BooleanNode()),\r\n sampling: core_1.ObjectNode({\r\n xz_scale: core_1.NumberNode(),\r\n y_scale: core_1.NumberNode(),\r\n xz_factor: core_1.NumberNode(),\r\n y_factor: core_1.NumberNode()\r\n }),\r\n bottom_slide: Reference('noise_slider'),\r\n top_slide: Reference('noise_slider'),\r\n terrain_shaper: Reference('terrain_shaper')\r\n }),\r\n surface_rule: Reference('material_rule'),\r\n structures: Reference('generator_structures')\r\n }, { context: 'noise_settings' }), node => ({\r\n default: () => Common_1.DefaultNoiseSettings,\r\n validate: (path, value, errors, options) => {\r\n var _a, _b, _c, _d;\r\n value = node.validate(path, value, errors, options);\r\n if (((_a = value === null || value === void 0 ? void 0 : value.noise) === null || _a === void 0 ? void 0 : _a.min_y) + ((_b = value === null || value === void 0 ? void 0 : value.noise) === null || _b === void 0 ? void 0 : _b.height) > 2047) {\r\n errors.add(path.push('noise').push('height'), 'error.min_y_plus_height', 2047);\r\n }\r\n if (((_c = value === null || value === void 0 ? void 0 : value.noise) === null || _c === void 0 ? void 0 : _c.height) % 16 !== 0) {\r\n errors.add(path.push('noise').push('height'), 'error.height_multiple', 16);\r\n }\r\n if (((_d = value === null || value === void 0 ? void 0 : value.noise) === null || _d === void 0 ? void 0 : _d.min_y) % 16 !== 0) {\r\n errors.add(path.push('noise').push('min_y'), 'error.min_y_multiple', 16);\r\n }\r\n return value;\r\n }\r\n })));\r\n schemas.register('noise_slider', core_1.ObjectNode({\r\n target: core_1.NumberNode(),\r\n size: core_1.NumberNode({ integer: true, min: 0 }),\r\n offset: core_1.NumberNode({ integer: true })\r\n }));\r\n schemas.register('generator_structures', core_1.ObjectNode({\r\n stronghold: core_1.Opt(core_1.ObjectNode({\r\n distance: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n spread: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n count: core_1.NumberNode({ integer: true, min: 1, max: 4095 })\r\n })),\r\n structures: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }), core_1.Mod(core_1.ObjectNode({\r\n spacing: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n separation: core_1.Mod(core_1.NumberNode({ integer: true, min: 0, max: 4096 }), (node) => ({\r\n validate: (path, value, errors, options) => {\r\n if (path.pop().push('spacing').get() <= value) {\r\n errors.add(path, 'error.separation_smaller_spacing');\r\n }\r\n return node.validate(path, value, errors, options);\r\n }\r\n })),\r\n salt: core_1.NumberNode({ integer: true, min: 0 })\r\n }, { context: 'generator_structure' }), {\r\n default: () => ({\r\n spacing: 10,\r\n separation: 5,\r\n salt: 0\r\n })\r\n }))\r\n }));\r\n schemas.register('generator_layer', core_1.Mod(core_1.ObjectNode({\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n height: core_1.NumberNode({ integer: true, min: 1 })\r\n }), {\r\n default: () => ({\r\n block: 'minecraft:stone',\r\n height: 1\r\n })\r\n }));\r\n schemas.register('terrain_shaper', core_1.Mod(core_1.ObjectNode({\r\n offset: Reference('terrain_spline'),\r\n factor: Reference('terrain_spline'),\r\n jaggedness: Reference('terrain_spline'),\r\n }, { context: 'terrain_shaper' }), {\r\n default: () => ({\r\n offset: 0,\r\n factor: 0,\r\n jaggedness: 0,\r\n })\r\n }));\r\n schemas.register('terrain_spline', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode()\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n coordinate: core_1.Mod(StringNode({ enum: ['continents', 'erosion', 'weirdness', 'ridges'] }), { default: () => 'continents' }),\r\n points: core_1.ListNode(core_1.ObjectNode({\r\n location: core_1.NumberNode(),\r\n derivative: core_1.NumberNode(),\r\n value: Reference('terrain_spline')\r\n }))\r\n }, { category: 'function' })\r\n }\r\n ], { context: 'terrain_spline', choiceContext: 'terrain_spline' }), {\r\n default: () => 0\r\n }));\r\n}\r\nexports.initNoiseSettingsSchemas = initNoiseSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initStructureFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initStructureFeatureSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const templatePoolConfig = {\r\n start_pool: StringNode({ validator: 'resource', params: { pool: '$worldgen/template_pool' } }),\r\n size: core_1.NumberNode({ integer: true })\r\n };\r\n schemas.register('configured_structure_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bastion_remnant': templatePoolConfig,\r\n 'minecraft:buried_treasure': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:mineshaft': {\r\n type: StringNode({ enum: ['normal', 'mesa'] }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:nether_fossil': {\r\n height: Reference('height_provider')\r\n },\r\n 'minecraft:ocean_ruin': {\r\n biome_temp: StringNode({ enum: ['cold', 'warm'] }),\r\n large_probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n cluster_probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:pillager_outpost': templatePoolConfig,\r\n 'minecraft:ruined_portal': {\r\n portal_type: StringNode({ enum: ['standard', 'desert', 'jungle', 'mountain', 'nether', 'ocean', 'swamp'] })\r\n },\r\n 'minecraft:shipwreck': {\r\n is_beached: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:village': templatePoolConfig\r\n }\r\n }, { context: 'structure_feature', disableSwitchContext: true })\r\n }, { context: 'structure_feature' }), {\r\n default: () => ({\r\n type: 'minecraft:bastion_remnant',\r\n config: {\r\n start_pool: 'minecraft:bastion/starts',\r\n size: 6\r\n }\r\n })\r\n }));\r\n}\r\nexports.initStructureFeatureSchemas = initStructureFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSurfaceRuleSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initSurfaceRuleSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('material_rule', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/material_rule' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block': {\r\n result_state: Reference('block_state'),\r\n },\r\n 'minecraft:condition': {\r\n if_true: Reference('material_condition'),\r\n then_run: Reference('material_rule')\r\n },\r\n 'minecraft:sequence': {\r\n sequence: core_1.ListNode(Reference('material_rule'))\r\n }\r\n }\r\n }, { context: 'material_rule', category: 'pool' }), {\r\n default: () => ({\r\n type: 'minecraft:block',\r\n result_state: {\r\n Name: 'minecraft:stone'\r\n }\r\n })\r\n }));\r\n schemas.register('material_condition', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/material_condition' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:biome': {\r\n biome_is: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }))\r\n },\r\n 'minecraft:noise_threshold': {\r\n noise: StringNode({ validator: 'resource', params: { pool: '$worldgen/noise' } }),\r\n min_threshold: core_1.NumberNode(),\r\n max_threshold: core_1.NumberNode()\r\n },\r\n 'minecraft:not': {\r\n invert: Reference('material_condition')\r\n },\r\n 'minecraft:stone_depth': {\r\n surface_type: StringNode({ enum: 'cave_surface' }),\r\n add_run_depth: core_1.BooleanNode()\r\n },\r\n 'minecraft:water': {\r\n offset: core_1.NumberNode({ integer: true }),\r\n run_depth_multiplier: core_1.NumberNode({ integer: true, min: -20, max: 20 }),\r\n add_stone_depth: core_1.BooleanNode()\r\n },\r\n 'minecraft:y_above': {\r\n anchor: Reference('vertical_anchor'),\r\n run_depth_multiplier: core_1.NumberNode({ integer: true, min: -20, max: 20 }),\r\n add_stone_depth: core_1.BooleanNode()\r\n }\r\n }\r\n }, { context: 'material_condition' }), {\r\n default: () => ({\r\n type: 'minecraft:biome',\r\n is_biome: 'minecraft:plains'\r\n })\r\n }));\r\n}\r\nexports.initSurfaceRuleSchemas = initSurfaceRuleSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTemplatePoolSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nrequire(\"./ProcessorList\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nfunction initTemplatePoolSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('template_pool', core_1.Mod(core_1.ObjectNode({\r\n fallback: StringNode(),\r\n elements: core_1.ListNode(Reference('template_weighted_element'))\r\n }, { context: 'template_pool' }), {\r\n default: () => ({\r\n fallback: 'minecraft:empty',\r\n elements: [\r\n {\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n }\r\n ]\r\n })\r\n }));\r\n schemas.register('template_weighted_element', core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n element: Reference('template_element')\r\n }, { category: 'pool' }), {\r\n default: () => ({\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n })\r\n }));\r\n schemas.register('template_element', core_1.Mod(core_1.ObjectNode({\r\n element_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_pool_element' } }),\r\n projection: StringNode({ enum: ['rigid', 'terrain_matching'] }),\r\n [core_1.Switch]: [{ push: 'element_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:feature_pool_element': {\r\n feature: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n 'minecraft:legacy_single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: ProcessorList_1.Processors\r\n },\r\n 'minecraft:list_pool_element': {\r\n elements: core_1.ListNode(Reference('template_element'))\r\n },\r\n 'minecraft:single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: ProcessorList_1.Processors\r\n }\r\n }\r\n }, { context: 'template_element', disableSwitchContext: true }), {\r\n default: () => ({\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n })\r\n }));\r\n}\r\nexports.initTemplatePoolSchemas = initTemplatePoolSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldgenSchemas = void 0;\r\nconst Biome_1 = require(\"./Biome\");\r\nconst Carver_1 = require(\"./Carver\");\r\nconst Decorator_1 = require(\"./Decorator\");\r\nconst Feature_1 = require(\"./Feature\");\r\nconst NoiseSettings_1 = require(\"./NoiseSettings\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nconst StructureFeature_1 = require(\"./StructureFeature\");\r\nconst SurfaceRule_1 = require(\"./SurfaceRule\");\r\nconst TemplatePool_1 = require(\"./TemplatePool\");\r\nfunction initWorldgenSchemas(schemas, collections) {\r\n // `ProcessorList.ts` has exports. It should be initialized first. \r\n ProcessorList_1.initProcessorListSchemas(schemas, collections);\r\n Biome_1.initBiomeSchemas(schemas, collections);\r\n Carver_1.initCarverSchemas(schemas, collections);\r\n Decorator_1.initDecoratorSchemas(schemas, collections);\r\n Feature_1.initFeatureSchemas(schemas, collections);\r\n NoiseSettings_1.initNoiseSettingsSchemas(schemas, collections);\r\n StructureFeature_1.initStructureFeatureSchemas(schemas, collections);\r\n SurfaceRule_1.initSurfaceRuleSchemas(schemas, collections);\r\n TemplatePool_1.initTemplatePoolSchemas(schemas, collections);\r\n}\r\nexports.initWorldgenSchemas = initWorldgenSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initWorldSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('world_settings', core_1.Mod(core_1.ObjectNode({\r\n generate_features: core_1.BooleanNode(),\r\n bonus_chest: core_1.BooleanNode(),\r\n seed: core_1.NumberNode({ integer: true }),\r\n dimensions: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$dimension' } }), Reference('dimension'))\r\n }, { context: 'world_settings' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n generate_features: true,\r\n bonus_chest: false,\r\n seed,\r\n dimensions: {\r\n 'minecraft:overworld': {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:vanilla_layered',\r\n seed\r\n },\r\n settings: 'minecraft:overworld',\r\n }\r\n },\r\n 'minecraft:the_nether': {\r\n type: 'minecraft:the_nether',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:multi_noise',\r\n seed,\r\n humidity_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n altitude_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n weirdness_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n temperature_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n biomes: [\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: 0.0 },\r\n biome: 'minecraft:nether_wastes'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: -0.5 },\r\n biome: 'minecraft:soul_sand_valley'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.4, humidity: 0.0 },\r\n biome: 'minecraft:crimson_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.375, temperature: 0.0, humidity: 0.5 },\r\n biome: 'minecraft:warped_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.175, temperature: -0.5, humidity: 0.0 },\r\n biome: 'minecraft:basalt_deltas'\r\n }\r\n ]\r\n },\r\n settings: 'minecraft:nether'\r\n }\r\n },\r\n 'minecraft:the_end': {\r\n type: \"minecraft:the_end\",\r\n generator: {\r\n type: \"minecraft:noise\",\r\n seed,\r\n biome_source: {\r\n type: \"minecraft:the_end\",\r\n seed\r\n },\r\n settings: \"minecraft:end\"\r\n }\r\n }\r\n }\r\n };\r\n }\r\n }));\r\n}\r\nexports.initWorldSettingsSchemas = initWorldSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSchemas = void 0;\r\nconst Advancement_1 = require(\"./Advancement\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Condition_1 = require(\"./Condition\");\r\nconst Dimension_1 = require(\"./Dimension\");\r\nconst DimensionType_1 = require(\"./DimensionType\");\r\nconst ItemModifier_1 = require(\"./ItemModifier\");\r\nconst LootTable_1 = require(\"./LootTable\");\r\nconst PackMcmeta_1 = require(\"./PackMcmeta\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nconst Recipe_1 = require(\"./Recipe\");\r\nconst Tags_1 = require(\"./Tags\");\r\nconst TextComponent_1 = require(\"./TextComponent\");\r\nconst worldgen_1 = require(\"./worldgen\");\r\nconst WorldSettings_1 = require(\"./WorldSettings\");\r\nfunction initSchemas(schemas, collections) {\r\n // `Common.ts` is the only file that has exports. It should be initialized first. \r\n Common_1.initCommonSchemas(schemas, collections);\r\n Advancement_1.initAdvancementSchemas(schemas, collections);\r\n Condition_1.initConditionSchemas(schemas, collections);\r\n DimensionType_1.initDimensionTypeSchemas(schemas, collections);\r\n Dimension_1.initDimensionSchemas(schemas, collections);\r\n ItemModifier_1.initItemModifierSchemas(schemas, collections);\r\n LootTable_1.initLootTableSchemas(schemas, collections);\r\n PackMcmeta_1.initPackMcmetaSchemas(schemas, collections);\r\n Predicates_1.initPredicatesSchemas(schemas, collections);\r\n Recipe_1.initRecipeSchemas(schemas, collections);\r\n Tags_1.initTagsSchemas(schemas, collections);\r\n TextComponent_1.initTextComponentSchemas(schemas, collections);\r\n worldgen_1.initWorldgenSchemas(schemas, collections);\r\n WorldSettings_1.initWorldSettingsSchemas(schemas, collections);\r\n}\r\nexports.initSchemas = initSchemas;\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getSchemas = exports.getCollections = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Collections_1 = require(\"./Collections\");\r\nconst schemas_1 = require(\"./schemas\");\r\nexports.lootContext = __importStar(require(\"./LootContext\"));\r\nfunction getCollections() {\r\n const collections = new core_1.CollectionRegistry();\r\n Collections_1.initCollections(collections);\r\n return collections;\r\n}\r\nexports.getCollections = getCollections;\r\n/**\r\n * @param collections The CollectionRegistry for this version. Note that apart from\r\n * the built-in collections, the client of this module is responsible for futhermore\r\n * adding the vanilla registries to it: the collection IDs shouldn't contain the\r\n * namespace (`minecraft:`) part, while the values within the collections should.\r\n *\r\n * @example\r\n * for (const key in VANILLA_REGISTRIES>) {\r\n * collections.register(\r\n * key.replace(/^minecraft:/, ''),\r\n * Object.keys(VANILLA_REGISTRIES[key].entries)\r\n * )\r\n * }\r\n */\r\nfunction getSchemas(collections) {\r\n const schemas = new core_1.SchemaRegistry();\r\n schemas_1.initSchemas(schemas, collections);\r\n return schemas;\r\n}\r\nexports.getSchemas = getSchemas;\r\n","'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n if (cur instanceof Buffer) {\n return Buffer.from(cur)\n }\n\n return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n opts = opts || {}\n\n if (opts.circles) return rfdcCircles(opts)\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n a2[k] = fn(cur)\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = clone(cur)\n }\n }\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n return o2\n }\n}\n\nfunction rfdcCircles (opts) {\n var refs = []\n var refsNew = []\n\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n var index = refs.indexOf(cur)\n if (index !== -1) {\n a2[k] = refsNew[index]\n } else {\n a2[k] = fn(cur)\n }\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = clone(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n}\n","import{useState as n,useReducer as t,useEffect as e,useLayoutEffect as r,useRef as u,useImperativeHandle as o,useMemo as i,useCallback as l,useContext as f,useDebugValue as c}from\"preact/hooks\";export*from\"preact/hooks\";import{Component as a,createElement as s,options as h,toChildArray as p,Fragment as v,render as d,hydrate as m,cloneElement as y,createRef as b,createContext as _}from\"preact\";export{createElement,createContext,createRef,Fragment,Component}from\"preact\";function C(n,t){for(var e in t)n[e]=t[e];return n}function S(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n){this.props=n}function g(n,t){function e(n){var e=this.props.ref,r=e==n.ref;return!r&&e&&(e.call?e(null):e.current=null),t?!t(this.props,n)||!r:S(this.props,n)}function r(t){return this.shouldComponentUpdate=e,s(n,t)}return r.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",r.prototype.isReactComponent=!0,r.__f=!0,r}(E.prototype=new a).isPureReactComponent=!0,E.prototype.shouldComponentUpdate=function(n,t){return S(this.props,n)||S(this.state,t)};var w=h.__b;h.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),w&&w(n)};var R=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function x(n){function t(t,e){var r=C({},t);return delete r.ref,n(r,(e=t.ref||e)&&(\"object\"!=typeof e||\"current\"in e)?e:null)}return t.$$typeof=R,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var N=function(n,t){return null==n?null:p(p(n).map(t))},k={map:N,forEach:N,count:function(n){return n?p(n).length:0},only:function(n){var t=p(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:p},A=h.__e;h.__e=function(n,t,e){if(n.then)for(var r,u=t;u=u.__;)if((r=u.__c)&&r.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),r.__c(n,t);A(n,t,e)};var O=h.unmount;function L(){this.__u=0,this.t=null,this.__b=null}function U(n){var t=n.__.__c;return t&&t.__e&&t.__e(n)}function D(n){var t,e,r;function u(u){if(t||(t=n()).then(function(n){e=n.default||n},function(n){r=n}),r)throw r;if(!e)throw t;return s(e,u)}return u.displayName=\"Lazy\",u.__f=!0,u}function F(){this.u=null,this.o=null}h.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),O&&O(n)},(L.prototype=new a).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=U(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__e){var n=r.state.__e;r.__v.__k[0]=function n(t,e,r){return t&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)}),t.__c&&t.__c.__P===e&&(t.__e&&r.insertBefore(t.__e,t.__d),t.__c.__e=!0,t.__c.__P=r)),t}(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate()}},f=!0===t.__h;r.__u++||f||r.setState({__e:r.__b=r.__v.__k[0]}),n.then(i,i)},L.prototype.componentWillUnmount=function(){this.t=[]},L.prototype.render=function(n,t){if(this.__b){if(this.__v.__k){var e=document.createElement(\"div\"),r=this.__v.__k[0].__c;this.__v.__k[0]=function n(t,e,r){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),t.__c.__H=null),null!=(t=C({},t)).__c&&(t.__c.__P===r&&(t.__c.__P=e),t.__c=null),t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)})),t}(this.__b,e,r.__O=r.__P)}this.__b=null}var u=t.__e&&s(v,null,n.fallback);return u&&(u.__h=null),[s(v,null,t.__e?null:n.children),u]};var M=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),t.i.removeChild(n)}}),d(s(T,{context:t.context},n.__v),t.l)):t.l&&t.componentWillUnmount()}function I(n,t){return s(j,{__v:n,i:t})}(F.prototype=new a).__e=function(n){var t=this,e=U(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),M(t,n,r)):u()};e?e(o):o()}},F.prototype.render=function(n){this.u=null,this.o=new Map;var t=p(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},F.prototype.componentDidUpdate=F.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){M(n,e,t)})};var W=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,P=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,V=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function z(n,t,e){return null==t.__k&&(t.textContent=\"\"),d(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function B(n,t,e){return m(n,t),\"function\"==typeof e&&e(),n?n.__c:null}a.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(n){Object.defineProperty(a.prototype,n,{configurable:!0,get:function(){return this[\"UNSAFE_\"+n]},set:function(t){Object.defineProperty(this,n,{configurable:!0,writable:!0,value:t})}})});var H=h.event;function Z(){}function Y(){return this.cancelBubble}function $(){return this.defaultPrevented}h.event=function(n){return H&&(n=H(n)),n.persist=Z,n.isPropagationStopped=Y,n.isDefaultPrevented=$,n.nativeEvent=n};var q,G={configurable:!0,get:function(){return this.class}},J=h.vnode;h.vnode=function(n){var t=n.type,e=n.props,r=e;if(\"string\"==typeof t){for(var u in r={},e){var o=e[u];\"value\"===u&&\"defaultValue\"in e&&null==o||(\"defaultValue\"===u&&\"value\"in e&&null==e.value?u=\"value\":\"download\"===u&&!0===o?o=\"\":/ondoubleclick/i.test(u)?u=\"ondblclick\":/^onchange(textarea|input)/i.test(u+t)&&!V(e.type)?u=\"oninput\":/^on(Ani|Tra|Tou|BeforeInp)/.test(u)?u=u.toLowerCase():P.test(u)?u=u.replace(/[A-Z0-9]/,\"-$&\").toLowerCase():null===o&&(o=void 0),r[u]=o)}\"select\"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=p(e.children).forEach(function(n){n.props.selected=-1!=r.value.indexOf(n.props.value)})),\"select\"==t&&null!=r.defaultValue&&(r.value=p(e.children).forEach(function(n){n.props.selected=r.multiple?-1!=r.defaultValue.indexOf(n.props.value):r.defaultValue==n.props.value})),n.props=r}t&&e.class!=e.className&&(G.enumerable=\"className\"in e,null!=e.className&&(r.class=e.className),Object.defineProperty(r,\"className\",G)),n.$$typeof=W,J&&J(n)};var K=h.__r;h.__r=function(n){K&&K(n),q=n.__c};var Q={ReactCurrentDispatcher:{current:{readContext:function(n){return q.__n[n.__c].props.value}}}},X=1,nn=2,tn=3,en=4,rn=5;function un(n,t){return t()}var on=\"object\"==typeof performance&&\"function\"==typeof performance.now?performance.now.bind(performance):function(){return Date.now()},ln=\"16.8.0\";function fn(n){return s.bind(null,n)}function cn(n){return!!n&&n.$$typeof===W}function an(n){return cn(n)?y.apply(null,arguments):n}function sn(n){return!!n.__k&&(d(null,n),!0)}function hn(n){return n&&(n.base||1===n.nodeType&&n)||null}var pn=function(n,t){return n(t)},vn=v;export default{useState:n,useReducer:t,useEffect:e,useLayoutEffect:r,useRef:u,useImperativeHandle:o,useMemo:i,useCallback:l,useContext:f,useDebugValue:c,version:\"16.8.0\",Children:k,render:z,hydrate:B,unmountComponentAtNode:sn,createPortal:I,createElement:s,createContext:_,createFactory:fn,cloneElement:an,createRef:b,Fragment:v,isValidElement:cn,findDOMNode:hn,Component:a,PureComponent:E,memo:g,forwardRef:x,unstable_batchedUpdates:pn,StrictMode:v,Suspense:L,SuspenseList:F,lazy:D,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Q};export{ln as version,k as Children,z as render,B as hydrate,sn as unmountComponentAtNode,I as createPortal,fn as createFactory,an as cloneElement,cn as isValidElement,hn as findDOMNode,E as PureComponent,g as memo,x as forwardRef,pn as unstable_batchedUpdates,vn as StrictMode,L as Suspense,F as SuspenseList,D as lazy,Q as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,X as unstable_ImmediatePriority,nn as unstable_UserBlockingPriority,tn as unstable_NormalPriority,en as unstable_LowPriority,rn as unstable_IdlePriority,un as unstable_runWithPriority,on as unstable_now};\n//# sourceMappingURL=compat.module.js.map\n","/*!\n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/([0-6].)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, ∞]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; ir in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[r]=o,s=(e,t)=>{for(var r in t||(t={}))i.call(t,r)&&a(e,r,t[r]);if(o)for(var r of o(t))n.call(t,r)&&a(e,r,t[r]);return e},c=(e,o)=>t(e,r(o)),l=e=>"symbol"==typeof e?e:e+"";const d={};var _,m,p,u,f={},h=[],g=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function b(e,t){for(var r in t)e[r]=t[r];return e}function v(e){var t=e.parentNode;t&&t.removeChild(e)}function y(e,t,r){var o,i,n,a=arguments,s={};for(n in t)"key"==n?o=t[n]:"ref"==n?i=t[n]:s[n]=t[n];if(arguments.length>3)for(r=[r],n=3;n0?N(p.type,p.props,p.key,null,p.__v):p)){if(p.__=r,p.__b=r.__b+1,null===(m=v[d])||m&&p.key==m.key&&p.type===m.type)v[d]=void 0;else for(_=0;_t.rank?-1:e.index-t.index}function W(e,t){return e.index=t,e.rank=function(e){return e.props.default?0:(t=e.props.path,X(t).map(G).join(""));var t}(e),e.props}function X(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")}function G(e){return":"==e.charAt(0)?1+"*+?".indexOf(e.charAt(e.length-1))||4:5}var V=null,J=[],Y=[],K={};function Q(){var e;return""+((e=V&&V.location?V.location:V&&V.getCurrentLocation?V.getCurrentLocation():"undefined"!=typeof location?location:K).pathname||"")+(e.search||"")}function ee(e,t){return void 0===t&&(t=!1),"string"!=typeof e&&e.url&&(t=e.replace,e=e.url),function(e){for(var t=J.length;t--;)if(J[t].canRoute(e))return!0;return!1}(e)&&function(e,t){void 0===t&&(t="push"),V&&V[t]?V[t](e):"undefined"!=typeof history&&history[t+"State"]&&history[t+"State"](null,null,e)}(e,t?"replace":"push"),te(e)}function te(e){for(var t=!1,r=0;r0},t.prototype.routeTo=function(e){this.setState({url:e});var t=this.canRoute(e);return this.updating||this.forceUpdate(),t},t.prototype.componentWillMount=function(){J.push(this),this.updating=!0},t.prototype.componentDidMount=function(){var e=this;V&&(this.unlisten=V.listen((function(t){e.routeTo(""+(t.pathname||"")+(t.search||""))}))),this.updating=!1},t.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),J.splice(J.indexOf(this),1)},t.prototype.componentWillUpdate=function(){this.updating=!0},t.prototype.componentDidUpdate=function(){this.updating=!1},t.prototype.getMatchingChildren=function(e,t,r){return e.filter(W).sort(Z).map((function(e){var o=H(t,e.props.path,e.props);if(o){if(!1!==r){var i={url:t,matches:o};return q(i,o),delete i.ref,delete i.key,function(e,t,r){var o,i,n,a=arguments,s=b({},e.props);for(n in t)"key"==n?o=t[n]:"ref"==n?i=t[n]:s[n]=t[n];if(arguments.length>3)for(r=[r],n=3;n=r.__.length&&r.__.push({}),r.__[e]}function ye(e){return me=1,function(e,t,r){var o=ve(le++,2);return o.t=e,o.__c||(o.__=[r?r(t):Le(void 0,t),function(e){var t=o.t(o.__[0],e);o.__[0]!==t&&(o.__=[t,o.__[1]],o.__c.setState({}))}],o.__c=de),o.__}(Le,e)}function Ne(e,t){var r=ve(le++,3);!_.__s&&Ae(r.__H,t)&&(r.__=e,r.__H=t,de.__H.__h.push(r))}function Oe(e){return me=5,we((function(){return{current:e}}),[])}function we(e,t){var r=ve(le++,7);return Ae(r.__H,t)&&(r.__=e(),r.__H=t,r.__h=e),r.__}function ke(e,t){return me=8,we((function(){return e}),t)}function xe(e){var t=ve(le++,10),r=ye();return t.__=e,de.componentDidCatch||(de.componentDidCatch=function(e){t.__&&t.__(e),r[1](e)}),[r[0],function(){r[1](void 0)}]}function Se(){pe.forEach((function(e){if(e.__P)try{e.__H.__h.forEach(Me),e.__H.__h.forEach(Pe),e.__H.__h=[]}catch(t){e.__H.__h=[],_.__e(t,e.__v)}})),pe=[]}_.__b=function(e){de=null,ue&&ue(e)},_.__r=function(e){fe&&fe(e),le=0;var t=(de=e.__c).__H;t&&(t.__h.forEach(Me),t.__h.forEach(Pe),t.__h=[])},_.diffed=function(e){he&&he(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(1!==pe.push(t)&&_e===_.requestAnimationFrame||((_e=_.requestAnimationFrame)||function(e){var t,r=function(){clearTimeout(o),je&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(r,100);je&&(t=requestAnimationFrame(r))})(Se)),de=void 0},_.__c=function(e,t){t.some((function(e){try{e.__h.forEach(Me),e.__h=e.__h.filter((function(e){return!e.__||Pe(e)}))}catch(r){t.some((function(e){e.__h&&(e.__h=[])})),t=[],_.__e(r,e.__v)}})),ge&&ge(e,t)},_.unmount=function(e){be&&be(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(Me)}catch(r){_.__e(r,t.__v)}};var je="function"==typeof requestAnimationFrame;function Me(e){var t=de;"function"==typeof e.__c&&e.__c(),de=t}function Pe(e){var t=de;e.__c=e.__(),de=t}function Ae(e,t){return!e||e.length!==t.length||t.some((function(t,r){return t!==e[r]}))}function Le(e,t){return"function"==typeof t?t(e):t}var Be="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Ce={},Te={},Ie={};Object.defineProperty(Ie,"__esModule",{value:!0}),Ie.ModelPath=Ie.Path=Ie.relativePath=void 0,Ie.relativePath=function(e,t){return t.reduce(((e,t)=>"pop"===t?e.pop():e.push(t.push)),e)};class ze{constructor(e,t){this.modelArr=null!=e?e:[],this.contextArr=null!=t?t:[]}last(){return this.modelArr[this.modelArr.length-1]}slice(e,t){return new ze(this.modelArr.slice(e,t),this.contextArr)}shift(){return new ze(this.modelArr.slice(1),this.contextArr)}pop(){return new ze(this.modelArr.slice(0,-1),this.contextArr)}push(e){return this.modelPush(e).contextPush(e)}modelPush(e){return new ze([...this.modelArr,e],[...this.contextArr])}contextPush(e){if("number"==typeof e)return this.copy();const t=e.startsWith("minecraft:")?e.slice(10):e;return new ze([...this.modelArr],[...this.contextArr,t])}copy(){return new ze([...this.modelArr],[...this.contextArr])}getArray(){return this.modelArr}withModel(e){return new Re(e,this)}getContext(){return this.contextArr}equals(e){return e.modelArr.length===this.modelArr.length&&e.modelArr.every(((e,t)=>e===this.modelArr[t]))}startsWith(e){return!(this.modelArr.lengthe===this.modelArr[t]))}endsWith(e){const t=this.modelArr.length-e.modelArr.length;return!(t<0)&&e.modelArr.every(((e,r)=>e===this.modelArr[t+r]))}toString(){return this.modelArr.map((e=>"string"==typeof e?`.${e}`:`[${e}]`)).join("").replace(/^\./,"")}forEach(e,t){return this.modelArr.forEach(e,t)}}Ie.Path=ze;class Re extends ze{constructor(e,t){super(null==t?void 0:t.modelArr,null==t?void 0:t.contextArr),this.model=e}getModel(){return this.model}get(){var e;return null===(e=this.model)||void 0===e?void 0:e.get(this)}set(e){var t;null===(t=this.model)||void 0===t||t.set(this,e)}slice(e,t){return new Re(this.model,super.slice(e,t))}shift(){return new Re(this.model,super.shift())}pop(){return new Re(this.model,super.pop())}push(e){return this.modelPush(e).contextPush(e)}modelPush(e){return new Re(this.model,super.modelPush(e))}contextPush(e){return new Re(this.model,super.contextPush(e))}copy(){return new Re(this.model,super.copy())}}Ie.ModelPath=Re;var Fe={};Object.defineProperty(Fe,"__esModule",{value:!0}),Fe.Errors=void 0;class Ee{constructor(){this.errors=[]}add(e,t,...r){return this.errors.push({path:e,error:t,params:r}),!1}get(e,t=!1){return t?this.errors.filter((t=>t.path.equals(e))):this.errors.filter((t=>t.path.startsWith(e)))}getAll(){return this.errors}clear(){this.errors=[]}count(){return this.errors.length}*[Symbol.iterator](){for(const e of this.errors)yield e}}Fe.Errors=Ee;var De={};function $e(e){return e.replace(/(\\|")/g,"\\$1")}Object.defineProperty(De,"__esModule",{value:!0}),De.hexId=De.quoteString=De.escapeString=void 0,De.escapeString=$e,De.quoteString=function(e){return`"${$e(e)}"`};const Ue=e=>("0"+e.toString(16)).substr(-2);De.hexId=function(e=12){var t=new Uint8Array(e/2);return window.crypto.getRandomValues(t),Array.from(t,Ue).join("")},Object.defineProperty(Te,"__esModule",{value:!0}),Te.DataModel=void 0;const qe=Ie,He=Fe,Ze=De;class We{constructor(e,t){var r,o,i,n;this.historyMax=null!==(r=null==t?void 0:t.historyMax)&&void 0!==r?r:50,this.verbose=null!==(o=null==t?void 0:t.verbose)&&void 0!==o&&o,this.wrapLists=null!==(i=null==t?void 0:t.wrapLists)&&void 0!==i&&i,this.schema=e;const a=null!==(n=null==t?void 0:t.initialData)&&void 0!==n?n:e.default();this.data=this.wrapLists?We.wrapLists(a):a,this.listeners=[],this.errors=new He.Errors,this.history=[JSON.stringify(this.data)],this.historyIndex=0}addListener(e){this.listeners.push(e)}removeListener(e){const t=this.listeners.indexOf(e);t>-1&&this.listeners.splice(t,1)}invalidate(){const e=JSON.stringify(this.data);this.history[this.historyIndex]!==e&&(this.historyIndex+=1,this.history.splice(this.historyIndex,this.historyMax,e),this.history.length>this.historyMax&&(this.history.splice(0,1),this.historyIndex-=1)),this.silentInvalidate()}silentInvalidate(){this.listeners.forEach((e=>{e.invalidated&&e.invalidated(this),e.errors&&e.errors(this.errors)}))}reset(e,t){this.data=e,this.validate(t),this.invalidate()}get(e){let t=this.data;return e.forEach((e=>{if(void 0===t)return t;t=this.wrapLists&&"number"==typeof e?t[e].node:t[e]})),t}set(e,t,r){if(0===e.getArray().length)return void this.reset(t,!0);let o=this.data;e.pop().forEach((e=>{void 0!==o[e]&&"string"!=typeof o[e]&&"number"!=typeof o[e]||(this.wrapLists&&"number"==typeof e?o[e]={node:{},id:Ze.hexId()}:o[e]={}),o=this.wrapLists&&"number"==typeof e?o[e].node:o[e]})),null!==o&&(void 0===t||"number"==typeof t&&isNaN(t)?"number"==typeof e.last()?o.splice(e.last(),1):delete o[e.last()]:this.wrapLists&&"number"==typeof e.last()?o[e.last()]={node:t,id:Ze.hexId()}:o[e.last()]=t,r||(this.verbose&&console.log("Set",e.toString(),JSON.stringify(t)),this.validate(!0),this.invalidate()))}undo(){this.historyIndex>0&&(this.historyIndex-=1,this.data=JSON.parse(this.history[this.historyIndex]),this.validate(!1),this.silentInvalidate())}redo(){this.historyIndex{e.errors&&e.errors(o)}))}static wrapLists(e){if(Array.isArray(e))return e.map((e=>({node:this.wrapLists(e),id:Ze.hexId()})));if("object"==typeof e&&null!==e){const t={};return Object.entries(e).map((([e,r])=>{t[e]=this.wrapLists(r)})),t}return e}static unwrapLists(e){if(Array.isArray(e))return e.map((e=>this.unwrapLists(e.node)));if("object"==typeof e&&null!==e){const t={};return Object.entries(e).map((([e,r])=>{t[e]=this.unwrapLists(r)})),t}return e}}Te.DataModel=We;var Xe,Ge={};Xe=Ge,Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.Keep=Xe.Opt=Xe.Has=Xe.Mod=Xe.Base=void 0,Xe.Base={type:()=>"base",category:()=>{},default:()=>{},enabled:()=>!0,keep:()=>!1,optional:()=>!1,navigate(){return this},pathPush:e=>e,suggest:()=>[],validate:(e,t)=>t,validationOption:()=>{},hook(e,t,...r){return e.base({node:this},t,...r)},canUpdate:()=>!1,update:()=>[]},Xe.Mod=(e,t)=>s(s({},e),"function"==typeof t?t(e):t),Xe.Has=(e,t)=>Xe.Mod(t,{enabled:t=>void 0!==t.push(e).get()}),Xe.Opt=function(e){return c(s({},e),{optional:()=>!0})},Xe.Keep=function(e){return c(s({},e),{keep:()=>!0})};var Ve={};Object.defineProperty(Ve,"__esModule",{value:!0}),Ve.BooleanNode=void 0;const Je=Te,Ye=Ge;Ve.BooleanNode=()=>c(s({},Ye.Base),{type:()=>"boolean",default:()=>!1,suggest:()=>["false","true"],validate(e,t,r,o){return o.loose&&"boolean"!=typeof t&&(t=o.wrapLists?Je.DataModel.wrapLists(this.default()):this.default()),"boolean"==typeof t&&void 0!==t||r.add(e,"error.expected_boolean"),t},hook(e,t,...r){var o;return(null!==(o=e.boolean)&&void 0!==o?o:e.base).call(e,{node:this},t,...r)}});var Ke={},Qe={};Object.defineProperty(Qe,"__esModule",{value:!0}),Qe.ListNode=void 0;const et=Te,tt=Ge;Qe.ListNode=(e,t)=>{var r,o;const i=null!==(r=null==t?void 0:t.minLength)&&void 0!==r?r:0,n=null!==(o=null==t?void 0:t.maxLength)&&void 0!==o?o:1/0,a=(null==t?void 0:t.minLength)&&(null==t?void 0:t.maxLength);return c(s({},tt.Base),{type:()=>"list",default:()=>(null==t?void 0:t.minLength)?[...Array(i)].map((t=>e.default())):[],navigate(t,r){const o=r+1;return t.getArray().length<=o?this:e.navigate(t,o)},pathPush:(e,t)=>e.push(parseInt(t.toString())).contextPush("entry"),validate(t,r,o,s){return s.loose&&!Array.isArray(r)&&(r=s.wrapLists?et.DataModel.wrapLists(this.default()):this.default()),Array.isArray(r)?(a&&(r.lengthn)?i===n?o.add(t,"error.invalid_list_range.exact",r.length,i):o.add(t,"error.invalid_list_range.between",r.length,i,n):r.lengthn&&o.add(t,"error.invalid_list_range.larger",r.length,n),r.map(((r,i)=>{const n=e.validate(t.push(i),s.wrapLists?r.node:r,o,s);return s.wrapLists?{node:n,id:r.id}:n}))):(o.add(t,"error.expected_list"),r)},hook(r,o,...i){var n;return(null!==(n=r.list)&&void 0!==n?n:r.base).call(r,{node:this,children:e,config:null!=t?t:{}},o,...i)}})};var rt={};Object.defineProperty(rt,"__esModule",{value:!0}),rt.SwitchNode=void 0;const ot=Ge;rt.SwitchNode=e=>c(s({},ot.Base),{type(e){return this.activeCase(e,!0).node.type(e)},category(e){return this.activeCase(e,!0).node.category(e)},default:()=>e[0].node.default(),navigate(e,t){var r;const o=t+1;return null===(r=this.activeCase(e.slice(0,o)))||void 0===r?void 0:r.node.navigate(e,t)},pathPush(e,t){var r,o;return null!==(o=null===(r=this.activeCase(e))||void 0===r?void 0:r.node.pathPush(e,t))&&void 0!==o?o:e},suggest(t,r){var o,i;return null!==(i=null===(o=this.activeCase(t))||void 0===o?void 0:o.node.suggest(t,r))&&void 0!==i?i:e.filter((e=>e.match(t))).map((e=>e.node.suggest(t,r))).reduce(((e,t)=>e.concat(t)))},validate(e,t,r,o){let i=this.activeCase(e);return void 0===i?t:i.node.validate(e,t,r,o)},validationOption(e){var t;return null===(t=this.activeCase(e))||void 0===t?void 0:t.node.validationOption(e)},activeCase(t,r){const o=(e,t)=>{var r,o;return(null!==(r=t.priority)&&void 0!==r?r:0)-(null!==(o=e.priority)&&void 0!==o?o:0)},i=e.filter((e=>e.match(t))).sort(o);return r&&0===i.length?e.sort(o)[0]:i.length>0?i[0]:void 0},hook(e,t,...r){return this.activeCase(t,!0).node.hook(e,t,...r)}}),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ObjectOrPreset=e.StringOrList=e.ObjectOrList=e.ChoiceNode=void 0;const t=Qe,r=rt;e.ChoiceNode=(e,t)=>{const o=r.SwitchNode(e.map((e=>({type:e.type,priority:e.priority,match:t=>((e,t)=>{if(e.match)return e.match(t);switch(e.type){case"list":return Array.isArray(t);case"object":return"object"==typeof t&&!Array.isArray(t);default:return typeof t===e.type}})(e,t.get()),node:e.node}))));return c(s({},o),{validate(e,t,r,i){let n=o.activeCase(e,!0);return n.node.optional()?t:n.node.validate(e,t,r,i)},hook(r,i,...n){var a;return(null!==(a=r.choice)&&void 0!==a?a:r.base).call(r,{node:this,choices:e,config:null!=t?t:{},switchNode:o},i,...n)}})};const o=r=>(o,i)=>e.ChoiceNode([{type:r,node:o,change:e=>{var t;return null!==(t=e[0])&&void 0!==t?t:o.default()}},{type:"list",node:t.ListNode(o),change:e=>e?[e]:[]}],i);e.ObjectOrList=o("object"),e.StringOrList=o("string"),e.ObjectOrPreset=(t,r,o)=>e.ChoiceNode([{type:"string",priority:1,node:t,change:e=>Object.keys(o)[0]},{type:"object",node:r,change:e=>{var t;return null!==(t=o[e])&&void 0!==t?t:o[Object.keys(o)[0]]}}])}(Ke);var it={};Object.defineProperty(it,"__esModule",{value:!0}),it.MapNode=void 0;const nt=Ge,at=Te;it.MapNode=(e,t,r)=>c(s({},nt.Base),{type:()=>"map",default:()=>({}),navigate(e,r){const o=r+1;return e.getArray().length<=o?this:t.navigate(e,o)},pathPush:(e,t)=>e.modelPush(t),suggest:t=>e.suggest(t,""),validate(r,o,i,n){if(n.loose&&"object"!=typeof o&&(o=n.wrapLists?at.DataModel.wrapLists(this.default()):this.default()),null===o||"object"!=typeof o)return i.add(r,"error.expected_object"),o;let a={};return Object.keys(o).forEach((s=>{e.validate(r,s,i,n),a[s]=t.validate(r.push(s),o[s],i,n)})),a},validationOption(t){var o;return null!==(o=null==r?void 0:r.validation)&&void 0!==o?o:e.validationOption(t.push(""))},hook(o,i,...n){var a;return(null!==(a=o.map)&&void 0!==a?a:o.base).call(o,{node:this,keys:e,children:t,config:null!=r?r:{}},i,...n)}});var st={};Object.defineProperty(st,"__esModule",{value:!0}),st.NumberNode=void 0;const ct=Te,lt=Ge;st.NumberNode=e=>{var t,r,o;const i=!!(null==e?void 0:e.color)||null!==(t=null==e?void 0:e.integer)&&void 0!==t&&t,n=(null==e?void 0:e.color)?0:null!==(r=null==e?void 0:e.min)&&void 0!==r?r:-1/0,a=(null==e?void 0:e.color)?16777215:null!==(o=null==e?void 0:e.max)&&void 0!==o?o:1/0,l=void 0!==(null==e?void 0:e.min)&&void 0!==(null==e?void 0:e.max);return c(s({},lt.Base),{type:()=>"number",default:()=>n>0?n:0,validate(e,t,r,o){return o.loose&&"number"!=typeof t&&(t=o.wrapLists?ct.DataModel.wrapLists(this.default()):this.default()),"number"!=typeof t?r.add(e,"error.expected_number"):i&&!Number.isInteger(t)?r.add(e,"error.expected_integer"):l&&(ta)?r.add(e,"error.invalid_number_range.between",t,n,a):ta&&r.add(e,"error.invalid_number_range.larger",t,a),t},hook(t,r,...o){var s;return(null!==(s=t.number)&&void 0!==s?s:t.base).call(t,{node:this,integer:i,min:n,max:a,between:l,config:null!=e?e:{}},r,...o)}})};var dt={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ObjectNode=e.Case=e.Switch=void 0;const t=Ge,r=Ie,a=Fe,d=De,_=Te;e.Switch=Symbol("switch"),e.Case=Symbol("case"),e.ObjectNode=(m,p)=>{var u,f;const h=m,{[u=e.Switch]:g,[f=e.Case]:b}=h,v=((e,t)=>{var r={};for(var a in e)i.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&o)for(var a of o(e))t.indexOf(a)<0&&n.call(e,a)&&(r[a]=e[a]);return r})(h,[l(u),l(f)]),y=e=>{if(void 0===g)return v;const t=r.relativePath(e,g).get(),o=b[t];return s(s({},v),o)},N=(e,t)=>{var o;const i=g?r.relativePath(e,g).get():void 0,n=g&&null!==(o=b[i])&&void 0!==o?o:{},a=Object.keys(n),s=(null==p?void 0:p.context)?new r.ModelPath(e.getModel(),new r.Path(e.getArray(),[p.context])):e;return(!(null==p?void 0:p.disableSwitchContext)&&i&&a.includes(t)?s.contextPush(i):s).push(t)};return c(s({},t.Base),{type:()=>"object",category:()=>null==p?void 0:p.category,default:()=>({}),keep(){return this.optional()},navigate(e,t){const r=t+1,o=e.getArray();if(o.length<=r)return this;const i=y(e.slice(0,r))[o[r]];return null==i?void 0:i.navigate(e,r)},pathPush:(e,t)=>N(e,t.toString()),suggest(e,t){const r=y(e),o=Object.keys("object"==typeof t?t:{});return Object.keys(r).filter((t=>r[t].enabled(e))).filter((e=>!o.includes(e))).map(d.quoteString)},validate(e,t,o,i){if(i.loose&&"object"!=typeof t&&(t=i.wrapLists?_.DataModel.wrapLists(this.default()):this.default()),"object"!=typeof t||null===t)return o.add(e,"error.expected_object"),t;let n=v;if(g){const o=r.relativePath(e,g);let c=o.get();if(e.equals(o.pop())){const r=o.last();c=v[r].validate(e.push(r),t[r],new a.Errors,i)}n=s(s({},n),b[c])}const c=Object.keys(n),l=c.filter((e=>!n[e].optional())),d=new Set([...l,...Object.keys(t)]);let m={};return d.forEach((r=>{if(c.includes(r)){if(!n[r].enabled(e))return;const a=n[r].validate(e.push(r),t[r],o,i);!n[r].keep()&&n[r].optional()&&(void 0===a||Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length)?delete m[r]:(m[r]=a,e.getModel().set(e.push(r),a,!0))}else m[r]=t[r]})),m},hook(e,t,...r){var o;return(null!==(o=e.object)&&void 0!==o?o:e.base).call(e,{node:this,fields:v,config:null!=p?p:{},filter:g,cases:b,getActiveFields:y,getChildModelPath:N},t,...r)}})}}(dt);var _t={};Object.defineProperty(_t,"__esModule",{value:!0}),_t.Reference=void 0,_t.Reference=(e,t)=>({type(r){return e.get(t).type.bind(this)(r)},category(r){return e.get(t).category.bind(this)(r)},default(){return e.get(t).default.bind(this)()},transform:(r,o)=>e.get(t).transform(r,o),enabled(r){return e.get(t).enabled.bind(this)(r)},keep(){return e.get(t).keep.bind(this)()},optional(){return e.get(t).optional.bind(this)()},navigate(r,o){return e.get(t).navigate.bind(this)(r,o)},pathPush(r,o){return e.get(t).pathPush.bind(this)(r,o)},suggest(r,o){return e.get(t).suggest.bind(this)(r,o)},validate(r,o,i,n){return e.get(t).validate.bind(this)(r,o,i,n)},validationOption(r){return e.get(t).validationOption.bind(this)(r)},hook(r,o,...i){return e.get(t).hook.bind(this)(r,o,...i)},activeCase(r,o){return e.get(t).activeCase.bind(this)(r,o)},canUpdate(r,o){return e.get(t).canUpdate.bind(this)(r,o)},update(r,o){return e.get(t).update.bind(this)(r,o)}});var mt={};Object.defineProperty(mt,"__esModule",{value:!0}),mt.StringNode=void 0;const pt=Ge,ut=De,ft=Te,ht=e=>{var t;return!!(null===(t=e)||void 0===t?void 0:t.enum)},gt=e=>{var t;return!!(null===(t=e)||void 0===t?void 0:t.validator)};mt.StringNode=(e,t)=>{const r=ht(t)?"string"==typeof t.enum?()=>{var r;return null!==(r=null==e?void 0:e.get(t.enum))&&void 0!==r?r:[]}:()=>t.enum:"resource"===(null==t?void 0:t.validator)?"string"==typeof t.params.pool?t.params.pool.startsWith("$")?()=>{var r;return null!==(r=null==e?void 0:e.get(t.params.pool.slice(1)))&&void 0!==r?r:[]}:()=>{var r;return null!==(r=null==e?void 0:e.get(t.params.pool))&&void 0!==r?r:[]}:()=>t.params.pool:()=>[];return c(s({},pt.Base),{type:()=>"string",default:()=>"",validate(e,o,i,n){if(n.loose&&"string"!=typeof o&&(o=(n.wrapLists?ft.DataModel.wrapLists(this.default()):this.default())||void 0),"string"!=typeof o)return i.add(e,"error.expected_string"),o;if(gt(t)&&("resource"===t.validator&&o.length>0&&!o.includes(":")&&(o="#"===o[0]?"#minecraft:"+o.slice(1):"minecraft:"+o),"resource"===t.validator&&("string"==typeof t.params.pool&&t.params.pool.startsWith("$")||t.params.allowTag&&"#"===o[0]||t.params.isDefinition||t.params.allowUnknown)))return o;if(ht(t)&&t.additional)return o;const a=r();return a.length>0&&!a.includes(o)&&i.add(e,"error.invalid_enum_option",o),o},suggest:()=>r().map(ut.quoteString),validationOption:()=>gt(t)?t:void 0,hook(e,o,...i){var n;return(null!==(n=e.string)&&void 0!==n?n:e.base).call(e,{node:this,getValues:r,config:t},o,...i)}})};var bt={};Object.defineProperty(bt,"__esModule",{value:!0});var vt={};Object.defineProperty(vt,"__esModule",{value:!0}),vt.CollectionRegistry=vt.SchemaRegistry=void 0;vt.SchemaRegistry=class{constructor(){this.registry={}}register(e,t){this.registry[e]=t}get(e){const t=this.registry[e];return void 0===t&&console.error(`Tried to access schema "${e}", but that doesn't exist.`),t}};vt.CollectionRegistry=class{constructor(){this.registry={}}register(e,t){this.registry[e]=t}get(e){const t=this.registry[e];return void 0===t&&console.warn(`Tried to access collection "${e}", but that doesn't exist.`),null!=t?t:[]}};var yt={};Object.defineProperty(yt,"__esModule",{value:!0}),function(e){var t=Be&&Be.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),r=Be&&Be.__exportStar||function(e,r){for(var o in e)"default"===o||r.hasOwnProperty(o)||t(r,e,o)};Object.defineProperty(e,"__esModule",{value:!0}),r(Te,e),r(Ie,e),r(Fe,e),r(Ge,e),r(Ve,e),r(Ke,e),r(Qe,e),r(it,e),r(st,e),r(dt,e),r(_t,e),r(mt,e),r(rt,e),r(bt,e),r(vt,e),r(yt,e)}(Ce);function Nt(e){let t=e.length;for(;--t>=0;)e[t]=0}const Ot=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),wt=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),kt=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),xt=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),St=new Array(576);Nt(St);const jt=new Array(60);Nt(jt);const Mt=new Array(512);Nt(Mt);const Pt=new Array(256);Nt(Pt);const At=new Array(29);Nt(At);const Lt=new Array(30);function Bt(e,t,r,o,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=o,this.max_length=i,this.has_stree=e&&e.length}let Ct,Tt,It;function zt(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Nt(Lt);const Rt=e=>e<256?Mt[e]:Mt[256+(e>>>7)],Ft=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},Et=(e,t,r)=>{e.bi_valid>16-r?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=r-16):(e.bi_buf|=t<{Et(e,r[2*t],r[2*t+1])},$t=(e,t)=>{let r=0;do{r|=1&e,e>>>=1,r<<=1}while(--t>0);return r>>>1},Ut=(e,t,r)=>{const o=new Array(16);let i,n,a=0;for(i=1;i<=15;i++)o[i]=a=a+r[i-1]<<1;for(n=0;n<=t;n++){let t=e[2*n+1];0!==t&&(e[2*n]=$t(o[t]++,t))}},qt=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0},Ht=e=>{e.bi_valid>8?Ft(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Zt=(e,t,r,o)=>{const i=2*t,n=2*r;return e[i]{const o=e.heap[r];let i=r<<1;for(;i<=e.heap_len&&(i{let o,i,n,a,s=0;if(0!==e.last_lit)do{o=e.pending_buf[e.d_buf+2*s]<<8|e.pending_buf[e.d_buf+2*s+1],i=e.pending_buf[e.l_buf+s],s++,0===o?Dt(e,i,t):(n=Pt[i],Dt(e,n+256+1,t),a=Ot[n],0!==a&&(i-=At[n],Et(e,i,a)),o--,n=Rt(o),Dt(e,n,r),a=wt[n],0!==a&&(o-=Lt[n],Et(e,o,a)))}while(s{const r=t.dyn_tree,o=t.stat_desc.static_tree,i=t.stat_desc.has_stree,n=t.stat_desc.elems;let a,s,c,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a>1;a>=1;a--)Wt(e,r,a);c=n;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Wt(e,r,1),s=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=s,r[2*c]=r[2*a]+r[2*s],e.depth[c]=(e.depth[a]>=e.depth[s]?e.depth[a]:e.depth[s])+1,r[2*a+1]=r[2*s+1]=c,e.heap[1]=c++,Wt(e,r,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const r=t.dyn_tree,o=t.max_code,i=t.stat_desc.static_tree,n=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,d,_,m,p,u,f=0;for(m=0;m<=15;m++)e.bl_count[m]=0;for(r[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)d=e.heap[l],m=r[2*r[2*d+1]+1]+1,m>c&&(m=c,f++),r[2*d+1]=m,d>o||(e.bl_count[m]++,p=0,d>=s&&(p=a[d-s]),u=r[2*d],e.opt_len+=u*(m+p),n&&(e.static_len+=u*(i[2*d+1]+p)));if(0!==f){do{for(m=c-1;0===e.bl_count[m];)m--;e.bl_count[m]--,e.bl_count[m+1]+=2,e.bl_count[c]--,f-=2}while(f>0);for(m=c;0!==m;m--)for(d=e.bl_count[m];0!==d;)_=e.heap[--l],_>o||(r[2*_+1]!==m&&(e.opt_len+=(m-r[2*_+1])*r[2*_],r[2*_+1]=m),d--)}})(e,t),Ut(r,l,e.bl_count)},Vt=(e,t,r)=>{let o,i,n=-1,a=t[1],s=0,c=7,l=4;for(0===a&&(c=138,l=3),t[2*(r+1)+1]=65535,o=0;o<=r;o++)i=a,a=t[2*(o+1)+1],++s{let o,i,n=-1,a=t[1],s=0,c=7,l=4;for(0===a&&(c=138,l=3),o=0;o<=r;o++)if(i=a,a=t[2*(o+1)+1],!(++s{Et(e,0+(o?1:0),3),((e,t,r,o)=>{Ht(e),o&&(Ft(e,r),Ft(e,~r)),e.pending_buf.set(e.window.subarray(t,t+r),e.pending),e.pending+=r})(e,t,r,!0)};var Qt={_tr_init:e=>{Yt||((()=>{let e,t,r,o,i;const n=new Array(16);for(r=0,o=0;o<28;o++)for(At[o]=r,e=0;e<1<>=7;o<30;o++)for(Lt[o]=i<<7,e=0;e<1<{let i,n,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),Gt(e,e.l_desc),Gt(e,e.d_desc),a=(e=>{let t;for(Vt(e,e.dyn_ltree,e.l_desc.max_code),Vt(e,e.dyn_dtree,e.d_desc.max_code),Gt(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*xt[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),i=e.opt_len+3+7>>>3,n=e.static_len+3+7>>>3,n<=i&&(i=n)):i=n=r+5,r+4<=i&&-1!==t?Kt(e,t,r,o):4===e.strategy||n===i?(Et(e,2+(o?1:0),3),Xt(e,St,jt)):(Et(e,4+(o?1:0),3),((e,t,r,o)=>{let i;for(Et(e,t-257,5),Et(e,r-1,5),Et(e,o-4,4),i=0;i(e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(Pt[r]+256+1)]++,e.dyn_dtree[2*Rt(t)]++),e.last_lit===e.lit_bufsize-1),_tr_align:e=>{Et(e,2,3),Dt(e,256,St),(e=>{16===e.bi_valid?(Ft(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}};var er=(e,t,r,o)=>{let i=65535&e|0,n=e>>>16&65535|0,a=0;for(;0!==r;){a=r>2e3?2e3:r,r-=a;do{i=i+t[o++]|0,n=n+i|0}while(--a);i%=65521,n%=65521}return i|n<<16|0};const tr=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var o=0;o<8;o++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());var rr=(e,t,r,o)=>{const i=tr,n=o+r;e^=-1;for(let a=o;a>>8^i[255&(e^t[a])];return-1^e},or={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},ir={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:nr,_tr_stored_block:ar,_tr_flush_block:sr,_tr_tally:cr,_tr_align:lr}=Qt,{Z_NO_FLUSH:dr,Z_PARTIAL_FLUSH:_r,Z_FULL_FLUSH:mr,Z_FINISH:pr,Z_BLOCK:ur,Z_OK:fr,Z_STREAM_END:hr,Z_STREAM_ERROR:gr,Z_DATA_ERROR:br,Z_BUF_ERROR:vr,Z_DEFAULT_COMPRESSION:yr,Z_FILTERED:Nr,Z_HUFFMAN_ONLY:Or,Z_RLE:wr,Z_FIXED:kr,Z_DEFAULT_STRATEGY:xr,Z_UNKNOWN:Sr,Z_DEFLATED:jr}=ir,Mr=(e,t)=>(e.msg=or[t],t),Pr=e=>(e<<1)-(e>4?9:0),Ar=e=>{let t=e.length;for(;--t>=0;)e[t]=0};let Lr=(e,t,r)=>(t<{const t=e.state;let r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+r),e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))},Cr=(e,t)=>{sr(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Br(e.strm)},Tr=(e,t)=>{e.pending_buf[e.pending++]=t},Ir=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},zr=(e,t,r,o)=>{let i=e.avail_in;return i>o&&(i=o),0===i?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),r),1===e.state.wrap?e.adler=er(e.adler,t,i,r):2===e.state.wrap&&(e.adler=rr(e.adler,t,i,r)),e.next_in+=i,e.total_in+=i,i)},Rr=(e,t)=>{let r,o,i=e.max_chain_length,n=e.strstart,a=e.prev_length,s=e.nice_match;const c=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,l=e.window,d=e.w_mask,_=e.prev,m=e.strstart+258;let p=l[n+a-1],u=l[n+a];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(r=t,l[r+a]===u&&l[r+a-1]===p&&l[r]===l[n]&&l[++r]===l[n+1]){n+=2,r++;do{}while(l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&l[++n]===l[++r]&&na){if(e.match_start=t,a=o,o>=s)break;p=l[n+a-1],u=l[n+a]}}}while((t=_[t&d])>c&&0!=--i);return a<=e.lookahead?a:e.lookahead},Fr=e=>{const t=e.w_size;let r,o,i,n,a;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-262)){e.window.set(e.window.subarray(t,t+t),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,o=e.hash_size,r=o;do{i=e.head[--r],e.head[r]=i>=t?i-t:0}while(--o);o=t,r=o;do{i=e.prev[--r],e.prev[r]=i>=t?i-t:0}while(--o);n+=t}if(0===e.strm.avail_in)break;if(o=zr(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=o,e.lookahead+e.insert>=3)for(a=e.strstart-e.insert,e.ins_h=e.window[a],e.ins_h=Lr(e,e.ins_h,e.window[a+1]);e.insert&&(e.ins_h=Lr(e,e.ins_h,e.window[a+3-1]),e.prev[a&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=a,a++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<262&&0!==e.strm.avail_in)},Er=(e,t)=>{let r,o;for(;;){if(e.lookahead<262){if(Fr(e),e.lookahead<262&&t===dr)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=3&&(e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+3-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-262&&(e.match_length=Rr(e,r)),e.match_length>=3)if(o=cr(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+3-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+1]);else o=cr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(o&&(Cr(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Cr(e,!1),0===e.strm.avail_out)?1:2},Dr=(e,t)=>{let r,o,i;for(;;){if(e.lookahead<262){if(Fr(e),e.lookahead<262&&t===dr)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=3&&(e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+3-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==r&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,o=cr(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+3-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,o&&(Cr(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(o=cr(e,0,e.window[e.strstart-1]),o&&Cr(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(o=cr(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Cr(e,!1),0===e.strm.avail_out)?1:2};function $r(e,t,r,o,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=o,this.func=i}const Ur=[new $r(0,0,0,0,((e,t)=>{let r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Fr(e),0===e.lookahead&&t===dr)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;const o=e.block_start+r;if((0===e.strstart||e.strstart>=o)&&(e.lookahead=e.strstart-o,e.strstart=o,Cr(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-262&&(Cr(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(Cr(e,!1),e.strm.avail_out),1)})),new $r(4,4,8,4,Er),new $r(4,5,16,8,Er),new $r(4,6,32,32,Er),new $r(4,4,16,16,Dr),new $r(8,16,32,32,Dr),new $r(8,16,128,128,Dr),new $r(8,32,128,256,Dr),new $r(32,128,258,1024,Dr),new $r(32,258,258,4096,Dr)];function qr(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=jr,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Ar(this.dyn_ltree),Ar(this.dyn_dtree),Ar(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Ar(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Ar(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Hr=e=>{if(!e||!e.state)return Mr(e,gr);e.total_in=e.total_out=0,e.data_type=Sr;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:113,e.adler=2===t.wrap?0:1,t.last_flush=dr,nr(t),fr},Zr=e=>{const t=Hr(e);var r;return t===fr&&((r=e.state).window_size=2*r.w_size,Ar(r.head),r.max_lazy_match=Ur[r.level].max_lazy,r.good_match=Ur[r.level].good_length,r.nice_match=Ur[r.level].nice_length,r.max_chain_length=Ur[r.level].max_chain,r.strstart=0,r.block_start=0,r.lookahead=0,r.insert=0,r.match_length=r.prev_length=2,r.match_available=0,r.ins_h=0),t},Wr=(e,t,r,o,i,n)=>{if(!e)return gr;let a=1;if(t===yr&&(t=6),o<0?(a=0,o=-o):o>15&&(a=2,o-=16),i<1||i>9||r!==jr||o<8||o>15||t<0||t>9||n<0||n>kr)return Mr(e,gr);8===o&&(o=9);const s=new qr;return e.state=s,s.strm=e,s.wrap=a,s.gzhead=null,s.w_bits=o,s.w_size=1<Wr(e,t,jr,15,8,xr),deflateInit2:Wr,deflateReset:Zr,deflateResetKeep:Hr,deflateSetHeader:(e,t)=>e&&e.state?2!==e.state.wrap?gr:(e.state.gzhead=t,fr):gr,deflate:(e,t)=>{let r,o;if(!e||!e.state||t>ur||t<0)return e?Mr(e,gr):gr;const i=e.state;if(!e.output||!e.input&&0!==e.avail_in||666===i.status&&t!==pr)return Mr(e,0===e.avail_out?vr:gr);i.strm=e;const n=i.last_flush;if(i.last_flush=t,42===i.status)if(2===i.wrap)e.adler=0,Tr(i,31),Tr(i,139),Tr(i,8),i.gzhead?(Tr(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Tr(i,255&i.gzhead.time),Tr(i,i.gzhead.time>>8&255),Tr(i,i.gzhead.time>>16&255),Tr(i,i.gzhead.time>>24&255),Tr(i,9===i.level?2:i.strategy>=Or||i.level<2?4:0),Tr(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Tr(i,255&i.gzhead.extra.length),Tr(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=rr(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(Tr(i,0),Tr(i,0),Tr(i,0),Tr(i,0),Tr(i,0),Tr(i,9===i.level?2:i.strategy>=Or||i.level<2?4:0),Tr(i,3),i.status=113);else{let t=jr+(i.w_bits-8<<4)<<8,r=-1;r=i.strategy>=Or||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=r<<6,0!==i.strstart&&(t|=32),t+=31-t%31,i.status=113,Ir(i,t),0!==i.strstart&&(Ir(i,e.adler>>>16),Ir(i,65535&e.adler)),e.adler=1}if(69===i.status)if(i.gzhead.extra){for(r=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>r&&(e.adler=rr(e.adler,i.pending_buf,i.pending-r,r)),Br(e),r=i.pending,i.pending!==i.pending_buf_size));)Tr(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>r&&(e.adler=rr(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(e.adler=rr(e.adler,i.pending_buf,i.pending-r,r)),Br(e),r=i.pending,i.pending===i.pending_buf_size)){o=1;break}o=i.gzindexr&&(e.adler=rr(e.adler,i.pending_buf,i.pending-r,r)),0===o&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(e.adler=rr(e.adler,i.pending_buf,i.pending-r,r)),Br(e),r=i.pending,i.pending===i.pending_buf_size)){o=1;break}o=i.gzindexr&&(e.adler=rr(e.adler,i.pending_buf,i.pending-r,r)),0===o&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&Br(e),i.pending+2<=i.pending_buf_size&&(Tr(i,255&e.adler),Tr(i,e.adler>>8&255),e.adler=0,i.status=113)):i.status=113),0!==i.pending){if(Br(e),0===e.avail_out)return i.last_flush=-1,fr}else if(0===e.avail_in&&Pr(t)<=Pr(n)&&t!==pr)return Mr(e,vr);if(666===i.status&&0!==e.avail_in)return Mr(e,vr);if(0!==e.avail_in||0!==i.lookahead||t!==dr&&666!==i.status){let r=i.strategy===Or?((e,t)=>{let r;for(;;){if(0===e.lookahead&&(Fr(e),0===e.lookahead)){if(t===dr)return 1;break}if(e.match_length=0,r=cr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(Cr(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Cr(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===wr?((e,t)=>{let r,o,i,n;const a=e.window;for(;;){if(e.lookahead<=258){if(Fr(e),e.lookahead<=258&&t===dr)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=e.strstart-1,o=a[i],o===a[++i]&&o===a[++i]&&o===a[++i])){n=e.strstart+258;do{}while(o===a[++i]&&o===a[++i]&&o===a[++i]&&o===a[++i]&&o===a[++i]&&o===a[++i]&&o===a[++i]&&o===a[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(r=cr(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=cr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(Cr(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Cr(e,!1),0===e.strm.avail_out)?1:2})(i,t):Ur[i.level].func(i,t);if(3!==r&&4!==r||(i.status=666),1===r||3===r)return 0===e.avail_out&&(i.last_flush=-1),fr;if(2===r&&(t===_r?lr(i):t!==ur&&(ar(i,0,0,!1),t===mr&&(Ar(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Br(e),0===e.avail_out))return i.last_flush=-1,fr}return t!==pr?fr:i.wrap<=0?hr:(2===i.wrap?(Tr(i,255&e.adler),Tr(i,e.adler>>8&255),Tr(i,e.adler>>16&255),Tr(i,e.adler>>24&255),Tr(i,255&e.total_in),Tr(i,e.total_in>>8&255),Tr(i,e.total_in>>16&255),Tr(i,e.total_in>>24&255)):(Ir(i,e.adler>>>16),Ir(i,65535&e.adler)),Br(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?fr:hr)},deflateEnd:e=>{if(!e||!e.state)return gr;const t=e.state.status;return 42!==t&&69!==t&&73!==t&&91!==t&&103!==t&&113!==t&&666!==t?Mr(e,gr):(e.state=null,113===t?Mr(e,br):fr)},deflateSetDictionary:(e,t)=>{let r=t.length;if(!e||!e.state)return gr;const o=e.state,i=o.wrap;if(2===i||1===i&&42!==o.status||o.lookahead)return gr;if(1===i&&(e.adler=er(e.adler,t,r,0)),o.wrap=0,r>=o.w_size){0===i&&(Ar(o.head),o.strstart=0,o.block_start=0,o.insert=0);let e=new Uint8Array(o.w_size);e.set(t.subarray(r-o.w_size,r),0),t=e,r=o.w_size}const n=e.avail_in,a=e.next_in,s=e.input;for(e.avail_in=r,e.next_in=0,e.input=t,Fr(o);o.lookahead>=3;){let e=o.strstart,t=o.lookahead-2;do{o.ins_h=Lr(o,o.ins_h,o.window[e+3-1]),o.prev[e&o.w_mask]=o.head[o.ins_h],o.head[o.ins_h]=e,e++}while(--t);o.strstart=e,o.lookahead=2,Fr(o)}return o.strstart+=o.lookahead,o.block_start=o.strstart,o.insert=o.lookahead,o.lookahead=0,o.match_length=o.prev_length=2,o.match_available=0,e.next_in=a,e.input=s,e.avail_in=n,o.wrap=i,fr},deflateInfo:"pako deflate (from Nodeca project)"};const Gr=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Vr=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(const t in r)Gr(r,t)&&(e[t]=r[t])}}return e},Jr=e=>{let t=0;for(let o=0,i=e.length;o=252?6:U_>=248?5:U_>=240?4:U_>=224?3:U_>=192?2:1;Kr[254]=Kr[254]=1;var Qr=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,o,i,n,a=e.length,s=0;for(i=0;i>>6,t[n++]=128|63&r):r<65536?(t[n++]=224|r>>>12,t[n++]=128|r>>>6&63,t[n++]=128|63&r):(t[n++]=240|r>>>18,t[n++]=128|r>>>12&63,t[n++]=128|r>>>6&63,t[n++]=128|63&r);return t},eo=(e,t)=>{const r=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let o,i;const n=new Array(2*r);for(i=0,o=0;o4)n[i++]=65533,o+=a-1;else{for(t&=2===a?31:3===a?15:7;a>1&&o1?n[i++]=65533:t<65536?n[i++]=t:(t-=65536,n[i++]=55296|t>>10&1023,n[i++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&Yr)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let r="";for(let o=0;o{(t=t||e.length)>e.length&&(t=e.length);let r=t-1;for(;r>=0&&128==(192&e[r]);)r--;return r<0||0===r?t:r+Kr[e[r]]>t?r:t};var ro=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const oo=Object.prototype.toString,{Z_NO_FLUSH:io,Z_SYNC_FLUSH:no,Z_FULL_FLUSH:ao,Z_FINISH:so,Z_OK:co,Z_STREAM_END:lo,Z_DEFAULT_COMPRESSION:_o,Z_DEFAULT_STRATEGY:mo,Z_DEFLATED:po}=ir;function uo(e){this.options=Vr({level:_o,method:po,chunkSize:16384,windowBits:15,memLevel:8,strategy:mo},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ro,this.strm.avail_out=0;let r=Xr.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==co)throw new Error(or[r]);if(t.header&&Xr.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Qr(t.dictionary):"[object ArrayBuffer]"===oo.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,r=Xr.deflateSetDictionary(this.strm,e),r!==co)throw new Error(or[r]);this._dict_set=!0}}uo.prototype.push=function(e,t){const r=this.strm,o=this.options.chunkSize;let i,n;if(this.ended)return!1;for(n=t===~~t?t:!0===t?so:io,"string"==typeof e?r.input=Qr(e):"[object ArrayBuffer]"===oo.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(o),r.next_out=0,r.avail_out=o),(n===no||n===ao)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(i=Xr.deflate(r,n),i===lo)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),i=Xr.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===co;if(0!==r.avail_out){if(n>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},uo.prototype.onData=function(e){this.chunks.push(e)},uo.prototype.onEnd=function(e){e===co&&(this.result=Jr(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var fo=function(e,t){let r,o,i,n,a,s,c,l,d,_,m,p,u,f,h,g,b,v,y,N,O,w,k,x;const S=e.state;r=e.next_in,k=e.input,o=r+(e.avail_in-5),i=e.next_out,x=e.output,n=i-(t-e.avail_out),a=i+(e.avail_out-257),s=S.dmax,c=S.wsize,l=S.whave,d=S.wnext,_=S.window,m=S.hold,p=S.bits,u=S.lencode,f=S.distcode,h=(1<>>24,m>>>=v,p-=v,v=b>>>16&255,0===v)x[i++]=65535&b;else{if(!(16&v)){if(0==(64&v)){b=u[(65535&b)+(m&(1<>>=v,p-=v),p<15&&(m+=k[r++]<>>24,m>>>=v,p-=v,v=b>>>16&255,!(16&v)){if(0==(64&v)){b=f[(65535&b)+(m&(1<s){e.msg="invalid distance too far back",S.mode=30;break e}if(m>>>=v,p-=v,v=i-n,N>v){if(v=N-v,v>l&&S.sane){e.msg="invalid distance too far back",S.mode=30;break e}if(O=0,w=_,0===d){if(O+=c-v,v2;)x[i++]=w[O++],x[i++]=w[O++],x[i++]=w[O++],y-=3;y&&(x[i++]=w[O++],y>1&&(x[i++]=w[O++]))}else{O=i-N;do{x[i++]=x[O++],x[i++]=x[O++],x[i++]=x[O++],y-=3}while(y>2);y&&(x[i++]=x[O++],y>1&&(x[i++]=x[O++]))}break}}break}}while(r>3,r-=y,p-=y<<3,m&=(1<{const c=s.bits;let l,d,_,m,p,u,f=0,h=0,g=0,b=0,v=0,y=0,N=0,O=0,w=0,k=0,x=null,S=0;const j=new Uint16Array(16),M=new Uint16Array(16);let P,A,L,B=null,C=0;for(f=0;f<=15;f++)j[f]=0;for(h=0;h=1&&0===j[b];b--);if(v>b&&(v=b),0===b)return i[n++]=20971520,i[n++]=20971520,s.bits=1,0;for(g=1;g0&&(0===e||1!==b))return-1;for(M[1]=0,f=1;f<15;f++)M[f+1]=M[f]+j[f];for(h=0;h852||2===e&&w>592)return 1;for(;;){P=f-N,a[h]u?(A=B[C+a[h]],L=x[S+a[h]]):(A=96,L=0),l=1<>N)+d]=P<<24|A<<16|L|0}while(0!==d);for(l=1<>=1;if(0!==l?(k&=l-1,k+=l):k=0,h++,0==--j[f]){if(f===b)break;f=t[r+a[h]]}if(f>v&&(k&m)!==_){for(0===N&&(N=v),p+=g,y=f-N,O=1<852||2===e&&w>592)return 1;_=k&m,i[_]=v<<24|y<<16|p-n|0}}return 0!==k&&(i[p+k]=f-N<<24|64<<16|0),s.bits=v,0};const{Z_FINISH:No,Z_BLOCK:Oo,Z_TREES:wo,Z_OK:ko,Z_STREAM_END:xo,Z_NEED_DICT:So,Z_STREAM_ERROR:jo,Z_DATA_ERROR:Mo,Z_MEM_ERROR:Po,Z_BUF_ERROR:Ao,Z_DEFLATED:Lo}=ir,Bo=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Co(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const To=e=>{if(!e||!e.state)return jo;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,ko},Io=e=>{if(!e||!e.state)return jo;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,To(e)},zo=(e,t)=>{let r;if(!e||!e.state)return jo;const o=e.state;return t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?jo:(null!==o.window&&o.wbits!==t&&(o.window=null),o.wrap=r,o.wbits=t,Io(e))},Ro=(e,t)=>{if(!e)return jo;const r=new Co;e.state=r,r.window=null;const o=zo(e,t);return o!==ko&&(e.state=null),o};let Fo,Eo,Do=!0;const $o=e=>{if(Do){Fo=new Int32Array(512),Eo=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(yo(1,e.lens,0,288,Fo,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;yo(2,e.lens,0,32,Eo,0,e.work,{bits:5}),Do=!1}e.lencode=Fo,e.lenbits=9,e.distcode=Eo,e.distbits=5},Uo=(e,t,r,o)=>{let i;const n=e.state;return null===n.window&&(n.wsize=1<=n.wsize?(n.window.set(t.subarray(r-n.wsize,r),0),n.wnext=0,n.whave=n.wsize):(i=n.wsize-n.wnext,i>o&&(i=o),n.window.set(t.subarray(r-o,r-o+i),n.wnext),(o-=i)?(n.window.set(t.subarray(r-o,r),0),n.wnext=o,n.whave=n.wsize):(n.wnext+=i,n.wnext===n.wsize&&(n.wnext=0),n.whaveRo(e,15),inflateInit2:Ro,inflate:(e,t)=>{let r,o,i,n,a,s,c,l,d,_,m,p,u,f,h,g,b,v,y,N,O,w,k=0;const x=new Uint8Array(4);let S,j;const M=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return jo;r=e.state,12===r.mode&&(r.mode=13),a=e.next_out,i=e.output,c=e.avail_out,n=e.next_in,o=e.input,s=e.avail_in,l=r.hold,d=r.bits,_=s,m=c,w=ko;e:for(;;)switch(r.mode){case 1:if(0===r.wrap){r.mode=13;break}for(;d<16;){if(0===s)break e;s--,l+=o[n++]<>>8&255,r.check=rr(r.check,x,2,0),l=0,d=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",r.mode=30;break}if((15&l)!==Lo){e.msg="unknown compression method",r.mode=30;break}if(l>>>=4,d-=4,O=8+(15&l),0===r.wbits)r.wbits=O;else if(O>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(x[0]=255&l,x[1]=l>>>8&255,r.check=rr(r.check,x,2,0)),l=0,d=0,r.mode=3;case 3:for(;d<32;){if(0===s)break e;s--,l+=o[n++]<>>8&255,x[2]=l>>>16&255,x[3]=l>>>24&255,r.check=rr(r.check,x,4,0)),l=0,d=0,r.mode=4;case 4:for(;d<16;){if(0===s)break e;s--,l+=o[n++]<>8),512&r.flags&&(x[0]=255&l,x[1]=l>>>8&255,r.check=rr(r.check,x,2,0)),l=0,d=0,r.mode=5;case 5:if(1024&r.flags){for(;d<16;){if(0===s)break e;s--,l+=o[n++]<>>8&255,r.check=rr(r.check,x,2,0)),l=0,d=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(p=r.length,p>s&&(p=s),p&&(r.head&&(O=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(o.subarray(n,n+p),O)),512&r.flags&&(r.check=rr(r.check,o,p,n)),s-=p,n+=p,r.length-=p),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break e;p=0;do{O=o[n+p++],r.head&&O&&r.length<65536&&(r.head.name+=String.fromCharCode(O))}while(O&&p>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;d<32;){if(0===s)break e;s--,l+=o[n++]<>>=7&d,d-=7&d,r.mode=27;break}for(;d<3;){if(0===s)break e;s--,l+=o[n++]<>>=1,d-=1,3&l){case 0:r.mode=14;break;case 1:if($o(r),r.mode=20,t===wo){l>>>=2,d-=2;break e}break;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}l>>>=2,d-=2;break;case 14:for(l>>>=7&d,d-=7&d;d<32;){if(0===s)break e;s--,l+=o[n++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&l,l=0,d=0,r.mode=15,t===wo)break e;case 15:r.mode=16;case 16:if(p=r.length,p){if(p>s&&(p=s),p>c&&(p=c),0===p)break e;i.set(o.subarray(n,n+p),a),s-=p,n+=p,c-=p,a+=p,r.length-=p;break}r.mode=12;break;case 17:for(;d<14;){if(0===s)break e;s--,l+=o[n++]<>>=5,d-=5,r.ndist=1+(31&l),l>>>=5,d-=5,r.ncode=4+(15&l),l>>>=4,d-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,d-=3}for(;r.have<19;)r.lens[M[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},w=yo(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,w){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>24,g=k>>>16&255,b=65535&k,!(h<=d);){if(0===s)break e;s--,l+=o[n++]<>>=h,d-=h,r.lens[r.have++]=b;else{if(16===b){for(j=h+2;d>>=h,d-=h,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}O=r.lens[r.have-1],p=3+(3&l),l>>>=2,d-=2}else if(17===b){for(j=h+3;d>>=h,d-=h,O=0,p=3+(7&l),l>>>=3,d-=3}else{for(j=h+7;d>>=h,d-=h,O=0,p=11+(127&l),l>>>=7,d-=7}if(r.have+p>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;p--;)r.lens[r.have++]=O}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},w=yo(1,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,w){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},w=yo(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,w){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,t===wo)break e;case 20:r.mode=21;case 21:if(s>=6&&c>=258){e.next_out=a,e.avail_out=c,e.next_in=n,e.avail_in=s,r.hold=l,r.bits=d,fo(e,m),a=e.next_out,i=e.output,c=e.avail_out,n=e.next_in,o=e.input,s=e.avail_in,l=r.hold,d=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;k=r.lencode[l&(1<>>24,g=k>>>16&255,b=65535&k,!(h<=d);){if(0===s)break e;s--,l+=o[n++]<>v)],h=k>>>24,g=k>>>16&255,b=65535&k,!(v+h<=d);){if(0===s)break e;s--,l+=o[n++]<>>=v,d-=v,r.back+=v}if(l>>>=h,d-=h,r.back+=h,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(j=r.extra;d>>=r.extra,d-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;k=r.distcode[l&(1<>>24,g=k>>>16&255,b=65535&k,!(h<=d);){if(0===s)break e;s--,l+=o[n++]<>v)],h=k>>>24,g=k>>>16&255,b=65535&k,!(v+h<=d);){if(0===s)break e;s--,l+=o[n++]<>>=v,d-=v,r.back+=v}if(l>>>=h,d-=h,r.back+=h,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(j=r.extra;d>>=r.extra,d-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===c)break e;if(p=m-c,r.offset>p){if(p=r.offset-p,p>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p>r.wnext?(p-=r.wnext,u=r.wsize-p):u=r.wnext-p,p>r.length&&(p=r.length),f=r.window}else f=i,u=a-r.offset,p=r.length;p>c&&(p=c),c-=p,r.length-=p;do{i[a++]=f[u++]}while(--p);0===r.length&&(r.mode=21);break;case 26:if(0===c)break e;i[a++]=r.length,c--,r.mode=21;break;case 27:if(r.wrap){for(;d<32;){if(0===s)break e;s--,l|=o[n++]<{if(!e||!e.state)return jo;let t=e.state;return t.window&&(t.window=null),e.state=null,ko},inflateGetHeader:(e,t)=>{if(!e||!e.state)return jo;const r=e.state;return 0==(2&r.wrap)?jo:(r.head=t,t.done=!1,ko)},inflateSetDictionary:(e,t)=>{const r=t.length;let o,i,n;return e&&e.state?(o=e.state,0!==o.wrap&&11!==o.mode?jo:11===o.mode&&(i=1,i=er(i,t,r,0),i!==o.check)?Mo:(n=Uo(e,t,r,r),n?(o.mode=31,Po):(o.havedict=1,ko))):jo},inflateInfo:"pako inflate (from Nodeca project)"};var Ho=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Zo=Object.prototype.toString,{Z_NO_FLUSH:Wo,Z_FINISH:Xo,Z_OK:Go,Z_STREAM_END:Vo,Z_NEED_DICT:Jo,Z_STREAM_ERROR:Yo,Z_DATA_ERROR:Ko,Z_MEM_ERROR:Qo}=ir;function ei(e){this.options=Vr({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ro,this.strm.avail_out=0;let r=qo.inflateInit2(this.strm,t.windowBits);if(r!==Go)throw new Error(or[r]);if(this.header=new Ho,qo.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Qr(t.dictionary):"[object ArrayBuffer]"===Zo.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=qo.inflateSetDictionary(this.strm,t.dictionary),r!==Go)))throw new Error(or[r])}ei.prototype.push=function(e,t){const r=this.strm,o=this.options.chunkSize,i=this.options.dictionary;let n,a,s;if(this.ended)return!1;for(a=t===~~t?t:!0===t?Xo:Wo,"[object ArrayBuffer]"===Zo.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(o),r.next_out=0,r.avail_out=o),n=qo.inflate(r,a),n===Jo&&i&&(n=qo.inflateSetDictionary(r,i),n===Go?n=qo.inflate(r,a):n===Ko&&(n=Jo));r.avail_in>0&&n===Vo&&r.state.wrap>0&&0!==e[r.next_in];)qo.inflateReset(r),n=qo.inflate(r,a);switch(n){case Yo:case Ko:case Jo:case Qo:return this.onEnd(n),this.ended=!0,!1}if(s=r.avail_out,r.next_out&&(0===r.avail_out||n===Vo))if("string"===this.options.to){let e=to(r.output,r.next_out),t=r.next_out-e,i=eo(r.output,e);r.next_out=t,r.avail_out=o-t,t&&r.output.set(r.output.subarray(e,e+t),0),this.onData(i)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(n!==Go||0!==s){if(n===Vo)return n=qo.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},ei.prototype.onData=function(e){this.chunks.push(e)},ei.prototype.onEnd=function(e){e===Go&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Jr(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ti,ri,oi={exports:{}},ii={exports:{}};ti="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ri={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&ri.rotl(e,8)|4278255360&ri.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],r=0,o=0;r>>5]|=e[r]<<24-o%32;return t},wordsToBytes:function(e){for(var t=[],r=0;r<32*e.length;r+=8)t.push(e[r>>>5]>>>24-r%32&255);return t},bytesToHex:function(e){for(var t=[],r=0;r>>4).toString(16)),t.push((15&e[r]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],r=0;r>>6*(3-i)&63)):t.push("=");return t.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var t=[],r=0,o=0;r>>6-2*o);return t}},ii.exports=ri;var ni={utf8:{stringToBytes:function(e){return ni.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(ni.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],r=0;r>>24)|4278255360&(s[p]<<24|s[p]>>>8);s[c>>>5]|=128<>>9<<4)]=c;var u=i._ff,f=i._gg,h=i._hh,g=i._ii;for(p=0;p>>0,d=d+v>>>0,_=_+y>>>0,m=m+N>>>0}return e.endian([l,d,_,m])};i._ff=function(e,t,r,o,i,n,a){var s=e+(t&r|~t&o)+(i>>>0)+a;return(s<>>32-n)+t},i._gg=function(e,t,r,o,i,n,a){var s=e+(t&o|r&~o)+(i>>>0)+a;return(s<>>32-n)+t},i._hh=function(e,t,r,o,i,n,a){var s=e+(t^r^o)+(i>>>0)+a;return(s<>>32-n)+t},i._ii=function(e,t,r,o,i,n,a){var s=e+(r^(t|~o))+(i>>>0)+a;return(s<>>32-n)+t},i._blocksize=16,i._digestsize=16,oi.exports=function(t,r){if(null==t)throw new Error("Illegal argument "+t);var n=e.wordsToBytes(i(t,r));return r&&r.asBytes?n:r&&r.asString?o.bytesToString(n):e.bytesToHex(n)}}();var li,di,_i=oi.exports;(di=li||(li={})).UP="up",di.DOWN="down",di.NORTH="north",di.EAST="east",di.SOUTH="south",di.WEST="west";const mi={[li.UP]:[0,1,0],[li.DOWN]:[0,-1,0],[li.NORTH]:[0,0,-1],[li.EAST]:[1,0,0],[li.SOUTH]:[0,0,1],[li.WEST]:[-1,0,0]};var pi,ui,fi,hi,gi,bi,vi,yi,Ni,Oi,wi,ki,xi,Si,ji,Mi;function Pi(e,t,r){if(!e[t])throw new Error(`Missing ${t} tag`);if(e[t].type!==r)throw new Error(`Expected ${t} to be of type ${r}, but found ${e[t].type}`);return e[t].value}!function(e){e.ALL=[e.UP,e.DOWN,e.NORTH,e.EAST,e.SOUTH,e.WEST],e.normal=function(e){return mi[e]}}(li||(li={})),function(e){e.create=function(e,t,r){return[e,t,r]},e.offset=function(e,t,r,o){return[e[0]+t,e[1]+r,e[2]+o]},e.towards=function(t,r){return e.offset(t,...li.normal(r))}}(pi||(pi={})),function(e){function t(e){return"object"==typeof e&&null!==e?e:void 0}e.readNumber=function(e){return"number"==typeof e?e:void 0},e.readInt=function(e){return"number"==typeof e?Math.floor(e):void 0},e.readString=function(e){return"string"==typeof e?e:void 0},e.readBoolean=function(e){return"boolean"==typeof e?e:void 0},e.readObject=t,e.readArray=function(e,t){if(Array.isArray(e))return e.map((e=>t(e)))},e.readMap=function(e,r){var o;const i=null!==(o=t(e))&&void 0!==o?o:{};return Object.fromEntries(Object.entries(i).map((([e,t])=>[e,r(t)])))},e.compose=function(e,t,r){const o=t(e);return o?r(o):void 0}}(ui||(ui={}));class Ai{constructor(e,t={}){this.name=e,this.properties=t}getName(){return this.name}getProperties(){return this.properties}getProperty(e){return this.properties[e]}isFluid(){return"minecraft:water"===this.name||"minecraft:lava"===this.name}equals(e){return this.name===e.name&&Object.keys(this.properties).every((t=>e.properties[t]===this.properties[t]))}toString(){return 0===Object.keys(this.properties).length?this.name:`${this.name}[${Object.entries(this.properties).map((([e,t])=>e+"="+t)).join(",")}]`}static fromNbt(e){const t=Pi(e.value,"Name","string"),r=function(e,t){try{return e()}catch(r){return t}}((()=>Pi(e.value,"Properties","compound")),{}),o=Object.keys(r).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t]:Pi(r,t,"string")})),{});return new Ai(t,o)}static fromJson(e){var t,r;const o=null!==(t=ui.readObject(e))&&void 0!==t?t:{},i=null!==(r=ui.readString(o.Name))&&void 0!==r?r:"minecraft:stone",n=ui.readMap(o.Properties,(e=>{var t;return null!==(t=ui.readString(e))&&void 0!==t?t:""}));return new Ai(i,n)}}Ai.AIR=new Ai("minecraft:air");class Li{constructor(e){this.minY=e,this.storage=Array(Li.SIZE),this.palette=[Ai.AIR]}get minBlockY(){return this.minY<<4}index(e,t,r){return(e<<8)+(t<<4)+r}getBlockState(e,t,r){var o;const i=this.storage[this.index(e,t,r)];return null!==(o=this.palette[i])&&void 0!==o?o:Ai.AIR}setBlockState(e,t,r,o){let i=this.palette.findIndex((e=>e.equals(o)));-1===i&&(i=this.palette.length,this.palette.push(o)),this.storage[this.index(e,t,r)]=i}}Li.WIDTH=16,Li.SIZE=Li.WIDTH*Li.WIDTH*Li.WIDTH;class Bi{constructor(e,t,r){this.minY=e,this.height=t,this.pos=r,this.sections=Array(this.sectionsCount).fill(null)}get maxY(){return this.minY+this.height}get minSection(){return this.minY>>4}get maxSection(){return 1+(this.maxY-1>>4)}get sectionsCount(){return this.maxSection-this.minSection}getSectionIndex(e){return(e>>4)-this.minSection}getBlockState(e){var t;const[r,o,i]=e,n=this.sections[this.getSectionIndex(o)];return null!==(t=null==n?void 0:n.getBlockState(15&r,15&o,15&i))&&void 0!==t?t:Ai.AIR}setBlockState(e,t){const[r,o,i]=e,n=this.getSectionIndex(o);let a=this.sections[n];if(null===a){if(t.equals(Ai.AIR))return;a=this.getOrCreateSection(n)}a.setBlockState(15&r,15&o,15&i,t)}getOrCreateSection(e){return null==this.sections[e]&&(this.sections[e]=new Li(this.minSection+e)),this.sections[e]}}function Ci(e){return e*e}function Ti(e,t,r){return Math.max(t,Math.min(r,e))}function Ii(e,t,r){return t+e*(r-t)}function zi(e,t,r,o,i,n){return Ii(t,Ii(e,r,o),Ii(e,i,n))}function Ri(e,t,r){return r<0?e:r>1?t:Ii(r,e,t)}function Fi(e){return e*e*e*(e*(6*e-15)+10)}!function(e){e.create=function(e,t){return[e,t]},e.fromBlockPos=function(e){return[e[0]>>4,e[2]>>4]},e.fromLong=function(e){return[4294967295&Number(e),Number(e>>BigInt(32))]},e.minBlockX=function(e){return e[0]<<4},e.minBlockZ=function(e){return e[1]<<4},e.maxBlockX=function(e){return e[0]<<19},e.maxBlockZ=function(e){return e[1]<<19}}(fi||(fi={}));class Ei{constructor(e){this.seed=BigInt(0),this.setSeed(e)}fork(){return new Ei(this.nextLong())}setSeed(e){this.seed=e^Ei.MULTIPLIER&Ei.MODULUS_MASK}advance(){this.seed=this.seed*Ei.MULTIPLIER+Ei.INCREMENT&Ei.MODULUS_MASK}consume(e){for(let t=0;t>BigInt(Ei.MODULUS_BITS-e));return t>2147483647?t-4294967296:t}nextInt(e){if(void 0===e)return this.next(32);if(0==(e&e-1))return Number(BigInt(e)*BigInt(this.next(31))>>BigInt(31));let t,r;for(;(t=this.next(31))-(r=t%e)+(e-1)<0;);return r}nextLong(){return(BigInt(this.next(32))<>BigInt(30))*BigInt("-4658895280553007687")&BigInt("0xFFFFFFFFFFFFFFFF"))^e>>BigInt(27))*BigInt("-7723592293110705685")&BigInt("0xFFFFFFFFFFFFFFFF"))^e>>BigInt(31))&BigInt("0xFFFFFFFFFFFFFFFF")}static upgradeSeedTo128bit(e){e<0&&(e+=BigInt("0x10000000000000000"));const t=e^Di.SILVER_RATIO_64,r=t+Di.GOLDEN_RATIO_64&BigInt("0xFFFFFFFFFFFFFFFF");return[Di.mixStafford13(t),Di.mixStafford13(r)]}static rotateLeft(e,t){return e<>BigInt(64)-t}setSeed(e){this.seed=Di.upgradeSeedTo128bit(e)}fork(){return new Di([this.next(),this.next()])}static getSeed(e,t,r){let o=e*BigInt(3129871)^r*BigInt(116129781)^t;return o=o*o*BigInt(42317861)+o*BigInt(11),o>>BigInt(16)}forkAt(e,t,r){const o=Di.getSeed(e,t,r)^this.seed[0];return new Di([o,this.seed[1]])}static LongfromBytes(e,t,r,o,i,n,a,s){return BigInt(e)<BigInt("0x8000000000000000")&&(e-=BigInt("0x10000000000000000")),e}consume(e){let t=this.seed[0],r=this.seed[1];for(let o=0;o>BigInt(64-e)}nextInt(e){var t=this.next()&BigInt(4294967295);if(e){const a=BigInt(e);var r=t*a,o=r&BigInt(4294967295);if(o>BigInt(32);return Number(n)}var a=Number(t);return a>=2147483648&&(a-=4294967296),a}nextFloat(){return Number(this.nextBits(24))*Di.FLOAT_MULTIPLIER}nextDouble(){return Number(this.nextBits(53))*Di.DOUBLE_MULTIPLIER}parityConfigString(){return"seedLo: "+this.seed[0]+", seedHi: "+this.seed[1]}}Di.SILVER_RATIO_64=BigInt("7640891576956012809"),Di.GOLDEN_RATIO_64=BigInt("-7046029254386353131"),Di.FLOAT_MULTIPLIER=1/Math.pow(2,24),Di.DOUBLE_MULTIPLIER=11102230246251565e-32;class $i{constructor(e){this.xo=256*e.nextDouble(),this.yo=256*e.nextDouble(),this.zo=256*e.nextDouble(),this.p=Array(256);for(let t=0;t<256;t+=1)this.p[t]=t;for(let t=0;t<256;t+=1){const r=e.nextInt(256-t),o=this.p[t];this.p[t]=this.p[t+r],this.p[t+r]=o}}sample2D(e,t){let r,o,i;const n=(e+t)*$i.F2,a=Math.floor(e+n),s=e-(a-(r=(a+(o=Math.floor(t+n)))*$i.G2));let c,l;s>(i=t-(o-r))?(c=1,l=0):(c=0,l=1);const d=s-c+$i.G2,_=i-l+$i.G2,m=s-1+2*$i.G2,p=i-1+2*$i.G2,u=255&a,f=255&o,h=this.P(u+this.P(f))%12,g=this.P(u+c+this.P(f+l))%12,b=this.P(u+1+this.P(f+1))%12;return 70*(this.getCornerNoise3D(h,s,i,0,.5)+this.getCornerNoise3D(g,d,_,0,.5)+this.getCornerNoise3D(b,m,p,0,.5))}sample(e,t,r){const o=.3333333333333333*(e+t+r),i=Math.floor(e+o),n=Math.floor(t+o),a=Math.floor(r+o),s=.16666666666666666*(i+n+a),c=e-(i-s),l=t-(n-s),d=r-(a-s);let _,m,p,u,f,h;c>=l?l>=d?(_=1,m=0,p=0,u=1,f=1,h=0):c>=d?(_=1,m=0,p=0,u=1,f=0,h=1):(_=0,m=0,p=1,u=1,f=0,h=1):l127?t-256:t;for(let t=0;t<256;t+=1){const r=e.nextInt(256-t),o=this.p[t];this.p[t]=this.p[t+r],this.p[t+r]=o}}sample(e,t,r,o=0,i=0){const n=e+this.xo,a=t+this.yo,s=r+this.zo,c=Math.floor(n),l=Math.floor(a),d=Math.floor(s),_=n-c,m=a-l,p=s-d;let u=0;if(0!==o){const e=i>=0&&i=0;o-=1)o0&&(o=this.maxLimitNoise.getOctaveNoise(c))&&(s+=o.sample(_,m,p,d,t*d)/n),n/=2}return Ri(a/512,s/512,i)/128}}(hi||(hi={})).fromJson=function(e){var t,r,o,i,n;const a=null!==(t=ui.readObject(e))&&void 0!==t?t:{};return{xzScale:null!==(r=ui.readNumber(a.xz_scale))&&void 0!==r?r:1,yScale:null!==(o=ui.readNumber(a.y_scale))&&void 0!==o?o:1,xzFactor:null!==(i=ui.readNumber(a.xz_factor))&&void 0!==i?i:80,yFactor:null!==(n=ui.readNumber(a.y_factor))&&void 0!==n?n:80}};class Zi{constructor(e,{firstOctave:t,amplitudes:r}){this.first=new qi(e,t,r),this.second=new qi(e,t,r);let o=1/0,i=-1/0;for(let a=0;a{var t;return null!==(t=ui.readNumber(e))&&void 0!==t?t:0})))&&void 0!==o?o:[]}},function(e){e.fromJson=function(t,r){var o,i,n,a;if("number"==typeof t)return new Wi(t);const s=null!==(o=ui.readObject(t))&&void 0!==o?o:{},c=new Xi(r(s.coordinate)),l=null!==(i=ui.readArray(s.points,(e=>{var t;return null!==(t=ui.readObject(e))&&void 0!==t?t:{}})))&&void 0!==i?i:[];if(0===l.length)return new Wi(0);for(const d of l){const t=null!==(n=ui.readNumber(d.location))&&void 0!==n?n:0,o=e.fromJson(d.value,r),i=null!==(a=ui.readNumber(d.derivative))&&void 0!==a?a:0;c.addPoint(t,o,i)}return c}}(bi||(bi={}));class Wi{constructor(e){this.value=e}apply(){return this.value}toJson(){return this.value}}class Xi{constructor(e,t=[],r=[],o=[]){this.coordinate=e,this.locations=t,this.values=r,this.derivatives=o}apply(e){const t=this.coordinate.apply(e),r=function(e,t,r){let o=t-e;for(;o>0;){const t=Math.floor(o/2),i=e+t;r(i)?o=t:(e=i+1,o-=t+1)}return e}(0,this.locations.length,(e=>t({location:e,value:this.values[t].toJson(),derivative:this.derivatives[t]})))}}}(vi||(vi={})).rotate=function(e,t,r){let{up:o,down:i,north:n,east:a,south:s,west:c}=e;switch(r){case 90:[n,a,s,c]=[a,s,c,n];break;case 180:[n,a,s,c]=[s,c,n,a];break;case 270:[n,a,s,c]=[c,n,a,s]}switch(t){case 90:[o,n,i,s]=[n,i,s,o];break;case 180:[o,n,i,s]=[i,s,o,n];break;case 270:[o,n,i,s]=[s,o,n,i]}return{up:o,down:i,north:n,east:a,south:s,west:c}},function(e){function t(e,t){return"number"==typeof e?new r(e,null!=t?t:e):e}e.target=function(e,t,r,o,n,a){return new i(e,t,r,o,n,a)},e.parameters=function(e,r,i,n,a,s,c){return new o(t(e),t(r),t(i),t(n),t(a),t(s),c)},e.param=t;class r{constructor(e,t){this.min=e,this.max=t}distance(e){const t=("number"==typeof e?e:e.min)-this.max,r=this.min-("number"==typeof e?e:e.max);return t>0?t:Math.max(r,0)}union(e){return new r(Math.min(this.min,e.min),Math.max(this.max,e.max))}static fromJson(e){var t;if("number"==typeof e)return new r(e,e);const[o,i]=null!==(t=ui.readArray(e,(e=>ui.readNumber(e))))&&void 0!==t?t:[];return new r(null!=o?o:0,null!=i?i:0)}}e.Param=r;class o{constructor(e,t,r,o,i,n,a){this.temperature=e,this.humidity=t,this.continentalness=r,this.erosion=o,this.depth=i,this.weirdness=n,this.offset=a}fittness(e){return Ci(this.temperature.distance(e.temperature))+Ci(this.humidity.distance(e.humidity))+Ci(this.continentalness.distance(e.continentalness))+Ci(this.erosion.distance(e.erosion))+Ci(this.depth.distance(e.depth))+Ci(this.weirdness.distance(e.weirdness))+Ci(this.offset-e.offset)}space(){return[this.temperature,this.humidity,this.continentalness,this.erosion,this.depth,this.weirdness,new r(this.offset,this.offset)]}static fromJson(e){var t,i;const n=null!==(t=ui.readObject(e))&&void 0!==t?t:{};return new o(r.fromJson(n.temperature),r.fromJson(n.humidity),r.fromJson(n.continentalness),r.fromJson(n.erosion),r.fromJson(n.depth),r.fromJson(n.weirdness),null!==(i=ui.readInt(n.offset))&&void 0!==i?i:0)}}e.ParamPoint=o;class i{constructor(e,t,r,o,i,n){this.temperature=e,this.humidity=t,this.continentalness=r,this.erosion=o,this.depth=i,this.weirdness=n}get offset(){return 0}toArray(){return[this.temperature,this.humidity,this.continentalness,this.erosion,this.depth,this.weirdness,this.offset]}}e.TargetPoint=i,e.Parameters=class{constructor(e){this.things=e,this.index=new n(e)}find(e){return this.index.search(e,((e,t)=>e.distance(t)))}};class n{constructor(e){this.root=n.build(e.map((([e,t])=>new c(e,t))))}static build(e){if(1===e.length)return e[0];if(e.length<=n.CHILDREN_PER_NODE){const t=e.map((e=>{let t=0;for(let r=0;r<7;r+=1){const o=e.space[r];t+=Math.abs((o.min+o.max)/2)}return{key:t,node:e}})).sort(((e,t)=>e.key-t.key)).map((({node:e})=>e));return new s(t)}let t=1/0,r=-1,o=[];for(let i=0;i<7;++i){e=n.sort(e,i,!1),o=n.bucketize(e);let a=0;for(const e of o)a+=n.area(e.space);t>a&&(t=a,r=i)}return e=n.sort(e,r,!1),o=n.bucketize(e),o=n.sort(o,r,!0),new s(o.map((e=>n.build(e.children))))}static sort(e,t,r){return e.map((e=>{const o=e.space[t],i=(o.min+o.max)/2;return{key:r?Math.abs(i):i,node:e}})).sort(((e,t)=>e.key-t.key)).map((({node:e})=>e))}static bucketize(e){const t=[];let r=[];const o=Math.pow(10,Math.floor(Math.log(e.length-.01)/Math.log(10)));for(const i of e)r.push(i),r.lengthnew r(1/0,-1/0)));for(const r of e)t=[...Array(7)].map(((e,o)=>t[o].union(r.space[o])));return t}search(e,t){let r=1/0,o=null;for(const i of this.children){const n=t(i,e);if(r<=n)continue;const a=i.search(e,t),s=i==a?n:t(a,e);r<=s||(r=s,o=a)}return o}}e.RSubTree=s;class c extends a{constructor(e,t){super(e.space()),this.thing=t}search(){return this}}e.RLeaf=c}(yi||(yi={}));class Gi{constructor(e){this.biome=e}getBiome(){return this.biome}static fromJson(e){var t,r;const o=null!==(t=ui.readObject(e))&&void 0!==t?t:{},i=null!==(r=ui.readString(o.biome))&&void 0!==r?r:"minecraft:the_void";return new Gi(i)}}class Vi{constructor(e,t,r){this.offsetSampler=e,this.factorSampler=t,this.jaggednessSampler=r}static extractor(e){return{apply:t=>t[e],toJson:()=>e}}static fromJson(e){var t;const r=null!==(t=ui.readObject(e))&&void 0!==t?t:{};return new Vi(bi.fromJson(r.offset,this.EXTRACTOR),bi.fromJson(r.factor,this.EXTRACTOR),bi.fromJson(r.jaggedness,this.EXTRACTOR))}toJson(){return{offset:this.offsetSampler.toJson(),factor:this.factorSampler.toJson(),jaggedness:this.jaggednessSampler.toJson()}}offset(e){return this.offsetSampler.apply(e)+Vi.GLOBAL_OFFSET}factor(e){return this.factorSampler.apply(e)}jaggedness(e){return this.jaggednessSampler.apply(e)}static point(e,t,r){return{continents:e,erosion:t,weirdness:r,ridges:this.peaksAndValleys(r)}}static peaksAndValleys(e){return 3*-(Math.abs(Math.abs(e)-.6666667)-.33333334)}static overworld(){const e=this.buildErosionOffsetSpline(-.05,0,0,.1,0,-.03,!1,!1),t=this.buildErosionOffsetSpline(-.1,.03,.1,.1,.01,-.03,!1,!1),r=this.buildErosionOffsetSpline(-.1,.03,.1,.7,.01,-.03,!0,!0),o=this.buildErosionOffsetSpline(.3,.03,.1,1,.01,.01,!0,!0),i=new Xi(this.CONTINENTS).addPoint(-1.1,.044).addPoint(-1.02,-.2222).addPoint(-.51,-.2222).addPoint(-.44,-.12).addPoint(-.18,-.12).addPoint(-.16,e).addPoint(-.15,e).addPoint(-.1,t).addPoint(.25,r).addPoint(1,o),n=new Xi(this.CONTINENTS).addPoint(-.19,3.95).addPoint(-.15,this.getErosionFactor(6.25,!0)).addPoint(-.1,this.getErosionFactor(5.47,!0)).addPoint(.03,this.getErosionFactor(5.08,!0)).addPoint(.06,this.getErosionFactor(4.69,!1)),a=new Xi(this.CONTINENTS).addPoint(.11,0).addPoint(.03,this.buildErosionJaggednessSpline(1,.5,0,0)).addPoint(.65,this.buildErosionJaggednessSpline(1,1,1,0));return new Vi(i,n,a)}static getErosionFactor(e,t){const r=new Xi(this.WEIRDNESS).addPoint(-.2,6.3).addPoint(.2,e),o=new Xi(this.EROSION).addPoint(-.6,r).addPoint(-.5,new Xi(this.WEIRDNESS).addPoint(-.05,6.3).addPoint(.05,2.67)).addPoint(-.35,r).addPoint(-.25,r).addPoint(-.1,new Xi(this.WEIRDNESS).addPoint(-.05,2.67).addPoint(.05,6.3)).addPoint(.03,r);if(t){const t=new Xi(this.WEIRDNESS).addPoint(0,e).addPoint(.1,.625),r=new Xi(this.RIDGES).addPoint(-.9,e).addPoint(-.69,t);o.addPoint(.35,e).addPoint(.45,r).addPoint(.55,r).addPoint(.62,e)}else{const t=new Xi(this.RIDGES).addPoint(-.7,r).addPoint(-.15,1.37),i=new Xi(this.RIDGES).addPoint(.45,r).addPoint(.7,1.56);o.addPoint(.05,i).addPoint(.4,i).addPoint(.45,t).addPoint(.55,t).addPoint(.58,e)}return o}static buildErosionOffsetSpline(e,t,r,o,i,n,a,s){const c=this.buildMountainRidgeSplineWithPoints(Ii(o,.6,1.5),s),l=this.buildMountainRidgeSplineWithPoints(Ii(o,.6,1),s),d=this.buildMountainRidgeSplineWithPoints(o,s),_=this.ridgeSpline(e-.15,.5*o,Ii(.5,.5,.5)*o,.5*o,.6*o,.5),m=this.ridgeSpline(e,i*o,t*o,.5*o,.6*o,.5),p=this.ridgeSpline(e,i,i,t,r,.5),u=this.ridgeSpline(e,i,i,t,r,.5),f=new Xi(this.RIDGES).addPoint(-1,e).addPoint(-.4,p).addPoint(0,r+.07),h=this.ridgeSpline(-.02,n,n,t,r,0),g=new Xi(this.EROSION).addPoint(-.85,c).addPoint(-.7,l).addPoint(-.4,d).addPoint(-.35,_).addPoint(-.1,m).addPoint(.2,p);return a&&g.addPoint(.4,u).addPoint(.45,f).addPoint(.55,f).addPoint(.58,u),g.addPoint(.7,h),g}static buildMountainRidgeSplineWithPoints(e,t){const r=new Xi(this.RIDGES),o=this.mountainContinentalness(-1,e,-.7),i=this.mountainContinentalness(1,e,-.7),n=this.calculateMountainRidgeZeroContinentalnessPoint(e);if(-.650?this.buildWeirdnessJaggednessSpline(t):0).addPoint(1,e>0?this.buildWeirdnessJaggednessSpline(e):0)}static buildWeirdnessJaggednessSpline(e){return new Xi(Vi.WEIRDNESS).addPoint(-.01,.63*e).addPoint(.01,.3*e)}}Vi.GLOBAL_OFFSET=-.50375,Vi.EXTRACTOR=e=>{var t;const r=null!==(t=ui.readString(e))&&void 0!==t?t:"continents";return Vi.extractor(r)},Vi.CONTINENTS=Vi.extractor("continents"),Vi.EROSION=Vi.extractor("erosion"),Vi.WEIRDNESS=Vi.extractor("weirdness"),Vi.RIDGES=Vi.extractor("ridges"),(Ni||(Ni={})).fromList=function(e){return(t,r,o,i)=>{for(const n of e){const e=n(t,r,o,i);if(e)return e}return null}};class Ji{constructor(e,t){this.chunk=e,this.filler=t,this.noise000=0,this.noise001=0,this.noise100=0,this.noise101=0,this.noise010=0,this.noise011=0,this.noise110=0,this.noise111=0,this.valueXZ00=0,this.valueXZ10=0,this.valueXZ01=0,this.valueXZ11=0,this.valueZ0=0,this.valueZ1=0,this.value=0,this.slice0=Ji.allocateSlice(e.cellCountY,e.cellCountXZ),this.slice1=Ji.allocateSlice(e.cellCountY,e.cellCountXZ)}static allocateSlice(e,t){const r=Array(t+1);for(let o=0;oe.initializeForFirstCellX()))}advanceCellX(e){this.interpolators.forEach((t=>t.advanceCellX(e)))}selectCellYZ(e,t){this.interpolators.forEach((r=>r.selectCellYZ(e,t)))}updateForY(e){this.interpolators.forEach((t=>t.updateForY(e)))}updateForX(e){this.interpolators.forEach((t=>t.updateForX(e)))}updateForZ(e){this.interpolators.forEach((t=>t.updateForZ(e)))}swapSlices(){this.interpolators.forEach((e=>e.swapSlices()))}updateNoiseAndGenerateBaseState(e,t,r){return this.baseNoise(e,t,r)}}(Oi||(Oi={})).create=function(e,t,r){return{offset:e,factor:t,jaggedness:r}},(wi||(wi={})).create=function(e,t,r){const o=t+e.getOffset(t,0,r),i=r+e.getOffset(r,t,0),n=e.getContinentalness(o,i),a=e.getWeirdness(o,i),s=e.getErosion(o,i);return{shiftedX:o,shiftedZ:i,continentalness:n,weirdness:a,erosion:s,terrainInfo:e.getTerrainInfo(o<<2,i<<2,n,a,s)}},(ki||(ki={})).fromJson=function(e){var t,r,o,i,n,a,s,c,l,d,_,m;const p=null!==(t=ui.readObject(e))&&void 0!==t?t:{};return{minY:null!==(r=ui.readInt(p.min_y))&&void 0!==r?r:0,height:null!==(o=ui.readInt(p.height))&&void 0!==o?o:256,xzSize:null!==(i=ui.readInt(p.size_horizontal))&&void 0!==i?i:1,ySize:null!==(n=ui.readInt(p.size_vertical))&&void 0!==n?n:1,densityFactor:null!==(a=ui.readNumber(p.density_factor))&&void 0!==a?a:0,densityOffset:null!==(s=ui.readNumber(p.density_offset))&&void 0!==s?s:0,sampling:hi.fromJson(p.sampling),topSlide:xi.fromJson(p.top_slide),bottomSlide:xi.fromJson(p.bottom_slide),terrainShaper:Vi.fromJson(p.terrain_shaper),useSimplexSurfaceNoise:null!==(c=ui.readBoolean(p.simplex_surface_noise))&&void 0!==c&&c,randomDensityOffset:null!==(l=ui.readBoolean(p.random_density_offset))&&void 0!==l&&l,islandNoiseOverride:null!==(d=ui.readBoolean(p.island_noise_override))&&void 0!==d&&d,isAmplified:null!==(_=ui.readBoolean(p.amplified))&&void 0!==_&&_,useLegacyRandom:null!==(m=ui.readBoolean(p.use_legacy_random))&&void 0!==m&&m}},function(e){e.fromJson=function(e){var t,r,o,i;const n=null!==(t=ui.readObject(e))&&void 0!==t?t:{};return{target:null!==(r=ui.readNumber(n.target))&&void 0!==r?r:0,size:null!==(o=ui.readInt(n.size))&&void 0!==o?o:0,offset:null!==(i=ui.readInt(n.offset))&&void 0!==i?i:0}},e.apply=function(e,t,r){if(e.size<=0)return t;const o=(r-e.offset)/e.size;return Ri(e.target,t,o)}}(xi||(xi={}));class Ki{constructor(e,t,r,o,i,n,a=!1){if(this.cellWidth=e,this.cellHeight=t,this.cellCountY=r,this.settings=o,a){const r=new Ei(n),a=o.useLegacyRandom?new Ei(n):r.fork();this.blendedNoise=new Hi(a,o.sampling,e,t),r.consume(8),this.temperatureNoise=new Zi(new Ei(n),i.temperature),this.humidityNoise=new Zi(new Ei(n+BigInt(1)),i.humidity),this.continentalnessNoise=new Zi(new Ei(n+BigInt(2)),i.continentalness),this.erosionNoise=new Zi(new Ei(n+BigInt(3)),i.erosion),this.weirdnessNoise=new Zi(new Ei(n+BigInt(4)),i.weirdness),this.offsetNoise=new Zi(new Ei(n+BigInt(5)),i.shift),this.jaggedNoise=new Zi(r.fork(),{firstOctave:-16,amplitudes:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]})}else{const r=Di.create(n).fork();this.blendedNoise=new Hi(r.forkWithHashOf("minecraft:terrain"),o.sampling,e,t),this.temperatureNoise=new Zi(r.forkWithHashOf("minecraft:temperature"),i.temperature),this.humidityNoise=new Zi(r.forkWithHashOf("minecraft:vegetation"),i.humidity),this.continentalnessNoise=new Zi(r.forkWithHashOf("minecraft:continentalness"),i.continentalness),this.erosionNoise=new Zi(r.forkWithHashOf("minecraft:erosion"),i.erosion),this.weirdnessNoise=new Zi(r.forkWithHashOf("minecraft:ridge"),i.weirdness),this.offsetNoise=new Zi(r.forkWithHashOf("minecraft:offset"),i.shift),this.jaggedNoise=new Zi(r.forkWithHashOf("minecraft:jagged"),{firstOctave:-16,amplitudes:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]})}this.shaper=o.terrainShaper,this.baseNoise=e=>{const t=e.createNoiseInterpolator(((t,r,o)=>this.calculateBaseNoise(t,r,o,e.getTerrainInfo(t>>2,o>>2))));return()=>t.sample()}}sample(e,t,r){const o=e+this.getOffset(e,0,r),i=r+this.getOffset(r,e,0),n=this.getContinentalness(o,i),a=this.getErosion(o,i),s=this.getWeirdness(o,i),c=this.shaper.offset(Vi.point(n,a,s));return this.target(e,t,r,o,i,n,a,s,c)}target(e,t,r,o,i,n,a,s,c){const l=t+this.getOffset(t,r,e),d=this.getTemperature(o,l,i),_=this.getHumidity(o,l,i),m=this.computeDimensionDensity(t<<2)+c;return yi.target(d,_,n,a,m,s)}getOffset(e,t,r){return 4*this.offsetNoise.sample(e,t,r)}getTemperature(e,t,r){return this.temperatureNoise.sample(e,t,r)}getHumidity(e,t,r){return this.humidityNoise.sample(e,t,r)}getContinentalness(e,t){return this.continentalnessNoise.sample(e,0,t)}getErosion(e,t){return this.erosionNoise.sample(e,0,t)}getWeirdness(e,t){return this.weirdnessNoise.sample(e,0,t)}getTerrainInfo(e,t,r,o,i){const n=Vi.point(r,o,i);return Oi.create(this.shaper.offset(n),this.shaper.factor(n),this.shaper.jaggedness(n))}makeBaseNoiseFiller(e,t){const r=this.baseNoise(e);return(e,o,i)=>{let n=r();return n=Ti(.64*n,-1,1),n=n/2-n*n*n/24,n+=t(e,o,i),n>0?null:Ai.AIR}}calculateBaseNoise(e,t,r,o){let i=this.blendedNoise.sample(e,t,r);if(o){const n=this.sampleJaggedNoise(o.jaggedness,e,r),a=this.computeDimensionDensity(t),s=o.factor*(o.offset+n+a);i+=s>0?4*s:s}return i=Ti(i,-64,64),i=this.applySlide(i,t/this.cellHeight),i=Ti(i,-64,64),i}sampleJaggedNoise(e,t,r){if(0===e)return 0;const o=this.jaggedNoise.sample(1500*t,0,1500*r);return o>0?e*o:e/2*o}computeDimensionDensity(e){return(1-e/128)*this.settings.densityFactor+this.settings.densityOffset}applySlide(e,t){const r=t-Math.floor(this.settings.minY/this.cellHeight);return e=xi.apply(this.settings.topSlide,e,this.cellCountY-r),xi.apply(this.settings.bottomSlide,e,r)}}class Qi{constructor(e,t,r){this.biomeSource=t,this.settings=r,this.cellHeight=r.noise.ySize<<2,this.cellWidth=r.noise.xzSize<<2,this.cellCountXZ=Math.floor(16/this.cellWidth),this.cellCountY=Math.floor(r.noise.height/this.cellHeight),this.sampler=new Ki(this.cellWidth,this.cellHeight,this.cellCountY,r.noise,r.octaves,e,r.legacyRandomSource),this.materialRule=Ni.fromList([(e,t,r,o)=>e.updateNoiseAndGenerateBaseState(t,r,o)])}fillBiomes(e){const t=Math.max(e.minY,this.settings.noise.minY),r=Math.min(e.maxY,this.settings.noise.minY+this.settings.noise.height),o=Math.floor(t/this.cellHeight);Math.floor((r-t)/this.cellHeight);const i=fi.minBlockX(e.pos),n=fi.minBlockZ(e.pos),a=new Yi(this.cellWidth,this.cellHeight,this.cellCountXZ,this.cellCountY,o,this.sampler,i,n,(()=>0));for(let s=0;sh))}}}fill(e){var t;const r=Math.max(e.minY,this.settings.noise.minY),o=Math.min(e.maxY,this.settings.noise.minY+this.settings.noise.height),i=Math.floor(r/this.cellHeight),n=Math.floor((o-r)/this.cellHeight),a=fi.minBlockX(e.pos),s=fi.minBlockZ(e.pos),c=new Yi(this.cellWidth,this.cellHeight,this.cellCountXZ,this.cellCountY,i,this.sampler,a,s,(()=>0));c.initializeForFirstCellX();for(let l=0;l=0;d-=1){c.selectCellYZ(d,r);for(let n=this.cellHeight-1;n>=0;n-=1){const _=(i+d)*this.cellHeight+n,m=15&_,p=e.getSectionIndex(_);e.getSectionIndex(o.minBlockY)!==p&&(o=e.getOrCreateSection(p));const u=n/this.cellHeight;c.updateForY(u);for(let e=0;e{var t,r,o;return{distance:null!==(t=ui.readInt(e.distance))&&void 0!==t?t:0,spread:null!==(r=ui.readInt(e.spread))&&void 0!==r?r:0,count:null!==(o=ui.readInt(e.count))&&void 0!==o?o:0}})),structures:ui.readMap(r.structures,(e=>{var t,r,o,i,n;return r=null!==(t=ui.readObject(e))&&void 0!==t?t:{},{spacing:null!==(o=ui.readInt(r.spacing))&&void 0!==o?o:0,separation:null!==(i=ui.readInt(r.separation))&&void 0!==i?i:0,salt:null!==(n=ui.readInt(r.salt))&&void 0!==n?n:0}}))}},(Mi||(Mi={})).fromJson=function(e){var t;const r=null!==(t=ui.readObject(e))&&void 0!==t?t:{};return{temperature:gi.fromJson(r.temperature),humidity:gi.fromJson(r.humidity),continentalness:gi.fromJson(r.continentalness),erosion:gi.fromJson(r.erosion),weirdness:gi.fromJson(r.weirdness),shift:gi.fromJson(r.shift)}};let tn=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});tn.decode();let rn=null;function on(e,t){return tn.decode((null!==rn&&rn.buffer===en.memory.buffer||(rn=new Uint8Array(en.memory.buffer)),rn).subarray(e,e+t))}const nn=new Uint32Array(2),an=new BigInt64Array(nn.buffer);let sn=null;function cn(){return null!==sn&&sn.buffer===en.memory.buffer||(sn=new Int32Array(en.memory.buffer)),sn}let ln=null;function dn(){return null!==ln&&ln.buffer===en.memory.buffer||(ln=new Float64Array(en.memory.buffer)),ln}let _n=0;function mn(e,t){const r=t(8*e.length);return dn().set(e,r/8),_n=e.length,r}let pn=null;function un(e,t){const r=t(4*e.length);return(null!==pn&&pn.buffer===en.memory.buffer||(pn=new Uint32Array(en.memory.buffer)),pn).set(e,r/4),_n=e.length,r}function fn(e,t,r,o,i,n,a,s,c,l,d,_,m,p){var u=mn(e,en.__wbindgen_malloc),f=_n,h=mn(t,en.__wbindgen_malloc),g=_n,b=mn(r,en.__wbindgen_malloc),v=_n,y=mn(o,en.__wbindgen_malloc),N=_n,O=mn(i,en.__wbindgen_malloc),w=_n,k=mn(n,en.__wbindgen_malloc),x=_n,S=mn(a,en.__wbindgen_malloc),j=_n,M=mn(s,en.__wbindgen_malloc),P=_n,A=mn(c,en.__wbindgen_malloc),L=_n,B=mn(l,en.__wbindgen_malloc),C=_n,T=mn(d,en.__wbindgen_malloc),I=_n,z=mn(_,en.__wbindgen_malloc),R=_n,F=mn(m,en.__wbindgen_malloc),E=_n,D=un(p,en.__wbindgen_malloc),$=_n,U=en.biome_parameters(u,f,h,g,b,v,y,N,O,w,k,x,S,j,M,P,A,L,B,C,T,I,z,R,F,E,D,$);return yn.__wrap(U)}function hn(e,t,r,o,i,n,a,s,c,l,d,_,m){an[0]=e;const p=nn[0],u=nn[1];var f=mn(r,en.__wbindgen_malloc),h=_n,g=mn(i,en.__wbindgen_malloc),b=_n,v=mn(a,en.__wbindgen_malloc),y=_n,N=mn(c,en.__wbindgen_malloc),O=_n,w=mn(d,en.__wbindgen_malloc),k=_n,x=mn(m,en.__wbindgen_malloc),S=_n,j=en.climate_sampler(p,u,t,f,h,o,g,b,n,v,y,s,N,O,l,w,k,_,x,S);return Nn.__wrap(j)}function gn(e,t){if(!(e instanceof t))throw new Error(`expected instance of ${t.name}`);return e.ptr}function bn(e,t,r,o,i,n,a,s,c,l,d){try{const h=en.__wbindgen_add_to_stack_pointer(-16);gn(e,yn),gn(t,Nn),en.multi_noise(h,e.ptr,t.ptr,r,o,i,n,a,s,c,l,d);var _=cn()[h/4+0],m=cn()[h/4+1],p=(u=_,f=m,cn().subarray(u/4,u/4+f)).slice();return en.__wbindgen_free(_,4*m),p}finally{en.__wbindgen_add_to_stack_pointer(16)}var u,f}function vn(e,t,r,o,i,n,a,s,c,l){try{const f=en.__wbindgen_add_to_stack_pointer(-16);gn(e,Nn),en.climate_noise(f,e.ptr,t,r,o,i,n,a,s,c,l);var d=cn()[f/4+0],_=cn()[f/4+1],m=(p=d,u=_,dn().subarray(p/8,p/8+u)).slice();return en.__wbindgen_free(d,8*_),m}finally{en.__wbindgen_add_to_stack_pointer(16)}var p,u}class yn{static __wrap(e){const t=Object.create(yn.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();en.__wbg_parameterlist_free(e)}}class Nn{static __wrap(e){const t=Object.create(Nn.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();en.__wbg_sampler_free(e)}}async function On(e){void 0===e&&(e=new URL("deepslate_rs_bg.wasm",d.url));const t={wbg:{}};t.wbg.__wbindgen_throw=function(e,t){throw new Error(on(e,t))},("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));const{instance:r,module:o}=await async function(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(r){if("application/wasm"==e.headers.get("Content-Type"))throw r;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",r)}const o=await e.arrayBuffer();return await WebAssembly.instantiate(o,t)}{const r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}(await e,t);return en=r.exports,On.__wbindgen_wasm_module=o,en}var wn="/assets/deepslate_rs_bg.4990c219.wasm",kn={},xn={};Object.defineProperty(xn,"__esModule",{value:!0}),xn.initCollections=void 0,xn.initCollections=function(e){e.register("advancement_trigger",["minecraft:bee_nest_destroyed","minecraft:bred_animals","minecraft:brewed_potion","minecraft:changed_dimension","minecraft:channeled_lightning","minecraft:construct_beacon","minecraft:consume_item","minecraft:cured_zombie_villager","minecraft:effects_changed","minecraft:enchanted_item","minecraft:enter_block","minecraft:entity_hurt_player","minecraft:entity_killed_player","minecraft:filled_bucket","minecraft:fishing_rod_hooked","minecraft:hero_of_the_village","minecraft:impossible","minecraft:inventory_changed","minecraft:item_durability_changed","minecraft:killed_by_crossbow","minecraft:levitation","minecraft:location","minecraft:nether_travel","minecraft:placed_block","minecraft:player_hurt_entity","minecraft:player_killed_entity","minecraft:recipe_unlocked","minecraft:shot_crossbow","minecraft:safely_harvest_honey","minecraft:slept_in_bed","minecraft:slide_down_block","minecraft:summoned_entity","minecraft:tame_animal","minecraft:tick","minecraft:used_ender_eye","minecraft:used_totem","minecraft:villager_trade","minecraft:voluntary_exile"]),e.register("loot_pool_entry_type",["minecraft:empty","minecraft:item","minecraft:tag","minecraft:loot_table","minecraft:alternatives","minecraft:sequence","minecraft:group","minecraft:dynamic"]),e.register("loot_condition_type",["minecraft:alternative","minecraft:inverted","minecraft:reference","minecraft:entity_properties","minecraft:block_state_property","minecraft:match_tool","minecraft:damage_source_properties","minecraft:location_check","minecraft:weather_check","minecraft:time_check","minecraft:entity_scores","minecraft:random_chance","minecraft:random_chance_with_looting","minecraft:table_bonus","minecraft:killed_by_player","minecraft:survives_explosion"]),e.register("loot_function_type",["minecraft:set_count","minecraft:set_damage","minecraft:set_name","minecraft:set_lore","minecraft:set_nbt","minecraft:set_attributes","minecraft:set_contents","minecraft:enchant_randomly","minecraft:enchant_with_levels","minecraft:looting_enchant","minecraft:limit_count","minecraft:furnace_smelt","minecraft:explosion_decay","minecraft:fill_player_head","minecraft:copy_name","minecraft:copy_nbt","minecraft:copy_state","minecraft:apply_bonus","minecraft:exploration_map","minecraft:set_stew_effect"]),e.register("attribute",["generic.maxHealth","generic.followRange","generic.knockbackResistance","generic.movementSpeed","generic.attackDamage","generic.armor","generic.armorToughness","generic.attackSpeed","generic.luck","horse.jumpStrength","generic.attackKnockback","generic.flyingSpeed","zombie.spawnReinforcements"]),e.register("structure_feature",["pillager_outpost","mineshaft","mansion","jungle_pyramid","desert_pyramid","igloo","shipwreck","swamp_hut","stronghold","monument","ocean_ruin","fortress","endcity","buried_treasure","village"]),e.register("dimension",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("keybind",["key.advancements","key.attack","key.back","key.chat","key.command","key.drop","key.forward","key.fullscreen","key.hotbar.1","key.hotbar.2","key.hotbar.3","key.hotbar.4","key.hotbar.5","key.hotbar.6","key.hotbar.7","key.hotbar.8","key.hotbar.9","key.inventory","key.jump","key.left","key.loadToolbarActivator","key.pickItem","key.playerlist","key.right","key.saveToolbarActivator","key.screenshot","key.smoothCamera","key.sneak","key.spectatorOutlines","key.sprint","key.swapOffhand","key.togglePerspective","key.use"]),e.register("slot",["mainhand","offhand","head","chest","legs","feet"]),e.register("gamemode",["survival","creative","adventure","spectator"]),e.register("entity_source",["this","direct_killer","killer","killer_player"]),e.register("copy_source",["block_entity","this","killer","killer_player"]),e.register("loot_table_apply_bonus_formula",["minecraft:uniform_bonus_count","minecraft:binomial_with_bonus_count","minecraft:ore_drops"]),e.register("map_decoration",["mansion","monument","player","frame","red_marker","blue_marker","target_x","target_point","player_off_map","player_off_limits","red_x","banner_white","banner_orange","banner_magenta","banner_light_blue","banner_yellow","banner_lime","banner_pink","banner_gray","banner_light_gray","banner_cyan","banner_purple","banner_blue","banner_brown","banner_green","banner_red","banner_black"]),e.register("recipe_group",["bed","light_gray_dye","iron_ingot","wooden_stairs","black_dye","stained_terracotta","dyed_bed","magenta_dye","bark","rabbit_stew","light_blue_dye","wooden_fence_gate","planks","stained_glass","wooden_door","stained_glass_pane","wooden_fence","sticks","concrete_powder","wooden_pressure_plate","boat","brown_dye","yellow_dye","bonemeal","red_dye","wooden_trapdoor","wooden_button","gold_ingot","pink_dye","wooden_slab","orange_dye","carpet","sign","wool","sugar","blue_dye","white_dye","banner","netherite_ingot"]),e.register("loot_context_type",["minecraft:empty","minecraft:chest","minecraft:command","minecraft:selector","minecraft:fishing","minecraft:entity","minecraft:gift","minecraft:barter","minecraft:advancement_reward","minecraft:advancement_entity","minecraft:generic","minecraft:block"])};var Sn={},jn={},Mn={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initCommonSchemas=e.Range=e.ConditionCases=void 0;const t=Ce;e.initCommonSchemas=function(r,o){const i=t.StringNode.bind(void 0,o),n=t.Reference.bind(void 0,r);r.register("block_state",t.Mod(t.ObjectNode({Name:i({validator:"resource",params:{pool:"block"}}),Properties:t.Opt(t.MapNode(i(),i(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"Name"}]}}}))},{context:"block_state"}),{default:()=>({Name:"minecraft:stone"})})),r.register("fluid_state",t.Mod(t.ObjectNode({Name:i({validator:"resource",params:{pool:"fluid"}}),Properties:t.Opt(t.MapNode(i(),i()))},{context:"fluid_state"}),{default:()=>({Name:"minecraft:water",Properties:{level:"0"}})})),r.register("block_pos",t.Mod(t.ListNode(t.NumberNode({integer:!0})),{default:()=>[0,0,0]})),e.Range=e=>t.ChoiceNode([...(null==e?void 0:e.forceRange)?[]:[{type:"number",node:t.NumberNode(e),change:e=>{var t,r,o;return void 0===e?0:null!==(o=null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:e.n)&&void 0!==o?o:0}}],{type:"object",priority:-1,node:t.ObjectNode({min:(null==e?void 0:e.bounds)?t.NumberNode(e):t.Opt(t.NumberNode(e)),max:(null==e?void 0:e.bounds)?t.NumberNode(e):t.Opt(t.NumberNode(e))},{context:"range"}),change:e=>({min:"number"==typeof e?e:void 0===e?1:e.n,max:"number"==typeof e?e:void 0===e?1:e.n})},...(null==e?void 0:e.allowBinomial)?[{type:"binomial",node:t.ObjectNode({type:i({enum:["minecraft:binomial"]}),n:t.NumberNode({integer:!0,min:0}),p:t.NumberNode({min:0,max:1})},{context:"range"}),match:e=>void 0!==e&&"minecraft:binomial"===e.type,change:e=>{var t,r;return{type:"minecraft:binomial",n:"number"==typeof e?e:void 0===e?1:null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:1,p:.5}}}]:[]],{choiceContext:"range"}),e.ConditionCases={"minecraft:alternative":{terms:t.ListNode(n("condition"))},"minecraft:block_state_property":{block:i({validator:"resource",params:{pool:"block"}}),properties:t.MapNode(i(),i(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})},"minecraft:damage_source_properties":{predicate:n("damage_source_predicate")},"minecraft:entity_properties":{entity:i({enum:"entity_source"}),predicate:n("entity_predicate")},"minecraft:entity_scores":{entity:i({enum:"entity_source"}),scores:t.MapNode(i({validator:"objective"}),e.Range({forceRange:!0,bounds:!0}))},"minecraft:inverted":{term:n("condition")},"minecraft:killed_by_player":{inverse:t.Opt(t.BooleanNode())},"minecraft:location_check":{offsetX:t.Opt(t.NumberNode({integer:!0})),offsetY:t.Opt(t.NumberNode({integer:!0})),offsetZ:t.Opt(t.NumberNode({integer:!0})),predicate:n("location_predicate")},"minecraft:match_tool":{predicate:n("item_predicate")},"minecraft:random_chance":{chance:t.NumberNode({min:0,max:1})},"minecraft:random_chance_with_looting":{chance:t.NumberNode({min:0,max:1}),looting_multiplier:t.NumberNode()},"minecraft:reference":{name:i({validator:"resource",params:{pool:"$predicate"}})},"minecraft:table_bonus":{enchantment:i({validator:"resource",params:{pool:"enchantment"}}),chances:t.ListNode(t.NumberNode({min:0,max:1}))},"minecraft:time_check":{value:e.Range(),period:t.Opt(t.NumberNode())},"minecraft:weather_check":{raining:t.Opt(t.BooleanNode()),thundering:t.Opt(t.BooleanNode())}}}}(Mn);var Pn={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initPredicatesSchemas=e.LocationFields=void 0;const t=Ce,r=Mn;e.initPredicatesSchemas=function(o,i){const n=t.Reference.bind(void 0,o),a=t.StringNode.bind(void 0,i),s=t.ChoiceNode([{type:"string",node:a(),change:e=>"boolean"==typeof e||"number"==typeof e?e.toString():""},{type:"number",node:t.NumberNode(),change:e=>"string"==typeof e?parseInt(e):0},{type:"object",node:t.ObjectNode({min:t.Opt(t.NumberNode({integer:!0})),max:t.Opt(t.NumberNode({integer:!0}))}),change:e=>"number"==typeof e?{min:e,max:e}:{}},{type:"boolean",node:t.BooleanNode(),change:e=>"true"===e||1===e}]);o.register("item_predicate",t.ObjectNode({item:t.Opt(a({validator:"resource",params:{pool:"item"}})),tag:t.Opt(a({validator:"resource",params:{pool:"$tag/item"}})),count:t.Opt(r.Range()),durability:t.Opt(r.Range()),potion:t.Opt(a({validator:"resource",params:{pool:"potion"}})),nbt:t.Opt(a({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}})),enchantments:t.Opt(t.ListNode(n("enchantment_predicate")))},{context:"item"})),o.register("enchantment_predicate",t.ObjectNode({enchantment:t.Opt(a({validator:"resource",params:{pool:"enchantment"}})),levels:t.Opt(r.Range())},{context:"enchantment"})),o.register("block_predicate",t.ObjectNode({block:t.Opt(a({validator:"resource",params:{pool:"block"}})),tag:t.Opt(a({validator:"resource",params:{pool:"$tag/block"}})),nbt:t.Opt(a({validator:"nbt",params:{registry:{category:"minecraft:block",id:["pop",{push:"block"}]}}})),state:t.Opt(t.MapNode(a(),s,{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},{context:"block"})),o.register("fluid_predicate",t.ObjectNode({fluid:t.Opt(a({validator:"resource",params:{pool:"fluid"}})),tag:t.Opt(a({validator:"resource",params:{pool:"$tag/fluid"}})),state:t.Opt(t.MapNode(a(),s))},{context:"fluid"})),e.LocationFields={position:t.Opt(t.ObjectNode({x:t.Opt(r.Range()),y:t.Opt(r.Range()),z:t.Opt(r.Range())})),biome:t.Opt(a({enum:"biome"})),feature:t.Opt(a({enum:"structure_feature"})),dimension:t.Opt(a({enum:"dimension"})),light:t.Opt(t.ObjectNode({light:t.Opt(r.Range({integer:!0,min:0,max:15}))})),block:t.Opt(n("block_predicate")),fluid:t.Opt(n("fluid_predicate"))},o.register("location_predicate",t.ObjectNode(e.LocationFields,{context:"location"})),o.register("statistic_predicate",t.ObjectNode({type:a({validator:"resource",params:{pool:"stat_type"}}),stat:a(),value:r.Range(),[t.Switch]:[{push:"type"}],[t.Case]:{"minecraft:mined":{stat:a({validator:"resource",params:{pool:"block"}})},"minecraft:crafted":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:used":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:broken":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:picked_up":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:dropped":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:killed":{stat:a({validator:"resource",params:{pool:"entity_type"}})},"minecraft:killed_by":{stat:a({validator:"resource",params:{pool:"entity_type"}})},"minecraft:custom":{stat:a({validator:"resource",params:{pool:"custom_stat"}})}}})),o.register("player_predicate",t.ObjectNode({gamemode:t.Opt(a({enum:"gamemode"})),level:t.Opt(r.Range()),advancements:t.Opt(t.MapNode(a({validator:"resource",params:{pool:"$advancement"}}),t.ChoiceNode([{type:"boolean",node:t.BooleanNode(),change:e=>!0},{type:"object",node:t.MapNode(a(),t.BooleanNode())}]))),recipes:t.Opt(t.MapNode(a({validator:"resource",params:{pool:"$recipe"}}),t.BooleanNode())),stats:t.Opt(t.ListNode(n("statistic_predicate")))},{context:"player"})),o.register("status_effect_predicate",t.ObjectNode({amplifier:t.Opt(r.Range()),duration:t.Opt(r.Range()),ambient:t.Opt(t.BooleanNode()),visible:t.Opt(t.BooleanNode())},{context:"status_effect"})),o.register("distance_predicate",t.ObjectNode({x:t.Opt(r.Range()),y:t.Opt(r.Range()),z:t.Opt(r.Range()),absolute:t.Opt(r.Range()),horizontal:t.Opt(r.Range())},{context:"distance"})),o.register("entity_predicate",t.ObjectNode({type:t.Opt(a({validator:"resource",params:{pool:"entity_type",allowTag:!0}})),nbt:t.Opt(a({validator:"nbt",params:{registry:{category:"minecraft:entity",id:["pop",{push:"type"}]}}})),team:t.Opt(a({validator:"team"})),location:t.Opt(n("location_predicate")),distance:t.Opt(n("distance_predicate")),flags:t.Opt(t.ObjectNode({is_on_fire:t.Opt(t.BooleanNode()),is_sneaking:t.Opt(t.BooleanNode()),is_sprinting:t.Opt(t.BooleanNode()),is_swimming:t.Opt(t.BooleanNode()),is_baby:t.Opt(t.BooleanNode())})),equipment:t.Opt(t.MapNode(a({enum:"slot"}),n("item_predicate"))),player:t.Opt(n("player_predicate")),effects:t.Opt(t.MapNode(a({validator:"resource",params:{pool:"mob_effect"}}),n("status_effect_predicate")))},{context:"entity"})),o.register("damage_source_predicate",t.ObjectNode({is_explosion:t.Opt(t.BooleanNode()),is_fire:t.Opt(t.BooleanNode()),is_magic:t.Opt(t.BooleanNode()),is_projectile:t.Opt(t.BooleanNode()),is_lightning:t.Opt(t.BooleanNode()),bypasses_armor:t.Opt(t.BooleanNode()),bypasses_invulnerability:t.Opt(t.BooleanNode()),bypasses_magic:t.Opt(t.BooleanNode()),source_entity:t.Opt(n("entity_predicate")),direct_entity:t.Opt(n("entity_predicate"))},{context:"damage_source"})),o.register("damage_predicate",t.ObjectNode({dealt:t.Opt(r.Range()),taken:t.Opt(r.Range()),blocked:t.Opt(t.BooleanNode()),source_entity:t.Opt(n("entity_predicate")),type:t.Opt(n("damage_source_predicate"))},{context:"damage"}))}}(Pn),Object.defineProperty(jn,"__esModule",{value:!0}),jn.initAdvancementSchemas=void 0;const An=Ce,Ln=Mn,Bn=Pn;jn.initAdvancementSchemas=function(e,t){const r=An.Reference.bind(void 0,e),o=An.StringNode.bind(void 0,t);e.register("advancement",An.Mod(An.ObjectNode({display:An.Opt(An.Mod(An.ObjectNode({icon:An.ObjectNode({item:o({validator:"resource",params:{pool:"item"}}),nbt:An.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}}))}),title:r("text_component"),description:r("text_component"),background:An.Opt(o()),frame:An.Opt(o({enum:["task","challenge","goal"]})),show_toast:An.Opt(An.BooleanNode()),announce_to_chat:An.Opt(An.BooleanNode()),hidden:An.Opt(An.BooleanNode())}),{default:()=>({icon:{item:"minecraft:stone"},title:"",description:""})})),parent:An.Opt(o({validator:"resource",params:{pool:"$advancement"}})),criteria:An.MapNode(o(),r("advancement_criteria")),requirements:An.Opt(An.ListNode(An.ListNode(o()))),rewards:An.Opt(An.ObjectNode({function:An.Opt(o({validator:"resource",params:{pool:"$function"}})),loot:An.Opt(An.ListNode(o({validator:"resource",params:{pool:"$loot_table"}}))),recipes:An.Opt(An.ListNode(o({validator:"resource",params:{pool:"$recipe"}}))),experience:An.Opt(An.NumberNode({integer:!0}))}))},{context:"advancement"}),{default:()=>({criteria:{requirement:{trigger:"minecraft:location"}}})})),e.register("advancement_criteria",An.ObjectNode({trigger:o({validator:"resource",params:{pool:t.get("advancement_trigger")}}),conditions:An.Opt(An.ObjectNode({[An.Switch]:["pop",{push:"trigger"}],[An.Case]:{"minecraft:bee_nest_destroyed":{block:An.Opt(o({validator:"resource",params:{pool:"block"}})),num_bees_inside:An.Opt(An.NumberNode({integer:!0})),item:An.Opt(r("item_predicate"))},"minecraft:bred_animals":{parent:An.Opt(r("entity_predicate")),partner:An.Opt(r("entity_predicate")),child:An.Opt(r("entity_predicate"))},"minecraft:brewed_potion":{potion:An.Opt(o({validator:"resource",params:{pool:"potion"}}))},"minecraft:changed_dimension":{from:An.Opt(o({enum:"dimension"})),to:An.Opt(o({enum:"dimension"}))},"minecraft:channeled_lightning":{victims:An.Opt(An.ListNode(An.Opt(r("entity_predicate"))))},"minecraft:construct_beacon":{level:An.Opt(Ln.Range())},"minecraft:consume_item":{item:An.Opt(r("item_predicate"))},"minecraft:cured_zombie_villager":{villager:An.Opt(r("entity_predicate")),zombie:An.Opt(r("entity_predicate"))},"minecraft:effects_changed":{effects:An.Opt(An.MapNode(o({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},"minecraft:enter_block":{block:An.Opt(o({validator:"resource",params:{pool:"block"}})),state:An.Opt(An.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},"minecraft:enchanted_item":{levels:An.Opt(Ln.Range()),item:An.Opt(r("item_predicate"))},"minecraft:entity_hurt_player":{damage:An.Opt(r("damage_predicate"))},"minecraft:entity_killed_player":{entity:An.Opt(r("entity_predicate")),killing_blow:An.Opt(r("damage_source_predicate"))},"minecraft:filled_bucket":{item:An.Opt(r("item_predicate"))},"minecraft:fishing_rod_hooked":{entity:An.Opt(r("entity_predicate")),item:An.Opt(r("item_predicate"))},"minecraft:hero_of_the_village":Bn.LocationFields,"minecraft:inventory_changed":{slots:An.Opt(An.ObjectNode({empty:An.Opt(Ln.Range()),occupied:An.Opt(Ln.Range()),full:An.Opt(Ln.Range())})),items:An.Opt(An.ListNode(r("item_predicate")))},"minecraft:item_durability_changed":{delta:An.Opt(Ln.Range()),durability:An.Opt(Ln.Range()),item:An.Opt(r("item_predicate"))},"minecraft:killed_by_crossbow":{unique_entity_types:An.Opt(Ln.Range()),victims:An.Opt(An.ListNode(An.Opt(r("entity_predicate"))))},"minecraft:levitation":{distance:An.Opt(Ln.Range()),duration:An.Opt(Ln.Range())},"minecraft:location":Bn.LocationFields,"minecraft:nether_travel":{distance:An.Opt(Ln.Range()),entered:An.Opt(r("location_predicate")),exited:An.Opt(r("location_predicate"))},"minecraft:placed_block":{block:An.Opt(o({validator:"resource",params:{pool:"block"}})),state:An.Opt(An.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})),item:An.Opt(r("item_predicate")),location:An.Opt(r("location_predicate"))},"minecraft:player_hurt_entity":{damage:An.Opt(r("damage_predicate")),entity:An.Opt(r("entity_predicate"))},"minecraft:player_killed_entity":{entity:An.Opt(r("entity_predicate")),killing_blow:An.Opt(r("damage_source_predicate"))},"minecraft:recipe_unlocked":{recipe:o({validator:"resource",params:{pool:"$recipe"}})},"minecraft:safely_harvest_honey":{block:An.Opt(An.ObjectNode({block:An.Opt(o({validator:"resource",params:{pool:"block"}})),tag:An.Opt(o({validator:"resource",params:{pool:"$tag/block"}}))})),item:An.Opt(r("item_predicate"))},"minecraft:slept_in_bed":Bn.LocationFields,"minecraft:slide_down_block":{block:An.Opt(o({validator:"resource",params:{pool:"block"}}))},"minecraft:shot_crossbow":{item:An.Opt(r("item_predicate"))},"minecraft:summoned_entity":{entity:An.Opt(r("entity_predicate"))},"minecraft:tame_animal":{entity:An.Opt(r("entity_predicate"))},"minecraft:used_ender_eye":{distance:An.Opt(Ln.Range())},"minecraft:used_totem":{item:An.Opt(r("item_predicate"))},"minecraft:villager_trade":{villager:An.Opt(r("entity_predicate")),item:An.Opt(r("item_predicate"))},"minecraft:voluntary_exile":Bn.LocationFields}},{context:"criterion"}))},{category:"predicate",context:"criterion"}))};var Cn={};Object.defineProperty(Cn,"__esModule",{value:!0}),Cn.initConditionSchemas=void 0;const Tn=Ce,In=Mn;Cn.initConditionSchemas=function(e,t){const r=Tn.Reference.bind(void 0,e),o=Tn.StringNode.bind(void 0,t);e.register("predicate",Tn.ObjectOrList(r("condition"),{choiceContext:"condition"})),e.register("condition",Tn.Mod(Tn.ObjectNode({condition:o({validator:"resource",params:{pool:"loot_condition_type"}}),[Tn.Switch]:[{push:"condition"}],[Tn.Case]:In.ConditionCases},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:entity_properties",entity:"this"})}))};var zn={},Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.LootFunctions=Rn.LootConditions=Rn.LootCopySources=Rn.LootEntitySources=Rn.LootTableTypes=void 0,Rn.LootTableTypes=new Map([["minecraft:advancement_entity",{requires:[7,8],allows:[]}],["minecraft:advancement_reward",{requires:[7,8],allows:[]}],["minecraft:barter",{requires:[8],allows:[]}],["minecraft:block",{requires:[1,7,9],allows:[0,4,8]}],["minecraft:chest",{requires:[7],allows:[8]}],["minecraft:command",{requires:[7],allows:[8]}],["minecraft:empty",{requires:[],allows:[]}],["minecraft:entity",{requires:[2,7,8],allows:[3,5,6]}],["minecraft:fishing",{requires:[7,9],allows:[8]}],["minecraft:generic",{requires:[2,0,1,3,4,5,6,7,8,9],allows:[]}],["minecraft:gift",{requires:[7,8],allows:[]}],["minecraft:selector",{requires:[7],allows:[8]}]]),Rn.LootEntitySources=new Map([["direct_killer",[3]],["killer",[5]],["killer_player",[5]],["this",[8]]]),Rn.LootCopySources=new Map([["block_entity",[0]],["killer",[5]],["killer_player",[5]],["this",[8]]]),Rn.LootConditions=new Map([["minecraft:alternative",[]],["minecraft:block_state_property",[1]],["minecraft:damage_source_properties",[2]],["minecraft:entity_properties",[7]],["minecraft:entity_scores",[]],["minecraft:inverted",[]],["minecraft:killed_by_player",[6]],["minecraft:location_check",[]],["minecraft:match_tool",[9]],["minecraft:random_chance",[]],["minecraft:random_chance_with_looting",[5]],["minecraft:reference",[]],["minecraft:survives_explosion",[4]],["minecraft:table_bonus",[9]],["minecraft:time_check",[]],["minecraft:weather_check",[]]]),Rn.LootFunctions=new Map([["minecraft:apply_bonus",[9]],["minecraft:copy_name",[]],["minecraft:copy_nbt",[]],["minecraft:copy_state",[1]],["minecraft:enchant_randomly",[]],["minecraft:enchant_with_levels",[]],["minecraft:exploration_map",[7]],["minecraft:explosion_decay",[]],["minecraft:fill_player_head",[]],["minecraft:furnace_smelt",[]],["minecraft:limit_count",[]],["minecraft:looting_enchant",[5]],["minecraft:set_attributes",[]],["minecraft:set_contents",[]],["minecraft:set_count",[]],["minecraft:set_damage",[]],["minecraft:set_loot_table",[]],["minecraft:set_lore",[]],["minecraft:set_name",[]],["minecraft:set_nbt",[]],["minecraft:set_stew_effect",[]]]),Object.defineProperty(zn,"__esModule",{value:!0}),zn.initLootTableSchemas=void 0;const Fn=Ce,En=Rn,Dn=Mn;zn.initLootTableSchemas=function(e,t){const r=Fn.Reference.bind(void 0,e),o=Fn.StringNode.bind(void 0,t),i={conditions:Fn.Opt(Fn.ListNode(r("loot_condition")))},n=s({functions:Fn.Opt(Fn.ListNode(r("loot_function")))},i);function a(e,r,o){const i=[],n=o=>t.get(r).filter((t=>{var r;return(null!==(r=e.get(t))&&void 0!==r?r:[]).every((e=>o.includes(e)))}));for(const[t,{allows:a,requires:s}]of En.LootTableTypes){const e=[...a,...s];i.push({match:e=>e.getModel().get(new Fn.Path(["type"]))===t,node:o(n(e))})}return i.push({match:e=>!0,node:o(r)}),Fn.SwitchNode(i)}const l=a(En.LootConditions,"loot_condition_type",(e=>o({validator:"resource",params:{pool:e instanceof Array?e:"loot_condition_type"}}))),d=a(En.LootFunctions,"loot_function_type",(e=>o({validator:"resource",params:{pool:e instanceof Array?e:"loot_function_type"}}))),_=a(En.LootEntitySources,"entity_source",(e=>o({enum:e}))),m=a(En.LootCopySources,"copy_source",(e=>o({enum:e})));e.register("loot_table",Fn.Mod(Fn.ObjectNode({type:Fn.Opt(o({validator:"resource",params:{pool:t.get("loot_context_type")}})),pools:Fn.Opt(Fn.ListNode(Fn.Mod(Fn.ObjectNode(s({rolls:Dn.Range({allowBinomial:!0,integer:!0}),bonus_rolls:Fn.Opt(Dn.Range({integer:!0})),entries:Fn.ListNode(r("loot_entry"))},n),{category:"pool",context:"loot_pool"}),{default:()=>({rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]})}))),functions:Fn.Opt(Fn.ListNode(r("loot_function")))},{context:"loot_table"}),{default:()=>({pools:[{rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]}]})}));const p={enabled:e=>{var t;return(null===(t=e.pop().get())||void 0===t?void 0:t.length)>1&&!["minecraft:alternatives","minecraft:group","minecraft:sequence"].includes(e.push("type").get())}};e.register("loot_entry",Fn.Mod(Fn.ObjectNode({type:o({validator:"resource",params:{pool:"loot_pool_entry_type"}}),weight:Fn.Opt(Fn.Mod(Fn.NumberNode({integer:!0,min:1}),p)),quality:Fn.Opt(Fn.Mod(Fn.NumberNode({integer:!0}),p)),[Fn.Switch]:[{push:"type"}],[Fn.Case]:{"minecraft:alternatives":s({children:Fn.ListNode(r("loot_entry"))},n),"minecraft:dynamic":s({name:o()},n),"minecraft:group":s({children:Fn.ListNode(r("loot_entry"))},n),"minecraft:item":s({name:o({validator:"resource",params:{pool:"item"}})},n),"minecraft:loot_table":s({name:o({validator:"resource",params:{pool:"$loot_table"}})},n),"minecraft:sequence":s({children:Fn.ListNode(r("loot_entry"))},n),"minecraft:tag":s({name:o({validator:"resource",params:{pool:"$tag/item"}}),expand:Fn.Opt(Fn.BooleanNode())},n)}},{context:"loot_entry"}),{default:()=>({type:"minecraft:item",name:"minecraft:stone"})})),e.register("loot_function",Fn.Mod(Fn.ObjectNode({function:d,[Fn.Switch]:[{push:"function"}],[Fn.Case]:(()=>{const e={"minecraft:apply_bonus":{enchantment:o({validator:"resource",params:{pool:"enchantment"}}),formula:o({validator:"resource",params:{pool:t.get("loot_table_apply_bonus_formula")}}),parameters:Fn.Mod(Fn.ObjectNode({bonusMultiplier:Fn.Mod(Fn.NumberNode(),{enabled:e=>"minecraft:uniform_bonus_count"===e.pop().push("formula").get()}),extra:Fn.Mod(Fn.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()}),probability:Fn.Mod(Fn.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()})}),{enabled:e=>"minecraft:ore_drops"!==e.push("formula").get()})},"minecraft:copy_name":{source:m},"minecraft:copy_nbt":{source:m,ops:Fn.ListNode(Fn.ObjectNode({source:o({validator:"nbt_path",params:{category:{getter:"copy_source",path:["pop","pop","pop",{push:"source"}]}}}),target:o({validator:"nbt_path",params:{category:"minecraft:item"}}),op:o({enum:["replace","append","merge"]})},{context:"nbt_operation"}))},"minecraft:copy_state":{block:o({validator:"resource",params:{pool:"block"}}),properties:Fn.ListNode(o({validator:"block_state_key",params:{id:["pop","pop",{push:"block"}]}}))},"minecraft:enchant_randomly":{enchantments:Fn.Opt(Fn.ListNode(o({validator:"resource",params:{pool:"enchantment"}})))},"minecraft:enchant_with_levels":{levels:Dn.Range({allowBinomial:!0}),treasure:Fn.Opt(Fn.BooleanNode())},"minecraft:exploration_map":{destination:Fn.Opt(o({enum:"structure_feature"})),decoration:Fn.Opt(o({enum:"map_decoration"})),zoom:Fn.Opt(Fn.NumberNode({integer:!0})),search_radius:Fn.Opt(Fn.NumberNode({integer:!0})),skip_existing_chunks:Fn.Opt(Fn.BooleanNode())},"minecraft:fill_player_head":{entity:_},"minecraft:limit_count":{limit:Dn.Range({bounds:!0})},"minecraft:looting_enchant":{count:Dn.Range({bounds:!0}),limit:Fn.Opt(Fn.NumberNode({integer:!0}))},"minecraft:set_attributes":{modifiers:Fn.ListNode(r("attribute_modifier"))},"minecraft:set_contents":{entries:Fn.ListNode(r("loot_entry"))},"minecraft:set_count":{count:Dn.Range({allowBinomial:!0})},"minecraft:set_damage":{damage:Dn.Range({forceRange:!0})},"minecraft:set_loot_table":{name:o({validator:"resource",params:{pool:"$loot_table"}}),seed:Fn.Opt(Fn.NumberNode({integer:!0}))},"minecraft:set_lore":{entity:Fn.Opt(_),lore:Fn.ListNode(r("text_component")),replace:Fn.Opt(Fn.BooleanNode())},"minecraft:set_name":{entity:Fn.Opt(_),name:Fn.Opt(r("text_component"))},"minecraft:set_nbt":{tag:o({validator:"nbt",params:{registry:{category:"minecraft:item"}}})},"minecraft:set_stew_effect":{effects:Fn.Opt(Fn.ListNode(Fn.ObjectNode({type:o({validator:"resource",params:{pool:"mob_effect"}}),duration:Dn.Range()})))}},n={};return t.get("loot_function_type").forEach((t=>{n[t]=s(s({},e[t]),i)})),n})()},{category:"function",context:"function"}),{default:()=>({function:"minecraft:set_count",count:1})})),e.register("loot_condition",Fn.Mod(Fn.ObjectNode({condition:l,[Fn.Switch]:[{push:"condition"}],[Fn.Case]:c(s({},Dn.ConditionCases),{"minecraft:entity_properties":{entity:_,predicate:r("entity_predicate")},"minecraft:entity_scores":{entity:_,scores:Fn.MapNode(o({validator:"objective"}),Dn.Range({bounds:!0}))}})},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:random_chance",chance:.5})})),e.register("attribute_modifier",Fn.Mod(Fn.ObjectNode({attribute:o({validator:"resource",params:{pool:"attribute"}}),name:o(),amount:Dn.Range({bounds:!0}),operation:o({enum:["addition","multiply_base","multiply_total"]}),slot:Fn.StringOrList(o({enum:"slot"}))},{context:"attribute_modifier"}),{default:()=>({attribute:"minecraft:generic.max_health",name:"",amount:1,operation:"addition",slot:"mainhand"})}))};var $n={};Object.defineProperty($n,"__esModule",{value:!0}),$n.initPackMcmetaSchemas=void 0;const Un=Ce;$n.initPackMcmetaSchemas=function(e,t){e.register("pack_mcmeta",Un.Mod(Un.ObjectNode({pack:Un.Mod(Un.ObjectNode({pack_format:Un.Mod(Un.NumberNode({integer:!0,min:5,max:5}),{default:()=>5}),description:Un.Reference(e,"text_component")}),{default:()=>({pack_format:5,description:""})})}),{default:()=>({pack:{pack_format:5,description:""}})}))};var qn={};Object.defineProperty(qn,"__esModule",{value:!0}),qn.initRecipeSchemas=void 0;const Hn=Ce;qn.initRecipeSchemas=function(e,t){const r=Hn.Reference.bind(void 0,e),o=Hn.StringNode.bind(void 0,t);e.register("recipe",Hn.Mod(Hn.ObjectNode({type:o({validator:"resource",params:{pool:"recipe_serializer"}}),[Hn.Switch]:[{push:"type"}],[Hn.Case]:{"minecraft:crafting_shaped":{group:Hn.Opt(o({enum:"recipe_group",additional:!0})),pattern:Hn.ListNode(o()),key:Hn.MapNode(o(),r("recipe_ingredient")),result:r("recipe_result")},"minecraft:crafting_shapeless":{group:Hn.Opt(o()),ingredients:Hn.ListNode(r("recipe_ingredient")),result:r("recipe_result")},"minecraft:smelting":{group:Hn.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:Hn.Opt(Hn.NumberNode()),cookingtime:Hn.Opt(Hn.Mod(Hn.NumberNode({integer:!0}),{default:()=>200}))},"minecraft:blasting":{group:Hn.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:Hn.Opt(Hn.NumberNode()),cookingtime:Hn.Opt(Hn.Mod(Hn.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:smoking":{group:Hn.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:Hn.Opt(Hn.NumberNode()),cookingtime:Hn.Opt(Hn.Mod(Hn.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:campfire_cooking":{group:Hn.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:Hn.Opt(Hn.NumberNode()),cookingtime:Hn.Opt(Hn.Mod(Hn.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:stonecutting":{group:Hn.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),count:Hn.NumberNode({integer:!0})},"minecraft:smithing":{group:Hn.Opt(o()),base:r("recipe_ingredient_object"),addition:r("recipe_ingredient_object"),result:r("recipe_result")}}},{context:"recipe",disableSwitchContext:!0}),{default:()=>({type:"minecraft:crafting_shaped"})})),e.register("recipe_ingredient",Hn.Mod(Hn.ChoiceNode([{type:"object",node:r("recipe_ingredient_object"),change:e=>e[0]},{type:"list",node:Hn.ListNode(r("recipe_ingredient_object")),change:e=>[e]}]),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_ingredient_object",Hn.Mod(Hn.ObjectNode({item:Hn.Opt(o({validator:"resource",params:{pool:"item"}})),tag:Hn.Opt(o({validator:"resource",params:{pool:"$tag/item"}}))}),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_result",Hn.Mod(Hn.ObjectNode({item:o({validator:"resource",params:{pool:"item"}}),count:Hn.Opt(Hn.Mod(Hn.NumberNode({integer:!0}),{default:()=>1}))}),{default:()=>({item:"minecraft:stone"})}))};var Zn={};Object.defineProperty(Zn,"__esModule",{value:!0}),Zn.initTagsSchemas=void 0;const Wn=Ce;Zn.initTagsSchemas=function(e,t){const r=Wn.StringNode.bind(void 0,t),o=e=>Wn.Mod(Wn.ObjectNode({replace:Wn.Opt(Wn.BooleanNode()),values:Wn.ListNode(Wn.ChoiceNode([{type:"string",node:r({validator:"resource",params:{pool:e,allowTag:!0}}),change:e=>e.id},{type:"object",node:Wn.ObjectNode({id:r({validator:"resource",params:{pool:e,allowTag:!0,allowUnknown:!0}}),required:Wn.BooleanNode()}),change:e=>({id:e})}]))},{context:"tag"}),{default:()=>({values:[]})});e.register("block_tag",o("block")),e.register("entity_type_tag",o("entity_type")),e.register("fluid_tag",o("fluid")),e.register("function_tag",o("$function")),e.register("item_tag",o("item"))};var Xn={};Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.initTextComponentSchemas=void 0;const Gn=Ce;Xn.initTextComponentSchemas=function(e,t){const r=Gn.Reference.bind(void 0,e),o=Gn.StringNode.bind(void 0,t),i=e=>{var t;return e instanceof Array?i(e[0]):null!==(t=null==e?void 0:e.text)&&void 0!==t?t:"object"==typeof e?"":null==e?void 0:e.toString()};e.register("text_component",Gn.Mod(Gn.ChoiceNode([{type:"object",node:r("text_component_object"),change:e=>e instanceof Array?"object"==typeof e[0]?e[0]:{text:i(e[0])}:"object"==typeof e?e:{text:i(e)}},{type:"list",node:r("text_component_list"),change:e=>[e]},{type:"string",priority:1,node:o(),change:i},{type:"number",node:Gn.NumberNode(),change:e=>{const t=parseFloat(i(e));return isFinite(t)?t:e?1:0}},{type:"boolean",node:Gn.BooleanNode(),change:e=>{const t=i(e);return"true"===t||"false"===t?"true"===t:!!t}}],{context:"text_component"}),{default:()=>({text:""})}));const n={bold:Gn.Opt(Gn.BooleanNode()),italic:Gn.Opt(Gn.BooleanNode()),underlined:Gn.Opt(Gn.BooleanNode()),strikethrough:Gn.Opt(Gn.BooleanNode()),obfuscated:Gn.Opt(Gn.BooleanNode()),insertion:Gn.Opt(o()),clickEvent:Gn.Opt(Gn.ObjectNode({action:o({enum:["open_url","open_file","run_command","suggest_command","change_page","copy_to_clipboard"]}),[Gn.Switch]:[{push:"action"}],[Gn.Case]:{change_page:{value:o()},copy_to_clipboard:{value:o()},open_file:{value:o()},open_url:{value:o()},run_command:{value:o({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})},suggest_command:{value:o({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})}}})),hoverEvent:Gn.Opt(Gn.ObjectNode({action:o({enum:["show_text","show_item","show_entity"]}),[Gn.Switch]:[{push:"action"}],[Gn.Case]:{show_text:{value:Gn.Opt(r("text_component"))},show_item:{value:Gn.Opt(o({validator:"nbt",params:{module:"util::InventoryItem"}}))},show_entity:{value:Gn.Opt(Gn.ObjectNode({name:Gn.Opt(o()),type:Gn.Opt(o()),id:Gn.Opt(o())}))}}})),extra:Gn.Opt(r("text_component_list"))};e.register("text_component_object",Gn.Mod(Gn.ChoiceNode([{type:"text",match:e=>"object"==typeof e,change:e=>({text:""}),priority:-1,node:Gn.ObjectNode(s({text:o()},n))},{type:"translation",match:e=>void 0!==(null==e?void 0:e.translate),change:e=>({translate:""}),node:Gn.ObjectNode(s({translate:o(),with:Gn.Opt(r("text_component_list"))},n))},{type:"score",match:e=>void 0!==(null==e?void 0:e.score),change:e=>({score:{}}),node:Gn.ObjectNode(s({score:Gn.ObjectNode({name:o({validator:"entity",params:{amount:"single",type:"entities",isScoreHolder:!0}}),objective:o({validator:"objective"}),value:Gn.Opt(o())})},n))},{type:"selector",match:e=>void 0!==(null==e?void 0:e.selector),change:e=>({selector:""}),node:Gn.ObjectNode(s({selector:o({validator:"entity",params:{amount:"multiple",type:"entities"}})},n))},{type:"keybind",match:e=>void 0!==(null==e?void 0:e.keybind),change:e=>({keybind:""}),node:Gn.ObjectNode(s({keybind:o({enum:"keybind",additional:!0})},n))},{type:"nbt",match:e=>void 0!==(null==e?void 0:e.nbt),change:e=>({nbt:""}),node:Gn.ObjectNode(s({nbt:o({validator:"nbt_path"}),block:Gn.Opt(o({validator:"vector",params:{dimension:3,isInteger:!0}})),entity:Gn.Opt(o({validator:"entity",params:{amount:"multiple",type:"entities"}})),storage:Gn.Opt(o({validator:"resource",params:{pool:"$storage"}})),interpret:Gn.Opt(Gn.BooleanNode())},n))}],{context:"text_component_object",choiceContext:"text_component.object"}),{default:()=>({text:""})})),e.register("text_component_list",Gn.Mod(Gn.ListNode(r("text_component")),{default:()=>[{text:""}]}))},Object.defineProperty(Sn,"__esModule",{value:!0}),Sn.initSchemas=void 0;const Vn=jn,Jn=Mn,Yn=Cn,Kn=zn,Qn=$n,ea=Pn,ta=qn,ra=Zn,oa=Xn;Sn.initSchemas=function(e,t){Jn.initCommonSchemas(e,t),ea.initPredicatesSchemas(e,t),Vn.initAdvancementSchemas(e,t),Yn.initConditionSchemas(e,t),Kn.initLootTableSchemas(e,t),Qn.initPackMcmetaSchemas(e,t),ta.initRecipeSchemas(e,t),ra.initTagsSchemas(e,t),oa.initTextComponentSchemas(e,t)};var ia=Be&&Be.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),na=Be&&Be.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),aa=Be&&Be.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&ia(t,e,r);return na(t,e),t};Object.defineProperty(kn,"__esModule",{value:!0});var sa=kn.getSchemas=kn.getCollections=void 0;const ca=Ce,la=xn,da=Sn;var _a=kn.lootContext=aa(Rn);var ma=kn.getCollections=function(){const e=new ca.CollectionRegistry;return la.initCollections(e),e};sa=kn.getSchemas=function(e){const t=new ca.SchemaRegistry;return da.initSchemas(t,e),t};var pa=Object.freeze(Object.assign(Object.create(null),kn,{[Symbol.toStringTag]:"Module",get getSchemas(){return sa},get getCollections(){return ma},lootContext:_a,default:kn})),ua={},fa={};Object.defineProperty(fa,"__esModule",{value:!0}),fa.initCollections=void 0,fa.initCollections=function(e){e.register("advancement_trigger",["minecraft:bee_nest_destroyed","minecraft:bred_animals","minecraft:brewed_potion","minecraft:changed_dimension","minecraft:channeled_lightning","minecraft:construct_beacon","minecraft:consume_item","minecraft:cured_zombie_villager","minecraft:effects_changed","minecraft:enchanted_item","minecraft:enter_block","minecraft:entity_hurt_player","minecraft:entity_killed_player","minecraft:filled_bucket","minecraft:fishing_rod_hooked","minecraft:hero_of_the_village","minecraft:impossible","minecraft:inventory_changed","minecraft:item_durability_changed","minecraft:item_used_on_block","minecraft:killed_by_crossbow","minecraft:levitation","minecraft:location","minecraft:nether_travel","minecraft:placed_block","minecraft:player_generates_container_loot","minecraft:player_hurt_entity","minecraft:player_interacted_with_entity","minecraft:player_killed_entity","minecraft:recipe_unlocked","minecraft:shot_crossbow","minecraft:slept_in_bed","minecraft:slide_down_block","minecraft:summoned_entity","minecraft:tame_animal","minecraft:target_hit","minecraft:tick","minecraft:thrown_item_picked_up_by_entity","minecraft:used_ender_eye","minecraft:used_totem","minecraft:villager_trade","minecraft:voluntary_exile"]),e.register("dimension",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("dimension_type",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("keybind",["key.advancements","key.attack","key.back","key.chat","key.command","key.drop","key.forward","key.fullscreen","key.hotbar.1","key.hotbar.2","key.hotbar.3","key.hotbar.4","key.hotbar.5","key.hotbar.6","key.hotbar.7","key.hotbar.8","key.hotbar.9","key.inventory","key.jump","key.left","key.loadToolbarActivator","key.pickItem","key.playerlist","key.right","key.saveToolbarActivator","key.screenshot","key.smoothCamera","key.sneak","key.spectatorOutlines","key.sprint","key.swapOffhand","key.togglePerspective","key.use"]),e.register("slot",["mainhand","offhand","head","chest","legs","feet"]),e.register("gamemode",["survival","creative","adventure","spectator"]),e.register("worldgen/noise_settings",["minecraft:overworld","minecraft:nether","minecraft:end","minecraft:amplified","minecraft:caves","minecraft:floating_islands"]),e.register("entity_source",["this","direct_killer","killer","killer_player"]),e.register("copy_source",["block_entity","this","killer","killer_player"]),e.register("loot_table_apply_bonus_formula",["minecraft:uniform_bonus_count","minecraft:binomial_with_bonus_count","minecraft:ore_drops"]),e.register("map_decoration",["mansion","monument","player","frame","red_marker","blue_marker","target_x","target_point","player_off_map","player_off_limits","red_x","banner_white","banner_orange","banner_magenta","banner_light_blue","banner_yellow","banner_lime","banner_pink","banner_gray","banner_light_gray","banner_cyan","banner_purple","banner_blue","banner_brown","banner_green","banner_red","banner_black"]),e.register("map_feature",["bastion_remnant","buried_treasure","desert_pyramid","endcity","fortress","igloo","jungle_pyramid","mansion","mineshaft","monument","nether_fossil","ocean_ruin","pillager_outpost","ruined_portal","shipwreck","stronghold","swamp_hut","village"]),e.register("recipe_group",["bed","light_gray_dye","iron_ingot","wooden_stairs","black_dye","stained_terracotta","dyed_bed","magenta_dye","bark","rabbit_stew","light_blue_dye","wooden_fence_gate","planks","stained_glass","wooden_door","stained_glass_pane","wooden_fence","sticks","concrete_powder","wooden_pressure_plate","boat","brown_dye","yellow_dye","bonemeal","red_dye","wooden_trapdoor","wooden_button","gold_ingot","pink_dye","wooden_slab","orange_dye","carpet","sign","wool","sugar","blue_dye","white_dye","banner","netherite_ingot"]),e.register("worldgen/configured_feature",["minecraft:acacia","minecraft:bamboo_light","minecraft:bamboo_vegetation","minecraft:bamboo","minecraft:basalt_blobs","minecraft:basalt_pillar","minecraft:birch_bees_0002","minecraft:birch_bees_002","minecraft:birch_bees_005","minecraft:birch_other","minecraft:birch_tall","minecraft:birch","minecraft:blackstone_blobs","minecraft:blue_ice","minecraft:bonus_chest","minecraft:brown_mushroom_giant","minecraft:brown_mushroom_nether","minecraft:brown_mushroom_normal","minecraft:brown_mushroom_swamp","minecraft:brown_mushroom_taiga","minecraft:chorus_plant","minecraft:crimson_forest_vegetation","minecraft:crimson_fungi_planted","minecraft:crimson_fungi","minecraft:dark_forest_vegetation_brown","minecraft:dark_forest_vegetation_red","minecraft:dark_oak","minecraft:delta","minecraft:desert_well","minecraft:disk_clay","minecraft:disk_gravel","minecraft:disk_sand","minecraft:end_gateway_delayed","minecraft:end_gateway","minecraft:end_island_decorated","minecraft:end_island","minecraft:end_spike","minecraft:fancy_oak_bees_0002","minecraft:fancy_oak_bees_002","minecraft:fancy_oak_bees_005","minecraft:fancy_oak","minecraft:flower_default","minecraft:flower_forest","minecraft:flower_plain_decorated","minecraft:flower_plain","minecraft:flower_swamp","minecraft:flower_warm","minecraft:forest_flower_trees","minecraft:forest_flower_vegetation_common","minecraft:forest_flower_vegetation","minecraft:forest_rock","minecraft:fossil","minecraft:freeze_top_layer","minecraft:glowstone_extra","minecraft:glowstone","minecraft:huge_brown_mushroom","minecraft:huge_red_mushroom","minecraft:ice_patch","minecraft:ice_spike","minecraft:iceberg_blue","minecraft:iceberg_packed","minecraft:jungle_bush","minecraft:jungle_tree_no_vine","minecraft:jungle_tree","minecraft:kelp_cold","minecraft:kelp_warm","minecraft:lake_lava","minecraft:lake_water","minecraft:large_basalt_columns","minecraft:mega_jungle_tree","minecraft:mega_pine","minecraft:mega_spruce","minecraft:monster_room","minecraft:mushroom_field_vegetation","minecraft:nether_sprouts","minecraft:oak_badlands","minecraft:oak_bees_0002","minecraft:oak_bees_002","minecraft:oak_bees_005","minecraft:oak","minecraft:ore_andesite","minecraft:ore_blackstone","minecraft:ore_coal","minecraft:ore_debris_large","minecraft:ore_debris_small","minecraft:ore_diamond","minecraft:ore_diorite","minecraft:ore_dirt","minecraft:ore_emerald","minecraft:ore_gold_deltas","minecraft:ore_gold_extra","minecraft:ore_gold_nether","minecraft:ore_gold","minecraft:ore_granite","minecraft:ore_gravel_nether","minecraft:ore_gravel","minecraft:ore_infested","minecraft:ore_iron","minecraft:ore_lapis","minecraft:ore_magma","minecraft:ore_quartz_deltas","minecraft:ore_quartz_nether","minecraft:ore_redstone","minecraft:ore_soul_sand","minecraft:patch_berry_bush","minecraft:patch_berry_decorated","minecraft:patch_berry_sparse","minecraft:patch_brown_mushroom","minecraft:patch_cactus_decorated","minecraft:patch_cactus_desert","minecraft:patch_cactus","minecraft:patch_crimson_roots","minecraft:patch_dead_bush_2","minecraft:patch_dead_bush_badlands","minecraft:patch_dead_bush","minecraft:patch_fire","minecraft:patch_grass_badlands","minecraft:patch_grass_forest","minecraft:patch_grass_jungle","minecraft:patch_grass_normal","minecraft:patch_grass_plain","minecraft:patch_grass_savanna","minecraft:patch_grass_taiga_2","minecraft:patch_grass_taiga","minecraft:patch_large_fern","minecraft:patch_melon","minecraft:patch_pumpkin","minecraft:patch_red_mushroom","minecraft:patch_soul_fire","minecraft:patch_sugar_cane_badlands","minecraft:patch_sugar_cane_desert","minecraft:patch_sugar_cane_swamp","minecraft:patch_sugar_cane","minecraft:patch_sunflower","minecraft:patch_taiga_grass","minecraft:patch_tall_grass_2","minecraft:patch_tall_grass","minecraft:patch_waterlilly","minecraft:pile_hay","minecraft:pile_ice","minecraft:pile_melon","minecraft:pile_pumpkin","minecraft:pile_snow","minecraft:pine","minecraft:plain_vegetation","minecraft:red_mushroom_giant","minecraft:red_mushroom_nether","minecraft:red_mushroom_normal","minecraft:red_mushroom_swamp","minecraft:red_mushroom_taiga","minecraft:sea_pickle","minecraft:seagrass_cold","minecraft:seagrass_deep_cold","minecraft:seagrass_deep_warm","minecraft:seagrass_deep","minecraft:seagrass_normal","minecraft:seagrass_river","minecraft:seagrass_simple","minecraft:seagrass_swamp","minecraft:seagrass_warm","minecraft:small_basalt_columns","minecraft:spring_closed_double","minecraft:spring_closed","minecraft:spring_delta","minecraft:spring_lava_double","minecraft:spring_lava","minecraft:spring_open","minecraft:spring_water","minecraft:spruce_snowy","minecraft:spruce","minecraft:super_birch_bees_0002","minecraft:swamp_tree","minecraft:taiga_vegetation","minecraft:trees_birch","minecraft:trees_giant_spruce","minecraft:trees_giant","minecraft:trees_jungle_edge","minecraft:trees_jungle","minecraft:trees_mountain_edge","minecraft:trees_mountain","minecraft:trees_savanna","minecraft:trees_shattered_savanna","minecraft:trees_water","minecraft:twisting_vines","minecraft:vines","minecraft:void_start_platform","minecraft:warm_ocean_vegetation","minecraft:warped_forest_vegetation","minecraft:warped_fungi_planted","minecraft:warped_fungi","minecraft:weeping_vines"]),e.register("worldgen/configured_structure_feature",["minecraft:bastion_remnant","minecraft:buried_treasure","minecraft:desert_pyramid","minecraft:end_city","minecraft:fortress","minecraft:igloo","minecraft:jungle_pyramid","minecraft:mansion","minecraft:mineshaft_mesa","minecraft:mineshaft","minecraft:monument","minecraft:nether_fossil","minecraft:ocean_ruin_cold","minecraft:ocean_ruin_warm","minecraft:pillager_outpost","minecraft:ruined_portal_desert","minecraft:ruined_portal_jungle","minecraft:ruined_portal_mountain","minecraft:ruined_portal_nether","minecraft:ruined_portal_ocean","minecraft:ruined_portal_swamp","minecraft:ruined_portal","minecraft:shipwreck_beached","minecraft:shipwreck","minecraft:stronghold","minecraft:swamp_hut","minecraft:village_desert","minecraft:village_plains","minecraft:village_savanna","minecraft:village_snowy","minecraft:village_taiga"]),e.register("worldgen/configured_surface_builder",["minecraft:badlands","minecraft:basalt_deltas","minecraft:crimson_forest","minecraft:desert","minecraft:end","minecraft:eroded_badlands","minecraft:frozen_ocean","minecraft:full_sand","minecraft:giant_tree_taiga","minecraft:grass","minecraft:gravelly_mountain","minecraft:ice_spikes","minecraft:mountain","minecraft:mycelium","minecraft:nether","minecraft:nope","minecraft:ocean_sand","minecraft:shattered_savanna","minecraft:soul_sand_valley","minecraft:stone","minecraft:swamp","minecraft:warped_forest","minecraft:wooded_badlands"]),e.register("biome_category",["beach","desert","extreme_hills","forest","icy","jungle","mesa","mushroom","nether","none","ocean","plains","river","savanna","swamp","taiga","the_end"]),e.register("heightmap_type",["MOTION_BLOCKING","MOTION_BLOCKING_NO_LEAVES","OCEAN_FLOOR","OCEAN_FLOOR_WG","WORLD_SURFACE","WORLD_SURFACE_WG"]),e.register("generation_step",["air","liquid"]),e.register("loot_context_type",["minecraft:empty","minecraft:chest","minecraft:command","minecraft:selector","minecraft:fishing","minecraft:entity","minecraft:gift","minecraft:barter","minecraft:advancement_reward","minecraft:advancement_entity","minecraft:generic","minecraft:block"])};var ha={},ga={},ba={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initCommonSchemas=e.UniformInt=e.Range=e.NoiseSettingsPresets=e.DefaultNoiseSettings=e.DimensionTypePresets=e.DefaultDimensionType=e.ConditionCases=void 0;const t=Ce;e.DefaultDimensionType={ultrawarm:!1,natural:!0,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!0,has_raids:!0,has_skylight:!0,has_ceiling:!1,coordinate_scale:1,ambient_light:0,logical_height:256,infiniburn:"minecraft:infiniburn_overworld"},e.DefaultNoiseSettings={name:"minecraft:overworld",bedrock_roof_position:-10,bedrock_floor_position:0,sea_level:63,disable_mob_generation:!1,noise:{density_factor:1,density_offset:-.46875,simplex_surface_noise:!0,random_density_offset:!0,size_horizontal:1,size_vertical:2,height:256,sampling:{xz_scale:1,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-10,size:3,offset:0},bottom_slide:{target:-30,size:0,offset:0}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},e.initCommonSchemas=function(r,o){const i=t.StringNode.bind(void 0,o),n=t.Reference.bind(void 0,r);r.register("block_state",t.Mod(t.ObjectNode({Name:i({validator:"resource",params:{pool:"block"}}),Properties:t.Opt(t.MapNode(i(),i(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"Name"}]}}}))},{context:"block_state"}),{default:()=>({Name:"minecraft:stone"})})),r.register("fluid_state",t.Mod(t.ObjectNode({Name:i({validator:"resource",params:{pool:"fluid"}}),Properties:t.Opt(t.MapNode(i(),i()))},{context:"fluid_state"}),{default:()=>({Name:"minecraft:water",Properties:{level:"0"}})})),r.register("block_pos",t.Mod(t.ListNode(t.NumberNode({integer:!0}),{minLength:3,maxLength:3}),{default:()=>[0,0,0]})),e.Range=e=>t.ChoiceNode([...(null==e?void 0:e.forceRange)?[]:[{type:"number",node:t.NumberNode(e),change:e=>{var t,r,o;return void 0===e?0:null!==(o=null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:e.n)&&void 0!==o?o:0}}],{type:"object",priority:-1,node:t.ObjectNode({min:(null==e?void 0:e.bounds)?t.NumberNode(e):t.Opt(t.NumberNode(e)),max:(null==e?void 0:e.bounds)?t.NumberNode(e):t.Opt(t.NumberNode(e))},{context:"range"}),change:e=>({min:"number"==typeof e?e:void 0===e?1:e.n,max:"number"==typeof e?e:void 0===e?1:e.n})},...(null==e?void 0:e.allowBinomial)?[{type:"binomial",node:t.ObjectNode({type:i({enum:["minecraft:binomial"]}),n:t.NumberNode({integer:!0,min:0}),p:t.NumberNode({min:0,max:1})},{context:"range"}),match:e=>void 0!==e&&"minecraft:binomial"===e.type,change:e=>{var t,r;return{type:"minecraft:binomial",n:"number"==typeof e?e:void 0===e?1:null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:1,p:.5}}}]:[]],{choiceContext:"range"}),e.UniformInt=e=>t.ChoiceNode([{type:"number",node:t.NumberNode({integer:!0,min:null==e?void 0:e.min,max:null==e?void 0:e.max}),change:e=>e.base},{type:"object",node:t.ObjectNode({base:t.NumberNode({integer:!0,min:null==e?void 0:e.min,max:null==e?void 0:e.max}),spread:t.NumberNode({integer:!0,min:0,max:null==e?void 0:e.maxSpread})}),change:e=>({base:e,spread:0})}],{context:"uniform_int"}),e.ConditionCases={"minecraft:alternative":{terms:t.ListNode(n("condition"))},"minecraft:block_state_property":{block:i({validator:"resource",params:{pool:"block"}}),properties:t.MapNode(i(),i(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})},"minecraft:damage_source_properties":{predicate:n("damage_source_predicate")},"minecraft:entity_properties":{entity:i({enum:"entity_source"}),predicate:n("entity_predicate")},"minecraft:entity_scores":{entity:i({enum:"entity_source"}),scores:t.MapNode(i({validator:"objective"}),e.Range({forceRange:!0}))},"minecraft:inverted":{term:n("condition")},"minecraft:killed_by_player":{inverse:t.Opt(t.BooleanNode())},"minecraft:location_check":{offsetX:t.Opt(t.NumberNode({integer:!0})),offsetY:t.Opt(t.NumberNode({integer:!0})),offsetZ:t.Opt(t.NumberNode({integer:!0})),predicate:n("location_predicate")},"minecraft:match_tool":{predicate:n("item_predicate")},"minecraft:random_chance":{chance:t.NumberNode({min:0,max:1})},"minecraft:random_chance_with_looting":{chance:t.NumberNode({min:0,max:1}),looting_multiplier:t.NumberNode()},"minecraft:reference":{name:i({validator:"resource",params:{pool:"$predicate"}})},"minecraft:table_bonus":{enchantment:i({validator:"resource",params:{pool:"enchantment"}}),chances:t.ListNode(t.NumberNode({min:0,max:1}))},"minecraft:time_check":{value:e.Range(),period:t.Opt(t.NumberNode())},"minecraft:weather_check":{raining:t.Opt(t.BooleanNode()),thundering:t.Opt(t.BooleanNode())}},e.DimensionTypePresets=r=>t.ObjectOrPreset(i({validator:"resource",params:{pool:"$dimension_type"}}),r,{"minecraft:overworld":e.DefaultDimensionType,"minecraft:the_nether":{name:"minecraft:the_nether",ultrawarm:!0,natural:!1,shrunk:!0,piglin_safe:!0,respawn_anchor_works:!0,bed_works:!1,has_raids:!1,has_skylight:!1,has_ceiling:!0,ambient_light:.1,fixed_time:18e3,logical_height:128,effects:"minecraft:the_nether",infiniburn:"minecraft:infiniburn_nether"},"minecraft:the_end":{name:"minecraft:the_end",ultrawarm:!1,natural:!1,shrunk:!1,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!1,has_raids:!0,has_skylight:!1,has_ceiling:!1,ambient_light:0,fixed_time:6e3,logical_height:256,effects:"minecraft:the_end",infiniburn:"minecraft:infiniburn_end"}}),e.NoiseSettingsPresets=r=>t.ObjectOrPreset(i({validator:"resource",params:{pool:"$worldgen/noise_settings"}}),r,{"minecraft:overworld":e.DefaultNoiseSettings,"minecraft:nether":{name:"minecraft:nether",bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,disable_mob_generation:!0,noise:{density_factor:0,density_offset:.019921875,simplex_surface_noise:!1,random_density_offset:!1,size_horizontal:1,size_vertical:2,height:128,sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60},top_slide:{target:120,size:3,offset:0},bottom_slide:{target:320,size:4,offset:-1}},default_block:{Name:"minecraft:netherrack"},default_fluid:{Name:"minecraft:lava",Properties:{level:"0"}}},"minecraft:end":{name:"minecraft:end",bedrock_roof_position:-10,bedrock_floor_position:-10,sea_level:0,disable_mob_generation:!0,noise:{density_factor:0,density_offset:0,simplex_surface_noise:!0,random_density_offset:!1,island_noise_override:!0,size_horizontal:2,size_vertical:1,height:128,sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-3e3,size:64,offset:-46},bottom_slide:{target:-30,size:7,offset:1}},default_block:{Name:"minecraft:end_stone"},default_fluid:{Name:"minecraft:air"}},"minecraft:amplified":{name:"minecraft:amplified",bedrock_roof_position:-10,bedrock_floor_position:0,sea_level:63,disable_mob_generation:!1,noise:{density_factor:1,density_offset:-.46875,simplex_surface_noise:!0,random_density_offset:!0,amplified:!0,size_horizontal:1,size_vertical:2,height:256,sampling:{xz_scale:1,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-10,size:3,offset:0},bottom_slide:{target:-30,size:0,offset:0}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},"minecraft:caves":{name:"minecraft:caves",bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,disable_mob_generation:!0,noise:{density_factor:0,density_offset:.019921875,simplex_surface_noise:!1,random_density_offset:!1,size_horizontal:1,size_vertical:2,height:128,sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60},top_slide:{target:120,size:3,offset:0},bottom_slide:{target:320,size:4,offset:-1}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},"minecraft:floating_islands":{name:"minecraft:floating_islands",bedrock_roof_position:-10,bedrock_floor_position:-10,sea_level:0,disable_mob_generation:!0,noise:{density_factor:0,density_offset:0,simplex_surface_noise:!0,random_density_offset:!1,island_noise_override:!0,size_horizontal:2,size_vertical:1,height:128,sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-3e3,size:64,offset:-46},bottom_slide:{target:-30,size:7,offset:1}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}}})}}(ba),Object.defineProperty(ga,"__esModule",{value:!0}),ga.initAdvancementSchemas=void 0;const va=Ce,ya=ba;ga.initAdvancementSchemas=function(e,t){const r=va.Reference.bind(void 0,e),o=va.StringNode.bind(void 0,t),i=va.ChoiceNode([{type:"object",node:va.Opt(r("entity_predicate")),change:e=>{var t,r;return null!==(r=null===(t=e[0])||void 0===t?void 0:t.predicate)&&void 0!==r?r:{}}},{type:"list",node:va.ListNode(r("condition")),change:e=>[{condition:"minecraft:entity_properties",predicate:e}]}],{context:"conditions"});e.register("advancement",va.Mod(va.ObjectNode({display:va.Opt(va.Mod(va.ObjectNode({icon:va.ObjectNode({item:o({validator:"resource",params:{pool:"item"}}),nbt:va.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}}))}),title:r("text_component"),description:r("text_component"),background:va.Opt(o()),frame:va.Opt(o({enum:["task","challenge","goal"]})),show_toast:va.Opt(va.BooleanNode()),announce_to_chat:va.Opt(va.BooleanNode()),hidden:va.Opt(va.BooleanNode())}),{default:()=>({icon:{item:"minecraft:stone"},title:"",description:""})})),parent:va.Opt(o({validator:"resource",params:{pool:"$advancement"}})),criteria:va.MapNode(o(),r("advancement_criteria")),requirements:va.Opt(va.ListNode(va.ListNode(o()))),rewards:va.Opt(va.ObjectNode({function:va.Opt(o({validator:"resource",params:{pool:"$function"}})),loot:va.Opt(va.ListNode(o({validator:"resource",params:{pool:"$loot_table"}}))),recipes:va.Opt(va.ListNode(o({validator:"resource",params:{pool:"$recipe"}}))),experience:va.Opt(va.NumberNode({integer:!0}))}))},{context:"advancement"}),{default:()=>({criteria:{requirement:{trigger:"minecraft:location"}}})})),e.register("advancement_criteria",va.ObjectNode({trigger:o({validator:"resource",params:{pool:t.get("advancement_trigger")}}),conditions:va.Opt(va.ObjectNode({player:va.Mod(i,{enabled:e=>"minecraft:impossible"!==e.pop().push("trigger").get()}),[va.Switch]:["pop",{push:"trigger"}],[va.Case]:{"minecraft:bee_nest_destroyed":{block:va.Opt(o({validator:"resource",params:{pool:"block"}})),num_bees_inside:va.Opt(va.NumberNode({integer:!0})),item:va.Opt(r("item_predicate"))},"minecraft:bred_animals":{parent:i,partner:i,child:i},"minecraft:brewed_potion":{potion:va.Opt(o({validator:"resource",params:{pool:"potion"}}))},"minecraft:changed_dimension":{from:va.Opt(o({validator:"resource",params:{pool:"$dimension"}})),to:va.Opt(o({validator:"resource",params:{pool:"$dimension"}}))},"minecraft:channeled_lightning":{victims:va.Opt(va.ListNode(i))},"minecraft:construct_beacon":{level:va.Opt(ya.Range())},"minecraft:consume_item":{item:va.Opt(r("item_predicate"))},"minecraft:cured_zombie_villager":{villager:i,zombie:i},"minecraft:effects_changed":{effects:va.Opt(va.MapNode(o({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},"minecraft:enter_block":{block:va.Opt(o({validator:"resource",params:{pool:"block"}})),state:va.Opt(va.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},"minecraft:enchanted_item":{levels:va.Opt(ya.Range()),item:va.Opt(r("item_predicate"))},"minecraft:entity_hurt_player":{damage:va.Opt(r("damage_predicate"))},"minecraft:entity_killed_player":{entity:i,killing_blow:va.Opt(r("damage_source_predicate"))},"minecraft:filled_bucket":{item:va.Opt(r("item_predicate"))},"minecraft:fishing_rod_hooked":{entity:i,item:va.Opt(r("item_predicate"))},"minecraft:hero_of_the_village":{location:va.Opt(r("location_predicate"))},"minecraft:inventory_changed":{slots:va.Opt(va.ObjectNode({empty:va.Opt(ya.Range()),occupied:va.Opt(ya.Range()),full:va.Opt(ya.Range())})),items:va.Opt(va.ListNode(r("item_predicate")))},"minecraft:item_durability_changed":{delta:va.Opt(ya.Range()),durability:va.Opt(ya.Range()),item:va.Opt(r("item_predicate"))},"minecraft:item_used_on_block":{item:va.Opt(r("item_predicate")),location:va.Opt(r("location_predicate"))},"minecraft:killed_by_crossbow":{unique_entity_types:va.Opt(ya.Range()),victims:va.Opt(va.ListNode(i))},"minecraft:levitation":{distance:va.Opt(ya.Range()),duration:va.Opt(ya.Range())},"minecraft:location":{location:va.Opt(r("location_predicate"))},"minecraft:nether_travel":{distance:va.Opt(ya.Range()),entered:va.Opt(r("location_predicate")),exited:va.Opt(r("location_predicate"))},"minecraft:placed_block":{block:va.Opt(o({validator:"resource",params:{pool:"block"}})),state:va.Opt(va.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})),item:va.Opt(r("item_predicate")),location:va.Opt(r("location_predicate"))},"minecraft:player_generates_container_loot":{loot_table:o({validator:"resource",params:{pool:"$loot_table"}})},"minecraft:player_hurt_entity":{damage:va.Opt(r("damage_predicate")),entity:i},"minecraft:player_interacted_with_entity":{item:va.Opt(r("item_predicate")),entity:i},"minecraft:player_killed_entity":{entity:i,killing_blow:va.Opt(r("damage_source_predicate"))},"minecraft:recipe_unlocked":{recipe:o({validator:"resource",params:{pool:"$recipe"}})},"minecraft:slept_in_bed":{location:va.Opt(r("location_predicate"))},"minecraft:slide_down_block":{block:va.Opt(o({validator:"resource",params:{pool:"block"}}))},"minecraft:shot_crossbow":{item:va.Opt(r("item_predicate"))},"minecraft:summoned_entity":{entity:i},"minecraft:tame_animal":{entity:i},"minecraft:target_hit":{projectile:i,shooter:i,signal_strength:va.Opt(ya.Range({integer:!0}))},"minecraft:thrown_item_picked_up_by_entity":{entity:va.Opt(r("entity_predicate")),item:va.Opt(r("item_predicate"))},"minecraft:used_ender_eye":{distance:va.Opt(ya.Range())},"minecraft:used_totem":{item:va.Opt(r("item_predicate"))},"minecraft:villager_trade":{villager:va.Opt(r("entity_predicate")),item:va.Opt(r("item_predicate"))},"minecraft:voluntary_exile":{location:r("location_predicate")}}},{context:"criterion"}))},{category:"predicate",context:"criterion"}))};var Na={};Object.defineProperty(Na,"__esModule",{value:!0}),Na.initConditionSchemas=void 0;const Oa=Ce,wa=ba;Na.initConditionSchemas=function(e,t){const r=Oa.Reference.bind(void 0,e),o=Oa.StringNode.bind(void 0,t);e.register("predicate",Oa.ObjectOrList(r("condition"),{choiceContext:"condition"})),e.register("condition",Oa.Mod(Oa.ObjectNode({condition:o({validator:"resource",params:{pool:"loot_condition_type"}}),[Oa.Switch]:[{push:"condition"}],[Oa.Case]:wa.ConditionCases},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:entity_properties",entity:"this"})}))};var ka={};Object.defineProperty(ka,"__esModule",{value:!0}),ka.initDimensionSchemas=void 0;const xa=Ce,Sa=ba;ka.initDimensionSchemas=function(e,t){const r=xa.Reference.bind(void 0,e),o=xa.StringNode.bind(void 0,t),i=e=>xa.Mod(e,{enabled:e=>void 0===e.push("preset").get()});e.register("dimension",xa.Mod(xa.ObjectNode({type:Sa.DimensionTypePresets(r("dimension_type")),generator:xa.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/chunk_generator"}}),[xa.Switch]:[{push:"type"}],[xa.Case]:{"minecraft:noise":{seed:xa.NumberNode({integer:!0}),settings:Sa.NoiseSettingsPresets(r("noise_settings")),biome_source:xa.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/biome_source"}}),[xa.Switch]:[{push:"type"}],[xa.Case]:{"minecraft:fixed":{biome:o({validator:"resource",params:{pool:"$worldgen/biome"}})},"minecraft:multi_noise":{seed:xa.NumberNode({integer:!0}),preset:xa.Opt(o({enum:["nether"]})),altitude_noise:i(r("generator_biome_noise")),temperature_noise:i(r("generator_biome_noise")),humidity_noise:i(r("generator_biome_noise")),weirdness_noise:i(r("generator_biome_noise")),biomes:i(xa.Mod(xa.ListNode(r("generator_biome")),{default:()=>[{biome:"minecraft:plains"}]}))},"minecraft:checkerboard":{scale:xa.Opt(xa.NumberNode({integer:!0,min:0,max:62})),biomes:xa.ListNode(o({validator:"resource",params:{pool:"$worldgen/biome"}}))},"minecraft:the_end":{seed:xa.NumberNode({integer:!0})},"minecraft:vanilla_layered":{seed:xa.NumberNode({integer:!0}),large_biomes:xa.Opt(xa.BooleanNode()),legacy_biome_init_layer:xa.Opt(xa.BooleanNode())}}},{category:"predicate",disableSwitchContext:!0})},"minecraft:flat":{settings:xa.ObjectNode({biome:xa.Opt(o({validator:"resource",params:{pool:"$worldgen/biome"}})),lakes:xa.Opt(xa.BooleanNode()),features:xa.Opt(xa.BooleanNode()),layers:xa.ListNode(r("generator_layer")),structures:r("generator_structures")})}}},{disableSwitchContext:!0})},{category:"pool",context:"dimension"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:fixed",seed:e,biome:"minecraft:plains"},settings:"minecraft:overworld"}}}})),e.register("generator_biome",xa.Mod(xa.ObjectNode({biome:o({validator:"resource",params:{pool:"$worldgen/biome"}}),parameters:xa.ObjectNode({altitude:xa.NumberNode(),temperature:xa.NumberNode(),humidity:xa.NumberNode(),weirdness:xa.NumberNode(),offset:xa.NumberNode()})},{context:"generator_biome"}),{default:()=>({biome:"minecraft:plains",parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}})})),e.register("generator_biome_noise",xa.Mod(xa.ObjectNode({firstOctave:xa.NumberNode({integer:!0}),amplitudes:xa.ListNode(xa.NumberNode())},{context:"generator_biome_noise"}),{default:()=>({firstOctave:-7,amplitudes:[1,1]})}))};var ja={};Object.defineProperty(ja,"__esModule",{value:!0}),ja.initDimensionTypeSchemas=void 0;const Ma=Ce,Pa=ba;ja.initDimensionTypeSchemas=function(e,t){const r=Ma.StringNode.bind(void 0,t);e.register("dimension_type",Ma.Mod(Ma.ObjectNode({name:Ma.Mod(r({validator:"resource",params:{pool:"$dimension_type",isDefinition:!0}}),{enabled:e=>e.getArray().length>0}),ultrawarm:Ma.BooleanNode(),natural:Ma.BooleanNode(),piglin_safe:Ma.BooleanNode(),respawn_anchor_works:Ma.BooleanNode(),bed_works:Ma.BooleanNode(),has_raids:Ma.BooleanNode(),has_skylight:Ma.BooleanNode(),has_ceiling:Ma.BooleanNode(),coordinate_scale:Ma.NumberNode({min:1e-5,max:3e7}),ambient_light:Ma.NumberNode(),fixed_time:Ma.Opt(Ma.NumberNode({integer:!0})),logical_height:Ma.NumberNode({integer:!0,min:0,max:256}),effects:Ma.Opt(r({enum:["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]})),infiniburn:r({validator:"resource",params:{pool:"$tag/block"}})},{context:"dimension_type"}),{default:()=>Pa.DefaultDimensionType}))};var Aa={},La={};Object.defineProperty(La,"__esModule",{value:!0}),La.LootFunctions=La.LootConditions=La.LootCopySources=La.LootEntitySources=La.LootTableTypes=void 0,La.LootTableTypes=new Map([["minecraft:advancement_entity",{requires:[7,8],allows:[]}],["minecraft:advancement_reward",{requires:[7,8],allows:[]}],["minecraft:barter",{requires:[8],allows:[]}],["minecraft:block",{requires:[1,7,9],allows:[0,4,8]}],["minecraft:chest",{requires:[7],allows:[8]}],["minecraft:command",{requires:[7],allows:[8]}],["minecraft:empty",{requires:[],allows:[]}],["minecraft:entity",{requires:[2,7,8],allows:[3,5,6]}],["minecraft:fishing",{requires:[7,9],allows:[8]}],["minecraft:generic",{requires:[2,0,1,3,4,5,6,7,8,9],allows:[]}],["minecraft:gift",{requires:[7,8],allows:[]}],["minecraft:selector",{requires:[7],allows:[8]}]]),La.LootEntitySources=new Map([["direct_killer",[3]],["killer",[5]],["killer_player",[5]],["this",[8]]]),La.LootCopySources=new Map([["block_entity",[0]],["killer",[5]],["killer_player",[5]],["this",[8]]]),La.LootConditions=new Map([["minecraft:alternative",[]],["minecraft:block_state_property",[1]],["minecraft:damage_source_properties",[2]],["minecraft:entity_properties",[7]],["minecraft:entity_scores",[]],["minecraft:inverted",[]],["minecraft:killed_by_player",[6]],["minecraft:location_check",[]],["minecraft:match_tool",[9]],["minecraft:random_chance",[]],["minecraft:random_chance_with_looting",[5]],["minecraft:reference",[]],["minecraft:survives_explosion",[4]],["minecraft:table_bonus",[9]],["minecraft:time_check",[]],["minecraft:weather_check",[]]]),La.LootFunctions=new Map([["minecraft:apply_bonus",[9]],["minecraft:copy_name",[]],["minecraft:copy_nbt",[]],["minecraft:copy_state",[1]],["minecraft:enchant_randomly",[]],["minecraft:enchant_with_levels",[]],["minecraft:exploration_map",[7]],["minecraft:explosion_decay",[]],["minecraft:fill_player_head",[]],["minecraft:furnace_smelt",[]],["minecraft:limit_count",[]],["minecraft:looting_enchant",[5]],["minecraft:set_attributes",[]],["minecraft:set_contents",[]],["minecraft:set_count",[]],["minecraft:set_damage",[]],["minecraft:set_loot_table",[]],["minecraft:set_lore",[]],["minecraft:set_name",[]],["minecraft:set_nbt",[]],["minecraft:set_stew_effect",[]]]),Object.defineProperty(Aa,"__esModule",{value:!0}),Aa.initLootTableSchemas=void 0;const Ba=Ce,Ca=La,Ta=ba;Aa.initLootTableSchemas=function(e,t){const r=Ba.Reference.bind(void 0,e),o=Ba.StringNode.bind(void 0,t),i={conditions:Ba.Opt(Ba.ListNode(r("loot_condition")))},n=s({functions:Ba.Opt(Ba.ListNode(r("loot_function")))},i);function a(e,r,o){const i=[],n=o=>t.get(r).filter((t=>{var r;return(null!==(r=e.get(t))&&void 0!==r?r:[]).every((e=>o.includes(e)))}));for(const[t,{allows:a,requires:s}]of Ca.LootTableTypes){const e=[...a,...s];i.push({match:e=>e.getModel().get(new Ba.Path(["type"]))===t,node:o(n(e))})}return i.push({match:e=>!0,node:o(r)}),Ba.SwitchNode(i)}const l=a(Ca.LootConditions,"loot_condition_type",(e=>o({validator:"resource",params:{pool:e instanceof Array?e:"loot_condition_type"}}))),d=a(Ca.LootFunctions,"loot_function_type",(e=>o({validator:"resource",params:{pool:e instanceof Array?e:"loot_function_type"}}))),_=a(Ca.LootEntitySources,"entity_source",(e=>o({enum:e}))),m=a(Ca.LootCopySources,"copy_source",(e=>o({enum:e})));e.register("loot_table",Ba.Mod(Ba.ObjectNode({type:Ba.Opt(o({validator:"resource",params:{pool:t.get("loot_context_type")}})),pools:Ba.Opt(Ba.ListNode(Ba.Mod(Ba.ObjectNode(s({rolls:Ta.Range({allowBinomial:!0,integer:!0}),bonus_rolls:Ba.Opt(Ta.Range({integer:!0})),entries:Ba.ListNode(r("loot_entry"))},n),{category:"pool",context:"loot_pool"}),{default:()=>({rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]})}))),functions:Ba.Opt(Ba.ListNode(r("loot_function")))},{context:"loot_table"}),{default:()=>({pools:[{rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]}]})}));const p={enabled:e=>{var t;return(null===(t=e.pop().get())||void 0===t?void 0:t.length)>1&&!["minecraft:alternatives","minecraft:group","minecraft:sequence"].includes(e.push("type").get())}};e.register("loot_entry",Ba.Mod(Ba.ObjectNode({type:o({validator:"resource",params:{pool:"loot_pool_entry_type"}}),weight:Ba.Opt(Ba.Mod(Ba.NumberNode({integer:!0,min:1}),p)),quality:Ba.Opt(Ba.Mod(Ba.NumberNode({integer:!0}),p)),[Ba.Switch]:[{push:"type"}],[Ba.Case]:{"minecraft:alternatives":s({children:Ba.ListNode(r("loot_entry"))},n),"minecraft:dynamic":s({name:o()},n),"minecraft:group":s({children:Ba.ListNode(r("loot_entry"))},n),"minecraft:item":s({name:o({validator:"resource",params:{pool:"item"}})},n),"minecraft:loot_table":s({name:o({validator:"resource",params:{pool:"$loot_table"}})},n),"minecraft:sequence":s({children:Ba.ListNode(r("loot_entry"))},n),"minecraft:tag":s({name:o({validator:"resource",params:{pool:"$tag/item"}}),expand:Ba.Opt(Ba.BooleanNode())},n)}},{context:"loot_entry"}),{default:()=>({type:"minecraft:item",name:"minecraft:stone"})})),e.register("loot_function",Ba.Mod(Ba.ObjectNode({function:d,[Ba.Switch]:[{push:"function"}],[Ba.Case]:(()=>{const e={"minecraft:apply_bonus":{enchantment:o({validator:"resource",params:{pool:"enchantment"}}),formula:o({validator:"resource",params:{pool:t.get("loot_table_apply_bonus_formula")}}),parameters:Ba.Mod(Ba.ObjectNode({bonusMultiplier:Ba.Mod(Ba.NumberNode(),{enabled:e=>"minecraft:uniform_bonus_count"===e.pop().push("formula").get()}),extra:Ba.Mod(Ba.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()}),probability:Ba.Mod(Ba.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()})}),{enabled:e=>"minecraft:ore_drops"!==e.push("formula").get()})},"minecraft:copy_name":{source:m},"minecraft:copy_nbt":{source:m,ops:Ba.ListNode(Ba.ObjectNode({source:o({validator:"nbt_path",params:{category:{getter:"copy_source",path:["pop","pop","pop",{push:"source"}]}}}),target:o({validator:"nbt_path",params:{category:"minecraft:item"}}),op:o({enum:["replace","append","merge"]})},{context:"nbt_operation"}))},"minecraft:copy_state":{block:o({validator:"resource",params:{pool:"block"}}),properties:Ba.ListNode(o({validator:"block_state_key",params:{id:["pop","pop",{push:"block"}]}}))},"minecraft:enchant_randomly":{enchantments:Ba.Opt(Ba.ListNode(o({validator:"resource",params:{pool:"enchantment"}})))},"minecraft:enchant_with_levels":{levels:Ta.Range({allowBinomial:!0}),treasure:Ba.Opt(Ba.BooleanNode())},"minecraft:exploration_map":{destination:Ba.Opt(o({enum:"map_feature"})),decoration:Ba.Opt(o({enum:"map_decoration"})),zoom:Ba.Opt(Ba.NumberNode({integer:!0})),search_radius:Ba.Opt(Ba.NumberNode({integer:!0})),skip_existing_chunks:Ba.Opt(Ba.BooleanNode())},"minecraft:fill_player_head":{entity:_},"minecraft:limit_count":{limit:Ta.Range({bounds:!0})},"minecraft:looting_enchant":{count:Ta.Range({bounds:!0}),limit:Ba.Opt(Ba.NumberNode({integer:!0}))},"minecraft:set_attributes":{modifiers:Ba.ListNode(r("attribute_modifier"))},"minecraft:set_contents":{entries:Ba.ListNode(r("loot_entry"))},"minecraft:set_count":{count:Ta.Range({allowBinomial:!0})},"minecraft:set_damage":{damage:Ta.Range({forceRange:!0})},"minecraft:set_loot_table":{name:o({validator:"resource",params:{pool:"$loot_table"}}),seed:Ba.Opt(Ba.NumberNode({integer:!0}))},"minecraft:set_lore":{entity:Ba.Opt(_),lore:Ba.ListNode(r("text_component")),replace:Ba.Opt(Ba.BooleanNode())},"minecraft:set_name":{entity:Ba.Opt(_),name:Ba.Opt(r("text_component"))},"minecraft:set_nbt":{tag:o({validator:"nbt",params:{registry:{category:"minecraft:item"}}})},"minecraft:set_stew_effect":{effects:Ba.Opt(Ba.ListNode(Ba.ObjectNode({type:o({validator:"resource",params:{pool:"mob_effect"}}),duration:Ta.Range()})))}},n={};return t.get("loot_function_type").forEach((t=>{n[t]=s(s({},e[t]),i)})),n})()},{category:"function",context:"function"}),{default:()=>({function:"minecraft:set_count",count:1})})),e.register("loot_condition",Ba.Mod(Ba.ObjectNode({condition:l,[Ba.Switch]:[{push:"condition"}],[Ba.Case]:c(s({},Ta.ConditionCases),{"minecraft:entity_properties":{entity:_,predicate:r("entity_predicate")},"minecraft:entity_scores":{entity:_,scores:Ba.MapNode(o({validator:"objective"}),Ta.Range({bounds:!0}))}})},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:random_chance",chance:.5})})),e.register("attribute_modifier",Ba.Mod(Ba.ObjectNode({attribute:o({validator:"resource",params:{pool:"attribute"}}),name:o(),amount:Ta.Range({bounds:!0}),operation:o({enum:["addition","multiply_base","multiply_total"]}),slot:Ba.StringOrList(o({enum:"slot"}))},{context:"attribute_modifier"}),{default:()=>({attribute:"minecraft:generic.max_health",name:"",amount:1,operation:"addition",slot:"mainhand"})}))};var Ia={};Object.defineProperty(Ia,"__esModule",{value:!0}),Ia.initPackMcmetaSchemas=void 0;const za=Ce;Ia.initPackMcmetaSchemas=function(e,t){e.register("pack_mcmeta",za.Mod(za.ObjectNode({pack:za.Mod(za.ObjectNode({pack_format:za.Mod(za.NumberNode({integer:!0,min:6,max:6}),{default:()=>6}),description:za.Reference(e,"text_component")}),{default:()=>({pack_format:6,description:""})})}),{default:()=>({pack:{pack_format:6,description:""}})}))};var Ra={};Object.defineProperty(Ra,"__esModule",{value:!0}),Ra.initPredicatesSchemas=void 0;const Fa=Ce,Ea=ba;Ra.initPredicatesSchemas=function(e,t){const r=Fa.Reference.bind(void 0,e),o=Fa.StringNode.bind(void 0,t),i=Fa.ChoiceNode([{type:"string",node:o(),change:e=>"boolean"==typeof e||"number"==typeof e?e.toString():""},{type:"number",node:Fa.NumberNode(),change:e=>"string"==typeof e?parseInt(e):0},{type:"object",node:Fa.ObjectNode({min:Fa.Opt(Fa.NumberNode({integer:!0})),max:Fa.Opt(Fa.NumberNode({integer:!0}))}),change:e=>"number"==typeof e?{min:e,max:e}:{}},{type:"boolean",node:Fa.BooleanNode(),change:e=>"true"===e||1===e}]);e.register("item_predicate",Fa.ObjectNode({item:Fa.Opt(o({validator:"resource",params:{pool:"item"}})),tag:Fa.Opt(o({validator:"resource",params:{pool:"$tag/item"}})),count:Fa.Opt(Ea.Range()),durability:Fa.Opt(Ea.Range()),potion:Fa.Opt(o({validator:"resource",params:{pool:"potion"}})),nbt:Fa.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}})),enchantments:Fa.Opt(Fa.ListNode(r("enchantment_predicate")))},{context:"item"})),e.register("enchantment_predicate",Fa.ObjectNode({enchantment:Fa.Opt(o({validator:"resource",params:{pool:"enchantment"}})),levels:Fa.Opt(Ea.Range())},{context:"enchantment"})),e.register("block_predicate",Fa.ObjectNode({block:Fa.Opt(o({validator:"resource",params:{pool:"block"}})),tag:Fa.Opt(o({validator:"resource",params:{pool:"$tag/block"}})),nbt:Fa.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:block",id:["pop",{push:"block"}]}}})),state:Fa.Opt(Fa.MapNode(o(),i,{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},{context:"block"})),e.register("fluid_predicate",Fa.ObjectNode({fluid:Fa.Opt(o({validator:"resource",params:{pool:"fluid"}})),tag:Fa.Opt(o({validator:"resource",params:{pool:"$tag/fluid"}})),state:Fa.Opt(Fa.MapNode(o(),i))},{context:"fluid"})),e.register("location_predicate",Fa.ObjectNode({position:Fa.Opt(Fa.ObjectNode({x:Fa.Opt(Ea.Range()),y:Fa.Opt(Ea.Range()),z:Fa.Opt(Ea.Range())})),biome:Fa.Opt(o({validator:"resource",params:{pool:"$worldgen/biome"}})),feature:Fa.Opt(o({enum:t.get("worldgen/structure_feature").map((e=>e.slice(10)))})),dimension:Fa.Opt(o({validator:"resource",params:{pool:"$dimension"}})),light:Fa.Opt(Fa.ObjectNode({light:Fa.Opt(Ea.Range({integer:!0,min:0,max:15}))})),smokey:Fa.Opt(Fa.BooleanNode()),block:Fa.Opt(r("block_predicate")),fluid:Fa.Opt(r("fluid_predicate"))},{context:"location"})),e.register("statistic_predicate",Fa.ObjectNode({type:o({validator:"resource",params:{pool:"stat_type"}}),stat:o(),value:Ea.Range(),[Fa.Switch]:[{push:"type"}],[Fa.Case]:{"minecraft:mined":{stat:o({validator:"resource",params:{pool:"block"}})},"minecraft:crafted":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:used":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:broken":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:picked_up":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:dropped":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:killed":{stat:o({validator:"resource",params:{pool:"entity_type"}})},"minecraft:killed_by":{stat:o({validator:"resource",params:{pool:"entity_type"}})},"minecraft:custom":{stat:o({validator:"resource",params:{pool:"custom_stat"}})}}})),e.register("player_predicate",Fa.ObjectNode({gamemode:Fa.Opt(o({enum:"gamemode"})),level:Fa.Opt(Ea.Range()),advancements:Fa.Opt(Fa.MapNode(o({validator:"resource",params:{pool:"$advancement"}}),Fa.ChoiceNode([{type:"boolean",node:Fa.BooleanNode(),change:e=>!0},{type:"object",node:Fa.MapNode(o(),Fa.BooleanNode())}]))),recipes:Fa.Opt(Fa.MapNode(o({validator:"resource",params:{pool:"$recipe"}}),Fa.BooleanNode())),stats:Fa.Opt(Fa.ListNode(r("statistic_predicate")))},{context:"player"})),e.register("status_effect_predicate",Fa.ObjectNode({amplifier:Fa.Opt(Ea.Range()),duration:Fa.Opt(Ea.Range()),ambient:Fa.Opt(Fa.BooleanNode()),visible:Fa.Opt(Fa.BooleanNode())},{context:"status_effect"})),e.register("distance_predicate",Fa.ObjectNode({x:Fa.Opt(Ea.Range()),y:Fa.Opt(Ea.Range()),z:Fa.Opt(Ea.Range()),absolute:Fa.Opt(Ea.Range()),horizontal:Fa.Opt(Ea.Range())},{context:"distance"})),e.register("entity_predicate",Fa.ObjectNode({type:Fa.Opt(o({validator:"resource",params:{pool:"entity_type",allowTag:!0}})),nbt:Fa.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:entity",id:["pop",{push:"type"}]}}})),team:Fa.Opt(o({validator:"team"})),location:Fa.Opt(r("location_predicate")),distance:Fa.Opt(r("distance_predicate")),flags:Fa.Opt(Fa.ObjectNode({is_on_fire:Fa.Opt(Fa.BooleanNode()),is_sneaking:Fa.Opt(Fa.BooleanNode()),is_sprinting:Fa.Opt(Fa.BooleanNode()),is_swimming:Fa.Opt(Fa.BooleanNode()),is_baby:Fa.Opt(Fa.BooleanNode())})),equipment:Fa.Opt(Fa.MapNode(o({enum:"slot"}),r("item_predicate"))),vehicle:Fa.Opt(r("entity_predicate")),targeted_entity:Fa.Opt(r("entity_predicate")),player:Fa.Opt(r("player_predicate")),fishing_hook:Fa.Opt(Fa.ObjectNode({in_open_water:Fa.Opt(Fa.BooleanNode())})),effects:Fa.Opt(Fa.MapNode(o({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},{context:"entity"})),e.register("damage_source_predicate",Fa.ObjectNode({is_explosion:Fa.Opt(Fa.BooleanNode()),is_fire:Fa.Opt(Fa.BooleanNode()),is_magic:Fa.Opt(Fa.BooleanNode()),is_projectile:Fa.Opt(Fa.BooleanNode()),is_lightning:Fa.Opt(Fa.BooleanNode()),bypasses_armor:Fa.Opt(Fa.BooleanNode()),bypasses_invulnerability:Fa.Opt(Fa.BooleanNode()),bypasses_magic:Fa.Opt(Fa.BooleanNode()),source_entity:Fa.Opt(r("entity_predicate")),direct_entity:Fa.Opt(r("entity_predicate"))},{context:"damage_source"})),e.register("damage_predicate",Fa.ObjectNode({dealt:Fa.Opt(Ea.Range()),taken:Fa.Opt(Ea.Range()),blocked:Fa.Opt(Fa.BooleanNode()),source_entity:Fa.Opt(r("entity_predicate")),type:Fa.Opt(r("damage_source_predicate"))},{context:"damage"}))};var Da={};Object.defineProperty(Da,"__esModule",{value:!0}),Da.initRecipeSchemas=void 0;const $a=Ce;Da.initRecipeSchemas=function(e,t){const r=$a.Reference.bind(void 0,e),o=$a.StringNode.bind(void 0,t);e.register("recipe",$a.Mod($a.ObjectNode({type:o({validator:"resource",params:{pool:"recipe_serializer"}}),[$a.Switch]:[{push:"type"}],[$a.Case]:{"minecraft:crafting_shaped":{group:$a.Opt(o({enum:"recipe_group",additional:!0})),pattern:$a.ListNode(o()),key:$a.MapNode(o(),r("recipe_ingredient")),result:r("recipe_result")},"minecraft:crafting_shapeless":{group:$a.Opt(o()),ingredients:$a.ListNode(r("recipe_ingredient")),result:r("recipe_result")},"minecraft:smelting":{group:$a.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:$a.Opt($a.NumberNode()),cookingtime:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>200}))},"minecraft:blasting":{group:$a.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:$a.Opt($a.NumberNode()),cookingtime:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:smoking":{group:$a.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:$a.Opt($a.NumberNode()),cookingtime:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:campfire_cooking":{group:$a.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:$a.Opt($a.NumberNode()),cookingtime:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:stonecutting":{group:$a.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),count:$a.NumberNode({integer:!0})},"minecraft:smithing":{group:$a.Opt(o()),base:r("recipe_ingredient_object"),addition:r("recipe_ingredient_object"),result:r("recipe_result")}}},{context:"recipe",disableSwitchContext:!0}),{default:()=>({type:"minecraft:crafting_shaped"})})),e.register("recipe_ingredient",$a.Mod($a.ChoiceNode([{type:"object",node:r("recipe_ingredient_object"),change:e=>e[0]},{type:"list",node:$a.ListNode(r("recipe_ingredient_object")),change:e=>[e]}]),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_ingredient_object",$a.Mod($a.ObjectNode({item:$a.Opt(o({validator:"resource",params:{pool:"item"}})),tag:$a.Opt(o({validator:"resource",params:{pool:"$tag/item"}}))}),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_result",$a.Mod($a.ObjectNode({item:o({validator:"resource",params:{pool:"item"}}),count:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>1}))}),{default:()=>({item:"minecraft:stone"})}))};var Ua={};Object.defineProperty(Ua,"__esModule",{value:!0}),Ua.initTagsSchemas=void 0;const qa=Ce;Ua.initTagsSchemas=function(e,t){const r=qa.StringNode.bind(void 0,t),o=e=>qa.Mod(qa.ObjectNode({replace:qa.Opt(qa.BooleanNode()),values:qa.ListNode(qa.ChoiceNode([{type:"string",node:r({validator:"resource",params:{pool:e,allowTag:!0}}),change:e=>e.id},{type:"object",node:qa.ObjectNode({id:r({validator:"resource",params:{pool:e,allowTag:!0,allowUnknown:!0}}),required:qa.BooleanNode()}),change:e=>({id:e})}]))},{context:"tag"}),{default:()=>({values:[]})});e.register("block_tag",o("block")),e.register("entity_type_tag",o("entity_type")),e.register("fluid_tag",o("fluid")),e.register("function_tag",o("$function")),e.register("item_tag",o("item"))};var Ha={};Object.defineProperty(Ha,"__esModule",{value:!0}),Ha.initTextComponentSchemas=void 0;const Za=Ce;Ha.initTextComponentSchemas=function(e,t){const r=Za.Reference.bind(void 0,e),o=Za.StringNode.bind(void 0,t),i=e=>{var t;return e instanceof Array?i(e[0]):null!==(t=null==e?void 0:e.text)&&void 0!==t?t:"object"==typeof e?"":null==e?void 0:e.toString()};e.register("text_component",Za.Mod(Za.ChoiceNode([{type:"object",node:r("text_component_object"),change:e=>e instanceof Array?"object"==typeof e[0]?e[0]:{text:i(e[0])}:"object"==typeof e?e:{text:i(e)}},{type:"list",node:r("text_component_list"),change:e=>[e]},{type:"string",priority:1,node:o(),change:i},{type:"number",node:Za.NumberNode(),change:e=>{const t=parseFloat(i(e));return isFinite(t)?t:e?1:0}},{type:"boolean",node:Za.BooleanNode(),change:e=>{const t=i(e);return"true"===t||"false"===t?"true"===t:!!t}}],{context:"text_component"}),{default:()=>({text:""})}));const n={color:Za.Opt(o()),font:Za.Opt(o()),bold:Za.Opt(Za.BooleanNode()),italic:Za.Opt(Za.BooleanNode()),underlined:Za.Opt(Za.BooleanNode()),strikethrough:Za.Opt(Za.BooleanNode()),obfuscated:Za.Opt(Za.BooleanNode()),insertion:Za.Opt(o()),clickEvent:Za.Opt(Za.ObjectNode({action:o({enum:["open_url","open_file","run_command","suggest_command","change_page","copy_to_clipboard"]}),[Za.Switch]:[{push:"action"}],[Za.Case]:{change_page:{value:o()},copy_to_clipboard:{value:o()},open_file:{value:o()},open_url:{value:o()},run_command:{value:o({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})},suggest_command:{value:o({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})}}})),hoverEvent:Za.Opt(Za.ObjectNode({action:o({enum:["show_text","show_item","show_entity"]}),[Za.Switch]:[{push:"action"}],[Za.Case]:{show_text:{value:Za.Opt(r("text_component")),contents:Za.Opt(r("text_component"))},show_item:{value:Za.Opt(o({validator:"nbt",params:{module:"util::InventoryItem"}})),contents:Za.Opt(Za.ObjectNode({id:o({validator:"resource",params:{pool:"item"}}),count:Za.Opt(Za.NumberNode({integer:!0})),tag:Za.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"id"}]}}}))}))},show_entity:{value:Za.Opt(Za.ObjectNode({name:Za.Opt(o()),type:Za.Opt(o()),id:Za.Opt(o())})),contents:Za.Opt(Za.Mod(Za.ObjectNode({name:Za.Opt(r("text_component")),type:o({validator:"resource",params:{pool:"entity_type"}}),id:o({validator:"uuid"})}),{default:()=>({type:"minecraft:pig",id:"00000001-0001-0001-0001-000000000001"})}))}}})),extra:Za.Opt(r("text_component_list"))};e.register("text_component_object",Za.Mod(Za.ChoiceNode([{type:"text",match:e=>"object"==typeof e,change:e=>({text:""}),priority:-1,node:Za.ObjectNode(s({text:o()},n))},{type:"translation",match:e=>void 0!==(null==e?void 0:e.translate),change:e=>({translate:""}),node:Za.ObjectNode(s({translate:o(),with:Za.Opt(r("text_component_list"))},n))},{type:"score",match:e=>void 0!==(null==e?void 0:e.score),change:e=>({score:{}}),node:Za.ObjectNode(s({score:Za.ObjectNode({name:o({validator:"entity",params:{amount:"single",type:"entities",isScoreHolder:!0}}),objective:o({validator:"objective"}),value:Za.Opt(o())})},n))},{type:"selector",match:e=>void 0!==(null==e?void 0:e.selector),change:e=>({selector:""}),node:Za.ObjectNode(s({selector:o({validator:"entity",params:{amount:"multiple",type:"entities"}})},n))},{type:"keybind",match:e=>void 0!==(null==e?void 0:e.keybind),change:e=>({keybind:""}),node:Za.ObjectNode(s({keybind:o({enum:"keybind",additional:!0})},n))},{type:"nbt",match:e=>void 0!==(null==e?void 0:e.nbt),change:e=>({nbt:""}),node:Za.ObjectNode(s({nbt:o({validator:"nbt_path"}),block:Za.Opt(o({validator:"vector",params:{dimension:3,isInteger:!0}})),entity:Za.Opt(o({validator:"entity",params:{amount:"multiple",type:"entities"}})),storage:Za.Opt(o({validator:"resource",params:{pool:"$storage"}})),interpret:Za.Opt(Za.BooleanNode())},n))}],{context:"text_component_object",choiceContext:"text_component.object"}),{default:()=>({text:""})})),e.register("text_component_list",Za.Mod(Za.ListNode(r("text_component")),{default:()=>[{text:""}]}))};var Wa={},Xa={};Object.defineProperty(Xa,"__esModule",{value:!0}),Xa.initBiomeSchemas=void 0;const Ga=Ce;Xa.initBiomeSchemas=function(e,t){const r=Ga.StringNode.bind(void 0,t);e.register("biome",Ga.Mod(Ga.ObjectNode({surface_builder:r({validator:"resource",params:{pool:"$worldgen/configured_surface_builder"}}),depth:Ga.NumberNode(),scale:Ga.NumberNode(),temperature:Ga.NumberNode(),downfall:Ga.NumberNode(),precipitation:r({enum:["none","rain","snow"]}),temperature_modifier:Ga.Opt(r({enum:["none","frozen"]})),category:r({enum:"biome_category"}),player_spawn_friendly:Ga.Opt(Ga.BooleanNode()),creature_spawn_probability:Ga.Opt(Ga.NumberNode({min:0,max:1})),effects:Ga.ObjectNode({sky_color:Ga.NumberNode({color:!0}),fog_color:Ga.NumberNode({color:!0}),water_color:Ga.NumberNode({color:!0}),water_fog_color:Ga.NumberNode({color:!0}),grass_color:Ga.Opt(Ga.NumberNode({color:!0})),foliage_color:Ga.Opt(Ga.NumberNode({color:!0})),grass_color_modifier:Ga.Opt(r({enum:["none","dark_forest","swamp"]})),ambient_sound:Ga.Opt(r()),mood_sound:Ga.Opt(Ga.ObjectNode({sound:r(),tick_delay:Ga.NumberNode({integer:!0}),block_search_extent:Ga.NumberNode({integer:!0}),offset:Ga.NumberNode()})),additions_sound:Ga.Opt(Ga.ObjectNode({sound:r(),tick_chance:Ga.NumberNode({min:0,max:1})})),music:Ga.Opt(Ga.ObjectNode({sound:r(),min_delay:Ga.NumberNode({integer:!0,min:0}),max_delay:Ga.NumberNode({integer:!0,min:0}),replace_current_music:Ga.BooleanNode()})),particle:Ga.Opt(Ga.ObjectNode({options:Ga.ObjectNode({type:r()}),probability:Ga.NumberNode({min:0,max:1})}))}),starts:Ga.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_structure_feature"}})),spawners:Ga.MapNode(r({enum:["water_ambient","ambient","misc","water_creature","creature","monster"]}),Ga.Mod(Ga.ListNode(Ga.ObjectNode({type:r({validator:"resource",params:{pool:"entity_type"}}),weight:Ga.NumberNode({integer:!0}),minCount:Ga.NumberNode({integer:!0}),maxCount:Ga.NumberNode({integer:!0})})),{category:()=>"pool",default:()=>[{type:"minecraft:bat",weight:1}]})),spawn_costs:Ga.MapNode(r({validator:"resource",params:{pool:"entity_type"}}),Ga.Mod(Ga.ObjectNode({energy_budget:Ga.NumberNode(),charge:Ga.NumberNode()},{category:"function"}),{default:()=>({energy_budget:.12,charge:1})})),carvers:Ga.MapNode(r({enum:["air","liquid"]}),Ga.Mod(Ga.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_carver"}})),{default:()=>["minecraft:cave"]})),features:Ga.ListNode(Ga.Mod(Ga.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_feature"}})),{category:()=>"predicate"}),{maxLength:10})},{context:"biome"}),{default:()=>({surface_builder:"minecraft:grass",depth:.125,scale:.05,temperature:.8,downfall:.4,precipitation:"rain",category:"plains",effects:{sky_color:7907327,fog_color:12638463,water_color:4159204,water_fog_color:329011}})}))};var Va={};Object.defineProperty(Va,"__esModule",{value:!0}),Va.initCarverSchemas=void 0;const Ja=Ce;Va.initCarverSchemas=function(e,t){const r=Ja.StringNode.bind(void 0,t);e.register("configured_carver",Ja.Mod(Ja.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/carver"}}),config:Ja.ObjectNode({probability:Ja.NumberNode({min:0,max:1})})},{context:"carver"}),{default:()=>({type:"minecraft:cave",config:{probability:.1}})}))};var Ya={};Object.defineProperty(Ya,"__esModule",{value:!0}),Ya.initDecoratorSchemas=void 0;const Ka=Ce,Qa=ba;Ya.initDecoratorSchemas=function(e,t){const r=Ka.Reference.bind(void 0,e),o=Ka.StringNode.bind(void 0,t),i={maximum:Ka.NumberNode({integer:!0}),bottom_offset:Ka.NumberNode({integer:!0}),top_offset:Ka.NumberNode({integer:!0})},n={chance:Ka.NumberNode({integer:!0,min:0})},a={count:Qa.UniformInt({min:-10,max:128,maxSpread:128})};e.register("configured_decorator",Ka.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/decorator"}}),config:Ka.ObjectNode({[Ka.Switch]:["pop",{push:"type"}],[Ka.Case]:{"minecraft:carving_mask":{step:o({enum:"generation_step"}),probability:Ka.NumberNode({min:0,max:1})},"minecraft:chance":n,"minecraft:count":a,"minecraft:count_extra":{count:Ka.NumberNode({integer:!0}),extra_count:Ka.NumberNode({integer:!0}),extra_chance:Ka.NumberNode({min:0,max:1})},"minecraft:count_multilayer":a,"minecraft:count_noise":{noise_level:Ka.NumberNode(),below_noise:Ka.NumberNode({integer:!0}),above_noise:Ka.NumberNode({integer:!0})},"minecraft:count_noise_biased":{noise_to_count_ratio:Ka.NumberNode({integer:!0}),noise_factor:Ka.NumberNode(),noise_offset:Ka.Opt(Ka.NumberNode())},"minecraft:decorated":{outer:r("configured_decorator"),inner:r("configured_decorator")},"minecraft:depth_average":{baseline:Ka.NumberNode({integer:!0}),spread:Ka.NumberNode({integer:!0})},"minecraft:fire":a,"minecraft:glowstone":a,"minecraft:lava_lake":n,"minecraft:range":i,"minecraft:range_biased":i,"minecraft:range_very_biased":i,"minecraft:water_lake":n}},{context:"decorator",category:"predicate"})},{context:"decorator",category:"predicate"}))};var es={},ts={};Object.defineProperty(ts,"__esModule",{value:!0}),ts.initProcessorListSchemas=void 0;const rs=Ce;ts.initProcessorListSchemas=function(e,t){const r=rs.Reference.bind(void 0,e),o=rs.StringNode.bind(void 0,t);e.register("processor_list",rs.Mod(rs.ObjectNode({processors:rs.ListNode(r("processor"))},{context:"processor_list"}),{default:()=>({processors:[{processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]}]})})),e.register("processor",rs.Mod(rs.ObjectNode({processor_type:o({validator:"resource",params:{pool:"worldgen/structure_processor"}}),[rs.Switch]:[{push:"processor_type"}],[rs.Case]:{"minecraft:block_age":{mossiness:rs.NumberNode()},"minecraft:block_ignore":{blocks:rs.ListNode(r("block_state"))},"minecraft:block_rot":{integrity:rs.NumberNode({min:0,max:1})},"minecraft:gravity":{heightmap:o({enum:"heightmap_type"}),offset:rs.NumberNode({integer:!0})},"minecraft:rule":{rules:rs.ListNode(r("processor_rule"))}}},{category:"function",context:"processor"}),{default:()=>({processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]})})),e.register("processor_rule",rs.Mod(rs.ObjectNode({position_predicate:rs.Opt(r("pos_rule_test")),location_predicate:r("rule_test"),input_predicate:r("rule_test"),output_state:r("block_state"),output_nbt:rs.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:block"}}}))},{category:"predicate",context:"processor_rule"}),{default:()=>({location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}})}));const i={min_dist:rs.NumberNode({min:0,max:255,integer:!0}),max_dist:rs.NumberNode({min:0,max:255,integer:!0}),min_chance:rs.NumberNode({min:0,max:1}),max_chance:rs.NumberNode({min:0,max:1})};e.register("pos_rule_test",rs.ObjectNode({predicate_type:o({validator:"resource",params:{pool:"pos_rule_test"}}),[rs.Switch]:[{push:"predicate_type"}],[rs.Case]:{"minecraft:axis_aligned_linear_pos":s({axis:o({enum:["x","y","z"]})},i),"minecraft:linear_pos":i}},{context:"pos_rule_test",disableSwitchContext:!0})),e.register("rule_test",rs.ObjectNode({predicate_type:o({validator:"resource",params:{pool:"rule_test"}}),[rs.Switch]:[{push:"predicate_type"}],[rs.Case]:{"minecraft:block_match":{block:o({validator:"resource",params:{pool:"block"}})},"minecraft:blockstate_match":{block_state:r("block_state")},"minecraft:random_block_match":{block:o({validator:"resource",params:{pool:"block"}}),probability:rs.NumberNode({min:0,max:1})},"minecraft:random_blockstate_match":{block_state:r("block_state"),probability:rs.NumberNode({min:0,max:1})},"minecraft:tag_match":{tag:o({validator:"resource",params:{pool:"$tag/block"}})}}},{context:"rule_test",disableSwitchContext:!0}))},Object.defineProperty(es,"__esModule",{value:!0}),es.initFeatureSchemas=void 0;const os=Ce,is=ba;es.initFeatureSchemas=function(e,t){const r=os.Reference.bind(void 0,e),o=os.StringNode.bind(void 0,t),i={can_replace:os.BooleanNode(),project:os.BooleanNode(),need_water:os.BooleanNode(),xspread:os.NumberNode({integer:!0}),yspread:os.NumberNode({integer:!0}),zspread:os.NumberNode({integer:!0}),tries:os.NumberNode({integer:!0}),state_provider:r("block_state_provider"),block_placer:r("block_placer"),whitelist:os.ListNode(r("block_state")),blacklist:os.ListNode(r("block_state"))},n={state:r("block_state"),radius:is.UniformInt({min:0,max:4,maxSpread:4}),half_height:os.NumberNode({integer:!0,min:0,max:4}),targets:os.ListNode(r("block_state"))},a={cap_provider:r("block_state_provider"),stem_provider:r("block_state_provider"),foliage_radius:os.Opt(os.NumberNode({integer:!0}))},s={state:r("block_state"),size:os.NumberNode({integer:!0,min:0,max:64}),target:r("rule_test")},c={count:is.UniformInt({min:-10,max:128,maxSpread:128})},l=os.ChoiceNode([{type:"string",node:o({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:r("configured_feature")}],{choiceContext:"feature"});e.register("configured_feature",os.Mod(os.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/feature"}}),config:os.ObjectNode({[os.Switch]:["pop",{push:"type"}],[os.Case]:{"minecraft:bamboo":{probability:os.NumberNode({min:0,max:1})},"minecraft:basalt_columns":{reach:is.UniformInt({min:0,max:2,maxSpread:1}),height:is.UniformInt({min:1,max:5,maxSpread:5})},"minecraft:block_pile":{state_provider:r("block_state_provider")},"minecraft:decorated":{decorator:r("configured_decorator"),feature:l},"minecraft:delta_feature":{contents:r("block_state"),rim:r("block_state"),size:is.UniformInt({min:0,max:8,maxSpread:8}),rim_size:is.UniformInt({min:0,max:8,maxSpread:8})},"minecraft:disk":n,"minecraft:emerald_ore":{state:r("block_state"),target:r("block_state")},"minecraft:end_gateway":{exact:os.BooleanNode(),exit:os.Opt(r("block_pos"))},"minecraft:end_spike":{crystal_invulnerable:os.Opt(os.BooleanNode()),crystal_beam_target:os.Opt(r("block_pos")),spikes:os.ListNode(os.ObjectNode({centerX:os.Opt(os.NumberNode({integer:!0})),centerZ:os.Opt(os.NumberNode({integer:!0})),radius:os.Opt(os.NumberNode({integer:!0})),height:os.Opt(os.NumberNode({integer:!0})),guarded:os.Opt(os.BooleanNode())}))},"minecraft:fill_layer":{state:r("block_state"),height:os.NumberNode({integer:!0,min:0,max:255})},"minecraft:flower":i,"minecraft:forest_rock":{state:r("block_state")},"minecraft:huge_brown_mushroom":a,"minecraft:huge_fungus":{hat_state:r("block_state"),decor_state:r("block_state"),stem_state:r("block_state"),valid_base_block:r("block_state"),planted:os.Opt(os.BooleanNode())},"minecraft:huge_red_mushroom":a,"minecraft:ice_patch":n,"minecraft:iceberg":{state:r("block_state")},"minecraft:lake":{state:r("block_state")},"minecraft:nether_forest_vegetation":{state_provider:r("block_state_provider")},"minecraft:netherrack_replace_blobs":{state:r("block_state"),target:r("block_state"),radius:is.UniformInt()},"minecraft:no_bonemeal_flower":i,"minecraft:no_surface_ore":s,"minecraft:ore":s,"minecraft:random_patch":i,"minecraft:random_boolean_selector":{feature_false:l,feature_true:l},"minecraft:random_selector":{features:os.ListNode(os.ObjectNode({chance:os.NumberNode({min:0,max:1}),feature:l})),default:l},"minecraft:sea_pickle":c,"minecraft:seagrass":{probability:os.NumberNode({min:0,max:1})},"minecraft:simple_block":{to_place:r("block_state"),place_on:os.ListNode(r("block_state")),place_in:os.ListNode(r("block_state")),place_under:os.ListNode(r("block_state"))},"minecraft:simple_random_selector":{features:os.ListNode(l)},"minecraft:spring_feature":{state:r("fluid_state"),rock_count:os.NumberNode({integer:!0}),hole_count:os.NumberNode({integer:!0}),requires_block_below:os.BooleanNode(),valid_blocks:os.ListNode(o({validator:"resource",params:{pool:"block"}}))},"minecraft:tree":{max_water_depth:os.NumberNode({integer:!0}),ignore_vines:os.BooleanNode(),heightmap:o({enum:"heightmap_type"}),minimum_size:r("feature_size"),trunk_provider:r("block_state_provider"),leaves_provider:r("block_state_provider"),trunk_placer:os.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/trunk_placer_type"}}),base_height:os.NumberNode({integer:!0,min:0,max:32}),height_rand_a:os.NumberNode({integer:!0,min:0,max:24}),height_rand_b:os.NumberNode({integer:!0,min:0,max:24})},{context:"trunk_placer"}),foliage_placer:os.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/foliage_placer_type"}}),radius:is.UniformInt({min:0,max:8,maxSpread:8}),offset:is.UniformInt({min:0,max:8,maxSpread:8}),[os.Switch]:[{push:"type"}],[os.Case]:{"minecraft:blob_foliage_placer":{height:os.NumberNode({integer:!0,min:0,max:16})},"minecraft:bush_foliage_placer":{height:os.NumberNode({integer:!0,min:0,max:16})},"minecraft:fancy_foliage_placer":{height:os.NumberNode({integer:!0,min:0,max:16})},"minecraft:jungle_foliage_placer":{height:os.NumberNode({integer:!0,min:0,max:16})},"minecraft:mega_pine_foliage_placer":{crown_height:is.UniformInt({min:0,max:16,maxSpread:8})},"minecraft:pine_foliage_placer":{height:is.UniformInt({min:0,max:16,maxSpread:8})},"minecraft:spruce_foliage_placer":{trunk_height:is.UniformInt({min:0,max:16,maxSpread:8})}}},{context:"foliage_placer",disableSwitchContext:!0}),decorators:os.ListNode(os.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/tree_decorator_type"}}),[os.Switch]:[{push:"type"}],[os.Case]:{"minecraft:alter_ground":{provider:r("block_state_provider")},"minecraft:beehive":{probability:os.NumberNode({min:0,max:1})},"minecraft:cocoa":{probability:os.NumberNode({min:0,max:1})}}},{context:"tree_decorator"}))}}},{context:"feature"})},{context:"feature"}),{default:()=>({type:"minecraft:decorated",config:{decorator:{type:"minecraft:count",config:{count:4}},feature:{type:"minecraft:tree",config:{max_water_depth:0,ignore_vines:!0,minimum_size:{},trunk_placer:{base_height:5,height_rand_a:2,height_rand_b:0},foliage_placer:{radius:2,offset:0,height:3}}}}})})),e.register("feature_size",os.Mod(os.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/feature_size_type"}}),min_clipped_height:os.Opt(os.NumberNode({min:0,max:80})),[os.Switch]:[{push:"type"}],[os.Case]:{"minecraft:two_layers_feature_size":{limit:os.Opt(os.NumberNode({integer:!0,min:0,max:81})),lower_size:os.Opt(os.NumberNode({integer:!0,min:0,max:16})),upper_size:os.Opt(os.NumberNode({integer:!0,min:0,max:16}))},"minecraft:three_layers_feature_size":{limit:os.Opt(os.NumberNode({integer:!0,min:0,max:80})),upper_limit:os.Opt(os.NumberNode({integer:!0,min:0,max:80})),lower_size:os.Opt(os.NumberNode({integer:!0,min:0,max:16})),middle_size:os.Opt(os.NumberNode({integer:!0,min:0,max:16})),upper_size:os.Opt(os.NumberNode({integer:!0,min:0,max:16}))}}},{disableSwitchContext:!0}),{default:()=>({type:"minecraft:two_layers_feature_size"})})),e.register("block_state_provider",os.Mod(os.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/block_state_provider_type"}}),[os.Switch]:[{push:"type"}],[os.Case]:{"minecraft:rotated_block_provider":{state:r("block_state")},"minecraft:simple_state_provider":{state:r("block_state")},"minecraft:weighted_state_provider":{entries:os.ListNode(os.Mod(os.ObjectNode({weight:os.NumberNode({integer:!0,min:1}),data:r("block_state")}),{default:()=>({data:{}})}))}}},{context:"block_state_provider"}),{default:()=>({type:"minecraft:simple_state_provider"})})),e.register("block_placer",os.Mod(os.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/block_placer_type"}}),[os.Switch]:[{push:"type"}],[os.Case]:{"minecraft:column_placer":{min_size:os.NumberNode({integer:!0}),extra_size:os.NumberNode({integer:!0})}}},{context:"block_placer"}),{default:()=>({type:"minecraft:simple_block_placer"})}))};var ns={};Object.defineProperty(ns,"__esModule",{value:!0}),ns.initNoiseSettingsSchemas=void 0;const as=Ce,ss=ba;ns.initNoiseSettingsSchemas=function(e,t){const r=as.Reference.bind(void 0,e),o=as.StringNode.bind(void 0,t);e.register("noise_settings",as.Mod(as.ObjectNode({name:as.Mod(o({validator:"resource",params:{pool:"$worldgen/noise_settings",isDefinition:!0}}),{enabled:e=>e.getArray().length>0}),bedrock_roof_position:as.NumberNode({integer:!0}),bedrock_floor_position:as.NumberNode({integer:!0}),sea_level:as.NumberNode({integer:!0}),disable_mob_generation:as.BooleanNode(),default_block:r("block_state"),default_fluid:r("block_state"),noise:as.ObjectNode({height:as.NumberNode({integer:!0}),density_factor:as.NumberNode(),density_offset:as.NumberNode(),size_horizontal:as.NumberNode({integer:!0}),size_vertical:as.NumberNode({integer:!0}),simplex_surface_noise:as.BooleanNode(),random_density_offset:as.Opt(as.BooleanNode()),island_noise_override:as.Opt(as.BooleanNode()),amplified:as.Opt(as.BooleanNode()),sampling:as.ObjectNode({xz_scale:as.NumberNode(),y_scale:as.NumberNode(),xz_factor:as.NumberNode(),y_factor:as.NumberNode()}),bottom_slide:as.ObjectNode({target:as.NumberNode({integer:!0}),size:as.NumberNode({integer:!0}),offset:as.NumberNode({integer:!0})}),top_slide:as.ObjectNode({target:as.NumberNode({integer:!0}),size:as.NumberNode({integer:!0}),offset:as.NumberNode({integer:!0})})}),structures:r("generator_structures")},{context:"noise_settings"}),{default:()=>ss.DefaultNoiseSettings})),e.register("generator_structures",as.ObjectNode({stronghold:as.Opt(as.ObjectNode({distance:as.NumberNode({integer:!0,min:0,max:1023}),spread:as.NumberNode({integer:!0,min:0,max:1023}),count:as.NumberNode({integer:!0,min:1,max:4095})})),structures:as.MapNode(o({validator:"resource",params:{pool:"worldgen/structure_feature"}}),as.Mod(as.ObjectNode({spacing:as.NumberNode({integer:!0,min:0,max:4096}),separation:as.Mod(as.NumberNode({integer:!0,min:0,max:4096}),(e=>({validate:(t,r,o,i)=>(t.pop().push("spacing").get()<=r&&o.add(t,"error.separation_smaller_spacing"),e.validate(t,r,o,i))}))),salt:as.NumberNode({integer:!0,min:0})},{context:"generator_structure"}),{default:()=>({spacing:10,separation:5,salt:0})}))})),e.register("generator_layer",as.Mod(as.ObjectNode({block:o({validator:"resource",params:{pool:"block"}}),height:as.NumberNode({integer:!0,min:1})}),{default:()=>({block:"minecraft:stone",height:1})}))};var cs={};Object.defineProperty(cs,"__esModule",{value:!0}),cs.initStructureFeatureSchemas=void 0;const ls=Ce;cs.initStructureFeatureSchemas=function(e,t){const r=ls.StringNode.bind(void 0,t),o={start_pool:r({validator:"resource",params:{pool:"$worldgen/template_pool"}}),size:ls.NumberNode({integer:!0})};e.register("configured_structure_feature",ls.Mod(ls.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/structure_feature"}}),config:ls.ObjectNode({[ls.Switch]:["pop",{push:"type"}],[ls.Case]:{"minecraft:bastion_remnant":o,"minecraft:buried_treasure":{probability:ls.NumberNode({min:0,max:1})},"minecraft:mineshaft":{type:r({enum:["normal","mesa"]}),probability:ls.NumberNode({min:0,max:1})},"minecraft:ocean_ruin":{biome_temp:r({enum:["cold","warm"]}),large_probability:ls.NumberNode({min:0,max:1}),cluster_probability:ls.NumberNode({min:0,max:1})},"minecraft:pillager_outpost":o,"minecraft:ruined_portal":{portal_type:r({enum:["standard","desert","jungle","mountain","nether","ocean","swamp"]})},"minecraft:shipwreck":{is_beached:ls.Opt(ls.BooleanNode())},"minecraft:village":o}},{context:"structure_feature",disableSwitchContext:!0})},{context:"structure_feature"}),{default:()=>({type:"minecraft:bastion_remnant",config:{start_pool:"minecraft:bastion/starts",size:6}})}))};var ds={};Object.defineProperty(ds,"__esModule",{value:!0}),ds.initSurfaceBuilderSchemas=void 0;const _s=Ce;ds.initSurfaceBuilderSchemas=function(e,t){const r=_s.StringNode.bind(void 0,t),o=_s.Reference.bind(void 0,e);e.register("configured_surface_builder",_s.Mod(_s.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/surface_builder"}}),config:_s.ObjectNode({top_material:o("block_state"),under_material:o("block_state"),underwater_material:o("block_state")},{context:"surface_builder"})},{context:"surface_builder"}),{default:()=>({type:"minecraft:default",config:{top_material:{Name:"minecraft:grass_block",Properties:{snowy:"false"}},under_material:{Name:"minecraft:dirt"},underwater_material:{Name:"minecraft:gravel"}}})}))};var ms={};Object.defineProperty(ms,"__esModule",{value:!0}),ms.initTemplatePoolSchemas=void 0;const ps=Ce;ms.initTemplatePoolSchemas=function(e,t){const r=ps.Reference.bind(void 0,e),o=ps.StringNode.bind(void 0,t),i=ps.ChoiceNode([{type:"string",node:o({validator:"resource",params:{pool:"$worldgen/processor_list"}}),change:e=>{}},{type:"object",node:r("processor_list"),change:e=>({processors:[{processor_type:"minecraft:nop"}]})}]);e.register("template_pool",ps.Mod(ps.ObjectNode({name:o(),fallback:o(),elements:ps.ListNode(r("template_weighted_element"))},{context:"template_pool"}),{default:()=>({fallback:"minecraft:empty",elements:[{weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}}]})})),e.register("template_weighted_element",ps.Mod(ps.ObjectNode({weight:ps.NumberNode({integer:!0,min:1}),element:r("template_element")},{category:"pool"}),{default:()=>({weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}})})),e.register("template_element",ps.Mod(ps.ObjectNode({element_type:o({validator:"resource",params:{pool:"worldgen/structure_pool_element"}}),projection:o({enum:["rigid","terrain_matching"]}),[ps.Switch]:[{push:"element_type"}],[ps.Case]:{"minecraft:feature_pool_element":{feature:o({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},"minecraft:legacy_single_pool_element":{location:o({validator:"resource",params:{pool:"$structure"}}),processors:i},"minecraft:list_pool_element":{elements:ps.ListNode(r("template_element"))},"minecraft:single_pool_element":{location:o({validator:"resource",params:{pool:"$structure"}}),processors:i}}},{context:"template_element",disableSwitchContext:!0}),{default:()=>({element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"})}))},Object.defineProperty(Wa,"__esModule",{value:!0}),Wa.initWorldgenSchemas=void 0;const us=Xa,fs=Va,hs=Ya,gs=es,bs=ns,vs=ts,ys=cs,Ns=ds,Os=ms;Wa.initWorldgenSchemas=function(e,t){us.initBiomeSchemas(e,t),fs.initCarverSchemas(e,t),hs.initDecoratorSchemas(e,t),gs.initFeatureSchemas(e,t),bs.initNoiseSettingsSchemas(e,t),vs.initProcessorListSchemas(e,t),ys.initStructureFeatureSchemas(e,t),Ns.initSurfaceBuilderSchemas(e,t),Os.initTemplatePoolSchemas(e,t)};var ws={};Object.defineProperty(ws,"__esModule",{value:!0}),ws.initWorldSettingsSchemas=void 0;const ks=Ce;ws.initWorldSettingsSchemas=function(e,t){const r=ks.Reference.bind(void 0,e),o=ks.StringNode.bind(void 0,t);e.register("world_settings",ks.Mod(ks.ObjectNode({generate_features:ks.BooleanNode(),bonus_chest:ks.BooleanNode(),seed:ks.NumberNode({integer:!0}),dimensions:ks.MapNode(o({validator:"resource",params:{pool:"$dimension"}}),r("dimension"))},{context:"world_settings"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{generate_features:!0,bonus_chest:!1,seed:e,dimensions:{"minecraft:overworld":{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:vanilla_layered",seed:e},settings:"minecraft:overworld"}},"minecraft:the_nether":{type:"minecraft:the_nether",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:multi_noise",seed:e,humidity_noise:{firstOctave:-7,amplitudes:[1,1]},altitude_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:0},biome:"minecraft:nether_wastes"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:-.5},biome:"minecraft:soul_sand_valley"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:.4,humidity:0},biome:"minecraft:crimson_forest"},{parameters:{altitude:0,weirdness:0,offset:.375,temperature:0,humidity:.5},biome:"minecraft:warped_forest"},{parameters:{altitude:0,weirdness:0,offset:.175,temperature:-.5,humidity:0},biome:"minecraft:basalt_deltas"}]},settings:"minecraft:nether"}},"minecraft:the_end":{type:"minecraft:the_end",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:the_end",seed:e},settings:"minecraft:end"}}}}}}))},Object.defineProperty(ha,"__esModule",{value:!0}),ha.initSchemas=void 0;const xs=ga,Ss=ba,js=Na,Ms=ka,Ps=ja,As=Aa,Ls=Ia,Bs=Ra,Cs=Da,Ts=Ua,Is=Ha,zs=Wa,Rs=ws;ha.initSchemas=function(e,t){Ss.initCommonSchemas(e,t),xs.initAdvancementSchemas(e,t),js.initConditionSchemas(e,t),Ps.initDimensionTypeSchemas(e,t),Ms.initDimensionSchemas(e,t),As.initLootTableSchemas(e,t),Ls.initPackMcmetaSchemas(e,t),Bs.initPredicatesSchemas(e,t),Cs.initRecipeSchemas(e,t),Ts.initTagsSchemas(e,t),Is.initTextComponentSchemas(e,t),zs.initWorldgenSchemas(e,t),Rs.initWorldSettingsSchemas(e,t)};var Fs=Be&&Be.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),Es=Be&&Be.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ds=Be&&Be.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Fs(t,e,r);return Es(t,e),t};Object.defineProperty(ua,"__esModule",{value:!0});var $s=ua.getSchemas=ua.getCollections=void 0;const Us=Ce,qs=fa,Hs=ha;var Zs=ua.lootContext=Ds(La);var Ws=ua.getCollections=function(){const e=new Us.CollectionRegistry;return qs.initCollections(e),e};$s=ua.getSchemas=function(e){const t=new Us.SchemaRegistry;return Hs.initSchemas(t,e),t};var Xs=Object.freeze(Object.assign(Object.create(null),ua,{[Symbol.toStringTag]:"Module",get getSchemas(){return $s},get getCollections(){return Ws},lootContext:Zs,default:ua})),Gs={},Vs={};Object.defineProperty(Vs,"__esModule",{value:!0}),Vs.initCollections=void 0,Vs.initCollections=function(e){e.register("advancement_trigger",["minecraft:bee_nest_destroyed","minecraft:bred_animals","minecraft:brewed_potion","minecraft:changed_dimension","minecraft:channeled_lightning","minecraft:construct_beacon","minecraft:consume_item","minecraft:cured_zombie_villager","minecraft:effects_changed","minecraft:enchanted_item","minecraft:enter_block","minecraft:entity_hurt_player","minecraft:entity_killed_player","minecraft:filled_bucket","minecraft:fishing_rod_hooked","minecraft:hero_of_the_village","minecraft:impossible","minecraft:inventory_changed","minecraft:item_durability_changed","minecraft:item_used_on_block","minecraft:killed_by_crossbow","minecraft:levitation","minecraft:lightning_strike","minecraft:location","minecraft:nether_travel","minecraft:placed_block","minecraft:player_generates_container_loot","minecraft:player_hurt_entity","minecraft:player_interacted_with_entity","minecraft:player_killed_entity","minecraft:recipe_unlocked","minecraft:shot_crossbow","minecraft:slept_in_bed","minecraft:slide_down_block","minecraft:started_riding","minecraft:summoned_entity","minecraft:tame_animal","minecraft:target_hit","minecraft:tick","minecraft:thrown_item_picked_up_by_entity","minecraft:used_ender_eye","minecraft:used_totem","minecraft:using_item","minecraft:villager_trade","minecraft:voluntary_exile"]),e.register("dimension",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("dimension_type",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("keybind",["key.advancements","key.attack","key.back","key.chat","key.command","key.drop","key.forward","key.fullscreen","key.hotbar.1","key.hotbar.2","key.hotbar.3","key.hotbar.4","key.hotbar.5","key.hotbar.6","key.hotbar.7","key.hotbar.8","key.hotbar.9","key.inventory","key.jump","key.left","key.loadToolbarActivator","key.pickItem","key.playerlist","key.right","key.saveToolbarActivator","key.screenshot","key.smoothCamera","key.sneak","key.spectatorOutlines","key.sprint","key.swapOffhand","key.togglePerspective","key.use"]),e.register("slot",["mainhand","offhand","head","chest","legs","feet"]),e.register("gamemode",["survival","creative","adventure","spectator"]),e.register("worldgen/noise_settings",["minecraft:overworld","minecraft:nether","minecraft:end","minecraft:amplified","minecraft:caves","minecraft:floating_islands"]),e.register("entity_source",["this","killer","direct_killer","killer_player"]),e.register("copy_source",["block_entity","this","killer","killer_player"]),e.register("loot_table_apply_bonus_formula",["minecraft:uniform_bonus_count","minecraft:binomial_with_bonus_count","minecraft:ore_drops"]),e.register("map_decoration",["mansion","monument","player","frame","red_marker","blue_marker","target_x","target_point","player_off_map","player_off_limits","red_x","banner_white","banner_orange","banner_magenta","banner_light_blue","banner_yellow","banner_lime","banner_pink","banner_gray","banner_light_gray","banner_cyan","banner_purple","banner_blue","banner_brown","banner_green","banner_red","banner_black"]),e.register("map_feature",["bastion_remnant","buried_treasure","desert_pyramid","endcity","fortress","igloo","jungle_pyramid","mansion","mineshaft","monument","nether_fossil","ocean_ruin","pillager_outpost","ruined_portal","shipwreck","stronghold","swamp_hut","village"]),e.register("recipe_group",["bed","light_gray_dye","iron_ingot","wooden_stairs","black_dye","stained_terracotta","dyed_bed","magenta_dye","bark","rabbit_stew","light_blue_dye","wooden_fence_gate","planks","stained_glass","wooden_door","stained_glass_pane","wooden_fence","sticks","concrete_powder","wooden_pressure_plate","boat","brown_dye","yellow_dye","bonemeal","red_dye","wooden_trapdoor","wooden_button","gold_ingot","pink_dye","wooden_slab","orange_dye","carpet","sign","wool","sugar","blue_dye","white_dye","banner","netherite_ingot"]),e.register("worldgen/configured_feature",["minecraft:acacia","minecraft:bamboo_light","minecraft:bamboo_vegetation","minecraft:bamboo","minecraft:basalt_blobs","minecraft:basalt_pillar","minecraft:birch_bees_0002","minecraft:birch_bees_002","minecraft:birch_bees_005","minecraft:birch_other","minecraft:birch_tall","minecraft:birch","minecraft:blackstone_blobs","minecraft:blue_ice","minecraft:bonus_chest","minecraft:brown_mushroom_giant","minecraft:brown_mushroom_nether","minecraft:brown_mushroom_normal","minecraft:brown_mushroom_swamp","minecraft:brown_mushroom_taiga","minecraft:chorus_plant","minecraft:crimson_forest_vegetation","minecraft:crimson_fungi_planted","minecraft:crimson_fungi","minecraft:dark_forest_vegetation_brown","minecraft:dark_forest_vegetation_red","minecraft:dark_oak","minecraft:delta","minecraft:desert_well","minecraft:disk_clay","minecraft:disk_gravel","minecraft:disk_sand","minecraft:end_gateway_delayed","minecraft:end_gateway","minecraft:end_island_decorated","minecraft:end_island","minecraft:end_spike","minecraft:fancy_oak_bees_0002","minecraft:fancy_oak_bees_002","minecraft:fancy_oak_bees_005","minecraft:fancy_oak","minecraft:flower_default","minecraft:flower_forest","minecraft:flower_plain_decorated","minecraft:flower_plain","minecraft:flower_swamp","minecraft:flower_warm","minecraft:forest_flower_trees","minecraft:forest_flower_vegetation_common","minecraft:forest_flower_vegetation","minecraft:forest_rock","minecraft:fossil","minecraft:freeze_top_layer","minecraft:glowstone_extra","minecraft:glowstone","minecraft:huge_brown_mushroom","minecraft:huge_red_mushroom","minecraft:ice_patch","minecraft:ice_spike","minecraft:iceberg_blue","minecraft:iceberg_packed","minecraft:jungle_bush","minecraft:jungle_tree_no_vine","minecraft:jungle_tree","minecraft:kelp_cold","minecraft:kelp_warm","minecraft:lake_lava","minecraft:lake_water","minecraft:large_basalt_columns","minecraft:mega_jungle_tree","minecraft:mega_pine","minecraft:mega_spruce","minecraft:monster_room","minecraft:mushroom_field_vegetation","minecraft:nether_sprouts","minecraft:oak_badlands","minecraft:oak_bees_0002","minecraft:oak_bees_002","minecraft:oak_bees_005","minecraft:oak","minecraft:ore_andesite","minecraft:ore_blackstone","minecraft:ore_coal","minecraft:ore_debris_large","minecraft:ore_debris_small","minecraft:ore_diamond","minecraft:ore_diorite","minecraft:ore_dirt","minecraft:ore_emerald","minecraft:ore_gold_deltas","minecraft:ore_gold_extra","minecraft:ore_gold_nether","minecraft:ore_gold","minecraft:ore_granite","minecraft:ore_gravel_nether","minecraft:ore_gravel","minecraft:ore_infested","minecraft:ore_iron","minecraft:ore_lapis","minecraft:ore_magma","minecraft:ore_quartz_deltas","minecraft:ore_quartz_nether","minecraft:ore_redstone","minecraft:ore_soul_sand","minecraft:patch_berry_bush","minecraft:patch_berry_decorated","minecraft:patch_berry_sparse","minecraft:patch_brown_mushroom","minecraft:patch_cactus_decorated","minecraft:patch_cactus_desert","minecraft:patch_cactus","minecraft:patch_crimson_roots","minecraft:patch_dead_bush_2","minecraft:patch_dead_bush_badlands","minecraft:patch_dead_bush","minecraft:patch_fire","minecraft:patch_grass_badlands","minecraft:patch_grass_forest","minecraft:patch_grass_jungle","minecraft:patch_grass_normal","minecraft:patch_grass_plain","minecraft:patch_grass_savanna","minecraft:patch_grass_taiga_2","minecraft:patch_grass_taiga","minecraft:patch_large_fern","minecraft:patch_melon","minecraft:patch_pumpkin","minecraft:patch_red_mushroom","minecraft:patch_soul_fire","minecraft:patch_sugar_cane_badlands","minecraft:patch_sugar_cane_desert","minecraft:patch_sugar_cane_swamp","minecraft:patch_sugar_cane","minecraft:patch_sunflower","minecraft:patch_taiga_grass","minecraft:patch_tall_grass_2","minecraft:patch_tall_grass","minecraft:patch_waterlilly","minecraft:pile_hay","minecraft:pile_ice","minecraft:pile_melon","minecraft:pile_pumpkin","minecraft:pile_snow","minecraft:pine","minecraft:plain_vegetation","minecraft:red_mushroom_giant","minecraft:red_mushroom_nether","minecraft:red_mushroom_normal","minecraft:red_mushroom_swamp","minecraft:red_mushroom_taiga","minecraft:sea_pickle","minecraft:seagrass_cold","minecraft:seagrass_deep_cold","minecraft:seagrass_deep_warm","minecraft:seagrass_deep","minecraft:seagrass_normal","minecraft:seagrass_river","minecraft:seagrass_simple","minecraft:seagrass_swamp","minecraft:seagrass_warm","minecraft:small_basalt_columns","minecraft:spring_closed_double","minecraft:spring_closed","minecraft:spring_delta","minecraft:spring_lava_double","minecraft:spring_lava","minecraft:spring_open","minecraft:spring_water","minecraft:spruce_snowy","minecraft:spruce","minecraft:super_birch_bees_0002","minecraft:swamp_tree","minecraft:taiga_vegetation","minecraft:trees_birch","minecraft:trees_giant_spruce","minecraft:trees_giant","minecraft:trees_jungle_edge","minecraft:trees_jungle","minecraft:trees_mountain_edge","minecraft:trees_mountain","minecraft:trees_savanna","minecraft:trees_shattered_savanna","minecraft:trees_water","minecraft:twisting_vines","minecraft:vines","minecraft:void_start_platform","minecraft:warm_ocean_vegetation","minecraft:warped_forest_vegetation","minecraft:warped_fungi_planted","minecraft:warped_fungi","minecraft:weeping_vines"]),e.register("worldgen/configured_structure_feature",["minecraft:bastion_remnant","minecraft:buried_treasure","minecraft:desert_pyramid","minecraft:end_city","minecraft:fortress","minecraft:igloo","minecraft:jungle_pyramid","minecraft:mansion","minecraft:mineshaft_mesa","minecraft:mineshaft","minecraft:monument","minecraft:nether_fossil","minecraft:ocean_ruin_cold","minecraft:ocean_ruin_warm","minecraft:pillager_outpost","minecraft:ruined_portal_desert","minecraft:ruined_portal_jungle","minecraft:ruined_portal_mountain","minecraft:ruined_portal_nether","minecraft:ruined_portal_ocean","minecraft:ruined_portal_swamp","minecraft:ruined_portal","minecraft:shipwreck_beached","minecraft:shipwreck","minecraft:stronghold","minecraft:swamp_hut","minecraft:village_desert","minecraft:village_plains","minecraft:village_savanna","minecraft:village_snowy","minecraft:village_taiga"]),e.register("worldgen/configured_surface_builder",["minecraft:badlands","minecraft:basalt_deltas","minecraft:crimson_forest","minecraft:desert","minecraft:end","minecraft:eroded_badlands","minecraft:frozen_ocean","minecraft:full_sand","minecraft:giant_tree_taiga","minecraft:grass","minecraft:gravelly_mountain","minecraft:ice_spikes","minecraft:mountain","minecraft:mycelium","minecraft:nether","minecraft:nope","minecraft:ocean_sand","minecraft:shattered_savanna","minecraft:soul_sand_valley","minecraft:stone","minecraft:swamp","minecraft:warped_forest","minecraft:wooded_badlands"]),e.register("biome_category",["beach","desert","extreme_hills","forest","icy","jungle","mesa","mushroom","nether","none","ocean","plains","river","savanna","swamp","taiga","the_end","underground"]),e.register("heightmap_type",["MOTION_BLOCKING","MOTION_BLOCKING_NO_LEAVES","OCEAN_FLOOR","OCEAN_FLOOR_WG","WORLD_SURFACE","WORLD_SURFACE_WG"]),e.register("generation_step",["air","liquid"]),e.register("loot_context_type",["minecraft:empty","minecraft:chest","minecraft:command","minecraft:selector","minecraft:fishing","minecraft:entity","minecraft:gift","minecraft:barter","minecraft:advancement_reward","minecraft:advancement_entity","minecraft:generic","minecraft:block"]),e.register("banner_pattern",["base","square_bottom_left","square_bottom_right","square_top_left","square_top_right","stripe_bottom","stripe_top","stripe_left","stripe_right","stripe_center","stripe_middle","stripe_downright","stripe_downleft","small_stripes","cross","straight_cross","triangle_bottom","triangle_top","triangles_bottom","triangles_top","diagonal_left","diagonal_up_right","diagonal_up_left","diagonal_right","circle","rhombus","half_vertical","half_horizontal","half_vertical_right","half_horizontal_bottom","border","curly_border","gradient","gradient_up","bricks","globe","creeper","skull","flower","mojang","piglin"]),e.register("dye_color",["white","orange","magenta","light_blue","yellow","lime","pink","gray","light_gray","cyan","purple","blue","brown","green","red","black"])};var Js={},Ys={};Object.defineProperty(Ys,"__esModule",{value:!0}),Ys.initAdvancementSchemas=void 0;const Ks=Ce;Ys.initAdvancementSchemas=function(e,t){const r=Ks.Reference.bind(void 0,e),o=Ks.StringNode.bind(void 0,t),i=Ks.ChoiceNode([{type:"object",node:Ks.Opt(r("entity_predicate")),change:e=>{var t,r;return null!==(r=null===(t=e[0])||void 0===t?void 0:t.predicate)&&void 0!==r?r:{}}},{type:"list",node:Ks.ListNode(r("condition")),change:e=>[{condition:"minecraft:entity_properties",predicate:e}]}],{context:"conditions"});e.register("advancement",Ks.Mod(Ks.ObjectNode({display:Ks.Opt(Ks.Mod(Ks.ObjectNode({icon:Ks.ObjectNode({item:o({validator:"resource",params:{pool:"item"}}),nbt:Ks.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}}))}),title:r("text_component"),description:r("text_component"),background:Ks.Opt(o()),frame:Ks.Opt(o({enum:["task","challenge","goal"]})),show_toast:Ks.Opt(Ks.BooleanNode()),announce_to_chat:Ks.Opt(Ks.BooleanNode()),hidden:Ks.Opt(Ks.BooleanNode())}),{default:()=>({icon:{item:"minecraft:stone"},title:"",description:""})})),parent:Ks.Opt(o({validator:"resource",params:{pool:"$advancement"}})),criteria:Ks.MapNode(o(),r("advancement_criteria")),requirements:Ks.Opt(Ks.ListNode(Ks.ListNode(o()))),rewards:Ks.Opt(Ks.ObjectNode({function:Ks.Opt(o({validator:"resource",params:{pool:"$function"}})),loot:Ks.Opt(Ks.ListNode(o({validator:"resource",params:{pool:"$loot_table"}}))),recipes:Ks.Opt(Ks.ListNode(o({validator:"resource",params:{pool:"$recipe"}}))),experience:Ks.Opt(Ks.NumberNode({integer:!0}))}))},{context:"advancement"}),{default:()=>({criteria:{requirement:{trigger:"minecraft:location"}}})})),e.register("advancement_criteria",Ks.ObjectNode({trigger:o({validator:"resource",params:{pool:t.get("advancement_trigger")}}),conditions:Ks.Opt(Ks.ObjectNode({player:Ks.Mod(i,{enabled:e=>"minecraft:impossible"!==e.pop().push("trigger").get()}),[Ks.Switch]:["pop",{push:"trigger"}],[Ks.Case]:{"minecraft:bee_nest_destroyed":{block:Ks.Opt(o({validator:"resource",params:{pool:"block"}})),num_bees_inside:Ks.Opt(Ks.NumberNode({integer:!0})),item:Ks.Opt(r("item_predicate"))},"minecraft:bred_animals":{parent:i,partner:i,child:i},"minecraft:brewed_potion":{potion:Ks.Opt(o({validator:"resource",params:{pool:"potion"}}))},"minecraft:changed_dimension":{from:Ks.Opt(o({validator:"resource",params:{pool:"$dimension"}})),to:Ks.Opt(o({validator:"resource",params:{pool:"$dimension"}}))},"minecraft:channeled_lightning":{victims:Ks.Opt(Ks.ListNode(i))},"minecraft:construct_beacon":{level:r("int_bounds")},"minecraft:consume_item":{item:Ks.Opt(r("item_predicate"))},"minecraft:cured_zombie_villager":{villager:i,zombie:i},"minecraft:effects_changed":{effects:Ks.Opt(Ks.MapNode(o({validator:"resource",params:{pool:"mob_effect"}}),Ks.ObjectNode({amplifier:r("int_bounds"),duration:r("int_bounds")}))),source:Ks.Opt(i)},"minecraft:enter_block":{block:Ks.Opt(o({validator:"resource",params:{pool:"block"}})),state:Ks.Opt(Ks.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},"minecraft:enchanted_item":{levels:r("int_bounds"),item:Ks.Opt(r("item_predicate"))},"minecraft:entity_hurt_player":{damage:Ks.Opt(r("damage_predicate"))},"minecraft:entity_killed_player":{entity:i,killing_blow:Ks.Opt(r("damage_source_predicate"))},"minecraft:filled_bucket":{item:Ks.Opt(r("item_predicate"))},"minecraft:fishing_rod_hooked":{entity:i,item:Ks.Opt(r("item_predicate"))},"minecraft:hero_of_the_village":{location:Ks.Opt(r("location_predicate"))},"minecraft:inventory_changed":{slots:Ks.Opt(Ks.ObjectNode({empty:r("int_bounds"),occupied:r("int_bounds"),full:r("int_bounds")})),items:Ks.Opt(Ks.ListNode(r("item_predicate")))},"minecraft:item_durability_changed":{delta:r("int_bounds"),durability:r("int_bounds"),item:Ks.Opt(r("item_predicate"))},"minecraft:item_used_on_block":{item:Ks.Opt(r("item_predicate")),location:Ks.Opt(r("location_predicate"))},"minecraft:killed_by_crossbow":{unique_entity_types:r("int_bounds"),victims:Ks.Opt(Ks.ListNode(i))},"minecraft:levitation":{distance:r("distance_predicate"),duration:r("int_bounds")},"minecraft:lightning_strike":{lightning:i,bystander:i},"minecraft:location":{location:Ks.Opt(r("location_predicate"))},"minecraft:nether_travel":{distance:r("distance_predicate"),entered:Ks.Opt(r("location_predicate")),exited:Ks.Opt(r("location_predicate"))},"minecraft:placed_block":{block:Ks.Opt(o({validator:"resource",params:{pool:"block"}})),state:Ks.Opt(Ks.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})),item:Ks.Opt(r("item_predicate")),location:Ks.Opt(r("location_predicate"))},"minecraft:player_generates_container_loot":{loot_table:o({validator:"resource",params:{pool:"$loot_table"}})},"minecraft:player_hurt_entity":{damage:Ks.Opt(r("damage_predicate")),entity:i},"minecraft:player_interacted_with_entity":{item:Ks.Opt(r("item_predicate")),entity:i},"minecraft:player_killed_entity":{entity:i,killing_blow:Ks.Opt(r("damage_source_predicate"))},"minecraft:recipe_unlocked":{recipe:o({validator:"resource",params:{pool:"$recipe"}})},"minecraft:slept_in_bed":{location:Ks.Opt(r("location_predicate"))},"minecraft:slide_down_block":{block:Ks.Opt(o({validator:"resource",params:{pool:"block"}}))},"minecraft:shot_crossbow":{item:Ks.Opt(r("item_predicate"))},"minecraft:summoned_entity":{entity:i},"minecraft:tame_animal":{entity:i},"minecraft:target_hit":{projectile:i,shooter:i,signal_strength:r("int_bounds")},"minecraft:thrown_item_picked_up_by_entity":{entity:Ks.Opt(r("entity_predicate")),item:Ks.Opt(r("item_predicate"))},"minecraft:used_ender_eye":{distance:r("float_bounds")},"minecraft:used_totem":{item:Ks.Opt(r("item_predicate"))},"minecraft:using_item":{item:Ks.Opt(r("item_predicate"))},"minecraft:villager_trade":{villager:Ks.Opt(r("entity_predicate")),item:Ks.Opt(r("item_predicate"))},"minecraft:voluntary_exile":{location:r("location_predicate")}}},{context:"criterion"}))},{category:"predicate",context:"criterion"}))};var Qs={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initCommonSchemas=e.IntProvider=e.FloatProvider=e.NoiseSettingsPresets=e.DefaultNoiseSettings=e.DimensionTypePresets=e.DefaultDimensionType=e.FunctionCases=e.ConditionCases=void 0;const t=Ce;e.DefaultDimensionType={ultrawarm:!1,natural:!0,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!0,has_raids:!0,has_skylight:!0,has_ceiling:!1,coordinate_scale:1,ambient_light:0,logical_height:256,infiniburn:"minecraft:infiniburn_overworld",min_y:0,height:256},e.DefaultNoiseSettings={name:"minecraft:overworld",bedrock_roof_position:-10,bedrock_floor_position:0,sea_level:63,disable_mob_generation:!1,noise_caves_enabled:!0,aquifers_enabled:!0,deepslate_enabled:!0,noise:{min_y:0,height:256,density_factor:1,density_offset:-.46875,simplex_surface_noise:!0,random_density_offset:!0,size_horizontal:1,size_vertical:2,sampling:{xz_scale:1,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-10,size:3,offset:0},bottom_slide:{target:-30,size:0,offset:0}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},e.initCommonSchemas=function(r,o){const i=t.StringNode.bind(void 0,o),n=t.Reference.bind(void 0,r);r.register("block_state",t.Mod(t.ObjectNode({Name:i({validator:"resource",params:{pool:"block"}}),Properties:t.Opt(t.MapNode(i(),i(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"Name"}]}}}))},{context:"block_state"}),{default:()=>({Name:"minecraft:stone"})})),r.register("fluid_state",t.Mod(t.ObjectNode({Name:i({validator:"resource",params:{pool:"fluid"}}),Properties:t.Opt(t.MapNode(i(),i()))},{context:"fluid_state"}),{default:()=>({Name:"minecraft:water",Properties:{level:"0"}})})),r.register("block_pos",t.Mod(t.ListNode(t.NumberNode({integer:!0}),{minLength:3,maxLength:3}),{default:()=>[0,0,0]}));const a=e=>t.Opt(t.ChoiceNode([{type:"number",node:t.NumberNode({integer:e}),change:e=>{var t,r;return void 0===e?0:null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:0}},{type:"object",node:t.ObjectNode({min:t.Opt(t.NumberNode({integer:e})),max:t.Opt(t.NumberNode({integer:e}))},{context:"range"}),change:e=>({min:null!=e?e:0,max:null!=e?e:0})}]));r.register("int_bounds",a(!0)),r.register("float_bounds",a()),r.register("int_range",t.ChoiceNode([{type:"object",node:t.ObjectNode({min:t.Opt(n("number_provider")),max:t.Opt(n("number_provider"))})},{type:"number",node:t.NumberNode({integer:!0})}],{context:"range"}));const c=(e,r,o,n,a,c,l)=>{let d={};a&&Object.keys(l[a]).forEach((e=>{d[e]=t.Mod(l[a][e],{enabled:e=>void 0===e.push("type").get()})}));const _=t.ObjectNode(s({type:t.Mod(t.Opt(i({validator:"resource",params:{pool:e}})),{hidden:()=>!0}),[t.Switch]:[{push:"type"}],[t.Case]:l},d),{context:c,disableSwitchContext:!0}),m=[{type:r,node:l[n][o]}];return a&&m.push({type:"object",priority:-1,node:_}),Object.keys(l).forEach((e=>{m.push({type:e,match:t=>{var r;if("minecraft:"+(null===(r=null==t?void 0:t.type)||void 0===r?void 0:r.replace(/^minecraft:/,""))===e)return!0;const o=t?Object.keys(t):[];return"object"==typeof t&&(0===(null==o?void 0:o.length)||1===(null==o?void 0:o.length)&&"type"===(null==o?void 0:o[0]))},node:_,change:t=>({type:e})})})),t.ChoiceNode(m,{context:c,choiceContext:`${c}.type`})};r.register("number_provider",c("loot_number_provider_type","number","value","minecraft:constant","minecraft:uniform","number_provider",{"minecraft:constant":{value:t.NumberNode()},"minecraft:uniform":{min:n("number_provider"),max:n("number_provider")},"minecraft:binomial":{n:n("number_provider"),p:n("number_provider")},"minecraft:score":{target:n("scoreboard_name_provider"),score:i({validator:"objective"}),scale:t.Opt(t.NumberNode())}})),r.register("scoreboard_name_provider",c("loot_score_provider_type","string","target","minecraft:context",null,"score_provider",{"minecraft:fixed":{name:i({validator:"entity",params:{amount:"multiple",type:"entities",isScoreHolder:!0}})},"minecraft:context":{target:t.Mod(i({enum:"entity_source"}),{default:()=>"this"})}})),r.register("nbt_provider",c("loot_nbt_provider_type","string","target","minecraft:context",null,"nbt_provider",{"minecraft:storage":{source:i({validator:"resource",params:{pool:"$storage"}})},"minecraft:context":{target:t.Mod(i({enum:"copy_source"}),{default:()=>"this"})}})),e.FloatProvider=e=>c("float_provider_type","number","value","minecraft:constant",null,"float_provider",{"minecraft:constant":{value:t.NumberNode(e)},"minecraft:uniform":{value:t.ObjectNode({min_inclusive:t.NumberNode(e),max_exclusive:t.NumberNode(e)})},"minecraft:clamped_normal":{value:t.ObjectNode({min:t.NumberNode(),max:t.NumberNode(),mean:t.NumberNode(),deviation:t.NumberNode()})},"minecraft:trapezoid":{value:t.ObjectNode({min:t.NumberNode(),max:t.NumberNode(),plateau:t.NumberNode()})}}),r.register("float_provider",e.FloatProvider()),e.IntProvider=e=>c("int_provider_type","number","value","minecraft:constant",null,"int_provider",{"minecraft:constant":{value:t.NumberNode(s({integer:!0},e))},"minecraft:uniform":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e))})},"minecraft:biased_to_bottom":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e))})},"minecraft:clamped":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e)),source:n("int_provider")})}}),r.register("int_provider",e.IntProvider()),r.register("vertical_anchor",t.ChoiceNode(["absolute","above_bottom","below_top"].map((e=>({type:e,match:t=>void 0!==(null==t?void 0:t[e]),change:t=>{var r,o,i;return{[e]:null!==(i=null!==(o=null!==(r=t.absolute)&&void 0!==r?r:t.above_bottom)&&void 0!==o?o:t.below_top)&&void 0!==i?i:0}},node:t.ObjectNode({[e]:t.NumberNode({integer:!0,min:-2048,max:2047})})}))),{context:"vertical_anchor"})),r.register("height_provider",c("height_provider_type","number","value","minecraft:constant",null,"height_provider",{"minecraft:constant":{value:n("vertical_anchor")},"minecraft:uniform":{min_inclusive:n("vertical_anchor"),max_inclusive:n("vertical_anchor")},"minecraft:biased_to_bottom":{min_inclusive:n("vertical_anchor"),max_inclusive:n("vertical_anchor"),inner:t.Opt(t.NumberNode({integer:!0,min:1}))},"minecraft:very_biased_to_bottom":{min_inclusive:n("vertical_anchor"),max_inclusive:n("vertical_anchor"),inner:t.Opt(t.NumberNode({integer:!0,min:1}))},"minecraft:trapezoid":{min_inclusive:n("vertical_anchor"),max_inclusive:n("vertical_anchor"),plateau:t.Opt(t.NumberNode({integer:!0}))}})),e.ConditionCases=(e=i({enum:"entity_source"}))=>({"minecraft:alternative":{terms:t.ListNode(n("condition"))},"minecraft:block_state_property":{block:i({validator:"resource",params:{pool:"block"}}),properties:t.MapNode(i(),i(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})},"minecraft:damage_source_properties":{predicate:n("damage_source_predicate")},"minecraft:entity_properties":{entity:e,predicate:n("entity_predicate")},"minecraft:entity_scores":{entity:e,scores:t.MapNode(i({validator:"objective"}),n("int_range"))},"minecraft:inverted":{term:n("condition")},"minecraft:killed_by_player":{inverse:t.Opt(t.BooleanNode())},"minecraft:location_check":{offsetX:t.Opt(t.NumberNode({integer:!0})),offsetY:t.Opt(t.NumberNode({integer:!0})),offsetZ:t.Opt(t.NumberNode({integer:!0})),predicate:n("location_predicate")},"minecraft:match_tool":{predicate:n("item_predicate")},"minecraft:random_chance":{chance:t.NumberNode({min:0,max:1})},"minecraft:random_chance_with_looting":{chance:t.NumberNode({min:0,max:1}),looting_multiplier:t.NumberNode()},"minecraft:reference":{name:i({validator:"resource",params:{pool:"$predicate"}})},"minecraft:table_bonus":{enchantment:i({validator:"resource",params:{pool:"enchantment"}}),chances:t.ListNode(t.NumberNode({min:0,max:1}))},"minecraft:time_check":{value:n("int_range"),period:t.Opt(t.NumberNode({integer:!0}))},"minecraft:value_check":{value:n("number_provider"),range:n("int_range")},"minecraft:weather_check":{raining:t.Opt(t.BooleanNode()),thundering:t.Opt(t.BooleanNode())}}),e.FunctionCases=(e,r=i({enum:"copy_source"}),a=i({enum:"entity_source"}))=>{const c={"minecraft:apply_bonus":{enchantment:i({validator:"resource",params:{pool:"enchantment"}}),formula:i({validator:"resource",params:{pool:o.get("loot_table_apply_bonus_formula")}}),parameters:t.Mod(t.ObjectNode({bonusMultiplier:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:uniform_bonus_count"===e.pop().push("formula").get()}),extra:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()}),probability:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()})}),{enabled:e=>"minecraft:ore_drops"!==e.push("formula").get()})},"minecraft:copy_name":{source:r},"minecraft:copy_nbt":{source:n("nbt_provider"),ops:t.ListNode(t.ObjectNode({source:i({validator:"nbt_path",params:{category:{getter:"copy_source",path:["pop","pop","pop",{push:"source"}]}}}),target:i({validator:"nbt_path",params:{category:"minecraft:item"}}),op:i({enum:["replace","append","merge"]})},{context:"nbt_operation"}))},"minecraft:copy_state":{block:i({validator:"resource",params:{pool:"block"}}),properties:t.ListNode(i({validator:"block_state_key",params:{id:["pop","pop",{push:"block"}]}}))},"minecraft:enchant_randomly":{enchantments:t.Opt(t.ListNode(i({validator:"resource",params:{pool:"enchantment"}})))},"minecraft:enchant_with_levels":{levels:n("number_provider"),treasure:t.Opt(t.BooleanNode())},"minecraft:exploration_map":{destination:t.Opt(i({enum:"map_feature"})),decoration:t.Opt(i({enum:"map_decoration"})),zoom:t.Opt(t.NumberNode({integer:!0})),search_radius:t.Opt(t.NumberNode({integer:!0})),skip_existing_chunks:t.Opt(t.BooleanNode())},"minecraft:fill_player_head":{entity:a},"minecraft:limit_count":{limit:n("int_range")},"minecraft:looting_enchant":{count:n("number_provider"),limit:t.Opt(t.NumberNode({integer:!0}))},"minecraft:set_attributes":{modifiers:t.ListNode(n("attribute_modifier"))},"minecraft:set_banner_pattern":{patterns:t.ListNode(t.ObjectNode({pattern:i({enum:"banner_pattern"}),color:i({enum:"dye_color"})})),append:t.Opt(t.BooleanNode())},"minecraft:set_contents":{entries:t.ListNode(n("loot_entry"))},"minecraft:set_count":{count:n("number_provider"),add:t.Opt(t.BooleanNode())},"minecraft:set_damage":{damage:n("number_provider"),add:t.Opt(t.BooleanNode())},"minecraft:set_enchantments":{enchantments:t.MapNode(i({validator:"resource",params:{pool:"enchantment"}}),n("number_provider")),add:t.Opt(t.BooleanNode())},"minecraft:set_loot_table":{name:i({validator:"resource",params:{pool:"$loot_table"}}),seed:t.Opt(t.NumberNode({integer:!0}))},"minecraft:set_lore":{entity:t.Opt(a),lore:t.ListNode(n("text_component")),replace:t.Opt(t.BooleanNode())},"minecraft:set_name":{entity:t.Opt(a),name:t.Opt(n("text_component"))},"minecraft:set_nbt":{tag:i({validator:"nbt",params:{registry:{category:"minecraft:item"}}})},"minecraft:set_stew_effect":{effects:t.Opt(t.ListNode(t.ObjectNode({type:i({validator:"resource",params:{pool:"mob_effect"}}),duration:n("number_provider")})))}},l={};return o.get("loot_function_type").forEach((t=>{l[t]=s(s({},c[t]),e)})),l},e.DimensionTypePresets=r=>t.ObjectOrPreset(i({validator:"resource",params:{pool:"$dimension_type"}}),r,{"minecraft:overworld":e.DefaultDimensionType,"minecraft:the_nether":{name:"minecraft:the_nether",ultrawarm:!0,natural:!1,shrunk:!0,piglin_safe:!0,respawn_anchor_works:!0,bed_works:!1,has_raids:!1,has_skylight:!1,has_ceiling:!0,ambient_light:.1,fixed_time:18e3,logical_height:128,effects:"minecraft:the_nether",infiniburn:"minecraft:infiniburn_nether",min_y:0,height:256},"minecraft:the_end":{name:"minecraft:the_end",ultrawarm:!1,natural:!1,shrunk:!1,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!1,has_raids:!0,has_skylight:!1,has_ceiling:!1,ambient_light:0,fixed_time:6e3,logical_height:256,effects:"minecraft:the_end",infiniburn:"minecraft:infiniburn_end",min_y:0,height:256}}),e.NoiseSettingsPresets=r=>t.ObjectOrPreset(i({validator:"resource",params:{pool:"$worldgen/noise_settings"}}),r,{"minecraft:overworld":e.DefaultNoiseSettings,"minecraft:nether":{name:"minecraft:nether",bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,disable_mob_generation:!0,noise_caves_enabled:!1,aquifers_enabled:!1,deepslate_enabled:!1,noise:{min_y:0,height:128,density_factor:0,density_offset:.019921875,simplex_surface_noise:!1,random_density_offset:!1,size_horizontal:1,size_vertical:2,sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60},top_slide:{target:120,size:3,offset:0},bottom_slide:{target:320,size:4,offset:-1}},default_block:{Name:"minecraft:netherrack"},default_fluid:{Name:"minecraft:lava",Properties:{level:"0"}}},"minecraft:end":{name:"minecraft:end",bedrock_roof_position:-10,bedrock_floor_position:-10,sea_level:0,disable_mob_generation:!0,noise_caves_enabled:!1,aquifers_enabled:!1,deepslate_enabled:!1,noise:{min_y:0,height:128,density_factor:0,density_offset:0,simplex_surface_noise:!0,random_density_offset:!1,island_noise_override:!0,size_horizontal:2,size_vertical:1,sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-3e3,size:64,offset:-46},bottom_slide:{target:-30,size:7,offset:1}},default_block:{Name:"minecraft:end_stone"},default_fluid:{Name:"minecraft:air"}},"minecraft:amplified":{name:"minecraft:amplified",bedrock_roof_position:-10,bedrock_floor_position:0,sea_level:63,disable_mob_generation:!1,noise_caves_enabled:!0,aquifers_enabled:!0,deepslate_enabled:!0,noise:{min_y:0,height:256,density_factor:1,density_offset:-.46875,simplex_surface_noise:!0,random_density_offset:!0,amplified:!0,size_horizontal:1,size_vertical:2,sampling:{xz_scale:1,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-10,size:3,offset:0},bottom_slide:{target:-30,size:0,offset:0}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},"minecraft:caves":{name:"minecraft:caves",bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,disable_mob_generation:!0,noise_caves_enabled:!1,aquifers_enabled:!1,deepslate_enabled:!1,noise:{min_y:0,height:128,density_factor:0,density_offset:.019921875,simplex_surface_noise:!1,random_density_offset:!1,size_horizontal:1,size_vertical:2,sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60},top_slide:{target:120,size:3,offset:0},bottom_slide:{target:320,size:4,offset:-1}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},"minecraft:floating_islands":{name:"minecraft:floating_islands",bedrock_roof_position:-10,bedrock_floor_position:-10,sea_level:0,disable_mob_generation:!0,noise_caves_enabled:!1,aquifers_enabled:!1,deepslate_enabled:!1,noise:{min_y:0,height:128,density_factor:0,density_offset:0,simplex_surface_noise:!0,random_density_offset:!1,island_noise_override:!0,size_horizontal:2,size_vertical:1,sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-3e3,size:64,offset:-46},bottom_slide:{target:-30,size:7,offset:1}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}}})}}(Qs);var ec={};Object.defineProperty(ec,"__esModule",{value:!0}),ec.initConditionSchemas=void 0;const tc=Ce,rc=Qs;ec.initConditionSchemas=function(e,t){const r=tc.Reference.bind(void 0,e),o=tc.StringNode.bind(void 0,t);e.register("predicate",tc.ObjectOrList(r("condition"),{choiceContext:"condition"})),e.register("condition",tc.Mod(tc.ObjectNode({condition:o({validator:"resource",params:{pool:"loot_condition_type"}}),[tc.Switch]:[{push:"condition"}],[tc.Case]:rc.ConditionCases()},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:entity_properties",entity:"this"})}))};var oc={};Object.defineProperty(oc,"__esModule",{value:!0}),oc.initDimensionSchemas=void 0;const ic=Ce,nc=Qs;oc.initDimensionSchemas=function(e,t){const r=ic.Reference.bind(void 0,e),o=ic.StringNode.bind(void 0,t),i=e=>ic.Mod(e,{enabled:e=>void 0===e.push("preset").get()});e.register("dimension",ic.Mod(ic.ObjectNode({type:nc.DimensionTypePresets(r("dimension_type")),generator:ic.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/chunk_generator"}}),[ic.Switch]:[{push:"type"}],[ic.Case]:{"minecraft:noise":{seed:ic.NumberNode({integer:!0}),settings:nc.NoiseSettingsPresets(r("noise_settings")),biome_source:ic.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/biome_source"}}),[ic.Switch]:[{push:"type"}],[ic.Case]:{"minecraft:fixed":{biome:o({validator:"resource",params:{pool:"$worldgen/biome"}})},"minecraft:multi_noise":{seed:ic.NumberNode({integer:!0}),preset:ic.Opt(o({enum:["nether"]})),altitude_noise:i(r("generator_biome_noise")),temperature_noise:i(r("generator_biome_noise")),humidity_noise:i(r("generator_biome_noise")),weirdness_noise:i(r("generator_biome_noise")),biomes:i(ic.Mod(ic.ListNode(r("generator_biome")),{default:()=>[{biome:"minecraft:plains"}]}))},"minecraft:checkerboard":{scale:ic.Opt(ic.NumberNode({integer:!0,min:0,max:62})),biomes:ic.ListNode(o({validator:"resource",params:{pool:"$worldgen/biome"}}))},"minecraft:the_end":{seed:ic.NumberNode({integer:!0})},"minecraft:vanilla_layered":{seed:ic.NumberNode({integer:!0}),large_biomes:ic.Opt(ic.BooleanNode()),legacy_biome_init_layer:ic.Opt(ic.BooleanNode())}}},{category:"predicate",disableSwitchContext:!0})},"minecraft:flat":{settings:ic.ObjectNode({biome:ic.Opt(o({validator:"resource",params:{pool:"$worldgen/biome"}})),lakes:ic.Opt(ic.BooleanNode()),features:ic.Opt(ic.BooleanNode()),layers:ic.ListNode(r("generator_layer")),structures:r("generator_structures")})}}},{disableSwitchContext:!0})},{category:"pool",context:"dimension"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:fixed",seed:e,biome:"minecraft:plains"},settings:"minecraft:overworld"}}}})),e.register("generator_biome",ic.Mod(ic.ObjectNode({biome:o({validator:"resource",params:{pool:"$worldgen/biome"}}),parameters:ic.ObjectNode({altitude:ic.NumberNode(),temperature:ic.NumberNode(),humidity:ic.NumberNode(),weirdness:ic.NumberNode(),offset:ic.NumberNode()})},{context:"generator_biome"}),{default:()=>({biome:"minecraft:plains",parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}})})),e.register("generator_biome_noise",ic.Mod(ic.ObjectNode({firstOctave:ic.NumberNode({integer:!0}),amplitudes:ic.ListNode(ic.NumberNode())},{context:"generator_biome_noise"}),{default:()=>({firstOctave:-7,amplitudes:[1,1]})}))};var ac={};Object.defineProperty(ac,"__esModule",{value:!0}),ac.initDimensionTypeSchemas=void 0;const sc=Ce,cc=Qs;ac.initDimensionTypeSchemas=function(e,t){const r=sc.StringNode.bind(void 0,t);e.register("dimension_type",sc.Mod(sc.ObjectNode({name:sc.Mod(r({validator:"resource",params:{pool:"$dimension_type",isDefinition:!0}}),{enabled:e=>e.getArray().length>0}),ultrawarm:sc.BooleanNode(),natural:sc.BooleanNode(),piglin_safe:sc.BooleanNode(),respawn_anchor_works:sc.BooleanNode(),bed_works:sc.BooleanNode(),has_raids:sc.BooleanNode(),has_skylight:sc.BooleanNode(),has_ceiling:sc.BooleanNode(),coordinate_scale:sc.NumberNode({min:1e-5,max:3e7}),ambient_light:sc.NumberNode(),fixed_time:sc.Opt(sc.NumberNode({integer:!0})),logical_height:sc.NumberNode({integer:!0,min:0,max:4096}),effects:sc.Opt(r({enum:["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]})),infiniburn:r({validator:"resource",params:{pool:"$tag/block"}}),min_y:sc.NumberNode({integer:!0,min:-2048,max:2047}),height:sc.NumberNode({integer:!0,min:0,max:4096})},{context:"dimension_type"}),(e=>({default:()=>cc.DefaultDimensionType,validate:(t,r,o,i)=>((null==(r=e.validate(t,r,o,i))?void 0:r.min_y)+(null==r?void 0:r.height)>2047&&o.add(t.push("height"),"error.min_y_plus_height",2047),(null==r?void 0:r.logical_height)>(null==r?void 0:r.height)&&o.add(t.push("logical_height"),"error.logical_height"),(null==r?void 0:r.height)%16!=0&&o.add(t.push("height"),"error.height_multiple",16),(null==r?void 0:r.min_y)%16!=0&&o.add(t.push("min_y"),"error.min_y_multiple",16),r)}))))};var lc={};Object.defineProperty(lc,"__esModule",{value:!0}),lc.initItemModifierSchemas=void 0;const dc=Ce,_c=Qs;lc.initItemModifierSchemas=function(e,t){const r=dc.Reference.bind(void 0,e),o=dc.StringNode.bind(void 0,t);e.register("item_modifier",dc.ObjectOrList(r("function"),{choiceContext:"function"}));const i={conditions:dc.Opt(dc.ListNode(r("condition")))};e.register("function",dc.Mod(dc.ObjectNode({function:o({validator:"resource",params:{pool:"loot_function_type"}}),[dc.Switch]:[{push:"function"}],[dc.Case]:_c.FunctionCases(i)},{category:"function",context:"function"}),{default:()=>[{function:"minecraft:set_count",count:1}]}))};var mc={},pc={};Object.defineProperty(pc,"__esModule",{value:!0}),pc.LootFunctions=pc.LootConditions=pc.LootCopySources=pc.LootEntitySources=pc.LootTableTypes=void 0,pc.LootTableTypes=new Map([["minecraft:advancement_entity",{requires:[7,8],allows:[]}],["minecraft:advancement_reward",{requires:[7,8],allows:[]}],["minecraft:barter",{requires:[8],allows:[]}],["minecraft:block",{requires:[1,7,9],allows:[0,4,8]}],["minecraft:chest",{requires:[7],allows:[8]}],["minecraft:command",{requires:[7],allows:[8]}],["minecraft:empty",{requires:[],allows:[]}],["minecraft:entity",{requires:[2,7,8],allows:[3,5,6]}],["minecraft:fishing",{requires:[7,9],allows:[8]}],["minecraft:generic",{requires:[2,0,1,3,4,5,6,7,8,9],allows:[]}],["minecraft:gift",{requires:[7,8],allows:[]}],["minecraft:selector",{requires:[7],allows:[8]}]]),pc.LootEntitySources=new Map([["direct_killer",[3]],["killer",[5]],["killer_player",[5]],["this",[8]]]),pc.LootCopySources=new Map([["block_entity",[0]],["killer",[5]],["killer_player",[5]],["this",[8]]]),pc.LootConditions=new Map([["minecraft:alternative",[]],["minecraft:block_state_property",[1]],["minecraft:damage_source_properties",[2]],["minecraft:entity_properties",[7]],["minecraft:entity_scores",[]],["minecraft:inverted",[]],["minecraft:killed_by_player",[6]],["minecraft:location_check",[]],["minecraft:match_tool",[9]],["minecraft:random_chance",[]],["minecraft:random_chance_with_looting",[5]],["minecraft:reference",[]],["minecraft:survives_explosion",[4]],["minecraft:table_bonus",[9]],["minecraft:time_check",[]],["minecraft:weather_check",[]]]),pc.LootFunctions=new Map([["minecraft:apply_bonus",[9]],["minecraft:copy_name",[]],["minecraft:copy_nbt",[]],["minecraft:copy_state",[1]],["minecraft:enchant_randomly",[]],["minecraft:enchant_with_levels",[]],["minecraft:exploration_map",[7]],["minecraft:explosion_decay",[]],["minecraft:fill_player_head",[]],["minecraft:furnace_smelt",[]],["minecraft:limit_count",[]],["minecraft:looting_enchant",[5]],["minecraft:set_attributes",[]],["minecraft:set_banner_pattern",[]],["minecraft:set_contents",[]],["minecraft:set_count",[]],["minecraft:set_damage",[]],["minecraft:set_loot_table",[]],["minecraft:set_lore",[]],["minecraft:set_name",[]],["minecraft:set_nbt",[]],["minecraft:set_stew_effect",[]]]),Object.defineProperty(mc,"__esModule",{value:!0}),mc.initLootTableSchemas=void 0;const uc=Ce,fc=pc,hc=Qs;mc.initLootTableSchemas=function(e,t){const r=uc.Reference.bind(void 0,e),o=uc.StringNode.bind(void 0,t),i={conditions:uc.Opt(uc.ListNode(r("loot_condition")))},n=s({functions:uc.Opt(uc.ListNode(r("loot_function")))},i);function a(e,r,o){const i=[],n=o=>t.get(r).filter((t=>{var r;return(null!==(r=e.get(t))&&void 0!==r?r:[]).every((e=>o.includes(e)))}));for(const[t,{allows:a,requires:s}]of fc.LootTableTypes){const e=[...a,...s];i.push({match:e=>e.getModel().get(new uc.Path(["type"]))===t,node:o(n(e))})}return i.push({match:e=>!0,node:o(r)}),uc.SwitchNode(i)}const c=a(fc.LootConditions,"loot_condition_type",(e=>o({validator:"resource",params:{pool:e instanceof Array?e:"loot_condition_type"}}))),l=a(fc.LootFunctions,"loot_function_type",(e=>o({validator:"resource",params:{pool:e instanceof Array?e:"loot_function_type"}}))),d=a(fc.LootEntitySources,"entity_source",(e=>o({enum:e}))),_=a(fc.LootCopySources,"copy_source",(e=>o({enum:e})));e.register("loot_table",uc.Mod(uc.ObjectNode({type:uc.Opt(o({validator:"resource",params:{pool:t.get("loot_context_type")}})),pools:uc.Opt(uc.ListNode(uc.Mod(uc.ObjectNode(s({rolls:r("number_provider"),bonus_rolls:uc.Opt(r("number_provider")),entries:uc.ListNode(r("loot_entry"))},n),{category:"pool",context:"loot_pool"}),{default:()=>({rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]})}))),functions:uc.Opt(uc.ListNode(r("loot_function")))},{context:"loot_table"}),{default:()=>({pools:[{rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]}]})}));const m={enabled:e=>{var t;return(null===(t=e.pop().get())||void 0===t?void 0:t.length)>1&&!["minecraft:alternatives","minecraft:group","minecraft:sequence"].includes(e.push("type").get())}};e.register("loot_entry",uc.Mod(uc.ObjectNode({type:o({validator:"resource",params:{pool:"loot_pool_entry_type"}}),weight:uc.Opt(uc.Mod(uc.NumberNode({integer:!0,min:1}),m)),quality:uc.Opt(uc.Mod(uc.NumberNode({integer:!0}),m)),[uc.Switch]:[{push:"type"}],[uc.Case]:{"minecraft:alternatives":s({children:uc.ListNode(r("loot_entry"))},n),"minecraft:dynamic":s({name:o()},n),"minecraft:group":s({children:uc.ListNode(r("loot_entry"))},n),"minecraft:item":s({name:o({validator:"resource",params:{pool:"item"}})},n),"minecraft:loot_table":s({name:o({validator:"resource",params:{pool:"$loot_table"}})},n),"minecraft:sequence":s({children:uc.ListNode(r("loot_entry"))},n),"minecraft:tag":s({name:o({validator:"resource",params:{pool:"$tag/item"}}),expand:uc.Opt(uc.BooleanNode())},n)}},{context:"loot_entry"}),{default:()=>({type:"minecraft:item",name:"minecraft:stone"})})),e.register("loot_function",uc.Mod(uc.ObjectNode({function:l,[uc.Switch]:[{push:"function"}],[uc.Case]:hc.FunctionCases(i,_,d)},{category:"function",context:"function"}),{default:()=>({function:"minecraft:set_count",count:1})})),e.register("loot_condition",uc.Mod(uc.ObjectNode({condition:c,[uc.Switch]:[{push:"condition"}],[uc.Case]:hc.ConditionCases(d)},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:random_chance",chance:.5})})),e.register("attribute_modifier",uc.Mod(uc.ObjectNode({attribute:o({validator:"resource",params:{pool:"attribute"}}),name:o(),amount:r("number_provider"),operation:o({enum:["addition","multiply_base","multiply_total"]}),slot:uc.StringOrList(o({enum:"slot"}))},{context:"attribute_modifier"}),{default:()=>({attribute:"minecraft:generic.max_health",name:"",amount:1,operation:"addition",slot:"mainhand"})}))};var gc={};Object.defineProperty(gc,"__esModule",{value:!0}),gc.initPackMcmetaSchemas=void 0;const bc=Ce;gc.initPackMcmetaSchemas=function(e,t){e.register("pack_mcmeta",bc.Mod(bc.ObjectNode({pack:bc.Mod(bc.ObjectNode({pack_format:bc.Mod(bc.NumberNode({integer:!0,min:7,max:7}),{default:()=>7,canUpdate:(e,t)=>7!==t,update:()=>[{name:"pack_format",params:[7],newValue:7}]}),description:bc.Reference(e,"text_component")}),{default:()=>({pack_format:7,description:""})})}),{default:()=>({pack:{pack_format:7,description:""}})}))};var vc={};Object.defineProperty(vc,"__esModule",{value:!0}),vc.initPredicatesSchemas=void 0;const yc=Ce;vc.initPredicatesSchemas=function(e,t){const r=yc.Reference.bind(void 0,e),o=yc.StringNode.bind(void 0,t),i=yc.ChoiceNode([{type:"string",node:o(),change:e=>"boolean"==typeof e||"number"==typeof e?e.toString():""},{type:"number",node:yc.NumberNode(),change:e=>"string"==typeof e?parseInt(e):0},{type:"object",node:yc.ObjectNode({min:yc.Opt(yc.NumberNode({integer:!0})),max:yc.Opt(yc.NumberNode({integer:!0}))}),change:e=>"number"==typeof e?{min:e,max:e}:{}},{type:"boolean",node:yc.BooleanNode(),change:e=>"true"===e||1===e}]);e.register("item_predicate",yc.ObjectNode({items:yc.Opt(yc.ListNode(o({validator:"resource",params:{pool:"item"}}))),tag:yc.Opt(o({validator:"resource",params:{pool:"$tag/item"}})),count:r("int_bounds"),durability:r("int_bounds"),potion:yc.Opt(o({validator:"resource",params:{pool:"potion"}})),nbt:yc.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}})),enchantments:yc.Opt(yc.ListNode(r("enchantment_predicate")))},{context:"item"})),e.register("enchantment_predicate",yc.ObjectNode({enchantment:yc.Opt(o({validator:"resource",params:{pool:"enchantment"}})),levels:r("int_bounds")},{context:"enchantment"})),e.register("block_predicate",yc.ObjectNode({blocks:yc.Opt(yc.ListNode(o({validator:"resource",params:{pool:"block"}}))),tag:yc.Opt(o({validator:"resource",params:{pool:"$tag/block"}})),nbt:yc.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:block",id:["pop",{push:"block"}]}}})),state:yc.Opt(yc.MapNode(o(),i,{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},{context:"block"})),e.register("fluid_predicate",yc.ObjectNode({fluid:yc.Opt(o({validator:"resource",params:{pool:"fluid"}})),tag:yc.Opt(o({validator:"resource",params:{pool:"$tag/fluid"}})),state:yc.Opt(yc.MapNode(o(),i))},{context:"fluid"})),e.register("location_predicate",yc.ObjectNode({position:yc.Opt(yc.ObjectNode({x:r("float_bounds"),y:r("float_bounds"),z:r("float_bounds")})),biome:yc.Opt(o({validator:"resource",params:{pool:"$worldgen/biome"}})),feature:yc.Opt(o({enum:t.get("worldgen/structure_feature").map((e=>e.slice(10)))})),dimension:yc.Opt(o({validator:"resource",params:{pool:"$dimension"}})),light:yc.Opt(yc.ObjectNode({light:r("int_bounds")})),smokey:yc.Opt(yc.BooleanNode()),block:yc.Opt(r("block_predicate")),fluid:yc.Opt(r("fluid_predicate"))},{context:"location"})),e.register("statistic_predicate",yc.ObjectNode({type:o({validator:"resource",params:{pool:"stat_type"}}),stat:o(),value:r("int_bounds"),[yc.Switch]:[{push:"type"}],[yc.Case]:{"minecraft:mined":{stat:o({validator:"resource",params:{pool:"block"}})},"minecraft:crafted":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:used":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:broken":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:picked_up":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:dropped":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:killed":{stat:o({validator:"resource",params:{pool:"entity_type"}})},"minecraft:killed_by":{stat:o({validator:"resource",params:{pool:"entity_type"}})},"minecraft:custom":{stat:o({validator:"resource",params:{pool:"custom_stat"}})}}})),e.register("player_predicate",yc.ObjectNode({gamemode:yc.Opt(o({enum:"gamemode"})),level:r("int_bounds"),advancements:yc.Opt(yc.MapNode(o({validator:"resource",params:{pool:"$advancement"}}),yc.ChoiceNode([{type:"boolean",node:yc.BooleanNode(),change:e=>!0},{type:"object",node:yc.MapNode(o(),yc.BooleanNode())}]))),recipes:yc.Opt(yc.MapNode(o({validator:"resource",params:{pool:"$recipe"}}),yc.BooleanNode())),stats:yc.Opt(yc.ListNode(r("statistic_predicate"))),looking_at:yc.Opt(r("entity_predicate"))},{context:"player"})),e.register("status_effect_predicate",yc.ObjectNode({amplifier:r("int_bounds"),duration:r("int_bounds"),ambient:yc.Opt(yc.BooleanNode()),visible:yc.Opt(yc.BooleanNode())},{context:"status_effect"})),e.register("distance_predicate",yc.ObjectNode({x:r("float_bounds"),y:r("float_bounds"),z:r("float_bounds"),absolute:r("float_bounds"),horizontal:r("float_bounds")},{context:"distance"})),e.register("entity_predicate",yc.ObjectNode({type:yc.Opt(o({validator:"resource",params:{pool:"entity_type",allowTag:!0}})),nbt:yc.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:entity",id:["pop",{push:"type"}]}}})),team:yc.Opt(o({validator:"team"})),location:yc.Opt(r("location_predicate")),stepping_on:yc.Opt(r("location_predicate")),distance:yc.Opt(r("distance_predicate")),flags:yc.Opt(yc.ObjectNode({is_on_fire:yc.Opt(yc.BooleanNode()),is_sneaking:yc.Opt(yc.BooleanNode()),is_sprinting:yc.Opt(yc.BooleanNode()),is_swimming:yc.Opt(yc.BooleanNode()),is_baby:yc.Opt(yc.BooleanNode())})),equipment:yc.Opt(yc.MapNode(o({enum:"slot"}),r("item_predicate"))),player:yc.Opt(r("player_predicate")),vehicle:yc.Opt(r("entity_predicate")),passenger:yc.Opt(r("entity_predicate")),targeted_entity:yc.Opt(r("entity_predicate")),lightning_bolt:yc.Opt(yc.ObjectNode({blocks_set_on_fire:yc.Opt(r("int_bounds")),entity_struck:yc.Opt(r("entity_predicate"))})),fishing_hook:yc.Opt(yc.ObjectNode({in_open_water:yc.Opt(yc.BooleanNode())})),effects:yc.Opt(yc.MapNode(o({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},{context:"entity"})),e.register("damage_source_predicate",yc.ObjectNode({is_explosion:yc.Opt(yc.BooleanNode()),is_fire:yc.Opt(yc.BooleanNode()),is_magic:yc.Opt(yc.BooleanNode()),is_projectile:yc.Opt(yc.BooleanNode()),is_lightning:yc.Opt(yc.BooleanNode()),bypasses_armor:yc.Opt(yc.BooleanNode()),bypasses_invulnerability:yc.Opt(yc.BooleanNode()),bypasses_magic:yc.Opt(yc.BooleanNode()),source_entity:yc.Opt(r("entity_predicate")),direct_entity:yc.Opt(r("entity_predicate"))},{context:"damage_source"})),e.register("damage_predicate",yc.ObjectNode({dealt:r("float_bounds"),taken:r("float_bounds"),blocked:yc.Opt(yc.BooleanNode()),source_entity:yc.Opt(r("entity_predicate")),type:yc.Opt(r("damage_source_predicate"))},{context:"damage"}))};var Nc={};Object.defineProperty(Nc,"__esModule",{value:!0}),Nc.initRecipeSchemas=void 0;const Oc=Ce;Nc.initRecipeSchemas=function(e,t){const r=Oc.Reference.bind(void 0,e),o=Oc.StringNode.bind(void 0,t);e.register("recipe",Oc.Mod(Oc.ObjectNode({type:o({validator:"resource",params:{pool:"recipe_serializer"}}),[Oc.Switch]:[{push:"type"}],[Oc.Case]:{"minecraft:crafting_shaped":{group:Oc.Opt(o({enum:"recipe_group",additional:!0})),pattern:Oc.ListNode(o()),key:Oc.MapNode(o(),r("recipe_ingredient")),result:r("recipe_result")},"minecraft:crafting_shapeless":{group:Oc.Opt(o()),ingredients:Oc.ListNode(r("recipe_ingredient")),result:r("recipe_result")},"minecraft:smelting":{group:Oc.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:Oc.Opt(Oc.NumberNode()),cookingtime:Oc.Opt(Oc.Mod(Oc.NumberNode({integer:!0}),{default:()=>200}))},"minecraft:blasting":{group:Oc.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:Oc.Opt(Oc.NumberNode()),cookingtime:Oc.Opt(Oc.Mod(Oc.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:smoking":{group:Oc.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:Oc.Opt(Oc.NumberNode()),cookingtime:Oc.Opt(Oc.Mod(Oc.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:campfire_cooking":{group:Oc.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:Oc.Opt(Oc.NumberNode()),cookingtime:Oc.Opt(Oc.Mod(Oc.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:stonecutting":{group:Oc.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),count:Oc.NumberNode({integer:!0})},"minecraft:smithing":{group:Oc.Opt(o()),base:r("recipe_ingredient_object"),addition:r("recipe_ingredient_object"),result:r("recipe_result")}}},{context:"recipe",disableSwitchContext:!0}),{default:()=>({type:"minecraft:crafting_shaped"})})),e.register("recipe_ingredient",Oc.Mod(Oc.ChoiceNode([{type:"object",node:r("recipe_ingredient_object"),change:e=>e[0]},{type:"list",node:Oc.ListNode(r("recipe_ingredient_object")),change:e=>[e]}]),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_ingredient_object",Oc.Mod(Oc.ObjectNode({item:Oc.Opt(o({validator:"resource",params:{pool:"item"}})),tag:Oc.Opt(o({validator:"resource",params:{pool:"$tag/item"}}))}),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_result",Oc.Mod(Oc.ObjectNode({item:o({validator:"resource",params:{pool:"item"}}),count:Oc.Opt(Oc.Mod(Oc.NumberNode({integer:!0}),{default:()=>1}))}),{default:()=>({item:"minecraft:stone"})}))};var wc={};Object.defineProperty(wc,"__esModule",{value:!0}),wc.initTagsSchemas=void 0;const kc=Ce;wc.initTagsSchemas=function(e,t){const r=kc.StringNode.bind(void 0,t),o=e=>kc.Mod(kc.ObjectNode({replace:kc.Opt(kc.BooleanNode()),values:kc.ListNode(kc.ChoiceNode([{type:"string",node:r({validator:"resource",params:{pool:e,allowTag:!0}}),change:e=>e.id},{type:"object",node:kc.ObjectNode({id:r({validator:"resource",params:{pool:e,allowTag:!0,allowUnknown:!0}}),required:kc.BooleanNode()}),change:e=>({id:e})}]))},{context:"tag"}),{default:()=>({values:[]})});e.register("block_tag",o("block")),e.register("entity_type_tag",o("entity_type")),e.register("fluid_tag",o("fluid")),e.register("function_tag",o("$function")),e.register("game_event_tag",o("game_event")),e.register("item_tag",o("item"))};var xc={};Object.defineProperty(xc,"__esModule",{value:!0}),xc.initTextComponentSchemas=void 0;const Sc=Ce;xc.initTextComponentSchemas=function(e,t){const r=Sc.Reference.bind(void 0,e),o=Sc.StringNode.bind(void 0,t),i=e=>{var t;return e instanceof Array?i(e[0]):null!==(t=null==e?void 0:e.text)&&void 0!==t?t:"object"==typeof e?"":null==e?void 0:e.toString()};e.register("text_component",Sc.Mod(Sc.ChoiceNode([{type:"object",node:r("text_component_object"),change:e=>e instanceof Array?"object"==typeof e[0]?e[0]:{text:i(e[0])}:"object"==typeof e?e:{text:i(e)}},{type:"list",node:r("text_component_list"),change:e=>[e]},{type:"string",priority:1,node:o(),change:i},{type:"number",node:Sc.NumberNode(),change:e=>{const t=parseFloat(i(e));return isFinite(t)?t:e?1:0}},{type:"boolean",node:Sc.BooleanNode(),change:e=>{const t=i(e);return"true"===t||"false"===t?"true"===t:!!t}}],{context:"text_component"}),{default:()=>({text:""})}));const n={color:Sc.Opt(o()),font:Sc.Opt(o()),bold:Sc.Opt(Sc.BooleanNode()),italic:Sc.Opt(Sc.BooleanNode()),underlined:Sc.Opt(Sc.BooleanNode()),strikethrough:Sc.Opt(Sc.BooleanNode()),obfuscated:Sc.Opt(Sc.BooleanNode()),insertion:Sc.Opt(o()),clickEvent:Sc.Opt(Sc.ObjectNode({action:o({enum:["open_url","open_file","run_command","suggest_command","change_page","copy_to_clipboard"]}),[Sc.Switch]:[{push:"action"}],[Sc.Case]:{change_page:{value:o()},copy_to_clipboard:{value:o()},open_file:{value:o()},open_url:{value:o()},run_command:{value:o({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})},suggest_command:{value:o({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})}}})),hoverEvent:Sc.Opt(Sc.ObjectNode({action:o({enum:["show_text","show_item","show_entity"]}),[Sc.Switch]:[{push:"action"}],[Sc.Case]:{show_text:{value:Sc.Opt(r("text_component")),contents:Sc.Opt(r("text_component"))},show_item:{value:Sc.Opt(o({validator:"nbt",params:{module:"util::InventoryItem"}})),contents:Sc.Opt(Sc.ObjectNode({id:o({validator:"resource",params:{pool:"item"}}),count:Sc.Opt(Sc.NumberNode({integer:!0})),tag:Sc.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"id"}]}}}))}))},show_entity:{value:Sc.Opt(Sc.ObjectNode({name:Sc.Opt(o()),type:Sc.Opt(o()),id:Sc.Opt(o())})),contents:Sc.Opt(Sc.Mod(Sc.ObjectNode({name:Sc.Opt(r("text_component")),type:o({validator:"resource",params:{pool:"entity_type"}}),id:o({validator:"uuid"})}),{default:()=>({type:"minecraft:pig",id:"00000001-0001-0001-0001-000000000001"})}))}}})),extra:Sc.Opt(r("text_component_list"))};e.register("text_component_object",Sc.Mod(Sc.ChoiceNode([{type:"text",match:e=>"object"==typeof e,change:e=>({text:""}),priority:-1,node:Sc.ObjectNode(s({text:o()},n))},{type:"translation",match:e=>void 0!==(null==e?void 0:e.translate),change:e=>({translate:""}),node:Sc.ObjectNode(s({translate:o(),with:Sc.Opt(r("text_component_list"))},n))},{type:"score",match:e=>void 0!==(null==e?void 0:e.score),change:e=>({score:{}}),node:Sc.ObjectNode(s({score:Sc.ObjectNode({name:o({validator:"entity",params:{amount:"single",type:"entities",isScoreHolder:!0}}),objective:o({validator:"objective"}),value:Sc.Opt(o())})},n))},{type:"selector",match:e=>void 0!==(null==e?void 0:e.selector),change:e=>({selector:""}),node:Sc.ObjectNode(s({selector:o({validator:"entity",params:{amount:"multiple",type:"entities"}}),separator:Sc.Opt(r("text_component"))},n))},{type:"keybind",match:e=>void 0!==(null==e?void 0:e.keybind),change:e=>({keybind:""}),node:Sc.ObjectNode(s({keybind:o({enum:"keybind",additional:!0})},n))},{type:"nbt",match:e=>void 0!==(null==e?void 0:e.nbt),change:e=>({nbt:""}),node:Sc.ObjectNode(s({nbt:o({validator:"nbt_path"}),block:Sc.Opt(o({validator:"vector",params:{dimension:3,isInteger:!0}})),entity:Sc.Opt(o({validator:"entity",params:{amount:"multiple",type:"entities"}})),storage:Sc.Opt(o({validator:"resource",params:{pool:"$storage"}})),interpret:Sc.Opt(Sc.BooleanNode()),separator:Sc.Opt(r("text_component"))},n))}],{context:"text_component_object",choiceContext:"text_component.object"}),{default:()=>({text:""})})),e.register("text_component_list",Sc.Mod(Sc.ListNode(r("text_component")),{default:()=>[{text:""}]}))};var jc={},Mc={};Object.defineProperty(Mc,"__esModule",{value:!0}),Mc.initBiomeSchemas=void 0;const Pc=Ce;Mc.initBiomeSchemas=function(e,t){const r=Pc.StringNode.bind(void 0,t);e.register("biome",Pc.Mod(Pc.ObjectNode({surface_builder:r({validator:"resource",params:{pool:"$worldgen/configured_surface_builder"}}),depth:Pc.NumberNode(),scale:Pc.NumberNode(),temperature:Pc.NumberNode(),downfall:Pc.NumberNode(),precipitation:r({enum:["none","rain","snow"]}),temperature_modifier:Pc.Opt(r({enum:["none","frozen"]})),category:r({enum:"biome_category"}),player_spawn_friendly:Pc.Opt(Pc.BooleanNode()),creature_spawn_probability:Pc.Opt(Pc.NumberNode({min:0,max:1})),effects:Pc.ObjectNode({sky_color:Pc.NumberNode({color:!0}),fog_color:Pc.NumberNode({color:!0}),water_color:Pc.NumberNode({color:!0}),water_fog_color:Pc.NumberNode({color:!0}),grass_color:Pc.Opt(Pc.NumberNode({color:!0})),foliage_color:Pc.Opt(Pc.NumberNode({color:!0})),grass_color_modifier:Pc.Opt(r({enum:["none","dark_forest","swamp"]})),ambient_sound:Pc.Opt(r()),mood_sound:Pc.Opt(Pc.ObjectNode({sound:r(),tick_delay:Pc.NumberNode({integer:!0}),block_search_extent:Pc.NumberNode({integer:!0}),offset:Pc.NumberNode()})),additions_sound:Pc.Opt(Pc.ObjectNode({sound:r(),tick_chance:Pc.NumberNode({min:0,max:1})})),music:Pc.Opt(Pc.ObjectNode({sound:r(),min_delay:Pc.NumberNode({integer:!0,min:0}),max_delay:Pc.NumberNode({integer:!0,min:0}),replace_current_music:Pc.BooleanNode()})),particle:Pc.Opt(Pc.ObjectNode({options:Pc.ObjectNode({type:r()}),probability:Pc.NumberNode({min:0,max:1})}))}),starts:Pc.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_structure_feature"}})),spawners:Pc.MapNode(r({enum:["monster","creature","ambient","underground_water_creature","water_creature","water_ambient","misc"]}),Pc.Mod(Pc.ListNode(Pc.ObjectNode({type:r({validator:"resource",params:{pool:"entity_type"}}),weight:Pc.NumberNode({integer:!0}),minCount:Pc.NumberNode({integer:!0}),maxCount:Pc.NumberNode({integer:!0})})),{category:()=>"pool",default:()=>[{type:"minecraft:bat",weight:1}]})),spawn_costs:Pc.MapNode(r({validator:"resource",params:{pool:"entity_type"}}),Pc.Mod(Pc.ObjectNode({energy_budget:Pc.NumberNode(),charge:Pc.NumberNode()},{category:"function"}),{default:()=>({energy_budget:.12,charge:1})})),carvers:Pc.MapNode(r({enum:["air","liquid"]}),Pc.Mod(Pc.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_carver"}})),{default:()=>["minecraft:cave"]})),features:Pc.ListNode(Pc.Mod(Pc.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_feature"}})),{category:()=>"predicate"}),{maxLength:10})},{context:"biome"}),{default:()=>({surface_builder:"minecraft:grass",depth:.125,scale:.05,temperature:.8,downfall:.4,precipitation:"rain",category:"plains",effects:{sky_color:7907327,fog_color:12638463,water_color:4159204,water_fog_color:329011}})}))};var Ac={};Object.defineProperty(Ac,"__esModule",{value:!0}),Ac.initCarverSchemas=void 0;const Lc=Ce,Bc=Qs;Ac.initCarverSchemas=function(e,t){const r=Lc.Reference.bind(void 0,e),o=Lc.StringNode.bind(void 0,t),i={vertical_rotation:Bc.FloatProvider(),shape:Lc.ObjectNode({distance_factor:Bc.FloatProvider(),thickness:Bc.FloatProvider(),width_smoothness:Lc.NumberNode({integer:!0,min:0}),horizontal_radius_factor:Bc.FloatProvider(),vertical_radius_default_factor:Lc.NumberNode(),vertical_radius_center_factor:Lc.NumberNode()})},n={horizontal_radius_multiplier:Bc.FloatProvider(),vertical_radius_multiplier:Bc.FloatProvider(),floor_level:Bc.FloatProvider({min:-1,max:1})};e.register("configured_carver",Lc.Mod(Lc.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/carver"}}),config:Lc.ObjectNode({probability:Lc.NumberNode({min:0,max:1}),y:r("height_provider"),yScale:Bc.FloatProvider(),lava_level:r("vertical_anchor"),aquifers_enabled:Lc.BooleanNode(),debug_settings:Lc.Opt(Lc.ObjectNode({debug_mode:Lc.Opt(Lc.BooleanNode()),air_state:Lc.Opt(r("block_state")),water_state:Lc.Opt(r("block_state")),lava_state:Lc.Opt(r("block_state")),barrier_state:Lc.Opt(r("block_state"))})),[Lc.Switch]:["pop",{push:"type"}],[Lc.Case]:{"minecraft:canyon":i,"minecraft:cave":n,"minecraft:nether_cave":n}})},{context:"carver"}),{default:()=>({type:"minecraft:cave",config:{probability:.1}})}))};var Cc={};Object.defineProperty(Cc,"__esModule",{value:!0}),Cc.initDecoratorSchemas=void 0;const Tc=Ce,Ic=Qs;Cc.initDecoratorSchemas=function(e,t){const r=Tc.Reference.bind(void 0,e),o=Tc.StringNode.bind(void 0,t),i={count:Ic.IntProvider({min:0,max:256})};e.register("configured_decorator",Tc.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/decorator"}}),config:Tc.ObjectNode({[Tc.Switch]:["pop",{push:"type"}],[Tc.Case]:{"minecraft:carving_mask":{step:o({enum:"generation_step"})},"minecraft:cave_surface":{surface:o({enum:["floor","ceiling"]}),floor_to_ceiling_search_range:Tc.NumberNode({integer:!0})},"minecraft:chance":{chance:Tc.NumberNode({integer:!0,min:0})},"minecraft:count":i,"minecraft:count_extra":{count:Tc.NumberNode({integer:!0,min:0}),extra_count:Tc.NumberNode({integer:!0,min:0}),extra_chance:Tc.NumberNode({min:0,max:1})},"minecraft:count_multilayer":i,"minecraft:count_noise":{noise_level:Tc.NumberNode(),below_noise:Tc.NumberNode({integer:!0}),above_noise:Tc.NumberNode({integer:!0})},"minecraft:count_noise_biased":{noise_to_count_ratio:Tc.NumberNode({integer:!0}),noise_factor:Tc.NumberNode(),noise_offset:Tc.Opt(Tc.NumberNode())},"minecraft:decorated":{outer:r("configured_decorator"),inner:r("configured_decorator")},"minecraft:heightmap":{heightmap:o({enum:"heightmap_type"})},"minecraft:heightmap_spread_double":{heightmap:o({enum:"heightmap_type"})},"minecraft:lava_lake":{chance:Tc.NumberNode({integer:!0,min:0})},"minecraft:range":{height:r("height_provider")},"minecraft:water_depth_threshold":{max_water_depth:Tc.NumberNode({integer:!0})}}},{context:"decorator",category:"predicate"})},{context:"decorator",category:"predicate"}))};var zc={},Rc={};Object.defineProperty(Rc,"__esModule",{value:!0}),Rc.initProcessorListSchemas=Rc.Processors=void 0;const Fc=Ce;Rc.initProcessorListSchemas=function(e,t){const r=Fc.Reference.bind(void 0,e),o=Fc.StringNode.bind(void 0,t);Rc.Processors=Fc.ChoiceNode([{type:"string",node:o({validator:"resource",params:{pool:"$worldgen/processor_list"}}),change:e=>{}},{type:"object",node:r("processor_list"),change:e=>({processors:[{processor_type:"minecraft:nop"}]})}]),e.register("processor_list",Fc.Mod(Fc.ObjectNode({processors:Fc.ListNode(r("processor"))},{context:"processor_list"}),{default:()=>({processors:[{processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]}]})})),e.register("processor",Fc.Mod(Fc.ObjectNode({processor_type:o({validator:"resource",params:{pool:"worldgen/structure_processor"}}),[Fc.Switch]:[{push:"processor_type"}],[Fc.Case]:{"minecraft:block_age":{mossiness:Fc.NumberNode()},"minecraft:block_ignore":{blocks:Fc.ListNode(r("block_state"))},"minecraft:block_rot":{integrity:Fc.NumberNode({min:0,max:1})},"minecraft:gravity":{heightmap:o({enum:"heightmap_type"}),offset:Fc.NumberNode({integer:!0})},"minecraft:protected_blocks":{value:o({validator:"resource",params:{pool:"$tag/block"}})},"minecraft:rule":{rules:Fc.ListNode(r("processor_rule"))}}},{category:"function",context:"processor"}),{default:()=>({processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]})})),e.register("processor_rule",Fc.Mod(Fc.ObjectNode({position_predicate:Fc.Opt(r("pos_rule_test")),location_predicate:r("rule_test"),input_predicate:r("rule_test"),output_state:r("block_state"),output_nbt:Fc.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:block"}}}))},{category:"predicate",context:"processor_rule"}),{default:()=>({location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}})}));const i={min_dist:Fc.Opt(Fc.NumberNode({min:0,max:255,integer:!0})),max_dist:Fc.Opt(Fc.NumberNode({min:0,max:255,integer:!0})),min_chance:Fc.Opt(Fc.NumberNode({min:0,max:1})),max_chance:Fc.Opt(Fc.NumberNode({min:0,max:1}))};e.register("pos_rule_test",Fc.ObjectNode({predicate_type:o({validator:"resource",params:{pool:"pos_rule_test"}}),[Fc.Switch]:[{push:"predicate_type"}],[Fc.Case]:{"minecraft:axis_aligned_linear_pos":s({axis:o({enum:["x","y","z"]})},i),"minecraft:linear_pos":i}},{context:"pos_rule_test",disableSwitchContext:!0})),e.register("rule_test",Fc.ObjectNode({predicate_type:o({validator:"resource",params:{pool:"rule_test"}}),[Fc.Switch]:[{push:"predicate_type"}],[Fc.Case]:{"minecraft:block_match":{block:o({validator:"resource",params:{pool:"block"}})},"minecraft:blockstate_match":{block_state:r("block_state")},"minecraft:random_block_match":{block:o({validator:"resource",params:{pool:"block"}}),probability:Fc.NumberNode({min:0,max:1})},"minecraft:random_blockstate_match":{block_state:r("block_state"),probability:Fc.NumberNode({min:0,max:1})},"minecraft:tag_match":{tag:o({validator:"resource",params:{pool:"$tag/block"}})}}},{context:"rule_test",disableSwitchContext:!0}))},Object.defineProperty(zc,"__esModule",{value:!0}),zc.initFeatureSchemas=void 0;const Ec=Ce,Dc=Qs,$c=Rc;zc.initFeatureSchemas=function(e,t){const r=Ec.Reference.bind(void 0,e),o=Ec.StringNode.bind(void 0,t),i={can_replace:Ec.Opt(Ec.BooleanNode()),project:Ec.Opt(Ec.BooleanNode()),need_water:Ec.Opt(Ec.BooleanNode()),xspread:Ec.Opt(Ec.NumberNode({integer:!0,min:0})),yspread:Ec.Opt(Ec.NumberNode({integer:!0,min:0})),zspread:Ec.Opt(Ec.NumberNode({integer:!0,min:0})),tries:Ec.Opt(Ec.NumberNode({integer:!0,min:1})),state_provider:r("block_state_provider"),block_placer:r("block_placer"),whitelist:Ec.ListNode(r("block_state")),blacklist:Ec.ListNode(r("block_state"))},n={state:r("block_state"),radius:Dc.IntProvider({min:0,max:8}),half_height:Ec.NumberNode({integer:!0,min:0,max:4}),targets:Ec.ListNode(r("block_state"))},a={cap_provider:r("block_state_provider"),stem_provider:r("block_state_provider"),foliage_radius:Ec.Opt(Ec.NumberNode({integer:!0}))},s=Ec.ObjectNode({target:r("rule_test"),state:r("block_state")}),c={size:Ec.NumberNode({integer:!0,min:0,max:64}),discard_chance_on_air_exposure:Ec.NumberNode({min:0,max:1}),targets:Ec.ListNode(s)},l=Ec.ChoiceNode([{type:"string",node:o({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:r("configured_feature")}],{choiceContext:"feature"}),d={surface:o({enum:["floor","ceiling"]}),depth:Dc.IntProvider({min:1,max:128}),vertical_range:Ec.NumberNode({integer:!0,min:1,max:256}),extra_bottom_block_chance:Ec.NumberNode({min:0,max:1}),extra_edge_column_chance:Ec.NumberNode({min:0,max:1}),vegetation_chance:Ec.NumberNode({min:0,max:1}),xz_radius:Dc.IntProvider(),replaceable:o({validator:"resource",params:{pool:"$tag/block"}}),ground_state:r("block_state_provider"),vegetation_feature:l};e.register("configured_feature",Ec.Mod(Ec.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/feature"}}),config:Ec.ObjectNode({[Ec.Switch]:["pop",{push:"type"}],[Ec.Case]:{"minecraft:bamboo":{probability:Ec.NumberNode({min:0,max:1})},"minecraft:basalt_columns":{reach:Dc.IntProvider({min:0,max:3}),height:Dc.IntProvider({min:1,max:10})},"minecraft:block_pile":{state_provider:r("block_state_provider")},"minecraft:decorated":{decorator:r("configured_decorator"),feature:l},"minecraft:decorated_flower":{decorator:r("configured_decorator"),feature:l},"minecraft:delta_feature":{contents:r("block_state"),rim:r("block_state"),size:Dc.IntProvider({min:0,max:16}),rim_size:Dc.IntProvider({min:0,max:16})},"minecraft:disk":n,"minecraft:dripstone_cluster":{floor_to_ceiling_search_range:Ec.NumberNode({integer:!0,min:1,max:512}),height:Dc.IntProvider({min:0,max:128}),radius:Dc.IntProvider({min:0,max:128}),max_stalagmite_stalactite_height_diff:Ec.NumberNode({integer:!0,min:0,max:64}),height_deviation:Ec.NumberNode({integer:!0,min:1,max:64}),dripstone_block_layer_thickness:Dc.IntProvider({min:0,max:128}),density:Dc.FloatProvider({min:0,max:2}),wetness:Dc.FloatProvider({min:0,max:2}),chance_of_dripstone_column_at_max_distance_from_center:Ec.NumberNode({min:0,max:1}),max_distance_from_edge_affecting_chance_of_dripstone_column:Ec.NumberNode({integer:!0,min:1,max:64}),max_distance_from_center_affecting_height_bias:Ec.NumberNode({integer:!0,min:1,max:64})},"minecraft:end_gateway":{exact:Ec.BooleanNode(),exit:Ec.Opt(r("block_pos"))},"minecraft:end_spike":{crystal_invulnerable:Ec.Opt(Ec.BooleanNode()),crystal_beam_target:Ec.Opt(r("block_pos")),spikes:Ec.ListNode(Ec.ObjectNode({centerX:Ec.Opt(Ec.NumberNode({integer:!0})),centerZ:Ec.Opt(Ec.NumberNode({integer:!0})),radius:Ec.Opt(Ec.NumberNode({integer:!0})),height:Ec.Opt(Ec.NumberNode({integer:!0})),guarded:Ec.Opt(Ec.BooleanNode())}))},"minecraft:fill_layer":{state:r("block_state"),height:Ec.NumberNode({integer:!0,min:0,max:255})},"minecraft:flower":i,"minecraft:forest_rock":{state:r("block_state")},"minecraft:fossil":{max_empty_corners_allowed:Ec.NumberNode({integer:!0,min:0,max:7}),fossil_structures:Ec.ListNode(o({validator:"resource",params:{pool:"$structure"}})),overlay_structures:Ec.ListNode(o({validator:"resource",params:{pool:"$structure"}})),fossil_processors:$c.Processors,overlay_processors:$c.Processors},"minecraft:geode":{blocks:Ec.ObjectNode({filling_provider:r("block_state_provider"),inner_layer_provider:r("block_state_provider"),alternate_inner_layer_provider:r("block_state_provider"),middle_layer_provider:r("block_state_provider"),outer_layer_provider:r("block_state_provider"),inner_placements:Ec.ListNode(r("block_state")),cannot_replace:o({validator:"resource",params:{pool:"$tag/block"}}),invalid_blocks:o({validator:"resource",params:{pool:"$tag/block"}})}),layers:Ec.ObjectNode({filling:Ec.Opt(Ec.NumberNode({min:.01,max:50})),inner_layer:Ec.Opt(Ec.NumberNode({min:.01,max:50})),middle_layer:Ec.Opt(Ec.NumberNode({min:.01,max:50})),outer_layer:Ec.Opt(Ec.NumberNode({min:.01,max:50}))}),crack:Ec.ObjectNode({generate_crack_chance:Ec.Opt(Ec.NumberNode({min:0,max:1})),base_crack_size:Ec.Opt(Ec.NumberNode({min:0,max:5})),crack_point_offset:Ec.Opt(Ec.NumberNode({min:0,max:10,integer:!0}))}),noise_multiplier:Ec.Opt(Ec.NumberNode({min:0,max:1})),use_potential_placements_chance:Ec.Opt(Ec.NumberNode({min:0,max:1})),use_alternate_layer0_chance:Ec.Opt(Ec.NumberNode({min:0,max:1})),placements_require_layer0_alternate:Ec.Opt(Ec.BooleanNode()),outer_wall_distance:Ec.Opt(Dc.IntProvider({min:1,max:20})),distribution_points:Ec.Opt(Dc.IntProvider({min:1,max:20})),point_offset:Ec.Opt(Dc.IntProvider({min:0,max:10})),min_gen_offset:Ec.Opt(Ec.NumberNode({integer:!0})),max_gen_offset:Ec.Opt(Ec.NumberNode({integer:!0})),invalid_blocks_threshold:Ec.NumberNode({integer:!0})},"minecraft:glow_lichen":{search_range:Ec.Opt(Ec.NumberNode({min:1,max:64,integer:!0})),chance_of_spreading:Ec.Opt(Ec.NumberNode({min:0,max:1})),can_place_on_floor:Ec.Opt(Ec.BooleanNode()),can_place_on_ceiling:Ec.Opt(Ec.BooleanNode()),can_place_on_wall:Ec.Opt(Ec.BooleanNode()),can_be_placed_on:Ec.ListNode(r("block_state"))},"minecraft:growing_plant":{direction:o({enum:["up","down","north","east","south","west"]}),allow_water:Ec.BooleanNode(),height_distribution:Ec.ListNode(Ec.ObjectNode({weight:Ec.NumberNode({integer:!0}),data:Dc.IntProvider()})),body_provider:r("block_state_provider"),head_provider:r("block_state_provider")},"minecraft:huge_brown_mushroom":a,"minecraft:huge_fungus":{hat_state:r("block_state"),decor_state:r("block_state"),stem_state:r("block_state"),valid_base_block:r("block_state"),planted:Ec.Opt(Ec.BooleanNode())},"minecraft:huge_red_mushroom":a,"minecraft:ice_patch":n,"minecraft:iceberg":{state:r("block_state")},"minecraft:lake":{state:r("block_state")},"minecraft:large_dripstone":{floor_to_ceiling_search_range:Ec.Opt(Ec.NumberNode({integer:!0,min:1,max:512})),column_radius:Dc.IntProvider({min:0,max:60}),height_scale:Dc.FloatProvider({min:0,max:20}),max_column_radius_to_cave_height_ratio:Ec.NumberNode({min:0,max:1}),stalactite_bluntness:Dc.FloatProvider({min:.1,max:10}),stalagmite_bluntness:Dc.FloatProvider({min:.1,max:10}),wind_speed:Dc.FloatProvider({min:0,max:2}),min_radius_for_wind:Ec.NumberNode({integer:!0,min:0,max:100}),min_bluntness_for_wind:Ec.NumberNode({min:0,max:5})},"minecraft:nether_forest_vegetation":{state_provider:r("block_state_provider")},"minecraft:netherrack_replace_blobs":{state:r("block_state"),target:r("block_state"),radius:Dc.IntProvider({min:0,max:12})},"minecraft:no_bonemeal_flower":i,"minecraft:ore":c,"minecraft:random_patch":i,"minecraft:random_boolean_selector":{feature_false:l,feature_true:l},"minecraft:random_selector":{features:Ec.ListNode(Ec.ObjectNode({chance:Ec.NumberNode({min:0,max:1}),feature:l})),default:l},"minecraft:replace_single_block":{targets:Ec.ListNode(s)},"minecraft:root_system":{required_vertical_space_for_tree:Ec.NumberNode({integer:!0,min:1,max:64}),root_radius:Ec.NumberNode({integer:!0,min:1,max:64}),root_placement_attempts:Ec.NumberNode({integer:!0,min:1,max:256}),root_column_max_height:Ec.NumberNode({integer:!0,min:1,max:4096}),hanging_root_radius:Ec.NumberNode({integer:!0,min:1,max:64}),hanging_roots_vertical_span:Ec.NumberNode({integer:!0,min:0,max:16}),hanging_root_placement_attempts:Ec.NumberNode({integer:!0,min:0,max:256}),allowed_vertical_water_for_tree:Ec.NumberNode({integer:!0,min:1,max:64}),root_replaceable:o({validator:"resource",params:{pool:"$tag/block"}}),root_state_provider:r("block_state_provider"),hanging_root_state_provider:r("block_state_provider"),feature:l},"minecraft:scattered_ore":c,"minecraft:sea_pickle":{count:Dc.IntProvider({min:0,max:256})},"minecraft:seagrass":{probability:Ec.NumberNode({min:0,max:1})},"minecraft:simple_block":{to_place:r("block_state_provider"),place_on:Ec.Opt(Ec.ListNode(r("block_state"))),place_in:Ec.Opt(Ec.ListNode(r("block_state"))),place_under:Ec.Opt(Ec.ListNode(r("block_state")))},"minecraft:simple_random_selector":{features:Ec.ListNode(l)},"minecraft:small_dripstone":{max_placements:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:100})),empty_space_search_radius:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:20})),max_offset_from_origin:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:20})),chance_of_taller_dripstone:Ec.Opt(Ec.NumberNode({min:0,max:1}))},"minecraft:spring_feature":{state:r("fluid_state"),rock_count:Ec.NumberNode({integer:!0}),hole_count:Ec.NumberNode({integer:!0}),requires_block_below:Ec.BooleanNode(),valid_blocks:Ec.ListNode(o({validator:"resource",params:{pool:"block"}}))},"minecraft:tree":{ignore_vines:Ec.Opt(Ec.BooleanNode()),force_dirt:Ec.Opt(Ec.BooleanNode()),minimum_size:r("feature_size"),dirt_provider:r("block_state_provider"),sapling_provider:r("block_state_provider"),trunk_provider:r("block_state_provider"),foliage_provider:r("block_state_provider"),trunk_placer:Ec.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/trunk_placer_type"}}),base_height:Ec.NumberNode({integer:!0,min:0,max:32}),height_rand_a:Ec.NumberNode({integer:!0,min:0,max:24}),height_rand_b:Ec.NumberNode({integer:!0,min:0,max:24}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:bending_trunk_placer":{bend_length:Dc.IntProvider({min:1,max:64}),min_height_for_leaves:Ec.Opt(Ec.NumberNode({integer:!0,min:1}))}}},{context:"trunk_placer"}),foliage_placer:Ec.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/foliage_placer_type"}}),radius:Dc.IntProvider({min:0,max:16}),offset:Dc.IntProvider({min:0,max:16}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:blob_foliage_placer":{height:Ec.NumberNode({integer:!0,min:0,max:16})},"minecraft:bush_foliage_placer":{height:Ec.NumberNode({integer:!0,min:0,max:16})},"minecraft:fancy_foliage_placer":{height:Ec.NumberNode({integer:!0,min:0,max:16})},"minecraft:jungle_foliage_placer":{height:Ec.NumberNode({integer:!0,min:0,max:16})},"minecraft:mega_pine_foliage_placer":{crown_height:Dc.IntProvider({min:0,max:24})},"minecraft:pine_foliage_placer":{height:Dc.IntProvider({min:0,max:24})},"minecraft:random_spread_foliage_placer":{foliage_height:Dc.IntProvider({min:1,max:512}),leaf_placement_attempts:Ec.NumberNode({integer:!0,min:0,max:256})},"minecraft:spruce_foliage_placer":{trunk_height:Dc.IntProvider({min:0,max:24})}}},{context:"foliage_placer",disableSwitchContext:!0}),decorators:Ec.ListNode(Ec.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/tree_decorator_type"}}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:alter_ground":{provider:r("block_state_provider")},"minecraft:beehive":{probability:Ec.NumberNode({min:0,max:1})},"minecraft:cocoa":{probability:Ec.NumberNode({min:0,max:1})}}},{context:"tree_decorator"}))},"minecraft:underwater_magma":{floor_search_range:Ec.NumberNode({integer:!0,min:0,max:512}),placement_radius_around_floor:Ec.NumberNode({integer:!0,min:0,max:64}),placement_probability_per_valid_position:Ec.NumberNode({min:0,max:1})},"minecraft:vegetation_patch":d,"minecraft:waterlogged_vegetation_patch":d}},{context:"feature"})},{context:"feature"}),{default:()=>({type:"minecraft:decorated",config:{decorator:{type:"minecraft:count",config:{count:4}},feature:{type:"minecraft:tree",config:{max_water_depth:0,ignore_vines:!0,minimum_size:{},trunk_placer:{base_height:5,height_rand_a:2,height_rand_b:0},foliage_placer:{radius:2,offset:0,height:3}}}}})})),e.register("feature_size",Ec.Mod(Ec.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/feature_size_type"}}),min_clipped_height:Ec.Opt(Ec.NumberNode({min:0,max:80})),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:two_layers_feature_size":{limit:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:81})),lower_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16})),upper_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16}))},"minecraft:three_layers_feature_size":{limit:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:80})),upper_limit:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:80})),lower_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16})),middle_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16})),upper_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16}))}}},{disableSwitchContext:!0}),{default:()=>({type:"minecraft:two_layers_feature_size"})})),e.register("block_state_provider",Ec.Mod(Ec.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/block_state_provider_type"}}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:randomized_int_state_provider":{property:o(),values:Dc.IntProvider(),source:r("block_state_provider")},"minecraft:rotated_block_provider":{state:r("block_state")},"minecraft:simple_state_provider":{state:r("block_state")},"minecraft:weighted_state_provider":{entries:Ec.ListNode(Ec.Mod(Ec.ObjectNode({weight:Ec.NumberNode({integer:!0,min:1}),data:r("block_state")}),{default:()=>({data:{}})}))}}},{context:"block_state_provider"}),{default:()=>({type:"minecraft:simple_state_provider"})})),e.register("block_placer",Ec.Mod(Ec.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/block_placer_type"}}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:column_placer":{size:Dc.IntProvider({min:0})}}},{context:"block_placer"}),{default:()=>({type:"minecraft:simple_block_placer"})}))};var Uc={};Object.defineProperty(Uc,"__esModule",{value:!0}),Uc.initNoiseSettingsSchemas=void 0;const qc=Ce,Hc=Qs;Uc.initNoiseSettingsSchemas=function(e,t){const r=qc.Reference.bind(void 0,e),o=qc.StringNode.bind(void 0,t);e.register("noise_settings",qc.Mod(qc.ObjectNode({name:qc.Mod(o({validator:"resource",params:{pool:"$worldgen/noise_settings",isDefinition:!0}}),{enabled:e=>e.getArray().length>0}),bedrock_roof_position:qc.NumberNode({integer:!0}),bedrock_floor_position:qc.NumberNode({integer:!0}),sea_level:qc.NumberNode({integer:!0}),min_surface_level:qc.NumberNode({integer:!0}),disable_mob_generation:qc.BooleanNode(),noise_caves_enabled:qc.BooleanNode(),noodle_caves_enabled:qc.BooleanNode(),aquifers_enabled:qc.BooleanNode(),deepslate_enabled:qc.BooleanNode(),ore_veins_enabled:qc.BooleanNode(),default_block:r("block_state"),default_fluid:r("block_state"),noise:qc.ObjectNode({min_y:qc.NumberNode({integer:!0,min:-2048,max:2047}),height:qc.NumberNode({integer:!0,min:0,max:4096}),density_factor:qc.NumberNode(),density_offset:qc.NumberNode(),size_horizontal:qc.NumberNode({integer:!0}),size_vertical:qc.NumberNode({integer:!0}),simplex_surface_noise:qc.BooleanNode(),random_density_offset:qc.Opt(qc.BooleanNode()),island_noise_override:qc.Opt(qc.BooleanNode()),amplified:qc.Opt(qc.BooleanNode()),sampling:qc.ObjectNode({xz_scale:qc.NumberNode(),y_scale:qc.NumberNode(),xz_factor:qc.NumberNode(),y_factor:qc.NumberNode()}),bottom_slide:qc.ObjectNode({target:qc.NumberNode({integer:!0}),size:qc.NumberNode({integer:!0,min:0}),offset:qc.NumberNode({integer:!0})}),top_slide:qc.ObjectNode({target:qc.NumberNode({integer:!0}),size:qc.NumberNode({integer:!0,min:0}),offset:qc.NumberNode({integer:!0})})}),structures:r("generator_structures")},{context:"noise_settings"}),(e=>({default:()=>Hc.DefaultNoiseSettings,validate:(t,r,o,i)=>{var n,a,s,c;return(null===(n=null==(r=e.validate(t,r,o,i))?void 0:r.noise)||void 0===n?void 0:n.min_y)+(null===(a=null==r?void 0:r.noise)||void 0===a?void 0:a.height)>2047&&o.add(t.push("noise").push("height"),"error.min_y_plus_height",2047),(null===(s=null==r?void 0:r.noise)||void 0===s?void 0:s.height)%16!=0&&o.add(t.push("noise").push("height"),"error.height_multiple",16),(null===(c=null==r?void 0:r.noise)||void 0===c?void 0:c.min_y)%16!=0&&o.add(t.push("noise").push("min_y"),"error.min_y_multiple",16),r}})))),e.register("generator_structures",qc.ObjectNode({stronghold:qc.Opt(qc.ObjectNode({distance:qc.NumberNode({integer:!0,min:0,max:1023}),spread:qc.NumberNode({integer:!0,min:0,max:1023}),count:qc.NumberNode({integer:!0,min:1,max:4095})})),structures:qc.MapNode(o({validator:"resource",params:{pool:"worldgen/structure_feature"}}),qc.Mod(qc.ObjectNode({spacing:qc.NumberNode({integer:!0,min:0,max:4096}),separation:qc.Mod(qc.NumberNode({integer:!0,min:0,max:4096}),(e=>({validate:(t,r,o,i)=>(t.pop().push("spacing").get()<=r&&o.add(t,"error.separation_smaller_spacing"),e.validate(t,r,o,i))}))),salt:qc.NumberNode({integer:!0,min:0})},{context:"generator_structure"}),{default:()=>({spacing:10,separation:5,salt:0})}))})),e.register("generator_layer",qc.Mod(qc.ObjectNode({block:o({validator:"resource",params:{pool:"block"}}),height:qc.NumberNode({integer:!0,min:1})}),{default:()=>({block:"minecraft:stone",height:1})}))};var Zc={};Object.defineProperty(Zc,"__esModule",{value:!0}),Zc.initStructureFeatureSchemas=void 0;const Wc=Ce;Zc.initStructureFeatureSchemas=function(e,t){const r=Wc.StringNode.bind(void 0,t),o=Wc.Reference.bind(void 0,e),i={start_pool:r({validator:"resource",params:{pool:"$worldgen/template_pool"}}),size:Wc.NumberNode({integer:!0})};e.register("configured_structure_feature",Wc.Mod(Wc.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/structure_feature"}}),config:Wc.ObjectNode({[Wc.Switch]:["pop",{push:"type"}],[Wc.Case]:{"minecraft:bastion_remnant":i,"minecraft:buried_treasure":{probability:Wc.NumberNode({min:0,max:1})},"minecraft:mineshaft":{type:r({enum:["normal","mesa"]}),probability:Wc.NumberNode({min:0,max:1})},"minecraft:nether_fossil":{height:o("height_provider")},"minecraft:ocean_ruin":{biome_temp:r({enum:["cold","warm"]}),large_probability:Wc.NumberNode({min:0,max:1}),cluster_probability:Wc.NumberNode({min:0,max:1})},"minecraft:pillager_outpost":i,"minecraft:ruined_portal":{portal_type:r({enum:["standard","desert","jungle","mountain","nether","ocean","swamp"]})},"minecraft:shipwreck":{is_beached:Wc.Opt(Wc.BooleanNode())},"minecraft:village":i}},{context:"structure_feature",disableSwitchContext:!0})},{context:"structure_feature"}),{default:()=>({type:"minecraft:bastion_remnant",config:{start_pool:"minecraft:bastion/starts",size:6}})}))};var Xc={};Object.defineProperty(Xc,"__esModule",{value:!0}),Xc.initSurfaceBuilderSchemas=void 0;const Gc=Ce;Xc.initSurfaceBuilderSchemas=function(e,t){const r=Gc.StringNode.bind(void 0,t),o=Gc.Reference.bind(void 0,e);e.register("configured_surface_builder",Gc.Mod(Gc.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/surface_builder"}}),config:Gc.ObjectNode({top_material:o("block_state"),under_material:o("block_state"),underwater_material:o("block_state")},{context:"surface_builder"})},{context:"surface_builder"}),{default:()=>({type:"minecraft:default",config:{top_material:{Name:"minecraft:grass_block",Properties:{snowy:"false"}},under_material:{Name:"minecraft:dirt"},underwater_material:{Name:"minecraft:gravel"}}})}))};var Vc={};Object.defineProperty(Vc,"__esModule",{value:!0}),Vc.initTemplatePoolSchemas=void 0;const Jc=Ce,Yc=Rc;Vc.initTemplatePoolSchemas=function(e,t){const r=Jc.Reference.bind(void 0,e),o=Jc.StringNode.bind(void 0,t);e.register("template_pool",Jc.Mod(Jc.ObjectNode({name:o(),fallback:o(),elements:Jc.ListNode(r("template_weighted_element"))},{context:"template_pool"}),{default:()=>({fallback:"minecraft:empty",elements:[{weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}}]})})),e.register("template_weighted_element",Jc.Mod(Jc.ObjectNode({weight:Jc.NumberNode({integer:!0,min:1}),element:r("template_element")},{category:"pool"}),{default:()=>({weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}})})),e.register("template_element",Jc.Mod(Jc.ObjectNode({element_type:o({validator:"resource",params:{pool:"worldgen/structure_pool_element"}}),projection:o({enum:["rigid","terrain_matching"]}),[Jc.Switch]:[{push:"element_type"}],[Jc.Case]:{"minecraft:feature_pool_element":{feature:o({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},"minecraft:legacy_single_pool_element":{location:o({validator:"resource",params:{pool:"$structure"}}),processors:Yc.Processors},"minecraft:list_pool_element":{elements:Jc.ListNode(r("template_element"))},"minecraft:single_pool_element":{location:o({validator:"resource",params:{pool:"$structure"}}),processors:Yc.Processors}}},{context:"template_element",disableSwitchContext:!0}),{default:()=>({element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"})}))},Object.defineProperty(jc,"__esModule",{value:!0}),jc.initWorldgenSchemas=void 0;const Kc=Mc,Qc=Ac,el=Cc,tl=zc,rl=Uc,ol=Rc,il=Zc,nl=Xc,al=Vc;jc.initWorldgenSchemas=function(e,t){ol.initProcessorListSchemas(e,t),Kc.initBiomeSchemas(e,t),Qc.initCarverSchemas(e,t),el.initDecoratorSchemas(e,t),tl.initFeatureSchemas(e,t),rl.initNoiseSettingsSchemas(e,t),il.initStructureFeatureSchemas(e,t),nl.initSurfaceBuilderSchemas(e,t),al.initTemplatePoolSchemas(e,t)};var sl={};Object.defineProperty(sl,"__esModule",{value:!0}),sl.initWorldSettingsSchemas=void 0;const cl=Ce;sl.initWorldSettingsSchemas=function(e,t){const r=cl.Reference.bind(void 0,e),o=cl.StringNode.bind(void 0,t);e.register("world_settings",cl.Mod(cl.ObjectNode({generate_features:cl.BooleanNode(),bonus_chest:cl.BooleanNode(),seed:cl.NumberNode({integer:!0}),dimensions:cl.MapNode(o({validator:"resource",params:{pool:"$dimension"}}),r("dimension"))},{context:"world_settings"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{generate_features:!0,bonus_chest:!1,seed:e,dimensions:{"minecraft:overworld":{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:vanilla_layered",seed:e},settings:"minecraft:overworld"}},"minecraft:the_nether":{type:"minecraft:the_nether",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:multi_noise",seed:e,humidity_noise:{firstOctave:-7,amplitudes:[1,1]},altitude_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:0},biome:"minecraft:nether_wastes"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:-.5},biome:"minecraft:soul_sand_valley"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:.4,humidity:0},biome:"minecraft:crimson_forest"},{parameters:{altitude:0,weirdness:0,offset:.375,temperature:0,humidity:.5},biome:"minecraft:warped_forest"},{parameters:{altitude:0,weirdness:0,offset:.175,temperature:-.5,humidity:0},biome:"minecraft:basalt_deltas"}]},settings:"minecraft:nether"}},"minecraft:the_end":{type:"minecraft:the_end",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:the_end",seed:e},settings:"minecraft:end"}}}}}}))},Object.defineProperty(Js,"__esModule",{value:!0}),Js.initSchemas=void 0;const ll=Ys,dl=Qs,_l=ec,ml=oc,pl=ac,ul=lc,fl=mc,hl=gc,gl=vc,bl=Nc,vl=wc,yl=xc,Nl=jc,Ol=sl;Js.initSchemas=function(e,t){dl.initCommonSchemas(e,t),ll.initAdvancementSchemas(e,t),_l.initConditionSchemas(e,t),pl.initDimensionTypeSchemas(e,t),ml.initDimensionSchemas(e,t),ul.initItemModifierSchemas(e,t),fl.initLootTableSchemas(e,t),hl.initPackMcmetaSchemas(e,t),gl.initPredicatesSchemas(e,t),bl.initRecipeSchemas(e,t),vl.initTagsSchemas(e,t),yl.initTextComponentSchemas(e,t),Nl.initWorldgenSchemas(e,t),Ol.initWorldSettingsSchemas(e,t)};var wl=Be&&Be.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),kl=Be&&Be.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xl=Be&&Be.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&wl(t,e,r);return kl(t,e),t};Object.defineProperty(Gs,"__esModule",{value:!0});var Sl=Gs.getSchemas=Gs.getCollections=void 0;const jl=Ce,Ml=Vs,Pl=Js;var Al=Gs.lootContext=xl(pc);var Ll=Gs.getCollections=function(){const e=new jl.CollectionRegistry;return Ml.initCollections(e),e};Sl=Gs.getSchemas=function(e){const t=new jl.SchemaRegistry;return Pl.initSchemas(t,e),t};var Bl=Object.freeze(Object.assign(Object.create(null),Gs,{[Symbol.toStringTag]:"Module",get getSchemas(){return Sl},get getCollections(){return Ll},lootContext:Al,default:Gs})),Cl={},Tl={};Object.defineProperty(Tl,"__esModule",{value:!0}),Tl.initCollections=void 0,Tl.initCollections=function(e){e.register("advancement_trigger",["minecraft:bee_nest_destroyed","minecraft:bred_animals","minecraft:brewed_potion","minecraft:changed_dimension","minecraft:channeled_lightning","minecraft:construct_beacon","minecraft:consume_item","minecraft:cured_zombie_villager","minecraft:effects_changed","minecraft:enchanted_item","minecraft:enter_block","minecraft:entity_hurt_player","minecraft:entity_killed_player","minecraft:fall_from_height","minecraft:filled_bucket","minecraft:fishing_rod_hooked","minecraft:hero_of_the_village","minecraft:impossible","minecraft:inventory_changed","minecraft:item_durability_changed","minecraft:item_used_on_block","minecraft:killed_by_crossbow","minecraft:levitation","minecraft:lightning_strike","minecraft:location","minecraft:nether_travel","minecraft:placed_block","minecraft:player_generates_container_loot","minecraft:player_hurt_entity","minecraft:player_interacted_with_entity","minecraft:player_killed_entity","minecraft:recipe_unlocked","minecraft:ride_entity_in_lava","minecraft:shot_crossbow","minecraft:slept_in_bed","minecraft:slide_down_block","minecraft:started_riding","minecraft:summoned_entity","minecraft:tame_animal","minecraft:target_hit","minecraft:tick","minecraft:thrown_item_picked_up_by_entity","minecraft:used_ender_eye","minecraft:used_totem","minecraft:using_item","minecraft:villager_trade","minecraft:voluntary_exile"]),e.register("keybind",["key.advancements","key.attack","key.back","key.chat","key.command","key.drop","key.forward","key.fullscreen","key.hotbar.1","key.hotbar.2","key.hotbar.3","key.hotbar.4","key.hotbar.5","key.hotbar.6","key.hotbar.7","key.hotbar.8","key.hotbar.9","key.inventory","key.jump","key.left","key.loadToolbarActivator","key.pickItem","key.playerlist","key.right","key.saveToolbarActivator","key.screenshot","key.smoothCamera","key.sneak","key.spectatorOutlines","key.sprint","key.swapOffhand","key.togglePerspective","key.use"]),e.register("slot",["mainhand","offhand","head","chest","legs","feet"]),e.register("gamemode",["survival","creative","adventure","spectator"]),e.register("entity_source",["this","killer","direct_killer","killer_player"]),e.register("copy_source",["block_entity","this","killer","killer_player"]),e.register("loot_table_apply_bonus_formula",["minecraft:uniform_bonus_count","minecraft:binomial_with_bonus_count","minecraft:ore_drops"]),e.register("map_decoration",["mansion","monument","player","frame","red_marker","blue_marker","target_x","target_point","player_off_map","player_off_limits","red_x","banner_white","banner_orange","banner_magenta","banner_light_blue","banner_yellow","banner_lime","banner_pink","banner_gray","banner_light_gray","banner_cyan","banner_purple","banner_blue","banner_brown","banner_green","banner_red","banner_black"]),e.register("map_feature",["bastion_remnant","buried_treasure","desert_pyramid","endcity","fortress","igloo","jungle_pyramid","mansion","mineshaft","monument","nether_fossil","ocean_ruin","pillager_outpost","ruined_portal","shipwreck","stronghold","swamp_hut","village"]),e.register("recipe_group",["bed","light_gray_dye","iron_ingot","wooden_stairs","black_dye","stained_terracotta","dyed_bed","magenta_dye","bark","rabbit_stew","light_blue_dye","wooden_fence_gate","planks","stained_glass","wooden_door","stained_glass_pane","wooden_fence","sticks","concrete_powder","wooden_pressure_plate","boat","brown_dye","yellow_dye","bonemeal","red_dye","wooden_trapdoor","wooden_button","gold_ingot","pink_dye","wooden_slab","orange_dye","carpet","sign","wool","sugar","blue_dye","white_dye","banner","netherite_ingot"]),e.register("biome_category",["beach","desert","extreme_hills","forest","icy","jungle","mesa","mountain","mushroom","nether","none","ocean","plains","river","savanna","swamp","taiga","the_end","underground"]),e.register("heightmap_type",["MOTION_BLOCKING","MOTION_BLOCKING_NO_LEAVES","OCEAN_FLOOR","OCEAN_FLOOR_WG","WORLD_SURFACE","WORLD_SURFACE_WG"]),e.register("generation_step",["air","liquid"]),e.register("loot_context_type",["minecraft:empty","minecraft:chest","minecraft:command","minecraft:selector","minecraft:fishing","minecraft:entity","minecraft:gift","minecraft:barter","minecraft:advancement_reward","minecraft:advancement_entity","minecraft:generic","minecraft:block"]),e.register("banner_pattern",["base","square_bottom_left","square_bottom_right","square_top_left","square_top_right","stripe_bottom","stripe_top","stripe_left","stripe_right","stripe_center","stripe_middle","stripe_downright","stripe_downleft","small_stripes","cross","straight_cross","triangle_bottom","triangle_top","triangles_bottom","triangles_top","diagonal_left","diagonal_up_right","diagonal_up_left","diagonal_right","circle","rhombus","half_vertical","half_horizontal","half_vertical_right","half_horizontal_bottom","border","curly_border","gradient","gradient_up","bricks","globe","creeper","skull","flower","mojang","piglin"]),e.register("dye_color",["white","orange","magenta","light_blue","yellow","lime","pink","gray","light_gray","cyan","purple","blue","brown","green","red","black"]),e.register("cave_surface",["floor","ceiling"])};var Il={},zl={};Object.defineProperty(zl,"__esModule",{value:!0}),zl.initAdvancementSchemas=void 0;const Rl=Ce;zl.initAdvancementSchemas=function(e,t){const r=Rl.Reference.bind(void 0,e),o=Rl.StringNode.bind(void 0,t),i=Rl.ChoiceNode([{type:"object",node:Rl.Opt(r("entity_predicate")),change:e=>{var t,r;return null!==(r=null===(t=e[0])||void 0===t?void 0:t.predicate)&&void 0!==r?r:{}}},{type:"list",node:Rl.ListNode(r("condition")),change:e=>[{condition:"minecraft:entity_properties",predicate:e}]}],{context:"conditions"});e.register("advancement",Rl.Mod(Rl.ObjectNode({display:Rl.Opt(Rl.Mod(Rl.ObjectNode({icon:Rl.ObjectNode({item:o({validator:"resource",params:{pool:"item"}}),nbt:Rl.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}}))}),title:r("text_component"),description:r("text_component"),background:Rl.Opt(o()),frame:Rl.Opt(o({enum:["task","challenge","goal"]})),show_toast:Rl.Opt(Rl.BooleanNode()),announce_to_chat:Rl.Opt(Rl.BooleanNode()),hidden:Rl.Opt(Rl.BooleanNode())}),{default:()=>({icon:{item:"minecraft:stone"},title:"",description:""})})),parent:Rl.Opt(o({validator:"resource",params:{pool:"$advancement"}})),criteria:Rl.MapNode(o(),r("advancement_criteria")),requirements:Rl.Opt(Rl.ListNode(Rl.ListNode(o()))),rewards:Rl.Opt(Rl.ObjectNode({function:Rl.Opt(o({validator:"resource",params:{pool:"$function"}})),loot:Rl.Opt(Rl.ListNode(o({validator:"resource",params:{pool:"$loot_table"}}))),recipes:Rl.Opt(Rl.ListNode(o({validator:"resource",params:{pool:"$recipe"}}))),experience:Rl.Opt(Rl.NumberNode({integer:!0}))}))},{context:"advancement"}),{default:()=>({criteria:{requirement:{trigger:"minecraft:location"}}})})),e.register("advancement_criteria",Rl.ObjectNode({trigger:o({validator:"resource",params:{pool:t.get("advancement_trigger")}}),conditions:Rl.Opt(Rl.ObjectNode({player:Rl.Mod(i,{enabled:e=>"minecraft:impossible"!==e.pop().push("trigger").get()}),[Rl.Switch]:["pop",{push:"trigger"}],[Rl.Case]:{"minecraft:bee_nest_destroyed":{block:Rl.Opt(o({validator:"resource",params:{pool:"block"}})),num_bees_inside:Rl.Opt(Rl.NumberNode({integer:!0})),item:Rl.Opt(r("item_predicate"))},"minecraft:bred_animals":{parent:i,partner:i,child:i},"minecraft:brewed_potion":{potion:Rl.Opt(o({validator:"resource",params:{pool:"potion"}}))},"minecraft:changed_dimension":{from:Rl.Opt(o({validator:"resource",params:{pool:"$dimension"}})),to:Rl.Opt(o({validator:"resource",params:{pool:"$dimension"}}))},"minecraft:channeled_lightning":{victims:Rl.Opt(Rl.ListNode(i))},"minecraft:construct_beacon":{level:r("int_bounds")},"minecraft:consume_item":{item:Rl.Opt(r("item_predicate"))},"minecraft:cured_zombie_villager":{villager:i,zombie:i},"minecraft:effects_changed":{effects:Rl.Opt(Rl.MapNode(o({validator:"resource",params:{pool:"mob_effect"}}),Rl.ObjectNode({amplifier:r("int_bounds"),duration:r("int_bounds")}))),source:Rl.Opt(i)},"minecraft:enter_block":{block:Rl.Opt(o({validator:"resource",params:{pool:"block"}})),state:Rl.Opt(Rl.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},"minecraft:enchanted_item":{levels:r("int_bounds"),item:Rl.Opt(r("item_predicate"))},"minecraft:entity_hurt_player":{damage:Rl.Opt(r("damage_predicate"))},"minecraft:entity_killed_player":{entity:i,killing_blow:Rl.Opt(r("damage_source_predicate"))},"minecraft:fall_from_height":{start_position:Rl.Opt(r("location_predicate")),distance:Rl.Opt(r("distance_predicate"))},"minecraft:filled_bucket":{item:Rl.Opt(r("item_predicate"))},"minecraft:fishing_rod_hooked":{entity:i,item:Rl.Opt(r("item_predicate"))},"minecraft:hero_of_the_village":{location:Rl.Opt(r("location_predicate"))},"minecraft:inventory_changed":{slots:Rl.Opt(Rl.ObjectNode({empty:r("int_bounds"),occupied:r("int_bounds"),full:r("int_bounds")})),items:Rl.Opt(Rl.ListNode(r("item_predicate")))},"minecraft:item_durability_changed":{delta:r("int_bounds"),durability:r("int_bounds"),item:Rl.Opt(r("item_predicate"))},"minecraft:item_used_on_block":{item:Rl.Opt(r("item_predicate")),location:Rl.Opt(r("location_predicate"))},"minecraft:killed_by_crossbow":{unique_entity_types:r("int_bounds"),victims:Rl.Opt(Rl.ListNode(i))},"minecraft:levitation":{distance:Rl.Opt(r("distance_predicate")),duration:r("int_bounds")},"minecraft:lightning_strike":{lightning:i,bystander:i},"minecraft:location":{location:Rl.Opt(r("location_predicate"))},"minecraft:nether_travel":{start_position:Rl.Opt(r("location_predicate")),distance:Rl.Opt(r("distance_predicate"))},"minecraft:placed_block":{block:Rl.Opt(o({validator:"resource",params:{pool:"block"}})),state:Rl.Opt(Rl.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})),item:Rl.Opt(r("item_predicate")),location:Rl.Opt(r("location_predicate"))},"minecraft:player_generates_container_loot":{loot_table:o({validator:"resource",params:{pool:"$loot_table"}})},"minecraft:player_hurt_entity":{damage:Rl.Opt(r("damage_predicate")),entity:i},"minecraft:player_interacted_with_entity":{item:Rl.Opt(r("item_predicate")),entity:i},"minecraft:player_killed_entity":{entity:i,killing_blow:Rl.Opt(r("damage_source_predicate"))},"minecraft:recipe_unlocked":{recipe:o({validator:"resource",params:{pool:"$recipe"}})},"minecraft:ride_entity_in_lava":{start_position:Rl.Opt(r("location_predicate")),distance:Rl.Opt(r("distance_predicate"))},"minecraft:slept_in_bed":{location:Rl.Opt(r("location_predicate"))},"minecraft:slide_down_block":{block:Rl.Opt(o({validator:"resource",params:{pool:"block"}}))},"minecraft:shot_crossbow":{item:Rl.Opt(r("item_predicate"))},"minecraft:summoned_entity":{entity:i},"minecraft:tame_animal":{entity:i},"minecraft:target_hit":{projectile:i,shooter:i,signal_strength:r("int_bounds")},"minecraft:thrown_item_picked_up_by_entity":{entity:Rl.Opt(r("entity_predicate")),item:Rl.Opt(r("item_predicate"))},"minecraft:used_ender_eye":{distance:Rl.Opt(r("float_bounds"))},"minecraft:used_totem":{item:Rl.Opt(r("item_predicate"))},"minecraft:using_item":{item:Rl.Opt(r("item_predicate"))},"minecraft:villager_trade":{villager:Rl.Opt(r("entity_predicate")),item:Rl.Opt(r("item_predicate"))},"minecraft:voluntary_exile":{location:Rl.Opt(r("location_predicate"))}}},{context:"criterion"}))},{category:"predicate",context:"criterion"}))};var Fl={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initCommonSchemas=e.InclusiveRange=e.IntProvider=e.FloatProvider=e.NoiseSettingsPresets=e.DefaultNoiseSettings=e.DimensionTypePresets=e.DefaultDimensionType=e.FunctionCases=e.ConditionCases=void 0;const t=Ce;e.DefaultDimensionType={ultrawarm:!1,natural:!0,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!0,has_raids:!0,has_skylight:!0,has_ceiling:!1,coordinate_scale:1,ambient_light:0,logical_height:256,infiniburn:"minecraft:infiniburn_overworld",min_y:0,height:256};const r={"minecraft:igloo":{spacing:32,separation:8,salt:14357618},"minecraft:mansion":{spacing:80,separation:20,salt:10387319},"minecraft:jungle_pyramid":{spacing:32,separation:8,salt:14357619},"minecraft:nether_fossil":{spacing:2,separation:1,salt:14357921},"minecraft:stronghold":{spacing:1,separation:0,salt:0},"minecraft:shipwreck":{spacing:24,separation:4,salt:165745295},"minecraft:mineshaft":{spacing:1,separation:0,salt:0},"minecraft:desert_pyramid":{spacing:32,separation:8,salt:14357617},"minecraft:ruined_portal":{spacing:40,separation:15,salt:34222645},"minecraft:fortress":{spacing:27,separation:4,salt:30084232},"minecraft:pillager_outpost":{spacing:32,separation:8,salt:165745296},"minecraft:village":{spacing:32,separation:8,salt:10387312},"minecraft:endcity":{spacing:20,separation:11,salt:10387313},"minecraft:buried_treasure":{spacing:1,separation:0,salt:0},"minecraft:ocean_ruin":{spacing:20,separation:8,salt:14357621},"minecraft:bastion_remnant":{spacing:27,separation:4,salt:30084232},"minecraft:swamp_hut":{spacing:32,separation:8,salt:14357620},"minecraft:monument":{spacing:32,separation:5,salt:10387313}};e.DefaultNoiseSettings={bedrock_roof_position:-2147483648,bedrock_floor_position:0,sea_level:63,noise_caves_enabled:!0,deepslate_enabled:!0,ore_veins_enabled:!0,noodle_caves_enabled:!0,disable_mob_generation:!1,aquifers_enabled:!0,default_block:{Name:"minecraft:stone"},default_fluid:{Properties:{level:"0"},Name:"minecraft:water"},noise:{min_y:-64,height:384,size_horizontal:1,size_vertical:2,density_factor:1,density_offset:-.51875,top_slide:{target:-.078125,size:2,offset:8},bottom_slide:{target:.1171875,size:3,offset:0},sampling:{xz_scale:.9999999814507745,y_scale:.9999999814507745,xz_factor:80,y_factor:160}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{stronghold:{distance:32,spread:3,count:128},structures:r}},e.initCommonSchemas=function(o,i){const n=t.StringNode.bind(void 0,i),a=t.Reference.bind(void 0,o);o.register("block_state",t.Mod(t.ObjectNode({Name:n({validator:"resource",params:{pool:"block"}}),Properties:t.Opt(t.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"Name"}]}}}))},{context:"block_state"}),{default:()=>({Name:"minecraft:stone"})})),o.register("fluid_state",t.Mod(t.ObjectNode({Name:n({validator:"resource",params:{pool:"fluid"}}),Properties:t.Opt(t.MapNode(n(),n()))},{context:"fluid_state"}),{default:()=>({Name:"minecraft:water",Properties:{level:"0"}})})),o.register("block_pos",t.Mod(t.ListNode(t.NumberNode({integer:!0}),{minLength:3,maxLength:3}),{default:()=>[0,0,0]}));const c=e=>t.Opt(t.ChoiceNode([{type:"number",node:t.NumberNode({integer:e}),change:e=>{var t,r;return void 0===e?0:null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:0}},{type:"object",node:t.ObjectNode({min:t.Opt(t.NumberNode({integer:e})),max:t.Opt(t.NumberNode({integer:e}))},{context:"range"}),change:e=>({min:null!=e?e:0,max:null!=e?e:0})}]));o.register("int_bounds",c(!0)),o.register("float_bounds",c()),o.register("int_range",t.ChoiceNode([{type:"object",node:t.ObjectNode({min:t.Opt(a("number_provider")),max:t.Opt(a("number_provider"))})},{type:"number",node:t.NumberNode({integer:!0})}],{context:"range"}));const l=(e,r,o,i,a,c,l)=>{let d={};a&&Object.keys(l[a]).forEach((e=>{d[e]=t.Mod(l[a][e],{enabled:e=>void 0===e.push("type").get()})}));const _=t.ObjectNode(s({type:t.Mod(t.Opt(n({validator:"resource",params:{pool:e}})),{hidden:()=>!0}),[t.Switch]:[{push:"type"}],[t.Case]:l},d),{context:c,disableSwitchContext:!0}),m=[{type:r,node:l[i][o]}];return a&&m.push({type:"object",priority:-1,node:_}),Object.keys(l).forEach((e=>{m.push({type:e,match:t=>{var r;if("minecraft:"+(null===(r=null==t?void 0:t.type)||void 0===r?void 0:r.replace(/^minecraft:/,""))===e)return!0;const o=t?Object.keys(t):[];return"object"==typeof t&&(0===(null==o?void 0:o.length)||1===(null==o?void 0:o.length)&&"type"===(null==o?void 0:o[0]))},node:_,change:t=>({type:e})})})),t.ChoiceNode(m,{context:c,choiceContext:`${c}.type`})};o.register("number_provider",l("loot_number_provider_type","number","value","minecraft:constant","minecraft:uniform","number_provider",{"minecraft:constant":{value:t.NumberNode()},"minecraft:uniform":{min:a("number_provider"),max:a("number_provider")},"minecraft:binomial":{n:a("number_provider"),p:a("number_provider")},"minecraft:score":{target:a("scoreboard_name_provider"),score:n({validator:"objective"}),scale:t.Opt(t.NumberNode())}})),o.register("scoreboard_name_provider",l("loot_score_provider_type","string","target","minecraft:context",null,"score_provider",{"minecraft:fixed":{name:n({validator:"entity",params:{amount:"multiple",type:"entities",isScoreHolder:!0}})},"minecraft:context":{target:t.Mod(n({enum:"entity_source"}),{default:()=>"this"})}})),o.register("nbt_provider",l("loot_nbt_provider_type","string","target","minecraft:context",null,"nbt_provider",{"minecraft:storage":{source:n({validator:"resource",params:{pool:"$storage"}})},"minecraft:context":{target:t.Mod(n({enum:"copy_source"}),{default:()=>"this"})}})),e.FloatProvider=e=>l("float_provider_type","number","value","minecraft:constant",null,"float_provider",{"minecraft:constant":{value:t.NumberNode(e)},"minecraft:uniform":{value:t.ObjectNode({min_inclusive:t.NumberNode(e),max_exclusive:t.NumberNode(e)})},"minecraft:clamped_normal":{value:t.ObjectNode({min:t.NumberNode(),max:t.NumberNode(),mean:t.NumberNode(),deviation:t.NumberNode()})},"minecraft:trapezoid":{value:t.ObjectNode({min:t.NumberNode(),max:t.NumberNode(),plateau:t.NumberNode()})}}),o.register("float_provider",e.FloatProvider()),e.IntProvider=e=>l("int_provider_type","number","value","minecraft:constant",null,"int_provider",{"minecraft:constant":{value:t.NumberNode(s({integer:!0},e))},"minecraft:uniform":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e))})},"minecraft:biased_to_bottom":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e))})},"minecraft:clamped":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e)),source:a("int_provider")})},"minecraft:clamped_normal":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e)),mean:t.NumberNode(),deviation:t.NumberNode()})},"minecraft:weighted_list":{distribution:t.ListNode(t.ObjectNode({weight:t.NumberNode({integer:!0}),data:a("int_provider")}))}}),o.register("int_provider",e.IntProvider()),o.register("vertical_anchor",t.ChoiceNode(["absolute","above_bottom","below_top"].map((e=>({type:e,match:t=>void 0!==(null==t?void 0:t[e]),change:t=>{var r,o,i;return{[e]:null!==(i=null!==(o=null!==(r=t.absolute)&&void 0!==r?r:t.above_bottom)&&void 0!==o?o:t.below_top)&&void 0!==i?i:0}},node:t.ObjectNode({[e]:t.NumberNode({integer:!0,min:-2048,max:2047})})}))),{context:"vertical_anchor"})),o.register("height_provider",l("height_provider_type","number","value","minecraft:constant",null,"height_provider",{"minecraft:constant":{value:a("vertical_anchor")},"minecraft:uniform":{min_inclusive:a("vertical_anchor"),max_inclusive:a("vertical_anchor")},"minecraft:biased_to_bottom":{min_inclusive:a("vertical_anchor"),max_inclusive:a("vertical_anchor"),inner:t.Opt(t.NumberNode({integer:!0,min:1}))},"minecraft:very_biased_to_bottom":{min_inclusive:a("vertical_anchor"),max_inclusive:a("vertical_anchor"),inner:t.Opt(t.NumberNode({integer:!0,min:1}))},"minecraft:trapezoid":{min_inclusive:a("vertical_anchor"),max_inclusive:a("vertical_anchor"),plateau:t.Opt(t.NumberNode({integer:!0}))}})),e.InclusiveRange=e=>t.ObjectNode({min_inclusive:t.NumberNode(e),max_inclusive:t.NumberNode(e)},{context:"range"}),o.register("noise_parameters",t.Mod(t.ObjectNode({firstOctave:t.NumberNode({integer:!0}),amplitudes:t.ListNode(t.NumberNode())},{context:"noise_parameters"}),{default:()=>({firstOctave:-7,amplitudes:[1,1]})})),e.ConditionCases=(e=n({enum:"entity_source"}))=>({"minecraft:alternative":{terms:t.ListNode(a("condition"))},"minecraft:block_state_property":{block:n({validator:"resource",params:{pool:"block"}}),properties:t.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})},"minecraft:damage_source_properties":{predicate:a("damage_source_predicate")},"minecraft:entity_properties":{entity:e,predicate:a("entity_predicate")},"minecraft:entity_scores":{entity:e,scores:t.MapNode(n({validator:"objective"}),a("int_range"))},"minecraft:inverted":{term:a("condition")},"minecraft:killed_by_player":{inverse:t.Opt(t.BooleanNode())},"minecraft:location_check":{offsetX:t.Opt(t.NumberNode({integer:!0})),offsetY:t.Opt(t.NumberNode({integer:!0})),offsetZ:t.Opt(t.NumberNode({integer:!0})),predicate:a("location_predicate")},"minecraft:match_tool":{predicate:a("item_predicate")},"minecraft:random_chance":{chance:t.NumberNode({min:0,max:1})},"minecraft:random_chance_with_looting":{chance:t.NumberNode({min:0,max:1}),looting_multiplier:t.NumberNode()},"minecraft:reference":{name:n({validator:"resource",params:{pool:"$predicate"}})},"minecraft:table_bonus":{enchantment:n({validator:"resource",params:{pool:"enchantment"}}),chances:t.ListNode(t.NumberNode({min:0,max:1}))},"minecraft:time_check":{value:a("int_range"),period:t.Opt(t.NumberNode({integer:!0}))},"minecraft:value_check":{value:a("number_provider"),range:a("int_range")},"minecraft:weather_check":{raining:t.Opt(t.BooleanNode()),thundering:t.Opt(t.BooleanNode())}}),e.FunctionCases=(e,r=n({enum:"copy_source"}),o=n({enum:"entity_source"}))=>{const c={"minecraft:apply_bonus":{enchantment:n({validator:"resource",params:{pool:"enchantment"}}),formula:n({validator:"resource",params:{pool:i.get("loot_table_apply_bonus_formula")}}),parameters:t.Mod(t.ObjectNode({bonusMultiplier:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:uniform_bonus_count"===e.pop().push("formula").get()}),extra:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()}),probability:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()})}),{enabled:e=>"minecraft:ore_drops"!==e.push("formula").get()})},"minecraft:copy_name":{source:r},"minecraft:copy_nbt":{source:a("nbt_provider"),ops:t.ListNode(t.ObjectNode({source:n({validator:"nbt_path",params:{category:{getter:"copy_source",path:["pop","pop","pop",{push:"source"}]}}}),target:n({validator:"nbt_path",params:{category:"minecraft:item"}}),op:n({enum:["replace","append","merge"]})},{context:"nbt_operation"}))},"minecraft:copy_state":{block:n({validator:"resource",params:{pool:"block"}}),properties:t.ListNode(n({validator:"block_state_key",params:{id:["pop","pop",{push:"block"}]}}))},"minecraft:enchant_randomly":{enchantments:t.Opt(t.ListNode(n({validator:"resource",params:{pool:"enchantment"}})))},"minecraft:enchant_with_levels":{levels:a("number_provider"),treasure:t.Opt(t.BooleanNode())},"minecraft:exploration_map":{destination:t.Opt(n({enum:"map_feature"})),decoration:t.Opt(n({enum:"map_decoration"})),zoom:t.Opt(t.NumberNode({integer:!0})),search_radius:t.Opt(t.NumberNode({integer:!0})),skip_existing_chunks:t.Opt(t.BooleanNode())},"minecraft:fill_player_head":{entity:o},"minecraft:limit_count":{limit:a("int_range")},"minecraft:looting_enchant":{count:a("number_provider"),limit:t.Opt(t.NumberNode({integer:!0}))},"minecraft:set_attributes":{modifiers:t.ListNode(a("attribute_modifier"))},"minecraft:set_banner_pattern":{patterns:t.ListNode(t.ObjectNode({pattern:n({enum:"banner_pattern"}),color:n({enum:"dye_color"})})),append:t.Opt(t.BooleanNode())},"minecraft:set_contents":{entries:t.ListNode(a("loot_entry"))},"minecraft:set_count":{count:a("number_provider"),add:t.Opt(t.BooleanNode())},"minecraft:set_damage":{damage:a("number_provider"),add:t.Opt(t.BooleanNode())},"minecraft:set_enchantments":{enchantments:t.MapNode(n({validator:"resource",params:{pool:"enchantment"}}),a("number_provider")),add:t.Opt(t.BooleanNode())},"minecraft:set_loot_table":{name:n({validator:"resource",params:{pool:"$loot_table"}}),seed:t.Opt(t.NumberNode({integer:!0}))},"minecraft:set_lore":{entity:t.Opt(o),lore:t.ListNode(a("text_component")),replace:t.Opt(t.BooleanNode())},"minecraft:set_name":{entity:t.Opt(o),name:t.Opt(a("text_component"))},"minecraft:set_nbt":{tag:n({validator:"nbt",params:{registry:{category:"minecraft:item"}}})},"minecraft:set_potion":{id:n({validator:"resource",params:{pool:"potion"}})},"minecraft:set_stew_effect":{effects:t.Opt(t.ListNode(t.ObjectNode({type:n({validator:"resource",params:{pool:"mob_effect"}}),duration:a("number_provider")})))}},l={};return i.get("loot_function_type").forEach((t=>{l[t]=s(s({},c[t]),e)})),l},e.DimensionTypePresets=r=>t.ObjectOrPreset(n({validator:"resource",params:{pool:"$dimension_type"}}),r,{"minecraft:overworld":e.DefaultDimensionType,"minecraft:the_nether":{name:"minecraft:the_nether",ultrawarm:!0,natural:!1,shrunk:!0,piglin_safe:!0,respawn_anchor_works:!0,bed_works:!1,has_raids:!1,has_skylight:!1,has_ceiling:!0,ambient_light:.1,fixed_time:18e3,logical_height:128,effects:"minecraft:the_nether",infiniburn:"minecraft:infiniburn_nether",min_y:0,height:256},"minecraft:the_end":{name:"minecraft:the_end",ultrawarm:!1,natural:!1,shrunk:!1,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!1,has_raids:!0,has_skylight:!1,has_ceiling:!1,ambient_light:0,fixed_time:6e3,logical_height:256,effects:"minecraft:the_end",infiniburn:"minecraft:infiniburn_end",min_y:0,height:256}}),e.NoiseSettingsPresets=o=>t.ObjectOrPreset(n({validator:"resource",params:{pool:"$worldgen/noise_settings"}}),o,{"minecraft:overworld":e.DefaultNoiseSettings,"minecraft:nether":{bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,noise_caves_enabled:!1,deepslate_enabled:!1,ore_veins_enabled:!1,noodle_caves_enabled:!1,disable_mob_generation:!1,aquifers_enabled:!1,default_block:{Name:"minecraft:netherrack"},default_fluid:{Properties:{level:"0"},Name:"minecraft:lava"},noise:{min_y:0,height:128,size_horizontal:1,size_vertical:2,density_factor:0,density_offset:-.030078125,top_slide:{target:.9375,size:3,offset:0},bottom_slide:{target:2.5,size:4,offset:-1},sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{structures:r}},"minecraft:end":{bedrock_roof_position:-2147483648,bedrock_floor_position:-2147483648,sea_level:0,noise_caves_enabled:!1,deepslate_enabled:!1,ore_veins_enabled:!1,noodle_caves_enabled:!1,disable_mob_generation:!1,aquifers_enabled:!1,default_block:{Name:"minecraft:end_stone"},default_fluid:{Name:"minecraft:air"},noise:{min_y:0,height:128,size_horizontal:2,size_vertical:1,density_factor:0,density_offset:0,island_noise_override:!0,top_slide:{target:-23.4375,size:64,offset:-46},bottom_slide:{target:-.234375,size:7,offset:1},sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{structures:r}},"minecraft:amplified":{bedrock_roof_position:-2147483648,bedrock_floor_position:0,sea_level:63,noise_caves_enabled:!0,deepslate_enabled:!0,ore_veins_enabled:!0,noodle_caves_enabled:!0,disable_mob_generation:!1,aquifers_enabled:!0,default_block:{Name:"minecraft:stone"},default_fluid:{Properties:{level:"0"},Name:"minecraft:water"},noise:{min_y:-64,height:384,size_horizontal:1,size_vertical:2,density_factor:1,density_offset:-.51875,amplified:!0,top_slide:{target:-.078125,size:2,offset:8},bottom_slide:{target:.1171875,size:3,offset:0},sampling:{xz_scale:.9999999814507745,y_scale:.9999999814507745,xz_factor:80,y_factor:160}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{stronghold:{distance:32,spread:3,count:128},structures:r}},"minecraft:caves":{bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,noise_caves_enabled:!1,deepslate_enabled:!1,ore_veins_enabled:!1,noodle_caves_enabled:!1,disable_mob_generation:!1,aquifers_enabled:!1,default_block:{Name:"minecraft:stone"},default_fluid:{Properties:{level:"0"},Name:"minecraft:water"},noise:{min_y:0,height:128,size_horizontal:1,size_vertical:2,density_factor:0,density_offset:-.030078125,top_slide:{target:.9375,size:3,offset:0},bottom_slide:{target:2.5,size:4,offset:-1},sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{stronghold:{distance:32,spread:3,count:128},structures:r}},"minecraft:floating_islands":{bedrock_roof_position:-2147483648,bedrock_floor_position:-2147483648,sea_level:0,noise_caves_enabled:!1,deepslate_enabled:!1,ore_veins_enabled:!1,noodle_caves_enabled:!1,disable_mob_generation:!1,aquifers_enabled:!1,default_block:{Name:"minecraft:stone"},default_fluid:{Properties:{level:"0"},Name:"minecraft:water"},noise:{min_y:0,height:128,size_horizontal:2,size_vertical:1,density_factor:0,density_offset:0,island_noise_override:!0,top_slide:{target:-23.4375,size:64,offset:-46},bottom_slide:{target:-.234375,size:7,offset:1},sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{stronghold:{distance:32,spread:3,count:128},structures:r}}})}}(Fl);var El={};Object.defineProperty(El,"__esModule",{value:!0}),El.initConditionSchemas=void 0;const Dl=Ce,$l=Fl;El.initConditionSchemas=function(e,t){const r=Dl.Reference.bind(void 0,e),o=Dl.StringNode.bind(void 0,t);e.register("predicate",Dl.ObjectOrList(r("condition"),{choiceContext:"condition"})),e.register("condition",Dl.Mod(Dl.ObjectNode({condition:o({validator:"resource",params:{pool:"loot_condition_type"}}),[Dl.Switch]:[{push:"condition"}],[Dl.Case]:$l.ConditionCases()},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:entity_properties",entity:"this"})}))};var Ul={};Object.defineProperty(Ul,"__esModule",{value:!0}),Ul.initDimensionSchemas=void 0;const ql=Ce,Hl=Fl;Ul.initDimensionSchemas=function(e,t){const r=ql.Reference.bind(void 0,e),o=ql.StringNode.bind(void 0,t);e.register("dimension",ql.Mod(ql.ObjectNode({type:Hl.DimensionTypePresets(r("dimension_type")),generator:ql.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/chunk_generator"}}),[ql.Switch]:[{push:"type"}],[ql.Case]:{"minecraft:noise":{seed:ql.NumberNode({integer:!0}),settings:Hl.NoiseSettingsPresets(r("noise_settings")),biome_source:ql.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/biome_source"}}),[ql.Switch]:[{push:"type"}],[ql.Case]:{"minecraft:fixed":{biome:o({validator:"resource",params:{pool:"$worldgen/biome"}})},"minecraft:multi_noise":{preset:ql.Opt(o({validator:"resource",params:{pool:["minecraft:overworld","minecraft:nether"]}})),biomes:ql.Mod(ql.ListNode(r("generator_biome")),{enabled:e=>void 0===e.push("preset").get(),default:()=>[{biome:"minecraft:plains"}]})},"minecraft:checkerboard":{scale:ql.Opt(ql.NumberNode({integer:!0,min:0,max:62})),biomes:ql.ListNode(o({validator:"resource",params:{pool:"$worldgen/biome"}}))},"minecraft:the_end":{seed:ql.NumberNode({integer:!0})}}},{category:"predicate",disableSwitchContext:!0})},"minecraft:flat":{settings:ql.ObjectNode({biome:ql.Opt(o({validator:"resource",params:{pool:"$worldgen/biome"}})),lakes:ql.Opt(ql.BooleanNode()),features:ql.Opt(ql.BooleanNode()),layers:ql.ListNode(r("generator_layer")),structures:r("generator_structures")})}}},{disableSwitchContext:!0})},{category:"pool",context:"dimension"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:fixed",seed:e,biome:"minecraft:plains"},settings:"minecraft:overworld"}}}}));const i=ql.ChoiceNode([{type:"number",node:ql.NumberNode({min:-2,max:2}),change:e=>{var t;return null!==(t=e[0])&&void 0!==t?t:0}},{type:"list",node:ql.ListNode(ql.NumberNode({min:-2,max:2}),{minLength:2,maxLength:2}),change:e=>[null!=e?e:0,null!=e?e:0]}]);e.register("generator_biome",ql.Mod(ql.ObjectNode({biome:o({validator:"resource",params:{pool:"$worldgen/biome"}}),parameters:ql.ObjectNode({temperature:i,humidity:i,continentalness:i,erosion:i,weirdness:i,depth:i,offset:ql.NumberNode({min:0,max:1})})},{context:"generator_biome"}),{default:()=>({biome:"minecraft:plains",parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}})}))};var Zl={};Object.defineProperty(Zl,"__esModule",{value:!0}),Zl.initDimensionTypeSchemas=void 0;const Wl=Ce,Xl=Fl;Zl.initDimensionTypeSchemas=function(e,t){const r=Wl.StringNode.bind(void 0,t);e.register("dimension_type",Wl.Mod(Wl.ObjectNode({ultrawarm:Wl.BooleanNode(),natural:Wl.BooleanNode(),piglin_safe:Wl.BooleanNode(),respawn_anchor_works:Wl.BooleanNode(),bed_works:Wl.BooleanNode(),has_raids:Wl.BooleanNode(),has_skylight:Wl.BooleanNode(),has_ceiling:Wl.BooleanNode(),coordinate_scale:Wl.NumberNode({min:1e-5,max:3e7}),ambient_light:Wl.NumberNode(),fixed_time:Wl.Opt(Wl.NumberNode({integer:!0})),logical_height:Wl.NumberNode({integer:!0,min:0,max:4096}),effects:Wl.Opt(r({enum:["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]})),infiniburn:r({validator:"resource",params:{pool:"$tag/block"}}),min_y:Wl.NumberNode({integer:!0,min:-2048,max:2047}),height:Wl.NumberNode({integer:!0,min:0,max:4096})},{context:"dimension_type"}),(e=>({default:()=>Xl.DefaultDimensionType,validate:(t,r,o,i)=>((null==(r=e.validate(t,r,o,i))?void 0:r.min_y)+(null==r?void 0:r.height)>2047&&o.add(t.push("height"),"error.min_y_plus_height",2047),(null==r?void 0:r.logical_height)>(null==r?void 0:r.height)&&o.add(t.push("logical_height"),"error.logical_height"),(null==r?void 0:r.height)%16!=0&&o.add(t.push("height"),"error.height_multiple",16),(null==r?void 0:r.min_y)%16!=0&&o.add(t.push("min_y"),"error.min_y_multiple",16),r)}))))};var Gl={};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.initItemModifierSchemas=void 0;const Vl=Ce,Jl=Fl;Gl.initItemModifierSchemas=function(e,t){const r=Vl.Reference.bind(void 0,e),o=Vl.StringNode.bind(void 0,t);e.register("item_modifier",Vl.ObjectOrList(r("function"),{choiceContext:"function"}));const i={conditions:Vl.Opt(Vl.ListNode(r("condition")))};e.register("function",Vl.Mod(Vl.ObjectNode({function:o({validator:"resource",params:{pool:"loot_function_type"}}),[Vl.Switch]:[{push:"function"}],[Vl.Case]:Jl.FunctionCases(i)},{category:"function",context:"function"}),{default:()=>[{function:"minecraft:set_count",count:1}]}))};var Yl={},Kl={};Object.defineProperty(Kl,"__esModule",{value:!0}),Kl.LootFunctions=Kl.LootConditions=Kl.LootCopySources=Kl.LootEntitySources=Kl.LootTableTypes=void 0,Kl.LootTableTypes=new Map([["minecraft:advancement_entity",{requires:[7,8],allows:[]}],["minecraft:advancement_reward",{requires:[7,8],allows:[]}],["minecraft:barter",{requires:[8],allows:[]}],["minecraft:block",{requires:[1,7,9],allows:[0,4,8]}],["minecraft:chest",{requires:[7],allows:[8]}],["minecraft:command",{requires:[7],allows:[8]}],["minecraft:empty",{requires:[],allows:[]}],["minecraft:entity",{requires:[2,7,8],allows:[3,5,6]}],["minecraft:fishing",{requires:[7,9],allows:[8]}],["minecraft:generic",{requires:[2,0,1,3,4,5,6,7,8,9],allows:[]}],["minecraft:gift",{requires:[7,8],allows:[]}],["minecraft:selector",{requires:[7],allows:[8]}]]),Kl.LootEntitySources=new Map([["direct_killer",[3]],["killer",[5]],["killer_player",[5]],["this",[8]]]),Kl.LootCopySources=new Map([["block_entity",[0]],["killer",[5]],["killer_player",[5]],["this",[8]]]),Kl.LootConditions=new Map([["minecraft:alternative",[]],["minecraft:block_state_property",[1]],["minecraft:damage_source_properties",[2]],["minecraft:entity_properties",[7]],["minecraft:entity_scores",[]],["minecraft:inverted",[]],["minecraft:killed_by_player",[6]],["minecraft:location_check",[]],["minecraft:match_tool",[9]],["minecraft:random_chance",[]],["minecraft:random_chance_with_looting",[5]],["minecraft:reference",[]],["minecraft:survives_explosion",[4]],["minecraft:table_bonus",[9]],["minecraft:time_check",[]],["minecraft:weather_check",[]]]),Kl.LootFunctions=new Map([["minecraft:apply_bonus",[9]],["minecraft:copy_name",[]],["minecraft:copy_nbt",[]],["minecraft:copy_state",[1]],["minecraft:enchant_randomly",[]],["minecraft:enchant_with_levels",[]],["minecraft:exploration_map",[7]],["minecraft:explosion_decay",[]],["minecraft:fill_player_head",[]],["minecraft:furnace_smelt",[]],["minecraft:limit_count",[]],["minecraft:looting_enchant",[5]],["minecraft:set_attributes",[]],["minecraft:set_banner_pattern",[]],["minecraft:set_contents",[]],["minecraft:set_count",[]],["minecraft:set_damage",[]],["minecraft:set_loot_table",[]],["minecraft:set_lore",[]],["minecraft:set_name",[]],["minecraft:set_nbt",[]],["minecraft:set_stew_effect",[]]]),Object.defineProperty(Yl,"__esModule",{value:!0}),Yl.initLootTableSchemas=void 0;const Ql=Ce,ed=Kl,td=Fl;Yl.initLootTableSchemas=function(e,t){const r=Ql.Reference.bind(void 0,e),o=Ql.StringNode.bind(void 0,t),i={conditions:Ql.Opt(Ql.ListNode(r("loot_condition")))},n=s({functions:Ql.Opt(Ql.ListNode(r("loot_function")))},i);function a(e,r,o){const i=[],n=o=>t.get(r).filter((t=>{var r;return(null!==(r=e.get(t))&&void 0!==r?r:[]).every((e=>o.includes(e)))}));for(const[t,{allows:a,requires:s}]of ed.LootTableTypes){const e=[...a,...s];i.push({match:e=>e.getModel().get(new Ql.Path(["type"]))===t,node:o(n(e))})}return i.push({match:e=>!0,node:o(r)}),Ql.SwitchNode(i)}const c=a(ed.LootConditions,"loot_condition_type",(e=>o({validator:"resource",params:{pool:e instanceof Array?e:"loot_condition_type"}}))),l=a(ed.LootFunctions,"loot_function_type",(e=>o({validator:"resource",params:{pool:e instanceof Array?e:"loot_function_type"}}))),d=a(ed.LootEntitySources,"entity_source",(e=>o({enum:e}))),_=a(ed.LootCopySources,"copy_source",(e=>o({enum:e})));e.register("loot_table",Ql.Mod(Ql.ObjectNode({type:Ql.Opt(o({validator:"resource",params:{pool:t.get("loot_context_type")}})),pools:Ql.Opt(Ql.ListNode(Ql.Mod(Ql.ObjectNode(s({rolls:r("number_provider"),bonus_rolls:Ql.Opt(r("number_provider")),entries:Ql.ListNode(r("loot_entry"))},n),{category:"pool",context:"loot_pool"}),{default:()=>({rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]})}))),functions:Ql.Opt(Ql.ListNode(r("loot_function")))},{context:"loot_table"}),{default:()=>({pools:[{rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]}]})}));const m={enabled:e=>{var t;return(null===(t=e.pop().get())||void 0===t?void 0:t.length)>1&&!["minecraft:alternatives","minecraft:group","minecraft:sequence"].includes(e.push("type").get())}};e.register("loot_entry",Ql.Mod(Ql.ObjectNode({type:o({validator:"resource",params:{pool:"loot_pool_entry_type"}}),weight:Ql.Opt(Ql.Mod(Ql.NumberNode({integer:!0,min:1}),m)),quality:Ql.Opt(Ql.Mod(Ql.NumberNode({integer:!0}),m)),[Ql.Switch]:[{push:"type"}],[Ql.Case]:{"minecraft:alternatives":s({children:Ql.ListNode(r("loot_entry"))},n),"minecraft:dynamic":s({name:o()},n),"minecraft:group":s({children:Ql.ListNode(r("loot_entry"))},n),"minecraft:item":s({name:o({validator:"resource",params:{pool:"item"}})},n),"minecraft:loot_table":s({name:o({validator:"resource",params:{pool:"$loot_table"}})},n),"minecraft:sequence":s({children:Ql.ListNode(r("loot_entry"))},n),"minecraft:tag":s({name:o({validator:"resource",params:{pool:"$tag/item"}}),expand:Ql.Opt(Ql.BooleanNode())},n)}},{context:"loot_entry"}),{default:()=>({type:"minecraft:item",name:"minecraft:stone"})})),e.register("loot_function",Ql.Mod(Ql.ObjectNode({function:l,[Ql.Switch]:[{push:"function"}],[Ql.Case]:td.FunctionCases(i,_,d)},{category:"function",context:"function"}),{default:()=>({function:"minecraft:set_count",count:1})})),e.register("loot_condition",Ql.Mod(Ql.ObjectNode({condition:c,[Ql.Switch]:[{push:"condition"}],[Ql.Case]:td.ConditionCases(d)},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:random_chance",chance:.5})})),e.register("attribute_modifier",Ql.Mod(Ql.ObjectNode({attribute:o({validator:"resource",params:{pool:"attribute"}}),name:o(),amount:r("number_provider"),operation:o({enum:["addition","multiply_base","multiply_total"]}),slot:Ql.StringOrList(o({enum:"slot"}))},{context:"attribute_modifier"}),{default:()=>({attribute:"minecraft:generic.max_health",name:"",amount:1,operation:"addition",slot:"mainhand"})}))};var rd={};Object.defineProperty(rd,"__esModule",{value:!0}),rd.initPackMcmetaSchemas=void 0;const od=Ce;rd.initPackMcmetaSchemas=function(e,t){e.register("pack_mcmeta",od.Mod(od.ObjectNode({pack:od.Mod(od.ObjectNode({pack_format:od.Mod(od.NumberNode({integer:!0,min:7,max:7}),{default:()=>7,canUpdate:(e,t)=>7!==t,update:()=>[{name:"pack_format",params:[7],newValue:7}]}),description:od.Reference(e,"text_component")}),{default:()=>({pack_format:7,description:""})})}),{default:()=>({pack:{pack_format:7,description:""}})}))};var id={};Object.defineProperty(id,"__esModule",{value:!0}),id.initPredicatesSchemas=void 0;const nd=Ce;id.initPredicatesSchemas=function(e,t){const r=nd.Reference.bind(void 0,e),o=nd.StringNode.bind(void 0,t),i=nd.ChoiceNode([{type:"string",node:o(),change:e=>"boolean"==typeof e||"number"==typeof e?e.toString():""},{type:"number",node:nd.NumberNode(),change:e=>"string"==typeof e?parseInt(e):0},{type:"object",node:nd.ObjectNode({min:nd.Opt(nd.NumberNode({integer:!0})),max:nd.Opt(nd.NumberNode({integer:!0}))}),change:e=>"number"==typeof e?{min:e,max:e}:{}},{type:"boolean",node:nd.BooleanNode(),change:e=>"true"===e||1===e}]);e.register("item_predicate",nd.ObjectNode({items:nd.Opt(nd.ListNode(o({validator:"resource",params:{pool:"item"}}))),tag:nd.Opt(o({validator:"resource",params:{pool:"$tag/item"}})),count:r("int_bounds"),durability:r("int_bounds"),potion:nd.Opt(o({validator:"resource",params:{pool:"potion"}})),nbt:nd.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}})),enchantments:nd.Opt(nd.ListNode(r("enchantment_predicate")))},{context:"item"})),e.register("enchantment_predicate",nd.ObjectNode({enchantment:nd.Opt(o({validator:"resource",params:{pool:"enchantment"}})),levels:r("int_bounds")},{context:"enchantment"})),e.register("block_predicate",nd.ObjectNode({blocks:nd.Opt(nd.ListNode(o({validator:"resource",params:{pool:"block"}}))),tag:nd.Opt(o({validator:"resource",params:{pool:"$tag/block"}})),nbt:nd.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:block",id:["pop",{push:"block"}]}}})),state:nd.Opt(nd.MapNode(o(),i,{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},{context:"block"})),e.register("fluid_predicate",nd.ObjectNode({fluid:nd.Opt(o({validator:"resource",params:{pool:"fluid"}})),tag:nd.Opt(o({validator:"resource",params:{pool:"$tag/fluid"}})),state:nd.Opt(nd.MapNode(o(),i))},{context:"fluid"})),e.register("location_predicate",nd.ObjectNode({position:nd.Opt(nd.ObjectNode({x:r("float_bounds"),y:r("float_bounds"),z:r("float_bounds")})),biome:nd.Opt(o({validator:"resource",params:{pool:"$worldgen/biome"}})),feature:nd.Opt(o({enum:t.get("worldgen/structure_feature").map((e=>e.slice(10)))})),dimension:nd.Opt(o({validator:"resource",params:{pool:"$dimension"}})),light:nd.Opt(nd.ObjectNode({light:r("int_bounds")})),smokey:nd.Opt(nd.BooleanNode()),block:nd.Opt(r("block_predicate")),fluid:nd.Opt(r("fluid_predicate"))},{context:"location"})),e.register("statistic_predicate",nd.ObjectNode({type:o({validator:"resource",params:{pool:"stat_type"}}),stat:o(),value:r("int_bounds"),[nd.Switch]:[{push:"type"}],[nd.Case]:{"minecraft:mined":{stat:o({validator:"resource",params:{pool:"block"}})},"minecraft:crafted":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:used":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:broken":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:picked_up":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:dropped":{stat:o({validator:"resource",params:{pool:"item"}})},"minecraft:killed":{stat:o({validator:"resource",params:{pool:"entity_type"}})},"minecraft:killed_by":{stat:o({validator:"resource",params:{pool:"entity_type"}})},"minecraft:custom":{stat:o({validator:"resource",params:{pool:"custom_stat"}})}}})),e.register("player_predicate",nd.ObjectNode({gamemode:nd.Opt(o({enum:"gamemode"})),level:r("int_bounds"),advancements:nd.Opt(nd.MapNode(o({validator:"resource",params:{pool:"$advancement"}}),nd.ChoiceNode([{type:"boolean",node:nd.BooleanNode(),change:e=>!0},{type:"object",node:nd.MapNode(o(),nd.BooleanNode())}]))),recipes:nd.Opt(nd.MapNode(o({validator:"resource",params:{pool:"$recipe"}}),nd.BooleanNode())),stats:nd.Opt(nd.ListNode(r("statistic_predicate"))),looking_at:nd.Opt(r("entity_predicate"))},{context:"player"})),e.register("status_effect_predicate",nd.ObjectNode({amplifier:r("int_bounds"),duration:r("int_bounds"),ambient:nd.Opt(nd.BooleanNode()),visible:nd.Opt(nd.BooleanNode())},{context:"status_effect"})),e.register("distance_predicate",nd.ObjectNode({x:r("float_bounds"),y:r("float_bounds"),z:r("float_bounds"),absolute:r("float_bounds"),horizontal:r("float_bounds")},{context:"distance"})),e.register("entity_predicate",nd.ObjectNode({type:nd.Opt(o({validator:"resource",params:{pool:"entity_type",allowTag:!0}})),nbt:nd.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:entity",id:["pop",{push:"type"}]}}})),team:nd.Opt(o({validator:"team"})),location:nd.Opt(r("location_predicate")),stepping_on:nd.Opt(r("location_predicate")),distance:nd.Opt(r("distance_predicate")),flags:nd.Opt(nd.ObjectNode({is_on_fire:nd.Opt(nd.BooleanNode()),is_sneaking:nd.Opt(nd.BooleanNode()),is_sprinting:nd.Opt(nd.BooleanNode()),is_swimming:nd.Opt(nd.BooleanNode()),is_baby:nd.Opt(nd.BooleanNode())})),equipment:nd.Opt(nd.MapNode(o({enum:"slot"}),r("item_predicate"))),player:nd.Opt(r("player_predicate")),vehicle:nd.Opt(r("entity_predicate")),passenger:nd.Opt(r("entity_predicate")),targeted_entity:nd.Opt(r("entity_predicate")),lightning_bolt:nd.Opt(nd.ObjectNode({blocks_set_on_fire:nd.Opt(r("int_bounds")),entity_struck:nd.Opt(r("entity_predicate"))})),fishing_hook:nd.Opt(nd.ObjectNode({in_open_water:nd.Opt(nd.BooleanNode())})),effects:nd.Opt(nd.MapNode(o({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},{context:"entity"})),e.register("damage_source_predicate",nd.ObjectNode({is_explosion:nd.Opt(nd.BooleanNode()),is_fire:nd.Opt(nd.BooleanNode()),is_magic:nd.Opt(nd.BooleanNode()),is_projectile:nd.Opt(nd.BooleanNode()),is_lightning:nd.Opt(nd.BooleanNode()),bypasses_armor:nd.Opt(nd.BooleanNode()),bypasses_invulnerability:nd.Opt(nd.BooleanNode()),bypasses_magic:nd.Opt(nd.BooleanNode()),source_entity:nd.Opt(r("entity_predicate")),direct_entity:nd.Opt(r("entity_predicate"))},{context:"damage_source"})),e.register("damage_predicate",nd.ObjectNode({dealt:r("float_bounds"),taken:r("float_bounds"),blocked:nd.Opt(nd.BooleanNode()),source_entity:nd.Opt(r("entity_predicate")),type:nd.Opt(r("damage_source_predicate"))},{context:"damage"}))};var ad={};Object.defineProperty(ad,"__esModule",{value:!0}),ad.initRecipeSchemas=void 0;const sd=Ce;ad.initRecipeSchemas=function(e,t){const r=sd.Reference.bind(void 0,e),o=sd.StringNode.bind(void 0,t);e.register("recipe",sd.Mod(sd.ObjectNode({type:o({validator:"resource",params:{pool:"recipe_serializer"}}),[sd.Switch]:[{push:"type"}],[sd.Case]:{"minecraft:crafting_shaped":{group:sd.Opt(o({enum:"recipe_group",additional:!0})),pattern:sd.ListNode(o()),key:sd.MapNode(o(),r("recipe_ingredient")),result:r("recipe_result")},"minecraft:crafting_shapeless":{group:sd.Opt(o()),ingredients:sd.ListNode(r("recipe_ingredient")),result:r("recipe_result")},"minecraft:smelting":{group:sd.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:sd.Opt(sd.NumberNode()),cookingtime:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>200}))},"minecraft:blasting":{group:sd.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:sd.Opt(sd.NumberNode()),cookingtime:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:smoking":{group:sd.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:sd.Opt(sd.NumberNode()),cookingtime:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:campfire_cooking":{group:sd.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),experience:sd.Opt(sd.NumberNode()),cookingtime:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:stonecutting":{group:sd.Opt(o()),ingredient:r("recipe_ingredient"),result:o({validator:"resource",params:{pool:"item"}}),count:sd.NumberNode({integer:!0})},"minecraft:smithing":{group:sd.Opt(o()),base:r("recipe_ingredient_object"),addition:r("recipe_ingredient_object"),result:r("recipe_result")}}},{context:"recipe",disableSwitchContext:!0}),{default:()=>({type:"minecraft:crafting_shaped"})})),e.register("recipe_ingredient",sd.Mod(sd.ChoiceNode([{type:"object",node:r("recipe_ingredient_object"),change:e=>e[0]},{type:"list",node:sd.ListNode(r("recipe_ingredient_object")),change:e=>[e]}]),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_ingredient_object",sd.Mod(sd.ObjectNode({item:sd.Opt(o({validator:"resource",params:{pool:"item"}})),tag:sd.Opt(o({validator:"resource",params:{pool:"$tag/item"}}))}),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_result",sd.Mod(sd.ObjectNode({item:o({validator:"resource",params:{pool:"item"}}),count:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>1}))}),{default:()=>({item:"minecraft:stone"})}))};var cd={};Object.defineProperty(cd,"__esModule",{value:!0}),cd.initTagsSchemas=void 0;const ld=Ce;cd.initTagsSchemas=function(e,t){const r=ld.StringNode.bind(void 0,t),o=e=>ld.Mod(ld.ObjectNode({replace:ld.Opt(ld.BooleanNode()),values:ld.ListNode(ld.ChoiceNode([{type:"string",node:r({validator:"resource",params:{pool:e,allowTag:!0}}),change:e=>e.id},{type:"object",node:ld.ObjectNode({id:r({validator:"resource",params:{pool:e,allowTag:!0,allowUnknown:!0}}),required:ld.BooleanNode()}),change:e=>({id:e})}]))},{context:"tag"}),{default:()=>({values:[]})});e.register("block_tag",o("block")),e.register("entity_type_tag",o("entity_type")),e.register("fluid_tag",o("fluid")),e.register("function_tag",o("$function")),e.register("game_event_tag",o("game_event")),e.register("item_tag",o("item"))};var dd={};Object.defineProperty(dd,"__esModule",{value:!0}),dd.initTextComponentSchemas=void 0;const _d=Ce;dd.initTextComponentSchemas=function(e,t){const r=_d.Reference.bind(void 0,e),o=_d.StringNode.bind(void 0,t),i=e=>{var t;return e instanceof Array?i(e[0]):null!==(t=null==e?void 0:e.text)&&void 0!==t?t:"object"==typeof e?"":null==e?void 0:e.toString()};e.register("text_component",_d.Mod(_d.ChoiceNode([{type:"object",node:r("text_component_object"),change:e=>e instanceof Array?"object"==typeof e[0]?e[0]:{text:i(e[0])}:"object"==typeof e?e:{text:i(e)}},{type:"list",node:r("text_component_list"),change:e=>[e]},{type:"string",priority:1,node:o(),change:i},{type:"number",node:_d.NumberNode(),change:e=>{const t=parseFloat(i(e));return isFinite(t)?t:e?1:0}},{type:"boolean",node:_d.BooleanNode(),change:e=>{const t=i(e);return"true"===t||"false"===t?"true"===t:!!t}}],{context:"text_component"}),{default:()=>({text:""})}));const n={color:_d.Opt(o()),font:_d.Opt(o()),bold:_d.Opt(_d.BooleanNode()),italic:_d.Opt(_d.BooleanNode()),underlined:_d.Opt(_d.BooleanNode()),strikethrough:_d.Opt(_d.BooleanNode()),obfuscated:_d.Opt(_d.BooleanNode()),insertion:_d.Opt(o()),clickEvent:_d.Opt(_d.ObjectNode({action:o({enum:["open_url","open_file","run_command","suggest_command","change_page","copy_to_clipboard"]}),[_d.Switch]:[{push:"action"}],[_d.Case]:{change_page:{value:o()},copy_to_clipboard:{value:o()},open_file:{value:o()},open_url:{value:o()},run_command:{value:o({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})},suggest_command:{value:o({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})}}})),hoverEvent:_d.Opt(_d.ObjectNode({action:o({enum:["show_text","show_item","show_entity"]}),[_d.Switch]:[{push:"action"}],[_d.Case]:{show_text:{value:_d.Opt(r("text_component")),contents:_d.Opt(r("text_component"))},show_item:{value:_d.Opt(o({validator:"nbt",params:{module:"util::InventoryItem"}})),contents:_d.Opt(_d.ObjectNode({id:o({validator:"resource",params:{pool:"item"}}),count:_d.Opt(_d.NumberNode({integer:!0})),tag:_d.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"id"}]}}}))}))},show_entity:{value:_d.Opt(_d.ObjectNode({name:_d.Opt(o()),type:_d.Opt(o()),id:_d.Opt(o())})),contents:_d.Opt(_d.Mod(_d.ObjectNode({name:_d.Opt(r("text_component")),type:o({validator:"resource",params:{pool:"entity_type"}}),id:o({validator:"uuid"})}),{default:()=>({type:"minecraft:pig",id:"00000001-0001-0001-0001-000000000001"})}))}}})),extra:_d.Opt(r("text_component_list"))};e.register("text_component_object",_d.Mod(_d.ChoiceNode([{type:"text",match:e=>"object"==typeof e,change:e=>({text:""}),priority:-1,node:_d.ObjectNode(s({text:o()},n))},{type:"translation",match:e=>void 0!==(null==e?void 0:e.translate),change:e=>({translate:""}),node:_d.ObjectNode(s({translate:o(),with:_d.Opt(r("text_component_list"))},n))},{type:"score",match:e=>void 0!==(null==e?void 0:e.score),change:e=>({score:{}}),node:_d.ObjectNode(s({score:_d.ObjectNode({name:o({validator:"entity",params:{amount:"single",type:"entities",isScoreHolder:!0}}),objective:o({validator:"objective"}),value:_d.Opt(o())})},n))},{type:"selector",match:e=>void 0!==(null==e?void 0:e.selector),change:e=>({selector:""}),node:_d.ObjectNode(s({selector:o({validator:"entity",params:{amount:"multiple",type:"entities"}}),separator:_d.Opt(r("text_component"))},n))},{type:"keybind",match:e=>void 0!==(null==e?void 0:e.keybind),change:e=>({keybind:""}),node:_d.ObjectNode(s({keybind:o({enum:"keybind",additional:!0})},n))},{type:"nbt",match:e=>void 0!==(null==e?void 0:e.nbt),change:e=>({nbt:""}),node:_d.ObjectNode(s({nbt:o({validator:"nbt_path"}),block:_d.Opt(o({validator:"vector",params:{dimension:3,isInteger:!0}})),entity:_d.Opt(o({validator:"entity",params:{amount:"multiple",type:"entities"}})),storage:_d.Opt(o({validator:"resource",params:{pool:"$storage"}})),interpret:_d.Opt(_d.BooleanNode()),separator:_d.Opt(r("text_component"))},n))}],{context:"text_component_object",choiceContext:"text_component.object"}),{default:()=>({text:""})})),e.register("text_component_list",_d.Mod(_d.ListNode(r("text_component")),{default:()=>[{text:""}]}))};var md={},pd={};Object.defineProperty(pd,"__esModule",{value:!0}),pd.initBiomeSchemas=void 0;const ud=Ce;pd.initBiomeSchemas=function(e,t){const r=ud.StringNode.bind(void 0,t);e.register("biome",ud.Mod(ud.ObjectNode({temperature:ud.NumberNode(),downfall:ud.NumberNode(),precipitation:r({enum:["none","rain","snow"]}),temperature_modifier:ud.Opt(r({enum:["none","frozen"]})),category:r({enum:"biome_category"}),player_spawn_friendly:ud.Opt(ud.BooleanNode()),creature_spawn_probability:ud.Opt(ud.NumberNode({min:0,max:1})),effects:ud.ObjectNode({sky_color:ud.NumberNode({color:!0}),fog_color:ud.NumberNode({color:!0}),water_color:ud.NumberNode({color:!0}),water_fog_color:ud.NumberNode({color:!0}),grass_color:ud.Opt(ud.NumberNode({color:!0})),foliage_color:ud.Opt(ud.NumberNode({color:!0})),grass_color_modifier:ud.Opt(r({enum:["none","dark_forest","swamp"]})),ambient_sound:ud.Opt(r()),mood_sound:ud.Opt(ud.ObjectNode({sound:r(),tick_delay:ud.NumberNode({integer:!0}),block_search_extent:ud.NumberNode({integer:!0}),offset:ud.NumberNode()})),additions_sound:ud.Opt(ud.ObjectNode({sound:r(),tick_chance:ud.NumberNode({min:0,max:1})})),music:ud.Opt(ud.ObjectNode({sound:r(),min_delay:ud.NumberNode({integer:!0,min:0}),max_delay:ud.NumberNode({integer:!0,min:0}),replace_current_music:ud.BooleanNode()})),particle:ud.Opt(ud.ObjectNode({options:ud.ObjectNode({type:r()}),probability:ud.NumberNode({min:0,max:1})}))}),spawners:ud.MapNode(r({enum:["monster","creature","ambient","axolotls","underground_water_creature","water_creature","water_ambient","misc"]}),ud.Mod(ud.ListNode(ud.ObjectNode({type:r({validator:"resource",params:{pool:"entity_type"}}),weight:ud.NumberNode({integer:!0}),minCount:ud.NumberNode({integer:!0}),maxCount:ud.NumberNode({integer:!0})})),{category:()=>"pool",default:()=>[{type:"minecraft:bat",weight:1}]})),spawn_costs:ud.MapNode(r({validator:"resource",params:{pool:"entity_type"}}),ud.Mod(ud.ObjectNode({energy_budget:ud.NumberNode(),charge:ud.NumberNode()},{category:"function"}),{default:()=>({energy_budget:.12,charge:1})})),carvers:ud.MapNode(r({enum:["air","liquid"]}),ud.Mod(ud.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_carver"}})),{default:()=>["minecraft:cave"]})),features:ud.ListNode(ud.Mod(ud.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_feature"}})),{category:()=>"predicate"}),{maxLength:11})},{context:"biome"}),{default:()=>({temperature:.8,downfall:.4,precipitation:"rain",category:"plains",effects:{sky_color:7907327,fog_color:12638463,water_color:4159204,water_fog_color:329011}})}))};var fd={};Object.defineProperty(fd,"__esModule",{value:!0}),fd.initCarverSchemas=void 0;const hd=Ce,gd=Fl;fd.initCarverSchemas=function(e,t){const r=hd.Reference.bind(void 0,e),o=hd.StringNode.bind(void 0,t),i={vertical_rotation:gd.FloatProvider(),shape:hd.ObjectNode({distance_factor:gd.FloatProvider(),thickness:gd.FloatProvider(),width_smoothness:hd.NumberNode({integer:!0,min:0}),horizontal_radius_factor:gd.FloatProvider(),vertical_radius_default_factor:hd.NumberNode(),vertical_radius_center_factor:hd.NumberNode()})},n={horizontal_radius_multiplier:gd.FloatProvider(),vertical_radius_multiplier:gd.FloatProvider(),floor_level:gd.FloatProvider({min:-1,max:1})};e.register("configured_carver",hd.Mod(hd.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/carver"}}),config:hd.ObjectNode({probability:hd.NumberNode({min:0,max:1}),y:r("height_provider"),yScale:gd.FloatProvider(),lava_level:r("vertical_anchor"),debug_settings:hd.Opt(hd.ObjectNode({debug_mode:hd.Opt(hd.BooleanNode()),air_state:hd.Opt(r("block_state")),water_state:hd.Opt(r("block_state")),lava_state:hd.Opt(r("block_state")),barrier_state:hd.Opt(r("block_state"))})),[hd.Switch]:["pop",{push:"type"}],[hd.Case]:{"minecraft:canyon":i,"minecraft:cave":n,"minecraft:nether_cave":n}})},{context:"carver"}),{default:()=>({type:"minecraft:cave",config:{probability:.1}})}))};var bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.initDecoratorSchemas=void 0;const vd=Ce,yd=Fl;bd.initDecoratorSchemas=function(e,t){const r=vd.Reference.bind(void 0,e),o=vd.StringNode.bind(void 0,t),i={count:yd.IntProvider({min:0,max:256})};e.register("configured_decorator",vd.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/decorator"}}),config:vd.ObjectNode({[vd.Switch]:["pop",{push:"type"}],[vd.Case]:{"minecraft:block_filter":{predicate:r("block_predicate_worldgen")},"minecraft:carving_mask":{step:o({enum:"generation_step"})},"minecraft:cave_surface":{surface:o({enum:["floor","ceiling"]}),floor_to_ceiling_search_range:vd.NumberNode({integer:!0}),allow_water:vd.BooleanNode()},"minecraft:chance":{chance:vd.NumberNode({integer:!0,min:0})},"minecraft:count":i,"minecraft:count_extra":{count:vd.NumberNode({integer:!0,min:0}),extra_count:vd.NumberNode({integer:!0,min:0}),extra_chance:vd.NumberNode({min:0,max:1})},"minecraft:count_multilayer":i,"minecraft:count_noise":{noise_level:vd.NumberNode(),below_noise:vd.NumberNode({integer:!0}),above_noise:vd.NumberNode({integer:!0})},"minecraft:count_noise_biased":{noise_to_count_ratio:vd.NumberNode({integer:!0}),noise_factor:vd.NumberNode(),noise_offset:vd.Opt(vd.NumberNode())},"minecraft:decorated":{outer:r("configured_decorator"),inner:r("configured_decorator")},"minecraft:environment_scan":{direction_of_search:o({enum:["up","down"]}),max_steps:vd.NumberNode({integer:!0,min:1,max:32}),target_condition:r("block_predicate_worldgen")},"minecraft:heightmap":{heightmap:o({enum:"heightmap_type"})},"minecraft:lava_lake":{chance:vd.NumberNode({integer:!0,min:0})},"minecraft:range":{height:r("height_provider")},"minecraft:scatter":{xz_spread:yd.IntProvider({min:-16,max:16}),y_spread:yd.IntProvider({min:-16,max:16})},"minecraft:surface_relative_threshold":{heightmap:o({enum:"heightmap_type"}),min_inclusive:vd.Opt(vd.NumberNode({integer:!0})),max_inclusive:vd.Opt(vd.NumberNode({integer:!0}))},"minecraft:water_depth_threshold":{max_water_depth:vd.NumberNode({integer:!0})}}},{context:"decorator",category:"predicate"})},{context:"decorator",category:"predicate"}))};var Nd={},Od={};Object.defineProperty(Od,"__esModule",{value:!0}),Od.initProcessorListSchemas=Od.Processors=void 0;const wd=Ce;Od.initProcessorListSchemas=function(e,t){const r=wd.Reference.bind(void 0,e),o=wd.StringNode.bind(void 0,t);Od.Processors=wd.ChoiceNode([{type:"string",node:o({validator:"resource",params:{pool:"$worldgen/processor_list"}}),change:e=>{}},{type:"object",node:r("processor_list"),change:e=>({processors:[{processor_type:"minecraft:nop"}]})}]),e.register("processor_list",wd.Mod(wd.ObjectNode({processors:wd.ListNode(r("processor"))},{context:"processor_list"}),{default:()=>({processors:[{processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]}]})})),e.register("processor",wd.Mod(wd.ObjectNode({processor_type:o({validator:"resource",params:{pool:"worldgen/structure_processor"}}),[wd.Switch]:[{push:"processor_type"}],[wd.Case]:{"minecraft:block_age":{mossiness:wd.NumberNode()},"minecraft:block_ignore":{blocks:wd.ListNode(r("block_state"))},"minecraft:block_rot":{integrity:wd.NumberNode({min:0,max:1})},"minecraft:gravity":{heightmap:o({enum:"heightmap_type"}),offset:wd.NumberNode({integer:!0})},"minecraft:protected_blocks":{value:o({validator:"resource",params:{pool:"$tag/block"}})},"minecraft:rule":{rules:wd.ListNode(r("processor_rule"))}}},{category:"function",context:"processor"}),{default:()=>({processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]})})),e.register("processor_rule",wd.Mod(wd.ObjectNode({position_predicate:wd.Opt(r("pos_rule_test")),location_predicate:r("rule_test"),input_predicate:r("rule_test"),output_state:r("block_state"),output_nbt:wd.Opt(o({validator:"nbt",params:{registry:{category:"minecraft:block"}}}))},{category:"predicate",context:"processor_rule"}),{default:()=>({location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}})}));const i={min_dist:wd.Opt(wd.NumberNode({min:0,max:255,integer:!0})),max_dist:wd.Opt(wd.NumberNode({min:0,max:255,integer:!0})),min_chance:wd.Opt(wd.NumberNode({min:0,max:1})),max_chance:wd.Opt(wd.NumberNode({min:0,max:1}))};e.register("pos_rule_test",wd.ObjectNode({predicate_type:o({validator:"resource",params:{pool:"pos_rule_test"}}),[wd.Switch]:[{push:"predicate_type"}],[wd.Case]:{"minecraft:axis_aligned_linear_pos":s({axis:o({enum:["x","y","z"]})},i),"minecraft:linear_pos":i}},{context:"pos_rule_test",disableSwitchContext:!0})),e.register("rule_test",wd.ObjectNode({predicate_type:o({validator:"resource",params:{pool:"rule_test"}}),[wd.Switch]:[{push:"predicate_type"}],[wd.Case]:{"minecraft:block_match":{block:o({validator:"resource",params:{pool:"block"}})},"minecraft:blockstate_match":{block_state:r("block_state")},"minecraft:random_block_match":{block:o({validator:"resource",params:{pool:"block"}}),probability:wd.NumberNode({min:0,max:1})},"minecraft:random_blockstate_match":{block_state:r("block_state"),probability:wd.NumberNode({min:0,max:1})},"minecraft:tag_match":{tag:o({validator:"resource",params:{pool:"$tag/block"}})}}},{context:"rule_test",disableSwitchContext:!0}))},Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.initFeatureSchemas=void 0;const kd=Ce,xd=Fl,Sd=Od;Nd.initFeatureSchemas=function(e,t){const r=kd.Reference.bind(void 0,e),o=kd.StringNode.bind(void 0,t),i=kd.ChoiceNode([{type:"string",node:o({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:r("configured_feature")}],{choiceContext:"feature"}),n={tries:kd.Opt(kd.NumberNode({integer:!0,min:1})),xz_spread:kd.Opt(kd.NumberNode({integer:!0,min:0})),y_spread:kd.Opt(kd.NumberNode({integer:!0,min:0})),feature:i},a={state:r("block_state"),radius:xd.IntProvider({min:0,max:8}),half_height:kd.NumberNode({integer:!0,min:0,max:4}),targets:kd.ListNode(r("block_state"))},l={cap_provider:r("block_state_provider"),stem_provider:r("block_state_provider"),foliage_radius:kd.Opt(kd.NumberNode({integer:!0}))},d=kd.ObjectNode({target:r("rule_test"),state:r("block_state")}),_={size:kd.NumberNode({integer:!0,min:0,max:64}),discard_chance_on_air_exposure:kd.NumberNode({min:0,max:1}),targets:kd.ListNode(d)},m={surface:o({enum:"cave_surface"}),depth:xd.IntProvider({min:1,max:128}),vertical_range:kd.NumberNode({integer:!0,min:1,max:256}),extra_bottom_block_chance:kd.NumberNode({min:0,max:1}),extra_edge_column_chance:kd.NumberNode({min:0,max:1}),vegetation_chance:kd.NumberNode({min:0,max:1}),xz_radius:xd.IntProvider(),replaceable:o({validator:"resource",params:{pool:"$tag/block"}}),ground_state:r("block_state_provider"),vegetation_feature:i};e.register("configured_feature",kd.Mod(kd.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/feature"}}),config:kd.ObjectNode({[kd.Switch]:["pop",{push:"type"}],[kd.Case]:{"minecraft:bamboo":{probability:kd.NumberNode({min:0,max:1})},"minecraft:basalt_columns":{reach:xd.IntProvider({min:0,max:3}),height:xd.IntProvider({min:1,max:10})},"minecraft:block_column":{direction:o({enum:["up","down","north","east","south","west"]}),allowed_placement:r("block_predicate_worldgen"),prioritize_tip:kd.BooleanNode(),layers:kd.ListNode(kd.ObjectNode({height:xd.IntProvider({min:0}),provider:r("block_state_provider")}))},"minecraft:block_pile":{state_provider:r("block_state_provider")},"minecraft:decorated":{decorator:r("configured_decorator"),feature:i},"minecraft:decorated_flower":{decorator:r("configured_decorator"),feature:i},"minecraft:delta_feature":{contents:r("block_state"),rim:r("block_state"),size:xd.IntProvider({min:0,max:16}),rim_size:xd.IntProvider({min:0,max:16})},"minecraft:disk":a,"minecraft:dripstone_cluster":{floor_to_ceiling_search_range:kd.NumberNode({integer:!0,min:1,max:512}),height:xd.IntProvider({min:0,max:128}),radius:xd.IntProvider({min:0,max:128}),max_stalagmite_stalactite_height_diff:kd.NumberNode({integer:!0,min:0,max:64}),height_deviation:kd.NumberNode({integer:!0,min:1,max:64}),dripstone_block_layer_thickness:xd.IntProvider({min:0,max:128}),density:xd.FloatProvider({min:0,max:2}),wetness:xd.FloatProvider({min:0,max:2}),chance_of_dripstone_column_at_max_distance_from_center:kd.NumberNode({min:0,max:1}),max_distance_from_edge_affecting_chance_of_dripstone_column:kd.NumberNode({integer:!0,min:1,max:64}),max_distance_from_center_affecting_height_bias:kd.NumberNode({integer:!0,min:1,max:64})},"minecraft:end_gateway":{exact:kd.BooleanNode(),exit:kd.Opt(r("block_pos"))},"minecraft:end_spike":{crystal_invulnerable:kd.Opt(kd.BooleanNode()),crystal_beam_target:kd.Opt(r("block_pos")),spikes:kd.ListNode(kd.ObjectNode({centerX:kd.Opt(kd.NumberNode({integer:!0})),centerZ:kd.Opt(kd.NumberNode({integer:!0})),radius:kd.Opt(kd.NumberNode({integer:!0})),height:kd.Opt(kd.NumberNode({integer:!0})),guarded:kd.Opt(kd.BooleanNode())}))},"minecraft:fill_layer":{state:r("block_state"),height:kd.NumberNode({integer:!0,min:0,max:255})},"minecraft:flower":n,"minecraft:forest_rock":{state:r("block_state")},"minecraft:fossil":{max_empty_corners_allowed:kd.NumberNode({integer:!0,min:0,max:7}),fossil_structures:kd.ListNode(o({validator:"resource",params:{pool:"$structure"}})),overlay_structures:kd.ListNode(o({validator:"resource",params:{pool:"$structure"}})),fossil_processors:Sd.Processors,overlay_processors:Sd.Processors},"minecraft:geode":{blocks:kd.ObjectNode({filling_provider:r("block_state_provider"),inner_layer_provider:r("block_state_provider"),alternate_inner_layer_provider:r("block_state_provider"),middle_layer_provider:r("block_state_provider"),outer_layer_provider:r("block_state_provider"),inner_placements:kd.ListNode(r("block_state")),cannot_replace:o({validator:"resource",params:{pool:"$tag/block"}}),invalid_blocks:o({validator:"resource",params:{pool:"$tag/block"}})}),layers:kd.ObjectNode({filling:kd.Opt(kd.NumberNode({min:.01,max:50})),inner_layer:kd.Opt(kd.NumberNode({min:.01,max:50})),middle_layer:kd.Opt(kd.NumberNode({min:.01,max:50})),outer_layer:kd.Opt(kd.NumberNode({min:.01,max:50}))}),crack:kd.ObjectNode({generate_crack_chance:kd.Opt(kd.NumberNode({min:0,max:1})),base_crack_size:kd.Opt(kd.NumberNode({min:0,max:5})),crack_point_offset:kd.Opt(kd.NumberNode({min:0,max:10,integer:!0}))}),noise_multiplier:kd.Opt(kd.NumberNode({min:0,max:1})),use_potential_placements_chance:kd.Opt(kd.NumberNode({min:0,max:1})),use_alternate_layer0_chance:kd.Opt(kd.NumberNode({min:0,max:1})),placements_require_layer0_alternate:kd.Opt(kd.BooleanNode()),outer_wall_distance:kd.Opt(xd.IntProvider({min:1,max:20})),distribution_points:kd.Opt(xd.IntProvider({min:1,max:20})),point_offset:kd.Opt(xd.IntProvider({min:0,max:10})),min_gen_offset:kd.Opt(kd.NumberNode({integer:!0})),max_gen_offset:kd.Opt(kd.NumberNode({integer:!0})),invalid_blocks_threshold:kd.NumberNode({integer:!0})},"minecraft:glow_lichen":{search_range:kd.Opt(kd.NumberNode({min:1,max:64,integer:!0})),chance_of_spreading:kd.Opt(kd.NumberNode({min:0,max:1})),can_place_on_floor:kd.Opt(kd.BooleanNode()),can_place_on_ceiling:kd.Opt(kd.BooleanNode()),can_place_on_wall:kd.Opt(kd.BooleanNode()),can_be_placed_on:kd.ListNode(r("block_state"))},"minecraft:huge_brown_mushroom":l,"minecraft:huge_fungus":{hat_state:r("block_state"),decor_state:r("block_state"),stem_state:r("block_state"),valid_base_block:r("block_state"),planted:kd.Opt(kd.BooleanNode())},"minecraft:huge_red_mushroom":l,"minecraft:ice_patch":a,"minecraft:iceberg":{state:r("block_state")},"minecraft:lake":{state:r("block_state")},"minecraft:large_dripstone":{floor_to_ceiling_search_range:kd.Opt(kd.NumberNode({integer:!0,min:1,max:512})),column_radius:xd.IntProvider({min:0,max:60}),height_scale:xd.FloatProvider({min:0,max:20}),max_column_radius_to_cave_height_ratio:kd.NumberNode({min:0,max:1}),stalactite_bluntness:xd.FloatProvider({min:.1,max:10}),stalagmite_bluntness:xd.FloatProvider({min:.1,max:10}),wind_speed:xd.FloatProvider({min:0,max:2}),min_radius_for_wind:kd.NumberNode({integer:!0,min:0,max:100}),min_bluntness_for_wind:kd.NumberNode({min:0,max:5})},"minecraft:nether_forest_vegetation":{state_provider:r("block_state_provider")},"minecraft:netherrack_replace_blobs":{state:r("block_state"),target:r("block_state"),radius:xd.IntProvider({min:0,max:12})},"minecraft:no_bonemeal_flower":n,"minecraft:ore":_,"minecraft:pointed_dripstone":{chance_of_taller_dripstone:kd.Opt(kd.NumberNode({min:0,max:1})),chance_of_directional_spread:kd.Opt(kd.NumberNode({min:0,max:1})),chance_of_spread_radius2:kd.Opt(kd.NumberNode({min:0,max:1})),chance_of_spread_radius3:kd.Opt(kd.NumberNode({min:0,max:1}))},"minecraft:random_patch":n,"minecraft:random_boolean_selector":{feature_false:i,feature_true:i},"minecraft:random_selector":{features:kd.ListNode(kd.ObjectNode({chance:kd.NumberNode({min:0,max:1}),feature:i})),default:i},"minecraft:replace_single_block":{targets:kd.ListNode(d)},"minecraft:root_system":{required_vertical_space_for_tree:kd.NumberNode({integer:!0,min:1,max:64}),root_radius:kd.NumberNode({integer:!0,min:1,max:64}),root_placement_attempts:kd.NumberNode({integer:!0,min:1,max:256}),root_column_max_height:kd.NumberNode({integer:!0,min:1,max:4096}),hanging_root_radius:kd.NumberNode({integer:!0,min:1,max:64}),hanging_roots_vertical_span:kd.NumberNode({integer:!0,min:0,max:16}),hanging_root_placement_attempts:kd.NumberNode({integer:!0,min:0,max:256}),allowed_vertical_water_for_tree:kd.NumberNode({integer:!0,min:1,max:64}),root_replaceable:o({validator:"resource",params:{pool:"$tag/block"}}),root_state_provider:r("block_state_provider"),hanging_root_state_provider:r("block_state_provider"),feature:i},"minecraft:scattered_ore":_,"minecraft:sea_pickle":{count:xd.IntProvider({min:0,max:256})},"minecraft:seagrass":{probability:kd.NumberNode({min:0,max:1})},"minecraft:simple_block":{to_place:r("block_state_provider")},"minecraft:simple_random_selector":{features:kd.ListNode(i)},"minecraft:spring_feature":{state:r("fluid_state"),rock_count:kd.NumberNode({integer:!0}),hole_count:kd.NumberNode({integer:!0}),requires_block_below:kd.BooleanNode(),valid_blocks:kd.ListNode(o({validator:"resource",params:{pool:"block"}}))},"minecraft:tree":{ignore_vines:kd.Opt(kd.BooleanNode()),force_dirt:kd.Opt(kd.BooleanNode()),minimum_size:r("feature_size"),dirt_provider:r("block_state_provider"),trunk_provider:r("block_state_provider"),foliage_provider:r("block_state_provider"),trunk_placer:kd.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/trunk_placer_type"}}),base_height:kd.NumberNode({integer:!0,min:0,max:32}),height_rand_a:kd.NumberNode({integer:!0,min:0,max:24}),height_rand_b:kd.NumberNode({integer:!0,min:0,max:24}),[kd.Switch]:[{push:"type"}],[kd.Case]:{"minecraft:bending_trunk_placer":{bend_length:xd.IntProvider({min:1,max:64}),min_height_for_leaves:kd.Opt(kd.NumberNode({integer:!0,min:1}))}}},{context:"trunk_placer"}),foliage_placer:kd.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/foliage_placer_type"}}),radius:xd.IntProvider({min:0,max:16}),offset:xd.IntProvider({min:0,max:16}),[kd.Switch]:[{push:"type"}],[kd.Case]:{"minecraft:blob_foliage_placer":{height:kd.NumberNode({integer:!0,min:0,max:16})},"minecraft:bush_foliage_placer":{height:kd.NumberNode({integer:!0,min:0,max:16})},"minecraft:fancy_foliage_placer":{height:kd.NumberNode({integer:!0,min:0,max:16})},"minecraft:jungle_foliage_placer":{height:kd.NumberNode({integer:!0,min:0,max:16})},"minecraft:mega_pine_foliage_placer":{crown_height:xd.IntProvider({min:0,max:24})},"minecraft:pine_foliage_placer":{height:xd.IntProvider({min:0,max:24})},"minecraft:random_spread_foliage_placer":{foliage_height:xd.IntProvider({min:1,max:512}),leaf_placement_attempts:kd.NumberNode({integer:!0,min:0,max:256})},"minecraft:spruce_foliage_placer":{trunk_height:xd.IntProvider({min:0,max:24})}}},{context:"foliage_placer",disableSwitchContext:!0}),decorators:kd.ListNode(kd.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/tree_decorator_type"}}),[kd.Switch]:[{push:"type"}],[kd.Case]:{"minecraft:alter_ground":{provider:r("block_state_provider")},"minecraft:beehive":{probability:kd.NumberNode({min:0,max:1})},"minecraft:cocoa":{probability:kd.NumberNode({min:0,max:1})}}},{context:"tree_decorator"}))},"minecraft:underwater_magma":{floor_search_range:kd.NumberNode({integer:!0,min:0,max:512}),placement_radius_around_floor:kd.NumberNode({integer:!0,min:0,max:64}),placement_probability_per_valid_position:kd.NumberNode({min:0,max:1})},"minecraft:vegetation_patch":m,"minecraft:waterlogged_vegetation_patch":m}},{context:"feature"})},{context:"feature"}),{default:()=>({type:"minecraft:decorated",config:{decorator:{type:"minecraft:count",config:{count:4}},feature:{type:"minecraft:tree",config:{ignore_vines:!0,minimum_size:{type:"minecraft:two_layers_feature_size"},trunk_placer:{type:"minecraft:straight_trunk_placer",base_height:5,height_rand_a:2,height_rand_b:0},foliage_placer:{type:"minecraft:blob_foliage_placer",radius:2,offset:0,height:3}}}}})})),e.register("feature_size",kd.Mod(kd.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/feature_size_type"}}),min_clipped_height:kd.Opt(kd.NumberNode({min:0,max:80})),[kd.Switch]:[{push:"type"}],[kd.Case]:{"minecraft:two_layers_feature_size":{limit:kd.Opt(kd.NumberNode({integer:!0,min:0,max:81})),lower_size:kd.Opt(kd.NumberNode({integer:!0,min:0,max:16})),upper_size:kd.Opt(kd.NumberNode({integer:!0,min:0,max:16}))},"minecraft:three_layers_feature_size":{limit:kd.Opt(kd.NumberNode({integer:!0,min:0,max:80})),upper_limit:kd.Opt(kd.NumberNode({integer:!0,min:0,max:80})),lower_size:kd.Opt(kd.NumberNode({integer:!0,min:0,max:16})),middle_size:kd.Opt(kd.NumberNode({integer:!0,min:0,max:16})),upper_size:kd.Opt(kd.NumberNode({integer:!0,min:0,max:16}))}}},{disableSwitchContext:!0}),{default:()=>({type:"minecraft:two_layers_feature_size"})}));const p={seed:kd.NumberNode({integer:!0}),noise:r("noise_parameters"),scale:kd.Mod(kd.NumberNode({min:Number.MIN_VALUE}),{default:()=>1})};e.register("block_state_provider",kd.Mod(kd.ObjectNode({type:o({validator:"resource",params:{pool:"worldgen/block_state_provider_type"}}),[kd.Switch]:[{push:"type"}],[kd.Case]:{"minecraft:dual_noise_provider":c(s({},p),{variety:xd.InclusiveRange({integer:!0,min:1,max:64}),slow_noise:r("noise_parameters"),slow_scale:kd.Mod(kd.NumberNode({min:Number.MIN_VALUE}),{default:()=>1}),states:kd.ListNode(r("block_state"))}),"minecraft:noise_threshold_provider":c(s({},p),{threshold:kd.NumberNode({min:-1,max:1}),high_chance:kd.NumberNode({min:0,max:1}),default_state:r("block_state"),low_states:kd.ListNode(r("block_state")),high_states:kd.ListNode(r("block_state"))}),"minecraft:noise_provider":c(s({},p),{states:kd.ListNode(r("block_state"))}),"minecraft:randomized_int_state_provider":{property:o(),values:xd.IntProvider(),source:r("block_state_provider")},"minecraft:rotated_block_provider":{state:r("block_state")},"minecraft:simple_state_provider":{state:r("block_state")},"minecraft:weighted_state_provider":{entries:kd.ListNode(kd.Mod(kd.ObjectNode({weight:kd.NumberNode({integer:!0,min:1}),data:r("block_state")}),{default:()=>({data:{}})}))}}},{context:"block_state_provider"}),{default:()=>({type:"minecraft:simple_state_provider"})})),e.register("block_predicate_worldgen",kd.Mod(kd.ObjectNode({type:o({validator:"resource",params:{pool:"block_predicate_type"}}),[kd.Switch]:[{push:"type"}],[kd.Case]:{"minecraft:all_of":{predicates:kd.ListNode(r("block_predicate_worldgen"))},"minecraft:any_of":{predicates:kd.ListNode(r("block_predicate_worldgen"))},"minecraft:matching_blocks":{offset:kd.Opt(r("block_pos")),blocks:kd.ListNode(o({validator:"resource",params:{pool:"block"}}))},"minecraft:matching_fluids":{offset:kd.Opt(r("block_pos")),fluids:kd.ListNode(o({validator:"resource",params:{pool:"fluid"}}))},"minecraft:not":{predicate:r("block_predicate_worldgen")},"minecraft:would_survive":{offset:kd.Opt(r("block_pos")),state:r("block_state")}}},{context:"block_predicate"}),{default:()=>({type:"minecraft:true"})}))};var jd={};Object.defineProperty(jd,"__esModule",{value:!0}),jd.initNoiseSettingsSchemas=void 0;const Md=Ce,Pd=Fl;jd.initNoiseSettingsSchemas=function(e,t){const r=Md.Reference.bind(void 0,e),o=Md.StringNode.bind(void 0,t);e.register("noise_settings",Md.Mod(Md.ObjectNode({bedrock_roof_position:Md.NumberNode({integer:!0}),bedrock_floor_position:Md.NumberNode({integer:!0}),sea_level:Md.NumberNode({integer:!0}),disable_mob_generation:Md.BooleanNode(),noise_caves_enabled:Md.BooleanNode(),noodle_caves_enabled:Md.BooleanNode(),aquifers_enabled:Md.BooleanNode(),deepslate_enabled:Md.BooleanNode(),ore_veins_enabled:Md.BooleanNode(),legacy_random_source:Md.BooleanNode(),default_block:r("block_state"),default_fluid:r("block_state"),noise:Md.ObjectNode({min_y:Md.NumberNode({integer:!0,min:-2048,max:2047}),height:Md.NumberNode({integer:!0,min:0,max:4096}),density_factor:Md.NumberNode(),density_offset:Md.NumberNode(),size_horizontal:Md.NumberNode({integer:!0}),size_vertical:Md.NumberNode({integer:!0}),island_noise_override:Md.Opt(Md.BooleanNode()),amplified:Md.Opt(Md.BooleanNode()),sampling:Md.ObjectNode({xz_scale:Md.NumberNode(),y_scale:Md.NumberNode(),xz_factor:Md.NumberNode(),y_factor:Md.NumberNode()}),bottom_slide:r("noise_slider"),top_slide:r("noise_slider"),terrain_shaper:r("terrain_shaper")}),surface_rule:r("material_rule"),structures:r("generator_structures")},{context:"noise_settings"}),(e=>({default:()=>Pd.DefaultNoiseSettings,validate:(t,r,o,i)=>{var n,a,s,c;return(null===(n=null==(r=e.validate(t,r,o,i))?void 0:r.noise)||void 0===n?void 0:n.min_y)+(null===(a=null==r?void 0:r.noise)||void 0===a?void 0:a.height)>2047&&o.add(t.push("noise").push("height"),"error.min_y_plus_height",2047),(null===(s=null==r?void 0:r.noise)||void 0===s?void 0:s.height)%16!=0&&o.add(t.push("noise").push("height"),"error.height_multiple",16),(null===(c=null==r?void 0:r.noise)||void 0===c?void 0:c.min_y)%16!=0&&o.add(t.push("noise").push("min_y"),"error.min_y_multiple",16),r}})))),e.register("noise_slider",Md.ObjectNode({target:Md.NumberNode(),size:Md.NumberNode({integer:!0,min:0}),offset:Md.NumberNode({integer:!0})})),e.register("generator_structures",Md.ObjectNode({stronghold:Md.Opt(Md.ObjectNode({distance:Md.NumberNode({integer:!0,min:0,max:1023}),spread:Md.NumberNode({integer:!0,min:0,max:1023}),count:Md.NumberNode({integer:!0,min:1,max:4095})})),structures:Md.MapNode(o({validator:"resource",params:{pool:"worldgen/structure_feature"}}),Md.Mod(Md.ObjectNode({spacing:Md.NumberNode({integer:!0,min:0,max:4096}),separation:Md.Mod(Md.NumberNode({integer:!0,min:0,max:4096}),(e=>({validate:(t,r,o,i)=>(t.pop().push("spacing").get()<=r&&o.add(t,"error.separation_smaller_spacing"),e.validate(t,r,o,i))}))),salt:Md.NumberNode({integer:!0,min:0})},{context:"generator_structure"}),{default:()=>({spacing:10,separation:5,salt:0})}))})),e.register("generator_layer",Md.Mod(Md.ObjectNode({block:o({validator:"resource",params:{pool:"block"}}),height:Md.NumberNode({integer:!0,min:1})}),{default:()=>({block:"minecraft:stone",height:1})})),e.register("terrain_shaper",Md.Mod(Md.ObjectNode({offset:r("terrain_spline"),factor:r("terrain_spline"),jaggedness:r("terrain_spline")},{context:"terrain_shaper"}),{default:()=>({offset:0,factor:0,jaggedness:0})})),e.register("terrain_spline",Md.Mod(Md.ChoiceNode([{type:"number",node:Md.NumberNode()},{type:"object",node:Md.ObjectNode({coordinate:Md.Mod(o({enum:["continents","erosion","weirdness","ridges"]}),{default:()=>"continents"}),points:Md.ListNode(Md.ObjectNode({location:Md.NumberNode(),derivative:Md.NumberNode(),value:r("terrain_spline")}))},{category:"function"})}],{context:"terrain_spline",choiceContext:"terrain_spline"}),{default:()=>0}))};var Ad={};Object.defineProperty(Ad,"__esModule",{value:!0}),Ad.initStructureFeatureSchemas=void 0;const Ld=Ce;Ad.initStructureFeatureSchemas=function(e,t){const r=Ld.StringNode.bind(void 0,t),o=Ld.Reference.bind(void 0,e),i={start_pool:r({validator:"resource",params:{pool:"$worldgen/template_pool"}}),size:Ld.NumberNode({integer:!0})};e.register("configured_structure_feature",Ld.Mod(Ld.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/structure_feature"}}),config:Ld.ObjectNode({[Ld.Switch]:["pop",{push:"type"}],[Ld.Case]:{"minecraft:bastion_remnant":i,"minecraft:buried_treasure":{probability:Ld.NumberNode({min:0,max:1})},"minecraft:mineshaft":{type:r({enum:["normal","mesa"]}),probability:Ld.NumberNode({min:0,max:1})},"minecraft:nether_fossil":{height:o("height_provider")},"minecraft:ocean_ruin":{biome_temp:r({enum:["cold","warm"]}),large_probability:Ld.NumberNode({min:0,max:1}),cluster_probability:Ld.NumberNode({min:0,max:1})},"minecraft:pillager_outpost":i,"minecraft:ruined_portal":{portal_type:r({enum:["standard","desert","jungle","mountain","nether","ocean","swamp"]})},"minecraft:shipwreck":{is_beached:Ld.Opt(Ld.BooleanNode())},"minecraft:village":i}},{context:"structure_feature",disableSwitchContext:!0})},{context:"structure_feature"}),{default:()=>({type:"minecraft:bastion_remnant",config:{start_pool:"minecraft:bastion/starts",size:6}})}))};var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.initSurfaceRuleSchemas=void 0;const Cd=Ce;Bd.initSurfaceRuleSchemas=function(e,t){const r=Cd.StringNode.bind(void 0,t),o=Cd.Reference.bind(void 0,e);e.register("material_rule",Cd.Mod(Cd.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/material_rule"}}),[Cd.Switch]:[{push:"type"}],[Cd.Case]:{"minecraft:block":{result_state:o("block_state")},"minecraft:condition":{if_true:o("material_condition"),then_run:o("material_rule")},"minecraft:sequence":{sequence:Cd.ListNode(o("material_rule"))}}},{context:"material_rule",category:"pool"}),{default:()=>({type:"minecraft:block",result_state:{Name:"minecraft:stone"}})})),e.register("material_condition",Cd.Mod(Cd.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/material_condition"}}),[Cd.Switch]:[{push:"type"}],[Cd.Case]:{"minecraft:biome":{biome_is:Cd.ListNode(r({validator:"resource",params:{pool:"$worldgen/biome"}}))},"minecraft:noise_threshold":{noise:r({validator:"resource",params:{pool:"$worldgen/noise"}}),min_threshold:Cd.NumberNode(),max_threshold:Cd.NumberNode()},"minecraft:not":{invert:o("material_condition")},"minecraft:stone_depth":{surface_type:r({enum:"cave_surface"}),add_run_depth:Cd.BooleanNode()},"minecraft:water":{offset:Cd.NumberNode({integer:!0}),run_depth_multiplier:Cd.NumberNode({integer:!0,min:-20,max:20}),add_stone_depth:Cd.BooleanNode()},"minecraft:y_above":{anchor:o("vertical_anchor"),run_depth_multiplier:Cd.NumberNode({integer:!0,min:-20,max:20}),add_stone_depth:Cd.BooleanNode()}}},{context:"material_condition"}),{default:()=>({type:"minecraft:biome",is_biome:"minecraft:plains"})}))};var Td={};Object.defineProperty(Td,"__esModule",{value:!0}),Td.initTemplatePoolSchemas=void 0;const Id=Ce,zd=Od;Td.initTemplatePoolSchemas=function(e,t){const r=Id.Reference.bind(void 0,e),o=Id.StringNode.bind(void 0,t);e.register("template_pool",Id.Mod(Id.ObjectNode({fallback:o(),elements:Id.ListNode(r("template_weighted_element"))},{context:"template_pool"}),{default:()=>({fallback:"minecraft:empty",elements:[{weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}}]})})),e.register("template_weighted_element",Id.Mod(Id.ObjectNode({weight:Id.NumberNode({integer:!0,min:1}),element:r("template_element")},{category:"pool"}),{default:()=>({weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}})})),e.register("template_element",Id.Mod(Id.ObjectNode({element_type:o({validator:"resource",params:{pool:"worldgen/structure_pool_element"}}),projection:o({enum:["rigid","terrain_matching"]}),[Id.Switch]:[{push:"element_type"}],[Id.Case]:{"minecraft:feature_pool_element":{feature:o({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},"minecraft:legacy_single_pool_element":{location:o({validator:"resource",params:{pool:"$structure"}}),processors:zd.Processors},"minecraft:list_pool_element":{elements:Id.ListNode(r("template_element"))},"minecraft:single_pool_element":{location:o({validator:"resource",params:{pool:"$structure"}}),processors:zd.Processors}}},{context:"template_element",disableSwitchContext:!0}),{default:()=>({element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"})}))},Object.defineProperty(md,"__esModule",{value:!0}),md.initWorldgenSchemas=void 0;const Rd=pd,Fd=fd,Ed=bd,Dd=Nd,$d=jd,Ud=Od,qd=Ad,Hd=Bd,Zd=Td;md.initWorldgenSchemas=function(e,t){Ud.initProcessorListSchemas(e,t),Rd.initBiomeSchemas(e,t),Fd.initCarverSchemas(e,t),Ed.initDecoratorSchemas(e,t),Dd.initFeatureSchemas(e,t),$d.initNoiseSettingsSchemas(e,t),qd.initStructureFeatureSchemas(e,t),Hd.initSurfaceRuleSchemas(e,t),Zd.initTemplatePoolSchemas(e,t)};var Wd={};Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.initWorldSettingsSchemas=void 0;const Xd=Ce;Wd.initWorldSettingsSchemas=function(e,t){const r=Xd.Reference.bind(void 0,e),o=Xd.StringNode.bind(void 0,t);e.register("world_settings",Xd.Mod(Xd.ObjectNode({generate_features:Xd.BooleanNode(),bonus_chest:Xd.BooleanNode(),seed:Xd.NumberNode({integer:!0}),dimensions:Xd.MapNode(o({validator:"resource",params:{pool:"$dimension"}}),r("dimension"))},{context:"world_settings"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{generate_features:!0,bonus_chest:!1,seed:e,dimensions:{"minecraft:overworld":{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:vanilla_layered",seed:e},settings:"minecraft:overworld"}},"minecraft:the_nether":{type:"minecraft:the_nether",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:multi_noise",seed:e,humidity_noise:{firstOctave:-7,amplitudes:[1,1]},altitude_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:0},biome:"minecraft:nether_wastes"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:-.5},biome:"minecraft:soul_sand_valley"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:.4,humidity:0},biome:"minecraft:crimson_forest"},{parameters:{altitude:0,weirdness:0,offset:.375,temperature:0,humidity:.5},biome:"minecraft:warped_forest"},{parameters:{altitude:0,weirdness:0,offset:.175,temperature:-.5,humidity:0},biome:"minecraft:basalt_deltas"}]},settings:"minecraft:nether"}},"minecraft:the_end":{type:"minecraft:the_end",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:the_end",seed:e},settings:"minecraft:end"}}}}}}))},Object.defineProperty(Il,"__esModule",{value:!0}),Il.initSchemas=void 0;const Gd=zl,Vd=Fl,Jd=El,Yd=Ul,Kd=Zl,Qd=Gl,e_=Yl,t_=rd,r_=id,o_=ad,i_=cd,n_=dd,a_=md,s_=Wd;Il.initSchemas=function(e,t){Vd.initCommonSchemas(e,t),Gd.initAdvancementSchemas(e,t),Jd.initConditionSchemas(e,t),Kd.initDimensionTypeSchemas(e,t),Yd.initDimensionSchemas(e,t),Qd.initItemModifierSchemas(e,t),e_.initLootTableSchemas(e,t),t_.initPackMcmetaSchemas(e,t),r_.initPredicatesSchemas(e,t),o_.initRecipeSchemas(e,t),i_.initTagsSchemas(e,t),n_.initTextComponentSchemas(e,t),a_.initWorldgenSchemas(e,t),s_.initWorldSettingsSchemas(e,t)};var c_=Be&&Be.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),l_=Be&&Be.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),d_=Be&&Be.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&c_(t,e,r);return l_(t,e),t};Object.defineProperty(Cl,"__esModule",{value:!0});var __=Cl.getSchemas=Cl.getCollections=void 0;const m_=Ce,p_=Tl,u_=Il;var f_=Cl.lootContext=d_(Kl);var h_=Cl.getCollections=function(){const e=new m_.CollectionRegistry;return p_.initCollections(e),e};__=Cl.getSchemas=function(e){const t=new m_.SchemaRegistry;return u_.initSchemas(t,e),t};var g_=Object.freeze(Object.assign(Object.create(null),Cl,{[Symbol.toStringTag]:"Module",get getSchemas(){return __},get getCollections(){return h_},lootContext:f_,default:Cl})),b_=function(e){return(e=e||{}).circles?function(e){var t=[],r=[];return e.proto?function e(i){if("object"!=typeof i||null===i)return i;if(i instanceof Date)return new Date(i);if(Array.isArray(i))return o(i,e);if(i instanceof Map)return new Map(o(Array.from(i),e));if(i instanceof Set)return new Set(o(Array.from(i),e));var n={};for(var a in t.push(i),r.push(n),i){var s=i[a];if("object"!=typeof s||null===s)n[a]=s;else if(s instanceof Date)n[a]=new Date(s);else if(s instanceof Map)n[a]=new Map(o(Array.from(s),e));else if(s instanceof Set)n[a]=new Set(o(Array.from(s),e));else if(ArrayBuffer.isView(s))n[a]=v_(s);else{var c=t.indexOf(s);n[a]=-1!==c?r[c]:e(s)}}return t.pop(),r.pop(),n}:function e(i){if("object"!=typeof i||null===i)return i;if(i instanceof Date)return new Date(i);if(Array.isArray(i))return o(i,e);if(i instanceof Map)return new Map(o(Array.from(i),e));if(i instanceof Set)return new Set(o(Array.from(i),e));var n={};for(var a in t.push(i),r.push(n),i)if(!1!==Object.hasOwnProperty.call(i,a)){var s=i[a];if("object"!=typeof s||null===s)n[a]=s;else if(s instanceof Date)n[a]=new Date(s);else if(s instanceof Map)n[a]=new Map(o(Array.from(s),e));else if(s instanceof Set)n[a]=new Set(o(Array.from(s),e));else if(ArrayBuffer.isView(s))n[a]=v_(s);else{var c=t.indexOf(s);n[a]=-1!==c?r[c]:e(s)}}return t.pop(),r.pop(),n};function o(e,o){for(var i=Object.keys(e),n=new Array(i.length),a=0;a3;)r.pop()();if(r[1]r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,s=(e,t)=>{for(var r in t||(t={}))o.call(t,r)&&a(e,r,t[r]);if(n)for(var r of n(t))i.call(t,r)&&a(e,r,t[r]);return e},c=(e,n)=>t(e,r(n)),l=e=>"symbol"==typeof e?e:e+"";const d={};var _,m,p,u,f={},h=[],g=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function b(e,t){for(var r in t)e[r]=t[r];return e}function v(e){var t=e.parentNode;t&&t.removeChild(e)}function y(e,t,r){var n,o,i,a=arguments,s={};for(i in t)"key"==i?n=t[i]:"ref"==i?o=t[i]:s[i]=t[i];if(arguments.length>3)for(r=[r],i=3;i0?N(p.type,p.props,p.key,null,p.__v):p)){if(p.__=r,p.__b=r.__b+1,null===(m=v[d])||m&&p.key==m.key&&p.type===m.type)v[d]=void 0;else for(_=0;_t.rank?-1:e.index-t.index}function W(e,t){return e.index=t,e.rank=function(e){return e.props.default?0:(t=e.props.path,X(t).map(G).join(""));var t}(e),e.props}function X(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")}function G(e){return":"==e.charAt(0)?1+"*+?".indexOf(e.charAt(e.length-1))||4:5}var V=null,J=[],Y=[],K={};function Q(){var e;return""+((e=V&&V.location?V.location:V&&V.getCurrentLocation?V.getCurrentLocation():"undefined"!=typeof location?location:K).pathname||"")+(e.search||"")}function ee(e,t){return void 0===t&&(t=!1),"string"!=typeof e&&e.url&&(t=e.replace,e=e.url),function(e){for(var t=J.length;t--;)if(J[t].canRoute(e))return!0;return!1}(e)&&function(e,t){void 0===t&&(t="push"),V&&V[t]?V[t](e):"undefined"!=typeof history&&history[t+"State"]&&history[t+"State"](null,null,e)}(e,t?"replace":"push"),te(e)}function te(e){for(var t=!1,r=0;r0},t.prototype.routeTo=function(e){this.setState({url:e});var t=this.canRoute(e);return this.updating||this.forceUpdate(),t},t.prototype.componentWillMount=function(){J.push(this),this.updating=!0},t.prototype.componentDidMount=function(){var e=this;V&&(this.unlisten=V.listen((function(t){e.routeTo(""+(t.pathname||"")+(t.search||""))}))),this.updating=!1},t.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),J.splice(J.indexOf(this),1)},t.prototype.componentWillUpdate=function(){this.updating=!0},t.prototype.componentDidUpdate=function(){this.updating=!1},t.prototype.getMatchingChildren=function(e,t,r){return e.filter(W).sort(H).map((function(e){var n=Z(t,e.props.path,e.props);if(n){if(!1!==r){var o={url:t,matches:n};return U(o,n),delete o.ref,delete o.key,function(e,t,r){var n,o,i,a=arguments,s=b({},e.props);for(i in t)"key"==i?n=t[i]:"ref"==i?o=t[i]:s[i]=t[i];if(arguments.length>3)for(r=[r],i=3;i=r.__.length&&r.__.push({}),r.__[e]}function ye(e){return me=1,function(e,t,r){var n=ve(le++,2);return n.t=e,n.__c||(n.__=[r?r(t):Le(void 0,t),function(e){var t=n.t(n.__[0],e);n.__[0]!==t&&(n.__=[t,n.__[1]],n.__c.setState({}))}],n.__c=de),n.__}(Le,e)}function Ne(e,t){var r=ve(le++,3);!_.__s&&Pe(r.__H,t)&&(r.__=e,r.__H=t,de.__H.__h.push(r))}function ke(e){return me=5,we((function(){return{current:e}}),[])}function we(e,t){var r=ve(le++,7);return Pe(r.__H,t)&&(r.__=e(),r.__H=t,r.__h=e),r.__}function Oe(e,t){return me=8,we((function(){return e}),t)}function xe(e){var t=ve(le++,10),r=ye();return t.__=e,de.componentDidCatch||(de.componentDidCatch=function(e){t.__&&t.__(e),r[1](e)}),[r[0],function(){r[1](void 0)}]}function Se(){pe.forEach((function(e){if(e.__P)try{e.__H.__h.forEach(Me),e.__H.__h.forEach(Ae),e.__H.__h=[]}catch(t){e.__H.__h=[],_.__e(t,e.__v)}})),pe=[]}_.__b=function(e){de=null,ue&&ue(e)},_.__r=function(e){fe&&fe(e),le=0;var t=(de=e.__c).__H;t&&(t.__h.forEach(Me),t.__h.forEach(Ae),t.__h=[])},_.diffed=function(e){he&&he(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(1!==pe.push(t)&&_e===_.requestAnimationFrame||((_e=_.requestAnimationFrame)||function(e){var t,r=function(){clearTimeout(n),je&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(r,100);je&&(t=requestAnimationFrame(r))})(Se)),de=void 0},_.__c=function(e,t){t.some((function(e){try{e.__h.forEach(Me),e.__h=e.__h.filter((function(e){return!e.__||Ae(e)}))}catch(r){t.some((function(e){e.__h&&(e.__h=[])})),t=[],_.__e(r,e.__v)}})),ge&&ge(e,t)},_.unmount=function(e){be&&be(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(Me)}catch(r){_.__e(r,t.__v)}};var je="function"==typeof requestAnimationFrame;function Me(e){var t=de;"function"==typeof e.__c&&e.__c(),de=t}function Ae(e){var t=de;e.__c=e.__(),de=t}function Pe(e,t){return!e||e.length!==t.length||t.some((function(t,r){return t!==e[r]}))}function Le(e,t){return"function"==typeof t?t(e):t}var Be="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Ce={},ze={},Te={};Object.defineProperty(Te,"__esModule",{value:!0}),Te.ModelPath=Te.Path=Te.relativePath=void 0,Te.relativePath=function(e,t){return t.reduce(((e,t)=>"pop"===t?e.pop():e.push(t.push)),e)};class Ie{constructor(e,t){this.modelArr=null!=e?e:[],this.contextArr=null!=t?t:[]}last(){return this.modelArr[this.modelArr.length-1]}slice(e,t){return new Ie(this.modelArr.slice(e,t),this.contextArr)}shift(){return new Ie(this.modelArr.slice(1),this.contextArr)}pop(){return new Ie(this.modelArr.slice(0,-1),this.contextArr)}push(e){return this.modelPush(e).contextPush(e)}modelPush(e){return new Ie([...this.modelArr,e],[...this.contextArr])}contextPush(e){if("number"==typeof e)return this.copy();const t=e.startsWith("minecraft:")?e.slice(10):e;return new Ie([...this.modelArr],[...this.contextArr,t])}copy(){return new Ie([...this.modelArr],[...this.contextArr])}getArray(){return this.modelArr}withModel(e){return new Re(e,this)}getContext(){return this.contextArr}equals(e){return e.modelArr.length===this.modelArr.length&&e.modelArr.every(((e,t)=>e===this.modelArr[t]))}startsWith(e){return!(this.modelArr.lengthe===this.modelArr[t]))}endsWith(e){const t=this.modelArr.length-e.modelArr.length;return!(t<0)&&e.modelArr.every(((e,r)=>e===this.modelArr[t+r]))}toString(){return this.modelArr.map((e=>"string"==typeof e?`.${e}`:`[${e}]`)).join("").replace(/^\./,"")}forEach(e,t){return this.modelArr.forEach(e,t)}}Te.Path=Ie;class Re extends Ie{constructor(e,t){super(null==t?void 0:t.modelArr,null==t?void 0:t.contextArr),this.model=e}getModel(){return this.model}get(){var e;return null===(e=this.model)||void 0===e?void 0:e.get(this)}set(e){var t;null===(t=this.model)||void 0===t||t.set(this,e)}slice(e,t){return new Re(this.model,super.slice(e,t))}shift(){return new Re(this.model,super.shift())}pop(){return new Re(this.model,super.pop())}push(e){return this.modelPush(e).contextPush(e)}modelPush(e){return new Re(this.model,super.modelPush(e))}contextPush(e){return new Re(this.model,super.contextPush(e))}copy(){return new Re(this.model,super.copy())}}Te.ModelPath=Re;var Fe={};Object.defineProperty(Fe,"__esModule",{value:!0}),Fe.Errors=void 0;class Ee{constructor(){this.errors=[]}add(e,t,...r){return this.errors.push({path:e,error:t,params:r}),!1}get(e,t=!1){return t?this.errors.filter((t=>t.path.equals(e))):this.errors.filter((t=>t.path.startsWith(e)))}getAll(){return this.errors}clear(){this.errors=[]}count(){return this.errors.length}*[Symbol.iterator](){for(const e of this.errors)yield e}}Fe.Errors=Ee;var De={};function $e(e){return e.replace(/(\\|")/g,"\\$1")}Object.defineProperty(De,"__esModule",{value:!0}),De.hexId=De.quoteString=De.escapeString=void 0,De.escapeString=$e,De.quoteString=function(e){return`"${$e(e)}"`};const qe=e=>("0"+e.toString(16)).substr(-2);De.hexId=function(e=12){var t=new Uint8Array(e/2);return window.crypto.getRandomValues(t),Array.from(t,qe).join("")},Object.defineProperty(ze,"__esModule",{value:!0}),ze.DataModel=void 0;const Ue=Te,Ze=Fe,He=De;class We{constructor(e,t){var r,n,o,i;this.historyMax=null!==(r=null==t?void 0:t.historyMax)&&void 0!==r?r:50,this.verbose=null!==(n=null==t?void 0:t.verbose)&&void 0!==n&&n,this.wrapLists=null!==(o=null==t?void 0:t.wrapLists)&&void 0!==o&&o,this.schema=e;const a=null!==(i=null==t?void 0:t.initialData)&&void 0!==i?i:e.default();this.data=this.wrapLists?We.wrapLists(a):a,this.listeners=[],this.errors=new Ze.Errors,this.history=[JSON.stringify(this.data)],this.historyIndex=0}addListener(e){this.listeners.push(e)}removeListener(e){const t=this.listeners.indexOf(e);t>-1&&this.listeners.splice(t,1)}invalidate(){const e=JSON.stringify(this.data);this.history[this.historyIndex]!==e&&(this.historyIndex+=1,this.history.splice(this.historyIndex,this.historyMax,e),this.history.length>this.historyMax&&(this.history.splice(0,1),this.historyIndex-=1)),this.silentInvalidate()}silentInvalidate(){this.listeners.forEach((e=>{e.invalidated&&e.invalidated(this),e.errors&&e.errors(this.errors)}))}reset(e,t){this.data=e,this.validate(t),this.invalidate()}get(e){let t=this.data;return e.forEach((e=>{if(void 0===t)return t;t=this.wrapLists&&"number"==typeof e?t[e].node:t[e]})),t}set(e,t,r){if(0===e.getArray().length)return void this.reset(t,!0);let n=this.data;e.pop().forEach((e=>{void 0!==n[e]&&"string"!=typeof n[e]&&"number"!=typeof n[e]||(this.wrapLists&&"number"==typeof e?n[e]={node:{},id:He.hexId()}:n[e]={}),n=this.wrapLists&&"number"==typeof e?n[e].node:n[e]})),null!==n&&(void 0===t||"number"==typeof t&&isNaN(t)?"number"==typeof e.last()?n.splice(e.last(),1):delete n[e.last()]:this.wrapLists&&"number"==typeof e.last()?n[e.last()]={node:t,id:He.hexId()}:n[e.last()]=t,r||(this.verbose&&console.log("Set",e.toString(),JSON.stringify(t)),this.validate(!0),this.invalidate()))}undo(){this.historyIndex>0&&(this.historyIndex-=1,this.data=JSON.parse(this.history[this.historyIndex]),this.validate(!1),this.silentInvalidate())}redo(){this.historyIndex{e.errors&&e.errors(n)}))}static wrapLists(e){if(Array.isArray(e))return e.map((e=>({node:this.wrapLists(e),id:He.hexId()})));if("object"==typeof e&&null!==e){const t={};return Object.entries(e).map((([e,r])=>{t[e]=this.wrapLists(r)})),t}return e}static unwrapLists(e){if(Array.isArray(e))return e.map((e=>this.unwrapLists(e.node)));if("object"==typeof e&&null!==e){const t={};return Object.entries(e).map((([e,r])=>{t[e]=this.unwrapLists(r)})),t}return e}}ze.DataModel=We;var Xe,Ge={};Xe=Ge,Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.Keep=Xe.Opt=Xe.Has=Xe.Mod=Xe.Base=void 0,Xe.Base={type:()=>"base",category:()=>{},default:()=>{},enabled:()=>!0,keep:()=>!1,optional:()=>!1,navigate(){return this},pathPush:e=>e,suggest:()=>[],validate:(e,t)=>t,validationOption:()=>{},hook(e,t,...r){return e.base({node:this},t,...r)},canUpdate:()=>!1,update:()=>[]},Xe.Mod=(e,t)=>s(s({},e),"function"==typeof t?t(e):t),Xe.Has=(e,t)=>Xe.Mod(t,{enabled:t=>void 0!==t.push(e).get()}),Xe.Opt=function(e){return c(s({},e),{optional:()=>!0})},Xe.Keep=function(e){return c(s({},e),{keep:()=>!0})};var Ve={};Object.defineProperty(Ve,"__esModule",{value:!0}),Ve.BooleanNode=void 0;const Je=ze,Ye=Ge;Ve.BooleanNode=()=>c(s({},Ye.Base),{type:()=>"boolean",default:()=>!1,suggest:()=>["false","true"],validate(e,t,r,n){return n.loose&&"boolean"!=typeof t&&(t=n.wrapLists?Je.DataModel.wrapLists(this.default()):this.default()),"boolean"==typeof t&&void 0!==t||r.add(e,"error.expected_boolean"),t},hook(e,t,...r){var n;return(null!==(n=e.boolean)&&void 0!==n?n:e.base).call(e,{node:this},t,...r)}});var Ke={},Qe={};Object.defineProperty(Qe,"__esModule",{value:!0}),Qe.ListNode=void 0;const et=ze,tt=Ge;Qe.ListNode=(e,t)=>{var r,n;const o=null!==(r=null==t?void 0:t.minLength)&&void 0!==r?r:0,i=null!==(n=null==t?void 0:t.maxLength)&&void 0!==n?n:1/0,a=(null==t?void 0:t.minLength)&&(null==t?void 0:t.maxLength);return c(s({},tt.Base),{type:()=>"list",default:()=>(null==t?void 0:t.minLength)?[...Array(o)].map((t=>e.default())):[],navigate(t,r){const n=r+1;return t.getArray().length<=n?this:e.navigate(t,n)},pathPush:(e,t)=>e.push(parseInt(t.toString())).contextPush("entry"),validate(t,r,n,s){return s.loose&&!Array.isArray(r)&&(r=s.wrapLists?et.DataModel.wrapLists(this.default()):this.default()),Array.isArray(r)?(a&&(r.lengthi)?o===i?n.add(t,"error.invalid_list_range.exact",r.length,o):n.add(t,"error.invalid_list_range.between",r.length,o,i):r.lengthi&&n.add(t,"error.invalid_list_range.larger",r.length,i),r.map(((r,o)=>{const i=e.validate(t.push(o),s.wrapLists?r.node:r,n,s);return s.wrapLists?{node:i,id:r.id}:i}))):(n.add(t,"error.expected_list"),r)},hook(r,n,...o){var i;return(null!==(i=r.list)&&void 0!==i?i:r.base).call(r,{node:this,children:e,config:null!=t?t:{}},n,...o)}})};var rt={};Object.defineProperty(rt,"__esModule",{value:!0}),rt.SwitchNode=void 0;const nt=Ge;rt.SwitchNode=e=>c(s({},nt.Base),{type(e){return this.activeCase(e,!0).node.type(e)},category(e){return this.activeCase(e,!0).node.category(e)},default:()=>e[0].node.default(),navigate(e,t){var r;const n=t+1;return null===(r=this.activeCase(e.slice(0,n)))||void 0===r?void 0:r.node.navigate(e,t)},pathPush(e,t){var r,n;return null!==(n=null===(r=this.activeCase(e))||void 0===r?void 0:r.node.pathPush(e,t))&&void 0!==n?n:e},suggest(t,r){var n,o;return null!==(o=null===(n=this.activeCase(t))||void 0===n?void 0:n.node.suggest(t,r))&&void 0!==o?o:e.filter((e=>e.match(t))).map((e=>e.node.suggest(t,r))).reduce(((e,t)=>e.concat(t)))},validate(e,t,r,n){let o=this.activeCase(e);return void 0===o?t:o.node.validate(e,t,r,n)},validationOption(e){var t;return null===(t=this.activeCase(e))||void 0===t?void 0:t.node.validationOption(e)},activeCase(t,r){const n=(e,t)=>{var r,n;return(null!==(r=t.priority)&&void 0!==r?r:0)-(null!==(n=e.priority)&&void 0!==n?n:0)},o=e.filter((e=>e.match(t))).sort(n);return r&&0===o.length?e.sort(n)[0]:o.length>0?o[0]:void 0},hook(e,t,...r){return this.activeCase(t,!0).node.hook(e,t,...r)}}),function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ObjectOrPreset=e.StringOrList=e.ObjectOrList=e.ChoiceNode=void 0;const t=Qe,r=rt;e.ChoiceNode=(e,t)=>{const n=r.SwitchNode(e.map((e=>({type:e.type,priority:e.priority,match:t=>((e,t)=>{if(e.match)return e.match(t);switch(e.type){case"list":return Array.isArray(t);case"object":return"object"==typeof t&&!Array.isArray(t);default:return typeof t===e.type}})(e,t.get()),node:e.node}))));return c(s({},n),{validate(e,t,r,o){let i=n.activeCase(e,!0);return i.node.optional()?t:i.node.validate(e,t,r,o)},hook(r,o,...i){var a;return(null!==(a=r.choice)&&void 0!==a?a:r.base).call(r,{node:this,choices:e,config:null!=t?t:{},switchNode:n},o,...i)}})};const n=r=>(n,o)=>e.ChoiceNode([{type:r,node:n,change:e=>{var t;return null!==(t=e[0])&&void 0!==t?t:n.default()}},{type:"list",node:t.ListNode(n),change:e=>e?[e]:[]}],o);e.ObjectOrList=n("object"),e.StringOrList=n("string"),e.ObjectOrPreset=(t,r,n)=>e.ChoiceNode([{type:"string",priority:1,node:t,change:e=>Object.keys(n)[0]},{type:"object",node:r,change:e=>{var t;return null!==(t=n[e])&&void 0!==t?t:n[Object.keys(n)[0]]}}])}(Ke);var ot={};Object.defineProperty(ot,"__esModule",{value:!0}),ot.MapNode=void 0;const it=Ge,at=ze;ot.MapNode=(e,t,r)=>c(s({},it.Base),{type:()=>"map",default:()=>({}),navigate(e,r){const n=r+1;return e.getArray().length<=n?this:t.navigate(e,n)},pathPush:(e,t)=>e.modelPush(t),suggest:t=>e.suggest(t,""),validate(r,n,o,i){if(i.loose&&"object"!=typeof n&&(n=i.wrapLists?at.DataModel.wrapLists(this.default()):this.default()),null===n||"object"!=typeof n)return o.add(r,"error.expected_object"),n;let a={};return Object.keys(n).forEach((s=>{e.validate(r,s,o,i),a[s]=t.validate(r.push(s),n[s],o,i)})),a},validationOption(t){var n;return null!==(n=null==r?void 0:r.validation)&&void 0!==n?n:e.validationOption(t.push(""))},hook(n,o,...i){var a;return(null!==(a=n.map)&&void 0!==a?a:n.base).call(n,{node:this,keys:e,children:t,config:null!=r?r:{}},o,...i)}});var st={};Object.defineProperty(st,"__esModule",{value:!0}),st.NumberNode=void 0;const ct=ze,lt=Ge;st.NumberNode=e=>{var t,r,n;const o=!!(null==e?void 0:e.color)||null!==(t=null==e?void 0:e.integer)&&void 0!==t&&t,i=(null==e?void 0:e.color)?0:null!==(r=null==e?void 0:e.min)&&void 0!==r?r:-1/0,a=(null==e?void 0:e.color)?16777215:null!==(n=null==e?void 0:e.max)&&void 0!==n?n:1/0,l=void 0!==(null==e?void 0:e.min)&&void 0!==(null==e?void 0:e.max);return c(s({},lt.Base),{type:()=>"number",default:()=>i>0?i:0,validate(e,t,r,n){return n.loose&&"number"!=typeof t&&(t=n.wrapLists?ct.DataModel.wrapLists(this.default()):this.default()),"number"!=typeof t?r.add(e,"error.expected_number"):o&&!Number.isInteger(t)?r.add(e,"error.expected_integer"):l&&(ta)?r.add(e,"error.invalid_number_range.between",t,i,a):ta&&r.add(e,"error.invalid_number_range.larger",t,a),t},hook(t,r,...n){var s;return(null!==(s=t.number)&&void 0!==s?s:t.base).call(t,{node:this,integer:o,min:i,max:a,between:l,config:null!=e?e:{}},r,...n)}})};var dt={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ObjectNode=e.Case=e.Switch=void 0;const t=Ge,r=Te,a=Fe,d=De,_=ze;e.Switch=Symbol("switch"),e.Case=Symbol("case"),e.ObjectNode=(m,p)=>{var u,f;const h=m,{[u=e.Switch]:g,[f=e.Case]:b}=h,v=((e,t)=>{var r={};for(var a in e)o.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&n)for(var a of n(e))t.indexOf(a)<0&&i.call(e,a)&&(r[a]=e[a]);return r})(h,[l(u),l(f)]),y=e=>{if(void 0===g)return v;const t=r.relativePath(e,g).get(),n=b[t];return s(s({},v),n)},N=(e,t)=>{var n;const o=g?r.relativePath(e,g).get():void 0,i=g&&null!==(n=b[o])&&void 0!==n?n:{},a=Object.keys(i),s=(null==p?void 0:p.context)?new r.ModelPath(e.getModel(),new r.Path(e.getArray(),[p.context])):e;return(!(null==p?void 0:p.disableSwitchContext)&&o&&a.includes(t)?s.contextPush(o):s).push(t)};return c(s({},t.Base),{type:()=>"object",category:()=>null==p?void 0:p.category,default:()=>({}),keep(){return this.optional()},navigate(e,t){const r=t+1,n=e.getArray();if(n.length<=r)return this;const o=y(e.slice(0,r))[n[r]];return null==o?void 0:o.navigate(e,r)},pathPush:(e,t)=>N(e,t.toString()),suggest(e,t){const r=y(e),n=Object.keys("object"==typeof t?t:{});return Object.keys(r).filter((t=>r[t].enabled(e))).filter((e=>!n.includes(e))).map(d.quoteString)},validate(e,t,n,o){if(o.loose&&"object"!=typeof t&&(t=o.wrapLists?_.DataModel.wrapLists(this.default()):this.default()),"object"!=typeof t||null===t)return n.add(e,"error.expected_object"),t;let i=v;if(g){const n=r.relativePath(e,g);let c=n.get();if(e.equals(n.pop())){const r=n.last();c=v[r].validate(e.push(r),t[r],new a.Errors,o)}i=s(s({},i),b[c])}const c=Object.keys(i),l=c.filter((e=>!i[e].optional())),d=new Set([...l,...Object.keys(t)]);let m={};return d.forEach((r=>{if(c.includes(r)){if(!i[r].enabled(e))return;const a=i[r].validate(e.push(r),t[r],n,o);!i[r].keep()&&i[r].optional()&&(void 0===a||Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length)?delete m[r]:(m[r]=a,e.getModel().set(e.push(r),a,!0))}else m[r]=t[r]})),m},hook(e,t,...r){var n;return(null!==(n=e.object)&&void 0!==n?n:e.base).call(e,{node:this,fields:v,config:null!=p?p:{},filter:g,cases:b,getActiveFields:y,getChildModelPath:N},t,...r)}})}}(dt);var _t={};Object.defineProperty(_t,"__esModule",{value:!0}),_t.Reference=void 0,_t.Reference=(e,t)=>({type(r){return e.get(t).type.bind(this)(r)},category(r){return e.get(t).category.bind(this)(r)},default(){return e.get(t).default.bind(this)()},transform:(r,n)=>e.get(t).transform(r,n),enabled(r){return e.get(t).enabled.bind(this)(r)},keep(){return e.get(t).keep.bind(this)()},optional(){return e.get(t).optional.bind(this)()},navigate(r,n){return e.get(t).navigate.bind(this)(r,n)},pathPush(r,n){return e.get(t).pathPush.bind(this)(r,n)},suggest(r,n){return e.get(t).suggest.bind(this)(r,n)},validate(r,n,o,i){return e.get(t).validate.bind(this)(r,n,o,i)},validationOption(r){return e.get(t).validationOption.bind(this)(r)},hook(r,n,...o){return e.get(t).hook.bind(this)(r,n,...o)},activeCase(r,n){return e.get(t).activeCase.bind(this)(r,n)},canUpdate(r,n){return e.get(t).canUpdate.bind(this)(r,n)},update(r,n){return e.get(t).update.bind(this)(r,n)}});var mt={};Object.defineProperty(mt,"__esModule",{value:!0}),mt.StringNode=void 0;const pt=Ge,ut=De,ft=ze,ht=e=>{var t;return!!(null===(t=e)||void 0===t?void 0:t.enum)},gt=e=>{var t;return!!(null===(t=e)||void 0===t?void 0:t.validator)};mt.StringNode=(e,t)=>{const r=ht(t)?"string"==typeof t.enum?()=>{var r;return null!==(r=null==e?void 0:e.get(t.enum))&&void 0!==r?r:[]}:()=>t.enum:"resource"===(null==t?void 0:t.validator)?"string"==typeof t.params.pool?t.params.pool.startsWith("$")?()=>{var r;return null!==(r=null==e?void 0:e.get(t.params.pool.slice(1)))&&void 0!==r?r:[]}:()=>{var r;return null!==(r=null==e?void 0:e.get(t.params.pool))&&void 0!==r?r:[]}:()=>t.params.pool:()=>[];return c(s({},pt.Base),{type:()=>"string",default:()=>"",validate(e,n,o,i){if(i.loose&&"string"!=typeof n&&(n=(i.wrapLists?ft.DataModel.wrapLists(this.default()):this.default())||void 0),"string"!=typeof n)return o.add(e,"error.expected_string"),n;if(gt(t)&&("resource"===t.validator&&n.length>0&&!n.includes(":")&&(n="#"===n[0]?"#minecraft:"+n.slice(1):"minecraft:"+n),"resource"===t.validator&&("string"==typeof t.params.pool&&t.params.pool.startsWith("$")||t.params.allowTag&&"#"===n[0]||t.params.isDefinition||t.params.allowUnknown)))return n;if(ht(t)&&t.additional)return n;const a=r();return a.length>0&&!a.includes(n)&&o.add(e,"error.invalid_enum_option",n),n},suggest:()=>r().map(ut.quoteString),validationOption:()=>gt(t)?t:void 0,hook(e,n,...o){var i;return(null!==(i=e.string)&&void 0!==i?i:e.base).call(e,{node:this,getValues:r,config:t},n,...o)}})};var bt={};Object.defineProperty(bt,"__esModule",{value:!0});var vt={};Object.defineProperty(vt,"__esModule",{value:!0}),vt.CollectionRegistry=vt.SchemaRegistry=void 0;vt.SchemaRegistry=class{constructor(){this.registry={}}register(e,t){this.registry[e]=t}get(e){const t=this.registry[e];return void 0===t&&console.error(`Tried to access schema "${e}", but that doesn't exist.`),t}};vt.CollectionRegistry=class{constructor(){this.registry={}}register(e,t){this.registry[e]=t}get(e){const t=this.registry[e];return void 0===t&&console.warn(`Tried to access collection "${e}", but that doesn't exist.`),null!=t?t:[]}};var yt={};Object.defineProperty(yt,"__esModule",{value:!0}),function(e){var t=Be&&Be.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=Be&&Be.__exportStar||function(e,r){for(var n in e)"default"===n||r.hasOwnProperty(n)||t(r,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),r(ze,e),r(Te,e),r(Fe,e),r(Ge,e),r(Ve,e),r(Ke,e),r(Qe,e),r(ot,e),r(st,e),r(dt,e),r(_t,e),r(mt,e),r(rt,e),r(bt,e),r(vt,e),r(yt,e)}(Ce);function Nt(e){let t=e.length;for(;--t>=0;)e[t]=0}const kt=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),wt=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Ot=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),xt=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),St=new Array(576);Nt(St);const jt=new Array(60);Nt(jt);const Mt=new Array(512);Nt(Mt);const At=new Array(256);Nt(At);const Pt=new Array(29);Nt(Pt);const Lt=new Array(30);function Bt(e,t,r,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}let Ct,zt,Tt;function It(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Nt(Lt);const Rt=e=>e<256?Mt[e]:Mt[256+(e>>>7)],Ft=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},Et=(e,t,r)=>{e.bi_valid>16-r?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=r-16):(e.bi_buf|=t<{Et(e,r[2*t],r[2*t+1])},$t=(e,t)=>{let r=0;do{r|=1&e,e>>>=1,r<<=1}while(--t>0);return r>>>1},qt=(e,t,r)=>{const n=new Array(16);let o,i,a=0;for(o=1;o<=15;o++)n[o]=a=a+r[o-1]<<1;for(i=0;i<=t;i++){let t=e[2*i+1];0!==t&&(e[2*i]=$t(n[t]++,t))}},Ut=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0},Zt=e=>{e.bi_valid>8?Ft(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Ht=(e,t,r,n)=>{const o=2*t,i=2*r;return e[o]{const n=e.heap[r];let o=r<<1;for(;o<=e.heap_len&&(o{let n,o,i,a,s=0;if(0!==e.last_lit)do{n=e.pending_buf[e.d_buf+2*s]<<8|e.pending_buf[e.d_buf+2*s+1],o=e.pending_buf[e.l_buf+s],s++,0===n?Dt(e,o,t):(i=At[o],Dt(e,i+256+1,t),a=kt[i],0!==a&&(o-=Pt[i],Et(e,o,a)),n--,i=Rt(n),Dt(e,i,r),a=wt[i],0!==a&&(n-=Lt[i],Et(e,n,a)))}while(s{const r=t.dyn_tree,n=t.stat_desc.static_tree,o=t.stat_desc.has_stree,i=t.stat_desc.elems;let a,s,c,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a>1;a>=1;a--)Wt(e,r,a);c=i;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Wt(e,r,1),s=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=s,r[2*c]=r[2*a]+r[2*s],e.depth[c]=(e.depth[a]>=e.depth[s]?e.depth[a]:e.depth[s])+1,r[2*a+1]=r[2*s+1]=c,e.heap[1]=c++,Wt(e,r,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const r=t.dyn_tree,n=t.max_code,o=t.stat_desc.static_tree,i=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,d,_,m,p,u,f=0;for(m=0;m<=15;m++)e.bl_count[m]=0;for(r[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)d=e.heap[l],m=r[2*r[2*d+1]+1]+1,m>c&&(m=c,f++),r[2*d+1]=m,d>n||(e.bl_count[m]++,p=0,d>=s&&(p=a[d-s]),u=r[2*d],e.opt_len+=u*(m+p),i&&(e.static_len+=u*(o[2*d+1]+p)));if(0!==f){do{for(m=c-1;0===e.bl_count[m];)m--;e.bl_count[m]--,e.bl_count[m+1]+=2,e.bl_count[c]--,f-=2}while(f>0);for(m=c;0!==m;m--)for(d=e.bl_count[m];0!==d;)_=e.heap[--l],_>n||(r[2*_+1]!==m&&(e.opt_len+=(m-r[2*_+1])*r[2*_],r[2*_+1]=m),d--)}})(e,t),qt(r,l,e.bl_count)},Vt=(e,t,r)=>{let n,o,i=-1,a=t[1],s=0,c=7,l=4;for(0===a&&(c=138,l=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)o=a,a=t[2*(n+1)+1],++s{let n,o,i=-1,a=t[1],s=0,c=7,l=4;for(0===a&&(c=138,l=3),n=0;n<=r;n++)if(o=a,a=t[2*(n+1)+1],!(++s{Et(e,0+(n?1:0),3),((e,t,r,n)=>{Zt(e),n&&(Ft(e,r),Ft(e,~r)),e.pending_buf.set(e.window.subarray(t,t+r),e.pending),e.pending+=r})(e,t,r,!0)};var Qt={_tr_init:e=>{Yt||((()=>{let e,t,r,n,o;const i=new Array(16);for(r=0,n=0;n<28;n++)for(Pt[n]=r,e=0;e<1<>=7;n<30;n++)for(Lt[n]=o<<7,e=0;e<1<{let o,i,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),Gt(e,e.l_desc),Gt(e,e.d_desc),a=(e=>{let t;for(Vt(e,e.dyn_ltree,e.l_desc.max_code),Vt(e,e.dyn_dtree,e.d_desc.max_code),Gt(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*xt[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,i=e.static_len+3+7>>>3,i<=o&&(o=i)):o=i=r+5,r+4<=o&&-1!==t?Kt(e,t,r,n):4===e.strategy||i===o?(Et(e,2+(n?1:0),3),Xt(e,St,jt)):(Et(e,4+(n?1:0),3),((e,t,r,n)=>{let o;for(Et(e,t-257,5),Et(e,r-1,5),Et(e,n-4,4),o=0;o(e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(At[r]+256+1)]++,e.dyn_dtree[2*Rt(t)]++),e.last_lit===e.lit_bufsize-1),_tr_align:e=>{Et(e,2,3),Dt(e,256,St),(e=>{16===e.bi_valid?(Ft(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}};var er=(e,t,r,n)=>{let o=65535&e|0,i=e>>>16&65535|0,a=0;for(;0!==r;){a=r>2e3?2e3:r,r-=a;do{o=o+t[n++]|0,i=i+o|0}while(--a);o%=65521,i%=65521}return o|i<<16|0};const tr=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());var rr=(e,t,r,n)=>{const o=tr,i=n+r;e^=-1;for(let a=n;a>>8^o[255&(e^t[a])];return-1^e},nr={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},or={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:ir,_tr_stored_block:ar,_tr_flush_block:sr,_tr_tally:cr,_tr_align:lr}=Qt,{Z_NO_FLUSH:dr,Z_PARTIAL_FLUSH:_r,Z_FULL_FLUSH:mr,Z_FINISH:pr,Z_BLOCK:ur,Z_OK:fr,Z_STREAM_END:hr,Z_STREAM_ERROR:gr,Z_DATA_ERROR:br,Z_BUF_ERROR:vr,Z_DEFAULT_COMPRESSION:yr,Z_FILTERED:Nr,Z_HUFFMAN_ONLY:kr,Z_RLE:wr,Z_FIXED:Or,Z_DEFAULT_STRATEGY:xr,Z_UNKNOWN:Sr,Z_DEFLATED:jr}=or,Mr=(e,t)=>(e.msg=nr[t],t),Ar=e=>(e<<1)-(e>4?9:0),Pr=e=>{let t=e.length;for(;--t>=0;)e[t]=0};let Lr=(e,t,r)=>(t<{const t=e.state;let r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+r),e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))},Cr=(e,t)=>{sr(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Br(e.strm)},zr=(e,t)=>{e.pending_buf[e.pending++]=t},Tr=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Ir=(e,t,r,n)=>{let o=e.avail_in;return o>n&&(o=n),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),r),1===e.state.wrap?e.adler=er(e.adler,t,o,r):2===e.state.wrap&&(e.adler=rr(e.adler,t,o,r)),e.next_in+=o,e.total_in+=o,o)},Rr=(e,t)=>{let r,n,o=e.max_chain_length,i=e.strstart,a=e.prev_length,s=e.nice_match;const c=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,l=e.window,d=e.w_mask,_=e.prev,m=e.strstart+258;let p=l[i+a-1],u=l[i+a];e.prev_length>=e.good_match&&(o>>=2),s>e.lookahead&&(s=e.lookahead);do{if(r=t,l[r+a]===u&&l[r+a-1]===p&&l[r]===l[i]&&l[++r]===l[i+1]){i+=2,r++;do{}while(l[++i]===l[++r]&&l[++i]===l[++r]&&l[++i]===l[++r]&&l[++i]===l[++r]&&l[++i]===l[++r]&&l[++i]===l[++r]&&l[++i]===l[++r]&&l[++i]===l[++r]&&ia){if(e.match_start=t,a=n,n>=s)break;p=l[i+a-1],u=l[i+a]}}}while((t=_[t&d])>c&&0!=--o);return a<=e.lookahead?a:e.lookahead},Fr=e=>{const t=e.w_size;let r,n,o,i,a;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-262)){e.window.set(e.window.subarray(t,t+t),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,n=e.hash_size,r=n;do{o=e.head[--r],e.head[r]=o>=t?o-t:0}while(--n);n=t,r=n;do{o=e.prev[--r],e.prev[r]=o>=t?o-t:0}while(--n);i+=t}if(0===e.strm.avail_in)break;if(n=Ir(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=3)for(a=e.strstart-e.insert,e.ins_h=e.window[a],e.ins_h=Lr(e,e.ins_h,e.window[a+1]);e.insert&&(e.ins_h=Lr(e,e.ins_h,e.window[a+3-1]),e.prev[a&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=a,a++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<262&&0!==e.strm.avail_in)},Er=(e,t)=>{let r,n;for(;;){if(e.lookahead<262){if(Fr(e),e.lookahead<262&&t===dr)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=3&&(e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+3-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-262&&(e.match_length=Rr(e,r)),e.match_length>=3)if(n=cr(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+3-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+1]);else n=cr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(Cr(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Cr(e,!1),0===e.strm.avail_out)?1:2},Dr=(e,t)=>{let r,n,o;for(;;){if(e.lookahead<262){if(Fr(e),e.lookahead<262&&t===dr)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=3&&(e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+3-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==r&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=cr(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=Lr(e,e.ins_h,e.window[e.strstart+3-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(Cr(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(n=cr(e,0,e.window[e.strstart-1]),n&&Cr(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=cr(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Cr(e,!1),0===e.strm.avail_out)?1:2};function $r(e,t,r,n,o){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=o}const qr=[new $r(0,0,0,0,((e,t)=>{let r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Fr(e),0===e.lookahead&&t===dr)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;const n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,Cr(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-262&&(Cr(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(Cr(e,!1),e.strm.avail_out),1)})),new $r(4,4,8,4,Er),new $r(4,5,16,8,Er),new $r(4,6,32,32,Er),new $r(4,4,16,16,Dr),new $r(8,16,32,32,Dr),new $r(8,16,128,128,Dr),new $r(8,32,128,256,Dr),new $r(32,128,258,1024,Dr),new $r(32,258,258,4096,Dr)];function Ur(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=jr,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Pr(this.dyn_ltree),Pr(this.dyn_dtree),Pr(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Pr(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Pr(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Zr=e=>{if(!e||!e.state)return Mr(e,gr);e.total_in=e.total_out=0,e.data_type=Sr;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:113,e.adler=2===t.wrap?0:1,t.last_flush=dr,ir(t),fr},Hr=e=>{const t=Zr(e);var r;return t===fr&&((r=e.state).window_size=2*r.w_size,Pr(r.head),r.max_lazy_match=qr[r.level].max_lazy,r.good_match=qr[r.level].good_length,r.nice_match=qr[r.level].nice_length,r.max_chain_length=qr[r.level].max_chain,r.strstart=0,r.block_start=0,r.lookahead=0,r.insert=0,r.match_length=r.prev_length=2,r.match_available=0,r.ins_h=0),t},Wr=(e,t,r,n,o,i)=>{if(!e)return gr;let a=1;if(t===yr&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),o<1||o>9||r!==jr||n<8||n>15||t<0||t>9||i<0||i>Or)return Mr(e,gr);8===n&&(n=9);const s=new Ur;return e.state=s,s.strm=e,s.wrap=a,s.gzhead=null,s.w_bits=n,s.w_size=1<Wr(e,t,jr,15,8,xr),deflateInit2:Wr,deflateReset:Hr,deflateResetKeep:Zr,deflateSetHeader:(e,t)=>e&&e.state?2!==e.state.wrap?gr:(e.state.gzhead=t,fr):gr,deflate:(e,t)=>{let r,n;if(!e||!e.state||t>ur||t<0)return e?Mr(e,gr):gr;const o=e.state;if(!e.output||!e.input&&0!==e.avail_in||666===o.status&&t!==pr)return Mr(e,0===e.avail_out?vr:gr);o.strm=e;const i=o.last_flush;if(o.last_flush=t,42===o.status)if(2===o.wrap)e.adler=0,zr(o,31),zr(o,139),zr(o,8),o.gzhead?(zr(o,(o.gzhead.text?1:0)+(o.gzhead.hcrc?2:0)+(o.gzhead.extra?4:0)+(o.gzhead.name?8:0)+(o.gzhead.comment?16:0)),zr(o,255&o.gzhead.time),zr(o,o.gzhead.time>>8&255),zr(o,o.gzhead.time>>16&255),zr(o,o.gzhead.time>>24&255),zr(o,9===o.level?2:o.strategy>=kr||o.level<2?4:0),zr(o,255&o.gzhead.os),o.gzhead.extra&&o.gzhead.extra.length&&(zr(o,255&o.gzhead.extra.length),zr(o,o.gzhead.extra.length>>8&255)),o.gzhead.hcrc&&(e.adler=rr(e.adler,o.pending_buf,o.pending,0)),o.gzindex=0,o.status=69):(zr(o,0),zr(o,0),zr(o,0),zr(o,0),zr(o,0),zr(o,9===o.level?2:o.strategy>=kr||o.level<2?4:0),zr(o,3),o.status=113);else{let t=jr+(o.w_bits-8<<4)<<8,r=-1;r=o.strategy>=kr||o.level<2?0:o.level<6?1:6===o.level?2:3,t|=r<<6,0!==o.strstart&&(t|=32),t+=31-t%31,o.status=113,Tr(o,t),0!==o.strstart&&(Tr(o,e.adler>>>16),Tr(o,65535&e.adler)),e.adler=1}if(69===o.status)if(o.gzhead.extra){for(r=o.pending;o.gzindex<(65535&o.gzhead.extra.length)&&(o.pending!==o.pending_buf_size||(o.gzhead.hcrc&&o.pending>r&&(e.adler=rr(e.adler,o.pending_buf,o.pending-r,r)),Br(e),r=o.pending,o.pending!==o.pending_buf_size));)zr(o,255&o.gzhead.extra[o.gzindex]),o.gzindex++;o.gzhead.hcrc&&o.pending>r&&(e.adler=rr(e.adler,o.pending_buf,o.pending-r,r)),o.gzindex===o.gzhead.extra.length&&(o.gzindex=0,o.status=73)}else o.status=73;if(73===o.status)if(o.gzhead.name){r=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>r&&(e.adler=rr(e.adler,o.pending_buf,o.pending-r,r)),Br(e),r=o.pending,o.pending===o.pending_buf_size)){n=1;break}n=o.gzindexr&&(e.adler=rr(e.adler,o.pending_buf,o.pending-r,r)),0===n&&(o.gzindex=0,o.status=91)}else o.status=91;if(91===o.status)if(o.gzhead.comment){r=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>r&&(e.adler=rr(e.adler,o.pending_buf,o.pending-r,r)),Br(e),r=o.pending,o.pending===o.pending_buf_size)){n=1;break}n=o.gzindexr&&(e.adler=rr(e.adler,o.pending_buf,o.pending-r,r)),0===n&&(o.status=103)}else o.status=103;if(103===o.status&&(o.gzhead.hcrc?(o.pending+2>o.pending_buf_size&&Br(e),o.pending+2<=o.pending_buf_size&&(zr(o,255&e.adler),zr(o,e.adler>>8&255),e.adler=0,o.status=113)):o.status=113),0!==o.pending){if(Br(e),0===e.avail_out)return o.last_flush=-1,fr}else if(0===e.avail_in&&Ar(t)<=Ar(i)&&t!==pr)return Mr(e,vr);if(666===o.status&&0!==e.avail_in)return Mr(e,vr);if(0!==e.avail_in||0!==o.lookahead||t!==dr&&666!==o.status){let r=o.strategy===kr?((e,t)=>{let r;for(;;){if(0===e.lookahead&&(Fr(e),0===e.lookahead)){if(t===dr)return 1;break}if(e.match_length=0,r=cr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(Cr(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Cr(e,!1),0===e.strm.avail_out)?1:2})(o,t):o.strategy===wr?((e,t)=>{let r,n,o,i;const a=e.window;for(;;){if(e.lookahead<=258){if(Fr(e),e.lookahead<=258&&t===dr)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(o=e.strstart-1,n=a[o],n===a[++o]&&n===a[++o]&&n===a[++o])){i=e.strstart+258;do{}while(n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&oe.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(r=cr(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=cr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(Cr(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===pr?(Cr(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(Cr(e,!1),0===e.strm.avail_out)?1:2})(o,t):qr[o.level].func(o,t);if(3!==r&&4!==r||(o.status=666),1===r||3===r)return 0===e.avail_out&&(o.last_flush=-1),fr;if(2===r&&(t===_r?lr(o):t!==ur&&(ar(o,0,0,!1),t===mr&&(Pr(o.head),0===o.lookahead&&(o.strstart=0,o.block_start=0,o.insert=0))),Br(e),0===e.avail_out))return o.last_flush=-1,fr}return t!==pr?fr:o.wrap<=0?hr:(2===o.wrap?(zr(o,255&e.adler),zr(o,e.adler>>8&255),zr(o,e.adler>>16&255),zr(o,e.adler>>24&255),zr(o,255&e.total_in),zr(o,e.total_in>>8&255),zr(o,e.total_in>>16&255),zr(o,e.total_in>>24&255)):(Tr(o,e.adler>>>16),Tr(o,65535&e.adler)),Br(e),o.wrap>0&&(o.wrap=-o.wrap),0!==o.pending?fr:hr)},deflateEnd:e=>{if(!e||!e.state)return gr;const t=e.state.status;return 42!==t&&69!==t&&73!==t&&91!==t&&103!==t&&113!==t&&666!==t?Mr(e,gr):(e.state=null,113===t?Mr(e,br):fr)},deflateSetDictionary:(e,t)=>{let r=t.length;if(!e||!e.state)return gr;const n=e.state,o=n.wrap;if(2===o||1===o&&42!==n.status||n.lookahead)return gr;if(1===o&&(e.adler=er(e.adler,t,r,0)),n.wrap=0,r>=n.w_size){0===o&&(Pr(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(r-n.w_size,r),0),t=e,r=n.w_size}const i=e.avail_in,a=e.next_in,s=e.input;for(e.avail_in=r,e.next_in=0,e.input=t,Fr(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do{n.ins_h=Lr(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=2,Fr(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=s,e.avail_in=i,n.wrap=o,fr},deflateInfo:"pako deflate (from Nodeca project)"};const Gr=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Vr=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(const t in r)Gr(r,t)&&(e[t]=r[t])}}return e},Jr=e=>{let t=0;for(let n=0,o=e.length;n=252?6:lp>=248?5:lp>=240?4:lp>=224?3:lp>=192?2:1;Kr[254]=Kr[254]=1;var Qr=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,n,o,i,a=e.length,s=0;for(o=0;o>>6,t[i++]=128|63&r):r<65536?(t[i++]=224|r>>>12,t[i++]=128|r>>>6&63,t[i++]=128|63&r):(t[i++]=240|r>>>18,t[i++]=128|r>>>12&63,t[i++]=128|r>>>6&63,t[i++]=128|63&r);return t},en=(e,t)=>{const r=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let n,o;const i=new Array(2*r);for(o=0,n=0;n4)i[o++]=65533,n+=a-1;else{for(t&=2===a?31:3===a?15:7;a>1&&n1?i[o++]=65533:t<65536?i[o++]=t:(t-=65536,i[o++]=55296|t>>10&1023,i[o++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&Yr)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let r="";for(let n=0;n{(t=t||e.length)>e.length&&(t=e.length);let r=t-1;for(;r>=0&&128==(192&e[r]);)r--;return r<0||0===r?t:r+Kr[e[r]]>t?r:t};var rn=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const nn=Object.prototype.toString,{Z_NO_FLUSH:on,Z_SYNC_FLUSH:an,Z_FULL_FLUSH:sn,Z_FINISH:cn,Z_OK:ln,Z_STREAM_END:dn,Z_DEFAULT_COMPRESSION:_n,Z_DEFAULT_STRATEGY:mn,Z_DEFLATED:pn}=or;function un(e){this.options=Vr({level:_n,method:pn,chunkSize:16384,windowBits:15,memLevel:8,strategy:mn},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new rn,this.strm.avail_out=0;let r=Xr.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==ln)throw new Error(nr[r]);if(t.header&&Xr.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Qr(t.dictionary):"[object ArrayBuffer]"===nn.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,r=Xr.deflateSetDictionary(this.strm,e),r!==ln)throw new Error(nr[r]);this._dict_set=!0}}un.prototype.push=function(e,t){const r=this.strm,n=this.options.chunkSize;let o,i;if(this.ended)return!1;for(i=t===~~t?t:!0===t?cn:on,"string"==typeof e?r.input=Qr(e):"[object ArrayBuffer]"===nn.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(i===an||i===sn)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(o=Xr.deflate(r,i),o===dn)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),o=Xr.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===ln;if(0!==r.avail_out){if(i>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},un.prototype.onData=function(e){this.chunks.push(e)},un.prototype.onEnd=function(e){e===ln&&(this.result=Jr(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var fn=function(e,t){let r,n,o,i,a,s,c,l,d,_,m,p,u,f,h,g,b,v,y,N,k,w,O,x;const S=e.state;r=e.next_in,O=e.input,n=r+(e.avail_in-5),o=e.next_out,x=e.output,i=o-(t-e.avail_out),a=o+(e.avail_out-257),s=S.dmax,c=S.wsize,l=S.whave,d=S.wnext,_=S.window,m=S.hold,p=S.bits,u=S.lencode,f=S.distcode,h=(1<>>24,m>>>=v,p-=v,v=b>>>16&255,0===v)x[o++]=65535&b;else{if(!(16&v)){if(0==(64&v)){b=u[(65535&b)+(m&(1<>>=v,p-=v),p<15&&(m+=O[r++]<>>24,m>>>=v,p-=v,v=b>>>16&255,!(16&v)){if(0==(64&v)){b=f[(65535&b)+(m&(1<s){e.msg="invalid distance too far back",S.mode=30;break e}if(m>>>=v,p-=v,v=o-i,N>v){if(v=N-v,v>l&&S.sane){e.msg="invalid distance too far back",S.mode=30;break e}if(k=0,w=_,0===d){if(k+=c-v,v2;)x[o++]=w[k++],x[o++]=w[k++],x[o++]=w[k++],y-=3;y&&(x[o++]=w[k++],y>1&&(x[o++]=w[k++]))}else{k=o-N;do{x[o++]=x[k++],x[o++]=x[k++],x[o++]=x[k++],y-=3}while(y>2);y&&(x[o++]=x[k++],y>1&&(x[o++]=x[k++]))}break}}break}}while(r>3,r-=y,p-=y<<3,m&=(1<{const c=s.bits;let l,d,_,m,p,u,f=0,h=0,g=0,b=0,v=0,y=0,N=0,k=0,w=0,O=0,x=null,S=0;const j=new Uint16Array(16),M=new Uint16Array(16);let A,P,L,B=null,C=0;for(f=0;f<=15;f++)j[f]=0;for(h=0;h=1&&0===j[b];b--);if(v>b&&(v=b),0===b)return o[i++]=20971520,o[i++]=20971520,s.bits=1,0;for(g=1;g0&&(0===e||1!==b))return-1;for(M[1]=0,f=1;f<15;f++)M[f+1]=M[f]+j[f];for(h=0;h852||2===e&&w>592)return 1;for(;;){A=f-N,a[h]u?(P=B[C+a[h]],L=x[S+a[h]]):(P=96,L=0),l=1<>N)+d]=A<<24|P<<16|L|0}while(0!==d);for(l=1<>=1;if(0!==l?(O&=l-1,O+=l):O=0,h++,0==--j[f]){if(f===b)break;f=t[r+a[h]]}if(f>v&&(O&m)!==_){for(0===N&&(N=v),p+=g,y=f-N,k=1<852||2===e&&w>592)return 1;_=O&m,o[_]=v<<24|y<<16|p-i|0}}return 0!==O&&(o[p+O]=f-N<<24|64<<16|0),s.bits=v,0};const{Z_FINISH:Nn,Z_BLOCK:kn,Z_TREES:wn,Z_OK:On,Z_STREAM_END:xn,Z_NEED_DICT:Sn,Z_STREAM_ERROR:jn,Z_DATA_ERROR:Mn,Z_MEM_ERROR:An,Z_BUF_ERROR:Pn,Z_DEFLATED:Ln}=or,Bn=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Cn(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const zn=e=>{if(!e||!e.state)return jn;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,On},Tn=e=>{if(!e||!e.state)return jn;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,zn(e)},In=(e,t)=>{let r;if(!e||!e.state)return jn;const n=e.state;return t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?jn:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,Tn(e))},Rn=(e,t)=>{if(!e)return jn;const r=new Cn;e.state=r,r.window=null;const n=In(e,t);return n!==On&&(e.state=null),n};let Fn,En,Dn=!0;const $n=e=>{if(Dn){Fn=new Int32Array(512),En=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(yn(1,e.lens,0,288,Fn,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;yn(2,e.lens,0,32,En,0,e.work,{bits:5}),Dn=!1}e.lencode=Fn,e.lenbits=9,e.distcode=En,e.distbits=5},qn=(e,t,r,n)=>{let o;const i=e.state;return null===i.window&&(i.wsize=1<=i.wsize?(i.window.set(t.subarray(r-i.wsize,r),0),i.wnext=0,i.whave=i.wsize):(o=i.wsize-i.wnext,o>n&&(o=n),i.window.set(t.subarray(r-n,r-n+o),i.wnext),(n-=o)?(i.window.set(t.subarray(r-n,r),0),i.wnext=n,i.whave=i.wsize):(i.wnext+=o,i.wnext===i.wsize&&(i.wnext=0),i.whaveRn(e,15),inflateInit2:Rn,inflate:(e,t)=>{let r,n,o,i,a,s,c,l,d,_,m,p,u,f,h,g,b,v,y,N,k,w,O=0;const x=new Uint8Array(4);let S,j;const M=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return jn;r=e.state,12===r.mode&&(r.mode=13),a=e.next_out,o=e.output,c=e.avail_out,i=e.next_in,n=e.input,s=e.avail_in,l=r.hold,d=r.bits,_=s,m=c,w=On;e:for(;;)switch(r.mode){case 1:if(0===r.wrap){r.mode=13;break}for(;d<16;){if(0===s)break e;s--,l+=n[i++]<>>8&255,r.check=rr(r.check,x,2,0),l=0,d=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",r.mode=30;break}if((15&l)!==Ln){e.msg="unknown compression method",r.mode=30;break}if(l>>>=4,d-=4,k=8+(15&l),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(x[0]=255&l,x[1]=l>>>8&255,r.check=rr(r.check,x,2,0)),l=0,d=0,r.mode=3;case 3:for(;d<32;){if(0===s)break e;s--,l+=n[i++]<>>8&255,x[2]=l>>>16&255,x[3]=l>>>24&255,r.check=rr(r.check,x,4,0)),l=0,d=0,r.mode=4;case 4:for(;d<16;){if(0===s)break e;s--,l+=n[i++]<>8),512&r.flags&&(x[0]=255&l,x[1]=l>>>8&255,r.check=rr(r.check,x,2,0)),l=0,d=0,r.mode=5;case 5:if(1024&r.flags){for(;d<16;){if(0===s)break e;s--,l+=n[i++]<>>8&255,r.check=rr(r.check,x,2,0)),l=0,d=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(p=r.length,p>s&&(p=s),p&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(i,i+p),k)),512&r.flags&&(r.check=rr(r.check,n,p,i)),s-=p,i+=p,r.length-=p),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break e;p=0;do{k=n[i+p++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k))}while(k&&p>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;d<32;){if(0===s)break e;s--,l+=n[i++]<>>=7&d,d-=7&d,r.mode=27;break}for(;d<3;){if(0===s)break e;s--,l+=n[i++]<>>=1,d-=1,3&l){case 0:r.mode=14;break;case 1:if($n(r),r.mode=20,t===wn){l>>>=2,d-=2;break e}break;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}l>>>=2,d-=2;break;case 14:for(l>>>=7&d,d-=7&d;d<32;){if(0===s)break e;s--,l+=n[i++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&l,l=0,d=0,r.mode=15,t===wn)break e;case 15:r.mode=16;case 16:if(p=r.length,p){if(p>s&&(p=s),p>c&&(p=c),0===p)break e;o.set(n.subarray(i,i+p),a),s-=p,i+=p,c-=p,a+=p,r.length-=p;break}r.mode=12;break;case 17:for(;d<14;){if(0===s)break e;s--,l+=n[i++]<>>=5,d-=5,r.ndist=1+(31&l),l>>>=5,d-=5,r.ncode=4+(15&l),l>>>=4,d-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,d-=3}for(;r.have<19;)r.lens[M[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},w=yn(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,w){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>24,g=O>>>16&255,b=65535&O,!(h<=d);){if(0===s)break e;s--,l+=n[i++]<>>=h,d-=h,r.lens[r.have++]=b;else{if(16===b){for(j=h+2;d>>=h,d-=h,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],p=3+(3&l),l>>>=2,d-=2}else if(17===b){for(j=h+3;d>>=h,d-=h,k=0,p=3+(7&l),l>>>=3,d-=3}else{for(j=h+7;d>>=h,d-=h,k=0,p=11+(127&l),l>>>=7,d-=7}if(r.have+p>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;p--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},w=yn(1,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,w){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},w=yn(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,w){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,t===wn)break e;case 20:r.mode=21;case 21:if(s>=6&&c>=258){e.next_out=a,e.avail_out=c,e.next_in=i,e.avail_in=s,r.hold=l,r.bits=d,fn(e,m),a=e.next_out,o=e.output,c=e.avail_out,i=e.next_in,n=e.input,s=e.avail_in,l=r.hold,d=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;O=r.lencode[l&(1<>>24,g=O>>>16&255,b=65535&O,!(h<=d);){if(0===s)break e;s--,l+=n[i++]<>v)],h=O>>>24,g=O>>>16&255,b=65535&O,!(v+h<=d);){if(0===s)break e;s--,l+=n[i++]<>>=v,d-=v,r.back+=v}if(l>>>=h,d-=h,r.back+=h,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(j=r.extra;d>>=r.extra,d-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;O=r.distcode[l&(1<>>24,g=O>>>16&255,b=65535&O,!(h<=d);){if(0===s)break e;s--,l+=n[i++]<>v)],h=O>>>24,g=O>>>16&255,b=65535&O,!(v+h<=d);){if(0===s)break e;s--,l+=n[i++]<>>=v,d-=v,r.back+=v}if(l>>>=h,d-=h,r.back+=h,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(j=r.extra;d>>=r.extra,d-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===c)break e;if(p=m-c,r.offset>p){if(p=r.offset-p,p>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p>r.wnext?(p-=r.wnext,u=r.wsize-p):u=r.wnext-p,p>r.length&&(p=r.length),f=r.window}else f=o,u=a-r.offset,p=r.length;p>c&&(p=c),c-=p,r.length-=p;do{o[a++]=f[u++]}while(--p);0===r.length&&(r.mode=21);break;case 26:if(0===c)break e;o[a++]=r.length,c--,r.mode=21;break;case 27:if(r.wrap){for(;d<32;){if(0===s)break e;s--,l|=n[i++]<{if(!e||!e.state)return jn;let t=e.state;return t.window&&(t.window=null),e.state=null,On},inflateGetHeader:(e,t)=>{if(!e||!e.state)return jn;const r=e.state;return 0==(2&r.wrap)?jn:(r.head=t,t.done=!1,On)},inflateSetDictionary:(e,t)=>{const r=t.length;let n,o,i;return e&&e.state?(n=e.state,0!==n.wrap&&11!==n.mode?jn:11===n.mode&&(o=1,o=er(o,t,r,0),o!==n.check)?Mn:(i=qn(e,t,r,r),i?(n.mode=31,An):(n.havedict=1,On))):jn},inflateInfo:"pako inflate (from Nodeca project)"};var Zn=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Hn=Object.prototype.toString,{Z_NO_FLUSH:Wn,Z_FINISH:Xn,Z_OK:Gn,Z_STREAM_END:Vn,Z_NEED_DICT:Jn,Z_STREAM_ERROR:Yn,Z_DATA_ERROR:Kn,Z_MEM_ERROR:Qn}=or;function eo(e){this.options=Vr({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new rn,this.strm.avail_out=0;let r=Un.inflateInit2(this.strm,t.windowBits);if(r!==Gn)throw new Error(nr[r]);if(this.header=new Zn,Un.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Qr(t.dictionary):"[object ArrayBuffer]"===Hn.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=Un.inflateSetDictionary(this.strm,t.dictionary),r!==Gn)))throw new Error(nr[r])}eo.prototype.push=function(e,t){const r=this.strm,n=this.options.chunkSize,o=this.options.dictionary;let i,a,s;if(this.ended)return!1;for(a=t===~~t?t:!0===t?Xn:Wn,"[object ArrayBuffer]"===Hn.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),i=Un.inflate(r,a),i===Jn&&o&&(i=Un.inflateSetDictionary(r,o),i===Gn?i=Un.inflate(r,a):i===Kn&&(i=Jn));r.avail_in>0&&i===Vn&&r.state.wrap>0&&0!==e[r.next_in];)Un.inflateReset(r),i=Un.inflate(r,a);switch(i){case Yn:case Kn:case Jn:case Qn:return this.onEnd(i),this.ended=!0,!1}if(s=r.avail_out,r.next_out&&(0===r.avail_out||i===Vn))if("string"===this.options.to){let e=tn(r.output,r.next_out),t=r.next_out-e,o=en(r.output,e);r.next_out=t,r.avail_out=n-t,t&&r.output.set(r.output.subarray(e,e+t),0),this.onData(o)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(i!==Gn||0!==s){if(i===Vn)return i=Un.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},eo.prototype.onData=function(e){this.chunks.push(e)},eo.prototype.onEnd=function(e){e===Gn&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Jr(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var to,ro,no={exports:{}},oo={exports:{}};to="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ro={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&ro.rotl(e,8)|4278255360&ro.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],r=0,n=0;r>>5]|=e[r]<<24-n%32;return t},wordsToBytes:function(e){for(var t=[],r=0;r<32*e.length;r+=8)t.push(e[r>>>5]>>>24-r%32&255);return t},bytesToHex:function(e){for(var t=[],r=0;r>>4).toString(16)),t.push((15&e[r]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],r=0;r>>6*(3-o)&63)):t.push("=");return t.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var t=[],r=0,n=0;r>>6-2*n);return t}},oo.exports=ro;var io={utf8:{stringToBytes:function(e){return io.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(io.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],r=0;r>>24)|4278255360&(s[p]<<24|s[p]>>>8);s[c>>>5]|=128<>>9<<4)]=c;var u=o._ff,f=o._gg,h=o._hh,g=o._ii;for(p=0;p>>0,d=d+v>>>0,_=_+y>>>0,m=m+N>>>0}return e.endian([l,d,_,m])};o._ff=function(e,t,r,n,o,i,a){var s=e+(t&r|~t&n)+(o>>>0)+a;return(s<>>32-i)+t},o._gg=function(e,t,r,n,o,i,a){var s=e+(t&n|r&~n)+(o>>>0)+a;return(s<>>32-i)+t},o._hh=function(e,t,r,n,o,i,a){var s=e+(t^r^n)+(o>>>0)+a;return(s<>>32-i)+t},o._ii=function(e,t,r,n,o,i,a){var s=e+(r^(t|~n))+(o>>>0)+a;return(s<>>32-i)+t},o._blocksize=16,o._digestsize=16,no.exports=function(t,r){if(null==t)throw new Error("Illegal argument "+t);var i=e.wordsToBytes(o(t,r));return r&&r.asBytes?i:r&&r.asString?n.bytesToString(i):e.bytesToHex(i)}}();var lo,_o,mo=no.exports;(_o=lo||(lo={})).UP="up",_o.DOWN="down",_o.NORTH="north",_o.EAST="east",_o.SOUTH="south",_o.WEST="west";const po={[lo.UP]:[0,1,0],[lo.DOWN]:[0,-1,0],[lo.NORTH]:[0,0,-1],[lo.EAST]:[1,0,0],[lo.SOUTH]:[0,0,1],[lo.WEST]:[-1,0,0]};var uo,fo,ho,go,bo,vo,yo,No,ko,wo,Oo,xo,So,jo,Mo,Ao;function Po(e,t,r){if(!e[t])throw new Error(`Missing ${t} tag`);if(e[t].type!==r)throw new Error(`Expected ${t} to be of type ${r}, but found ${e[t].type}`);return e[t].value}!function(e){e.ALL=[e.UP,e.DOWN,e.NORTH,e.EAST,e.SOUTH,e.WEST],e.normal=function(e){return po[e]}}(lo||(lo={})),function(e){e.create=function(e,t,r){return[e,t,r]},e.offset=function(e,t,r,n){return[e[0]+t,e[1]+r,e[2]+n]},e.towards=function(t,r){return e.offset(t,...lo.normal(r))}}(uo||(uo={})),function(e){function t(e){return"object"==typeof e&&null!==e?e:void 0}e.readNumber=function(e){return"number"==typeof e?e:void 0},e.readInt=function(e){return"number"==typeof e?Math.floor(e):void 0},e.readString=function(e){return"string"==typeof e?e:void 0},e.readBoolean=function(e){return"boolean"==typeof e?e:void 0},e.readObject=t,e.readArray=function(e,t){if(Array.isArray(e))return e.map((e=>t(e)))},e.readMap=function(e,r){var n;const o=null!==(n=t(e))&&void 0!==n?n:{};return Object.fromEntries(Object.entries(o).map((([e,t])=>[e,r(t)])))},e.compose=function(e,t,r){const n=t(e);return n?r(n):void 0}}(fo||(fo={}));class Lo{constructor(e,t={}){this.name=e,this.properties=t}getName(){return this.name}getProperties(){return this.properties}getProperty(e){return this.properties[e]}isFluid(){return"minecraft:water"===this.name||"minecraft:lava"===this.name}equals(e){return this.name===e.name&&Object.keys(this.properties).every((t=>e.properties[t]===this.properties[t]))}toString(){return 0===Object.keys(this.properties).length?this.name:`${this.name}[${Object.entries(this.properties).map((([e,t])=>e+"="+t)).join(",")}]`}static fromNbt(e){const t=Po(e.value,"Name","string"),r=function(e,t){try{return e()}catch(r){return t}}((()=>Po(e.value,"Properties","compound")),{}),n=Object.keys(r).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t]:Po(r,t,"string")})),{});return new Lo(t,n)}static fromJson(e){var t,r;const n=null!==(t=fo.readObject(e))&&void 0!==t?t:{},o=null!==(r=fo.readString(n.Name))&&void 0!==r?r:"minecraft:stone",i=fo.readMap(n.Properties,(e=>{var t;return null!==(t=fo.readString(e))&&void 0!==t?t:""}));return new Lo(o,i)}}Lo.AIR=new Lo("minecraft:air");class Bo{constructor(e){this.minY=e,this.storage=Array(Bo.SIZE),this.palette=[Lo.AIR]}get minBlockY(){return this.minY<<4}index(e,t,r){return(e<<8)+(t<<4)+r}getBlockState(e,t,r){var n;const o=this.storage[this.index(e,t,r)];return null!==(n=this.palette[o])&&void 0!==n?n:Lo.AIR}setBlockState(e,t,r,n){let o=this.palette.findIndex((e=>e.equals(n)));-1===o&&(o=this.palette.length,this.palette.push(n)),this.storage[this.index(e,t,r)]=o}}Bo.WIDTH=16,Bo.SIZE=Bo.WIDTH*Bo.WIDTH*Bo.WIDTH;class Co{constructor(e,t,r){this.minY=e,this.height=t,this.pos=r,this.sections=Array(this.sectionsCount).fill(null)}get maxY(){return this.minY+this.height}get minSection(){return this.minY>>4}get maxSection(){return 1+(this.maxY-1>>4)}get sectionsCount(){return this.maxSection-this.minSection}getSectionIndex(e){return(e>>4)-this.minSection}getBlockState(e){var t;const[r,n,o]=e,i=this.sections[this.getSectionIndex(n)];return null!==(t=null==i?void 0:i.getBlockState(15&r,15&n,15&o))&&void 0!==t?t:Lo.AIR}setBlockState(e,t){const[r,n,o]=e,i=this.getSectionIndex(n);let a=this.sections[i];if(null===a){if(t.equals(Lo.AIR))return;a=this.getOrCreateSection(i)}a.setBlockState(15&r,15&n,15&o,t)}getOrCreateSection(e){return null==this.sections[e]&&(this.sections[e]=new Bo(this.minSection+e)),this.sections[e]}}function zo(e){return e*e}function To(e,t,r){return Math.max(t,Math.min(r,e))}function Io(e,t,r){return t+e*(r-t)}function Ro(e,t,r,n,o,i){return Io(t,Io(e,r,n),Io(e,o,i))}function Fo(e,t,r){return r<0?e:r>1?t:Io(r,e,t)}function Eo(e){return e*e*e*(e*(6*e-15)+10)}!function(e){e.create=function(e,t){return[e,t]},e.fromBlockPos=function(e){return[e[0]>>4,e[2]>>4]},e.fromLong=function(e){return[4294967295&Number(e),Number(e>>BigInt(32))]},e.minBlockX=function(e){return e[0]<<4},e.minBlockZ=function(e){return e[1]<<4},e.maxBlockX=function(e){return e[0]<<19},e.maxBlockZ=function(e){return e[1]<<19}}(ho||(ho={}));class Do{constructor(e){this.seed=BigInt(0),this.setSeed(e)}fork(){return new Do(this.nextLong())}setSeed(e){this.seed=e^Do.MULTIPLIER&Do.MODULUS_MASK}advance(){this.seed=this.seed*Do.MULTIPLIER+Do.INCREMENT&Do.MODULUS_MASK}consume(e){for(let t=0;t>BigInt(Do.MODULUS_BITS-e));return t>2147483647?t-4294967296:t}nextInt(e){if(void 0===e)return this.next(32);if(0==(e&e-1))return Number(BigInt(e)*BigInt(this.next(31))>>BigInt(31));let t,r;for(;(t=this.next(31))-(r=t%e)+(e-1)<0;);return r}nextLong(){return(BigInt(this.next(32))<>BigInt(30))*BigInt("-4658895280553007687")&BigInt("0xFFFFFFFFFFFFFFFF"))^e>>BigInt(27))*BigInt("-7723592293110705685")&BigInt("0xFFFFFFFFFFFFFFFF"))^e>>BigInt(31))&BigInt("0xFFFFFFFFFFFFFFFF")}static upgradeSeedTo128bit(e){e<0&&(e+=BigInt("0x10000000000000000"));const t=e^$o.SILVER_RATIO_64,r=t+$o.GOLDEN_RATIO_64&BigInt("0xFFFFFFFFFFFFFFFF");return[$o.mixStafford13(t),$o.mixStafford13(r)]}static rotateLeft(e,t){return e<>BigInt(64)-t}setSeed(e){this.seed=$o.upgradeSeedTo128bit(e)}fork(){return new $o([this.next(),this.next()])}static getSeed(e,t,r){let n=e*BigInt(3129871)^r*BigInt(116129781)^t;return n=n*n*BigInt(42317861)+n*BigInt(11),n>>BigInt(16)}forkAt(e,t,r){const n=$o.getSeed(e,t,r)^this.seed[0];return new $o([n,this.seed[1]])}static LongfromBytes(e,t,r,n,o,i,a,s){return BigInt(e)<BigInt("0x8000000000000000")&&(e-=BigInt("0x10000000000000000")),e}consume(e){let t=this.seed[0],r=this.seed[1];for(let n=0;n>BigInt(64-e)}nextInt(e){var t=this.next()&BigInt(4294967295);if(e){const a=BigInt(e);var r=t*a,n=r&BigInt(4294967295);if(n>BigInt(32);return Number(i)}var a=Number(t);return a>=2147483648&&(a-=4294967296),a}nextFloat(){return Number(this.nextBits(24))*$o.FLOAT_MULTIPLIER}nextDouble(){return Number(this.nextBits(53))*$o.DOUBLE_MULTIPLIER}parityConfigString(){return"seedLo: "+this.seed[0]+", seedHi: "+this.seed[1]}}$o.SILVER_RATIO_64=BigInt("7640891576956012809"),$o.GOLDEN_RATIO_64=BigInt("-7046029254386353131"),$o.FLOAT_MULTIPLIER=1/Math.pow(2,24),$o.DOUBLE_MULTIPLIER=11102230246251565e-32;class qo{constructor(e){this.xo=256*e.nextDouble(),this.yo=256*e.nextDouble(),this.zo=256*e.nextDouble(),this.p=Array(256);for(let t=0;t<256;t+=1)this.p[t]=t;for(let t=0;t<256;t+=1){const r=e.nextInt(256-t),n=this.p[t];this.p[t]=this.p[t+r],this.p[t+r]=n}}sample2D(e,t){let r,n,o;const i=(e+t)*qo.F2,a=Math.floor(e+i),s=e-(a-(r=(a+(n=Math.floor(t+i)))*qo.G2));let c,l;s>(o=t-(n-r))?(c=1,l=0):(c=0,l=1);const d=s-c+qo.G2,_=o-l+qo.G2,m=s-1+2*qo.G2,p=o-1+2*qo.G2,u=255&a,f=255&n,h=this.P(u+this.P(f))%12,g=this.P(u+c+this.P(f+l))%12,b=this.P(u+1+this.P(f+1))%12;return 70*(this.getCornerNoise3D(h,s,o,0,.5)+this.getCornerNoise3D(g,d,_,0,.5)+this.getCornerNoise3D(b,m,p,0,.5))}sample(e,t,r){const n=.3333333333333333*(e+t+r),o=Math.floor(e+n),i=Math.floor(t+n),a=Math.floor(r+n),s=.16666666666666666*(o+i+a),c=e-(o-s),l=t-(i-s),d=r-(a-s);let _,m,p,u,f,h;c>=l?l>=d?(_=1,m=0,p=0,u=1,f=1,h=0):c>=d?(_=1,m=0,p=0,u=1,f=0,h=1):(_=0,m=0,p=1,u=1,f=0,h=1):l127?t-256:t;for(let t=0;t<256;t+=1){const r=e.nextInt(256-t),n=this.p[t];this.p[t]=this.p[t+r],this.p[t+r]=n}}sample(e,t,r,n=0,o=0){const i=e+this.xo,a=t+this.yo,s=r+this.zo,c=Math.floor(i),l=Math.floor(a),d=Math.floor(s),_=i-c,m=a-l,p=s-d;let u=0;if(0!==n){const e=o>=0&&o=0;n-=1)n0&&(n=this.maxLimitNoise.getOctaveNoise(c))&&(s+=n.sample(_,m,p,d,t*d)/i),i/=2}return Fo(a/512,s/512,o)/128}}(go||(go={})).fromJson=function(e){var t,r,n,o,i;const a=null!==(t=fo.readObject(e))&&void 0!==t?t:{};return{xzScale:null!==(r=fo.readNumber(a.xz_scale))&&void 0!==r?r:1,yScale:null!==(n=fo.readNumber(a.y_scale))&&void 0!==n?n:1,xzFactor:null!==(o=fo.readNumber(a.xz_factor))&&void 0!==o?o:80,yFactor:null!==(i=fo.readNumber(a.y_factor))&&void 0!==i?i:80}};class Wo{constructor(e,{firstOctave:t,amplitudes:r}){this.first=new Zo(e,t,r),this.second=new Zo(e,t,r);let n=1/0,o=-1/0;for(let a=0;a{var t;return null!==(t=fo.readNumber(e))&&void 0!==t?t:0})))&&void 0!==n?n:[]}},function(e){e.fromJson=function(t,r){var n,o,i,a;if("number"==typeof t)return new Xo(t);const s=null!==(n=fo.readObject(t))&&void 0!==n?n:{},c=new Go(r(s.coordinate)),l=null!==(o=fo.readArray(s.points,(e=>{var t;return null!==(t=fo.readObject(e))&&void 0!==t?t:{}})))&&void 0!==o?o:[];if(0===l.length)return new Xo(0);for(const d of l){const t=null!==(i=fo.readNumber(d.location))&&void 0!==i?i:0,n=e.fromJson(d.value,r),o=null!==(a=fo.readNumber(d.derivative))&&void 0!==a?a:0;c.addPoint(t,n,o)}return c}}(vo||(vo={}));class Xo{constructor(e){this.value=e}apply(){return this.value}toJson(){return this.value}}class Go{constructor(e,t=[],r=[],n=[]){this.coordinate=e,this.locations=t,this.values=r,this.derivatives=n}apply(e){const t=this.coordinate.apply(e),r=function(e,t,r){let n=t-e;for(;n>0;){const t=Math.floor(n/2),o=e+t;r(o)?n=t:(e=o+1,n-=t+1)}return e}(0,this.locations.length,(e=>t({location:e,value:this.values[t].toJson(),derivative:this.derivatives[t]})))}}}(yo||(yo={})).rotate=function(e,t,r){let{up:n,down:o,north:i,east:a,south:s,west:c}=e;switch(r){case 90:[i,a,s,c]=[a,s,c,i];break;case 180:[i,a,s,c]=[s,c,i,a];break;case 270:[i,a,s,c]=[c,i,a,s]}switch(t){case 90:[n,i,o,s]=[i,o,s,n];break;case 180:[n,i,o,s]=[o,s,n,i];break;case 270:[n,i,o,s]=[s,n,i,o]}return{up:n,down:o,north:i,east:a,south:s,west:c}},function(e){function t(e,t){return"number"==typeof e?new r(e,null!=t?t:e):e}e.target=function(e,t,r,n,i,a){return new o(e,t,r,n,i,a)},e.parameters=function(e,r,o,i,a,s,c){return new n(t(e),t(r),t(o),t(i),t(a),t(s),c)},e.param=t;class r{constructor(e,t){this.min=e,this.max=t}distance(e){const t=("number"==typeof e?e:e.min)-this.max,r=this.min-("number"==typeof e?e:e.max);return t>0?t:Math.max(r,0)}union(e){return new r(Math.min(this.min,e.min),Math.max(this.max,e.max))}static fromJson(e){var t;if("number"==typeof e)return new r(e,e);const[n,o]=null!==(t=fo.readArray(e,(e=>fo.readNumber(e))))&&void 0!==t?t:[];return new r(null!=n?n:0,null!=o?o:0)}}e.Param=r;class n{constructor(e,t,r,n,o,i,a){this.temperature=e,this.humidity=t,this.continentalness=r,this.erosion=n,this.depth=o,this.weirdness=i,this.offset=a}fittness(e){return zo(this.temperature.distance(e.temperature))+zo(this.humidity.distance(e.humidity))+zo(this.continentalness.distance(e.continentalness))+zo(this.erosion.distance(e.erosion))+zo(this.depth.distance(e.depth))+zo(this.weirdness.distance(e.weirdness))+zo(this.offset-e.offset)}space(){return[this.temperature,this.humidity,this.continentalness,this.erosion,this.depth,this.weirdness,new r(this.offset,this.offset)]}static fromJson(e){var t,o;const i=null!==(t=fo.readObject(e))&&void 0!==t?t:{};return new n(r.fromJson(i.temperature),r.fromJson(i.humidity),r.fromJson(i.continentalness),r.fromJson(i.erosion),r.fromJson(i.depth),r.fromJson(i.weirdness),null!==(o=fo.readInt(i.offset))&&void 0!==o?o:0)}}e.ParamPoint=n;class o{constructor(e,t,r,n,o,i){this.temperature=e,this.humidity=t,this.continentalness=r,this.erosion=n,this.depth=o,this.weirdness=i}get offset(){return 0}toArray(){return[this.temperature,this.humidity,this.continentalness,this.erosion,this.depth,this.weirdness,this.offset]}}e.TargetPoint=o,e.Parameters=class{constructor(e){this.things=e,this.index=new i(e)}find(e){return this.index.search(e,((e,t)=>e.distance(t)))}};class i{constructor(e){this.root=i.build(e.map((([e,t])=>new c(e,t))))}static build(e){if(1===e.length)return e[0];if(e.length<=i.CHILDREN_PER_NODE){const t=e.map((e=>{let t=0;for(let r=0;r<7;r+=1){const n=e.space[r];t+=Math.abs((n.min+n.max)/2)}return{key:t,node:e}})).sort(((e,t)=>e.key-t.key)).map((({node:e})=>e));return new s(t)}let t=1/0,r=-1,n=[];for(let o=0;o<7;++o){e=i.sort(e,o,!1),n=i.bucketize(e);let a=0;for(const e of n)a+=i.area(e.space);t>a&&(t=a,r=o)}return e=i.sort(e,r,!1),n=i.bucketize(e),n=i.sort(n,r,!0),new s(n.map((e=>i.build(e.children))))}static sort(e,t,r){return e.map((e=>{const n=e.space[t],o=(n.min+n.max)/2;return{key:r?Math.abs(o):o,node:e}})).sort(((e,t)=>e.key-t.key)).map((({node:e})=>e))}static bucketize(e){const t=[];let r=[];const n=Math.pow(10,Math.floor(Math.log(e.length-.01)/Math.log(10)));for(const o of e)r.push(o),r.lengthnew r(1/0,-1/0)));for(const r of e)t=[...Array(7)].map(((e,n)=>t[n].union(r.space[n])));return t}search(e,t){let r=1/0,n=null;for(const o of this.children){const i=t(o,e);if(r<=i)continue;const a=o.search(e,t),s=o==a?i:t(a,e);r<=s||(r=s,n=a)}return n}}e.RSubTree=s;class c extends a{constructor(e,t){super(e.space()),this.thing=t}search(){return this}}e.RLeaf=c}(No||(No={}));class Vo{constructor(e){this.biome=e}getBiome(){return this.biome}static fromJson(e){var t,r;const n=null!==(t=fo.readObject(e))&&void 0!==t?t:{},o=null!==(r=fo.readString(n.biome))&&void 0!==r?r:"minecraft:the_void";return new Vo(o)}}class Jo{constructor(e,t,r){this.offsetSampler=e,this.factorSampler=t,this.jaggednessSampler=r}static extractor(e){return{apply:t=>t[e],toJson:()=>e}}static fromJson(e){var t;const r=null!==(t=fo.readObject(e))&&void 0!==t?t:{};return new Jo(vo.fromJson(r.offset,this.EXTRACTOR),vo.fromJson(r.factor,this.EXTRACTOR),vo.fromJson(r.jaggedness,this.EXTRACTOR))}toJson(){return{offset:this.offsetSampler.toJson(),factor:this.factorSampler.toJson(),jaggedness:this.jaggednessSampler.toJson()}}offset(e){return this.offsetSampler.apply(e)+Jo.GLOBAL_OFFSET}factor(e){return this.factorSampler.apply(e)}jaggedness(e){return this.jaggednessSampler.apply(e)}static point(e,t,r){return{continents:e,erosion:t,weirdness:r,ridges:this.peaksAndValleys(r)}}static peaksAndValleys(e){return 3*-(Math.abs(Math.abs(e)-.6666667)-.33333334)}static overworld(){const e=this.buildErosionOffsetSpline(-.05,0,0,.1,0,-.03,!1,!1),t=this.buildErosionOffsetSpline(-.1,.03,.1,.1,.01,-.03,!1,!1),r=this.buildErosionOffsetSpline(-.1,.03,.1,.7,.01,-.03,!0,!0),n=this.buildErosionOffsetSpline(.3,.03,.1,1,.01,.01,!0,!0),o=new Go(this.CONTINENTS).addPoint(-1.1,.044).addPoint(-1.02,-.2222).addPoint(-.51,-.2222).addPoint(-.44,-.12).addPoint(-.18,-.12).addPoint(-.16,e).addPoint(-.15,e).addPoint(-.1,t).addPoint(.25,r).addPoint(1,n),i=new Go(this.CONTINENTS).addPoint(-.19,3.95).addPoint(-.15,this.getErosionFactor(6.25,!0)).addPoint(-.1,this.getErosionFactor(5.47,!0)).addPoint(.03,this.getErosionFactor(5.08,!0)).addPoint(.06,this.getErosionFactor(4.69,!1)),a=new Go(this.CONTINENTS).addPoint(.11,0).addPoint(.03,this.buildErosionJaggednessSpline(1,.5,0,0)).addPoint(.65,this.buildErosionJaggednessSpline(1,1,1,0));return new Jo(o,i,a)}static getErosionFactor(e,t){const r=new Go(this.WEIRDNESS).addPoint(-.2,6.3).addPoint(.2,e),n=new Go(this.EROSION).addPoint(-.6,r).addPoint(-.5,new Go(this.WEIRDNESS).addPoint(-.05,6.3).addPoint(.05,2.67)).addPoint(-.35,r).addPoint(-.25,r).addPoint(-.1,new Go(this.WEIRDNESS).addPoint(-.05,2.67).addPoint(.05,6.3)).addPoint(.03,r);if(t){const t=new Go(this.WEIRDNESS).addPoint(0,e).addPoint(.1,.625),r=new Go(this.RIDGES).addPoint(-.9,e).addPoint(-.69,t);n.addPoint(.35,e).addPoint(.45,r).addPoint(.55,r).addPoint(.62,e)}else{const t=new Go(this.RIDGES).addPoint(-.7,r).addPoint(-.15,1.37),o=new Go(this.RIDGES).addPoint(.45,r).addPoint(.7,1.56);n.addPoint(.05,o).addPoint(.4,o).addPoint(.45,t).addPoint(.55,t).addPoint(.58,e)}return n}static buildErosionOffsetSpline(e,t,r,n,o,i,a,s){const c=this.buildMountainRidgeSplineWithPoints(Io(n,.6,1.5),s),l=this.buildMountainRidgeSplineWithPoints(Io(n,.6,1),s),d=this.buildMountainRidgeSplineWithPoints(n,s),_=this.ridgeSpline(e-.15,.5*n,Io(.5,.5,.5)*n,.5*n,.6*n,.5),m=this.ridgeSpline(e,o*n,t*n,.5*n,.6*n,.5),p=this.ridgeSpline(e,o,o,t,r,.5),u=this.ridgeSpline(e,o,o,t,r,.5),f=new Go(this.RIDGES).addPoint(-1,e).addPoint(-.4,p).addPoint(0,r+.07),h=this.ridgeSpline(-.02,i,i,t,r,0),g=new Go(this.EROSION).addPoint(-.85,c).addPoint(-.7,l).addPoint(-.4,d).addPoint(-.35,_).addPoint(-.1,m).addPoint(.2,p);return a&&g.addPoint(.4,u).addPoint(.45,f).addPoint(.55,f).addPoint(.58,u),g.addPoint(.7,h),g}static buildMountainRidgeSplineWithPoints(e,t){const r=new Go(this.RIDGES),n=this.mountainContinentalness(-1,e,-.7),o=this.mountainContinentalness(1,e,-.7),i=this.calculateMountainRidgeZeroContinentalnessPoint(e);if(-.650?this.buildWeirdnessJaggednessSpline(t):0).addPoint(1,e>0?this.buildWeirdnessJaggednessSpline(e):0)}static buildWeirdnessJaggednessSpline(e){return new Go(Jo.WEIRDNESS).addPoint(-.01,.63*e).addPoint(.01,.3*e)}}Jo.GLOBAL_OFFSET=-.50375,Jo.EXTRACTOR=e=>{var t;const r=null!==(t=fo.readString(e))&&void 0!==t?t:"continents";return Jo.extractor(r)},Jo.CONTINENTS=Jo.extractor("continents"),Jo.EROSION=Jo.extractor("erosion"),Jo.WEIRDNESS=Jo.extractor("weirdness"),Jo.RIDGES=Jo.extractor("ridges"),(ko||(ko={})).fromList=function(e){return(t,r,n,o)=>{for(const i of e){const e=i(t,r,n,o);if(e)return e}return null}};class Yo{constructor(e,t){this.chunk=e,this.filler=t,this.noise000=0,this.noise001=0,this.noise100=0,this.noise101=0,this.noise010=0,this.noise011=0,this.noise110=0,this.noise111=0,this.valueXZ00=0,this.valueXZ10=0,this.valueXZ01=0,this.valueXZ11=0,this.valueZ0=0,this.valueZ1=0,this.value=0,this.slice0=Yo.allocateSlice(e.cellCountY,e.cellCountXZ),this.slice1=Yo.allocateSlice(e.cellCountY,e.cellCountXZ)}static allocateSlice(e,t){const r=Array(t+1);for(let n=0;ne.initializeForFirstCellX()))}advanceCellX(e){this.interpolators.forEach((t=>t.advanceCellX(e)))}selectCellYZ(e,t){this.interpolators.forEach((r=>r.selectCellYZ(e,t)))}updateForY(e){this.interpolators.forEach((t=>t.updateForY(e)))}updateForX(e){this.interpolators.forEach((t=>t.updateForX(e)))}updateForZ(e){this.interpolators.forEach((t=>t.updateForZ(e)))}swapSlices(){this.interpolators.forEach((e=>e.swapSlices()))}updateNoiseAndGenerateBaseState(e,t,r){return this.baseNoise(e,t,r)}}(wo||(wo={})).create=function(e,t,r){return{offset:e,factor:t,jaggedness:r}},(Oo||(Oo={})).create=function(e,t,r){const n=t+e.getOffset(t,0,r),o=r+e.getOffset(r,t,0),i=e.getContinentalness(n,o),a=e.getWeirdness(n,o),s=e.getErosion(n,o);return{shiftedX:n,shiftedZ:o,continentalness:i,weirdness:a,erosion:s,terrainInfo:e.getTerrainInfo(n<<2,o<<2,i,a,s)}},(xo||(xo={})).fromJson=function(e){var t,r,n,o,i,a,s,c,l,d,_,m;const p=null!==(t=fo.readObject(e))&&void 0!==t?t:{};return{minY:null!==(r=fo.readInt(p.min_y))&&void 0!==r?r:0,height:null!==(n=fo.readInt(p.height))&&void 0!==n?n:256,xzSize:null!==(o=fo.readInt(p.size_horizontal))&&void 0!==o?o:1,ySize:null!==(i=fo.readInt(p.size_vertical))&&void 0!==i?i:1,densityFactor:null!==(a=fo.readNumber(p.density_factor))&&void 0!==a?a:0,densityOffset:null!==(s=fo.readNumber(p.density_offset))&&void 0!==s?s:0,sampling:go.fromJson(p.sampling),topSlide:So.fromJson(p.top_slide),bottomSlide:So.fromJson(p.bottom_slide),terrainShaper:Jo.fromJson(p.terrain_shaper),useSimplexSurfaceNoise:null!==(c=fo.readBoolean(p.simplex_surface_noise))&&void 0!==c&&c,randomDensityOffset:null!==(l=fo.readBoolean(p.random_density_offset))&&void 0!==l&&l,islandNoiseOverride:null!==(d=fo.readBoolean(p.island_noise_override))&&void 0!==d&&d,isAmplified:null!==(_=fo.readBoolean(p.amplified))&&void 0!==_&&_,useLegacyRandom:null!==(m=fo.readBoolean(p.use_legacy_random))&&void 0!==m&&m}},function(e){e.fromJson=function(e){var t,r,n,o;const i=null!==(t=fo.readObject(e))&&void 0!==t?t:{};return{target:null!==(r=fo.readNumber(i.target))&&void 0!==r?r:0,size:null!==(n=fo.readInt(i.size))&&void 0!==n?n:0,offset:null!==(o=fo.readInt(i.offset))&&void 0!==o?o:0}},e.apply=function(e,t,r){if(e.size<=0)return t;const n=(r-e.offset)/e.size;return Fo(e.target,t,n)}}(So||(So={}));class Qo{constructor(e,t,r,n,o,i,a=!1){if(this.cellWidth=e,this.cellHeight=t,this.cellCountY=r,this.settings=n,a){const r=new Do(i),a=n.useLegacyRandom?new Do(i):r.fork();this.blendedNoise=new Ho(a,n.sampling,e,t),r.consume(8),this.temperatureNoise=new Wo(new Do(i),o.temperature),this.humidityNoise=new Wo(new Do(i+BigInt(1)),o.humidity),this.continentalnessNoise=new Wo(new Do(i+BigInt(2)),o.continentalness),this.erosionNoise=new Wo(new Do(i+BigInt(3)),o.erosion),this.weirdnessNoise=new Wo(new Do(i+BigInt(4)),o.weirdness),this.offsetNoise=new Wo(new Do(i+BigInt(5)),o.shift),this.jaggedNoise=new Wo(r.fork(),{firstOctave:-16,amplitudes:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]})}else{const r=$o.create(i).fork();this.blendedNoise=new Ho(r.forkWithHashOf("minecraft:terrain"),n.sampling,e,t),this.temperatureNoise=new Wo(r.forkWithHashOf("minecraft:temperature"),o.temperature),this.humidityNoise=new Wo(r.forkWithHashOf("minecraft:vegetation"),o.humidity),this.continentalnessNoise=new Wo(r.forkWithHashOf("minecraft:continentalness"),o.continentalness),this.erosionNoise=new Wo(r.forkWithHashOf("minecraft:erosion"),o.erosion),this.weirdnessNoise=new Wo(r.forkWithHashOf("minecraft:ridge"),o.weirdness),this.offsetNoise=new Wo(r.forkWithHashOf("minecraft:offset"),o.shift),this.jaggedNoise=new Wo(r.forkWithHashOf("minecraft:jagged"),{firstOctave:-16,amplitudes:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]})}this.shaper=n.terrainShaper,this.baseNoise=e=>{const t=e.createNoiseInterpolator(((t,r,n)=>this.calculateBaseNoise(t,r,n,e.getTerrainInfo(t>>2,n>>2))));return()=>t.sample()}}sample(e,t,r){const n=e+this.getOffset(e,0,r),o=r+this.getOffset(r,e,0),i=this.getContinentalness(n,o),a=this.getErosion(n,o),s=this.getWeirdness(n,o),c=this.shaper.offset(Jo.point(i,a,s));return this.target(e,t,r,n,o,i,a,s,c)}target(e,t,r,n,o,i,a,s,c){const l=t+this.getOffset(t,r,e),d=this.getTemperature(n,l,o),_=this.getHumidity(n,l,o),m=this.computeDimensionDensity(t<<2)+c;return No.target(d,_,i,a,m,s)}getOffset(e,t,r){return 4*this.offsetNoise.sample(e,t,r)}getTemperature(e,t,r){return this.temperatureNoise.sample(e,t,r)}getHumidity(e,t,r){return this.humidityNoise.sample(e,t,r)}getContinentalness(e,t){return this.continentalnessNoise.sample(e,0,t)}getErosion(e,t){return this.erosionNoise.sample(e,0,t)}getWeirdness(e,t){return this.weirdnessNoise.sample(e,0,t)}getTerrainInfo(e,t,r,n,o){const i=Jo.point(r,n,o);return wo.create(this.shaper.offset(i),this.shaper.factor(i),this.shaper.jaggedness(i))}makeBaseNoiseFiller(e,t){const r=this.baseNoise(e);return(e,n,o)=>{let i=r();return i=To(.64*i,-1,1),i=i/2-i*i*i/24,i+=t(e,n,o),i>0?null:Lo.AIR}}calculateBaseNoise(e,t,r,n){let o=this.blendedNoise.sample(e,t,r);if(n){const i=this.sampleJaggedNoise(n.jaggedness,e,r),a=this.computeDimensionDensity(t),s=n.factor*(n.offset+i+a);o+=s>0?4*s:s}return o=To(o,-64,64),o=this.applySlide(o,t/this.cellHeight),o=To(o,-64,64),o}sampleJaggedNoise(e,t,r){if(0===e)return 0;const n=this.jaggedNoise.sample(1500*t,0,1500*r);return n>0?e*n:e/2*n}computeDimensionDensity(e){return(1-e/128)*this.settings.densityFactor+this.settings.densityOffset}applySlide(e,t){const r=t-Math.floor(this.settings.minY/this.cellHeight);return e=So.apply(this.settings.topSlide,e,this.cellCountY-r),So.apply(this.settings.bottomSlide,e,r)}}class ei{constructor(e,t,r){this.biomeSource=t,this.settings=r,this.cellHeight=r.noise.ySize<<2,this.cellWidth=r.noise.xzSize<<2,this.cellCountXZ=Math.floor(16/this.cellWidth),this.cellCountY=Math.floor(r.noise.height/this.cellHeight),this.sampler=new Qo(this.cellWidth,this.cellHeight,this.cellCountY,r.noise,r.octaves,e,r.legacyRandomSource),this.materialRule=ko.fromList([(e,t,r,n)=>e.updateNoiseAndGenerateBaseState(t,r,n)])}fillBiomes(e){const t=Math.max(e.minY,this.settings.noise.minY),r=Math.min(e.maxY,this.settings.noise.minY+this.settings.noise.height),n=Math.floor(t/this.cellHeight);Math.floor((r-t)/this.cellHeight);const o=ho.minBlockX(e.pos),i=ho.minBlockZ(e.pos),a=new Ko(this.cellWidth,this.cellHeight,this.cellCountXZ,this.cellCountY,n,this.sampler,o,i,(()=>0));for(let s=0;sh))}}}fill(e){var t;const r=Math.max(e.minY,this.settings.noise.minY),n=Math.min(e.maxY,this.settings.noise.minY+this.settings.noise.height),o=Math.floor(r/this.cellHeight),i=Math.floor((n-r)/this.cellHeight),a=ho.minBlockX(e.pos),s=ho.minBlockZ(e.pos),c=new Ko(this.cellWidth,this.cellHeight,this.cellCountXZ,this.cellCountY,o,this.sampler,a,s,(()=>0));c.initializeForFirstCellX();for(let l=0;l=0;d-=1){c.selectCellYZ(d,r);for(let i=this.cellHeight-1;i>=0;i-=1){const _=(o+d)*this.cellHeight+i,m=15&_,p=e.getSectionIndex(_);e.getSectionIndex(n.minBlockY)!==p&&(n=e.getOrCreateSection(p));const u=i/this.cellHeight;c.updateForY(u);for(let e=0;e{var t,r,n;return{distance:null!==(t=fo.readInt(e.distance))&&void 0!==t?t:0,spread:null!==(r=fo.readInt(e.spread))&&void 0!==r?r:0,count:null!==(n=fo.readInt(e.count))&&void 0!==n?n:0}})),structures:fo.readMap(r.structures,(e=>{var t,r,n,o,i;return r=null!==(t=fo.readObject(e))&&void 0!==t?t:{},{spacing:null!==(n=fo.readInt(r.spacing))&&void 0!==n?n:0,separation:null!==(o=fo.readInt(r.separation))&&void 0!==o?o:0,salt:null!==(i=fo.readInt(r.salt))&&void 0!==i?i:0}}))}},(Ao||(Ao={})).fromJson=function(e){var t;const r=null!==(t=fo.readObject(e))&&void 0!==t?t:{};return{temperature:bo.fromJson(r.temperature),humidity:bo.fromJson(r.humidity),continentalness:bo.fromJson(r.continentalness),erosion:bo.fromJson(r.erosion),weirdness:bo.fromJson(r.weirdness),shift:bo.fromJson(r.shift)}};let ri=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});ri.decode();let ni=null;function oi(e,t){return ri.decode((null!==ni&&ni.buffer===ti.memory.buffer||(ni=new Uint8Array(ti.memory.buffer)),ni).subarray(e,e+t))}const ii=new Uint32Array(2),ai=new BigInt64Array(ii.buffer);let si=null;function ci(){return null!==si&&si.buffer===ti.memory.buffer||(si=new Int32Array(ti.memory.buffer)),si}let li=null;function di(){return null!==li&&li.buffer===ti.memory.buffer||(li=new Float64Array(ti.memory.buffer)),li}let _i=0;function mi(e,t){const r=t(8*e.length);return di().set(e,r/8),_i=e.length,r}let pi=null;function ui(e,t){const r=t(4*e.length);return(null!==pi&&pi.buffer===ti.memory.buffer||(pi=new Uint32Array(ti.memory.buffer)),pi).set(e,r/4),_i=e.length,r}function fi(e,t,r,n,o,i,a,s,c,l,d,_,m,p){var u=mi(e,ti.__wbindgen_malloc),f=_i,h=mi(t,ti.__wbindgen_malloc),g=_i,b=mi(r,ti.__wbindgen_malloc),v=_i,y=mi(n,ti.__wbindgen_malloc),N=_i,k=mi(o,ti.__wbindgen_malloc),w=_i,O=mi(i,ti.__wbindgen_malloc),x=_i,S=mi(a,ti.__wbindgen_malloc),j=_i,M=mi(s,ti.__wbindgen_malloc),A=_i,P=mi(c,ti.__wbindgen_malloc),L=_i,B=mi(l,ti.__wbindgen_malloc),C=_i,z=mi(d,ti.__wbindgen_malloc),T=_i,I=mi(_,ti.__wbindgen_malloc),R=_i,F=mi(m,ti.__wbindgen_malloc),E=_i,D=ui(p,ti.__wbindgen_malloc),$=_i,q=ti.biome_parameters(u,f,h,g,b,v,y,N,k,w,O,x,S,j,M,A,P,L,B,C,z,T,I,R,F,E,D,$);return yi.__wrap(q)}function hi(e,t,r,n,o,i,a,s,c,l,d,_,m){ai[0]=e;const p=ii[0],u=ii[1];var f=mi(r,ti.__wbindgen_malloc),h=_i,g=mi(o,ti.__wbindgen_malloc),b=_i,v=mi(a,ti.__wbindgen_malloc),y=_i,N=mi(c,ti.__wbindgen_malloc),k=_i,w=mi(d,ti.__wbindgen_malloc),O=_i,x=mi(m,ti.__wbindgen_malloc),S=_i,j=ti.climate_sampler(p,u,t,f,h,n,g,b,i,v,y,s,N,k,l,w,O,_,x,S);return Ni.__wrap(j)}function gi(e,t){if(!(e instanceof t))throw new Error(`expected instance of ${t.name}`);return e.ptr}function bi(e,t,r,n,o,i,a,s,c,l,d){try{const h=ti.__wbindgen_add_to_stack_pointer(-16);gi(e,yi),gi(t,Ni),ti.multi_noise(h,e.ptr,t.ptr,r,n,o,i,a,s,c,l,d);var _=ci()[h/4+0],m=ci()[h/4+1],p=(u=_,f=m,ci().subarray(u/4,u/4+f)).slice();return ti.__wbindgen_free(_,4*m),p}finally{ti.__wbindgen_add_to_stack_pointer(16)}var u,f}function vi(e,t,r,n,o,i,a,s,c,l){try{const f=ti.__wbindgen_add_to_stack_pointer(-16);gi(e,Ni),ti.climate_noise(f,e.ptr,t,r,n,o,i,a,s,c,l);var d=ci()[f/4+0],_=ci()[f/4+1],m=(p=d,u=_,di().subarray(p/8,p/8+u)).slice();return ti.__wbindgen_free(d,8*_),m}finally{ti.__wbindgen_add_to_stack_pointer(16)}var p,u}class yi{static __wrap(e){const t=Object.create(yi.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ti.__wbg_parameterlist_free(e)}}class Ni{static __wrap(e){const t=Object.create(Ni.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();ti.__wbg_sampler_free(e)}}async function ki(e){void 0===e&&(e=new URL("deepslate_rs_bg.wasm",d.url));const t={wbg:{}};t.wbg.__wbindgen_throw=function(e,t){throw new Error(oi(e,t))},("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));const{instance:r,module:n}=await async function(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(r){if("application/wasm"==e.headers.get("Content-Type"))throw r;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",r)}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{const r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}(await e,t);return ti=r.exports,ki.__wbindgen_wasm_module=n,ti}var wi="/assets/deepslate_rs_bg.4990c219.wasm",Oi={},xi={};Object.defineProperty(xi,"__esModule",{value:!0}),xi.initCollections=void 0,xi.initCollections=function(e){e.register("advancement_trigger",["minecraft:bee_nest_destroyed","minecraft:bred_animals","minecraft:brewed_potion","minecraft:changed_dimension","minecraft:channeled_lightning","minecraft:construct_beacon","minecraft:consume_item","minecraft:cured_zombie_villager","minecraft:effects_changed","minecraft:enchanted_item","minecraft:enter_block","minecraft:entity_hurt_player","minecraft:entity_killed_player","minecraft:filled_bucket","minecraft:fishing_rod_hooked","minecraft:hero_of_the_village","minecraft:impossible","minecraft:inventory_changed","minecraft:item_durability_changed","minecraft:killed_by_crossbow","minecraft:levitation","minecraft:location","minecraft:nether_travel","minecraft:placed_block","minecraft:player_hurt_entity","minecraft:player_killed_entity","minecraft:recipe_unlocked","minecraft:shot_crossbow","minecraft:safely_harvest_honey","minecraft:slept_in_bed","minecraft:slide_down_block","minecraft:summoned_entity","minecraft:tame_animal","minecraft:tick","minecraft:used_ender_eye","minecraft:used_totem","minecraft:villager_trade","minecraft:voluntary_exile"]),e.register("loot_pool_entry_type",["minecraft:empty","minecraft:item","minecraft:tag","minecraft:loot_table","minecraft:alternatives","minecraft:sequence","minecraft:group","minecraft:dynamic"]),e.register("loot_condition_type",["minecraft:alternative","minecraft:inverted","minecraft:reference","minecraft:entity_properties","minecraft:block_state_property","minecraft:match_tool","minecraft:damage_source_properties","minecraft:location_check","minecraft:weather_check","minecraft:time_check","minecraft:entity_scores","minecraft:random_chance","minecraft:random_chance_with_looting","minecraft:table_bonus","minecraft:killed_by_player","minecraft:survives_explosion"]),e.register("loot_function_type",["minecraft:set_count","minecraft:set_damage","minecraft:set_name","minecraft:set_lore","minecraft:set_nbt","minecraft:set_attributes","minecraft:set_contents","minecraft:enchant_randomly","minecraft:enchant_with_levels","minecraft:looting_enchant","minecraft:limit_count","minecraft:furnace_smelt","minecraft:explosion_decay","minecraft:fill_player_head","minecraft:copy_name","minecraft:copy_nbt","minecraft:copy_state","minecraft:apply_bonus","minecraft:exploration_map","minecraft:set_stew_effect"]),e.register("attribute",["generic.maxHealth","generic.followRange","generic.knockbackResistance","generic.movementSpeed","generic.attackDamage","generic.armor","generic.armorToughness","generic.attackSpeed","generic.luck","horse.jumpStrength","generic.attackKnockback","generic.flyingSpeed","zombie.spawnReinforcements"]),e.register("structure_feature",["pillager_outpost","mineshaft","mansion","jungle_pyramid","desert_pyramid","igloo","shipwreck","swamp_hut","stronghold","monument","ocean_ruin","fortress","endcity","buried_treasure","village"]),e.register("dimension",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("keybind",["key.advancements","key.attack","key.back","key.chat","key.command","key.drop","key.forward","key.fullscreen","key.hotbar.1","key.hotbar.2","key.hotbar.3","key.hotbar.4","key.hotbar.5","key.hotbar.6","key.hotbar.7","key.hotbar.8","key.hotbar.9","key.inventory","key.jump","key.left","key.loadToolbarActivator","key.pickItem","key.playerlist","key.right","key.saveToolbarActivator","key.screenshot","key.smoothCamera","key.sneak","key.spectatorOutlines","key.sprint","key.swapOffhand","key.togglePerspective","key.use"]),e.register("slot",["mainhand","offhand","head","chest","legs","feet"]),e.register("gamemode",["survival","creative","adventure","spectator"]),e.register("entity_source",["this","direct_killer","killer","killer_player"]),e.register("copy_source",["block_entity","this","killer","killer_player"]),e.register("loot_table_apply_bonus_formula",["minecraft:uniform_bonus_count","minecraft:binomial_with_bonus_count","minecraft:ore_drops"]),e.register("map_decoration",["mansion","monument","player","frame","red_marker","blue_marker","target_x","target_point","player_off_map","player_off_limits","red_x","banner_white","banner_orange","banner_magenta","banner_light_blue","banner_yellow","banner_lime","banner_pink","banner_gray","banner_light_gray","banner_cyan","banner_purple","banner_blue","banner_brown","banner_green","banner_red","banner_black"]),e.register("recipe_group",["bed","light_gray_dye","iron_ingot","wooden_stairs","black_dye","stained_terracotta","dyed_bed","magenta_dye","bark","rabbit_stew","light_blue_dye","wooden_fence_gate","planks","stained_glass","wooden_door","stained_glass_pane","wooden_fence","sticks","concrete_powder","wooden_pressure_plate","boat","brown_dye","yellow_dye","bonemeal","red_dye","wooden_trapdoor","wooden_button","gold_ingot","pink_dye","wooden_slab","orange_dye","carpet","sign","wool","sugar","blue_dye","white_dye","banner","netherite_ingot"]),e.register("loot_context_type",["minecraft:empty","minecraft:chest","minecraft:command","minecraft:selector","minecraft:fishing","minecraft:entity","minecraft:gift","minecraft:barter","minecraft:advancement_reward","minecraft:advancement_entity","minecraft:generic","minecraft:block"])};var Si={},ji={},Mi={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initCommonSchemas=e.Range=e.ConditionCases=void 0;const t=Ce;e.initCommonSchemas=function(r,n){const o=t.StringNode.bind(void 0,n),i=t.Reference.bind(void 0,r);r.register("block_state",t.Mod(t.ObjectNode({Name:o({validator:"resource",params:{pool:"block"}}),Properties:t.Opt(t.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"Name"}]}}}))},{context:"block_state"}),{default:()=>({Name:"minecraft:stone"})})),r.register("fluid_state",t.Mod(t.ObjectNode({Name:o({validator:"resource",params:{pool:"fluid"}}),Properties:t.Opt(t.MapNode(o(),o()))},{context:"fluid_state"}),{default:()=>({Name:"minecraft:water",Properties:{level:"0"}})})),r.register("block_pos",t.Mod(t.ListNode(t.NumberNode({integer:!0})),{default:()=>[0,0,0]})),e.Range=e=>t.ChoiceNode([...(null==e?void 0:e.forceRange)?[]:[{type:"number",node:t.NumberNode(e),change:e=>{var t,r,n;return void 0===e?0:null!==(n=null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:e.n)&&void 0!==n?n:0}}],{type:"object",priority:-1,node:t.ObjectNode({min:(null==e?void 0:e.bounds)?t.NumberNode(e):t.Opt(t.NumberNode(e)),max:(null==e?void 0:e.bounds)?t.NumberNode(e):t.Opt(t.NumberNode(e))},{context:"range"}),change:e=>({min:"number"==typeof e?e:void 0===e?1:e.n,max:"number"==typeof e?e:void 0===e?1:e.n})},...(null==e?void 0:e.allowBinomial)?[{type:"binomial",node:t.ObjectNode({type:o({enum:["minecraft:binomial"]}),n:t.NumberNode({integer:!0,min:0}),p:t.NumberNode({min:0,max:1})},{context:"range"}),match:e=>void 0!==e&&"minecraft:binomial"===e.type,change:e=>{var t,r;return{type:"minecraft:binomial",n:"number"==typeof e?e:void 0===e?1:null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:1,p:.5}}}]:[]],{choiceContext:"range"}),e.ConditionCases={"minecraft:alternative":{terms:t.ListNode(i("condition"))},"minecraft:block_state_property":{block:o({validator:"resource",params:{pool:"block"}}),properties:t.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})},"minecraft:damage_source_properties":{predicate:i("damage_source_predicate")},"minecraft:entity_properties":{entity:o({enum:"entity_source"}),predicate:i("entity_predicate")},"minecraft:entity_scores":{entity:o({enum:"entity_source"}),scores:t.MapNode(o({validator:"objective"}),e.Range({forceRange:!0,bounds:!0}))},"minecraft:inverted":{term:i("condition")},"minecraft:killed_by_player":{inverse:t.Opt(t.BooleanNode())},"minecraft:location_check":{offsetX:t.Opt(t.NumberNode({integer:!0})),offsetY:t.Opt(t.NumberNode({integer:!0})),offsetZ:t.Opt(t.NumberNode({integer:!0})),predicate:i("location_predicate")},"minecraft:match_tool":{predicate:i("item_predicate")},"minecraft:random_chance":{chance:t.NumberNode({min:0,max:1})},"minecraft:random_chance_with_looting":{chance:t.NumberNode({min:0,max:1}),looting_multiplier:t.NumberNode()},"minecraft:reference":{name:o({validator:"resource",params:{pool:"$predicate"}})},"minecraft:table_bonus":{enchantment:o({validator:"resource",params:{pool:"enchantment"}}),chances:t.ListNode(t.NumberNode({min:0,max:1}))},"minecraft:time_check":{value:e.Range(),period:t.Opt(t.NumberNode())},"minecraft:weather_check":{raining:t.Opt(t.BooleanNode()),thundering:t.Opt(t.BooleanNode())}}}}(Mi);var Ai={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initPredicatesSchemas=e.LocationFields=void 0;const t=Ce,r=Mi;e.initPredicatesSchemas=function(n,o){const i=t.Reference.bind(void 0,n),a=t.StringNode.bind(void 0,o),s=t.ChoiceNode([{type:"string",node:a(),change:e=>"boolean"==typeof e||"number"==typeof e?e.toString():""},{type:"number",node:t.NumberNode(),change:e=>"string"==typeof e?parseInt(e):0},{type:"object",node:t.ObjectNode({min:t.Opt(t.NumberNode({integer:!0})),max:t.Opt(t.NumberNode({integer:!0}))}),change:e=>"number"==typeof e?{min:e,max:e}:{}},{type:"boolean",node:t.BooleanNode(),change:e=>"true"===e||1===e}]);n.register("item_predicate",t.ObjectNode({item:t.Opt(a({validator:"resource",params:{pool:"item"}})),tag:t.Opt(a({validator:"resource",params:{pool:"$tag/item"}})),count:t.Opt(r.Range()),durability:t.Opt(r.Range()),potion:t.Opt(a({validator:"resource",params:{pool:"potion"}})),nbt:t.Opt(a({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}})),enchantments:t.Opt(t.ListNode(i("enchantment_predicate")))},{context:"item"})),n.register("enchantment_predicate",t.ObjectNode({enchantment:t.Opt(a({validator:"resource",params:{pool:"enchantment"}})),levels:t.Opt(r.Range())},{context:"enchantment"})),n.register("block_predicate",t.ObjectNode({block:t.Opt(a({validator:"resource",params:{pool:"block"}})),tag:t.Opt(a({validator:"resource",params:{pool:"$tag/block"}})),nbt:t.Opt(a({validator:"nbt",params:{registry:{category:"minecraft:block",id:["pop",{push:"block"}]}}})),state:t.Opt(t.MapNode(a(),s,{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},{context:"block"})),n.register("fluid_predicate",t.ObjectNode({fluid:t.Opt(a({validator:"resource",params:{pool:"fluid"}})),tag:t.Opt(a({validator:"resource",params:{pool:"$tag/fluid"}})),state:t.Opt(t.MapNode(a(),s))},{context:"fluid"})),e.LocationFields={position:t.Opt(t.ObjectNode({x:t.Opt(r.Range()),y:t.Opt(r.Range()),z:t.Opt(r.Range())})),biome:t.Opt(a({enum:"biome"})),feature:t.Opt(a({enum:"structure_feature"})),dimension:t.Opt(a({enum:"dimension"})),light:t.Opt(t.ObjectNode({light:t.Opt(r.Range({integer:!0,min:0,max:15}))})),block:t.Opt(i("block_predicate")),fluid:t.Opt(i("fluid_predicate"))},n.register("location_predicate",t.ObjectNode(e.LocationFields,{context:"location"})),n.register("statistic_predicate",t.ObjectNode({type:a({validator:"resource",params:{pool:"stat_type"}}),stat:a(),value:r.Range(),[t.Switch]:[{push:"type"}],[t.Case]:{"minecraft:mined":{stat:a({validator:"resource",params:{pool:"block"}})},"minecraft:crafted":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:used":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:broken":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:picked_up":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:dropped":{stat:a({validator:"resource",params:{pool:"item"}})},"minecraft:killed":{stat:a({validator:"resource",params:{pool:"entity_type"}})},"minecraft:killed_by":{stat:a({validator:"resource",params:{pool:"entity_type"}})},"minecraft:custom":{stat:a({validator:"resource",params:{pool:"custom_stat"}})}}})),n.register("player_predicate",t.ObjectNode({gamemode:t.Opt(a({enum:"gamemode"})),level:t.Opt(r.Range()),advancements:t.Opt(t.MapNode(a({validator:"resource",params:{pool:"$advancement"}}),t.ChoiceNode([{type:"boolean",node:t.BooleanNode(),change:e=>!0},{type:"object",node:t.MapNode(a(),t.BooleanNode())}]))),recipes:t.Opt(t.MapNode(a({validator:"resource",params:{pool:"$recipe"}}),t.BooleanNode())),stats:t.Opt(t.ListNode(i("statistic_predicate")))},{context:"player"})),n.register("status_effect_predicate",t.ObjectNode({amplifier:t.Opt(r.Range()),duration:t.Opt(r.Range()),ambient:t.Opt(t.BooleanNode()),visible:t.Opt(t.BooleanNode())},{context:"status_effect"})),n.register("distance_predicate",t.ObjectNode({x:t.Opt(r.Range()),y:t.Opt(r.Range()),z:t.Opt(r.Range()),absolute:t.Opt(r.Range()),horizontal:t.Opt(r.Range())},{context:"distance"})),n.register("entity_predicate",t.ObjectNode({type:t.Opt(a({validator:"resource",params:{pool:"entity_type",allowTag:!0}})),nbt:t.Opt(a({validator:"nbt",params:{registry:{category:"minecraft:entity",id:["pop",{push:"type"}]}}})),team:t.Opt(a({validator:"team"})),location:t.Opt(i("location_predicate")),distance:t.Opt(i("distance_predicate")),flags:t.Opt(t.ObjectNode({is_on_fire:t.Opt(t.BooleanNode()),is_sneaking:t.Opt(t.BooleanNode()),is_sprinting:t.Opt(t.BooleanNode()),is_swimming:t.Opt(t.BooleanNode()),is_baby:t.Opt(t.BooleanNode())})),equipment:t.Opt(t.MapNode(a({enum:"slot"}),i("item_predicate"))),player:t.Opt(i("player_predicate")),effects:t.Opt(t.MapNode(a({validator:"resource",params:{pool:"mob_effect"}}),i("status_effect_predicate")))},{context:"entity"})),n.register("damage_source_predicate",t.ObjectNode({is_explosion:t.Opt(t.BooleanNode()),is_fire:t.Opt(t.BooleanNode()),is_magic:t.Opt(t.BooleanNode()),is_projectile:t.Opt(t.BooleanNode()),is_lightning:t.Opt(t.BooleanNode()),bypasses_armor:t.Opt(t.BooleanNode()),bypasses_invulnerability:t.Opt(t.BooleanNode()),bypasses_magic:t.Opt(t.BooleanNode()),source_entity:t.Opt(i("entity_predicate")),direct_entity:t.Opt(i("entity_predicate"))},{context:"damage_source"})),n.register("damage_predicate",t.ObjectNode({dealt:t.Opt(r.Range()),taken:t.Opt(r.Range()),blocked:t.Opt(t.BooleanNode()),source_entity:t.Opt(i("entity_predicate")),type:t.Opt(i("damage_source_predicate"))},{context:"damage"}))}}(Ai),Object.defineProperty(ji,"__esModule",{value:!0}),ji.initAdvancementSchemas=void 0;const Pi=Ce,Li=Mi,Bi=Ai;ji.initAdvancementSchemas=function(e,t){const r=Pi.Reference.bind(void 0,e),n=Pi.StringNode.bind(void 0,t);e.register("advancement",Pi.Mod(Pi.ObjectNode({display:Pi.Opt(Pi.Mod(Pi.ObjectNode({icon:Pi.ObjectNode({item:n({validator:"resource",params:{pool:"item"}}),nbt:Pi.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}}))}),title:r("text_component"),description:r("text_component"),background:Pi.Opt(n()),frame:Pi.Opt(n({enum:["task","challenge","goal"]})),show_toast:Pi.Opt(Pi.BooleanNode()),announce_to_chat:Pi.Opt(Pi.BooleanNode()),hidden:Pi.Opt(Pi.BooleanNode())}),{default:()=>({icon:{item:"minecraft:stone"},title:"",description:""})})),parent:Pi.Opt(n({validator:"resource",params:{pool:"$advancement"}})),criteria:Pi.MapNode(n(),r("advancement_criteria")),requirements:Pi.Opt(Pi.ListNode(Pi.ListNode(n()))),rewards:Pi.Opt(Pi.ObjectNode({function:Pi.Opt(n({validator:"resource",params:{pool:"$function"}})),loot:Pi.Opt(Pi.ListNode(n({validator:"resource",params:{pool:"$loot_table"}}))),recipes:Pi.Opt(Pi.ListNode(n({validator:"resource",params:{pool:"$recipe"}}))),experience:Pi.Opt(Pi.NumberNode({integer:!0}))}))},{context:"advancement"}),{default:()=>({criteria:{requirement:{trigger:"minecraft:location"}}})})),e.register("advancement_criteria",Pi.ObjectNode({trigger:n({validator:"resource",params:{pool:t.get("advancement_trigger")}}),conditions:Pi.Opt(Pi.ObjectNode({[Pi.Switch]:["pop",{push:"trigger"}],[Pi.Case]:{"minecraft:bee_nest_destroyed":{block:Pi.Opt(n({validator:"resource",params:{pool:"block"}})),num_bees_inside:Pi.Opt(Pi.NumberNode({integer:!0})),item:Pi.Opt(r("item_predicate"))},"minecraft:bred_animals":{parent:Pi.Opt(r("entity_predicate")),partner:Pi.Opt(r("entity_predicate")),child:Pi.Opt(r("entity_predicate"))},"minecraft:brewed_potion":{potion:Pi.Opt(n({validator:"resource",params:{pool:"potion"}}))},"minecraft:changed_dimension":{from:Pi.Opt(n({enum:"dimension"})),to:Pi.Opt(n({enum:"dimension"}))},"minecraft:channeled_lightning":{victims:Pi.Opt(Pi.ListNode(Pi.Opt(r("entity_predicate"))))},"minecraft:construct_beacon":{level:Pi.Opt(Li.Range())},"minecraft:consume_item":{item:Pi.Opt(r("item_predicate"))},"minecraft:cured_zombie_villager":{villager:Pi.Opt(r("entity_predicate")),zombie:Pi.Opt(r("entity_predicate"))},"minecraft:effects_changed":{effects:Pi.Opt(Pi.MapNode(n({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},"minecraft:enter_block":{block:Pi.Opt(n({validator:"resource",params:{pool:"block"}})),state:Pi.Opt(Pi.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},"minecraft:enchanted_item":{levels:Pi.Opt(Li.Range()),item:Pi.Opt(r("item_predicate"))},"minecraft:entity_hurt_player":{damage:Pi.Opt(r("damage_predicate"))},"minecraft:entity_killed_player":{entity:Pi.Opt(r("entity_predicate")),killing_blow:Pi.Opt(r("damage_source_predicate"))},"minecraft:filled_bucket":{item:Pi.Opt(r("item_predicate"))},"minecraft:fishing_rod_hooked":{entity:Pi.Opt(r("entity_predicate")),item:Pi.Opt(r("item_predicate"))},"minecraft:hero_of_the_village":Bi.LocationFields,"minecraft:inventory_changed":{slots:Pi.Opt(Pi.ObjectNode({empty:Pi.Opt(Li.Range()),occupied:Pi.Opt(Li.Range()),full:Pi.Opt(Li.Range())})),items:Pi.Opt(Pi.ListNode(r("item_predicate")))},"minecraft:item_durability_changed":{delta:Pi.Opt(Li.Range()),durability:Pi.Opt(Li.Range()),item:Pi.Opt(r("item_predicate"))},"minecraft:killed_by_crossbow":{unique_entity_types:Pi.Opt(Li.Range()),victims:Pi.Opt(Pi.ListNode(Pi.Opt(r("entity_predicate"))))},"minecraft:levitation":{distance:Pi.Opt(Li.Range()),duration:Pi.Opt(Li.Range())},"minecraft:location":Bi.LocationFields,"minecraft:nether_travel":{distance:Pi.Opt(Li.Range()),entered:Pi.Opt(r("location_predicate")),exited:Pi.Opt(r("location_predicate"))},"minecraft:placed_block":{block:Pi.Opt(n({validator:"resource",params:{pool:"block"}})),state:Pi.Opt(Pi.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})),item:Pi.Opt(r("item_predicate")),location:Pi.Opt(r("location_predicate"))},"minecraft:player_hurt_entity":{damage:Pi.Opt(r("damage_predicate")),entity:Pi.Opt(r("entity_predicate"))},"minecraft:player_killed_entity":{entity:Pi.Opt(r("entity_predicate")),killing_blow:Pi.Opt(r("damage_source_predicate"))},"minecraft:recipe_unlocked":{recipe:n({validator:"resource",params:{pool:"$recipe"}})},"minecraft:safely_harvest_honey":{block:Pi.Opt(Pi.ObjectNode({block:Pi.Opt(n({validator:"resource",params:{pool:"block"}})),tag:Pi.Opt(n({validator:"resource",params:{pool:"$tag/block"}}))})),item:Pi.Opt(r("item_predicate"))},"minecraft:slept_in_bed":Bi.LocationFields,"minecraft:slide_down_block":{block:Pi.Opt(n({validator:"resource",params:{pool:"block"}}))},"minecraft:shot_crossbow":{item:Pi.Opt(r("item_predicate"))},"minecraft:summoned_entity":{entity:Pi.Opt(r("entity_predicate"))},"minecraft:tame_animal":{entity:Pi.Opt(r("entity_predicate"))},"minecraft:used_ender_eye":{distance:Pi.Opt(Li.Range())},"minecraft:used_totem":{item:Pi.Opt(r("item_predicate"))},"minecraft:villager_trade":{villager:Pi.Opt(r("entity_predicate")),item:Pi.Opt(r("item_predicate"))},"minecraft:voluntary_exile":Bi.LocationFields}},{context:"criterion"}))},{category:"predicate",context:"criterion"}))};var Ci={};Object.defineProperty(Ci,"__esModule",{value:!0}),Ci.initConditionSchemas=void 0;const zi=Ce,Ti=Mi;Ci.initConditionSchemas=function(e,t){const r=zi.Reference.bind(void 0,e),n=zi.StringNode.bind(void 0,t);e.register("predicate",zi.ObjectOrList(r("condition"),{choiceContext:"condition"})),e.register("condition",zi.Mod(zi.ObjectNode({condition:n({validator:"resource",params:{pool:"loot_condition_type"}}),[zi.Switch]:[{push:"condition"}],[zi.Case]:Ti.ConditionCases},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:entity_properties",entity:"this"})}))};var Ii={},Ri={};Object.defineProperty(Ri,"__esModule",{value:!0}),Ri.LootFunctions=Ri.LootConditions=Ri.LootCopySources=Ri.LootEntitySources=Ri.LootTableTypes=void 0,Ri.LootTableTypes=new Map([["minecraft:advancement_entity",{requires:[7,8],allows:[]}],["minecraft:advancement_reward",{requires:[7,8],allows:[]}],["minecraft:barter",{requires:[8],allows:[]}],["minecraft:block",{requires:[1,7,9],allows:[0,4,8]}],["minecraft:chest",{requires:[7],allows:[8]}],["minecraft:command",{requires:[7],allows:[8]}],["minecraft:empty",{requires:[],allows:[]}],["minecraft:entity",{requires:[2,7,8],allows:[3,5,6]}],["minecraft:fishing",{requires:[7,9],allows:[8]}],["minecraft:generic",{requires:[2,0,1,3,4,5,6,7,8,9],allows:[]}],["minecraft:gift",{requires:[7,8],allows:[]}],["minecraft:selector",{requires:[7],allows:[8]}]]),Ri.LootEntitySources=new Map([["direct_killer",[3]],["killer",[5]],["killer_player",[5]],["this",[8]]]),Ri.LootCopySources=new Map([["block_entity",[0]],["killer",[5]],["killer_player",[5]],["this",[8]]]),Ri.LootConditions=new Map([["minecraft:alternative",[]],["minecraft:block_state_property",[1]],["minecraft:damage_source_properties",[2]],["minecraft:entity_properties",[7]],["minecraft:entity_scores",[]],["minecraft:inverted",[]],["minecraft:killed_by_player",[6]],["minecraft:location_check",[]],["minecraft:match_tool",[9]],["minecraft:random_chance",[]],["minecraft:random_chance_with_looting",[5]],["minecraft:reference",[]],["minecraft:survives_explosion",[4]],["minecraft:table_bonus",[9]],["minecraft:time_check",[]],["minecraft:weather_check",[]]]),Ri.LootFunctions=new Map([["minecraft:apply_bonus",[9]],["minecraft:copy_name",[]],["minecraft:copy_nbt",[]],["minecraft:copy_state",[1]],["minecraft:enchant_randomly",[]],["minecraft:enchant_with_levels",[]],["minecraft:exploration_map",[7]],["minecraft:explosion_decay",[]],["minecraft:fill_player_head",[]],["minecraft:furnace_smelt",[]],["minecraft:limit_count",[]],["minecraft:looting_enchant",[5]],["minecraft:set_attributes",[]],["minecraft:set_contents",[]],["minecraft:set_count",[]],["minecraft:set_damage",[]],["minecraft:set_loot_table",[]],["minecraft:set_lore",[]],["minecraft:set_name",[]],["minecraft:set_nbt",[]],["minecraft:set_stew_effect",[]]]),Object.defineProperty(Ii,"__esModule",{value:!0}),Ii.initLootTableSchemas=void 0;const Fi=Ce,Ei=Ri,Di=Mi;Ii.initLootTableSchemas=function(e,t){const r=Fi.Reference.bind(void 0,e),n=Fi.StringNode.bind(void 0,t),o={conditions:Fi.Opt(Fi.ListNode(r("loot_condition")))},i=s({functions:Fi.Opt(Fi.ListNode(r("loot_function")))},o);function a(e,r,n){const o=[],i=n=>t.get(r).filter((t=>{var r;return(null!==(r=e.get(t))&&void 0!==r?r:[]).every((e=>n.includes(e)))}));for(const[t,{allows:a,requires:s}]of Ei.LootTableTypes){const e=[...a,...s];o.push({match:e=>e.getModel().get(new Fi.Path(["type"]))===t,node:n(i(e))})}return o.push({match:e=>!0,node:n(r)}),Fi.SwitchNode(o)}const l=a(Ei.LootConditions,"loot_condition_type",(e=>n({validator:"resource",params:{pool:e instanceof Array?e:"loot_condition_type"}}))),d=a(Ei.LootFunctions,"loot_function_type",(e=>n({validator:"resource",params:{pool:e instanceof Array?e:"loot_function_type"}}))),_=a(Ei.LootEntitySources,"entity_source",(e=>n({enum:e}))),m=a(Ei.LootCopySources,"copy_source",(e=>n({enum:e})));e.register("loot_table",Fi.Mod(Fi.ObjectNode({type:Fi.Opt(n({validator:"resource",params:{pool:t.get("loot_context_type")}})),pools:Fi.Opt(Fi.ListNode(Fi.Mod(Fi.ObjectNode(s({rolls:Di.Range({allowBinomial:!0,integer:!0}),bonus_rolls:Fi.Opt(Di.Range({integer:!0})),entries:Fi.ListNode(r("loot_entry"))},i),{category:"pool",context:"loot_pool"}),{default:()=>({rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]})}))),functions:Fi.Opt(Fi.ListNode(r("loot_function")))},{context:"loot_table"}),{default:()=>({pools:[{rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]}]})}));const p={enabled:e=>{var t;return(null===(t=e.pop().get())||void 0===t?void 0:t.length)>1&&!["minecraft:alternatives","minecraft:group","minecraft:sequence"].includes(e.push("type").get())}};e.register("loot_entry",Fi.Mod(Fi.ObjectNode({type:n({validator:"resource",params:{pool:"loot_pool_entry_type"}}),weight:Fi.Opt(Fi.Mod(Fi.NumberNode({integer:!0,min:1}),p)),quality:Fi.Opt(Fi.Mod(Fi.NumberNode({integer:!0}),p)),[Fi.Switch]:[{push:"type"}],[Fi.Case]:{"minecraft:alternatives":s({children:Fi.ListNode(r("loot_entry"))},i),"minecraft:dynamic":s({name:n()},i),"minecraft:group":s({children:Fi.ListNode(r("loot_entry"))},i),"minecraft:item":s({name:n({validator:"resource",params:{pool:"item"}})},i),"minecraft:loot_table":s({name:n({validator:"resource",params:{pool:"$loot_table"}})},i),"minecraft:sequence":s({children:Fi.ListNode(r("loot_entry"))},i),"minecraft:tag":s({name:n({validator:"resource",params:{pool:"$tag/item"}}),expand:Fi.Opt(Fi.BooleanNode())},i)}},{context:"loot_entry"}),{default:()=>({type:"minecraft:item",name:"minecraft:stone"})})),e.register("loot_function",Fi.Mod(Fi.ObjectNode({function:d,[Fi.Switch]:[{push:"function"}],[Fi.Case]:(()=>{const e={"minecraft:apply_bonus":{enchantment:n({validator:"resource",params:{pool:"enchantment"}}),formula:n({validator:"resource",params:{pool:t.get("loot_table_apply_bonus_formula")}}),parameters:Fi.Mod(Fi.ObjectNode({bonusMultiplier:Fi.Mod(Fi.NumberNode(),{enabled:e=>"minecraft:uniform_bonus_count"===e.pop().push("formula").get()}),extra:Fi.Mod(Fi.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()}),probability:Fi.Mod(Fi.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()})}),{enabled:e=>"minecraft:ore_drops"!==e.push("formula").get()})},"minecraft:copy_name":{source:m},"minecraft:copy_nbt":{source:m,ops:Fi.ListNode(Fi.ObjectNode({source:n({validator:"nbt_path",params:{category:{getter:"copy_source",path:["pop","pop","pop",{push:"source"}]}}}),target:n({validator:"nbt_path",params:{category:"minecraft:item"}}),op:n({enum:["replace","append","merge"]})},{context:"nbt_operation"}))},"minecraft:copy_state":{block:n({validator:"resource",params:{pool:"block"}}),properties:Fi.ListNode(n({validator:"block_state_key",params:{id:["pop","pop",{push:"block"}]}}))},"minecraft:enchant_randomly":{enchantments:Fi.Opt(Fi.ListNode(n({validator:"resource",params:{pool:"enchantment"}})))},"minecraft:enchant_with_levels":{levels:Di.Range({allowBinomial:!0}),treasure:Fi.Opt(Fi.BooleanNode())},"minecraft:exploration_map":{destination:Fi.Opt(n({enum:"structure_feature"})),decoration:Fi.Opt(n({enum:"map_decoration"})),zoom:Fi.Opt(Fi.NumberNode({integer:!0})),search_radius:Fi.Opt(Fi.NumberNode({integer:!0})),skip_existing_chunks:Fi.Opt(Fi.BooleanNode())},"minecraft:fill_player_head":{entity:_},"minecraft:limit_count":{limit:Di.Range({bounds:!0})},"minecraft:looting_enchant":{count:Di.Range({bounds:!0}),limit:Fi.Opt(Fi.NumberNode({integer:!0}))},"minecraft:set_attributes":{modifiers:Fi.ListNode(r("attribute_modifier"))},"minecraft:set_contents":{entries:Fi.ListNode(r("loot_entry"))},"minecraft:set_count":{count:Di.Range({allowBinomial:!0})},"minecraft:set_damage":{damage:Di.Range({forceRange:!0})},"minecraft:set_loot_table":{name:n({validator:"resource",params:{pool:"$loot_table"}}),seed:Fi.Opt(Fi.NumberNode({integer:!0}))},"minecraft:set_lore":{entity:Fi.Opt(_),lore:Fi.ListNode(r("text_component")),replace:Fi.Opt(Fi.BooleanNode())},"minecraft:set_name":{entity:Fi.Opt(_),name:Fi.Opt(r("text_component"))},"minecraft:set_nbt":{tag:n({validator:"nbt",params:{registry:{category:"minecraft:item"}}})},"minecraft:set_stew_effect":{effects:Fi.Opt(Fi.ListNode(Fi.ObjectNode({type:n({validator:"resource",params:{pool:"mob_effect"}}),duration:Di.Range()})))}},i={};return t.get("loot_function_type").forEach((t=>{i[t]=s(s({},e[t]),o)})),i})()},{category:"function",context:"function"}),{default:()=>({function:"minecraft:set_count",count:1})})),e.register("loot_condition",Fi.Mod(Fi.ObjectNode({condition:l,[Fi.Switch]:[{push:"condition"}],[Fi.Case]:c(s({},Di.ConditionCases),{"minecraft:entity_properties":{entity:_,predicate:r("entity_predicate")},"minecraft:entity_scores":{entity:_,scores:Fi.MapNode(n({validator:"objective"}),Di.Range({bounds:!0}))}})},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:random_chance",chance:.5})})),e.register("attribute_modifier",Fi.Mod(Fi.ObjectNode({attribute:n({validator:"resource",params:{pool:"attribute"}}),name:n(),amount:Di.Range({bounds:!0}),operation:n({enum:["addition","multiply_base","multiply_total"]}),slot:Fi.StringOrList(n({enum:"slot"}))},{context:"attribute_modifier"}),{default:()=>({attribute:"minecraft:generic.max_health",name:"",amount:1,operation:"addition",slot:"mainhand"})}))};var $i={};Object.defineProperty($i,"__esModule",{value:!0}),$i.initPackMcmetaSchemas=void 0;const qi=Ce;$i.initPackMcmetaSchemas=function(e,t){e.register("pack_mcmeta",qi.Mod(qi.ObjectNode({pack:qi.Mod(qi.ObjectNode({pack_format:qi.Mod(qi.NumberNode({integer:!0,min:5,max:5}),{default:()=>5}),description:qi.Reference(e,"text_component")}),{default:()=>({pack_format:5,description:""})})}),{default:()=>({pack:{pack_format:5,description:""}})}))};var Ui={};Object.defineProperty(Ui,"__esModule",{value:!0}),Ui.initRecipeSchemas=void 0;const Zi=Ce;Ui.initRecipeSchemas=function(e,t){const r=Zi.Reference.bind(void 0,e),n=Zi.StringNode.bind(void 0,t);e.register("recipe",Zi.Mod(Zi.ObjectNode({type:n({validator:"resource",params:{pool:"recipe_serializer"}}),[Zi.Switch]:[{push:"type"}],[Zi.Case]:{"minecraft:crafting_shaped":{group:Zi.Opt(n({enum:"recipe_group",additional:!0})),pattern:Zi.ListNode(n()),key:Zi.MapNode(n(),r("recipe_ingredient")),result:r("recipe_result")},"minecraft:crafting_shapeless":{group:Zi.Opt(n()),ingredients:Zi.ListNode(r("recipe_ingredient")),result:r("recipe_result")},"minecraft:smelting":{group:Zi.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:Zi.Opt(Zi.NumberNode()),cookingtime:Zi.Opt(Zi.Mod(Zi.NumberNode({integer:!0}),{default:()=>200}))},"minecraft:blasting":{group:Zi.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:Zi.Opt(Zi.NumberNode()),cookingtime:Zi.Opt(Zi.Mod(Zi.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:smoking":{group:Zi.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:Zi.Opt(Zi.NumberNode()),cookingtime:Zi.Opt(Zi.Mod(Zi.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:campfire_cooking":{group:Zi.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:Zi.Opt(Zi.NumberNode()),cookingtime:Zi.Opt(Zi.Mod(Zi.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:stonecutting":{group:Zi.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),count:Zi.NumberNode({integer:!0})},"minecraft:smithing":{group:Zi.Opt(n()),base:r("recipe_ingredient_object"),addition:r("recipe_ingredient_object"),result:r("recipe_result")}}},{context:"recipe",disableSwitchContext:!0}),{default:()=>({type:"minecraft:crafting_shaped"})})),e.register("recipe_ingredient",Zi.Mod(Zi.ChoiceNode([{type:"object",node:r("recipe_ingredient_object"),change:e=>e[0]},{type:"list",node:Zi.ListNode(r("recipe_ingredient_object")),change:e=>[e]}]),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_ingredient_object",Zi.Mod(Zi.ObjectNode({item:Zi.Opt(n({validator:"resource",params:{pool:"item"}})),tag:Zi.Opt(n({validator:"resource",params:{pool:"$tag/item"}}))}),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_result",Zi.Mod(Zi.ObjectNode({item:n({validator:"resource",params:{pool:"item"}}),count:Zi.Opt(Zi.Mod(Zi.NumberNode({integer:!0}),{default:()=>1}))}),{default:()=>({item:"minecraft:stone"})}))};var Hi={};Object.defineProperty(Hi,"__esModule",{value:!0}),Hi.initTagsSchemas=void 0;const Wi=Ce;Hi.initTagsSchemas=function(e,t){const r=Wi.StringNode.bind(void 0,t),n=e=>Wi.Mod(Wi.ObjectNode({replace:Wi.Opt(Wi.BooleanNode()),values:Wi.ListNode(Wi.ChoiceNode([{type:"string",node:r({validator:"resource",params:{pool:e,allowTag:!0}}),change:e=>e.id},{type:"object",node:Wi.ObjectNode({id:r({validator:"resource",params:{pool:e,allowTag:!0,allowUnknown:!0}}),required:Wi.BooleanNode()}),change:e=>({id:e})}]))},{context:"tag"}),{default:()=>({values:[]})});e.register("block_tag",n("block")),e.register("entity_type_tag",n("entity_type")),e.register("fluid_tag",n("fluid")),e.register("function_tag",n("$function")),e.register("item_tag",n("item"))};var Xi={};Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.initTextComponentSchemas=void 0;const Gi=Ce;Xi.initTextComponentSchemas=function(e,t){const r=Gi.Reference.bind(void 0,e),n=Gi.StringNode.bind(void 0,t),o=e=>{var t;return e instanceof Array?o(e[0]):null!==(t=null==e?void 0:e.text)&&void 0!==t?t:"object"==typeof e?"":null==e?void 0:e.toString()};e.register("text_component",Gi.Mod(Gi.ChoiceNode([{type:"object",node:r("text_component_object"),change:e=>e instanceof Array?"object"==typeof e[0]?e[0]:{text:o(e[0])}:"object"==typeof e?e:{text:o(e)}},{type:"list",node:r("text_component_list"),change:e=>[e]},{type:"string",priority:1,node:n(),change:o},{type:"number",node:Gi.NumberNode(),change:e=>{const t=parseFloat(o(e));return isFinite(t)?t:e?1:0}},{type:"boolean",node:Gi.BooleanNode(),change:e=>{const t=o(e);return"true"===t||"false"===t?"true"===t:!!t}}],{context:"text_component"}),{default:()=>({text:""})}));const i={bold:Gi.Opt(Gi.BooleanNode()),italic:Gi.Opt(Gi.BooleanNode()),underlined:Gi.Opt(Gi.BooleanNode()),strikethrough:Gi.Opt(Gi.BooleanNode()),obfuscated:Gi.Opt(Gi.BooleanNode()),insertion:Gi.Opt(n()),clickEvent:Gi.Opt(Gi.ObjectNode({action:n({enum:["open_url","open_file","run_command","suggest_command","change_page","copy_to_clipboard"]}),[Gi.Switch]:[{push:"action"}],[Gi.Case]:{change_page:{value:n()},copy_to_clipboard:{value:n()},open_file:{value:n()},open_url:{value:n()},run_command:{value:n({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})},suggest_command:{value:n({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})}}})),hoverEvent:Gi.Opt(Gi.ObjectNode({action:n({enum:["show_text","show_item","show_entity"]}),[Gi.Switch]:[{push:"action"}],[Gi.Case]:{show_text:{value:Gi.Opt(r("text_component"))},show_item:{value:Gi.Opt(n({validator:"nbt",params:{module:"util::InventoryItem"}}))},show_entity:{value:Gi.Opt(Gi.ObjectNode({name:Gi.Opt(n()),type:Gi.Opt(n()),id:Gi.Opt(n())}))}}})),extra:Gi.Opt(r("text_component_list"))};e.register("text_component_object",Gi.Mod(Gi.ChoiceNode([{type:"text",match:e=>"object"==typeof e,change:e=>({text:""}),priority:-1,node:Gi.ObjectNode(s({text:n()},i))},{type:"translation",match:e=>void 0!==(null==e?void 0:e.translate),change:e=>({translate:""}),node:Gi.ObjectNode(s({translate:n(),with:Gi.Opt(r("text_component_list"))},i))},{type:"score",match:e=>void 0!==(null==e?void 0:e.score),change:e=>({score:{}}),node:Gi.ObjectNode(s({score:Gi.ObjectNode({name:n({validator:"entity",params:{amount:"single",type:"entities",isScoreHolder:!0}}),objective:n({validator:"objective"}),value:Gi.Opt(n())})},i))},{type:"selector",match:e=>void 0!==(null==e?void 0:e.selector),change:e=>({selector:""}),node:Gi.ObjectNode(s({selector:n({validator:"entity",params:{amount:"multiple",type:"entities"}})},i))},{type:"keybind",match:e=>void 0!==(null==e?void 0:e.keybind),change:e=>({keybind:""}),node:Gi.ObjectNode(s({keybind:n({enum:"keybind",additional:!0})},i))},{type:"nbt",match:e=>void 0!==(null==e?void 0:e.nbt),change:e=>({nbt:""}),node:Gi.ObjectNode(s({nbt:n({validator:"nbt_path"}),block:Gi.Opt(n({validator:"vector",params:{dimension:3,isInteger:!0}})),entity:Gi.Opt(n({validator:"entity",params:{amount:"multiple",type:"entities"}})),storage:Gi.Opt(n({validator:"resource",params:{pool:"$storage"}})),interpret:Gi.Opt(Gi.BooleanNode())},i))}],{context:"text_component_object",choiceContext:"text_component.object"}),{default:()=>({text:""})})),e.register("text_component_list",Gi.Mod(Gi.ListNode(r("text_component")),{default:()=>[{text:""}]}))},Object.defineProperty(Si,"__esModule",{value:!0}),Si.initSchemas=void 0;const Vi=ji,Ji=Mi,Yi=Ci,Ki=Ii,Qi=$i,ea=Ai,ta=Ui,ra=Hi,na=Xi;Si.initSchemas=function(e,t){Ji.initCommonSchemas(e,t),ea.initPredicatesSchemas(e,t),Vi.initAdvancementSchemas(e,t),Yi.initConditionSchemas(e,t),Ki.initLootTableSchemas(e,t),Qi.initPackMcmetaSchemas(e,t),ta.initRecipeSchemas(e,t),ra.initTagsSchemas(e,t),na.initTextComponentSchemas(e,t)};var oa=Be&&Be.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ia=Be&&Be.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),aa=Be&&Be.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&oa(t,e,r);return ia(t,e),t};Object.defineProperty(Oi,"__esModule",{value:!0});var sa=Oi.getSchemas=Oi.getCollections=void 0;const ca=Ce,la=xi,da=Si;var _a=Oi.lootContext=aa(Ri);var ma=Oi.getCollections=function(){const e=new ca.CollectionRegistry;return la.initCollections(e),e};sa=Oi.getSchemas=function(e){const t=new ca.SchemaRegistry;return da.initSchemas(t,e),t};var pa=Object.freeze(Object.assign(Object.create(null),Oi,{[Symbol.toStringTag]:"Module",get getSchemas(){return sa},get getCollections(){return ma},lootContext:_a,default:Oi})),ua={},fa={};Object.defineProperty(fa,"__esModule",{value:!0}),fa.initCollections=void 0,fa.initCollections=function(e){e.register("advancement_trigger",["minecraft:bee_nest_destroyed","minecraft:bred_animals","minecraft:brewed_potion","minecraft:changed_dimension","minecraft:channeled_lightning","minecraft:construct_beacon","minecraft:consume_item","minecraft:cured_zombie_villager","minecraft:effects_changed","minecraft:enchanted_item","minecraft:enter_block","minecraft:entity_hurt_player","minecraft:entity_killed_player","minecraft:filled_bucket","minecraft:fishing_rod_hooked","minecraft:hero_of_the_village","minecraft:impossible","minecraft:inventory_changed","minecraft:item_durability_changed","minecraft:item_used_on_block","minecraft:killed_by_crossbow","minecraft:levitation","minecraft:location","minecraft:nether_travel","minecraft:placed_block","minecraft:player_generates_container_loot","minecraft:player_hurt_entity","minecraft:player_interacted_with_entity","minecraft:player_killed_entity","minecraft:recipe_unlocked","minecraft:shot_crossbow","minecraft:slept_in_bed","minecraft:slide_down_block","minecraft:summoned_entity","minecraft:tame_animal","minecraft:target_hit","minecraft:tick","minecraft:thrown_item_picked_up_by_entity","minecraft:used_ender_eye","minecraft:used_totem","minecraft:villager_trade","minecraft:voluntary_exile"]),e.register("dimension",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("dimension_type",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("keybind",["key.advancements","key.attack","key.back","key.chat","key.command","key.drop","key.forward","key.fullscreen","key.hotbar.1","key.hotbar.2","key.hotbar.3","key.hotbar.4","key.hotbar.5","key.hotbar.6","key.hotbar.7","key.hotbar.8","key.hotbar.9","key.inventory","key.jump","key.left","key.loadToolbarActivator","key.pickItem","key.playerlist","key.right","key.saveToolbarActivator","key.screenshot","key.smoothCamera","key.sneak","key.spectatorOutlines","key.sprint","key.swapOffhand","key.togglePerspective","key.use"]),e.register("slot",["mainhand","offhand","head","chest","legs","feet"]),e.register("gamemode",["survival","creative","adventure","spectator"]),e.register("worldgen/noise_settings",["minecraft:overworld","minecraft:nether","minecraft:end","minecraft:amplified","minecraft:caves","minecraft:floating_islands"]),e.register("entity_source",["this","direct_killer","killer","killer_player"]),e.register("copy_source",["block_entity","this","killer","killer_player"]),e.register("loot_table_apply_bonus_formula",["minecraft:uniform_bonus_count","minecraft:binomial_with_bonus_count","minecraft:ore_drops"]),e.register("map_decoration",["mansion","monument","player","frame","red_marker","blue_marker","target_x","target_point","player_off_map","player_off_limits","red_x","banner_white","banner_orange","banner_magenta","banner_light_blue","banner_yellow","banner_lime","banner_pink","banner_gray","banner_light_gray","banner_cyan","banner_purple","banner_blue","banner_brown","banner_green","banner_red","banner_black"]),e.register("map_feature",["bastion_remnant","buried_treasure","desert_pyramid","endcity","fortress","igloo","jungle_pyramid","mansion","mineshaft","monument","nether_fossil","ocean_ruin","pillager_outpost","ruined_portal","shipwreck","stronghold","swamp_hut","village"]),e.register("recipe_group",["bed","light_gray_dye","iron_ingot","wooden_stairs","black_dye","stained_terracotta","dyed_bed","magenta_dye","bark","rabbit_stew","light_blue_dye","wooden_fence_gate","planks","stained_glass","wooden_door","stained_glass_pane","wooden_fence","sticks","concrete_powder","wooden_pressure_plate","boat","brown_dye","yellow_dye","bonemeal","red_dye","wooden_trapdoor","wooden_button","gold_ingot","pink_dye","wooden_slab","orange_dye","carpet","sign","wool","sugar","blue_dye","white_dye","banner","netherite_ingot"]),e.register("worldgen/configured_feature",["minecraft:acacia","minecraft:bamboo_light","minecraft:bamboo_vegetation","minecraft:bamboo","minecraft:basalt_blobs","minecraft:basalt_pillar","minecraft:birch_bees_0002","minecraft:birch_bees_002","minecraft:birch_bees_005","minecraft:birch_other","minecraft:birch_tall","minecraft:birch","minecraft:blackstone_blobs","minecraft:blue_ice","minecraft:bonus_chest","minecraft:brown_mushroom_giant","minecraft:brown_mushroom_nether","minecraft:brown_mushroom_normal","minecraft:brown_mushroom_swamp","minecraft:brown_mushroom_taiga","minecraft:chorus_plant","minecraft:crimson_forest_vegetation","minecraft:crimson_fungi_planted","minecraft:crimson_fungi","minecraft:dark_forest_vegetation_brown","minecraft:dark_forest_vegetation_red","minecraft:dark_oak","minecraft:delta","minecraft:desert_well","minecraft:disk_clay","minecraft:disk_gravel","minecraft:disk_sand","minecraft:end_gateway_delayed","minecraft:end_gateway","minecraft:end_island_decorated","minecraft:end_island","minecraft:end_spike","minecraft:fancy_oak_bees_0002","minecraft:fancy_oak_bees_002","minecraft:fancy_oak_bees_005","minecraft:fancy_oak","minecraft:flower_default","minecraft:flower_forest","minecraft:flower_plain_decorated","minecraft:flower_plain","minecraft:flower_swamp","minecraft:flower_warm","minecraft:forest_flower_trees","minecraft:forest_flower_vegetation_common","minecraft:forest_flower_vegetation","minecraft:forest_rock","minecraft:fossil","minecraft:freeze_top_layer","minecraft:glowstone_extra","minecraft:glowstone","minecraft:huge_brown_mushroom","minecraft:huge_red_mushroom","minecraft:ice_patch","minecraft:ice_spike","minecraft:iceberg_blue","minecraft:iceberg_packed","minecraft:jungle_bush","minecraft:jungle_tree_no_vine","minecraft:jungle_tree","minecraft:kelp_cold","minecraft:kelp_warm","minecraft:lake_lava","minecraft:lake_water","minecraft:large_basalt_columns","minecraft:mega_jungle_tree","minecraft:mega_pine","minecraft:mega_spruce","minecraft:monster_room","minecraft:mushroom_field_vegetation","minecraft:nether_sprouts","minecraft:oak_badlands","minecraft:oak_bees_0002","minecraft:oak_bees_002","minecraft:oak_bees_005","minecraft:oak","minecraft:ore_andesite","minecraft:ore_blackstone","minecraft:ore_coal","minecraft:ore_debris_large","minecraft:ore_debris_small","minecraft:ore_diamond","minecraft:ore_diorite","minecraft:ore_dirt","minecraft:ore_emerald","minecraft:ore_gold_deltas","minecraft:ore_gold_extra","minecraft:ore_gold_nether","minecraft:ore_gold","minecraft:ore_granite","minecraft:ore_gravel_nether","minecraft:ore_gravel","minecraft:ore_infested","minecraft:ore_iron","minecraft:ore_lapis","minecraft:ore_magma","minecraft:ore_quartz_deltas","minecraft:ore_quartz_nether","minecraft:ore_redstone","minecraft:ore_soul_sand","minecraft:patch_berry_bush","minecraft:patch_berry_decorated","minecraft:patch_berry_sparse","minecraft:patch_brown_mushroom","minecraft:patch_cactus_decorated","minecraft:patch_cactus_desert","minecraft:patch_cactus","minecraft:patch_crimson_roots","minecraft:patch_dead_bush_2","minecraft:patch_dead_bush_badlands","minecraft:patch_dead_bush","minecraft:patch_fire","minecraft:patch_grass_badlands","minecraft:patch_grass_forest","minecraft:patch_grass_jungle","minecraft:patch_grass_normal","minecraft:patch_grass_plain","minecraft:patch_grass_savanna","minecraft:patch_grass_taiga_2","minecraft:patch_grass_taiga","minecraft:patch_large_fern","minecraft:patch_melon","minecraft:patch_pumpkin","minecraft:patch_red_mushroom","minecraft:patch_soul_fire","minecraft:patch_sugar_cane_badlands","minecraft:patch_sugar_cane_desert","minecraft:patch_sugar_cane_swamp","minecraft:patch_sugar_cane","minecraft:patch_sunflower","minecraft:patch_taiga_grass","minecraft:patch_tall_grass_2","minecraft:patch_tall_grass","minecraft:patch_waterlilly","minecraft:pile_hay","minecraft:pile_ice","minecraft:pile_melon","minecraft:pile_pumpkin","minecraft:pile_snow","minecraft:pine","minecraft:plain_vegetation","minecraft:red_mushroom_giant","minecraft:red_mushroom_nether","minecraft:red_mushroom_normal","minecraft:red_mushroom_swamp","minecraft:red_mushroom_taiga","minecraft:sea_pickle","minecraft:seagrass_cold","minecraft:seagrass_deep_cold","minecraft:seagrass_deep_warm","minecraft:seagrass_deep","minecraft:seagrass_normal","minecraft:seagrass_river","minecraft:seagrass_simple","minecraft:seagrass_swamp","minecraft:seagrass_warm","minecraft:small_basalt_columns","minecraft:spring_closed_double","minecraft:spring_closed","minecraft:spring_delta","minecraft:spring_lava_double","minecraft:spring_lava","minecraft:spring_open","minecraft:spring_water","minecraft:spruce_snowy","minecraft:spruce","minecraft:super_birch_bees_0002","minecraft:swamp_tree","minecraft:taiga_vegetation","minecraft:trees_birch","minecraft:trees_giant_spruce","minecraft:trees_giant","minecraft:trees_jungle_edge","minecraft:trees_jungle","minecraft:trees_mountain_edge","minecraft:trees_mountain","minecraft:trees_savanna","minecraft:trees_shattered_savanna","minecraft:trees_water","minecraft:twisting_vines","minecraft:vines","minecraft:void_start_platform","minecraft:warm_ocean_vegetation","minecraft:warped_forest_vegetation","minecraft:warped_fungi_planted","minecraft:warped_fungi","minecraft:weeping_vines"]),e.register("worldgen/configured_structure_feature",["minecraft:bastion_remnant","minecraft:buried_treasure","minecraft:desert_pyramid","minecraft:end_city","minecraft:fortress","minecraft:igloo","minecraft:jungle_pyramid","minecraft:mansion","minecraft:mineshaft_mesa","minecraft:mineshaft","minecraft:monument","minecraft:nether_fossil","minecraft:ocean_ruin_cold","minecraft:ocean_ruin_warm","minecraft:pillager_outpost","minecraft:ruined_portal_desert","minecraft:ruined_portal_jungle","minecraft:ruined_portal_mountain","minecraft:ruined_portal_nether","minecraft:ruined_portal_ocean","minecraft:ruined_portal_swamp","minecraft:ruined_portal","minecraft:shipwreck_beached","minecraft:shipwreck","minecraft:stronghold","minecraft:swamp_hut","minecraft:village_desert","minecraft:village_plains","minecraft:village_savanna","minecraft:village_snowy","minecraft:village_taiga"]),e.register("worldgen/configured_surface_builder",["minecraft:badlands","minecraft:basalt_deltas","minecraft:crimson_forest","minecraft:desert","minecraft:end","minecraft:eroded_badlands","minecraft:frozen_ocean","minecraft:full_sand","minecraft:giant_tree_taiga","minecraft:grass","minecraft:gravelly_mountain","minecraft:ice_spikes","minecraft:mountain","minecraft:mycelium","minecraft:nether","minecraft:nope","minecraft:ocean_sand","minecraft:shattered_savanna","minecraft:soul_sand_valley","minecraft:stone","minecraft:swamp","minecraft:warped_forest","minecraft:wooded_badlands"]),e.register("biome_category",["beach","desert","extreme_hills","forest","icy","jungle","mesa","mushroom","nether","none","ocean","plains","river","savanna","swamp","taiga","the_end"]),e.register("heightmap_type",["MOTION_BLOCKING","MOTION_BLOCKING_NO_LEAVES","OCEAN_FLOOR","OCEAN_FLOOR_WG","WORLD_SURFACE","WORLD_SURFACE_WG"]),e.register("generation_step",["air","liquid"]),e.register("loot_context_type",["minecraft:empty","minecraft:chest","minecraft:command","minecraft:selector","minecraft:fishing","minecraft:entity","minecraft:gift","minecraft:barter","minecraft:advancement_reward","minecraft:advancement_entity","minecraft:generic","minecraft:block"])};var ha={},ga={},ba={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initCommonSchemas=e.UniformInt=e.Range=e.NoiseSettingsPresets=e.DefaultNoiseSettings=e.DimensionTypePresets=e.DefaultDimensionType=e.ConditionCases=void 0;const t=Ce;e.DefaultDimensionType={ultrawarm:!1,natural:!0,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!0,has_raids:!0,has_skylight:!0,has_ceiling:!1,coordinate_scale:1,ambient_light:0,logical_height:256,infiniburn:"minecraft:infiniburn_overworld"},e.DefaultNoiseSettings={name:"minecraft:overworld",bedrock_roof_position:-10,bedrock_floor_position:0,sea_level:63,disable_mob_generation:!1,noise:{density_factor:1,density_offset:-.46875,simplex_surface_noise:!0,random_density_offset:!0,size_horizontal:1,size_vertical:2,height:256,sampling:{xz_scale:1,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-10,size:3,offset:0},bottom_slide:{target:-30,size:0,offset:0}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},e.initCommonSchemas=function(r,n){const o=t.StringNode.bind(void 0,n),i=t.Reference.bind(void 0,r);r.register("block_state",t.Mod(t.ObjectNode({Name:o({validator:"resource",params:{pool:"block"}}),Properties:t.Opt(t.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"Name"}]}}}))},{context:"block_state"}),{default:()=>({Name:"minecraft:stone"})})),r.register("fluid_state",t.Mod(t.ObjectNode({Name:o({validator:"resource",params:{pool:"fluid"}}),Properties:t.Opt(t.MapNode(o(),o()))},{context:"fluid_state"}),{default:()=>({Name:"minecraft:water",Properties:{level:"0"}})})),r.register("block_pos",t.Mod(t.ListNode(t.NumberNode({integer:!0}),{minLength:3,maxLength:3}),{default:()=>[0,0,0]})),e.Range=e=>t.ChoiceNode([...(null==e?void 0:e.forceRange)?[]:[{type:"number",node:t.NumberNode(e),change:e=>{var t,r,n;return void 0===e?0:null!==(n=null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:e.n)&&void 0!==n?n:0}}],{type:"object",priority:-1,node:t.ObjectNode({min:(null==e?void 0:e.bounds)?t.NumberNode(e):t.Opt(t.NumberNode(e)),max:(null==e?void 0:e.bounds)?t.NumberNode(e):t.Opt(t.NumberNode(e))},{context:"range"}),change:e=>({min:"number"==typeof e?e:void 0===e?1:e.n,max:"number"==typeof e?e:void 0===e?1:e.n})},...(null==e?void 0:e.allowBinomial)?[{type:"binomial",node:t.ObjectNode({type:o({enum:["minecraft:binomial"]}),n:t.NumberNode({integer:!0,min:0}),p:t.NumberNode({min:0,max:1})},{context:"range"}),match:e=>void 0!==e&&"minecraft:binomial"===e.type,change:e=>{var t,r;return{type:"minecraft:binomial",n:"number"==typeof e?e:void 0===e?1:null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:1,p:.5}}}]:[]],{choiceContext:"range"}),e.UniformInt=e=>t.ChoiceNode([{type:"number",node:t.NumberNode({integer:!0,min:null==e?void 0:e.min,max:null==e?void 0:e.max}),change:e=>e.base},{type:"object",node:t.ObjectNode({base:t.NumberNode({integer:!0,min:null==e?void 0:e.min,max:null==e?void 0:e.max}),spread:t.NumberNode({integer:!0,min:0,max:null==e?void 0:e.maxSpread})}),change:e=>({base:e,spread:0})}],{context:"uniform_int"}),e.ConditionCases={"minecraft:alternative":{terms:t.ListNode(i("condition"))},"minecraft:block_state_property":{block:o({validator:"resource",params:{pool:"block"}}),properties:t.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})},"minecraft:damage_source_properties":{predicate:i("damage_source_predicate")},"minecraft:entity_properties":{entity:o({enum:"entity_source"}),predicate:i("entity_predicate")},"minecraft:entity_scores":{entity:o({enum:"entity_source"}),scores:t.MapNode(o({validator:"objective"}),e.Range({forceRange:!0}))},"minecraft:inverted":{term:i("condition")},"minecraft:killed_by_player":{inverse:t.Opt(t.BooleanNode())},"minecraft:location_check":{offsetX:t.Opt(t.NumberNode({integer:!0})),offsetY:t.Opt(t.NumberNode({integer:!0})),offsetZ:t.Opt(t.NumberNode({integer:!0})),predicate:i("location_predicate")},"minecraft:match_tool":{predicate:i("item_predicate")},"minecraft:random_chance":{chance:t.NumberNode({min:0,max:1})},"minecraft:random_chance_with_looting":{chance:t.NumberNode({min:0,max:1}),looting_multiplier:t.NumberNode()},"minecraft:reference":{name:o({validator:"resource",params:{pool:"$predicate"}})},"minecraft:table_bonus":{enchantment:o({validator:"resource",params:{pool:"enchantment"}}),chances:t.ListNode(t.NumberNode({min:0,max:1}))},"minecraft:time_check":{value:e.Range(),period:t.Opt(t.NumberNode())},"minecraft:weather_check":{raining:t.Opt(t.BooleanNode()),thundering:t.Opt(t.BooleanNode())}},e.DimensionTypePresets=r=>t.ObjectOrPreset(o({validator:"resource",params:{pool:"$dimension_type"}}),r,{"minecraft:overworld":e.DefaultDimensionType,"minecraft:the_nether":{name:"minecraft:the_nether",ultrawarm:!0,natural:!1,shrunk:!0,piglin_safe:!0,respawn_anchor_works:!0,bed_works:!1,has_raids:!1,has_skylight:!1,has_ceiling:!0,ambient_light:.1,fixed_time:18e3,logical_height:128,effects:"minecraft:the_nether",infiniburn:"minecraft:infiniburn_nether"},"minecraft:the_end":{name:"minecraft:the_end",ultrawarm:!1,natural:!1,shrunk:!1,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!1,has_raids:!0,has_skylight:!1,has_ceiling:!1,ambient_light:0,fixed_time:6e3,logical_height:256,effects:"minecraft:the_end",infiniburn:"minecraft:infiniburn_end"}}),e.NoiseSettingsPresets=r=>t.ObjectOrPreset(o({validator:"resource",params:{pool:"$worldgen/noise_settings"}}),r,{"minecraft:overworld":e.DefaultNoiseSettings,"minecraft:nether":{name:"minecraft:nether",bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,disable_mob_generation:!0,noise:{density_factor:0,density_offset:.019921875,simplex_surface_noise:!1,random_density_offset:!1,size_horizontal:1,size_vertical:2,height:128,sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60},top_slide:{target:120,size:3,offset:0},bottom_slide:{target:320,size:4,offset:-1}},default_block:{Name:"minecraft:netherrack"},default_fluid:{Name:"minecraft:lava",Properties:{level:"0"}}},"minecraft:end":{name:"minecraft:end",bedrock_roof_position:-10,bedrock_floor_position:-10,sea_level:0,disable_mob_generation:!0,noise:{density_factor:0,density_offset:0,simplex_surface_noise:!0,random_density_offset:!1,island_noise_override:!0,size_horizontal:2,size_vertical:1,height:128,sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-3e3,size:64,offset:-46},bottom_slide:{target:-30,size:7,offset:1}},default_block:{Name:"minecraft:end_stone"},default_fluid:{Name:"minecraft:air"}},"minecraft:amplified":{name:"minecraft:amplified",bedrock_roof_position:-10,bedrock_floor_position:0,sea_level:63,disable_mob_generation:!1,noise:{density_factor:1,density_offset:-.46875,simplex_surface_noise:!0,random_density_offset:!0,amplified:!0,size_horizontal:1,size_vertical:2,height:256,sampling:{xz_scale:1,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-10,size:3,offset:0},bottom_slide:{target:-30,size:0,offset:0}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},"minecraft:caves":{name:"minecraft:caves",bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,disable_mob_generation:!0,noise:{density_factor:0,density_offset:.019921875,simplex_surface_noise:!1,random_density_offset:!1,size_horizontal:1,size_vertical:2,height:128,sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60},top_slide:{target:120,size:3,offset:0},bottom_slide:{target:320,size:4,offset:-1}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},"minecraft:floating_islands":{name:"minecraft:floating_islands",bedrock_roof_position:-10,bedrock_floor_position:-10,sea_level:0,disable_mob_generation:!0,noise:{density_factor:0,density_offset:0,simplex_surface_noise:!0,random_density_offset:!1,island_noise_override:!0,size_horizontal:2,size_vertical:1,height:128,sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-3e3,size:64,offset:-46},bottom_slide:{target:-30,size:7,offset:1}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}}})}}(ba),Object.defineProperty(ga,"__esModule",{value:!0}),ga.initAdvancementSchemas=void 0;const va=Ce,ya=ba;ga.initAdvancementSchemas=function(e,t){const r=va.Reference.bind(void 0,e),n=va.StringNode.bind(void 0,t),o=va.ChoiceNode([{type:"object",node:va.Opt(r("entity_predicate")),change:e=>{var t,r;return null!==(r=null===(t=e[0])||void 0===t?void 0:t.predicate)&&void 0!==r?r:{}}},{type:"list",node:va.ListNode(r("condition")),change:e=>[{condition:"minecraft:entity_properties",predicate:e}]}],{context:"conditions"});e.register("advancement",va.Mod(va.ObjectNode({display:va.Opt(va.Mod(va.ObjectNode({icon:va.ObjectNode({item:n({validator:"resource",params:{pool:"item"}}),nbt:va.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}}))}),title:r("text_component"),description:r("text_component"),background:va.Opt(n()),frame:va.Opt(n({enum:["task","challenge","goal"]})),show_toast:va.Opt(va.BooleanNode()),announce_to_chat:va.Opt(va.BooleanNode()),hidden:va.Opt(va.BooleanNode())}),{default:()=>({icon:{item:"minecraft:stone"},title:"",description:""})})),parent:va.Opt(n({validator:"resource",params:{pool:"$advancement"}})),criteria:va.MapNode(n(),r("advancement_criteria")),requirements:va.Opt(va.ListNode(va.ListNode(n()))),rewards:va.Opt(va.ObjectNode({function:va.Opt(n({validator:"resource",params:{pool:"$function"}})),loot:va.Opt(va.ListNode(n({validator:"resource",params:{pool:"$loot_table"}}))),recipes:va.Opt(va.ListNode(n({validator:"resource",params:{pool:"$recipe"}}))),experience:va.Opt(va.NumberNode({integer:!0}))}))},{context:"advancement"}),{default:()=>({criteria:{requirement:{trigger:"minecraft:location"}}})})),e.register("advancement_criteria",va.ObjectNode({trigger:n({validator:"resource",params:{pool:t.get("advancement_trigger")}}),conditions:va.Opt(va.ObjectNode({player:va.Mod(o,{enabled:e=>"minecraft:impossible"!==e.pop().push("trigger").get()}),[va.Switch]:["pop",{push:"trigger"}],[va.Case]:{"minecraft:bee_nest_destroyed":{block:va.Opt(n({validator:"resource",params:{pool:"block"}})),num_bees_inside:va.Opt(va.NumberNode({integer:!0})),item:va.Opt(r("item_predicate"))},"minecraft:bred_animals":{parent:o,partner:o,child:o},"minecraft:brewed_potion":{potion:va.Opt(n({validator:"resource",params:{pool:"potion"}}))},"minecraft:changed_dimension":{from:va.Opt(n({validator:"resource",params:{pool:"$dimension"}})),to:va.Opt(n({validator:"resource",params:{pool:"$dimension"}}))},"minecraft:channeled_lightning":{victims:va.Opt(va.ListNode(o))},"minecraft:construct_beacon":{level:va.Opt(ya.Range())},"minecraft:consume_item":{item:va.Opt(r("item_predicate"))},"minecraft:cured_zombie_villager":{villager:o,zombie:o},"minecraft:effects_changed":{effects:va.Opt(va.MapNode(n({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},"minecraft:enter_block":{block:va.Opt(n({validator:"resource",params:{pool:"block"}})),state:va.Opt(va.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},"minecraft:enchanted_item":{levels:va.Opt(ya.Range()),item:va.Opt(r("item_predicate"))},"minecraft:entity_hurt_player":{damage:va.Opt(r("damage_predicate"))},"minecraft:entity_killed_player":{entity:o,killing_blow:va.Opt(r("damage_source_predicate"))},"minecraft:filled_bucket":{item:va.Opt(r("item_predicate"))},"minecraft:fishing_rod_hooked":{entity:o,item:va.Opt(r("item_predicate"))},"minecraft:hero_of_the_village":{location:va.Opt(r("location_predicate"))},"minecraft:inventory_changed":{slots:va.Opt(va.ObjectNode({empty:va.Opt(ya.Range()),occupied:va.Opt(ya.Range()),full:va.Opt(ya.Range())})),items:va.Opt(va.ListNode(r("item_predicate")))},"minecraft:item_durability_changed":{delta:va.Opt(ya.Range()),durability:va.Opt(ya.Range()),item:va.Opt(r("item_predicate"))},"minecraft:item_used_on_block":{item:va.Opt(r("item_predicate")),location:va.Opt(r("location_predicate"))},"minecraft:killed_by_crossbow":{unique_entity_types:va.Opt(ya.Range()),victims:va.Opt(va.ListNode(o))},"minecraft:levitation":{distance:va.Opt(ya.Range()),duration:va.Opt(ya.Range())},"minecraft:location":{location:va.Opt(r("location_predicate"))},"minecraft:nether_travel":{distance:va.Opt(ya.Range()),entered:va.Opt(r("location_predicate")),exited:va.Opt(r("location_predicate"))},"minecraft:placed_block":{block:va.Opt(n({validator:"resource",params:{pool:"block"}})),state:va.Opt(va.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})),item:va.Opt(r("item_predicate")),location:va.Opt(r("location_predicate"))},"minecraft:player_generates_container_loot":{loot_table:n({validator:"resource",params:{pool:"$loot_table"}})},"minecraft:player_hurt_entity":{damage:va.Opt(r("damage_predicate")),entity:o},"minecraft:player_interacted_with_entity":{item:va.Opt(r("item_predicate")),entity:o},"minecraft:player_killed_entity":{entity:o,killing_blow:va.Opt(r("damage_source_predicate"))},"minecraft:recipe_unlocked":{recipe:n({validator:"resource",params:{pool:"$recipe"}})},"minecraft:slept_in_bed":{location:va.Opt(r("location_predicate"))},"minecraft:slide_down_block":{block:va.Opt(n({validator:"resource",params:{pool:"block"}}))},"minecraft:shot_crossbow":{item:va.Opt(r("item_predicate"))},"minecraft:summoned_entity":{entity:o},"minecraft:tame_animal":{entity:o},"minecraft:target_hit":{projectile:o,shooter:o,signal_strength:va.Opt(ya.Range({integer:!0}))},"minecraft:thrown_item_picked_up_by_entity":{entity:va.Opt(r("entity_predicate")),item:va.Opt(r("item_predicate"))},"minecraft:used_ender_eye":{distance:va.Opt(ya.Range())},"minecraft:used_totem":{item:va.Opt(r("item_predicate"))},"minecraft:villager_trade":{villager:va.Opt(r("entity_predicate")),item:va.Opt(r("item_predicate"))},"minecraft:voluntary_exile":{location:r("location_predicate")}}},{context:"criterion"}))},{category:"predicate",context:"criterion"}))};var Na={};Object.defineProperty(Na,"__esModule",{value:!0}),Na.initConditionSchemas=void 0;const ka=Ce,wa=ba;Na.initConditionSchemas=function(e,t){const r=ka.Reference.bind(void 0,e),n=ka.StringNode.bind(void 0,t);e.register("predicate",ka.ObjectOrList(r("condition"),{choiceContext:"condition"})),e.register("condition",ka.Mod(ka.ObjectNode({condition:n({validator:"resource",params:{pool:"loot_condition_type"}}),[ka.Switch]:[{push:"condition"}],[ka.Case]:wa.ConditionCases},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:entity_properties",entity:"this"})}))};var Oa={};Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.initDimensionSchemas=void 0;const xa=Ce,Sa=ba;Oa.initDimensionSchemas=function(e,t){const r=xa.Reference.bind(void 0,e),n=xa.StringNode.bind(void 0,t),o=e=>xa.Mod(e,{enabled:e=>void 0===e.push("preset").get()});e.register("dimension",xa.Mod(xa.ObjectNode({type:Sa.DimensionTypePresets(r("dimension_type")),generator:xa.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/chunk_generator"}}),[xa.Switch]:[{push:"type"}],[xa.Case]:{"minecraft:noise":{seed:xa.NumberNode({integer:!0}),settings:Sa.NoiseSettingsPresets(r("noise_settings")),biome_source:xa.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/biome_source"}}),[xa.Switch]:[{push:"type"}],[xa.Case]:{"minecraft:fixed":{biome:n({validator:"resource",params:{pool:"$worldgen/biome"}})},"minecraft:multi_noise":{seed:xa.NumberNode({integer:!0}),preset:xa.Opt(n({enum:["nether"]})),altitude_noise:o(r("generator_biome_noise")),temperature_noise:o(r("generator_biome_noise")),humidity_noise:o(r("generator_biome_noise")),weirdness_noise:o(r("generator_biome_noise")),biomes:o(xa.Mod(xa.ListNode(r("generator_biome")),{default:()=>[{biome:"minecraft:plains"}]}))},"minecraft:checkerboard":{scale:xa.Opt(xa.NumberNode({integer:!0,min:0,max:62})),biomes:xa.ListNode(n({validator:"resource",params:{pool:"$worldgen/biome"}}))},"minecraft:the_end":{seed:xa.NumberNode({integer:!0})},"minecraft:vanilla_layered":{seed:xa.NumberNode({integer:!0}),large_biomes:xa.Opt(xa.BooleanNode()),legacy_biome_init_layer:xa.Opt(xa.BooleanNode())}}},{category:"predicate",disableSwitchContext:!0})},"minecraft:flat":{settings:xa.ObjectNode({biome:xa.Opt(n({validator:"resource",params:{pool:"$worldgen/biome"}})),lakes:xa.Opt(xa.BooleanNode()),features:xa.Opt(xa.BooleanNode()),layers:xa.ListNode(r("generator_layer")),structures:r("generator_structures")})}}},{disableSwitchContext:!0})},{category:"pool",context:"dimension"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:fixed",seed:e,biome:"minecraft:plains"},settings:"minecraft:overworld"}}}})),e.register("generator_biome",xa.Mod(xa.ObjectNode({biome:n({validator:"resource",params:{pool:"$worldgen/biome"}}),parameters:xa.ObjectNode({altitude:xa.NumberNode(),temperature:xa.NumberNode(),humidity:xa.NumberNode(),weirdness:xa.NumberNode(),offset:xa.NumberNode()})},{context:"generator_biome"}),{default:()=>({biome:"minecraft:plains",parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}})})),e.register("generator_biome_noise",xa.Mod(xa.ObjectNode({firstOctave:xa.NumberNode({integer:!0}),amplitudes:xa.ListNode(xa.NumberNode())},{context:"generator_biome_noise"}),{default:()=>({firstOctave:-7,amplitudes:[1,1]})}))};var ja={};Object.defineProperty(ja,"__esModule",{value:!0}),ja.initDimensionTypeSchemas=void 0;const Ma=Ce,Aa=ba;ja.initDimensionTypeSchemas=function(e,t){const r=Ma.StringNode.bind(void 0,t);e.register("dimension_type",Ma.Mod(Ma.ObjectNode({name:Ma.Mod(r({validator:"resource",params:{pool:"$dimension_type",isDefinition:!0}}),{enabled:e=>e.getArray().length>0}),ultrawarm:Ma.BooleanNode(),natural:Ma.BooleanNode(),piglin_safe:Ma.BooleanNode(),respawn_anchor_works:Ma.BooleanNode(),bed_works:Ma.BooleanNode(),has_raids:Ma.BooleanNode(),has_skylight:Ma.BooleanNode(),has_ceiling:Ma.BooleanNode(),coordinate_scale:Ma.NumberNode({min:1e-5,max:3e7}),ambient_light:Ma.NumberNode(),fixed_time:Ma.Opt(Ma.NumberNode({integer:!0})),logical_height:Ma.NumberNode({integer:!0,min:0,max:256}),effects:Ma.Opt(r({enum:["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]})),infiniburn:r({validator:"resource",params:{pool:"$tag/block"}})},{context:"dimension_type"}),{default:()=>Aa.DefaultDimensionType}))};var Pa={},La={};Object.defineProperty(La,"__esModule",{value:!0}),La.LootFunctions=La.LootConditions=La.LootCopySources=La.LootEntitySources=La.LootTableTypes=void 0,La.LootTableTypes=new Map([["minecraft:advancement_entity",{requires:[7,8],allows:[]}],["minecraft:advancement_reward",{requires:[7,8],allows:[]}],["minecraft:barter",{requires:[8],allows:[]}],["minecraft:block",{requires:[1,7,9],allows:[0,4,8]}],["minecraft:chest",{requires:[7],allows:[8]}],["minecraft:command",{requires:[7],allows:[8]}],["minecraft:empty",{requires:[],allows:[]}],["minecraft:entity",{requires:[2,7,8],allows:[3,5,6]}],["minecraft:fishing",{requires:[7,9],allows:[8]}],["minecraft:generic",{requires:[2,0,1,3,4,5,6,7,8,9],allows:[]}],["minecraft:gift",{requires:[7,8],allows:[]}],["minecraft:selector",{requires:[7],allows:[8]}]]),La.LootEntitySources=new Map([["direct_killer",[3]],["killer",[5]],["killer_player",[5]],["this",[8]]]),La.LootCopySources=new Map([["block_entity",[0]],["killer",[5]],["killer_player",[5]],["this",[8]]]),La.LootConditions=new Map([["minecraft:alternative",[]],["minecraft:block_state_property",[1]],["minecraft:damage_source_properties",[2]],["minecraft:entity_properties",[7]],["minecraft:entity_scores",[]],["minecraft:inverted",[]],["minecraft:killed_by_player",[6]],["minecraft:location_check",[]],["minecraft:match_tool",[9]],["minecraft:random_chance",[]],["minecraft:random_chance_with_looting",[5]],["minecraft:reference",[]],["minecraft:survives_explosion",[4]],["minecraft:table_bonus",[9]],["minecraft:time_check",[]],["minecraft:weather_check",[]]]),La.LootFunctions=new Map([["minecraft:apply_bonus",[9]],["minecraft:copy_name",[]],["minecraft:copy_nbt",[]],["minecraft:copy_state",[1]],["minecraft:enchant_randomly",[]],["minecraft:enchant_with_levels",[]],["minecraft:exploration_map",[7]],["minecraft:explosion_decay",[]],["minecraft:fill_player_head",[]],["minecraft:furnace_smelt",[]],["minecraft:limit_count",[]],["minecraft:looting_enchant",[5]],["minecraft:set_attributes",[]],["minecraft:set_contents",[]],["minecraft:set_count",[]],["minecraft:set_damage",[]],["minecraft:set_loot_table",[]],["minecraft:set_lore",[]],["minecraft:set_name",[]],["minecraft:set_nbt",[]],["minecraft:set_stew_effect",[]]]),Object.defineProperty(Pa,"__esModule",{value:!0}),Pa.initLootTableSchemas=void 0;const Ba=Ce,Ca=La,za=ba;Pa.initLootTableSchemas=function(e,t){const r=Ba.Reference.bind(void 0,e),n=Ba.StringNode.bind(void 0,t),o={conditions:Ba.Opt(Ba.ListNode(r("loot_condition")))},i=s({functions:Ba.Opt(Ba.ListNode(r("loot_function")))},o);function a(e,r,n){const o=[],i=n=>t.get(r).filter((t=>{var r;return(null!==(r=e.get(t))&&void 0!==r?r:[]).every((e=>n.includes(e)))}));for(const[t,{allows:a,requires:s}]of Ca.LootTableTypes){const e=[...a,...s];o.push({match:e=>e.getModel().get(new Ba.Path(["type"]))===t,node:n(i(e))})}return o.push({match:e=>!0,node:n(r)}),Ba.SwitchNode(o)}const l=a(Ca.LootConditions,"loot_condition_type",(e=>n({validator:"resource",params:{pool:e instanceof Array?e:"loot_condition_type"}}))),d=a(Ca.LootFunctions,"loot_function_type",(e=>n({validator:"resource",params:{pool:e instanceof Array?e:"loot_function_type"}}))),_=a(Ca.LootEntitySources,"entity_source",(e=>n({enum:e}))),m=a(Ca.LootCopySources,"copy_source",(e=>n({enum:e})));e.register("loot_table",Ba.Mod(Ba.ObjectNode({type:Ba.Opt(n({validator:"resource",params:{pool:t.get("loot_context_type")}})),pools:Ba.Opt(Ba.ListNode(Ba.Mod(Ba.ObjectNode(s({rolls:za.Range({allowBinomial:!0,integer:!0}),bonus_rolls:Ba.Opt(za.Range({integer:!0})),entries:Ba.ListNode(r("loot_entry"))},i),{category:"pool",context:"loot_pool"}),{default:()=>({rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]})}))),functions:Ba.Opt(Ba.ListNode(r("loot_function")))},{context:"loot_table"}),{default:()=>({pools:[{rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]}]})}));const p={enabled:e=>{var t;return(null===(t=e.pop().get())||void 0===t?void 0:t.length)>1&&!["minecraft:alternatives","minecraft:group","minecraft:sequence"].includes(e.push("type").get())}};e.register("loot_entry",Ba.Mod(Ba.ObjectNode({type:n({validator:"resource",params:{pool:"loot_pool_entry_type"}}),weight:Ba.Opt(Ba.Mod(Ba.NumberNode({integer:!0,min:1}),p)),quality:Ba.Opt(Ba.Mod(Ba.NumberNode({integer:!0}),p)),[Ba.Switch]:[{push:"type"}],[Ba.Case]:{"minecraft:alternatives":s({children:Ba.ListNode(r("loot_entry"))},i),"minecraft:dynamic":s({name:n()},i),"minecraft:group":s({children:Ba.ListNode(r("loot_entry"))},i),"minecraft:item":s({name:n({validator:"resource",params:{pool:"item"}})},i),"minecraft:loot_table":s({name:n({validator:"resource",params:{pool:"$loot_table"}})},i),"minecraft:sequence":s({children:Ba.ListNode(r("loot_entry"))},i),"minecraft:tag":s({name:n({validator:"resource",params:{pool:"$tag/item"}}),expand:Ba.Opt(Ba.BooleanNode())},i)}},{context:"loot_entry"}),{default:()=>({type:"minecraft:item",name:"minecraft:stone"})})),e.register("loot_function",Ba.Mod(Ba.ObjectNode({function:d,[Ba.Switch]:[{push:"function"}],[Ba.Case]:(()=>{const e={"minecraft:apply_bonus":{enchantment:n({validator:"resource",params:{pool:"enchantment"}}),formula:n({validator:"resource",params:{pool:t.get("loot_table_apply_bonus_formula")}}),parameters:Ba.Mod(Ba.ObjectNode({bonusMultiplier:Ba.Mod(Ba.NumberNode(),{enabled:e=>"minecraft:uniform_bonus_count"===e.pop().push("formula").get()}),extra:Ba.Mod(Ba.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()}),probability:Ba.Mod(Ba.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()})}),{enabled:e=>"minecraft:ore_drops"!==e.push("formula").get()})},"minecraft:copy_name":{source:m},"minecraft:copy_nbt":{source:m,ops:Ba.ListNode(Ba.ObjectNode({source:n({validator:"nbt_path",params:{category:{getter:"copy_source",path:["pop","pop","pop",{push:"source"}]}}}),target:n({validator:"nbt_path",params:{category:"minecraft:item"}}),op:n({enum:["replace","append","merge"]})},{context:"nbt_operation"}))},"minecraft:copy_state":{block:n({validator:"resource",params:{pool:"block"}}),properties:Ba.ListNode(n({validator:"block_state_key",params:{id:["pop","pop",{push:"block"}]}}))},"minecraft:enchant_randomly":{enchantments:Ba.Opt(Ba.ListNode(n({validator:"resource",params:{pool:"enchantment"}})))},"minecraft:enchant_with_levels":{levels:za.Range({allowBinomial:!0}),treasure:Ba.Opt(Ba.BooleanNode())},"minecraft:exploration_map":{destination:Ba.Opt(n({enum:"map_feature"})),decoration:Ba.Opt(n({enum:"map_decoration"})),zoom:Ba.Opt(Ba.NumberNode({integer:!0})),search_radius:Ba.Opt(Ba.NumberNode({integer:!0})),skip_existing_chunks:Ba.Opt(Ba.BooleanNode())},"minecraft:fill_player_head":{entity:_},"minecraft:limit_count":{limit:za.Range({bounds:!0})},"minecraft:looting_enchant":{count:za.Range({bounds:!0}),limit:Ba.Opt(Ba.NumberNode({integer:!0}))},"minecraft:set_attributes":{modifiers:Ba.ListNode(r("attribute_modifier"))},"minecraft:set_contents":{entries:Ba.ListNode(r("loot_entry"))},"minecraft:set_count":{count:za.Range({allowBinomial:!0})},"minecraft:set_damage":{damage:za.Range({forceRange:!0})},"minecraft:set_loot_table":{name:n({validator:"resource",params:{pool:"$loot_table"}}),seed:Ba.Opt(Ba.NumberNode({integer:!0}))},"minecraft:set_lore":{entity:Ba.Opt(_),lore:Ba.ListNode(r("text_component")),replace:Ba.Opt(Ba.BooleanNode())},"minecraft:set_name":{entity:Ba.Opt(_),name:Ba.Opt(r("text_component"))},"minecraft:set_nbt":{tag:n({validator:"nbt",params:{registry:{category:"minecraft:item"}}})},"minecraft:set_stew_effect":{effects:Ba.Opt(Ba.ListNode(Ba.ObjectNode({type:n({validator:"resource",params:{pool:"mob_effect"}}),duration:za.Range()})))}},i={};return t.get("loot_function_type").forEach((t=>{i[t]=s(s({},e[t]),o)})),i})()},{category:"function",context:"function"}),{default:()=>({function:"minecraft:set_count",count:1})})),e.register("loot_condition",Ba.Mod(Ba.ObjectNode({condition:l,[Ba.Switch]:[{push:"condition"}],[Ba.Case]:c(s({},za.ConditionCases),{"minecraft:entity_properties":{entity:_,predicate:r("entity_predicate")},"minecraft:entity_scores":{entity:_,scores:Ba.MapNode(n({validator:"objective"}),za.Range({bounds:!0}))}})},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:random_chance",chance:.5})})),e.register("attribute_modifier",Ba.Mod(Ba.ObjectNode({attribute:n({validator:"resource",params:{pool:"attribute"}}),name:n(),amount:za.Range({bounds:!0}),operation:n({enum:["addition","multiply_base","multiply_total"]}),slot:Ba.StringOrList(n({enum:"slot"}))},{context:"attribute_modifier"}),{default:()=>({attribute:"minecraft:generic.max_health",name:"",amount:1,operation:"addition",slot:"mainhand"})}))};var Ta={};Object.defineProperty(Ta,"__esModule",{value:!0}),Ta.initPackMcmetaSchemas=void 0;const Ia=Ce;Ta.initPackMcmetaSchemas=function(e,t){e.register("pack_mcmeta",Ia.Mod(Ia.ObjectNode({pack:Ia.Mod(Ia.ObjectNode({pack_format:Ia.Mod(Ia.NumberNode({integer:!0,min:6,max:6}),{default:()=>6}),description:Ia.Reference(e,"text_component")}),{default:()=>({pack_format:6,description:""})})}),{default:()=>({pack:{pack_format:6,description:""}})}))};var Ra={};Object.defineProperty(Ra,"__esModule",{value:!0}),Ra.initPredicatesSchemas=void 0;const Fa=Ce,Ea=ba;Ra.initPredicatesSchemas=function(e,t){const r=Fa.Reference.bind(void 0,e),n=Fa.StringNode.bind(void 0,t),o=Fa.ChoiceNode([{type:"string",node:n(),change:e=>"boolean"==typeof e||"number"==typeof e?e.toString():""},{type:"number",node:Fa.NumberNode(),change:e=>"string"==typeof e?parseInt(e):0},{type:"object",node:Fa.ObjectNode({min:Fa.Opt(Fa.NumberNode({integer:!0})),max:Fa.Opt(Fa.NumberNode({integer:!0}))}),change:e=>"number"==typeof e?{min:e,max:e}:{}},{type:"boolean",node:Fa.BooleanNode(),change:e=>"true"===e||1===e}]);e.register("item_predicate",Fa.ObjectNode({item:Fa.Opt(n({validator:"resource",params:{pool:"item"}})),tag:Fa.Opt(n({validator:"resource",params:{pool:"$tag/item"}})),count:Fa.Opt(Ea.Range()),durability:Fa.Opt(Ea.Range()),potion:Fa.Opt(n({validator:"resource",params:{pool:"potion"}})),nbt:Fa.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}})),enchantments:Fa.Opt(Fa.ListNode(r("enchantment_predicate")))},{context:"item"})),e.register("enchantment_predicate",Fa.ObjectNode({enchantment:Fa.Opt(n({validator:"resource",params:{pool:"enchantment"}})),levels:Fa.Opt(Ea.Range())},{context:"enchantment"})),e.register("block_predicate",Fa.ObjectNode({block:Fa.Opt(n({validator:"resource",params:{pool:"block"}})),tag:Fa.Opt(n({validator:"resource",params:{pool:"$tag/block"}})),nbt:Fa.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:block",id:["pop",{push:"block"}]}}})),state:Fa.Opt(Fa.MapNode(n(),o,{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},{context:"block"})),e.register("fluid_predicate",Fa.ObjectNode({fluid:Fa.Opt(n({validator:"resource",params:{pool:"fluid"}})),tag:Fa.Opt(n({validator:"resource",params:{pool:"$tag/fluid"}})),state:Fa.Opt(Fa.MapNode(n(),o))},{context:"fluid"})),e.register("location_predicate",Fa.ObjectNode({position:Fa.Opt(Fa.ObjectNode({x:Fa.Opt(Ea.Range()),y:Fa.Opt(Ea.Range()),z:Fa.Opt(Ea.Range())})),biome:Fa.Opt(n({validator:"resource",params:{pool:"$worldgen/biome"}})),feature:Fa.Opt(n({enum:t.get("worldgen/structure_feature").map((e=>e.slice(10)))})),dimension:Fa.Opt(n({validator:"resource",params:{pool:"$dimension"}})),light:Fa.Opt(Fa.ObjectNode({light:Fa.Opt(Ea.Range({integer:!0,min:0,max:15}))})),smokey:Fa.Opt(Fa.BooleanNode()),block:Fa.Opt(r("block_predicate")),fluid:Fa.Opt(r("fluid_predicate"))},{context:"location"})),e.register("statistic_predicate",Fa.ObjectNode({type:n({validator:"resource",params:{pool:"stat_type"}}),stat:n(),value:Ea.Range(),[Fa.Switch]:[{push:"type"}],[Fa.Case]:{"minecraft:mined":{stat:n({validator:"resource",params:{pool:"block"}})},"minecraft:crafted":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:used":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:broken":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:picked_up":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:dropped":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:killed":{stat:n({validator:"resource",params:{pool:"entity_type"}})},"minecraft:killed_by":{stat:n({validator:"resource",params:{pool:"entity_type"}})},"minecraft:custom":{stat:n({validator:"resource",params:{pool:"custom_stat"}})}}})),e.register("player_predicate",Fa.ObjectNode({gamemode:Fa.Opt(n({enum:"gamemode"})),level:Fa.Opt(Ea.Range()),advancements:Fa.Opt(Fa.MapNode(n({validator:"resource",params:{pool:"$advancement"}}),Fa.ChoiceNode([{type:"boolean",node:Fa.BooleanNode(),change:e=>!0},{type:"object",node:Fa.MapNode(n(),Fa.BooleanNode())}]))),recipes:Fa.Opt(Fa.MapNode(n({validator:"resource",params:{pool:"$recipe"}}),Fa.BooleanNode())),stats:Fa.Opt(Fa.ListNode(r("statistic_predicate")))},{context:"player"})),e.register("status_effect_predicate",Fa.ObjectNode({amplifier:Fa.Opt(Ea.Range()),duration:Fa.Opt(Ea.Range()),ambient:Fa.Opt(Fa.BooleanNode()),visible:Fa.Opt(Fa.BooleanNode())},{context:"status_effect"})),e.register("distance_predicate",Fa.ObjectNode({x:Fa.Opt(Ea.Range()),y:Fa.Opt(Ea.Range()),z:Fa.Opt(Ea.Range()),absolute:Fa.Opt(Ea.Range()),horizontal:Fa.Opt(Ea.Range())},{context:"distance"})),e.register("entity_predicate",Fa.ObjectNode({type:Fa.Opt(n({validator:"resource",params:{pool:"entity_type",allowTag:!0}})),nbt:Fa.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:entity",id:["pop",{push:"type"}]}}})),team:Fa.Opt(n({validator:"team"})),location:Fa.Opt(r("location_predicate")),distance:Fa.Opt(r("distance_predicate")),flags:Fa.Opt(Fa.ObjectNode({is_on_fire:Fa.Opt(Fa.BooleanNode()),is_sneaking:Fa.Opt(Fa.BooleanNode()),is_sprinting:Fa.Opt(Fa.BooleanNode()),is_swimming:Fa.Opt(Fa.BooleanNode()),is_baby:Fa.Opt(Fa.BooleanNode())})),equipment:Fa.Opt(Fa.MapNode(n({enum:"slot"}),r("item_predicate"))),vehicle:Fa.Opt(r("entity_predicate")),targeted_entity:Fa.Opt(r("entity_predicate")),player:Fa.Opt(r("player_predicate")),fishing_hook:Fa.Opt(Fa.ObjectNode({in_open_water:Fa.Opt(Fa.BooleanNode())})),effects:Fa.Opt(Fa.MapNode(n({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},{context:"entity"})),e.register("damage_source_predicate",Fa.ObjectNode({is_explosion:Fa.Opt(Fa.BooleanNode()),is_fire:Fa.Opt(Fa.BooleanNode()),is_magic:Fa.Opt(Fa.BooleanNode()),is_projectile:Fa.Opt(Fa.BooleanNode()),is_lightning:Fa.Opt(Fa.BooleanNode()),bypasses_armor:Fa.Opt(Fa.BooleanNode()),bypasses_invulnerability:Fa.Opt(Fa.BooleanNode()),bypasses_magic:Fa.Opt(Fa.BooleanNode()),source_entity:Fa.Opt(r("entity_predicate")),direct_entity:Fa.Opt(r("entity_predicate"))},{context:"damage_source"})),e.register("damage_predicate",Fa.ObjectNode({dealt:Fa.Opt(Ea.Range()),taken:Fa.Opt(Ea.Range()),blocked:Fa.Opt(Fa.BooleanNode()),source_entity:Fa.Opt(r("entity_predicate")),type:Fa.Opt(r("damage_source_predicate"))},{context:"damage"}))};var Da={};Object.defineProperty(Da,"__esModule",{value:!0}),Da.initRecipeSchemas=void 0;const $a=Ce;Da.initRecipeSchemas=function(e,t){const r=$a.Reference.bind(void 0,e),n=$a.StringNode.bind(void 0,t);e.register("recipe",$a.Mod($a.ObjectNode({type:n({validator:"resource",params:{pool:"recipe_serializer"}}),[$a.Switch]:[{push:"type"}],[$a.Case]:{"minecraft:crafting_shaped":{group:$a.Opt(n({enum:"recipe_group",additional:!0})),pattern:$a.ListNode(n()),key:$a.MapNode(n(),r("recipe_ingredient")),result:r("recipe_result")},"minecraft:crafting_shapeless":{group:$a.Opt(n()),ingredients:$a.ListNode(r("recipe_ingredient")),result:r("recipe_result")},"minecraft:smelting":{group:$a.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:$a.Opt($a.NumberNode()),cookingtime:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>200}))},"minecraft:blasting":{group:$a.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:$a.Opt($a.NumberNode()),cookingtime:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:smoking":{group:$a.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:$a.Opt($a.NumberNode()),cookingtime:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:campfire_cooking":{group:$a.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:$a.Opt($a.NumberNode()),cookingtime:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:stonecutting":{group:$a.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),count:$a.NumberNode({integer:!0})},"minecraft:smithing":{group:$a.Opt(n()),base:r("recipe_ingredient_object"),addition:r("recipe_ingredient_object"),result:r("recipe_result")}}},{context:"recipe",disableSwitchContext:!0}),{default:()=>({type:"minecraft:crafting_shaped"})})),e.register("recipe_ingredient",$a.Mod($a.ChoiceNode([{type:"object",node:r("recipe_ingredient_object"),change:e=>e[0]},{type:"list",node:$a.ListNode(r("recipe_ingredient_object")),change:e=>[e]}]),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_ingredient_object",$a.Mod($a.ObjectNode({item:$a.Opt(n({validator:"resource",params:{pool:"item"}})),tag:$a.Opt(n({validator:"resource",params:{pool:"$tag/item"}}))}),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_result",$a.Mod($a.ObjectNode({item:n({validator:"resource",params:{pool:"item"}}),count:$a.Opt($a.Mod($a.NumberNode({integer:!0}),{default:()=>1}))}),{default:()=>({item:"minecraft:stone"})}))};var qa={};Object.defineProperty(qa,"__esModule",{value:!0}),qa.initTagsSchemas=void 0;const Ua=Ce;qa.initTagsSchemas=function(e,t){const r=Ua.StringNode.bind(void 0,t),n=e=>Ua.Mod(Ua.ObjectNode({replace:Ua.Opt(Ua.BooleanNode()),values:Ua.ListNode(Ua.ChoiceNode([{type:"string",node:r({validator:"resource",params:{pool:e,allowTag:!0}}),change:e=>e.id},{type:"object",node:Ua.ObjectNode({id:r({validator:"resource",params:{pool:e,allowTag:!0,allowUnknown:!0}}),required:Ua.BooleanNode()}),change:e=>({id:e})}]))},{context:"tag"}),{default:()=>({values:[]})});e.register("block_tag",n("block")),e.register("entity_type_tag",n("entity_type")),e.register("fluid_tag",n("fluid")),e.register("function_tag",n("$function")),e.register("item_tag",n("item"))};var Za={};Object.defineProperty(Za,"__esModule",{value:!0}),Za.initTextComponentSchemas=void 0;const Ha=Ce;Za.initTextComponentSchemas=function(e,t){const r=Ha.Reference.bind(void 0,e),n=Ha.StringNode.bind(void 0,t),o=e=>{var t;return e instanceof Array?o(e[0]):null!==(t=null==e?void 0:e.text)&&void 0!==t?t:"object"==typeof e?"":null==e?void 0:e.toString()};e.register("text_component",Ha.Mod(Ha.ChoiceNode([{type:"object",node:r("text_component_object"),change:e=>e instanceof Array?"object"==typeof e[0]?e[0]:{text:o(e[0])}:"object"==typeof e?e:{text:o(e)}},{type:"list",node:r("text_component_list"),change:e=>[e]},{type:"string",priority:1,node:n(),change:o},{type:"number",node:Ha.NumberNode(),change:e=>{const t=parseFloat(o(e));return isFinite(t)?t:e?1:0}},{type:"boolean",node:Ha.BooleanNode(),change:e=>{const t=o(e);return"true"===t||"false"===t?"true"===t:!!t}}],{context:"text_component"}),{default:()=>({text:""})}));const i={color:Ha.Opt(n()),font:Ha.Opt(n()),bold:Ha.Opt(Ha.BooleanNode()),italic:Ha.Opt(Ha.BooleanNode()),underlined:Ha.Opt(Ha.BooleanNode()),strikethrough:Ha.Opt(Ha.BooleanNode()),obfuscated:Ha.Opt(Ha.BooleanNode()),insertion:Ha.Opt(n()),clickEvent:Ha.Opt(Ha.ObjectNode({action:n({enum:["open_url","open_file","run_command","suggest_command","change_page","copy_to_clipboard"]}),[Ha.Switch]:[{push:"action"}],[Ha.Case]:{change_page:{value:n()},copy_to_clipboard:{value:n()},open_file:{value:n()},open_url:{value:n()},run_command:{value:n({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})},suggest_command:{value:n({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})}}})),hoverEvent:Ha.Opt(Ha.ObjectNode({action:n({enum:["show_text","show_item","show_entity"]}),[Ha.Switch]:[{push:"action"}],[Ha.Case]:{show_text:{value:Ha.Opt(r("text_component")),contents:Ha.Opt(r("text_component"))},show_item:{value:Ha.Opt(n({validator:"nbt",params:{module:"util::InventoryItem"}})),contents:Ha.Opt(Ha.ObjectNode({id:n({validator:"resource",params:{pool:"item"}}),count:Ha.Opt(Ha.NumberNode({integer:!0})),tag:Ha.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"id"}]}}}))}))},show_entity:{value:Ha.Opt(Ha.ObjectNode({name:Ha.Opt(n()),type:Ha.Opt(n()),id:Ha.Opt(n())})),contents:Ha.Opt(Ha.Mod(Ha.ObjectNode({name:Ha.Opt(r("text_component")),type:n({validator:"resource",params:{pool:"entity_type"}}),id:n({validator:"uuid"})}),{default:()=>({type:"minecraft:pig",id:"00000001-0001-0001-0001-000000000001"})}))}}})),extra:Ha.Opt(r("text_component_list"))};e.register("text_component_object",Ha.Mod(Ha.ChoiceNode([{type:"text",match:e=>"object"==typeof e,change:e=>({text:""}),priority:-1,node:Ha.ObjectNode(s({text:n()},i))},{type:"translation",match:e=>void 0!==(null==e?void 0:e.translate),change:e=>({translate:""}),node:Ha.ObjectNode(s({translate:n(),with:Ha.Opt(r("text_component_list"))},i))},{type:"score",match:e=>void 0!==(null==e?void 0:e.score),change:e=>({score:{}}),node:Ha.ObjectNode(s({score:Ha.ObjectNode({name:n({validator:"entity",params:{amount:"single",type:"entities",isScoreHolder:!0}}),objective:n({validator:"objective"}),value:Ha.Opt(n())})},i))},{type:"selector",match:e=>void 0!==(null==e?void 0:e.selector),change:e=>({selector:""}),node:Ha.ObjectNode(s({selector:n({validator:"entity",params:{amount:"multiple",type:"entities"}})},i))},{type:"keybind",match:e=>void 0!==(null==e?void 0:e.keybind),change:e=>({keybind:""}),node:Ha.ObjectNode(s({keybind:n({enum:"keybind",additional:!0})},i))},{type:"nbt",match:e=>void 0!==(null==e?void 0:e.nbt),change:e=>({nbt:""}),node:Ha.ObjectNode(s({nbt:n({validator:"nbt_path"}),block:Ha.Opt(n({validator:"vector",params:{dimension:3,isInteger:!0}})),entity:Ha.Opt(n({validator:"entity",params:{amount:"multiple",type:"entities"}})),storage:Ha.Opt(n({validator:"resource",params:{pool:"$storage"}})),interpret:Ha.Opt(Ha.BooleanNode())},i))}],{context:"text_component_object",choiceContext:"text_component.object"}),{default:()=>({text:""})})),e.register("text_component_list",Ha.Mod(Ha.ListNode(r("text_component")),{default:()=>[{text:""}]}))};var Wa={},Xa={};Object.defineProperty(Xa,"__esModule",{value:!0}),Xa.initBiomeSchemas=void 0;const Ga=Ce;Xa.initBiomeSchemas=function(e,t){const r=Ga.StringNode.bind(void 0,t);e.register("biome",Ga.Mod(Ga.ObjectNode({surface_builder:r({validator:"resource",params:{pool:"$worldgen/configured_surface_builder"}}),depth:Ga.NumberNode(),scale:Ga.NumberNode(),temperature:Ga.NumberNode(),downfall:Ga.NumberNode(),precipitation:r({enum:["none","rain","snow"]}),temperature_modifier:Ga.Opt(r({enum:["none","frozen"]})),category:r({enum:"biome_category"}),player_spawn_friendly:Ga.Opt(Ga.BooleanNode()),creature_spawn_probability:Ga.Opt(Ga.NumberNode({min:0,max:1})),effects:Ga.ObjectNode({sky_color:Ga.NumberNode({color:!0}),fog_color:Ga.NumberNode({color:!0}),water_color:Ga.NumberNode({color:!0}),water_fog_color:Ga.NumberNode({color:!0}),grass_color:Ga.Opt(Ga.NumberNode({color:!0})),foliage_color:Ga.Opt(Ga.NumberNode({color:!0})),grass_color_modifier:Ga.Opt(r({enum:["none","dark_forest","swamp"]})),ambient_sound:Ga.Opt(r()),mood_sound:Ga.Opt(Ga.ObjectNode({sound:r(),tick_delay:Ga.NumberNode({integer:!0}),block_search_extent:Ga.NumberNode({integer:!0}),offset:Ga.NumberNode()})),additions_sound:Ga.Opt(Ga.ObjectNode({sound:r(),tick_chance:Ga.NumberNode({min:0,max:1})})),music:Ga.Opt(Ga.ObjectNode({sound:r(),min_delay:Ga.NumberNode({integer:!0,min:0}),max_delay:Ga.NumberNode({integer:!0,min:0}),replace_current_music:Ga.BooleanNode()})),particle:Ga.Opt(Ga.ObjectNode({options:Ga.ObjectNode({type:r()}),probability:Ga.NumberNode({min:0,max:1})}))}),starts:Ga.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_structure_feature"}})),spawners:Ga.MapNode(r({enum:["water_ambient","ambient","misc","water_creature","creature","monster"]}),Ga.Mod(Ga.ListNode(Ga.ObjectNode({type:r({validator:"resource",params:{pool:"entity_type"}}),weight:Ga.NumberNode({integer:!0}),minCount:Ga.NumberNode({integer:!0}),maxCount:Ga.NumberNode({integer:!0})})),{category:()=>"pool",default:()=>[{type:"minecraft:bat",weight:1}]})),spawn_costs:Ga.MapNode(r({validator:"resource",params:{pool:"entity_type"}}),Ga.Mod(Ga.ObjectNode({energy_budget:Ga.NumberNode(),charge:Ga.NumberNode()},{category:"function"}),{default:()=>({energy_budget:.12,charge:1})})),carvers:Ga.MapNode(r({enum:["air","liquid"]}),Ga.Mod(Ga.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_carver"}})),{default:()=>["minecraft:cave"]})),features:Ga.ListNode(Ga.Mod(Ga.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_feature"}})),{category:()=>"predicate"}),{maxLength:10})},{context:"biome"}),{default:()=>({surface_builder:"minecraft:grass",depth:.125,scale:.05,temperature:.8,downfall:.4,precipitation:"rain",category:"plains",effects:{sky_color:7907327,fog_color:12638463,water_color:4159204,water_fog_color:329011}})}))};var Va={};Object.defineProperty(Va,"__esModule",{value:!0}),Va.initCarverSchemas=void 0;const Ja=Ce;Va.initCarverSchemas=function(e,t){const r=Ja.StringNode.bind(void 0,t);e.register("configured_carver",Ja.Mod(Ja.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/carver"}}),config:Ja.ObjectNode({probability:Ja.NumberNode({min:0,max:1})})},{context:"carver"}),{default:()=>({type:"minecraft:cave",config:{probability:.1}})}))};var Ya={};Object.defineProperty(Ya,"__esModule",{value:!0}),Ya.initDecoratorSchemas=void 0;const Ka=Ce,Qa=ba;Ya.initDecoratorSchemas=function(e,t){const r=Ka.Reference.bind(void 0,e),n=Ka.StringNode.bind(void 0,t),o={maximum:Ka.NumberNode({integer:!0}),bottom_offset:Ka.NumberNode({integer:!0}),top_offset:Ka.NumberNode({integer:!0})},i={chance:Ka.NumberNode({integer:!0,min:0})},a={count:Qa.UniformInt({min:-10,max:128,maxSpread:128})};e.register("configured_decorator",Ka.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/decorator"}}),config:Ka.ObjectNode({[Ka.Switch]:["pop",{push:"type"}],[Ka.Case]:{"minecraft:carving_mask":{step:n({enum:"generation_step"}),probability:Ka.NumberNode({min:0,max:1})},"minecraft:chance":i,"minecraft:count":a,"minecraft:count_extra":{count:Ka.NumberNode({integer:!0}),extra_count:Ka.NumberNode({integer:!0}),extra_chance:Ka.NumberNode({min:0,max:1})},"minecraft:count_multilayer":a,"minecraft:count_noise":{noise_level:Ka.NumberNode(),below_noise:Ka.NumberNode({integer:!0}),above_noise:Ka.NumberNode({integer:!0})},"minecraft:count_noise_biased":{noise_to_count_ratio:Ka.NumberNode({integer:!0}),noise_factor:Ka.NumberNode(),noise_offset:Ka.Opt(Ka.NumberNode())},"minecraft:decorated":{outer:r("configured_decorator"),inner:r("configured_decorator")},"minecraft:depth_average":{baseline:Ka.NumberNode({integer:!0}),spread:Ka.NumberNode({integer:!0})},"minecraft:fire":a,"minecraft:glowstone":a,"minecraft:lava_lake":i,"minecraft:range":o,"minecraft:range_biased":o,"minecraft:range_very_biased":o,"minecraft:water_lake":i}},{context:"decorator",category:"predicate"})},{context:"decorator",category:"predicate"}))};var es={},ts={};Object.defineProperty(ts,"__esModule",{value:!0}),ts.initProcessorListSchemas=void 0;const rs=Ce;ts.initProcessorListSchemas=function(e,t){const r=rs.Reference.bind(void 0,e),n=rs.StringNode.bind(void 0,t);e.register("processor_list",rs.Mod(rs.ObjectNode({processors:rs.ListNode(r("processor"))},{context:"processor_list"}),{default:()=>({processors:[{processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]}]})})),e.register("processor",rs.Mod(rs.ObjectNode({processor_type:n({validator:"resource",params:{pool:"worldgen/structure_processor"}}),[rs.Switch]:[{push:"processor_type"}],[rs.Case]:{"minecraft:block_age":{mossiness:rs.NumberNode()},"minecraft:block_ignore":{blocks:rs.ListNode(r("block_state"))},"minecraft:block_rot":{integrity:rs.NumberNode({min:0,max:1})},"minecraft:gravity":{heightmap:n({enum:"heightmap_type"}),offset:rs.NumberNode({integer:!0})},"minecraft:rule":{rules:rs.ListNode(r("processor_rule"))}}},{category:"function",context:"processor"}),{default:()=>({processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]})})),e.register("processor_rule",rs.Mod(rs.ObjectNode({position_predicate:rs.Opt(r("pos_rule_test")),location_predicate:r("rule_test"),input_predicate:r("rule_test"),output_state:r("block_state"),output_nbt:rs.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:block"}}}))},{category:"predicate",context:"processor_rule"}),{default:()=>({location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}})}));const o={min_dist:rs.NumberNode({min:0,max:255,integer:!0}),max_dist:rs.NumberNode({min:0,max:255,integer:!0}),min_chance:rs.NumberNode({min:0,max:1}),max_chance:rs.NumberNode({min:0,max:1})};e.register("pos_rule_test",rs.ObjectNode({predicate_type:n({validator:"resource",params:{pool:"pos_rule_test"}}),[rs.Switch]:[{push:"predicate_type"}],[rs.Case]:{"minecraft:axis_aligned_linear_pos":s({axis:n({enum:["x","y","z"]})},o),"minecraft:linear_pos":o}},{context:"pos_rule_test",disableSwitchContext:!0})),e.register("rule_test",rs.ObjectNode({predicate_type:n({validator:"resource",params:{pool:"rule_test"}}),[rs.Switch]:[{push:"predicate_type"}],[rs.Case]:{"minecraft:block_match":{block:n({validator:"resource",params:{pool:"block"}})},"minecraft:blockstate_match":{block_state:r("block_state")},"minecraft:random_block_match":{block:n({validator:"resource",params:{pool:"block"}}),probability:rs.NumberNode({min:0,max:1})},"minecraft:random_blockstate_match":{block_state:r("block_state"),probability:rs.NumberNode({min:0,max:1})},"minecraft:tag_match":{tag:n({validator:"resource",params:{pool:"$tag/block"}})}}},{context:"rule_test",disableSwitchContext:!0}))},Object.defineProperty(es,"__esModule",{value:!0}),es.initFeatureSchemas=void 0;const ns=Ce,os=ba;es.initFeatureSchemas=function(e,t){const r=ns.Reference.bind(void 0,e),n=ns.StringNode.bind(void 0,t),o={can_replace:ns.BooleanNode(),project:ns.BooleanNode(),need_water:ns.BooleanNode(),xspread:ns.NumberNode({integer:!0}),yspread:ns.NumberNode({integer:!0}),zspread:ns.NumberNode({integer:!0}),tries:ns.NumberNode({integer:!0}),state_provider:r("block_state_provider"),block_placer:r("block_placer"),whitelist:ns.ListNode(r("block_state")),blacklist:ns.ListNode(r("block_state"))},i={state:r("block_state"),radius:os.UniformInt({min:0,max:4,maxSpread:4}),half_height:ns.NumberNode({integer:!0,min:0,max:4}),targets:ns.ListNode(r("block_state"))},a={cap_provider:r("block_state_provider"),stem_provider:r("block_state_provider"),foliage_radius:ns.Opt(ns.NumberNode({integer:!0}))},s={state:r("block_state"),size:ns.NumberNode({integer:!0,min:0,max:64}),target:r("rule_test")},c={count:os.UniformInt({min:-10,max:128,maxSpread:128})},l=ns.ChoiceNode([{type:"string",node:n({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:r("configured_feature")}],{choiceContext:"feature"});e.register("configured_feature",ns.Mod(ns.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/feature"}}),config:ns.ObjectNode({[ns.Switch]:["pop",{push:"type"}],[ns.Case]:{"minecraft:bamboo":{probability:ns.NumberNode({min:0,max:1})},"minecraft:basalt_columns":{reach:os.UniformInt({min:0,max:2,maxSpread:1}),height:os.UniformInt({min:1,max:5,maxSpread:5})},"minecraft:block_pile":{state_provider:r("block_state_provider")},"minecraft:decorated":{decorator:r("configured_decorator"),feature:l},"minecraft:delta_feature":{contents:r("block_state"),rim:r("block_state"),size:os.UniformInt({min:0,max:8,maxSpread:8}),rim_size:os.UniformInt({min:0,max:8,maxSpread:8})},"minecraft:disk":i,"minecraft:emerald_ore":{state:r("block_state"),target:r("block_state")},"minecraft:end_gateway":{exact:ns.BooleanNode(),exit:ns.Opt(r("block_pos"))},"minecraft:end_spike":{crystal_invulnerable:ns.Opt(ns.BooleanNode()),crystal_beam_target:ns.Opt(r("block_pos")),spikes:ns.ListNode(ns.ObjectNode({centerX:ns.Opt(ns.NumberNode({integer:!0})),centerZ:ns.Opt(ns.NumberNode({integer:!0})),radius:ns.Opt(ns.NumberNode({integer:!0})),height:ns.Opt(ns.NumberNode({integer:!0})),guarded:ns.Opt(ns.BooleanNode())}))},"minecraft:fill_layer":{state:r("block_state"),height:ns.NumberNode({integer:!0,min:0,max:255})},"minecraft:flower":o,"minecraft:forest_rock":{state:r("block_state")},"minecraft:huge_brown_mushroom":a,"minecraft:huge_fungus":{hat_state:r("block_state"),decor_state:r("block_state"),stem_state:r("block_state"),valid_base_block:r("block_state"),planted:ns.Opt(ns.BooleanNode())},"minecraft:huge_red_mushroom":a,"minecraft:ice_patch":i,"minecraft:iceberg":{state:r("block_state")},"minecraft:lake":{state:r("block_state")},"minecraft:nether_forest_vegetation":{state_provider:r("block_state_provider")},"minecraft:netherrack_replace_blobs":{state:r("block_state"),target:r("block_state"),radius:os.UniformInt()},"minecraft:no_bonemeal_flower":o,"minecraft:no_surface_ore":s,"minecraft:ore":s,"minecraft:random_patch":o,"minecraft:random_boolean_selector":{feature_false:l,feature_true:l},"minecraft:random_selector":{features:ns.ListNode(ns.ObjectNode({chance:ns.NumberNode({min:0,max:1}),feature:l})),default:l},"minecraft:sea_pickle":c,"minecraft:seagrass":{probability:ns.NumberNode({min:0,max:1})},"minecraft:simple_block":{to_place:r("block_state"),place_on:ns.ListNode(r("block_state")),place_in:ns.ListNode(r("block_state")),place_under:ns.ListNode(r("block_state"))},"minecraft:simple_random_selector":{features:ns.ListNode(l)},"minecraft:spring_feature":{state:r("fluid_state"),rock_count:ns.NumberNode({integer:!0}),hole_count:ns.NumberNode({integer:!0}),requires_block_below:ns.BooleanNode(),valid_blocks:ns.ListNode(n({validator:"resource",params:{pool:"block"}}))},"minecraft:tree":{max_water_depth:ns.NumberNode({integer:!0}),ignore_vines:ns.BooleanNode(),heightmap:n({enum:"heightmap_type"}),minimum_size:r("feature_size"),trunk_provider:r("block_state_provider"),leaves_provider:r("block_state_provider"),trunk_placer:ns.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/trunk_placer_type"}}),base_height:ns.NumberNode({integer:!0,min:0,max:32}),height_rand_a:ns.NumberNode({integer:!0,min:0,max:24}),height_rand_b:ns.NumberNode({integer:!0,min:0,max:24})},{context:"trunk_placer"}),foliage_placer:ns.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/foliage_placer_type"}}),radius:os.UniformInt({min:0,max:8,maxSpread:8}),offset:os.UniformInt({min:0,max:8,maxSpread:8}),[ns.Switch]:[{push:"type"}],[ns.Case]:{"minecraft:blob_foliage_placer":{height:ns.NumberNode({integer:!0,min:0,max:16})},"minecraft:bush_foliage_placer":{height:ns.NumberNode({integer:!0,min:0,max:16})},"minecraft:fancy_foliage_placer":{height:ns.NumberNode({integer:!0,min:0,max:16})},"minecraft:jungle_foliage_placer":{height:ns.NumberNode({integer:!0,min:0,max:16})},"minecraft:mega_pine_foliage_placer":{crown_height:os.UniformInt({min:0,max:16,maxSpread:8})},"minecraft:pine_foliage_placer":{height:os.UniformInt({min:0,max:16,maxSpread:8})},"minecraft:spruce_foliage_placer":{trunk_height:os.UniformInt({min:0,max:16,maxSpread:8})}}},{context:"foliage_placer",disableSwitchContext:!0}),decorators:ns.ListNode(ns.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/tree_decorator_type"}}),[ns.Switch]:[{push:"type"}],[ns.Case]:{"minecraft:alter_ground":{provider:r("block_state_provider")},"minecraft:beehive":{probability:ns.NumberNode({min:0,max:1})},"minecraft:cocoa":{probability:ns.NumberNode({min:0,max:1})}}},{context:"tree_decorator"}))}}},{context:"feature"})},{context:"feature"}),{default:()=>({type:"minecraft:decorated",config:{decorator:{type:"minecraft:count",config:{count:4}},feature:{type:"minecraft:tree",config:{max_water_depth:0,ignore_vines:!0,minimum_size:{},trunk_placer:{base_height:5,height_rand_a:2,height_rand_b:0},foliage_placer:{radius:2,offset:0,height:3}}}}})})),e.register("feature_size",ns.Mod(ns.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/feature_size_type"}}),min_clipped_height:ns.Opt(ns.NumberNode({min:0,max:80})),[ns.Switch]:[{push:"type"}],[ns.Case]:{"minecraft:two_layers_feature_size":{limit:ns.Opt(ns.NumberNode({integer:!0,min:0,max:81})),lower_size:ns.Opt(ns.NumberNode({integer:!0,min:0,max:16})),upper_size:ns.Opt(ns.NumberNode({integer:!0,min:0,max:16}))},"minecraft:three_layers_feature_size":{limit:ns.Opt(ns.NumberNode({integer:!0,min:0,max:80})),upper_limit:ns.Opt(ns.NumberNode({integer:!0,min:0,max:80})),lower_size:ns.Opt(ns.NumberNode({integer:!0,min:0,max:16})),middle_size:ns.Opt(ns.NumberNode({integer:!0,min:0,max:16})),upper_size:ns.Opt(ns.NumberNode({integer:!0,min:0,max:16}))}}},{disableSwitchContext:!0}),{default:()=>({type:"minecraft:two_layers_feature_size"})})),e.register("block_state_provider",ns.Mod(ns.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/block_state_provider_type"}}),[ns.Switch]:[{push:"type"}],[ns.Case]:{"minecraft:rotated_block_provider":{state:r("block_state")},"minecraft:simple_state_provider":{state:r("block_state")},"minecraft:weighted_state_provider":{entries:ns.ListNode(ns.Mod(ns.ObjectNode({weight:ns.NumberNode({integer:!0,min:1}),data:r("block_state")}),{default:()=>({data:{}})}))}}},{context:"block_state_provider"}),{default:()=>({type:"minecraft:simple_state_provider"})})),e.register("block_placer",ns.Mod(ns.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/block_placer_type"}}),[ns.Switch]:[{push:"type"}],[ns.Case]:{"minecraft:column_placer":{min_size:ns.NumberNode({integer:!0}),extra_size:ns.NumberNode({integer:!0})}}},{context:"block_placer"}),{default:()=>({type:"minecraft:simple_block_placer"})}))};var is={};Object.defineProperty(is,"__esModule",{value:!0}),is.initNoiseSettingsSchemas=void 0;const as=Ce,ss=ba;is.initNoiseSettingsSchemas=function(e,t){const r=as.Reference.bind(void 0,e),n=as.StringNode.bind(void 0,t);e.register("noise_settings",as.Mod(as.ObjectNode({name:as.Mod(n({validator:"resource",params:{pool:"$worldgen/noise_settings",isDefinition:!0}}),{enabled:e=>e.getArray().length>0}),bedrock_roof_position:as.NumberNode({integer:!0}),bedrock_floor_position:as.NumberNode({integer:!0}),sea_level:as.NumberNode({integer:!0}),disable_mob_generation:as.BooleanNode(),default_block:r("block_state"),default_fluid:r("block_state"),noise:as.ObjectNode({height:as.NumberNode({integer:!0}),density_factor:as.NumberNode(),density_offset:as.NumberNode(),size_horizontal:as.NumberNode({integer:!0}),size_vertical:as.NumberNode({integer:!0}),simplex_surface_noise:as.BooleanNode(),random_density_offset:as.Opt(as.BooleanNode()),island_noise_override:as.Opt(as.BooleanNode()),amplified:as.Opt(as.BooleanNode()),sampling:as.ObjectNode({xz_scale:as.NumberNode(),y_scale:as.NumberNode(),xz_factor:as.NumberNode(),y_factor:as.NumberNode()}),bottom_slide:as.ObjectNode({target:as.NumberNode({integer:!0}),size:as.NumberNode({integer:!0}),offset:as.NumberNode({integer:!0})}),top_slide:as.ObjectNode({target:as.NumberNode({integer:!0}),size:as.NumberNode({integer:!0}),offset:as.NumberNode({integer:!0})})}),structures:r("generator_structures")},{context:"noise_settings"}),{default:()=>ss.DefaultNoiseSettings})),e.register("generator_structures",as.ObjectNode({stronghold:as.Opt(as.ObjectNode({distance:as.NumberNode({integer:!0,min:0,max:1023}),spread:as.NumberNode({integer:!0,min:0,max:1023}),count:as.NumberNode({integer:!0,min:1,max:4095})})),structures:as.MapNode(n({validator:"resource",params:{pool:"worldgen/structure_feature"}}),as.Mod(as.ObjectNode({spacing:as.NumberNode({integer:!0,min:0,max:4096}),separation:as.Mod(as.NumberNode({integer:!0,min:0,max:4096}),(e=>({validate:(t,r,n,o)=>(t.pop().push("spacing").get()<=r&&n.add(t,"error.separation_smaller_spacing"),e.validate(t,r,n,o))}))),salt:as.NumberNode({integer:!0,min:0})},{context:"generator_structure"}),{default:()=>({spacing:10,separation:5,salt:0})}))})),e.register("generator_layer",as.Mod(as.ObjectNode({block:n({validator:"resource",params:{pool:"block"}}),height:as.NumberNode({integer:!0,min:1})}),{default:()=>({block:"minecraft:stone",height:1})}))};var cs={};Object.defineProperty(cs,"__esModule",{value:!0}),cs.initStructureFeatureSchemas=void 0;const ls=Ce;cs.initStructureFeatureSchemas=function(e,t){const r=ls.StringNode.bind(void 0,t),n={start_pool:r({validator:"resource",params:{pool:"$worldgen/template_pool"}}),size:ls.NumberNode({integer:!0})};e.register("configured_structure_feature",ls.Mod(ls.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/structure_feature"}}),config:ls.ObjectNode({[ls.Switch]:["pop",{push:"type"}],[ls.Case]:{"minecraft:bastion_remnant":n,"minecraft:buried_treasure":{probability:ls.NumberNode({min:0,max:1})},"minecraft:mineshaft":{type:r({enum:["normal","mesa"]}),probability:ls.NumberNode({min:0,max:1})},"minecraft:ocean_ruin":{biome_temp:r({enum:["cold","warm"]}),large_probability:ls.NumberNode({min:0,max:1}),cluster_probability:ls.NumberNode({min:0,max:1})},"minecraft:pillager_outpost":n,"minecraft:ruined_portal":{portal_type:r({enum:["standard","desert","jungle","mountain","nether","ocean","swamp"]})},"minecraft:shipwreck":{is_beached:ls.Opt(ls.BooleanNode())},"minecraft:village":n}},{context:"structure_feature",disableSwitchContext:!0})},{context:"structure_feature"}),{default:()=>({type:"minecraft:bastion_remnant",config:{start_pool:"minecraft:bastion/starts",size:6}})}))};var ds={};Object.defineProperty(ds,"__esModule",{value:!0}),ds.initSurfaceBuilderSchemas=void 0;const _s=Ce;ds.initSurfaceBuilderSchemas=function(e,t){const r=_s.StringNode.bind(void 0,t),n=_s.Reference.bind(void 0,e);e.register("configured_surface_builder",_s.Mod(_s.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/surface_builder"}}),config:_s.ObjectNode({top_material:n("block_state"),under_material:n("block_state"),underwater_material:n("block_state")},{context:"surface_builder"})},{context:"surface_builder"}),{default:()=>({type:"minecraft:default",config:{top_material:{Name:"minecraft:grass_block",Properties:{snowy:"false"}},under_material:{Name:"minecraft:dirt"},underwater_material:{Name:"minecraft:gravel"}}})}))};var ms={};Object.defineProperty(ms,"__esModule",{value:!0}),ms.initTemplatePoolSchemas=void 0;const ps=Ce;ms.initTemplatePoolSchemas=function(e,t){const r=ps.Reference.bind(void 0,e),n=ps.StringNode.bind(void 0,t),o=ps.ChoiceNode([{type:"string",node:n({validator:"resource",params:{pool:"$worldgen/processor_list"}}),change:e=>{}},{type:"object",node:r("processor_list"),change:e=>({processors:[{processor_type:"minecraft:nop"}]})}]);e.register("template_pool",ps.Mod(ps.ObjectNode({name:n(),fallback:n(),elements:ps.ListNode(r("template_weighted_element"))},{context:"template_pool"}),{default:()=>({fallback:"minecraft:empty",elements:[{weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}}]})})),e.register("template_weighted_element",ps.Mod(ps.ObjectNode({weight:ps.NumberNode({integer:!0,min:1}),element:r("template_element")},{category:"pool"}),{default:()=>({weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}})})),e.register("template_element",ps.Mod(ps.ObjectNode({element_type:n({validator:"resource",params:{pool:"worldgen/structure_pool_element"}}),projection:n({enum:["rigid","terrain_matching"]}),[ps.Switch]:[{push:"element_type"}],[ps.Case]:{"minecraft:feature_pool_element":{feature:n({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},"minecraft:legacy_single_pool_element":{location:n({validator:"resource",params:{pool:"$structure"}}),processors:o},"minecraft:list_pool_element":{elements:ps.ListNode(r("template_element"))},"minecraft:single_pool_element":{location:n({validator:"resource",params:{pool:"$structure"}}),processors:o}}},{context:"template_element",disableSwitchContext:!0}),{default:()=>({element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"})}))},Object.defineProperty(Wa,"__esModule",{value:!0}),Wa.initWorldgenSchemas=void 0;const us=Xa,fs=Va,hs=Ya,gs=es,bs=is,vs=ts,ys=cs,Ns=ds,ks=ms;Wa.initWorldgenSchemas=function(e,t){us.initBiomeSchemas(e,t),fs.initCarverSchemas(e,t),hs.initDecoratorSchemas(e,t),gs.initFeatureSchemas(e,t),bs.initNoiseSettingsSchemas(e,t),vs.initProcessorListSchemas(e,t),ys.initStructureFeatureSchemas(e,t),Ns.initSurfaceBuilderSchemas(e,t),ks.initTemplatePoolSchemas(e,t)};var ws={};Object.defineProperty(ws,"__esModule",{value:!0}),ws.initWorldSettingsSchemas=void 0;const Os=Ce;ws.initWorldSettingsSchemas=function(e,t){const r=Os.Reference.bind(void 0,e),n=Os.StringNode.bind(void 0,t);e.register("world_settings",Os.Mod(Os.ObjectNode({generate_features:Os.BooleanNode(),bonus_chest:Os.BooleanNode(),seed:Os.NumberNode({integer:!0}),dimensions:Os.MapNode(n({validator:"resource",params:{pool:"$dimension"}}),r("dimension"))},{context:"world_settings"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{generate_features:!0,bonus_chest:!1,seed:e,dimensions:{"minecraft:overworld":{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:vanilla_layered",seed:e},settings:"minecraft:overworld"}},"minecraft:the_nether":{type:"minecraft:the_nether",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:multi_noise",seed:e,humidity_noise:{firstOctave:-7,amplitudes:[1,1]},altitude_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:0},biome:"minecraft:nether_wastes"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:-.5},biome:"minecraft:soul_sand_valley"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:.4,humidity:0},biome:"minecraft:crimson_forest"},{parameters:{altitude:0,weirdness:0,offset:.375,temperature:0,humidity:.5},biome:"minecraft:warped_forest"},{parameters:{altitude:0,weirdness:0,offset:.175,temperature:-.5,humidity:0},biome:"minecraft:basalt_deltas"}]},settings:"minecraft:nether"}},"minecraft:the_end":{type:"minecraft:the_end",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:the_end",seed:e},settings:"minecraft:end"}}}}}}))},Object.defineProperty(ha,"__esModule",{value:!0}),ha.initSchemas=void 0;const xs=ga,Ss=ba,js=Na,Ms=Oa,As=ja,Ps=Pa,Ls=Ta,Bs=Ra,Cs=Da,zs=qa,Ts=Za,Is=Wa,Rs=ws;ha.initSchemas=function(e,t){Ss.initCommonSchemas(e,t),xs.initAdvancementSchemas(e,t),js.initConditionSchemas(e,t),As.initDimensionTypeSchemas(e,t),Ms.initDimensionSchemas(e,t),Ps.initLootTableSchemas(e,t),Ls.initPackMcmetaSchemas(e,t),Bs.initPredicatesSchemas(e,t),Cs.initRecipeSchemas(e,t),zs.initTagsSchemas(e,t),Ts.initTextComponentSchemas(e,t),Is.initWorldgenSchemas(e,t),Rs.initWorldSettingsSchemas(e,t)};var Fs=Be&&Be.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Es=Be&&Be.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ds=Be&&Be.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&Fs(t,e,r);return Es(t,e),t};Object.defineProperty(ua,"__esModule",{value:!0});var $s=ua.getSchemas=ua.getCollections=void 0;const qs=Ce,Us=fa,Zs=ha;var Hs=ua.lootContext=Ds(La);var Ws=ua.getCollections=function(){const e=new qs.CollectionRegistry;return Us.initCollections(e),e};$s=ua.getSchemas=function(e){const t=new qs.SchemaRegistry;return Zs.initSchemas(t,e),t};var Xs=Object.freeze(Object.assign(Object.create(null),ua,{[Symbol.toStringTag]:"Module",get getSchemas(){return $s},get getCollections(){return Ws},lootContext:Hs,default:ua})),Gs={},Vs={};Object.defineProperty(Vs,"__esModule",{value:!0}),Vs.initCollections=void 0,Vs.initCollections=function(e){e.register("advancement_trigger",["minecraft:bee_nest_destroyed","minecraft:bred_animals","minecraft:brewed_potion","minecraft:changed_dimension","minecraft:channeled_lightning","minecraft:construct_beacon","minecraft:consume_item","minecraft:cured_zombie_villager","minecraft:effects_changed","minecraft:enchanted_item","minecraft:enter_block","minecraft:entity_hurt_player","minecraft:entity_killed_player","minecraft:filled_bucket","minecraft:fishing_rod_hooked","minecraft:hero_of_the_village","minecraft:impossible","minecraft:inventory_changed","minecraft:item_durability_changed","minecraft:item_used_on_block","minecraft:killed_by_crossbow","minecraft:levitation","minecraft:lightning_strike","minecraft:location","minecraft:nether_travel","minecraft:placed_block","minecraft:player_generates_container_loot","minecraft:player_hurt_entity","minecraft:player_interacted_with_entity","minecraft:player_killed_entity","minecraft:recipe_unlocked","minecraft:shot_crossbow","minecraft:slept_in_bed","minecraft:slide_down_block","minecraft:started_riding","minecraft:summoned_entity","minecraft:tame_animal","minecraft:target_hit","minecraft:tick","minecraft:thrown_item_picked_up_by_entity","minecraft:used_ender_eye","minecraft:used_totem","minecraft:using_item","minecraft:villager_trade","minecraft:voluntary_exile"]),e.register("dimension",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("dimension_type",["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]),e.register("keybind",["key.advancements","key.attack","key.back","key.chat","key.command","key.drop","key.forward","key.fullscreen","key.hotbar.1","key.hotbar.2","key.hotbar.3","key.hotbar.4","key.hotbar.5","key.hotbar.6","key.hotbar.7","key.hotbar.8","key.hotbar.9","key.inventory","key.jump","key.left","key.loadToolbarActivator","key.pickItem","key.playerlist","key.right","key.saveToolbarActivator","key.screenshot","key.smoothCamera","key.sneak","key.spectatorOutlines","key.sprint","key.swapOffhand","key.togglePerspective","key.use"]),e.register("slot",["mainhand","offhand","head","chest","legs","feet"]),e.register("gamemode",["survival","creative","adventure","spectator"]),e.register("worldgen/noise_settings",["minecraft:overworld","minecraft:nether","minecraft:end","minecraft:amplified","minecraft:caves","minecraft:floating_islands"]),e.register("entity_source",["this","killer","direct_killer","killer_player"]),e.register("copy_source",["block_entity","this","killer","killer_player"]),e.register("loot_table_apply_bonus_formula",["minecraft:uniform_bonus_count","minecraft:binomial_with_bonus_count","minecraft:ore_drops"]),e.register("map_decoration",["mansion","monument","player","frame","red_marker","blue_marker","target_x","target_point","player_off_map","player_off_limits","red_x","banner_white","banner_orange","banner_magenta","banner_light_blue","banner_yellow","banner_lime","banner_pink","banner_gray","banner_light_gray","banner_cyan","banner_purple","banner_blue","banner_brown","banner_green","banner_red","banner_black"]),e.register("map_feature",["bastion_remnant","buried_treasure","desert_pyramid","endcity","fortress","igloo","jungle_pyramid","mansion","mineshaft","monument","nether_fossil","ocean_ruin","pillager_outpost","ruined_portal","shipwreck","stronghold","swamp_hut","village"]),e.register("recipe_group",["bed","light_gray_dye","iron_ingot","wooden_stairs","black_dye","stained_terracotta","dyed_bed","magenta_dye","bark","rabbit_stew","light_blue_dye","wooden_fence_gate","planks","stained_glass","wooden_door","stained_glass_pane","wooden_fence","sticks","concrete_powder","wooden_pressure_plate","boat","brown_dye","yellow_dye","bonemeal","red_dye","wooden_trapdoor","wooden_button","gold_ingot","pink_dye","wooden_slab","orange_dye","carpet","sign","wool","sugar","blue_dye","white_dye","banner","netherite_ingot"]),e.register("worldgen/configured_feature",["minecraft:acacia","minecraft:bamboo_light","minecraft:bamboo_vegetation","minecraft:bamboo","minecraft:basalt_blobs","minecraft:basalt_pillar","minecraft:birch_bees_0002","minecraft:birch_bees_002","minecraft:birch_bees_005","minecraft:birch_other","minecraft:birch_tall","minecraft:birch","minecraft:blackstone_blobs","minecraft:blue_ice","minecraft:bonus_chest","minecraft:brown_mushroom_giant","minecraft:brown_mushroom_nether","minecraft:brown_mushroom_normal","minecraft:brown_mushroom_swamp","minecraft:brown_mushroom_taiga","minecraft:chorus_plant","minecraft:crimson_forest_vegetation","minecraft:crimson_fungi_planted","minecraft:crimson_fungi","minecraft:dark_forest_vegetation_brown","minecraft:dark_forest_vegetation_red","minecraft:dark_oak","minecraft:delta","minecraft:desert_well","minecraft:disk_clay","minecraft:disk_gravel","minecraft:disk_sand","minecraft:end_gateway_delayed","minecraft:end_gateway","minecraft:end_island_decorated","minecraft:end_island","minecraft:end_spike","minecraft:fancy_oak_bees_0002","minecraft:fancy_oak_bees_002","minecraft:fancy_oak_bees_005","minecraft:fancy_oak","minecraft:flower_default","minecraft:flower_forest","minecraft:flower_plain_decorated","minecraft:flower_plain","minecraft:flower_swamp","minecraft:flower_warm","minecraft:forest_flower_trees","minecraft:forest_flower_vegetation_common","minecraft:forest_flower_vegetation","minecraft:forest_rock","minecraft:fossil","minecraft:freeze_top_layer","minecraft:glowstone_extra","minecraft:glowstone","minecraft:huge_brown_mushroom","minecraft:huge_red_mushroom","minecraft:ice_patch","minecraft:ice_spike","minecraft:iceberg_blue","minecraft:iceberg_packed","minecraft:jungle_bush","minecraft:jungle_tree_no_vine","minecraft:jungle_tree","minecraft:kelp_cold","minecraft:kelp_warm","minecraft:lake_lava","minecraft:lake_water","minecraft:large_basalt_columns","minecraft:mega_jungle_tree","minecraft:mega_pine","minecraft:mega_spruce","minecraft:monster_room","minecraft:mushroom_field_vegetation","minecraft:nether_sprouts","minecraft:oak_badlands","minecraft:oak_bees_0002","minecraft:oak_bees_002","minecraft:oak_bees_005","minecraft:oak","minecraft:ore_andesite","minecraft:ore_blackstone","minecraft:ore_coal","minecraft:ore_debris_large","minecraft:ore_debris_small","minecraft:ore_diamond","minecraft:ore_diorite","minecraft:ore_dirt","minecraft:ore_emerald","minecraft:ore_gold_deltas","minecraft:ore_gold_extra","minecraft:ore_gold_nether","minecraft:ore_gold","minecraft:ore_granite","minecraft:ore_gravel_nether","minecraft:ore_gravel","minecraft:ore_infested","minecraft:ore_iron","minecraft:ore_lapis","minecraft:ore_magma","minecraft:ore_quartz_deltas","minecraft:ore_quartz_nether","minecraft:ore_redstone","minecraft:ore_soul_sand","minecraft:patch_berry_bush","minecraft:patch_berry_decorated","minecraft:patch_berry_sparse","minecraft:patch_brown_mushroom","minecraft:patch_cactus_decorated","minecraft:patch_cactus_desert","minecraft:patch_cactus","minecraft:patch_crimson_roots","minecraft:patch_dead_bush_2","minecraft:patch_dead_bush_badlands","minecraft:patch_dead_bush","minecraft:patch_fire","minecraft:patch_grass_badlands","minecraft:patch_grass_forest","minecraft:patch_grass_jungle","minecraft:patch_grass_normal","minecraft:patch_grass_plain","minecraft:patch_grass_savanna","minecraft:patch_grass_taiga_2","minecraft:patch_grass_taiga","minecraft:patch_large_fern","minecraft:patch_melon","minecraft:patch_pumpkin","minecraft:patch_red_mushroom","minecraft:patch_soul_fire","minecraft:patch_sugar_cane_badlands","minecraft:patch_sugar_cane_desert","minecraft:patch_sugar_cane_swamp","minecraft:patch_sugar_cane","minecraft:patch_sunflower","minecraft:patch_taiga_grass","minecraft:patch_tall_grass_2","minecraft:patch_tall_grass","minecraft:patch_waterlilly","minecraft:pile_hay","minecraft:pile_ice","minecraft:pile_melon","minecraft:pile_pumpkin","minecraft:pile_snow","minecraft:pine","minecraft:plain_vegetation","minecraft:red_mushroom_giant","minecraft:red_mushroom_nether","minecraft:red_mushroom_normal","minecraft:red_mushroom_swamp","minecraft:red_mushroom_taiga","minecraft:sea_pickle","minecraft:seagrass_cold","minecraft:seagrass_deep_cold","minecraft:seagrass_deep_warm","minecraft:seagrass_deep","minecraft:seagrass_normal","minecraft:seagrass_river","minecraft:seagrass_simple","minecraft:seagrass_swamp","minecraft:seagrass_warm","minecraft:small_basalt_columns","minecraft:spring_closed_double","minecraft:spring_closed","minecraft:spring_delta","minecraft:spring_lava_double","minecraft:spring_lava","minecraft:spring_open","minecraft:spring_water","minecraft:spruce_snowy","minecraft:spruce","minecraft:super_birch_bees_0002","minecraft:swamp_tree","minecraft:taiga_vegetation","minecraft:trees_birch","minecraft:trees_giant_spruce","minecraft:trees_giant","minecraft:trees_jungle_edge","minecraft:trees_jungle","minecraft:trees_mountain_edge","minecraft:trees_mountain","minecraft:trees_savanna","minecraft:trees_shattered_savanna","minecraft:trees_water","minecraft:twisting_vines","minecraft:vines","minecraft:void_start_platform","minecraft:warm_ocean_vegetation","minecraft:warped_forest_vegetation","minecraft:warped_fungi_planted","minecraft:warped_fungi","minecraft:weeping_vines"]),e.register("worldgen/configured_structure_feature",["minecraft:bastion_remnant","minecraft:buried_treasure","minecraft:desert_pyramid","minecraft:end_city","minecraft:fortress","minecraft:igloo","minecraft:jungle_pyramid","minecraft:mansion","minecraft:mineshaft_mesa","minecraft:mineshaft","minecraft:monument","minecraft:nether_fossil","minecraft:ocean_ruin_cold","minecraft:ocean_ruin_warm","minecraft:pillager_outpost","minecraft:ruined_portal_desert","minecraft:ruined_portal_jungle","minecraft:ruined_portal_mountain","minecraft:ruined_portal_nether","minecraft:ruined_portal_ocean","minecraft:ruined_portal_swamp","minecraft:ruined_portal","minecraft:shipwreck_beached","minecraft:shipwreck","minecraft:stronghold","minecraft:swamp_hut","minecraft:village_desert","minecraft:village_plains","minecraft:village_savanna","minecraft:village_snowy","minecraft:village_taiga"]),e.register("worldgen/configured_surface_builder",["minecraft:badlands","minecraft:basalt_deltas","minecraft:crimson_forest","minecraft:desert","minecraft:end","minecraft:eroded_badlands","minecraft:frozen_ocean","minecraft:full_sand","minecraft:giant_tree_taiga","minecraft:grass","minecraft:gravelly_mountain","minecraft:ice_spikes","minecraft:mountain","minecraft:mycelium","minecraft:nether","minecraft:nope","minecraft:ocean_sand","minecraft:shattered_savanna","minecraft:soul_sand_valley","minecraft:stone","minecraft:swamp","minecraft:warped_forest","minecraft:wooded_badlands"]),e.register("biome_category",["beach","desert","extreme_hills","forest","icy","jungle","mesa","mushroom","nether","none","ocean","plains","river","savanna","swamp","taiga","the_end","underground"]),e.register("heightmap_type",["MOTION_BLOCKING","MOTION_BLOCKING_NO_LEAVES","OCEAN_FLOOR","OCEAN_FLOOR_WG","WORLD_SURFACE","WORLD_SURFACE_WG"]),e.register("generation_step",["air","liquid"]),e.register("loot_context_type",["minecraft:empty","minecraft:chest","minecraft:command","minecraft:selector","minecraft:fishing","minecraft:entity","minecraft:gift","minecraft:barter","minecraft:advancement_reward","minecraft:advancement_entity","minecraft:generic","minecraft:block"]),e.register("banner_pattern",["base","square_bottom_left","square_bottom_right","square_top_left","square_top_right","stripe_bottom","stripe_top","stripe_left","stripe_right","stripe_center","stripe_middle","stripe_downright","stripe_downleft","small_stripes","cross","straight_cross","triangle_bottom","triangle_top","triangles_bottom","triangles_top","diagonal_left","diagonal_up_right","diagonal_up_left","diagonal_right","circle","rhombus","half_vertical","half_horizontal","half_vertical_right","half_horizontal_bottom","border","curly_border","gradient","gradient_up","bricks","globe","creeper","skull","flower","mojang","piglin"]),e.register("dye_color",["white","orange","magenta","light_blue","yellow","lime","pink","gray","light_gray","cyan","purple","blue","brown","green","red","black"])};var Js={},Ys={};Object.defineProperty(Ys,"__esModule",{value:!0}),Ys.initAdvancementSchemas=void 0;const Ks=Ce;Ys.initAdvancementSchemas=function(e,t){const r=Ks.Reference.bind(void 0,e),n=Ks.StringNode.bind(void 0,t),o=Ks.ChoiceNode([{type:"object",node:Ks.Opt(r("entity_predicate")),change:e=>{var t,r;return null!==(r=null===(t=e[0])||void 0===t?void 0:t.predicate)&&void 0!==r?r:{}}},{type:"list",node:Ks.ListNode(r("condition")),change:e=>[{condition:"minecraft:entity_properties",predicate:e}]}],{context:"conditions"});e.register("advancement",Ks.Mod(Ks.ObjectNode({display:Ks.Opt(Ks.Mod(Ks.ObjectNode({icon:Ks.ObjectNode({item:n({validator:"resource",params:{pool:"item"}}),nbt:Ks.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}}))}),title:r("text_component"),description:r("text_component"),background:Ks.Opt(n()),frame:Ks.Opt(n({enum:["task","challenge","goal"]})),show_toast:Ks.Opt(Ks.BooleanNode()),announce_to_chat:Ks.Opt(Ks.BooleanNode()),hidden:Ks.Opt(Ks.BooleanNode())}),{default:()=>({icon:{item:"minecraft:stone"},title:"",description:""})})),parent:Ks.Opt(n({validator:"resource",params:{pool:"$advancement"}})),criteria:Ks.MapNode(n(),r("advancement_criteria")),requirements:Ks.Opt(Ks.ListNode(Ks.ListNode(n()))),rewards:Ks.Opt(Ks.ObjectNode({function:Ks.Opt(n({validator:"resource",params:{pool:"$function"}})),loot:Ks.Opt(Ks.ListNode(n({validator:"resource",params:{pool:"$loot_table"}}))),recipes:Ks.Opt(Ks.ListNode(n({validator:"resource",params:{pool:"$recipe"}}))),experience:Ks.Opt(Ks.NumberNode({integer:!0}))}))},{context:"advancement"}),{default:()=>({criteria:{requirement:{trigger:"minecraft:location"}}})})),e.register("advancement_criteria",Ks.ObjectNode({trigger:n({validator:"resource",params:{pool:t.get("advancement_trigger")}}),conditions:Ks.Opt(Ks.ObjectNode({player:Ks.Mod(o,{enabled:e=>"minecraft:impossible"!==e.pop().push("trigger").get()}),[Ks.Switch]:["pop",{push:"trigger"}],[Ks.Case]:{"minecraft:bee_nest_destroyed":{block:Ks.Opt(n({validator:"resource",params:{pool:"block"}})),num_bees_inside:Ks.Opt(Ks.NumberNode({integer:!0})),item:Ks.Opt(r("item_predicate"))},"minecraft:bred_animals":{parent:o,partner:o,child:o},"minecraft:brewed_potion":{potion:Ks.Opt(n({validator:"resource",params:{pool:"potion"}}))},"minecraft:changed_dimension":{from:Ks.Opt(n({validator:"resource",params:{pool:"$dimension"}})),to:Ks.Opt(n({validator:"resource",params:{pool:"$dimension"}}))},"minecraft:channeled_lightning":{victims:Ks.Opt(Ks.ListNode(o))},"minecraft:construct_beacon":{level:r("int_bounds")},"minecraft:consume_item":{item:Ks.Opt(r("item_predicate"))},"minecraft:cured_zombie_villager":{villager:o,zombie:o},"minecraft:effects_changed":{effects:Ks.Opt(Ks.MapNode(n({validator:"resource",params:{pool:"mob_effect"}}),Ks.ObjectNode({amplifier:r("int_bounds"),duration:r("int_bounds")}))),source:Ks.Opt(o)},"minecraft:enter_block":{block:Ks.Opt(n({validator:"resource",params:{pool:"block"}})),state:Ks.Opt(Ks.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},"minecraft:enchanted_item":{levels:r("int_bounds"),item:Ks.Opt(r("item_predicate"))},"minecraft:entity_hurt_player":{damage:Ks.Opt(r("damage_predicate"))},"minecraft:entity_killed_player":{entity:o,killing_blow:Ks.Opt(r("damage_source_predicate"))},"minecraft:filled_bucket":{item:Ks.Opt(r("item_predicate"))},"minecraft:fishing_rod_hooked":{entity:o,item:Ks.Opt(r("item_predicate"))},"minecraft:hero_of_the_village":{location:Ks.Opt(r("location_predicate"))},"minecraft:inventory_changed":{slots:Ks.Opt(Ks.ObjectNode({empty:r("int_bounds"),occupied:r("int_bounds"),full:r("int_bounds")})),items:Ks.Opt(Ks.ListNode(r("item_predicate")))},"minecraft:item_durability_changed":{delta:r("int_bounds"),durability:r("int_bounds"),item:Ks.Opt(r("item_predicate"))},"minecraft:item_used_on_block":{item:Ks.Opt(r("item_predicate")),location:Ks.Opt(r("location_predicate"))},"minecraft:killed_by_crossbow":{unique_entity_types:r("int_bounds"),victims:Ks.Opt(Ks.ListNode(o))},"minecraft:levitation":{distance:r("distance_predicate"),duration:r("int_bounds")},"minecraft:lightning_strike":{lightning:o,bystander:o},"minecraft:location":{location:Ks.Opt(r("location_predicate"))},"minecraft:nether_travel":{distance:r("distance_predicate"),entered:Ks.Opt(r("location_predicate")),exited:Ks.Opt(r("location_predicate"))},"minecraft:placed_block":{block:Ks.Opt(n({validator:"resource",params:{pool:"block"}})),state:Ks.Opt(Ks.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})),item:Ks.Opt(r("item_predicate")),location:Ks.Opt(r("location_predicate"))},"minecraft:player_generates_container_loot":{loot_table:n({validator:"resource",params:{pool:"$loot_table"}})},"minecraft:player_hurt_entity":{damage:Ks.Opt(r("damage_predicate")),entity:o},"minecraft:player_interacted_with_entity":{item:Ks.Opt(r("item_predicate")),entity:o},"minecraft:player_killed_entity":{entity:o,killing_blow:Ks.Opt(r("damage_source_predicate"))},"minecraft:recipe_unlocked":{recipe:n({validator:"resource",params:{pool:"$recipe"}})},"minecraft:slept_in_bed":{location:Ks.Opt(r("location_predicate"))},"minecraft:slide_down_block":{block:Ks.Opt(n({validator:"resource",params:{pool:"block"}}))},"minecraft:shot_crossbow":{item:Ks.Opt(r("item_predicate"))},"minecraft:summoned_entity":{entity:o},"minecraft:tame_animal":{entity:o},"minecraft:target_hit":{projectile:o,shooter:o,signal_strength:r("int_bounds")},"minecraft:thrown_item_picked_up_by_entity":{entity:Ks.Opt(r("entity_predicate")),item:Ks.Opt(r("item_predicate"))},"minecraft:used_ender_eye":{distance:r("float_bounds")},"minecraft:used_totem":{item:Ks.Opt(r("item_predicate"))},"minecraft:using_item":{item:Ks.Opt(r("item_predicate"))},"minecraft:villager_trade":{villager:Ks.Opt(r("entity_predicate")),item:Ks.Opt(r("item_predicate"))},"minecraft:voluntary_exile":{location:r("location_predicate")}}},{context:"criterion"}))},{category:"predicate",context:"criterion"}))};var Qs={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initCommonSchemas=e.IntProvider=e.FloatProvider=e.NoiseSettingsPresets=e.DefaultNoiseSettings=e.DimensionTypePresets=e.DefaultDimensionType=e.FunctionCases=e.ConditionCases=void 0;const t=Ce;e.DefaultDimensionType={ultrawarm:!1,natural:!0,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!0,has_raids:!0,has_skylight:!0,has_ceiling:!1,coordinate_scale:1,ambient_light:0,logical_height:256,infiniburn:"minecraft:infiniburn_overworld",min_y:0,height:256},e.DefaultNoiseSettings={name:"minecraft:overworld",bedrock_roof_position:-10,bedrock_floor_position:0,sea_level:63,disable_mob_generation:!1,noise_caves_enabled:!0,aquifers_enabled:!0,deepslate_enabled:!0,noise:{min_y:0,height:256,density_factor:1,density_offset:-.46875,simplex_surface_noise:!0,random_density_offset:!0,size_horizontal:1,size_vertical:2,sampling:{xz_scale:1,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-10,size:3,offset:0},bottom_slide:{target:-30,size:0,offset:0}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},e.initCommonSchemas=function(r,n){const o=t.StringNode.bind(void 0,n),i=t.Reference.bind(void 0,r);r.register("block_state",t.Mod(t.ObjectNode({Name:o({validator:"resource",params:{pool:"block"}}),Properties:t.Opt(t.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"Name"}]}}}))},{context:"block_state"}),{default:()=>({Name:"minecraft:stone"})})),r.register("fluid_state",t.Mod(t.ObjectNode({Name:o({validator:"resource",params:{pool:"fluid"}}),Properties:t.Opt(t.MapNode(o(),o()))},{context:"fluid_state"}),{default:()=>({Name:"minecraft:water",Properties:{level:"0"}})})),r.register("block_pos",t.Mod(t.ListNode(t.NumberNode({integer:!0}),{minLength:3,maxLength:3}),{default:()=>[0,0,0]}));const a=e=>t.Opt(t.ChoiceNode([{type:"number",node:t.NumberNode({integer:e}),change:e=>{var t,r;return void 0===e?0:null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:0}},{type:"object",node:t.ObjectNode({min:t.Opt(t.NumberNode({integer:e})),max:t.Opt(t.NumberNode({integer:e}))},{context:"range"}),change:e=>({min:null!=e?e:0,max:null!=e?e:0})}]));r.register("int_bounds",a(!0)),r.register("float_bounds",a()),r.register("int_range",t.ChoiceNode([{type:"object",node:t.ObjectNode({min:t.Opt(i("number_provider")),max:t.Opt(i("number_provider"))})},{type:"number",node:t.NumberNode({integer:!0})}],{context:"range"}));const c=(e,r,n,i,a,c,l)=>{let d={};a&&Object.keys(l[a]).forEach((e=>{d[e]=t.Mod(l[a][e],{enabled:e=>void 0===e.push("type").get()})}));const _=t.ObjectNode(s({type:t.Mod(t.Opt(o({validator:"resource",params:{pool:e}})),{hidden:()=>!0}),[t.Switch]:[{push:"type"}],[t.Case]:l},d),{context:c,disableSwitchContext:!0}),m=[{type:r,node:l[i][n]}];return a&&m.push({type:"object",priority:-1,node:_}),Object.keys(l).forEach((e=>{m.push({type:e,match:t=>{var r;if("minecraft:"+(null===(r=null==t?void 0:t.type)||void 0===r?void 0:r.replace(/^minecraft:/,""))===e)return!0;const n=t?Object.keys(t):[];return"object"==typeof t&&(0===(null==n?void 0:n.length)||1===(null==n?void 0:n.length)&&"type"===(null==n?void 0:n[0]))},node:_,change:t=>({type:e})})})),t.ChoiceNode(m,{context:c,choiceContext:`${c}.type`})};r.register("number_provider",c("loot_number_provider_type","number","value","minecraft:constant","minecraft:uniform","number_provider",{"minecraft:constant":{value:t.NumberNode()},"minecraft:uniform":{min:i("number_provider"),max:i("number_provider")},"minecraft:binomial":{n:i("number_provider"),p:i("number_provider")},"minecraft:score":{target:i("scoreboard_name_provider"),score:o({validator:"objective"}),scale:t.Opt(t.NumberNode())}})),r.register("scoreboard_name_provider",c("loot_score_provider_type","string","target","minecraft:context",null,"score_provider",{"minecraft:fixed":{name:o({validator:"entity",params:{amount:"multiple",type:"entities",isScoreHolder:!0}})},"minecraft:context":{target:t.Mod(o({enum:"entity_source"}),{default:()=>"this"})}})),r.register("nbt_provider",c("loot_nbt_provider_type","string","target","minecraft:context",null,"nbt_provider",{"minecraft:storage":{source:o({validator:"resource",params:{pool:"$storage"}})},"minecraft:context":{target:t.Mod(o({enum:"copy_source"}),{default:()=>"this"})}})),e.FloatProvider=e=>c("float_provider_type","number","value","minecraft:constant",null,"float_provider",{"minecraft:constant":{value:t.NumberNode(e)},"minecraft:uniform":{value:t.ObjectNode({min_inclusive:t.NumberNode(e),max_exclusive:t.NumberNode(e)})},"minecraft:clamped_normal":{value:t.ObjectNode({min:t.NumberNode(),max:t.NumberNode(),mean:t.NumberNode(),deviation:t.NumberNode()})},"minecraft:trapezoid":{value:t.ObjectNode({min:t.NumberNode(),max:t.NumberNode(),plateau:t.NumberNode()})}}),r.register("float_provider",e.FloatProvider()),e.IntProvider=e=>c("int_provider_type","number","value","minecraft:constant",null,"int_provider",{"minecraft:constant":{value:t.NumberNode(s({integer:!0},e))},"minecraft:uniform":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e))})},"minecraft:biased_to_bottom":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e))})},"minecraft:clamped":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e)),source:i("int_provider")})}}),r.register("int_provider",e.IntProvider()),r.register("vertical_anchor",t.ChoiceNode(["absolute","above_bottom","below_top"].map((e=>({type:e,match:t=>void 0!==(null==t?void 0:t[e]),change:t=>{var r,n,o;return{[e]:null!==(o=null!==(n=null!==(r=t.absolute)&&void 0!==r?r:t.above_bottom)&&void 0!==n?n:t.below_top)&&void 0!==o?o:0}},node:t.ObjectNode({[e]:t.NumberNode({integer:!0,min:-2048,max:2047})})}))),{context:"vertical_anchor"})),r.register("height_provider",c("height_provider_type","number","value","minecraft:constant",null,"height_provider",{"minecraft:constant":{value:i("vertical_anchor")},"minecraft:uniform":{min_inclusive:i("vertical_anchor"),max_inclusive:i("vertical_anchor")},"minecraft:biased_to_bottom":{min_inclusive:i("vertical_anchor"),max_inclusive:i("vertical_anchor"),inner:t.Opt(t.NumberNode({integer:!0,min:1}))},"minecraft:very_biased_to_bottom":{min_inclusive:i("vertical_anchor"),max_inclusive:i("vertical_anchor"),inner:t.Opt(t.NumberNode({integer:!0,min:1}))},"minecraft:trapezoid":{min_inclusive:i("vertical_anchor"),max_inclusive:i("vertical_anchor"),plateau:t.Opt(t.NumberNode({integer:!0}))}})),e.ConditionCases=(e=o({enum:"entity_source"}))=>({"minecraft:alternative":{terms:t.ListNode(i("condition"))},"minecraft:block_state_property":{block:o({validator:"resource",params:{pool:"block"}}),properties:t.MapNode(o(),o(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})},"minecraft:damage_source_properties":{predicate:i("damage_source_predicate")},"minecraft:entity_properties":{entity:e,predicate:i("entity_predicate")},"minecraft:entity_scores":{entity:e,scores:t.MapNode(o({validator:"objective"}),i("int_range"))},"minecraft:inverted":{term:i("condition")},"minecraft:killed_by_player":{inverse:t.Opt(t.BooleanNode())},"minecraft:location_check":{offsetX:t.Opt(t.NumberNode({integer:!0})),offsetY:t.Opt(t.NumberNode({integer:!0})),offsetZ:t.Opt(t.NumberNode({integer:!0})),predicate:i("location_predicate")},"minecraft:match_tool":{predicate:i("item_predicate")},"minecraft:random_chance":{chance:t.NumberNode({min:0,max:1})},"minecraft:random_chance_with_looting":{chance:t.NumberNode({min:0,max:1}),looting_multiplier:t.NumberNode()},"minecraft:reference":{name:o({validator:"resource",params:{pool:"$predicate"}})},"minecraft:table_bonus":{enchantment:o({validator:"resource",params:{pool:"enchantment"}}),chances:t.ListNode(t.NumberNode({min:0,max:1}))},"minecraft:time_check":{value:i("int_range"),period:t.Opt(t.NumberNode({integer:!0}))},"minecraft:value_check":{value:i("number_provider"),range:i("int_range")},"minecraft:weather_check":{raining:t.Opt(t.BooleanNode()),thundering:t.Opt(t.BooleanNode())}}),e.FunctionCases=(e,r=o({enum:"copy_source"}),a=o({enum:"entity_source"}))=>{const c={"minecraft:apply_bonus":{enchantment:o({validator:"resource",params:{pool:"enchantment"}}),formula:o({validator:"resource",params:{pool:n.get("loot_table_apply_bonus_formula")}}),parameters:t.Mod(t.ObjectNode({bonusMultiplier:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:uniform_bonus_count"===e.pop().push("formula").get()}),extra:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()}),probability:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()})}),{enabled:e=>"minecraft:ore_drops"!==e.push("formula").get()})},"minecraft:copy_name":{source:r},"minecraft:copy_nbt":{source:i("nbt_provider"),ops:t.ListNode(t.ObjectNode({source:o({validator:"nbt_path",params:{category:{getter:"copy_source",path:["pop","pop","pop",{push:"source"}]}}}),target:o({validator:"nbt_path",params:{category:"minecraft:item"}}),op:o({enum:["replace","append","merge"]})},{context:"nbt_operation"}))},"minecraft:copy_state":{block:o({validator:"resource",params:{pool:"block"}}),properties:t.ListNode(o({validator:"block_state_key",params:{id:["pop","pop",{push:"block"}]}}))},"minecraft:enchant_randomly":{enchantments:t.Opt(t.ListNode(o({validator:"resource",params:{pool:"enchantment"}})))},"minecraft:enchant_with_levels":{levels:i("number_provider"),treasure:t.Opt(t.BooleanNode())},"minecraft:exploration_map":{destination:t.Opt(o({enum:"map_feature"})),decoration:t.Opt(o({enum:"map_decoration"})),zoom:t.Opt(t.NumberNode({integer:!0})),search_radius:t.Opt(t.NumberNode({integer:!0})),skip_existing_chunks:t.Opt(t.BooleanNode())},"minecraft:fill_player_head":{entity:a},"minecraft:limit_count":{limit:i("int_range")},"minecraft:looting_enchant":{count:i("number_provider"),limit:t.Opt(t.NumberNode({integer:!0}))},"minecraft:set_attributes":{modifiers:t.ListNode(i("attribute_modifier"))},"minecraft:set_banner_pattern":{patterns:t.ListNode(t.ObjectNode({pattern:o({enum:"banner_pattern"}),color:o({enum:"dye_color"})})),append:t.Opt(t.BooleanNode())},"minecraft:set_contents":{entries:t.ListNode(i("loot_entry"))},"minecraft:set_count":{count:i("number_provider"),add:t.Opt(t.BooleanNode())},"minecraft:set_damage":{damage:i("number_provider"),add:t.Opt(t.BooleanNode())},"minecraft:set_enchantments":{enchantments:t.MapNode(o({validator:"resource",params:{pool:"enchantment"}}),i("number_provider")),add:t.Opt(t.BooleanNode())},"minecraft:set_loot_table":{name:o({validator:"resource",params:{pool:"$loot_table"}}),seed:t.Opt(t.NumberNode({integer:!0}))},"minecraft:set_lore":{entity:t.Opt(a),lore:t.ListNode(i("text_component")),replace:t.Opt(t.BooleanNode())},"minecraft:set_name":{entity:t.Opt(a),name:t.Opt(i("text_component"))},"minecraft:set_nbt":{tag:o({validator:"nbt",params:{registry:{category:"minecraft:item"}}})},"minecraft:set_stew_effect":{effects:t.Opt(t.ListNode(t.ObjectNode({type:o({validator:"resource",params:{pool:"mob_effect"}}),duration:i("number_provider")})))}},l={};return n.get("loot_function_type").forEach((t=>{l[t]=s(s({},c[t]),e)})),l},e.DimensionTypePresets=r=>t.ObjectOrPreset(o({validator:"resource",params:{pool:"$dimension_type"}}),r,{"minecraft:overworld":e.DefaultDimensionType,"minecraft:the_nether":{name:"minecraft:the_nether",ultrawarm:!0,natural:!1,shrunk:!0,piglin_safe:!0,respawn_anchor_works:!0,bed_works:!1,has_raids:!1,has_skylight:!1,has_ceiling:!0,ambient_light:.1,fixed_time:18e3,logical_height:128,effects:"minecraft:the_nether",infiniburn:"minecraft:infiniburn_nether",min_y:0,height:256},"minecraft:the_end":{name:"minecraft:the_end",ultrawarm:!1,natural:!1,shrunk:!1,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!1,has_raids:!0,has_skylight:!1,has_ceiling:!1,ambient_light:0,fixed_time:6e3,logical_height:256,effects:"minecraft:the_end",infiniburn:"minecraft:infiniburn_end",min_y:0,height:256}}),e.NoiseSettingsPresets=r=>t.ObjectOrPreset(o({validator:"resource",params:{pool:"$worldgen/noise_settings"}}),r,{"minecraft:overworld":e.DefaultNoiseSettings,"minecraft:nether":{name:"minecraft:nether",bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,disable_mob_generation:!0,noise_caves_enabled:!1,aquifers_enabled:!1,deepslate_enabled:!1,noise:{min_y:0,height:128,density_factor:0,density_offset:.019921875,simplex_surface_noise:!1,random_density_offset:!1,size_horizontal:1,size_vertical:2,sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60},top_slide:{target:120,size:3,offset:0},bottom_slide:{target:320,size:4,offset:-1}},default_block:{Name:"minecraft:netherrack"},default_fluid:{Name:"minecraft:lava",Properties:{level:"0"}}},"minecraft:end":{name:"minecraft:end",bedrock_roof_position:-10,bedrock_floor_position:-10,sea_level:0,disable_mob_generation:!0,noise_caves_enabled:!1,aquifers_enabled:!1,deepslate_enabled:!1,noise:{min_y:0,height:128,density_factor:0,density_offset:0,simplex_surface_noise:!0,random_density_offset:!1,island_noise_override:!0,size_horizontal:2,size_vertical:1,sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-3e3,size:64,offset:-46},bottom_slide:{target:-30,size:7,offset:1}},default_block:{Name:"minecraft:end_stone"},default_fluid:{Name:"minecraft:air"}},"minecraft:amplified":{name:"minecraft:amplified",bedrock_roof_position:-10,bedrock_floor_position:0,sea_level:63,disable_mob_generation:!1,noise_caves_enabled:!0,aquifers_enabled:!0,deepslate_enabled:!0,noise:{min_y:0,height:256,density_factor:1,density_offset:-.46875,simplex_surface_noise:!0,random_density_offset:!0,amplified:!0,size_horizontal:1,size_vertical:2,sampling:{xz_scale:1,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-10,size:3,offset:0},bottom_slide:{target:-30,size:0,offset:0}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},"minecraft:caves":{name:"minecraft:caves",bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,disable_mob_generation:!0,noise_caves_enabled:!1,aquifers_enabled:!1,deepslate_enabled:!1,noise:{min_y:0,height:128,density_factor:0,density_offset:.019921875,simplex_surface_noise:!1,random_density_offset:!1,size_horizontal:1,size_vertical:2,sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60},top_slide:{target:120,size:3,offset:0},bottom_slide:{target:320,size:4,offset:-1}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}},"minecraft:floating_islands":{name:"minecraft:floating_islands",bedrock_roof_position:-10,bedrock_floor_position:-10,sea_level:0,disable_mob_generation:!0,noise_caves_enabled:!1,aquifers_enabled:!1,deepslate_enabled:!1,noise:{min_y:0,height:128,density_factor:0,density_offset:0,simplex_surface_noise:!0,random_density_offset:!1,island_noise_override:!0,size_horizontal:2,size_vertical:1,sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160},top_slide:{target:-3e3,size:64,offset:-46},bottom_slide:{target:-30,size:7,offset:1}},default_block:{Name:"minecraft:stone"},default_fluid:{Name:"minecraft:water",Properties:{level:"0"}}}})}}(Qs);var ec={};Object.defineProperty(ec,"__esModule",{value:!0}),ec.initConditionSchemas=void 0;const tc=Ce,rc=Qs;ec.initConditionSchemas=function(e,t){const r=tc.Reference.bind(void 0,e),n=tc.StringNode.bind(void 0,t);e.register("predicate",tc.ObjectOrList(r("condition"),{choiceContext:"condition"})),e.register("condition",tc.Mod(tc.ObjectNode({condition:n({validator:"resource",params:{pool:"loot_condition_type"}}),[tc.Switch]:[{push:"condition"}],[tc.Case]:rc.ConditionCases()},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:entity_properties",entity:"this"})}))};var nc={};Object.defineProperty(nc,"__esModule",{value:!0}),nc.initDimensionSchemas=void 0;const oc=Ce,ic=Qs;nc.initDimensionSchemas=function(e,t){const r=oc.Reference.bind(void 0,e),n=oc.StringNode.bind(void 0,t),o=e=>oc.Mod(e,{enabled:e=>void 0===e.push("preset").get()});e.register("dimension",oc.Mod(oc.ObjectNode({type:ic.DimensionTypePresets(r("dimension_type")),generator:oc.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/chunk_generator"}}),[oc.Switch]:[{push:"type"}],[oc.Case]:{"minecraft:noise":{seed:oc.NumberNode({integer:!0}),settings:ic.NoiseSettingsPresets(r("noise_settings")),biome_source:oc.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/biome_source"}}),[oc.Switch]:[{push:"type"}],[oc.Case]:{"minecraft:fixed":{biome:n({validator:"resource",params:{pool:"$worldgen/biome"}})},"minecraft:multi_noise":{seed:oc.NumberNode({integer:!0}),preset:oc.Opt(n({enum:["nether"]})),altitude_noise:o(r("generator_biome_noise")),temperature_noise:o(r("generator_biome_noise")),humidity_noise:o(r("generator_biome_noise")),weirdness_noise:o(r("generator_biome_noise")),biomes:o(oc.Mod(oc.ListNode(r("generator_biome")),{default:()=>[{biome:"minecraft:plains"}]}))},"minecraft:checkerboard":{scale:oc.Opt(oc.NumberNode({integer:!0,min:0,max:62})),biomes:oc.ListNode(n({validator:"resource",params:{pool:"$worldgen/biome"}}))},"minecraft:the_end":{seed:oc.NumberNode({integer:!0})},"minecraft:vanilla_layered":{seed:oc.NumberNode({integer:!0}),large_biomes:oc.Opt(oc.BooleanNode()),legacy_biome_init_layer:oc.Opt(oc.BooleanNode())}}},{category:"predicate",disableSwitchContext:!0})},"minecraft:flat":{settings:oc.ObjectNode({biome:oc.Opt(n({validator:"resource",params:{pool:"$worldgen/biome"}})),lakes:oc.Opt(oc.BooleanNode()),features:oc.Opt(oc.BooleanNode()),layers:oc.ListNode(r("generator_layer")),structures:r("generator_structures")})}}},{disableSwitchContext:!0})},{category:"pool",context:"dimension"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:fixed",seed:e,biome:"minecraft:plains"},settings:"minecraft:overworld"}}}})),e.register("generator_biome",oc.Mod(oc.ObjectNode({biome:n({validator:"resource",params:{pool:"$worldgen/biome"}}),parameters:oc.ObjectNode({altitude:oc.NumberNode(),temperature:oc.NumberNode(),humidity:oc.NumberNode(),weirdness:oc.NumberNode(),offset:oc.NumberNode()})},{context:"generator_biome"}),{default:()=>({biome:"minecraft:plains",parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}})})),e.register("generator_biome_noise",oc.Mod(oc.ObjectNode({firstOctave:oc.NumberNode({integer:!0}),amplitudes:oc.ListNode(oc.NumberNode())},{context:"generator_biome_noise"}),{default:()=>({firstOctave:-7,amplitudes:[1,1]})}))};var ac={};Object.defineProperty(ac,"__esModule",{value:!0}),ac.initDimensionTypeSchemas=void 0;const sc=Ce,cc=Qs;ac.initDimensionTypeSchemas=function(e,t){const r=sc.StringNode.bind(void 0,t);e.register("dimension_type",sc.Mod(sc.ObjectNode({name:sc.Mod(r({validator:"resource",params:{pool:"$dimension_type",isDefinition:!0}}),{enabled:e=>e.getArray().length>0}),ultrawarm:sc.BooleanNode(),natural:sc.BooleanNode(),piglin_safe:sc.BooleanNode(),respawn_anchor_works:sc.BooleanNode(),bed_works:sc.BooleanNode(),has_raids:sc.BooleanNode(),has_skylight:sc.BooleanNode(),has_ceiling:sc.BooleanNode(),coordinate_scale:sc.NumberNode({min:1e-5,max:3e7}),ambient_light:sc.NumberNode(),fixed_time:sc.Opt(sc.NumberNode({integer:!0})),logical_height:sc.NumberNode({integer:!0,min:0,max:4096}),effects:sc.Opt(r({enum:["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]})),infiniburn:r({validator:"resource",params:{pool:"$tag/block"}}),min_y:sc.NumberNode({integer:!0,min:-2048,max:2047}),height:sc.NumberNode({integer:!0,min:0,max:4096})},{context:"dimension_type"}),(e=>({default:()=>cc.DefaultDimensionType,validate:(t,r,n,o)=>((null==(r=e.validate(t,r,n,o))?void 0:r.min_y)+(null==r?void 0:r.height)>2047&&n.add(t.push("height"),"error.min_y_plus_height",2047),(null==r?void 0:r.logical_height)>(null==r?void 0:r.height)&&n.add(t.push("logical_height"),"error.logical_height"),(null==r?void 0:r.height)%16!=0&&n.add(t.push("height"),"error.height_multiple",16),(null==r?void 0:r.min_y)%16!=0&&n.add(t.push("min_y"),"error.min_y_multiple",16),r)}))))};var lc={};Object.defineProperty(lc,"__esModule",{value:!0}),lc.initItemModifierSchemas=void 0;const dc=Ce,_c=Qs;lc.initItemModifierSchemas=function(e,t){const r=dc.Reference.bind(void 0,e),n=dc.StringNode.bind(void 0,t);e.register("item_modifier",dc.ObjectOrList(r("function"),{choiceContext:"function"}));const o={conditions:dc.Opt(dc.ListNode(r("condition")))};e.register("function",dc.Mod(dc.ObjectNode({function:n({validator:"resource",params:{pool:"loot_function_type"}}),[dc.Switch]:[{push:"function"}],[dc.Case]:_c.FunctionCases(o)},{category:"function",context:"function"}),{default:()=>[{function:"minecraft:set_count",count:1}]}))};var mc={},pc={};Object.defineProperty(pc,"__esModule",{value:!0}),pc.LootFunctions=pc.LootConditions=pc.LootCopySources=pc.LootEntitySources=pc.LootTableTypes=void 0,pc.LootTableTypes=new Map([["minecraft:advancement_entity",{requires:[7,8],allows:[]}],["minecraft:advancement_reward",{requires:[7,8],allows:[]}],["minecraft:barter",{requires:[8],allows:[]}],["minecraft:block",{requires:[1,7,9],allows:[0,4,8]}],["minecraft:chest",{requires:[7],allows:[8]}],["minecraft:command",{requires:[7],allows:[8]}],["minecraft:empty",{requires:[],allows:[]}],["minecraft:entity",{requires:[2,7,8],allows:[3,5,6]}],["minecraft:fishing",{requires:[7,9],allows:[8]}],["minecraft:generic",{requires:[2,0,1,3,4,5,6,7,8,9],allows:[]}],["minecraft:gift",{requires:[7,8],allows:[]}],["minecraft:selector",{requires:[7],allows:[8]}]]),pc.LootEntitySources=new Map([["direct_killer",[3]],["killer",[5]],["killer_player",[5]],["this",[8]]]),pc.LootCopySources=new Map([["block_entity",[0]],["killer",[5]],["killer_player",[5]],["this",[8]]]),pc.LootConditions=new Map([["minecraft:alternative",[]],["minecraft:block_state_property",[1]],["minecraft:damage_source_properties",[2]],["minecraft:entity_properties",[7]],["minecraft:entity_scores",[]],["minecraft:inverted",[]],["minecraft:killed_by_player",[6]],["minecraft:location_check",[]],["minecraft:match_tool",[9]],["minecraft:random_chance",[]],["minecraft:random_chance_with_looting",[5]],["minecraft:reference",[]],["minecraft:survives_explosion",[4]],["minecraft:table_bonus",[9]],["minecraft:time_check",[]],["minecraft:weather_check",[]]]),pc.LootFunctions=new Map([["minecraft:apply_bonus",[9]],["minecraft:copy_name",[]],["minecraft:copy_nbt",[]],["minecraft:copy_state",[1]],["minecraft:enchant_randomly",[]],["minecraft:enchant_with_levels",[]],["minecraft:exploration_map",[7]],["minecraft:explosion_decay",[]],["minecraft:fill_player_head",[]],["minecraft:furnace_smelt",[]],["minecraft:limit_count",[]],["minecraft:looting_enchant",[5]],["minecraft:set_attributes",[]],["minecraft:set_banner_pattern",[]],["minecraft:set_contents",[]],["minecraft:set_count",[]],["minecraft:set_damage",[]],["minecraft:set_loot_table",[]],["minecraft:set_lore",[]],["minecraft:set_name",[]],["minecraft:set_nbt",[]],["minecraft:set_stew_effect",[]]]),Object.defineProperty(mc,"__esModule",{value:!0}),mc.initLootTableSchemas=void 0;const uc=Ce,fc=pc,hc=Qs;mc.initLootTableSchemas=function(e,t){const r=uc.Reference.bind(void 0,e),n=uc.StringNode.bind(void 0,t),o={conditions:uc.Opt(uc.ListNode(r("loot_condition")))},i=s({functions:uc.Opt(uc.ListNode(r("loot_function")))},o);function a(e,r,n){const o=[],i=n=>t.get(r).filter((t=>{var r;return(null!==(r=e.get(t))&&void 0!==r?r:[]).every((e=>n.includes(e)))}));for(const[t,{allows:a,requires:s}]of fc.LootTableTypes){const e=[...a,...s];o.push({match:e=>e.getModel().get(new uc.Path(["type"]))===t,node:n(i(e))})}return o.push({match:e=>!0,node:n(r)}),uc.SwitchNode(o)}const c=a(fc.LootConditions,"loot_condition_type",(e=>n({validator:"resource",params:{pool:e instanceof Array?e:"loot_condition_type"}}))),l=a(fc.LootFunctions,"loot_function_type",(e=>n({validator:"resource",params:{pool:e instanceof Array?e:"loot_function_type"}}))),d=a(fc.LootEntitySources,"entity_source",(e=>n({enum:e}))),_=a(fc.LootCopySources,"copy_source",(e=>n({enum:e})));e.register("loot_table",uc.Mod(uc.ObjectNode({type:uc.Opt(n({validator:"resource",params:{pool:t.get("loot_context_type")}})),pools:uc.Opt(uc.ListNode(uc.Mod(uc.ObjectNode(s({rolls:r("number_provider"),bonus_rolls:uc.Opt(r("number_provider")),entries:uc.ListNode(r("loot_entry"))},i),{category:"pool",context:"loot_pool"}),{default:()=>({rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]})}))),functions:uc.Opt(uc.ListNode(r("loot_function")))},{context:"loot_table"}),{default:()=>({pools:[{rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]}]})}));const m={enabled:e=>{var t;return(null===(t=e.pop().get())||void 0===t?void 0:t.length)>1&&!["minecraft:alternatives","minecraft:group","minecraft:sequence"].includes(e.push("type").get())}};e.register("loot_entry",uc.Mod(uc.ObjectNode({type:n({validator:"resource",params:{pool:"loot_pool_entry_type"}}),weight:uc.Opt(uc.Mod(uc.NumberNode({integer:!0,min:1}),m)),quality:uc.Opt(uc.Mod(uc.NumberNode({integer:!0}),m)),[uc.Switch]:[{push:"type"}],[uc.Case]:{"minecraft:alternatives":s({children:uc.ListNode(r("loot_entry"))},i),"minecraft:dynamic":s({name:n()},i),"minecraft:group":s({children:uc.ListNode(r("loot_entry"))},i),"minecraft:item":s({name:n({validator:"resource",params:{pool:"item"}})},i),"minecraft:loot_table":s({name:n({validator:"resource",params:{pool:"$loot_table"}})},i),"minecraft:sequence":s({children:uc.ListNode(r("loot_entry"))},i),"minecraft:tag":s({name:n({validator:"resource",params:{pool:"$tag/item"}}),expand:uc.Opt(uc.BooleanNode())},i)}},{context:"loot_entry"}),{default:()=>({type:"minecraft:item",name:"minecraft:stone"})})),e.register("loot_function",uc.Mod(uc.ObjectNode({function:l,[uc.Switch]:[{push:"function"}],[uc.Case]:hc.FunctionCases(o,_,d)},{category:"function",context:"function"}),{default:()=>({function:"minecraft:set_count",count:1})})),e.register("loot_condition",uc.Mod(uc.ObjectNode({condition:c,[uc.Switch]:[{push:"condition"}],[uc.Case]:hc.ConditionCases(d)},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:random_chance",chance:.5})})),e.register("attribute_modifier",uc.Mod(uc.ObjectNode({attribute:n({validator:"resource",params:{pool:"attribute"}}),name:n(),amount:r("number_provider"),operation:n({enum:["addition","multiply_base","multiply_total"]}),slot:uc.StringOrList(n({enum:"slot"}))},{context:"attribute_modifier"}),{default:()=>({attribute:"minecraft:generic.max_health",name:"",amount:1,operation:"addition",slot:"mainhand"})}))};var gc={};Object.defineProperty(gc,"__esModule",{value:!0}),gc.initPackMcmetaSchemas=void 0;const bc=Ce;gc.initPackMcmetaSchemas=function(e,t){e.register("pack_mcmeta",bc.Mod(bc.ObjectNode({pack:bc.Mod(bc.ObjectNode({pack_format:bc.Mod(bc.NumberNode({integer:!0,min:7,max:7}),{default:()=>7,canUpdate:(e,t)=>7!==t,update:()=>[{name:"pack_format",params:[7],newValue:7}]}),description:bc.Reference(e,"text_component")}),{default:()=>({pack_format:7,description:""})})}),{default:()=>({pack:{pack_format:7,description:""}})}))};var vc={};Object.defineProperty(vc,"__esModule",{value:!0}),vc.initPredicatesSchemas=void 0;const yc=Ce;vc.initPredicatesSchemas=function(e,t){const r=yc.Reference.bind(void 0,e),n=yc.StringNode.bind(void 0,t),o=yc.ChoiceNode([{type:"string",node:n(),change:e=>"boolean"==typeof e||"number"==typeof e?e.toString():""},{type:"number",node:yc.NumberNode(),change:e=>"string"==typeof e?parseInt(e):0},{type:"object",node:yc.ObjectNode({min:yc.Opt(yc.NumberNode({integer:!0})),max:yc.Opt(yc.NumberNode({integer:!0}))}),change:e=>"number"==typeof e?{min:e,max:e}:{}},{type:"boolean",node:yc.BooleanNode(),change:e=>"true"===e||1===e}]);e.register("item_predicate",yc.ObjectNode({items:yc.Opt(yc.ListNode(n({validator:"resource",params:{pool:"item"}}))),tag:yc.Opt(n({validator:"resource",params:{pool:"$tag/item"}})),count:r("int_bounds"),durability:r("int_bounds"),potion:yc.Opt(n({validator:"resource",params:{pool:"potion"}})),nbt:yc.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}})),enchantments:yc.Opt(yc.ListNode(r("enchantment_predicate")))},{context:"item"})),e.register("enchantment_predicate",yc.ObjectNode({enchantment:yc.Opt(n({validator:"resource",params:{pool:"enchantment"}})),levels:r("int_bounds")},{context:"enchantment"})),e.register("block_predicate",yc.ObjectNode({blocks:yc.Opt(yc.ListNode(n({validator:"resource",params:{pool:"block"}}))),tag:yc.Opt(n({validator:"resource",params:{pool:"$tag/block"}})),nbt:yc.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:block",id:["pop",{push:"block"}]}}})),state:yc.Opt(yc.MapNode(n(),o,{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},{context:"block"})),e.register("fluid_predicate",yc.ObjectNode({fluid:yc.Opt(n({validator:"resource",params:{pool:"fluid"}})),tag:yc.Opt(n({validator:"resource",params:{pool:"$tag/fluid"}})),state:yc.Opt(yc.MapNode(n(),o))},{context:"fluid"})),e.register("location_predicate",yc.ObjectNode({position:yc.Opt(yc.ObjectNode({x:r("float_bounds"),y:r("float_bounds"),z:r("float_bounds")})),biome:yc.Opt(n({validator:"resource",params:{pool:"$worldgen/biome"}})),feature:yc.Opt(n({enum:t.get("worldgen/structure_feature").map((e=>e.slice(10)))})),dimension:yc.Opt(n({validator:"resource",params:{pool:"$dimension"}})),light:yc.Opt(yc.ObjectNode({light:r("int_bounds")})),smokey:yc.Opt(yc.BooleanNode()),block:yc.Opt(r("block_predicate")),fluid:yc.Opt(r("fluid_predicate"))},{context:"location"})),e.register("statistic_predicate",yc.ObjectNode({type:n({validator:"resource",params:{pool:"stat_type"}}),stat:n(),value:r("int_bounds"),[yc.Switch]:[{push:"type"}],[yc.Case]:{"minecraft:mined":{stat:n({validator:"resource",params:{pool:"block"}})},"minecraft:crafted":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:used":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:broken":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:picked_up":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:dropped":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:killed":{stat:n({validator:"resource",params:{pool:"entity_type"}})},"minecraft:killed_by":{stat:n({validator:"resource",params:{pool:"entity_type"}})},"minecraft:custom":{stat:n({validator:"resource",params:{pool:"custom_stat"}})}}})),e.register("player_predicate",yc.ObjectNode({gamemode:yc.Opt(n({enum:"gamemode"})),level:r("int_bounds"),advancements:yc.Opt(yc.MapNode(n({validator:"resource",params:{pool:"$advancement"}}),yc.ChoiceNode([{type:"boolean",node:yc.BooleanNode(),change:e=>!0},{type:"object",node:yc.MapNode(n(),yc.BooleanNode())}]))),recipes:yc.Opt(yc.MapNode(n({validator:"resource",params:{pool:"$recipe"}}),yc.BooleanNode())),stats:yc.Opt(yc.ListNode(r("statistic_predicate"))),looking_at:yc.Opt(r("entity_predicate"))},{context:"player"})),e.register("status_effect_predicate",yc.ObjectNode({amplifier:r("int_bounds"),duration:r("int_bounds"),ambient:yc.Opt(yc.BooleanNode()),visible:yc.Opt(yc.BooleanNode())},{context:"status_effect"})),e.register("distance_predicate",yc.ObjectNode({x:r("float_bounds"),y:r("float_bounds"),z:r("float_bounds"),absolute:r("float_bounds"),horizontal:r("float_bounds")},{context:"distance"})),e.register("entity_predicate",yc.ObjectNode({type:yc.Opt(n({validator:"resource",params:{pool:"entity_type",allowTag:!0}})),nbt:yc.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:entity",id:["pop",{push:"type"}]}}})),team:yc.Opt(n({validator:"team"})),location:yc.Opt(r("location_predicate")),stepping_on:yc.Opt(r("location_predicate")),distance:yc.Opt(r("distance_predicate")),flags:yc.Opt(yc.ObjectNode({is_on_fire:yc.Opt(yc.BooleanNode()),is_sneaking:yc.Opt(yc.BooleanNode()),is_sprinting:yc.Opt(yc.BooleanNode()),is_swimming:yc.Opt(yc.BooleanNode()),is_baby:yc.Opt(yc.BooleanNode())})),equipment:yc.Opt(yc.MapNode(n({enum:"slot"}),r("item_predicate"))),player:yc.Opt(r("player_predicate")),vehicle:yc.Opt(r("entity_predicate")),passenger:yc.Opt(r("entity_predicate")),targeted_entity:yc.Opt(r("entity_predicate")),lightning_bolt:yc.Opt(yc.ObjectNode({blocks_set_on_fire:yc.Opt(r("int_bounds")),entity_struck:yc.Opt(r("entity_predicate"))})),fishing_hook:yc.Opt(yc.ObjectNode({in_open_water:yc.Opt(yc.BooleanNode())})),effects:yc.Opt(yc.MapNode(n({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},{context:"entity"})),e.register("damage_source_predicate",yc.ObjectNode({is_explosion:yc.Opt(yc.BooleanNode()),is_fire:yc.Opt(yc.BooleanNode()),is_magic:yc.Opt(yc.BooleanNode()),is_projectile:yc.Opt(yc.BooleanNode()),is_lightning:yc.Opt(yc.BooleanNode()),bypasses_armor:yc.Opt(yc.BooleanNode()),bypasses_invulnerability:yc.Opt(yc.BooleanNode()),bypasses_magic:yc.Opt(yc.BooleanNode()),source_entity:yc.Opt(r("entity_predicate")),direct_entity:yc.Opt(r("entity_predicate"))},{context:"damage_source"})),e.register("damage_predicate",yc.ObjectNode({dealt:r("float_bounds"),taken:r("float_bounds"),blocked:yc.Opt(yc.BooleanNode()),source_entity:yc.Opt(r("entity_predicate")),type:yc.Opt(r("damage_source_predicate"))},{context:"damage"}))};var Nc={};Object.defineProperty(Nc,"__esModule",{value:!0}),Nc.initRecipeSchemas=void 0;const kc=Ce;Nc.initRecipeSchemas=function(e,t){const r=kc.Reference.bind(void 0,e),n=kc.StringNode.bind(void 0,t);e.register("recipe",kc.Mod(kc.ObjectNode({type:n({validator:"resource",params:{pool:"recipe_serializer"}}),[kc.Switch]:[{push:"type"}],[kc.Case]:{"minecraft:crafting_shaped":{group:kc.Opt(n({enum:"recipe_group",additional:!0})),pattern:kc.ListNode(n()),key:kc.MapNode(n(),r("recipe_ingredient")),result:r("recipe_result")},"minecraft:crafting_shapeless":{group:kc.Opt(n()),ingredients:kc.ListNode(r("recipe_ingredient")),result:r("recipe_result")},"minecraft:smelting":{group:kc.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:kc.Opt(kc.NumberNode()),cookingtime:kc.Opt(kc.Mod(kc.NumberNode({integer:!0}),{default:()=>200}))},"minecraft:blasting":{group:kc.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:kc.Opt(kc.NumberNode()),cookingtime:kc.Opt(kc.Mod(kc.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:smoking":{group:kc.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:kc.Opt(kc.NumberNode()),cookingtime:kc.Opt(kc.Mod(kc.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:campfire_cooking":{group:kc.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:kc.Opt(kc.NumberNode()),cookingtime:kc.Opt(kc.Mod(kc.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:stonecutting":{group:kc.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),count:kc.NumberNode({integer:!0})},"minecraft:smithing":{group:kc.Opt(n()),base:r("recipe_ingredient_object"),addition:r("recipe_ingredient_object"),result:r("recipe_result")}}},{context:"recipe",disableSwitchContext:!0}),{default:()=>({type:"minecraft:crafting_shaped"})})),e.register("recipe_ingredient",kc.Mod(kc.ChoiceNode([{type:"object",node:r("recipe_ingredient_object"),change:e=>e[0]},{type:"list",node:kc.ListNode(r("recipe_ingredient_object")),change:e=>[e]}]),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_ingredient_object",kc.Mod(kc.ObjectNode({item:kc.Opt(n({validator:"resource",params:{pool:"item"}})),tag:kc.Opt(n({validator:"resource",params:{pool:"$tag/item"}}))}),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_result",kc.Mod(kc.ObjectNode({item:n({validator:"resource",params:{pool:"item"}}),count:kc.Opt(kc.Mod(kc.NumberNode({integer:!0}),{default:()=>1}))}),{default:()=>({item:"minecraft:stone"})}))};var wc={};Object.defineProperty(wc,"__esModule",{value:!0}),wc.initTagsSchemas=void 0;const Oc=Ce;wc.initTagsSchemas=function(e,t){const r=Oc.StringNode.bind(void 0,t),n=e=>Oc.Mod(Oc.ObjectNode({replace:Oc.Opt(Oc.BooleanNode()),values:Oc.ListNode(Oc.ChoiceNode([{type:"string",node:r({validator:"resource",params:{pool:e,allowTag:!0}}),change:e=>e.id},{type:"object",node:Oc.ObjectNode({id:r({validator:"resource",params:{pool:e,allowTag:!0,allowUnknown:!0}}),required:Oc.BooleanNode()}),change:e=>({id:e})}]))},{context:"tag"}),{default:()=>({values:[]})});e.register("block_tag",n("block")),e.register("entity_type_tag",n("entity_type")),e.register("fluid_tag",n("fluid")),e.register("function_tag",n("$function")),e.register("game_event_tag",n("game_event")),e.register("item_tag",n("item"))};var xc={};Object.defineProperty(xc,"__esModule",{value:!0}),xc.initTextComponentSchemas=void 0;const Sc=Ce;xc.initTextComponentSchemas=function(e,t){const r=Sc.Reference.bind(void 0,e),n=Sc.StringNode.bind(void 0,t),o=e=>{var t;return e instanceof Array?o(e[0]):null!==(t=null==e?void 0:e.text)&&void 0!==t?t:"object"==typeof e?"":null==e?void 0:e.toString()};e.register("text_component",Sc.Mod(Sc.ChoiceNode([{type:"object",node:r("text_component_object"),change:e=>e instanceof Array?"object"==typeof e[0]?e[0]:{text:o(e[0])}:"object"==typeof e?e:{text:o(e)}},{type:"list",node:r("text_component_list"),change:e=>[e]},{type:"string",priority:1,node:n(),change:o},{type:"number",node:Sc.NumberNode(),change:e=>{const t=parseFloat(o(e));return isFinite(t)?t:e?1:0}},{type:"boolean",node:Sc.BooleanNode(),change:e=>{const t=o(e);return"true"===t||"false"===t?"true"===t:!!t}}],{context:"text_component"}),{default:()=>({text:""})}));const i={color:Sc.Opt(n()),font:Sc.Opt(n()),bold:Sc.Opt(Sc.BooleanNode()),italic:Sc.Opt(Sc.BooleanNode()),underlined:Sc.Opt(Sc.BooleanNode()),strikethrough:Sc.Opt(Sc.BooleanNode()),obfuscated:Sc.Opt(Sc.BooleanNode()),insertion:Sc.Opt(n()),clickEvent:Sc.Opt(Sc.ObjectNode({action:n({enum:["open_url","open_file","run_command","suggest_command","change_page","copy_to_clipboard"]}),[Sc.Switch]:[{push:"action"}],[Sc.Case]:{change_page:{value:n()},copy_to_clipboard:{value:n()},open_file:{value:n()},open_url:{value:n()},run_command:{value:n({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})},suggest_command:{value:n({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})}}})),hoverEvent:Sc.Opt(Sc.ObjectNode({action:n({enum:["show_text","show_item","show_entity"]}),[Sc.Switch]:[{push:"action"}],[Sc.Case]:{show_text:{value:Sc.Opt(r("text_component")),contents:Sc.Opt(r("text_component"))},show_item:{value:Sc.Opt(n({validator:"nbt",params:{module:"util::InventoryItem"}})),contents:Sc.Opt(Sc.ObjectNode({id:n({validator:"resource",params:{pool:"item"}}),count:Sc.Opt(Sc.NumberNode({integer:!0})),tag:Sc.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"id"}]}}}))}))},show_entity:{value:Sc.Opt(Sc.ObjectNode({name:Sc.Opt(n()),type:Sc.Opt(n()),id:Sc.Opt(n())})),contents:Sc.Opt(Sc.Mod(Sc.ObjectNode({name:Sc.Opt(r("text_component")),type:n({validator:"resource",params:{pool:"entity_type"}}),id:n({validator:"uuid"})}),{default:()=>({type:"minecraft:pig",id:"00000001-0001-0001-0001-000000000001"})}))}}})),extra:Sc.Opt(r("text_component_list"))};e.register("text_component_object",Sc.Mod(Sc.ChoiceNode([{type:"text",match:e=>"object"==typeof e,change:e=>({text:""}),priority:-1,node:Sc.ObjectNode(s({text:n()},i))},{type:"translation",match:e=>void 0!==(null==e?void 0:e.translate),change:e=>({translate:""}),node:Sc.ObjectNode(s({translate:n(),with:Sc.Opt(r("text_component_list"))},i))},{type:"score",match:e=>void 0!==(null==e?void 0:e.score),change:e=>({score:{}}),node:Sc.ObjectNode(s({score:Sc.ObjectNode({name:n({validator:"entity",params:{amount:"single",type:"entities",isScoreHolder:!0}}),objective:n({validator:"objective"}),value:Sc.Opt(n())})},i))},{type:"selector",match:e=>void 0!==(null==e?void 0:e.selector),change:e=>({selector:""}),node:Sc.ObjectNode(s({selector:n({validator:"entity",params:{amount:"multiple",type:"entities"}}),separator:Sc.Opt(r("text_component"))},i))},{type:"keybind",match:e=>void 0!==(null==e?void 0:e.keybind),change:e=>({keybind:""}),node:Sc.ObjectNode(s({keybind:n({enum:"keybind",additional:!0})},i))},{type:"nbt",match:e=>void 0!==(null==e?void 0:e.nbt),change:e=>({nbt:""}),node:Sc.ObjectNode(s({nbt:n({validator:"nbt_path"}),block:Sc.Opt(n({validator:"vector",params:{dimension:3,isInteger:!0}})),entity:Sc.Opt(n({validator:"entity",params:{amount:"multiple",type:"entities"}})),storage:Sc.Opt(n({validator:"resource",params:{pool:"$storage"}})),interpret:Sc.Opt(Sc.BooleanNode()),separator:Sc.Opt(r("text_component"))},i))}],{context:"text_component_object",choiceContext:"text_component.object"}),{default:()=>({text:""})})),e.register("text_component_list",Sc.Mod(Sc.ListNode(r("text_component")),{default:()=>[{text:""}]}))};var jc={},Mc={};Object.defineProperty(Mc,"__esModule",{value:!0}),Mc.initBiomeSchemas=void 0;const Ac=Ce;Mc.initBiomeSchemas=function(e,t){const r=Ac.StringNode.bind(void 0,t);e.register("biome",Ac.Mod(Ac.ObjectNode({surface_builder:r({validator:"resource",params:{pool:"$worldgen/configured_surface_builder"}}),depth:Ac.NumberNode(),scale:Ac.NumberNode(),temperature:Ac.NumberNode(),downfall:Ac.NumberNode(),precipitation:r({enum:["none","rain","snow"]}),temperature_modifier:Ac.Opt(r({enum:["none","frozen"]})),category:r({enum:"biome_category"}),player_spawn_friendly:Ac.Opt(Ac.BooleanNode()),creature_spawn_probability:Ac.Opt(Ac.NumberNode({min:0,max:1})),effects:Ac.ObjectNode({sky_color:Ac.NumberNode({color:!0}),fog_color:Ac.NumberNode({color:!0}),water_color:Ac.NumberNode({color:!0}),water_fog_color:Ac.NumberNode({color:!0}),grass_color:Ac.Opt(Ac.NumberNode({color:!0})),foliage_color:Ac.Opt(Ac.NumberNode({color:!0})),grass_color_modifier:Ac.Opt(r({enum:["none","dark_forest","swamp"]})),ambient_sound:Ac.Opt(r()),mood_sound:Ac.Opt(Ac.ObjectNode({sound:r(),tick_delay:Ac.NumberNode({integer:!0}),block_search_extent:Ac.NumberNode({integer:!0}),offset:Ac.NumberNode()})),additions_sound:Ac.Opt(Ac.ObjectNode({sound:r(),tick_chance:Ac.NumberNode({min:0,max:1})})),music:Ac.Opt(Ac.ObjectNode({sound:r(),min_delay:Ac.NumberNode({integer:!0,min:0}),max_delay:Ac.NumberNode({integer:!0,min:0}),replace_current_music:Ac.BooleanNode()})),particle:Ac.Opt(Ac.ObjectNode({options:Ac.ObjectNode({type:r()}),probability:Ac.NumberNode({min:0,max:1})}))}),starts:Ac.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_structure_feature"}})),spawners:Ac.MapNode(r({enum:["monster","creature","ambient","underground_water_creature","water_creature","water_ambient","misc"]}),Ac.Mod(Ac.ListNode(Ac.ObjectNode({type:r({validator:"resource",params:{pool:"entity_type"}}),weight:Ac.NumberNode({integer:!0}),minCount:Ac.NumberNode({integer:!0}),maxCount:Ac.NumberNode({integer:!0})})),{category:()=>"pool",default:()=>[{type:"minecraft:bat",weight:1}]})),spawn_costs:Ac.MapNode(r({validator:"resource",params:{pool:"entity_type"}}),Ac.Mod(Ac.ObjectNode({energy_budget:Ac.NumberNode(),charge:Ac.NumberNode()},{category:"function"}),{default:()=>({energy_budget:.12,charge:1})})),carvers:Ac.MapNode(r({enum:["air","liquid"]}),Ac.Mod(Ac.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_carver"}})),{default:()=>["minecraft:cave"]})),features:Ac.ListNode(Ac.Mod(Ac.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_feature"}})),{category:()=>"predicate"}),{maxLength:10})},{context:"biome"}),{default:()=>({surface_builder:"minecraft:grass",depth:.125,scale:.05,temperature:.8,downfall:.4,precipitation:"rain",category:"plains",effects:{sky_color:7907327,fog_color:12638463,water_color:4159204,water_fog_color:329011}})}))};var Pc={};Object.defineProperty(Pc,"__esModule",{value:!0}),Pc.initCarverSchemas=void 0;const Lc=Ce,Bc=Qs;Pc.initCarverSchemas=function(e,t){const r=Lc.Reference.bind(void 0,e),n=Lc.StringNode.bind(void 0,t),o={vertical_rotation:Bc.FloatProvider(),shape:Lc.ObjectNode({distance_factor:Bc.FloatProvider(),thickness:Bc.FloatProvider(),width_smoothness:Lc.NumberNode({integer:!0,min:0}),horizontal_radius_factor:Bc.FloatProvider(),vertical_radius_default_factor:Lc.NumberNode(),vertical_radius_center_factor:Lc.NumberNode()})},i={horizontal_radius_multiplier:Bc.FloatProvider(),vertical_radius_multiplier:Bc.FloatProvider(),floor_level:Bc.FloatProvider({min:-1,max:1})};e.register("configured_carver",Lc.Mod(Lc.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/carver"}}),config:Lc.ObjectNode({probability:Lc.NumberNode({min:0,max:1}),y:r("height_provider"),yScale:Bc.FloatProvider(),lava_level:r("vertical_anchor"),aquifers_enabled:Lc.BooleanNode(),debug_settings:Lc.Opt(Lc.ObjectNode({debug_mode:Lc.Opt(Lc.BooleanNode()),air_state:Lc.Opt(r("block_state")),water_state:Lc.Opt(r("block_state")),lava_state:Lc.Opt(r("block_state")),barrier_state:Lc.Opt(r("block_state"))})),[Lc.Switch]:["pop",{push:"type"}],[Lc.Case]:{"minecraft:canyon":o,"minecraft:cave":i,"minecraft:nether_cave":i}})},{context:"carver"}),{default:()=>({type:"minecraft:cave",config:{probability:.1}})}))};var Cc={};Object.defineProperty(Cc,"__esModule",{value:!0}),Cc.initDecoratorSchemas=void 0;const zc=Ce,Tc=Qs;Cc.initDecoratorSchemas=function(e,t){const r=zc.Reference.bind(void 0,e),n=zc.StringNode.bind(void 0,t),o={count:Tc.IntProvider({min:0,max:256})};e.register("configured_decorator",zc.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/decorator"}}),config:zc.ObjectNode({[zc.Switch]:["pop",{push:"type"}],[zc.Case]:{"minecraft:carving_mask":{step:n({enum:"generation_step"})},"minecraft:cave_surface":{surface:n({enum:["floor","ceiling"]}),floor_to_ceiling_search_range:zc.NumberNode({integer:!0})},"minecraft:chance":{chance:zc.NumberNode({integer:!0,min:0})},"minecraft:count":o,"minecraft:count_extra":{count:zc.NumberNode({integer:!0,min:0}),extra_count:zc.NumberNode({integer:!0,min:0}),extra_chance:zc.NumberNode({min:0,max:1})},"minecraft:count_multilayer":o,"minecraft:count_noise":{noise_level:zc.NumberNode(),below_noise:zc.NumberNode({integer:!0}),above_noise:zc.NumberNode({integer:!0})},"minecraft:count_noise_biased":{noise_to_count_ratio:zc.NumberNode({integer:!0}),noise_factor:zc.NumberNode(),noise_offset:zc.Opt(zc.NumberNode())},"minecraft:decorated":{outer:r("configured_decorator"),inner:r("configured_decorator")},"minecraft:heightmap":{heightmap:n({enum:"heightmap_type"})},"minecraft:heightmap_spread_double":{heightmap:n({enum:"heightmap_type"})},"minecraft:lava_lake":{chance:zc.NumberNode({integer:!0,min:0})},"minecraft:range":{height:r("height_provider")},"minecraft:water_depth_threshold":{max_water_depth:zc.NumberNode({integer:!0})}}},{context:"decorator",category:"predicate"})},{context:"decorator",category:"predicate"}))};var Ic={},Rc={};Object.defineProperty(Rc,"__esModule",{value:!0}),Rc.initProcessorListSchemas=Rc.Processors=void 0;const Fc=Ce;Rc.initProcessorListSchemas=function(e,t){const r=Fc.Reference.bind(void 0,e),n=Fc.StringNode.bind(void 0,t);Rc.Processors=Fc.ChoiceNode([{type:"string",node:n({validator:"resource",params:{pool:"$worldgen/processor_list"}}),change:e=>{}},{type:"object",node:r("processor_list"),change:e=>({processors:[{processor_type:"minecraft:nop"}]})}]),e.register("processor_list",Fc.Mod(Fc.ObjectNode({processors:Fc.ListNode(r("processor"))},{context:"processor_list"}),{default:()=>({processors:[{processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]}]})})),e.register("processor",Fc.Mod(Fc.ObjectNode({processor_type:n({validator:"resource",params:{pool:"worldgen/structure_processor"}}),[Fc.Switch]:[{push:"processor_type"}],[Fc.Case]:{"minecraft:block_age":{mossiness:Fc.NumberNode()},"minecraft:block_ignore":{blocks:Fc.ListNode(r("block_state"))},"minecraft:block_rot":{integrity:Fc.NumberNode({min:0,max:1})},"minecraft:gravity":{heightmap:n({enum:"heightmap_type"}),offset:Fc.NumberNode({integer:!0})},"minecraft:protected_blocks":{value:n({validator:"resource",params:{pool:"$tag/block"}})},"minecraft:rule":{rules:Fc.ListNode(r("processor_rule"))}}},{category:"function",context:"processor"}),{default:()=>({processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]})})),e.register("processor_rule",Fc.Mod(Fc.ObjectNode({position_predicate:Fc.Opt(r("pos_rule_test")),location_predicate:r("rule_test"),input_predicate:r("rule_test"),output_state:r("block_state"),output_nbt:Fc.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:block"}}}))},{category:"predicate",context:"processor_rule"}),{default:()=>({location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}})}));const o={min_dist:Fc.Opt(Fc.NumberNode({min:0,max:255,integer:!0})),max_dist:Fc.Opt(Fc.NumberNode({min:0,max:255,integer:!0})),min_chance:Fc.Opt(Fc.NumberNode({min:0,max:1})),max_chance:Fc.Opt(Fc.NumberNode({min:0,max:1}))};e.register("pos_rule_test",Fc.ObjectNode({predicate_type:n({validator:"resource",params:{pool:"pos_rule_test"}}),[Fc.Switch]:[{push:"predicate_type"}],[Fc.Case]:{"minecraft:axis_aligned_linear_pos":s({axis:n({enum:["x","y","z"]})},o),"minecraft:linear_pos":o}},{context:"pos_rule_test",disableSwitchContext:!0})),e.register("rule_test",Fc.ObjectNode({predicate_type:n({validator:"resource",params:{pool:"rule_test"}}),[Fc.Switch]:[{push:"predicate_type"}],[Fc.Case]:{"minecraft:block_match":{block:n({validator:"resource",params:{pool:"block"}})},"minecraft:blockstate_match":{block_state:r("block_state")},"minecraft:random_block_match":{block:n({validator:"resource",params:{pool:"block"}}),probability:Fc.NumberNode({min:0,max:1})},"minecraft:random_blockstate_match":{block_state:r("block_state"),probability:Fc.NumberNode({min:0,max:1})},"minecraft:tag_match":{tag:n({validator:"resource",params:{pool:"$tag/block"}})}}},{context:"rule_test",disableSwitchContext:!0}))},Object.defineProperty(Ic,"__esModule",{value:!0}),Ic.initFeatureSchemas=void 0;const Ec=Ce,Dc=Qs,$c=Rc;Ic.initFeatureSchemas=function(e,t){const r=Ec.Reference.bind(void 0,e),n=Ec.StringNode.bind(void 0,t),o={can_replace:Ec.Opt(Ec.BooleanNode()),project:Ec.Opt(Ec.BooleanNode()),need_water:Ec.Opt(Ec.BooleanNode()),xspread:Ec.Opt(Ec.NumberNode({integer:!0,min:0})),yspread:Ec.Opt(Ec.NumberNode({integer:!0,min:0})),zspread:Ec.Opt(Ec.NumberNode({integer:!0,min:0})),tries:Ec.Opt(Ec.NumberNode({integer:!0,min:1})),state_provider:r("block_state_provider"),block_placer:r("block_placer"),whitelist:Ec.ListNode(r("block_state")),blacklist:Ec.ListNode(r("block_state"))},i={state:r("block_state"),radius:Dc.IntProvider({min:0,max:8}),half_height:Ec.NumberNode({integer:!0,min:0,max:4}),targets:Ec.ListNode(r("block_state"))},a={cap_provider:r("block_state_provider"),stem_provider:r("block_state_provider"),foliage_radius:Ec.Opt(Ec.NumberNode({integer:!0}))},s=Ec.ObjectNode({target:r("rule_test"),state:r("block_state")}),c={size:Ec.NumberNode({integer:!0,min:0,max:64}),discard_chance_on_air_exposure:Ec.NumberNode({min:0,max:1}),targets:Ec.ListNode(s)},l=Ec.ChoiceNode([{type:"string",node:n({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:r("configured_feature")}],{choiceContext:"feature"}),d={surface:n({enum:["floor","ceiling"]}),depth:Dc.IntProvider({min:1,max:128}),vertical_range:Ec.NumberNode({integer:!0,min:1,max:256}),extra_bottom_block_chance:Ec.NumberNode({min:0,max:1}),extra_edge_column_chance:Ec.NumberNode({min:0,max:1}),vegetation_chance:Ec.NumberNode({min:0,max:1}),xz_radius:Dc.IntProvider(),replaceable:n({validator:"resource",params:{pool:"$tag/block"}}),ground_state:r("block_state_provider"),vegetation_feature:l};e.register("configured_feature",Ec.Mod(Ec.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/feature"}}),config:Ec.ObjectNode({[Ec.Switch]:["pop",{push:"type"}],[Ec.Case]:{"minecraft:bamboo":{probability:Ec.NumberNode({min:0,max:1})},"minecraft:basalt_columns":{reach:Dc.IntProvider({min:0,max:3}),height:Dc.IntProvider({min:1,max:10})},"minecraft:block_pile":{state_provider:r("block_state_provider")},"minecraft:decorated":{decorator:r("configured_decorator"),feature:l},"minecraft:decorated_flower":{decorator:r("configured_decorator"),feature:l},"minecraft:delta_feature":{contents:r("block_state"),rim:r("block_state"),size:Dc.IntProvider({min:0,max:16}),rim_size:Dc.IntProvider({min:0,max:16})},"minecraft:disk":i,"minecraft:dripstone_cluster":{floor_to_ceiling_search_range:Ec.NumberNode({integer:!0,min:1,max:512}),height:Dc.IntProvider({min:0,max:128}),radius:Dc.IntProvider({min:0,max:128}),max_stalagmite_stalactite_height_diff:Ec.NumberNode({integer:!0,min:0,max:64}),height_deviation:Ec.NumberNode({integer:!0,min:1,max:64}),dripstone_block_layer_thickness:Dc.IntProvider({min:0,max:128}),density:Dc.FloatProvider({min:0,max:2}),wetness:Dc.FloatProvider({min:0,max:2}),chance_of_dripstone_column_at_max_distance_from_center:Ec.NumberNode({min:0,max:1}),max_distance_from_edge_affecting_chance_of_dripstone_column:Ec.NumberNode({integer:!0,min:1,max:64}),max_distance_from_center_affecting_height_bias:Ec.NumberNode({integer:!0,min:1,max:64})},"minecraft:end_gateway":{exact:Ec.BooleanNode(),exit:Ec.Opt(r("block_pos"))},"minecraft:end_spike":{crystal_invulnerable:Ec.Opt(Ec.BooleanNode()),crystal_beam_target:Ec.Opt(r("block_pos")),spikes:Ec.ListNode(Ec.ObjectNode({centerX:Ec.Opt(Ec.NumberNode({integer:!0})),centerZ:Ec.Opt(Ec.NumberNode({integer:!0})),radius:Ec.Opt(Ec.NumberNode({integer:!0})),height:Ec.Opt(Ec.NumberNode({integer:!0})),guarded:Ec.Opt(Ec.BooleanNode())}))},"minecraft:fill_layer":{state:r("block_state"),height:Ec.NumberNode({integer:!0,min:0,max:255})},"minecraft:flower":o,"minecraft:forest_rock":{state:r("block_state")},"minecraft:fossil":{max_empty_corners_allowed:Ec.NumberNode({integer:!0,min:0,max:7}),fossil_structures:Ec.ListNode(n({validator:"resource",params:{pool:"$structure"}})),overlay_structures:Ec.ListNode(n({validator:"resource",params:{pool:"$structure"}})),fossil_processors:$c.Processors,overlay_processors:$c.Processors},"minecraft:geode":{blocks:Ec.ObjectNode({filling_provider:r("block_state_provider"),inner_layer_provider:r("block_state_provider"),alternate_inner_layer_provider:r("block_state_provider"),middle_layer_provider:r("block_state_provider"),outer_layer_provider:r("block_state_provider"),inner_placements:Ec.ListNode(r("block_state")),cannot_replace:n({validator:"resource",params:{pool:"$tag/block"}}),invalid_blocks:n({validator:"resource",params:{pool:"$tag/block"}})}),layers:Ec.ObjectNode({filling:Ec.Opt(Ec.NumberNode({min:.01,max:50})),inner_layer:Ec.Opt(Ec.NumberNode({min:.01,max:50})),middle_layer:Ec.Opt(Ec.NumberNode({min:.01,max:50})),outer_layer:Ec.Opt(Ec.NumberNode({min:.01,max:50}))}),crack:Ec.ObjectNode({generate_crack_chance:Ec.Opt(Ec.NumberNode({min:0,max:1})),base_crack_size:Ec.Opt(Ec.NumberNode({min:0,max:5})),crack_point_offset:Ec.Opt(Ec.NumberNode({min:0,max:10,integer:!0}))}),noise_multiplier:Ec.Opt(Ec.NumberNode({min:0,max:1})),use_potential_placements_chance:Ec.Opt(Ec.NumberNode({min:0,max:1})),use_alternate_layer0_chance:Ec.Opt(Ec.NumberNode({min:0,max:1})),placements_require_layer0_alternate:Ec.Opt(Ec.BooleanNode()),outer_wall_distance:Ec.Opt(Dc.IntProvider({min:1,max:20})),distribution_points:Ec.Opt(Dc.IntProvider({min:1,max:20})),point_offset:Ec.Opt(Dc.IntProvider({min:0,max:10})),min_gen_offset:Ec.Opt(Ec.NumberNode({integer:!0})),max_gen_offset:Ec.Opt(Ec.NumberNode({integer:!0})),invalid_blocks_threshold:Ec.NumberNode({integer:!0})},"minecraft:glow_lichen":{search_range:Ec.Opt(Ec.NumberNode({min:1,max:64,integer:!0})),chance_of_spreading:Ec.Opt(Ec.NumberNode({min:0,max:1})),can_place_on_floor:Ec.Opt(Ec.BooleanNode()),can_place_on_ceiling:Ec.Opt(Ec.BooleanNode()),can_place_on_wall:Ec.Opt(Ec.BooleanNode()),can_be_placed_on:Ec.ListNode(r("block_state"))},"minecraft:growing_plant":{direction:n({enum:["up","down","north","east","south","west"]}),allow_water:Ec.BooleanNode(),height_distribution:Ec.ListNode(Ec.ObjectNode({weight:Ec.NumberNode({integer:!0}),data:Dc.IntProvider()})),body_provider:r("block_state_provider"),head_provider:r("block_state_provider")},"minecraft:huge_brown_mushroom":a,"minecraft:huge_fungus":{hat_state:r("block_state"),decor_state:r("block_state"),stem_state:r("block_state"),valid_base_block:r("block_state"),planted:Ec.Opt(Ec.BooleanNode())},"minecraft:huge_red_mushroom":a,"minecraft:ice_patch":i,"minecraft:iceberg":{state:r("block_state")},"minecraft:lake":{state:r("block_state")},"minecraft:large_dripstone":{floor_to_ceiling_search_range:Ec.Opt(Ec.NumberNode({integer:!0,min:1,max:512})),column_radius:Dc.IntProvider({min:0,max:60}),height_scale:Dc.FloatProvider({min:0,max:20}),max_column_radius_to_cave_height_ratio:Ec.NumberNode({min:0,max:1}),stalactite_bluntness:Dc.FloatProvider({min:.1,max:10}),stalagmite_bluntness:Dc.FloatProvider({min:.1,max:10}),wind_speed:Dc.FloatProvider({min:0,max:2}),min_radius_for_wind:Ec.NumberNode({integer:!0,min:0,max:100}),min_bluntness_for_wind:Ec.NumberNode({min:0,max:5})},"minecraft:nether_forest_vegetation":{state_provider:r("block_state_provider")},"minecraft:netherrack_replace_blobs":{state:r("block_state"),target:r("block_state"),radius:Dc.IntProvider({min:0,max:12})},"minecraft:no_bonemeal_flower":o,"minecraft:ore":c,"minecraft:random_patch":o,"minecraft:random_boolean_selector":{feature_false:l,feature_true:l},"minecraft:random_selector":{features:Ec.ListNode(Ec.ObjectNode({chance:Ec.NumberNode({min:0,max:1}),feature:l})),default:l},"minecraft:replace_single_block":{targets:Ec.ListNode(s)},"minecraft:root_system":{required_vertical_space_for_tree:Ec.NumberNode({integer:!0,min:1,max:64}),root_radius:Ec.NumberNode({integer:!0,min:1,max:64}),root_placement_attempts:Ec.NumberNode({integer:!0,min:1,max:256}),root_column_max_height:Ec.NumberNode({integer:!0,min:1,max:4096}),hanging_root_radius:Ec.NumberNode({integer:!0,min:1,max:64}),hanging_roots_vertical_span:Ec.NumberNode({integer:!0,min:0,max:16}),hanging_root_placement_attempts:Ec.NumberNode({integer:!0,min:0,max:256}),allowed_vertical_water_for_tree:Ec.NumberNode({integer:!0,min:1,max:64}),root_replaceable:n({validator:"resource",params:{pool:"$tag/block"}}),root_state_provider:r("block_state_provider"),hanging_root_state_provider:r("block_state_provider"),feature:l},"minecraft:scattered_ore":c,"minecraft:sea_pickle":{count:Dc.IntProvider({min:0,max:256})},"minecraft:seagrass":{probability:Ec.NumberNode({min:0,max:1})},"minecraft:simple_block":{to_place:r("block_state_provider"),place_on:Ec.Opt(Ec.ListNode(r("block_state"))),place_in:Ec.Opt(Ec.ListNode(r("block_state"))),place_under:Ec.Opt(Ec.ListNode(r("block_state")))},"minecraft:simple_random_selector":{features:Ec.ListNode(l)},"minecraft:small_dripstone":{max_placements:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:100})),empty_space_search_radius:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:20})),max_offset_from_origin:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:20})),chance_of_taller_dripstone:Ec.Opt(Ec.NumberNode({min:0,max:1}))},"minecraft:spring_feature":{state:r("fluid_state"),rock_count:Ec.NumberNode({integer:!0}),hole_count:Ec.NumberNode({integer:!0}),requires_block_below:Ec.BooleanNode(),valid_blocks:Ec.ListNode(n({validator:"resource",params:{pool:"block"}}))},"minecraft:tree":{ignore_vines:Ec.Opt(Ec.BooleanNode()),force_dirt:Ec.Opt(Ec.BooleanNode()),minimum_size:r("feature_size"),dirt_provider:r("block_state_provider"),sapling_provider:r("block_state_provider"),trunk_provider:r("block_state_provider"),foliage_provider:r("block_state_provider"),trunk_placer:Ec.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/trunk_placer_type"}}),base_height:Ec.NumberNode({integer:!0,min:0,max:32}),height_rand_a:Ec.NumberNode({integer:!0,min:0,max:24}),height_rand_b:Ec.NumberNode({integer:!0,min:0,max:24}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:bending_trunk_placer":{bend_length:Dc.IntProvider({min:1,max:64}),min_height_for_leaves:Ec.Opt(Ec.NumberNode({integer:!0,min:1}))}}},{context:"trunk_placer"}),foliage_placer:Ec.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/foliage_placer_type"}}),radius:Dc.IntProvider({min:0,max:16}),offset:Dc.IntProvider({min:0,max:16}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:blob_foliage_placer":{height:Ec.NumberNode({integer:!0,min:0,max:16})},"minecraft:bush_foliage_placer":{height:Ec.NumberNode({integer:!0,min:0,max:16})},"minecraft:fancy_foliage_placer":{height:Ec.NumberNode({integer:!0,min:0,max:16})},"minecraft:jungle_foliage_placer":{height:Ec.NumberNode({integer:!0,min:0,max:16})},"minecraft:mega_pine_foliage_placer":{crown_height:Dc.IntProvider({min:0,max:24})},"minecraft:pine_foliage_placer":{height:Dc.IntProvider({min:0,max:24})},"minecraft:random_spread_foliage_placer":{foliage_height:Dc.IntProvider({min:1,max:512}),leaf_placement_attempts:Ec.NumberNode({integer:!0,min:0,max:256})},"minecraft:spruce_foliage_placer":{trunk_height:Dc.IntProvider({min:0,max:24})}}},{context:"foliage_placer",disableSwitchContext:!0}),decorators:Ec.ListNode(Ec.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/tree_decorator_type"}}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:alter_ground":{provider:r("block_state_provider")},"minecraft:beehive":{probability:Ec.NumberNode({min:0,max:1})},"minecraft:cocoa":{probability:Ec.NumberNode({min:0,max:1})}}},{context:"tree_decorator"}))},"minecraft:underwater_magma":{floor_search_range:Ec.NumberNode({integer:!0,min:0,max:512}),placement_radius_around_floor:Ec.NumberNode({integer:!0,min:0,max:64}),placement_probability_per_valid_position:Ec.NumberNode({min:0,max:1})},"minecraft:vegetation_patch":d,"minecraft:waterlogged_vegetation_patch":d}},{context:"feature"})},{context:"feature"}),{default:()=>({type:"minecraft:decorated",config:{decorator:{type:"minecraft:count",config:{count:4}},feature:{type:"minecraft:tree",config:{max_water_depth:0,ignore_vines:!0,minimum_size:{},trunk_placer:{base_height:5,height_rand_a:2,height_rand_b:0},foliage_placer:{radius:2,offset:0,height:3}}}}})})),e.register("feature_size",Ec.Mod(Ec.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/feature_size_type"}}),min_clipped_height:Ec.Opt(Ec.NumberNode({min:0,max:80})),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:two_layers_feature_size":{limit:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:81})),lower_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16})),upper_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16}))},"minecraft:three_layers_feature_size":{limit:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:80})),upper_limit:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:80})),lower_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16})),middle_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16})),upper_size:Ec.Opt(Ec.NumberNode({integer:!0,min:0,max:16}))}}},{disableSwitchContext:!0}),{default:()=>({type:"minecraft:two_layers_feature_size"})})),e.register("block_state_provider",Ec.Mod(Ec.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/block_state_provider_type"}}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:randomized_int_state_provider":{property:n(),values:Dc.IntProvider(),source:r("block_state_provider")},"minecraft:rotated_block_provider":{state:r("block_state")},"minecraft:simple_state_provider":{state:r("block_state")},"minecraft:weighted_state_provider":{entries:Ec.ListNode(Ec.Mod(Ec.ObjectNode({weight:Ec.NumberNode({integer:!0,min:1}),data:r("block_state")}),{default:()=>({data:{}})}))}}},{context:"block_state_provider"}),{default:()=>({type:"minecraft:simple_state_provider"})})),e.register("block_placer",Ec.Mod(Ec.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/block_placer_type"}}),[Ec.Switch]:[{push:"type"}],[Ec.Case]:{"minecraft:column_placer":{size:Dc.IntProvider({min:0})}}},{context:"block_placer"}),{default:()=>({type:"minecraft:simple_block_placer"})}))};var qc={};Object.defineProperty(qc,"__esModule",{value:!0}),qc.initNoiseSettingsSchemas=void 0;const Uc=Ce,Zc=Qs;qc.initNoiseSettingsSchemas=function(e,t){const r=Uc.Reference.bind(void 0,e),n=Uc.StringNode.bind(void 0,t);e.register("noise_settings",Uc.Mod(Uc.ObjectNode({name:Uc.Mod(n({validator:"resource",params:{pool:"$worldgen/noise_settings",isDefinition:!0}}),{enabled:e=>e.getArray().length>0}),bedrock_roof_position:Uc.NumberNode({integer:!0}),bedrock_floor_position:Uc.NumberNode({integer:!0}),sea_level:Uc.NumberNode({integer:!0}),min_surface_level:Uc.NumberNode({integer:!0}),disable_mob_generation:Uc.BooleanNode(),noise_caves_enabled:Uc.BooleanNode(),noodle_caves_enabled:Uc.BooleanNode(),aquifers_enabled:Uc.BooleanNode(),deepslate_enabled:Uc.BooleanNode(),ore_veins_enabled:Uc.BooleanNode(),default_block:r("block_state"),default_fluid:r("block_state"),noise:Uc.ObjectNode({min_y:Uc.NumberNode({integer:!0,min:-2048,max:2047}),height:Uc.NumberNode({integer:!0,min:0,max:4096}),density_factor:Uc.NumberNode(),density_offset:Uc.NumberNode(),size_horizontal:Uc.NumberNode({integer:!0}),size_vertical:Uc.NumberNode({integer:!0}),simplex_surface_noise:Uc.BooleanNode(),random_density_offset:Uc.Opt(Uc.BooleanNode()),island_noise_override:Uc.Opt(Uc.BooleanNode()),amplified:Uc.Opt(Uc.BooleanNode()),sampling:Uc.ObjectNode({xz_scale:Uc.NumberNode(),y_scale:Uc.NumberNode(),xz_factor:Uc.NumberNode(),y_factor:Uc.NumberNode()}),bottom_slide:Uc.ObjectNode({target:Uc.NumberNode({integer:!0}),size:Uc.NumberNode({integer:!0,min:0}),offset:Uc.NumberNode({integer:!0})}),top_slide:Uc.ObjectNode({target:Uc.NumberNode({integer:!0}),size:Uc.NumberNode({integer:!0,min:0}),offset:Uc.NumberNode({integer:!0})})}),structures:r("generator_structures")},{context:"noise_settings"}),(e=>({default:()=>Zc.DefaultNoiseSettings,validate:(t,r,n,o)=>{var i,a,s,c;return(null===(i=null==(r=e.validate(t,r,n,o))?void 0:r.noise)||void 0===i?void 0:i.min_y)+(null===(a=null==r?void 0:r.noise)||void 0===a?void 0:a.height)>2047&&n.add(t.push("noise").push("height"),"error.min_y_plus_height",2047),(null===(s=null==r?void 0:r.noise)||void 0===s?void 0:s.height)%16!=0&&n.add(t.push("noise").push("height"),"error.height_multiple",16),(null===(c=null==r?void 0:r.noise)||void 0===c?void 0:c.min_y)%16!=0&&n.add(t.push("noise").push("min_y"),"error.min_y_multiple",16),r}})))),e.register("generator_structures",Uc.ObjectNode({stronghold:Uc.Opt(Uc.ObjectNode({distance:Uc.NumberNode({integer:!0,min:0,max:1023}),spread:Uc.NumberNode({integer:!0,min:0,max:1023}),count:Uc.NumberNode({integer:!0,min:1,max:4095})})),structures:Uc.MapNode(n({validator:"resource",params:{pool:"worldgen/structure_feature"}}),Uc.Mod(Uc.ObjectNode({spacing:Uc.NumberNode({integer:!0,min:0,max:4096}),separation:Uc.Mod(Uc.NumberNode({integer:!0,min:0,max:4096}),(e=>({validate:(t,r,n,o)=>(t.pop().push("spacing").get()<=r&&n.add(t,"error.separation_smaller_spacing"),e.validate(t,r,n,o))}))),salt:Uc.NumberNode({integer:!0,min:0})},{context:"generator_structure"}),{default:()=>({spacing:10,separation:5,salt:0})}))})),e.register("generator_layer",Uc.Mod(Uc.ObjectNode({block:n({validator:"resource",params:{pool:"block"}}),height:Uc.NumberNode({integer:!0,min:1})}),{default:()=>({block:"minecraft:stone",height:1})}))};var Hc={};Object.defineProperty(Hc,"__esModule",{value:!0}),Hc.initStructureFeatureSchemas=void 0;const Wc=Ce;Hc.initStructureFeatureSchemas=function(e,t){const r=Wc.StringNode.bind(void 0,t),n=Wc.Reference.bind(void 0,e),o={start_pool:r({validator:"resource",params:{pool:"$worldgen/template_pool"}}),size:Wc.NumberNode({integer:!0})};e.register("configured_structure_feature",Wc.Mod(Wc.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/structure_feature"}}),config:Wc.ObjectNode({[Wc.Switch]:["pop",{push:"type"}],[Wc.Case]:{"minecraft:bastion_remnant":o,"minecraft:buried_treasure":{probability:Wc.NumberNode({min:0,max:1})},"minecraft:mineshaft":{type:r({enum:["normal","mesa"]}),probability:Wc.NumberNode({min:0,max:1})},"minecraft:nether_fossil":{height:n("height_provider")},"minecraft:ocean_ruin":{biome_temp:r({enum:["cold","warm"]}),large_probability:Wc.NumberNode({min:0,max:1}),cluster_probability:Wc.NumberNode({min:0,max:1})},"minecraft:pillager_outpost":o,"minecraft:ruined_portal":{portal_type:r({enum:["standard","desert","jungle","mountain","nether","ocean","swamp"]})},"minecraft:shipwreck":{is_beached:Wc.Opt(Wc.BooleanNode())},"minecraft:village":o}},{context:"structure_feature",disableSwitchContext:!0})},{context:"structure_feature"}),{default:()=>({type:"minecraft:bastion_remnant",config:{start_pool:"minecraft:bastion/starts",size:6}})}))};var Xc={};Object.defineProperty(Xc,"__esModule",{value:!0}),Xc.initSurfaceBuilderSchemas=void 0;const Gc=Ce;Xc.initSurfaceBuilderSchemas=function(e,t){const r=Gc.StringNode.bind(void 0,t),n=Gc.Reference.bind(void 0,e);e.register("configured_surface_builder",Gc.Mod(Gc.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/surface_builder"}}),config:Gc.ObjectNode({top_material:n("block_state"),under_material:n("block_state"),underwater_material:n("block_state")},{context:"surface_builder"})},{context:"surface_builder"}),{default:()=>({type:"minecraft:default",config:{top_material:{Name:"minecraft:grass_block",Properties:{snowy:"false"}},under_material:{Name:"minecraft:dirt"},underwater_material:{Name:"minecraft:gravel"}}})}))};var Vc={};Object.defineProperty(Vc,"__esModule",{value:!0}),Vc.initTemplatePoolSchemas=void 0;const Jc=Ce,Yc=Rc;Vc.initTemplatePoolSchemas=function(e,t){const r=Jc.Reference.bind(void 0,e),n=Jc.StringNode.bind(void 0,t);e.register("template_pool",Jc.Mod(Jc.ObjectNode({name:n(),fallback:n(),elements:Jc.ListNode(r("template_weighted_element"))},{context:"template_pool"}),{default:()=>({fallback:"minecraft:empty",elements:[{weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}}]})})),e.register("template_weighted_element",Jc.Mod(Jc.ObjectNode({weight:Jc.NumberNode({integer:!0,min:1}),element:r("template_element")},{category:"pool"}),{default:()=>({weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}})})),e.register("template_element",Jc.Mod(Jc.ObjectNode({element_type:n({validator:"resource",params:{pool:"worldgen/structure_pool_element"}}),projection:n({enum:["rigid","terrain_matching"]}),[Jc.Switch]:[{push:"element_type"}],[Jc.Case]:{"minecraft:feature_pool_element":{feature:n({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},"minecraft:legacy_single_pool_element":{location:n({validator:"resource",params:{pool:"$structure"}}),processors:Yc.Processors},"minecraft:list_pool_element":{elements:Jc.ListNode(r("template_element"))},"minecraft:single_pool_element":{location:n({validator:"resource",params:{pool:"$structure"}}),processors:Yc.Processors}}},{context:"template_element",disableSwitchContext:!0}),{default:()=>({element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"})}))},Object.defineProperty(jc,"__esModule",{value:!0}),jc.initWorldgenSchemas=void 0;const Kc=Mc,Qc=Pc,el=Cc,tl=Ic,rl=qc,nl=Rc,ol=Hc,il=Xc,al=Vc;jc.initWorldgenSchemas=function(e,t){nl.initProcessorListSchemas(e,t),Kc.initBiomeSchemas(e,t),Qc.initCarverSchemas(e,t),el.initDecoratorSchemas(e,t),tl.initFeatureSchemas(e,t),rl.initNoiseSettingsSchemas(e,t),ol.initStructureFeatureSchemas(e,t),il.initSurfaceBuilderSchemas(e,t),al.initTemplatePoolSchemas(e,t)};var sl={};Object.defineProperty(sl,"__esModule",{value:!0}),sl.initWorldSettingsSchemas=void 0;const cl=Ce;sl.initWorldSettingsSchemas=function(e,t){const r=cl.Reference.bind(void 0,e),n=cl.StringNode.bind(void 0,t);e.register("world_settings",cl.Mod(cl.ObjectNode({generate_features:cl.BooleanNode(),bonus_chest:cl.BooleanNode(),seed:cl.NumberNode({integer:!0}),dimensions:cl.MapNode(n({validator:"resource",params:{pool:"$dimension"}}),r("dimension"))},{context:"world_settings"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{generate_features:!0,bonus_chest:!1,seed:e,dimensions:{"minecraft:overworld":{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:vanilla_layered",seed:e},settings:"minecraft:overworld"}},"minecraft:the_nether":{type:"minecraft:the_nether",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:multi_noise",seed:e,humidity_noise:{firstOctave:-7,amplitudes:[1,1]},altitude_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:0},biome:"minecraft:nether_wastes"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:-.5},biome:"minecraft:soul_sand_valley"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:.4,humidity:0},biome:"minecraft:crimson_forest"},{parameters:{altitude:0,weirdness:0,offset:.375,temperature:0,humidity:.5},biome:"minecraft:warped_forest"},{parameters:{altitude:0,weirdness:0,offset:.175,temperature:-.5,humidity:0},biome:"minecraft:basalt_deltas"}]},settings:"minecraft:nether"}},"minecraft:the_end":{type:"minecraft:the_end",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:the_end",seed:e},settings:"minecraft:end"}}}}}}))},Object.defineProperty(Js,"__esModule",{value:!0}),Js.initSchemas=void 0;const ll=Ys,dl=Qs,_l=ec,ml=nc,pl=ac,ul=lc,fl=mc,hl=gc,gl=vc,bl=Nc,vl=wc,yl=xc,Nl=jc,kl=sl;Js.initSchemas=function(e,t){dl.initCommonSchemas(e,t),ll.initAdvancementSchemas(e,t),_l.initConditionSchemas(e,t),pl.initDimensionTypeSchemas(e,t),ml.initDimensionSchemas(e,t),ul.initItemModifierSchemas(e,t),fl.initLootTableSchemas(e,t),hl.initPackMcmetaSchemas(e,t),gl.initPredicatesSchemas(e,t),bl.initRecipeSchemas(e,t),vl.initTagsSchemas(e,t),yl.initTextComponentSchemas(e,t),Nl.initWorldgenSchemas(e,t),kl.initWorldSettingsSchemas(e,t)};var wl=Be&&Be.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Ol=Be&&Be.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xl=Be&&Be.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&wl(t,e,r);return Ol(t,e),t};Object.defineProperty(Gs,"__esModule",{value:!0});var Sl=Gs.getSchemas=Gs.getCollections=void 0;const jl=Ce,Ml=Vs,Al=Js;var Pl=Gs.lootContext=xl(pc);var Ll=Gs.getCollections=function(){const e=new jl.CollectionRegistry;return Ml.initCollections(e),e};Sl=Gs.getSchemas=function(e){const t=new jl.SchemaRegistry;return Al.initSchemas(t,e),t};var Bl=Object.freeze(Object.assign(Object.create(null),Gs,{[Symbol.toStringTag]:"Module",get getSchemas(){return Sl},get getCollections(){return Ll},lootContext:Pl,default:Gs})),Cl={},zl={};Object.defineProperty(zl,"__esModule",{value:!0}),zl.initCollections=void 0,zl.initCollections=function(e){e.register("advancement_trigger",["minecraft:bee_nest_destroyed","minecraft:bred_animals","minecraft:brewed_potion","minecraft:changed_dimension","minecraft:channeled_lightning","minecraft:construct_beacon","minecraft:consume_item","minecraft:cured_zombie_villager","minecraft:effects_changed","minecraft:enchanted_item","minecraft:enter_block","minecraft:entity_hurt_player","minecraft:entity_killed_player","minecraft:fall_from_height","minecraft:filled_bucket","minecraft:fishing_rod_hooked","minecraft:hero_of_the_village","minecraft:impossible","minecraft:inventory_changed","minecraft:item_durability_changed","minecraft:item_used_on_block","minecraft:killed_by_crossbow","minecraft:levitation","minecraft:lightning_strike","minecraft:location","minecraft:nether_travel","minecraft:placed_block","minecraft:player_generates_container_loot","minecraft:player_hurt_entity","minecraft:player_interacted_with_entity","minecraft:player_killed_entity","minecraft:recipe_unlocked","minecraft:ride_entity_in_lava","minecraft:shot_crossbow","minecraft:slept_in_bed","minecraft:slide_down_block","minecraft:started_riding","minecraft:summoned_entity","minecraft:tame_animal","minecraft:target_hit","minecraft:tick","minecraft:thrown_item_picked_up_by_entity","minecraft:used_ender_eye","minecraft:used_totem","minecraft:using_item","minecraft:villager_trade","minecraft:voluntary_exile"]),e.register("keybind",["key.advancements","key.attack","key.back","key.chat","key.command","key.drop","key.forward","key.fullscreen","key.hotbar.1","key.hotbar.2","key.hotbar.3","key.hotbar.4","key.hotbar.5","key.hotbar.6","key.hotbar.7","key.hotbar.8","key.hotbar.9","key.inventory","key.jump","key.left","key.loadToolbarActivator","key.pickItem","key.playerlist","key.right","key.saveToolbarActivator","key.screenshot","key.smoothCamera","key.sneak","key.spectatorOutlines","key.sprint","key.swapOffhand","key.togglePerspective","key.use"]),e.register("slot",["mainhand","offhand","head","chest","legs","feet"]),e.register("gamemode",["survival","creative","adventure","spectator"]),e.register("entity_source",["this","killer","direct_killer","killer_player"]),e.register("copy_source",["block_entity","this","killer","killer_player"]),e.register("loot_table_apply_bonus_formula",["minecraft:uniform_bonus_count","minecraft:binomial_with_bonus_count","minecraft:ore_drops"]),e.register("map_decoration",["mansion","monument","player","frame","red_marker","blue_marker","target_x","target_point","player_off_map","player_off_limits","red_x","banner_white","banner_orange","banner_magenta","banner_light_blue","banner_yellow","banner_lime","banner_pink","banner_gray","banner_light_gray","banner_cyan","banner_purple","banner_blue","banner_brown","banner_green","banner_red","banner_black"]),e.register("map_feature",["bastion_remnant","buried_treasure","desert_pyramid","endcity","fortress","igloo","jungle_pyramid","mansion","mineshaft","monument","nether_fossil","ocean_ruin","pillager_outpost","ruined_portal","shipwreck","stronghold","swamp_hut","village"]),e.register("recipe_group",["bed","light_gray_dye","iron_ingot","wooden_stairs","black_dye","stained_terracotta","dyed_bed","magenta_dye","bark","rabbit_stew","light_blue_dye","wooden_fence_gate","planks","stained_glass","wooden_door","stained_glass_pane","wooden_fence","sticks","concrete_powder","wooden_pressure_plate","boat","brown_dye","yellow_dye","bonemeal","red_dye","wooden_trapdoor","wooden_button","gold_ingot","pink_dye","wooden_slab","orange_dye","carpet","sign","wool","sugar","blue_dye","white_dye","banner","netherite_ingot"]),e.register("biome_category",["beach","desert","extreme_hills","forest","icy","jungle","mesa","mountain","mushroom","nether","none","ocean","plains","river","savanna","swamp","taiga","the_end","underground"]),e.register("heightmap_type",["MOTION_BLOCKING","MOTION_BLOCKING_NO_LEAVES","OCEAN_FLOOR","OCEAN_FLOOR_WG","WORLD_SURFACE","WORLD_SURFACE_WG"]),e.register("generation_step",["air","liquid"]),e.register("loot_context_type",["minecraft:empty","minecraft:chest","minecraft:command","minecraft:selector","minecraft:fishing","minecraft:entity","minecraft:gift","minecraft:barter","minecraft:advancement_reward","minecraft:advancement_entity","minecraft:generic","minecraft:block"]),e.register("banner_pattern",["base","square_bottom_left","square_bottom_right","square_top_left","square_top_right","stripe_bottom","stripe_top","stripe_left","stripe_right","stripe_center","stripe_middle","stripe_downright","stripe_downleft","small_stripes","cross","straight_cross","triangle_bottom","triangle_top","triangles_bottom","triangles_top","diagonal_left","diagonal_up_right","diagonal_up_left","diagonal_right","circle","rhombus","half_vertical","half_horizontal","half_vertical_right","half_horizontal_bottom","border","curly_border","gradient","gradient_up","bricks","globe","creeper","skull","flower","mojang","piglin"]),e.register("dye_color",["white","orange","magenta","light_blue","yellow","lime","pink","gray","light_gray","cyan","purple","blue","brown","green","red","black"]),e.register("cave_surface",["floor","ceiling"])};var Tl={},Il={};Object.defineProperty(Il,"__esModule",{value:!0}),Il.initAdvancementSchemas=void 0;const Rl=Ce;Il.initAdvancementSchemas=function(e,t){const r=Rl.Reference.bind(void 0,e),n=Rl.StringNode.bind(void 0,t),o=Rl.ChoiceNode([{type:"object",node:Rl.Opt(r("entity_predicate")),change:e=>{var t,r;return null!==(r=null===(t=e[0])||void 0===t?void 0:t.predicate)&&void 0!==r?r:{}}},{type:"list",node:Rl.ListNode(r("condition")),change:e=>[{condition:"minecraft:entity_properties",predicate:e}]}],{context:"conditions"});e.register("advancement",Rl.Mod(Rl.ObjectNode({display:Rl.Opt(Rl.Mod(Rl.ObjectNode({icon:Rl.ObjectNode({item:n({validator:"resource",params:{pool:"item"}}),nbt:Rl.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}}))}),title:r("text_component"),description:r("text_component"),background:Rl.Opt(n()),frame:Rl.Opt(n({enum:["task","challenge","goal"]})),show_toast:Rl.Opt(Rl.BooleanNode()),announce_to_chat:Rl.Opt(Rl.BooleanNode()),hidden:Rl.Opt(Rl.BooleanNode())}),{default:()=>({icon:{item:"minecraft:stone"},title:"",description:""})})),parent:Rl.Opt(n({validator:"resource",params:{pool:"$advancement"}})),criteria:Rl.MapNode(n(),r("advancement_criteria")),requirements:Rl.Opt(Rl.ListNode(Rl.ListNode(n()))),rewards:Rl.Opt(Rl.ObjectNode({function:Rl.Opt(n({validator:"resource",params:{pool:"$function"}})),loot:Rl.Opt(Rl.ListNode(n({validator:"resource",params:{pool:"$loot_table"}}))),recipes:Rl.Opt(Rl.ListNode(n({validator:"resource",params:{pool:"$recipe"}}))),experience:Rl.Opt(Rl.NumberNode({integer:!0}))}))},{context:"advancement"}),{default:()=>({criteria:{requirement:{trigger:"minecraft:location"}}})})),e.register("advancement_criteria",Rl.ObjectNode({trigger:n({validator:"resource",params:{pool:t.get("advancement_trigger")}}),conditions:Rl.Opt(Rl.ObjectNode({player:Rl.Mod(o,{enabled:e=>"minecraft:impossible"!==e.pop().push("trigger").get()}),[Rl.Switch]:["pop",{push:"trigger"}],[Rl.Case]:{"minecraft:bee_nest_destroyed":{block:Rl.Opt(n({validator:"resource",params:{pool:"block"}})),num_bees_inside:Rl.Opt(Rl.NumberNode({integer:!0})),item:Rl.Opt(r("item_predicate"))},"minecraft:bred_animals":{parent:o,partner:o,child:o},"minecraft:brewed_potion":{potion:Rl.Opt(n({validator:"resource",params:{pool:"potion"}}))},"minecraft:changed_dimension":{from:Rl.Opt(n({validator:"resource",params:{pool:"$dimension"}})),to:Rl.Opt(n({validator:"resource",params:{pool:"$dimension"}}))},"minecraft:channeled_lightning":{victims:Rl.Opt(Rl.ListNode(o))},"minecraft:construct_beacon":{level:r("int_bounds")},"minecraft:consume_item":{item:Rl.Opt(r("item_predicate"))},"minecraft:cured_zombie_villager":{villager:o,zombie:o},"minecraft:effects_changed":{effects:Rl.Opt(Rl.MapNode(n({validator:"resource",params:{pool:"mob_effect"}}),Rl.ObjectNode({amplifier:r("int_bounds"),duration:r("int_bounds")}))),source:Rl.Opt(o)},"minecraft:enter_block":{block:Rl.Opt(n({validator:"resource",params:{pool:"block"}})),state:Rl.Opt(Rl.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},"minecraft:enchanted_item":{levels:r("int_bounds"),item:Rl.Opt(r("item_predicate"))},"minecraft:entity_hurt_player":{damage:Rl.Opt(r("damage_predicate"))},"minecraft:entity_killed_player":{entity:o,killing_blow:Rl.Opt(r("damage_source_predicate"))},"minecraft:fall_from_height":{start_position:Rl.Opt(r("location_predicate")),distance:Rl.Opt(r("distance_predicate"))},"minecraft:filled_bucket":{item:Rl.Opt(r("item_predicate"))},"minecraft:fishing_rod_hooked":{entity:o,item:Rl.Opt(r("item_predicate"))},"minecraft:hero_of_the_village":{location:Rl.Opt(r("location_predicate"))},"minecraft:inventory_changed":{slots:Rl.Opt(Rl.ObjectNode({empty:r("int_bounds"),occupied:r("int_bounds"),full:r("int_bounds")})),items:Rl.Opt(Rl.ListNode(r("item_predicate")))},"minecraft:item_durability_changed":{delta:r("int_bounds"),durability:r("int_bounds"),item:Rl.Opt(r("item_predicate"))},"minecraft:item_used_on_block":{item:Rl.Opt(r("item_predicate")),location:Rl.Opt(r("location_predicate"))},"minecraft:killed_by_crossbow":{unique_entity_types:r("int_bounds"),victims:Rl.Opt(Rl.ListNode(o))},"minecraft:levitation":{distance:Rl.Opt(r("distance_predicate")),duration:r("int_bounds")},"minecraft:lightning_strike":{lightning:o,bystander:o},"minecraft:location":{location:Rl.Opt(r("location_predicate"))},"minecraft:nether_travel":{start_position:Rl.Opt(r("location_predicate")),distance:Rl.Opt(r("distance_predicate"))},"minecraft:placed_block":{block:Rl.Opt(n({validator:"resource",params:{pool:"block"}})),state:Rl.Opt(Rl.MapNode(n(),n(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})),item:Rl.Opt(r("item_predicate")),location:Rl.Opt(r("location_predicate"))},"minecraft:player_generates_container_loot":{loot_table:n({validator:"resource",params:{pool:"$loot_table"}})},"minecraft:player_hurt_entity":{damage:Rl.Opt(r("damage_predicate")),entity:o},"minecraft:player_interacted_with_entity":{item:Rl.Opt(r("item_predicate")),entity:o},"minecraft:player_killed_entity":{entity:o,killing_blow:Rl.Opt(r("damage_source_predicate"))},"minecraft:recipe_unlocked":{recipe:n({validator:"resource",params:{pool:"$recipe"}})},"minecraft:ride_entity_in_lava":{start_position:Rl.Opt(r("location_predicate")),distance:Rl.Opt(r("distance_predicate"))},"minecraft:slept_in_bed":{location:Rl.Opt(r("location_predicate"))},"minecraft:slide_down_block":{block:Rl.Opt(n({validator:"resource",params:{pool:"block"}}))},"minecraft:shot_crossbow":{item:Rl.Opt(r("item_predicate"))},"minecraft:summoned_entity":{entity:o},"minecraft:tame_animal":{entity:o},"minecraft:target_hit":{projectile:o,shooter:o,signal_strength:r("int_bounds")},"minecraft:thrown_item_picked_up_by_entity":{entity:Rl.Opt(r("entity_predicate")),item:Rl.Opt(r("item_predicate"))},"minecraft:used_ender_eye":{distance:Rl.Opt(r("float_bounds"))},"minecraft:used_totem":{item:Rl.Opt(r("item_predicate"))},"minecraft:using_item":{item:Rl.Opt(r("item_predicate"))},"minecraft:villager_trade":{villager:Rl.Opt(r("entity_predicate")),item:Rl.Opt(r("item_predicate"))},"minecraft:voluntary_exile":{location:Rl.Opt(r("location_predicate"))}}},{context:"criterion"}))},{category:"predicate",context:"criterion"}))};var Fl={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.initCommonSchemas=e.InclusiveRange=e.IntProvider=e.FloatProvider=e.NoiseSettingsPresets=e.DefaultNoiseSettings=e.DimensionTypePresets=e.DefaultDimensionType=e.FunctionCases=e.ConditionCases=void 0;const t=Ce;e.DefaultDimensionType={ultrawarm:!1,natural:!0,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!0,has_raids:!0,has_skylight:!0,has_ceiling:!1,coordinate_scale:1,ambient_light:0,logical_height:256,infiniburn:"minecraft:infiniburn_overworld",min_y:0,height:256};const r={"minecraft:igloo":{spacing:32,separation:8,salt:14357618},"minecraft:mansion":{spacing:80,separation:20,salt:10387319},"minecraft:jungle_pyramid":{spacing:32,separation:8,salt:14357619},"minecraft:nether_fossil":{spacing:2,separation:1,salt:14357921},"minecraft:stronghold":{spacing:1,separation:0,salt:0},"minecraft:shipwreck":{spacing:24,separation:4,salt:165745295},"minecraft:mineshaft":{spacing:1,separation:0,salt:0},"minecraft:desert_pyramid":{spacing:32,separation:8,salt:14357617},"minecraft:ruined_portal":{spacing:40,separation:15,salt:34222645},"minecraft:fortress":{spacing:27,separation:4,salt:30084232},"minecraft:pillager_outpost":{spacing:32,separation:8,salt:165745296},"minecraft:village":{spacing:32,separation:8,salt:10387312},"minecraft:endcity":{spacing:20,separation:11,salt:10387313},"minecraft:buried_treasure":{spacing:1,separation:0,salt:0},"minecraft:ocean_ruin":{spacing:20,separation:8,salt:14357621},"minecraft:bastion_remnant":{spacing:27,separation:4,salt:30084232},"minecraft:swamp_hut":{spacing:32,separation:8,salt:14357620},"minecraft:monument":{spacing:32,separation:5,salt:10387313}};e.DefaultNoiseSettings={bedrock_roof_position:-2147483648,bedrock_floor_position:0,sea_level:63,noise_caves_enabled:!0,deepslate_enabled:!0,ore_veins_enabled:!0,noodle_caves_enabled:!0,disable_mob_generation:!1,aquifers_enabled:!0,default_block:{Name:"minecraft:stone"},default_fluid:{Properties:{level:"0"},Name:"minecraft:water"},noise:{min_y:-64,height:384,size_horizontal:1,size_vertical:2,density_factor:1,density_offset:-.51875,top_slide:{target:-.078125,size:2,offset:8},bottom_slide:{target:.1171875,size:3,offset:0},sampling:{xz_scale:.9999999814507745,y_scale:.9999999814507745,xz_factor:80,y_factor:160}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{stronghold:{distance:32,spread:3,count:128},structures:r}},e.initCommonSchemas=function(n,o){const i=t.StringNode.bind(void 0,o),a=t.Reference.bind(void 0,n);n.register("block_state",t.Mod(t.ObjectNode({Name:i({validator:"resource",params:{pool:"block"}}),Properties:t.Opt(t.MapNode(i(),i(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"Name"}]}}}))},{context:"block_state"}),{default:()=>({Name:"minecraft:stone"})})),n.register("fluid_state",t.Mod(t.ObjectNode({Name:i({validator:"resource",params:{pool:"fluid"}}),Properties:t.Opt(t.MapNode(i(),i()))},{context:"fluid_state"}),{default:()=>({Name:"minecraft:water",Properties:{level:"0"}})})),n.register("block_pos",t.Mod(t.ListNode(t.NumberNode({integer:!0}),{minLength:3,maxLength:3}),{default:()=>[0,0,0]}));const c=e=>t.Opt(t.ChoiceNode([{type:"number",node:t.NumberNode({integer:e}),change:e=>{var t,r;return void 0===e?0:null!==(r=null!==(t=e.min)&&void 0!==t?t:e.max)&&void 0!==r?r:0}},{type:"object",node:t.ObjectNode({min:t.Opt(t.NumberNode({integer:e})),max:t.Opt(t.NumberNode({integer:e}))},{context:"range"}),change:e=>({min:null!=e?e:0,max:null!=e?e:0})}]));n.register("int_bounds",c(!0)),n.register("float_bounds",c()),n.register("int_range",t.ChoiceNode([{type:"object",node:t.ObjectNode({min:t.Opt(a("number_provider")),max:t.Opt(a("number_provider"))})},{type:"number",node:t.NumberNode({integer:!0})}],{context:"range"}));const l=(e,r,n,o,a,c,l)=>{let d={};a&&Object.keys(l[a]).forEach((e=>{d[e]=t.Mod(l[a][e],{enabled:e=>void 0===e.push("type").get()})}));const _=t.ObjectNode(s({type:t.Mod(t.Opt(i({validator:"resource",params:{pool:e}})),{hidden:()=>!0}),[t.Switch]:[{push:"type"}],[t.Case]:l},d),{context:c,disableSwitchContext:!0}),m=[{type:r,node:l[o][n]}];return a&&m.push({type:"object",priority:-1,node:_}),Object.keys(l).forEach((e=>{m.push({type:e,match:t=>{var r;if("minecraft:"+(null===(r=null==t?void 0:t.type)||void 0===r?void 0:r.replace(/^minecraft:/,""))===e)return!0;const n=t?Object.keys(t):[];return"object"==typeof t&&(0===(null==n?void 0:n.length)||1===(null==n?void 0:n.length)&&"type"===(null==n?void 0:n[0]))},node:_,change:t=>({type:e})})})),t.ChoiceNode(m,{context:c,choiceContext:`${c}.type`})};n.register("number_provider",l("loot_number_provider_type","number","value","minecraft:constant","minecraft:uniform","number_provider",{"minecraft:constant":{value:t.NumberNode()},"minecraft:uniform":{min:a("number_provider"),max:a("number_provider")},"minecraft:binomial":{n:a("number_provider"),p:a("number_provider")},"minecraft:score":{target:a("scoreboard_name_provider"),score:i({validator:"objective"}),scale:t.Opt(t.NumberNode())}})),n.register("scoreboard_name_provider",l("loot_score_provider_type","string","target","minecraft:context",null,"score_provider",{"minecraft:fixed":{name:i({validator:"entity",params:{amount:"multiple",type:"entities",isScoreHolder:!0}})},"minecraft:context":{target:t.Mod(i({enum:"entity_source"}),{default:()=>"this"})}})),n.register("nbt_provider",l("loot_nbt_provider_type","string","target","minecraft:context",null,"nbt_provider",{"minecraft:storage":{source:i({validator:"resource",params:{pool:"$storage"}})},"minecraft:context":{target:t.Mod(i({enum:"copy_source"}),{default:()=>"this"})}})),e.FloatProvider=e=>l("float_provider_type","number","value","minecraft:constant",null,"float_provider",{"minecraft:constant":{value:t.NumberNode(e)},"minecraft:uniform":{value:t.ObjectNode({min_inclusive:t.NumberNode(e),max_exclusive:t.NumberNode(e)})},"minecraft:clamped_normal":{value:t.ObjectNode({min:t.NumberNode(),max:t.NumberNode(),mean:t.NumberNode(),deviation:t.NumberNode()})},"minecraft:trapezoid":{value:t.ObjectNode({min:t.NumberNode(),max:t.NumberNode(),plateau:t.NumberNode()})}}),n.register("float_provider",e.FloatProvider()),e.IntProvider=e=>l("int_provider_type","number","value","minecraft:constant",null,"int_provider",{"minecraft:constant":{value:t.NumberNode(s({integer:!0},e))},"minecraft:uniform":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e))})},"minecraft:biased_to_bottom":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e))})},"minecraft:clamped":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e)),source:a("int_provider")})},"minecraft:clamped_normal":{value:t.ObjectNode({min_inclusive:t.NumberNode(s({integer:!0},e)),max_inclusive:t.NumberNode(s({integer:!0},e)),mean:t.NumberNode(),deviation:t.NumberNode()})},"minecraft:weighted_list":{distribution:t.ListNode(t.ObjectNode({weight:t.NumberNode({integer:!0}),data:a("int_provider")}))}}),n.register("int_provider",e.IntProvider()),n.register("vertical_anchor",t.ChoiceNode(["absolute","above_bottom","below_top"].map((e=>({type:e,match:t=>void 0!==(null==t?void 0:t[e]),change:t=>{var r,n,o;return{[e]:null!==(o=null!==(n=null!==(r=t.absolute)&&void 0!==r?r:t.above_bottom)&&void 0!==n?n:t.below_top)&&void 0!==o?o:0}},node:t.ObjectNode({[e]:t.NumberNode({integer:!0,min:-2048,max:2047})})}))),{context:"vertical_anchor"})),n.register("height_provider",l("height_provider_type","number","value","minecraft:constant",null,"height_provider",{"minecraft:constant":{value:a("vertical_anchor")},"minecraft:uniform":{min_inclusive:a("vertical_anchor"),max_inclusive:a("vertical_anchor")},"minecraft:biased_to_bottom":{min_inclusive:a("vertical_anchor"),max_inclusive:a("vertical_anchor"),inner:t.Opt(t.NumberNode({integer:!0,min:1}))},"minecraft:very_biased_to_bottom":{min_inclusive:a("vertical_anchor"),max_inclusive:a("vertical_anchor"),inner:t.Opt(t.NumberNode({integer:!0,min:1}))},"minecraft:trapezoid":{min_inclusive:a("vertical_anchor"),max_inclusive:a("vertical_anchor"),plateau:t.Opt(t.NumberNode({integer:!0}))}})),e.InclusiveRange=e=>t.ObjectNode({min_inclusive:t.NumberNode(e),max_inclusive:t.NumberNode(e)},{context:"range"}),n.register("noise_parameters",t.Mod(t.ObjectNode({firstOctave:t.NumberNode({integer:!0}),amplitudes:t.ListNode(t.NumberNode())},{context:"noise_parameters"}),{default:()=>({firstOctave:-7,amplitudes:[1,1]})})),e.ConditionCases=(e=i({enum:"entity_source"}))=>({"minecraft:alternative":{terms:t.ListNode(a("condition"))},"minecraft:block_state_property":{block:i({validator:"resource",params:{pool:"block"}}),properties:t.MapNode(i(),i(),{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}})},"minecraft:damage_source_properties":{predicate:a("damage_source_predicate")},"minecraft:entity_properties":{entity:e,predicate:a("entity_predicate")},"minecraft:entity_scores":{entity:e,scores:t.MapNode(i({validator:"objective"}),a("int_range"))},"minecraft:inverted":{term:a("condition")},"minecraft:killed_by_player":{inverse:t.Opt(t.BooleanNode())},"minecraft:location_check":{offsetX:t.Opt(t.NumberNode({integer:!0})),offsetY:t.Opt(t.NumberNode({integer:!0})),offsetZ:t.Opt(t.NumberNode({integer:!0})),predicate:a("location_predicate")},"minecraft:match_tool":{predicate:a("item_predicate")},"minecraft:random_chance":{chance:t.NumberNode({min:0,max:1})},"minecraft:random_chance_with_looting":{chance:t.NumberNode({min:0,max:1}),looting_multiplier:t.NumberNode()},"minecraft:reference":{name:i({validator:"resource",params:{pool:"$predicate"}})},"minecraft:table_bonus":{enchantment:i({validator:"resource",params:{pool:"enchantment"}}),chances:t.ListNode(t.NumberNode({min:0,max:1}))},"minecraft:time_check":{value:a("int_range"),period:t.Opt(t.NumberNode({integer:!0}))},"minecraft:value_check":{value:a("number_provider"),range:a("int_range")},"minecraft:weather_check":{raining:t.Opt(t.BooleanNode()),thundering:t.Opt(t.BooleanNode())}}),e.FunctionCases=(e,r=i({enum:"copy_source"}),n=i({enum:"entity_source"}))=>{const c={"minecraft:apply_bonus":{enchantment:i({validator:"resource",params:{pool:"enchantment"}}),formula:i({validator:"resource",params:{pool:o.get("loot_table_apply_bonus_formula")}}),parameters:t.Mod(t.ObjectNode({bonusMultiplier:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:uniform_bonus_count"===e.pop().push("formula").get()}),extra:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()}),probability:t.Mod(t.NumberNode(),{enabled:e=>"minecraft:binomial_with_bonus_count"===e.pop().push("formula").get()})}),{enabled:e=>"minecraft:ore_drops"!==e.push("formula").get()})},"minecraft:copy_name":{source:r},"minecraft:copy_nbt":{source:a("nbt_provider"),ops:t.ListNode(t.ObjectNode({source:i({validator:"nbt_path",params:{category:{getter:"copy_source",path:["pop","pop","pop",{push:"source"}]}}}),target:i({validator:"nbt_path",params:{category:"minecraft:item"}}),op:i({enum:["replace","append","merge"]})},{context:"nbt_operation"}))},"minecraft:copy_state":{block:i({validator:"resource",params:{pool:"block"}}),properties:t.ListNode(i({validator:"block_state_key",params:{id:["pop","pop",{push:"block"}]}}))},"minecraft:enchant_randomly":{enchantments:t.Opt(t.ListNode(i({validator:"resource",params:{pool:"enchantment"}})))},"minecraft:enchant_with_levels":{levels:a("number_provider"),treasure:t.Opt(t.BooleanNode())},"minecraft:exploration_map":{destination:t.Opt(i({enum:"map_feature"})),decoration:t.Opt(i({enum:"map_decoration"})),zoom:t.Opt(t.NumberNode({integer:!0})),search_radius:t.Opt(t.NumberNode({integer:!0})),skip_existing_chunks:t.Opt(t.BooleanNode())},"minecraft:fill_player_head":{entity:n},"minecraft:limit_count":{limit:a("int_range")},"minecraft:looting_enchant":{count:a("number_provider"),limit:t.Opt(t.NumberNode({integer:!0}))},"minecraft:set_attributes":{modifiers:t.ListNode(a("attribute_modifier"))},"minecraft:set_banner_pattern":{patterns:t.ListNode(t.ObjectNode({pattern:i({enum:"banner_pattern"}),color:i({enum:"dye_color"})})),append:t.Opt(t.BooleanNode())},"minecraft:set_contents":{entries:t.ListNode(a("loot_entry"))},"minecraft:set_count":{count:a("number_provider"),add:t.Opt(t.BooleanNode())},"minecraft:set_damage":{damage:a("number_provider"),add:t.Opt(t.BooleanNode())},"minecraft:set_enchantments":{enchantments:t.MapNode(i({validator:"resource",params:{pool:"enchantment"}}),a("number_provider")),add:t.Opt(t.BooleanNode())},"minecraft:set_loot_table":{name:i({validator:"resource",params:{pool:"$loot_table"}}),seed:t.Opt(t.NumberNode({integer:!0}))},"minecraft:set_lore":{entity:t.Opt(n),lore:t.ListNode(a("text_component")),replace:t.Opt(t.BooleanNode())},"minecraft:set_name":{entity:t.Opt(n),name:t.Opt(a("text_component"))},"minecraft:set_nbt":{tag:i({validator:"nbt",params:{registry:{category:"minecraft:item"}}})},"minecraft:set_potion":{id:i({validator:"resource",params:{pool:"potion"}})},"minecraft:set_stew_effect":{effects:t.Opt(t.ListNode(t.ObjectNode({type:i({validator:"resource",params:{pool:"mob_effect"}}),duration:a("number_provider")})))}},l={};return o.get("loot_function_type").forEach((t=>{l[t]=s(s({},c[t]),e)})),l},e.DimensionTypePresets=r=>t.ObjectOrPreset(i({validator:"resource",params:{pool:"$dimension_type"}}),r,{"minecraft:overworld":e.DefaultDimensionType,"minecraft:the_nether":{name:"minecraft:the_nether",ultrawarm:!0,natural:!1,shrunk:!0,piglin_safe:!0,respawn_anchor_works:!0,bed_works:!1,has_raids:!1,has_skylight:!1,has_ceiling:!0,ambient_light:.1,fixed_time:18e3,logical_height:128,effects:"minecraft:the_nether",infiniburn:"minecraft:infiniburn_nether",min_y:0,height:256},"minecraft:the_end":{name:"minecraft:the_end",ultrawarm:!1,natural:!1,shrunk:!1,piglin_safe:!1,respawn_anchor_works:!1,bed_works:!1,has_raids:!0,has_skylight:!1,has_ceiling:!1,ambient_light:0,fixed_time:6e3,logical_height:256,effects:"minecraft:the_end",infiniburn:"minecraft:infiniburn_end",min_y:0,height:256}}),e.NoiseSettingsPresets=n=>t.ObjectOrPreset(i({validator:"resource",params:{pool:"$worldgen/noise_settings"}}),n,{"minecraft:overworld":e.DefaultNoiseSettings,"minecraft:nether":{bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,noise_caves_enabled:!1,deepslate_enabled:!1,ore_veins_enabled:!1,noodle_caves_enabled:!1,disable_mob_generation:!1,aquifers_enabled:!1,default_block:{Name:"minecraft:netherrack"},default_fluid:{Properties:{level:"0"},Name:"minecraft:lava"},noise:{min_y:0,height:128,size_horizontal:1,size_vertical:2,density_factor:0,density_offset:-.030078125,top_slide:{target:.9375,size:3,offset:0},bottom_slide:{target:2.5,size:4,offset:-1},sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{structures:r}},"minecraft:end":{bedrock_roof_position:-2147483648,bedrock_floor_position:-2147483648,sea_level:0,noise_caves_enabled:!1,deepslate_enabled:!1,ore_veins_enabled:!1,noodle_caves_enabled:!1,disable_mob_generation:!1,aquifers_enabled:!1,default_block:{Name:"minecraft:end_stone"},default_fluid:{Name:"minecraft:air"},noise:{min_y:0,height:128,size_horizontal:2,size_vertical:1,density_factor:0,density_offset:0,island_noise_override:!0,top_slide:{target:-23.4375,size:64,offset:-46},bottom_slide:{target:-.234375,size:7,offset:1},sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{structures:r}},"minecraft:amplified":{bedrock_roof_position:-2147483648,bedrock_floor_position:0,sea_level:63,noise_caves_enabled:!0,deepslate_enabled:!0,ore_veins_enabled:!0,noodle_caves_enabled:!0,disable_mob_generation:!1,aquifers_enabled:!0,default_block:{Name:"minecraft:stone"},default_fluid:{Properties:{level:"0"},Name:"minecraft:water"},noise:{min_y:-64,height:384,size_horizontal:1,size_vertical:2,density_factor:1,density_offset:-.51875,amplified:!0,top_slide:{target:-.078125,size:2,offset:8},bottom_slide:{target:.1171875,size:3,offset:0},sampling:{xz_scale:.9999999814507745,y_scale:.9999999814507745,xz_factor:80,y_factor:160}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{stronghold:{distance:32,spread:3,count:128},structures:r}},"minecraft:caves":{bedrock_roof_position:0,bedrock_floor_position:0,sea_level:32,noise_caves_enabled:!1,deepslate_enabled:!1,ore_veins_enabled:!1,noodle_caves_enabled:!1,disable_mob_generation:!1,aquifers_enabled:!1,default_block:{Name:"minecraft:stone"},default_fluid:{Properties:{level:"0"},Name:"minecraft:water"},noise:{min_y:0,height:128,size_horizontal:1,size_vertical:2,density_factor:0,density_offset:-.030078125,top_slide:{target:.9375,size:3,offset:0},bottom_slide:{target:2.5,size:4,offset:-1},sampling:{xz_scale:1,y_scale:3,xz_factor:80,y_factor:60}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{stronghold:{distance:32,spread:3,count:128},structures:r}},"minecraft:floating_islands":{bedrock_roof_position:-2147483648,bedrock_floor_position:-2147483648,sea_level:0,noise_caves_enabled:!1,deepslate_enabled:!1,ore_veins_enabled:!1,noodle_caves_enabled:!1,disable_mob_generation:!1,aquifers_enabled:!1,default_block:{Name:"minecraft:stone"},default_fluid:{Properties:{level:"0"},Name:"minecraft:water"},noise:{min_y:0,height:128,size_horizontal:2,size_vertical:1,density_factor:0,density_offset:0,island_noise_override:!0,top_slide:{target:-23.4375,size:64,offset:-46},bottom_slide:{target:-.234375,size:7,offset:1},sampling:{xz_scale:2,y_scale:1,xz_factor:80,y_factor:160}},surface_rule:{type:"minecraft:sequence",sequence:[]},structures:{stronghold:{distance:32,spread:3,count:128},structures:r}}})}}(Fl);var El={};Object.defineProperty(El,"__esModule",{value:!0}),El.initConditionSchemas=void 0;const Dl=Ce,$l=Fl;El.initConditionSchemas=function(e,t){const r=Dl.Reference.bind(void 0,e),n=Dl.StringNode.bind(void 0,t);e.register("predicate",Dl.ObjectOrList(r("condition"),{choiceContext:"condition"})),e.register("condition",Dl.Mod(Dl.ObjectNode({condition:n({validator:"resource",params:{pool:"loot_condition_type"}}),[Dl.Switch]:[{push:"condition"}],[Dl.Case]:$l.ConditionCases()},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:entity_properties",entity:"this"})}))};var ql={};Object.defineProperty(ql,"__esModule",{value:!0}),ql.initDimensionSchemas=void 0;const Ul=Ce,Zl=Fl;ql.initDimensionSchemas=function(e,t){const r=Ul.Reference.bind(void 0,e),n=Ul.StringNode.bind(void 0,t);e.register("dimension",Ul.Mod(Ul.ObjectNode({type:Zl.DimensionTypePresets(r("dimension_type")),generator:Ul.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/chunk_generator"}}),[Ul.Switch]:[{push:"type"}],[Ul.Case]:{"minecraft:noise":{seed:Ul.NumberNode({integer:!0}),settings:Zl.NoiseSettingsPresets(r("noise_settings")),biome_source:Ul.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/biome_source"}}),[Ul.Switch]:[{push:"type"}],[Ul.Case]:{"minecraft:fixed":{biome:n({validator:"resource",params:{pool:"$worldgen/biome"}})},"minecraft:multi_noise":{preset:Ul.Opt(n({validator:"resource",params:{pool:["minecraft:overworld","minecraft:nether"]}})),biomes:Ul.Mod(Ul.ListNode(r("generator_biome")),{enabled:e=>void 0===e.push("preset").get(),default:()=>[{biome:"minecraft:plains"}]})},"minecraft:checkerboard":{scale:Ul.Opt(Ul.NumberNode({integer:!0,min:0,max:62})),biomes:Ul.ListNode(n({validator:"resource",params:{pool:"$worldgen/biome"}}))},"minecraft:the_end":{seed:Ul.NumberNode({integer:!0})}}},{category:"predicate",disableSwitchContext:!0})},"minecraft:flat":{settings:Ul.ObjectNode({biome:Ul.Opt(n({validator:"resource",params:{pool:"$worldgen/biome"}})),lakes:Ul.Opt(Ul.BooleanNode()),features:Ul.Opt(Ul.BooleanNode()),layers:Ul.ListNode(r("generator_layer")),structures:r("generator_structures")})}}},{disableSwitchContext:!0})},{category:"pool",context:"dimension"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:fixed",seed:e,biome:"minecraft:plains"},settings:"minecraft:overworld"}}}}));const o=Ul.ChoiceNode([{type:"number",node:Ul.NumberNode({min:-2,max:2}),change:e=>{var t;return null!==(t=e[0])&&void 0!==t?t:0}},{type:"list",node:Ul.ListNode(Ul.NumberNode({min:-2,max:2}),{minLength:2,maxLength:2}),change:e=>[null!=e?e:0,null!=e?e:0]}]);e.register("generator_biome",Ul.Mod(Ul.ObjectNode({biome:n({validator:"resource",params:{pool:"$worldgen/biome"}}),parameters:Ul.ObjectNode({temperature:o,humidity:o,continentalness:o,erosion:o,weirdness:o,depth:o,offset:Ul.NumberNode({min:0,max:1})})},{context:"generator_biome"}),{default:()=>({biome:"minecraft:plains",parameters:{altitude:0,temperature:0,humidity:0,weirdness:0,offset:0}})}))};var Hl={};Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.initDimensionTypeSchemas=void 0;const Wl=Ce,Xl=Fl;Hl.initDimensionTypeSchemas=function(e,t){const r=Wl.StringNode.bind(void 0,t);e.register("dimension_type",Wl.Mod(Wl.ObjectNode({ultrawarm:Wl.BooleanNode(),natural:Wl.BooleanNode(),piglin_safe:Wl.BooleanNode(),respawn_anchor_works:Wl.BooleanNode(),bed_works:Wl.BooleanNode(),has_raids:Wl.BooleanNode(),has_skylight:Wl.BooleanNode(),has_ceiling:Wl.BooleanNode(),coordinate_scale:Wl.NumberNode({min:1e-5,max:3e7}),ambient_light:Wl.NumberNode(),fixed_time:Wl.Opt(Wl.NumberNode({integer:!0})),logical_height:Wl.NumberNode({integer:!0,min:0,max:4096}),effects:Wl.Opt(r({enum:["minecraft:overworld","minecraft:the_nether","minecraft:the_end"]})),infiniburn:r({validator:"resource",params:{pool:"$tag/block"}}),min_y:Wl.NumberNode({integer:!0,min:-2048,max:2047}),height:Wl.NumberNode({integer:!0,min:0,max:4096})},{context:"dimension_type"}),(e=>({default:()=>Xl.DefaultDimensionType,validate:(t,r,n,o)=>((null==(r=e.validate(t,r,n,o))?void 0:r.min_y)+(null==r?void 0:r.height)>2047&&n.add(t.push("height"),"error.min_y_plus_height",2047),(null==r?void 0:r.logical_height)>(null==r?void 0:r.height)&&n.add(t.push("logical_height"),"error.logical_height"),(null==r?void 0:r.height)%16!=0&&n.add(t.push("height"),"error.height_multiple",16),(null==r?void 0:r.min_y)%16!=0&&n.add(t.push("min_y"),"error.min_y_multiple",16),r)}))))};var Gl={};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.initItemModifierSchemas=void 0;const Vl=Ce,Jl=Fl;Gl.initItemModifierSchemas=function(e,t){const r=Vl.Reference.bind(void 0,e),n=Vl.StringNode.bind(void 0,t);e.register("item_modifier",Vl.ObjectOrList(r("function"),{choiceContext:"function"}));const o={conditions:Vl.Opt(Vl.ListNode(r("condition")))};e.register("function",Vl.Mod(Vl.ObjectNode({function:n({validator:"resource",params:{pool:"loot_function_type"}}),[Vl.Switch]:[{push:"function"}],[Vl.Case]:Jl.FunctionCases(o)},{category:"function",context:"function"}),{default:()=>[{function:"minecraft:set_count",count:1}]}))};var Yl={},Kl={};Object.defineProperty(Kl,"__esModule",{value:!0}),Kl.LootFunctions=Kl.LootConditions=Kl.LootCopySources=Kl.LootEntitySources=Kl.LootTableTypes=void 0,Kl.LootTableTypes=new Map([["minecraft:advancement_entity",{requires:[7,8],allows:[]}],["minecraft:advancement_reward",{requires:[7,8],allows:[]}],["minecraft:barter",{requires:[8],allows:[]}],["minecraft:block",{requires:[1,7,9],allows:[0,4,8]}],["minecraft:chest",{requires:[7],allows:[8]}],["minecraft:command",{requires:[7],allows:[8]}],["minecraft:empty",{requires:[],allows:[]}],["minecraft:entity",{requires:[2,7,8],allows:[3,5,6]}],["minecraft:fishing",{requires:[7,9],allows:[8]}],["minecraft:generic",{requires:[2,0,1,3,4,5,6,7,8,9],allows:[]}],["minecraft:gift",{requires:[7,8],allows:[]}],["minecraft:selector",{requires:[7],allows:[8]}]]),Kl.LootEntitySources=new Map([["direct_killer",[3]],["killer",[5]],["killer_player",[5]],["this",[8]]]),Kl.LootCopySources=new Map([["block_entity",[0]],["killer",[5]],["killer_player",[5]],["this",[8]]]),Kl.LootConditions=new Map([["minecraft:alternative",[]],["minecraft:block_state_property",[1]],["minecraft:damage_source_properties",[2]],["minecraft:entity_properties",[7]],["minecraft:entity_scores",[]],["minecraft:inverted",[]],["minecraft:killed_by_player",[6]],["minecraft:location_check",[]],["minecraft:match_tool",[9]],["minecraft:random_chance",[]],["minecraft:random_chance_with_looting",[5]],["minecraft:reference",[]],["minecraft:survives_explosion",[4]],["minecraft:table_bonus",[9]],["minecraft:time_check",[]],["minecraft:weather_check",[]]]),Kl.LootFunctions=new Map([["minecraft:apply_bonus",[9]],["minecraft:copy_name",[]],["minecraft:copy_nbt",[]],["minecraft:copy_state",[1]],["minecraft:enchant_randomly",[]],["minecraft:enchant_with_levels",[]],["minecraft:exploration_map",[7]],["minecraft:explosion_decay",[]],["minecraft:fill_player_head",[]],["minecraft:furnace_smelt",[]],["minecraft:limit_count",[]],["minecraft:looting_enchant",[5]],["minecraft:set_attributes",[]],["minecraft:set_banner_pattern",[]],["minecraft:set_contents",[]],["minecraft:set_count",[]],["minecraft:set_damage",[]],["minecraft:set_loot_table",[]],["minecraft:set_lore",[]],["minecraft:set_name",[]],["minecraft:set_nbt",[]],["minecraft:set_stew_effect",[]]]),Object.defineProperty(Yl,"__esModule",{value:!0}),Yl.initLootTableSchemas=void 0;const Ql=Ce,ed=Kl,td=Fl;Yl.initLootTableSchemas=function(e,t){const r=Ql.Reference.bind(void 0,e),n=Ql.StringNode.bind(void 0,t),o={conditions:Ql.Opt(Ql.ListNode(r("loot_condition")))},i=s({functions:Ql.Opt(Ql.ListNode(r("loot_function")))},o);function a(e,r,n){const o=[],i=n=>t.get(r).filter((t=>{var r;return(null!==(r=e.get(t))&&void 0!==r?r:[]).every((e=>n.includes(e)))}));for(const[t,{allows:a,requires:s}]of ed.LootTableTypes){const e=[...a,...s];o.push({match:e=>e.getModel().get(new Ql.Path(["type"]))===t,node:n(i(e))})}return o.push({match:e=>!0,node:n(r)}),Ql.SwitchNode(o)}const c=a(ed.LootConditions,"loot_condition_type",(e=>n({validator:"resource",params:{pool:e instanceof Array?e:"loot_condition_type"}}))),l=a(ed.LootFunctions,"loot_function_type",(e=>n({validator:"resource",params:{pool:e instanceof Array?e:"loot_function_type"}}))),d=a(ed.LootEntitySources,"entity_source",(e=>n({enum:e}))),_=a(ed.LootCopySources,"copy_source",(e=>n({enum:e})));e.register("loot_table",Ql.Mod(Ql.ObjectNode({type:Ql.Opt(n({validator:"resource",params:{pool:t.get("loot_context_type")}})),pools:Ql.Opt(Ql.ListNode(Ql.Mod(Ql.ObjectNode(s({rolls:r("number_provider"),bonus_rolls:Ql.Opt(r("number_provider")),entries:Ql.ListNode(r("loot_entry"))},i),{category:"pool",context:"loot_pool"}),{default:()=>({rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]})}))),functions:Ql.Opt(Ql.ListNode(r("loot_function")))},{context:"loot_table"}),{default:()=>({pools:[{rolls:1,entries:[{type:"minecraft:item",name:"minecraft:stone"}]}]})}));const m={enabled:e=>{var t;return(null===(t=e.pop().get())||void 0===t?void 0:t.length)>1&&!["minecraft:alternatives","minecraft:group","minecraft:sequence"].includes(e.push("type").get())}};e.register("loot_entry",Ql.Mod(Ql.ObjectNode({type:n({validator:"resource",params:{pool:"loot_pool_entry_type"}}),weight:Ql.Opt(Ql.Mod(Ql.NumberNode({integer:!0,min:1}),m)),quality:Ql.Opt(Ql.Mod(Ql.NumberNode({integer:!0}),m)),[Ql.Switch]:[{push:"type"}],[Ql.Case]:{"minecraft:alternatives":s({children:Ql.ListNode(r("loot_entry"))},i),"minecraft:dynamic":s({name:n()},i),"minecraft:group":s({children:Ql.ListNode(r("loot_entry"))},i),"minecraft:item":s({name:n({validator:"resource",params:{pool:"item"}})},i),"minecraft:loot_table":s({name:n({validator:"resource",params:{pool:"$loot_table"}})},i),"minecraft:sequence":s({children:Ql.ListNode(r("loot_entry"))},i),"minecraft:tag":s({name:n({validator:"resource",params:{pool:"$tag/item"}}),expand:Ql.Opt(Ql.BooleanNode())},i)}},{context:"loot_entry"}),{default:()=>({type:"minecraft:item",name:"minecraft:stone"})})),e.register("loot_function",Ql.Mod(Ql.ObjectNode({function:l,[Ql.Switch]:[{push:"function"}],[Ql.Case]:td.FunctionCases(o,_,d)},{category:"function",context:"function"}),{default:()=>({function:"minecraft:set_count",count:1})})),e.register("loot_condition",Ql.Mod(Ql.ObjectNode({condition:c,[Ql.Switch]:[{push:"condition"}],[Ql.Case]:td.ConditionCases(d)},{category:"predicate",context:"condition"}),{default:()=>({condition:"minecraft:random_chance",chance:.5})})),e.register("attribute_modifier",Ql.Mod(Ql.ObjectNode({attribute:n({validator:"resource",params:{pool:"attribute"}}),name:n(),amount:r("number_provider"),operation:n({enum:["addition","multiply_base","multiply_total"]}),slot:Ql.StringOrList(n({enum:"slot"}))},{context:"attribute_modifier"}),{default:()=>({attribute:"minecraft:generic.max_health",name:"",amount:1,operation:"addition",slot:"mainhand"})}))};var rd={};Object.defineProperty(rd,"__esModule",{value:!0}),rd.initPackMcmetaSchemas=void 0;const nd=Ce;rd.initPackMcmetaSchemas=function(e,t){e.register("pack_mcmeta",nd.Mod(nd.ObjectNode({pack:nd.Mod(nd.ObjectNode({pack_format:nd.Mod(nd.NumberNode({integer:!0,min:7,max:7}),{default:()=>7,canUpdate:(e,t)=>7!==t,update:()=>[{name:"pack_format",params:[7],newValue:7}]}),description:nd.Reference(e,"text_component")}),{default:()=>({pack_format:7,description:""})})}),{default:()=>({pack:{pack_format:7,description:""}})}))};var od={};Object.defineProperty(od,"__esModule",{value:!0}),od.initPredicatesSchemas=void 0;const id=Ce;od.initPredicatesSchemas=function(e,t){const r=id.Reference.bind(void 0,e),n=id.StringNode.bind(void 0,t),o=id.ChoiceNode([{type:"string",node:n(),change:e=>"boolean"==typeof e||"number"==typeof e?e.toString():""},{type:"number",node:id.NumberNode(),change:e=>"string"==typeof e?parseInt(e):0},{type:"object",node:id.ObjectNode({min:id.Opt(id.NumberNode({integer:!0})),max:id.Opt(id.NumberNode({integer:!0}))}),change:e=>"number"==typeof e?{min:e,max:e}:{}},{type:"boolean",node:id.BooleanNode(),change:e=>"true"===e||1===e}]);e.register("item_predicate",id.ObjectNode({items:id.Opt(id.ListNode(n({validator:"resource",params:{pool:"item"}}))),tag:id.Opt(n({validator:"resource",params:{pool:"$tag/item"}})),count:r("int_bounds"),durability:r("int_bounds"),potion:id.Opt(n({validator:"resource",params:{pool:"potion"}})),nbt:id.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"item"}]}}})),enchantments:id.Opt(id.ListNode(r("enchantment_predicate")))},{context:"item"})),e.register("enchantment_predicate",id.ObjectNode({enchantment:id.Opt(n({validator:"resource",params:{pool:"enchantment"}})),levels:r("int_bounds")},{context:"enchantment"})),e.register("block_predicate",id.ObjectNode({blocks:id.Opt(id.ListNode(n({validator:"resource",params:{pool:"block"}}))),tag:id.Opt(n({validator:"resource",params:{pool:"$tag/block"}})),nbt:id.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:block",id:["pop",{push:"block"}]}}})),state:id.Opt(id.MapNode(n(),o,{validation:{validator:"block_state_map",params:{id:["pop",{push:"block"}]}}}))},{context:"block"})),e.register("fluid_predicate",id.ObjectNode({fluid:id.Opt(n({validator:"resource",params:{pool:"fluid"}})),tag:id.Opt(n({validator:"resource",params:{pool:"$tag/fluid"}})),state:id.Opt(id.MapNode(n(),o))},{context:"fluid"})),e.register("location_predicate",id.ObjectNode({position:id.Opt(id.ObjectNode({x:r("float_bounds"),y:r("float_bounds"),z:r("float_bounds")})),biome:id.Opt(n({validator:"resource",params:{pool:"$worldgen/biome"}})),feature:id.Opt(n({enum:t.get("worldgen/structure_feature").map((e=>e.slice(10)))})),dimension:id.Opt(n({validator:"resource",params:{pool:"$dimension"}})),light:id.Opt(id.ObjectNode({light:r("int_bounds")})),smokey:id.Opt(id.BooleanNode()),block:id.Opt(r("block_predicate")),fluid:id.Opt(r("fluid_predicate"))},{context:"location"})),e.register("statistic_predicate",id.ObjectNode({type:n({validator:"resource",params:{pool:"stat_type"}}),stat:n(),value:r("int_bounds"),[id.Switch]:[{push:"type"}],[id.Case]:{"minecraft:mined":{stat:n({validator:"resource",params:{pool:"block"}})},"minecraft:crafted":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:used":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:broken":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:picked_up":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:dropped":{stat:n({validator:"resource",params:{pool:"item"}})},"minecraft:killed":{stat:n({validator:"resource",params:{pool:"entity_type"}})},"minecraft:killed_by":{stat:n({validator:"resource",params:{pool:"entity_type"}})},"minecraft:custom":{stat:n({validator:"resource",params:{pool:"custom_stat"}})}}})),e.register("player_predicate",id.ObjectNode({gamemode:id.Opt(n({enum:"gamemode"})),level:r("int_bounds"),advancements:id.Opt(id.MapNode(n({validator:"resource",params:{pool:"$advancement"}}),id.ChoiceNode([{type:"boolean",node:id.BooleanNode(),change:e=>!0},{type:"object",node:id.MapNode(n(),id.BooleanNode())}]))),recipes:id.Opt(id.MapNode(n({validator:"resource",params:{pool:"$recipe"}}),id.BooleanNode())),stats:id.Opt(id.ListNode(r("statistic_predicate"))),looking_at:id.Opt(r("entity_predicate"))},{context:"player"})),e.register("status_effect_predicate",id.ObjectNode({amplifier:r("int_bounds"),duration:r("int_bounds"),ambient:id.Opt(id.BooleanNode()),visible:id.Opt(id.BooleanNode())},{context:"status_effect"})),e.register("distance_predicate",id.ObjectNode({x:r("float_bounds"),y:r("float_bounds"),z:r("float_bounds"),absolute:r("float_bounds"),horizontal:r("float_bounds")},{context:"distance"})),e.register("entity_predicate",id.ObjectNode({type:id.Opt(n({validator:"resource",params:{pool:"entity_type",allowTag:!0}})),nbt:id.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:entity",id:["pop",{push:"type"}]}}})),team:id.Opt(n({validator:"team"})),location:id.Opt(r("location_predicate")),stepping_on:id.Opt(r("location_predicate")),distance:id.Opt(r("distance_predicate")),flags:id.Opt(id.ObjectNode({is_on_fire:id.Opt(id.BooleanNode()),is_sneaking:id.Opt(id.BooleanNode()),is_sprinting:id.Opt(id.BooleanNode()),is_swimming:id.Opt(id.BooleanNode()),is_baby:id.Opt(id.BooleanNode())})),equipment:id.Opt(id.MapNode(n({enum:"slot"}),r("item_predicate"))),player:id.Opt(r("player_predicate")),vehicle:id.Opt(r("entity_predicate")),passenger:id.Opt(r("entity_predicate")),targeted_entity:id.Opt(r("entity_predicate")),lightning_bolt:id.Opt(id.ObjectNode({blocks_set_on_fire:id.Opt(r("int_bounds")),entity_struck:id.Opt(r("entity_predicate"))})),fishing_hook:id.Opt(id.ObjectNode({in_open_water:id.Opt(id.BooleanNode())})),effects:id.Opt(id.MapNode(n({validator:"resource",params:{pool:"mob_effect"}}),r("status_effect_predicate")))},{context:"entity"})),e.register("damage_source_predicate",id.ObjectNode({is_explosion:id.Opt(id.BooleanNode()),is_fire:id.Opt(id.BooleanNode()),is_magic:id.Opt(id.BooleanNode()),is_projectile:id.Opt(id.BooleanNode()),is_lightning:id.Opt(id.BooleanNode()),bypasses_armor:id.Opt(id.BooleanNode()),bypasses_invulnerability:id.Opt(id.BooleanNode()),bypasses_magic:id.Opt(id.BooleanNode()),source_entity:id.Opt(r("entity_predicate")),direct_entity:id.Opt(r("entity_predicate"))},{context:"damage_source"})),e.register("damage_predicate",id.ObjectNode({dealt:r("float_bounds"),taken:r("float_bounds"),blocked:id.Opt(id.BooleanNode()),source_entity:id.Opt(r("entity_predicate")),type:id.Opt(r("damage_source_predicate"))},{context:"damage"}))};var ad={};Object.defineProperty(ad,"__esModule",{value:!0}),ad.initRecipeSchemas=void 0;const sd=Ce;ad.initRecipeSchemas=function(e,t){const r=sd.Reference.bind(void 0,e),n=sd.StringNode.bind(void 0,t);e.register("recipe",sd.Mod(sd.ObjectNode({type:n({validator:"resource",params:{pool:"recipe_serializer"}}),[sd.Switch]:[{push:"type"}],[sd.Case]:{"minecraft:crafting_shaped":{group:sd.Opt(n({enum:"recipe_group",additional:!0})),pattern:sd.ListNode(n()),key:sd.MapNode(n(),r("recipe_ingredient")),result:r("recipe_result")},"minecraft:crafting_shapeless":{group:sd.Opt(n()),ingredients:sd.ListNode(r("recipe_ingredient")),result:r("recipe_result")},"minecraft:smelting":{group:sd.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:sd.Opt(sd.NumberNode()),cookingtime:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>200}))},"minecraft:blasting":{group:sd.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:sd.Opt(sd.NumberNode()),cookingtime:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:smoking":{group:sd.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:sd.Opt(sd.NumberNode()),cookingtime:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:campfire_cooking":{group:sd.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),experience:sd.Opt(sd.NumberNode()),cookingtime:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>100}))},"minecraft:stonecutting":{group:sd.Opt(n()),ingredient:r("recipe_ingredient"),result:n({validator:"resource",params:{pool:"item"}}),count:sd.NumberNode({integer:!0})},"minecraft:smithing":{group:sd.Opt(n()),base:r("recipe_ingredient_object"),addition:r("recipe_ingredient_object"),result:r("recipe_result")}}},{context:"recipe",disableSwitchContext:!0}),{default:()=>({type:"minecraft:crafting_shaped"})})),e.register("recipe_ingredient",sd.Mod(sd.ChoiceNode([{type:"object",node:r("recipe_ingredient_object"),change:e=>e[0]},{type:"list",node:sd.ListNode(r("recipe_ingredient_object")),change:e=>[e]}]),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_ingredient_object",sd.Mod(sd.ObjectNode({item:sd.Opt(n({validator:"resource",params:{pool:"item"}})),tag:sd.Opt(n({validator:"resource",params:{pool:"$tag/item"}}))}),{default:()=>({item:"minecraft:stone"})})),e.register("recipe_result",sd.Mod(sd.ObjectNode({item:n({validator:"resource",params:{pool:"item"}}),count:sd.Opt(sd.Mod(sd.NumberNode({integer:!0}),{default:()=>1}))}),{default:()=>({item:"minecraft:stone"})}))};var cd={};Object.defineProperty(cd,"__esModule",{value:!0}),cd.initTagsSchemas=void 0;const ld=Ce;cd.initTagsSchemas=function(e,t){const r=ld.StringNode.bind(void 0,t),n=e=>ld.Mod(ld.ObjectNode({replace:ld.Opt(ld.BooleanNode()),values:ld.ListNode(ld.ChoiceNode([{type:"string",node:r({validator:"resource",params:{pool:e,allowTag:!0}}),change:e=>e.id},{type:"object",node:ld.ObjectNode({id:r({validator:"resource",params:{pool:e,allowTag:!0,allowUnknown:!0}}),required:ld.BooleanNode()}),change:e=>({id:e})}]))},{context:"tag"}),{default:()=>({values:[]})});e.register("block_tag",n("block")),e.register("entity_type_tag",n("entity_type")),e.register("fluid_tag",n("fluid")),e.register("function_tag",n("$function")),e.register("game_event_tag",n("game_event")),e.register("item_tag",n("item"))};var dd={};Object.defineProperty(dd,"__esModule",{value:!0}),dd.initTextComponentSchemas=void 0;const _d=Ce;dd.initTextComponentSchemas=function(e,t){const r=_d.Reference.bind(void 0,e),n=_d.StringNode.bind(void 0,t),o=e=>{var t;return e instanceof Array?o(e[0]):null!==(t=null==e?void 0:e.text)&&void 0!==t?t:"object"==typeof e?"":null==e?void 0:e.toString()};e.register("text_component",_d.Mod(_d.ChoiceNode([{type:"object",node:r("text_component_object"),change:e=>e instanceof Array?"object"==typeof e[0]?e[0]:{text:o(e[0])}:"object"==typeof e?e:{text:o(e)}},{type:"list",node:r("text_component_list"),change:e=>[e]},{type:"string",priority:1,node:n(),change:o},{type:"number",node:_d.NumberNode(),change:e=>{const t=parseFloat(o(e));return isFinite(t)?t:e?1:0}},{type:"boolean",node:_d.BooleanNode(),change:e=>{const t=o(e);return"true"===t||"false"===t?"true"===t:!!t}}],{context:"text_component"}),{default:()=>({text:""})}));const i={color:_d.Opt(n()),font:_d.Opt(n()),bold:_d.Opt(_d.BooleanNode()),italic:_d.Opt(_d.BooleanNode()),underlined:_d.Opt(_d.BooleanNode()),strikethrough:_d.Opt(_d.BooleanNode()),obfuscated:_d.Opt(_d.BooleanNode()),insertion:_d.Opt(n()),clickEvent:_d.Opt(_d.ObjectNode({action:n({enum:["open_url","open_file","run_command","suggest_command","change_page","copy_to_clipboard"]}),[_d.Switch]:[{push:"action"}],[_d.Case]:{change_page:{value:n()},copy_to_clipboard:{value:n()},open_file:{value:n()},open_url:{value:n()},run_command:{value:n({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})},suggest_command:{value:n({validator:"command",params:{leadingSlash:!0,allowPartial:!0}})}}})),hoverEvent:_d.Opt(_d.ObjectNode({action:n({enum:["show_text","show_item","show_entity"]}),[_d.Switch]:[{push:"action"}],[_d.Case]:{show_text:{value:_d.Opt(r("text_component")),contents:_d.Opt(r("text_component"))},show_item:{value:_d.Opt(n({validator:"nbt",params:{module:"util::InventoryItem"}})),contents:_d.Opt(_d.ObjectNode({id:n({validator:"resource",params:{pool:"item"}}),count:_d.Opt(_d.NumberNode({integer:!0})),tag:_d.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:item",id:["pop",{push:"id"}]}}}))}))},show_entity:{value:_d.Opt(_d.ObjectNode({name:_d.Opt(n()),type:_d.Opt(n()),id:_d.Opt(n())})),contents:_d.Opt(_d.Mod(_d.ObjectNode({name:_d.Opt(r("text_component")),type:n({validator:"resource",params:{pool:"entity_type"}}),id:n({validator:"uuid"})}),{default:()=>({type:"minecraft:pig",id:"00000001-0001-0001-0001-000000000001"})}))}}})),extra:_d.Opt(r("text_component_list"))};e.register("text_component_object",_d.Mod(_d.ChoiceNode([{type:"text",match:e=>"object"==typeof e,change:e=>({text:""}),priority:-1,node:_d.ObjectNode(s({text:n()},i))},{type:"translation",match:e=>void 0!==(null==e?void 0:e.translate),change:e=>({translate:""}),node:_d.ObjectNode(s({translate:n(),with:_d.Opt(r("text_component_list"))},i))},{type:"score",match:e=>void 0!==(null==e?void 0:e.score),change:e=>({score:{}}),node:_d.ObjectNode(s({score:_d.ObjectNode({name:n({validator:"entity",params:{amount:"single",type:"entities",isScoreHolder:!0}}),objective:n({validator:"objective"}),value:_d.Opt(n())})},i))},{type:"selector",match:e=>void 0!==(null==e?void 0:e.selector),change:e=>({selector:""}),node:_d.ObjectNode(s({selector:n({validator:"entity",params:{amount:"multiple",type:"entities"}}),separator:_d.Opt(r("text_component"))},i))},{type:"keybind",match:e=>void 0!==(null==e?void 0:e.keybind),change:e=>({keybind:""}),node:_d.ObjectNode(s({keybind:n({enum:"keybind",additional:!0})},i))},{type:"nbt",match:e=>void 0!==(null==e?void 0:e.nbt),change:e=>({nbt:""}),node:_d.ObjectNode(s({nbt:n({validator:"nbt_path"}),block:_d.Opt(n({validator:"vector",params:{dimension:3,isInteger:!0}})),entity:_d.Opt(n({validator:"entity",params:{amount:"multiple",type:"entities"}})),storage:_d.Opt(n({validator:"resource",params:{pool:"$storage"}})),interpret:_d.Opt(_d.BooleanNode()),separator:_d.Opt(r("text_component"))},i))}],{context:"text_component_object",choiceContext:"text_component.object"}),{default:()=>({text:""})})),e.register("text_component_list",_d.Mod(_d.ListNode(r("text_component")),{default:()=>[{text:""}]}))};var md={},pd={};Object.defineProperty(pd,"__esModule",{value:!0}),pd.initBiomeSchemas=void 0;const ud=Ce;pd.initBiomeSchemas=function(e,t){const r=ud.StringNode.bind(void 0,t);e.register("biome",ud.Mod(ud.ObjectNode({temperature:ud.NumberNode(),downfall:ud.NumberNode(),precipitation:r({enum:["none","rain","snow"]}),temperature_modifier:ud.Opt(r({enum:["none","frozen"]})),category:r({enum:"biome_category"}),player_spawn_friendly:ud.Opt(ud.BooleanNode()),creature_spawn_probability:ud.Opt(ud.NumberNode({min:0,max:1})),effects:ud.ObjectNode({sky_color:ud.NumberNode({color:!0}),fog_color:ud.NumberNode({color:!0}),water_color:ud.NumberNode({color:!0}),water_fog_color:ud.NumberNode({color:!0}),grass_color:ud.Opt(ud.NumberNode({color:!0})),foliage_color:ud.Opt(ud.NumberNode({color:!0})),grass_color_modifier:ud.Opt(r({enum:["none","dark_forest","swamp"]})),ambient_sound:ud.Opt(r()),mood_sound:ud.Opt(ud.ObjectNode({sound:r(),tick_delay:ud.NumberNode({integer:!0}),block_search_extent:ud.NumberNode({integer:!0}),offset:ud.NumberNode()})),additions_sound:ud.Opt(ud.ObjectNode({sound:r(),tick_chance:ud.NumberNode({min:0,max:1})})),music:ud.Opt(ud.ObjectNode({sound:r(),min_delay:ud.NumberNode({integer:!0,min:0}),max_delay:ud.NumberNode({integer:!0,min:0}),replace_current_music:ud.BooleanNode()})),particle:ud.Opt(ud.ObjectNode({options:ud.ObjectNode({type:r()}),probability:ud.NumberNode({min:0,max:1})}))}),spawners:ud.MapNode(r({enum:["monster","creature","ambient","axolotls","underground_water_creature","water_creature","water_ambient","misc"]}),ud.Mod(ud.ListNode(ud.ObjectNode({type:r({validator:"resource",params:{pool:"entity_type"}}),weight:ud.NumberNode({integer:!0}),minCount:ud.NumberNode({integer:!0}),maxCount:ud.NumberNode({integer:!0})})),{category:()=>"pool",default:()=>[{type:"minecraft:bat",weight:1}]})),spawn_costs:ud.MapNode(r({validator:"resource",params:{pool:"entity_type"}}),ud.Mod(ud.ObjectNode({energy_budget:ud.NumberNode(),charge:ud.NumberNode()},{category:"function"}),{default:()=>({energy_budget:.12,charge:1})})),carvers:ud.MapNode(r({enum:["air","liquid"]}),ud.Mod(ud.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_carver"}})),{default:()=>["minecraft:cave"]})),features:ud.ListNode(ud.Mod(ud.ListNode(r({validator:"resource",params:{pool:"$worldgen/configured_feature"}})),{category:()=>"predicate"}),{maxLength:11})},{context:"biome"}),{default:()=>({temperature:.8,downfall:.4,precipitation:"rain",category:"plains",effects:{sky_color:7907327,fog_color:12638463,water_color:4159204,water_fog_color:329011}})}))};var fd={};Object.defineProperty(fd,"__esModule",{value:!0}),fd.initCarverSchemas=void 0;const hd=Ce,gd=Fl;fd.initCarverSchemas=function(e,t){const r=hd.Reference.bind(void 0,e),n=hd.StringNode.bind(void 0,t),o={vertical_rotation:gd.FloatProvider(),shape:hd.ObjectNode({distance_factor:gd.FloatProvider(),thickness:gd.FloatProvider(),width_smoothness:hd.NumberNode({integer:!0,min:0}),horizontal_radius_factor:gd.FloatProvider(),vertical_radius_default_factor:hd.NumberNode(),vertical_radius_center_factor:hd.NumberNode()})},i={horizontal_radius_multiplier:gd.FloatProvider(),vertical_radius_multiplier:gd.FloatProvider(),floor_level:gd.FloatProvider({min:-1,max:1})};e.register("configured_carver",hd.Mod(hd.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/carver"}}),config:hd.ObjectNode({probability:hd.NumberNode({min:0,max:1}),y:r("height_provider"),yScale:gd.FloatProvider(),lava_level:r("vertical_anchor"),debug_settings:hd.Opt(hd.ObjectNode({debug_mode:hd.Opt(hd.BooleanNode()),air_state:hd.Opt(r("block_state")),water_state:hd.Opt(r("block_state")),lava_state:hd.Opt(r("block_state")),barrier_state:hd.Opt(r("block_state"))})),[hd.Switch]:["pop",{push:"type"}],[hd.Case]:{"minecraft:canyon":o,"minecraft:cave":i,"minecraft:nether_cave":i}})},{context:"carver"}),{default:()=>({type:"minecraft:cave",config:{probability:.1}})}))};var bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.initDecoratorSchemas=void 0;const vd=Ce,yd=Fl;bd.initDecoratorSchemas=function(e,t){const r=vd.Reference.bind(void 0,e),n=vd.StringNode.bind(void 0,t),o={count:yd.IntProvider({min:0,max:256})};e.register("configured_decorator",vd.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/decorator"}}),config:vd.ObjectNode({[vd.Switch]:["pop",{push:"type"}],[vd.Case]:{"minecraft:block_filter":{predicate:r("block_predicate_worldgen")},"minecraft:carving_mask":{step:n({enum:"generation_step"})},"minecraft:cave_surface":{surface:n({enum:["floor","ceiling"]}),floor_to_ceiling_search_range:vd.NumberNode({integer:!0}),allow_water:vd.BooleanNode()},"minecraft:chance":{chance:vd.NumberNode({integer:!0,min:0})},"minecraft:count":o,"minecraft:count_extra":{count:vd.NumberNode({integer:!0,min:0}),extra_count:vd.NumberNode({integer:!0,min:0}),extra_chance:vd.NumberNode({min:0,max:1})},"minecraft:count_multilayer":o,"minecraft:count_noise":{noise_level:vd.NumberNode(),below_noise:vd.NumberNode({integer:!0}),above_noise:vd.NumberNode({integer:!0})},"minecraft:count_noise_biased":{noise_to_count_ratio:vd.NumberNode({integer:!0}),noise_factor:vd.NumberNode(),noise_offset:vd.Opt(vd.NumberNode())},"minecraft:decorated":{outer:r("configured_decorator"),inner:r("configured_decorator")},"minecraft:environment_scan":{direction_of_search:n({enum:["up","down"]}),max_steps:vd.NumberNode({integer:!0,min:1,max:32}),target_condition:r("block_predicate_worldgen")},"minecraft:heightmap":{heightmap:n({enum:"heightmap_type"})},"minecraft:lava_lake":{chance:vd.NumberNode({integer:!0,min:0})},"minecraft:range":{height:r("height_provider")},"minecraft:scatter":{xz_spread:yd.IntProvider({min:-16,max:16}),y_spread:yd.IntProvider({min:-16,max:16})},"minecraft:surface_relative_threshold":{heightmap:n({enum:"heightmap_type"}),min_inclusive:vd.Opt(vd.NumberNode({integer:!0})),max_inclusive:vd.Opt(vd.NumberNode({integer:!0}))},"minecraft:water_depth_threshold":{max_water_depth:vd.NumberNode({integer:!0})}}},{context:"decorator",category:"predicate"})},{context:"decorator",category:"predicate"}))};var Nd={},kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.initProcessorListSchemas=kd.Processors=void 0;const wd=Ce;kd.initProcessorListSchemas=function(e,t){const r=wd.Reference.bind(void 0,e),n=wd.StringNode.bind(void 0,t);kd.Processors=wd.ChoiceNode([{type:"string",node:n({validator:"resource",params:{pool:"$worldgen/processor_list"}}),change:e=>{}},{type:"object",node:r("processor_list"),change:e=>({processors:[{processor_type:"minecraft:nop"}]})}]),e.register("processor_list",wd.Mod(wd.ObjectNode({processors:wd.ListNode(r("processor"))},{context:"processor_list"}),{default:()=>({processors:[{processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]}]})})),e.register("processor",wd.Mod(wd.ObjectNode({processor_type:n({validator:"resource",params:{pool:"worldgen/structure_processor"}}),[wd.Switch]:[{push:"processor_type"}],[wd.Case]:{"minecraft:block_age":{mossiness:wd.NumberNode()},"minecraft:block_ignore":{blocks:wd.ListNode(r("block_state"))},"minecraft:block_rot":{integrity:wd.NumberNode({min:0,max:1})},"minecraft:gravity":{heightmap:n({enum:"heightmap_type"}),offset:wd.NumberNode({integer:!0})},"minecraft:protected_blocks":{value:n({validator:"resource",params:{pool:"$tag/block"}})},"minecraft:rule":{rules:wd.ListNode(r("processor_rule"))}}},{category:"function",context:"processor"}),{default:()=>({processor_type:"minecraft:rule",rules:[{location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}}]})})),e.register("processor_rule",wd.Mod(wd.ObjectNode({position_predicate:wd.Opt(r("pos_rule_test")),location_predicate:r("rule_test"),input_predicate:r("rule_test"),output_state:r("block_state"),output_nbt:wd.Opt(n({validator:"nbt",params:{registry:{category:"minecraft:block"}}}))},{category:"predicate",context:"processor_rule"}),{default:()=>({location_predicate:{predicate_type:"minecraft:always_true"},input_predicate:{predicate_type:"minecraft:always_true"}})}));const o={min_dist:wd.Opt(wd.NumberNode({min:0,max:255,integer:!0})),max_dist:wd.Opt(wd.NumberNode({min:0,max:255,integer:!0})),min_chance:wd.Opt(wd.NumberNode({min:0,max:1})),max_chance:wd.Opt(wd.NumberNode({min:0,max:1}))};e.register("pos_rule_test",wd.ObjectNode({predicate_type:n({validator:"resource",params:{pool:"pos_rule_test"}}),[wd.Switch]:[{push:"predicate_type"}],[wd.Case]:{"minecraft:axis_aligned_linear_pos":s({axis:n({enum:["x","y","z"]})},o),"minecraft:linear_pos":o}},{context:"pos_rule_test",disableSwitchContext:!0})),e.register("rule_test",wd.ObjectNode({predicate_type:n({validator:"resource",params:{pool:"rule_test"}}),[wd.Switch]:[{push:"predicate_type"}],[wd.Case]:{"minecraft:block_match":{block:n({validator:"resource",params:{pool:"block"}})},"minecraft:blockstate_match":{block_state:r("block_state")},"minecraft:random_block_match":{block:n({validator:"resource",params:{pool:"block"}}),probability:wd.NumberNode({min:0,max:1})},"minecraft:random_blockstate_match":{block_state:r("block_state"),probability:wd.NumberNode({min:0,max:1})},"minecraft:tag_match":{tag:n({validator:"resource",params:{pool:"$tag/block"}})}}},{context:"rule_test",disableSwitchContext:!0}))},Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.initFeatureSchemas=void 0;const Od=Ce,xd=Fl,Sd=kd;Nd.initFeatureSchemas=function(e,t){const r=Od.Reference.bind(void 0,e),n=Od.StringNode.bind(void 0,t),o=Od.ChoiceNode([{type:"string",node:n({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},{type:"object",node:r("configured_feature")}],{choiceContext:"feature"}),i={tries:Od.Opt(Od.NumberNode({integer:!0,min:1})),xz_spread:Od.Opt(Od.NumberNode({integer:!0,min:0})),y_spread:Od.Opt(Od.NumberNode({integer:!0,min:0})),feature:o},a={state:r("block_state"),radius:xd.IntProvider({min:0,max:8}),half_height:Od.NumberNode({integer:!0,min:0,max:4}),targets:Od.ListNode(r("block_state"))},l={cap_provider:r("block_state_provider"),stem_provider:r("block_state_provider"),foliage_radius:Od.Opt(Od.NumberNode({integer:!0}))},d=Od.ObjectNode({target:r("rule_test"),state:r("block_state")}),_={size:Od.NumberNode({integer:!0,min:0,max:64}),discard_chance_on_air_exposure:Od.NumberNode({min:0,max:1}),targets:Od.ListNode(d)},m={surface:n({enum:"cave_surface"}),depth:xd.IntProvider({min:1,max:128}),vertical_range:Od.NumberNode({integer:!0,min:1,max:256}),extra_bottom_block_chance:Od.NumberNode({min:0,max:1}),extra_edge_column_chance:Od.NumberNode({min:0,max:1}),vegetation_chance:Od.NumberNode({min:0,max:1}),xz_radius:xd.IntProvider(),replaceable:n({validator:"resource",params:{pool:"$tag/block"}}),ground_state:r("block_state_provider"),vegetation_feature:o};e.register("configured_feature",Od.Mod(Od.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/feature"}}),config:Od.ObjectNode({[Od.Switch]:["pop",{push:"type"}],[Od.Case]:{"minecraft:bamboo":{probability:Od.NumberNode({min:0,max:1})},"minecraft:basalt_columns":{reach:xd.IntProvider({min:0,max:3}),height:xd.IntProvider({min:1,max:10})},"minecraft:block_column":{direction:n({enum:["up","down","north","east","south","west"]}),allowed_placement:r("block_predicate_worldgen"),prioritize_tip:Od.BooleanNode(),layers:Od.ListNode(Od.ObjectNode({height:xd.IntProvider({min:0}),provider:r("block_state_provider")}))},"minecraft:block_pile":{state_provider:r("block_state_provider")},"minecraft:decorated":{decorator:r("configured_decorator"),feature:o},"minecraft:decorated_flower":{decorator:r("configured_decorator"),feature:o},"minecraft:delta_feature":{contents:r("block_state"),rim:r("block_state"),size:xd.IntProvider({min:0,max:16}),rim_size:xd.IntProvider({min:0,max:16})},"minecraft:disk":a,"minecraft:dripstone_cluster":{floor_to_ceiling_search_range:Od.NumberNode({integer:!0,min:1,max:512}),height:xd.IntProvider({min:0,max:128}),radius:xd.IntProvider({min:0,max:128}),max_stalagmite_stalactite_height_diff:Od.NumberNode({integer:!0,min:0,max:64}),height_deviation:Od.NumberNode({integer:!0,min:1,max:64}),dripstone_block_layer_thickness:xd.IntProvider({min:0,max:128}),density:xd.FloatProvider({min:0,max:2}),wetness:xd.FloatProvider({min:0,max:2}),chance_of_dripstone_column_at_max_distance_from_center:Od.NumberNode({min:0,max:1}),max_distance_from_edge_affecting_chance_of_dripstone_column:Od.NumberNode({integer:!0,min:1,max:64}),max_distance_from_center_affecting_height_bias:Od.NumberNode({integer:!0,min:1,max:64})},"minecraft:end_gateway":{exact:Od.BooleanNode(),exit:Od.Opt(r("block_pos"))},"minecraft:end_spike":{crystal_invulnerable:Od.Opt(Od.BooleanNode()),crystal_beam_target:Od.Opt(r("block_pos")),spikes:Od.ListNode(Od.ObjectNode({centerX:Od.Opt(Od.NumberNode({integer:!0})),centerZ:Od.Opt(Od.NumberNode({integer:!0})),radius:Od.Opt(Od.NumberNode({integer:!0})),height:Od.Opt(Od.NumberNode({integer:!0})),guarded:Od.Opt(Od.BooleanNode())}))},"minecraft:fill_layer":{state:r("block_state"),height:Od.NumberNode({integer:!0,min:0,max:255})},"minecraft:flower":i,"minecraft:forest_rock":{state:r("block_state")},"minecraft:fossil":{max_empty_corners_allowed:Od.NumberNode({integer:!0,min:0,max:7}),fossil_structures:Od.ListNode(n({validator:"resource",params:{pool:"$structure"}})),overlay_structures:Od.ListNode(n({validator:"resource",params:{pool:"$structure"}})),fossil_processors:Sd.Processors,overlay_processors:Sd.Processors},"minecraft:geode":{blocks:Od.ObjectNode({filling_provider:r("block_state_provider"),inner_layer_provider:r("block_state_provider"),alternate_inner_layer_provider:r("block_state_provider"),middle_layer_provider:r("block_state_provider"),outer_layer_provider:r("block_state_provider"),inner_placements:Od.ListNode(r("block_state")),cannot_replace:n({validator:"resource",params:{pool:"$tag/block"}}),invalid_blocks:n({validator:"resource",params:{pool:"$tag/block"}})}),layers:Od.ObjectNode({filling:Od.Opt(Od.NumberNode({min:.01,max:50})),inner_layer:Od.Opt(Od.NumberNode({min:.01,max:50})),middle_layer:Od.Opt(Od.NumberNode({min:.01,max:50})),outer_layer:Od.Opt(Od.NumberNode({min:.01,max:50}))}),crack:Od.ObjectNode({generate_crack_chance:Od.Opt(Od.NumberNode({min:0,max:1})),base_crack_size:Od.Opt(Od.NumberNode({min:0,max:5})),crack_point_offset:Od.Opt(Od.NumberNode({min:0,max:10,integer:!0}))}),noise_multiplier:Od.Opt(Od.NumberNode({min:0,max:1})),use_potential_placements_chance:Od.Opt(Od.NumberNode({min:0,max:1})),use_alternate_layer0_chance:Od.Opt(Od.NumberNode({min:0,max:1})),placements_require_layer0_alternate:Od.Opt(Od.BooleanNode()),outer_wall_distance:Od.Opt(xd.IntProvider({min:1,max:20})),distribution_points:Od.Opt(xd.IntProvider({min:1,max:20})),point_offset:Od.Opt(xd.IntProvider({min:0,max:10})),min_gen_offset:Od.Opt(Od.NumberNode({integer:!0})),max_gen_offset:Od.Opt(Od.NumberNode({integer:!0})),invalid_blocks_threshold:Od.NumberNode({integer:!0})},"minecraft:glow_lichen":{search_range:Od.Opt(Od.NumberNode({min:1,max:64,integer:!0})),chance_of_spreading:Od.Opt(Od.NumberNode({min:0,max:1})),can_place_on_floor:Od.Opt(Od.BooleanNode()),can_place_on_ceiling:Od.Opt(Od.BooleanNode()),can_place_on_wall:Od.Opt(Od.BooleanNode()),can_be_placed_on:Od.ListNode(r("block_state"))},"minecraft:huge_brown_mushroom":l,"minecraft:huge_fungus":{hat_state:r("block_state"),decor_state:r("block_state"),stem_state:r("block_state"),valid_base_block:r("block_state"),planted:Od.Opt(Od.BooleanNode())},"minecraft:huge_red_mushroom":l,"minecraft:ice_patch":a,"minecraft:iceberg":{state:r("block_state")},"minecraft:lake":{state:r("block_state")},"minecraft:large_dripstone":{floor_to_ceiling_search_range:Od.Opt(Od.NumberNode({integer:!0,min:1,max:512})),column_radius:xd.IntProvider({min:0,max:60}),height_scale:xd.FloatProvider({min:0,max:20}),max_column_radius_to_cave_height_ratio:Od.NumberNode({min:0,max:1}),stalactite_bluntness:xd.FloatProvider({min:.1,max:10}),stalagmite_bluntness:xd.FloatProvider({min:.1,max:10}),wind_speed:xd.FloatProvider({min:0,max:2}),min_radius_for_wind:Od.NumberNode({integer:!0,min:0,max:100}),min_bluntness_for_wind:Od.NumberNode({min:0,max:5})},"minecraft:nether_forest_vegetation":{state_provider:r("block_state_provider")},"minecraft:netherrack_replace_blobs":{state:r("block_state"),target:r("block_state"),radius:xd.IntProvider({min:0,max:12})},"minecraft:no_bonemeal_flower":i,"minecraft:ore":_,"minecraft:pointed_dripstone":{chance_of_taller_dripstone:Od.Opt(Od.NumberNode({min:0,max:1})),chance_of_directional_spread:Od.Opt(Od.NumberNode({min:0,max:1})),chance_of_spread_radius2:Od.Opt(Od.NumberNode({min:0,max:1})),chance_of_spread_radius3:Od.Opt(Od.NumberNode({min:0,max:1}))},"minecraft:random_patch":i,"minecraft:random_boolean_selector":{feature_false:o,feature_true:o},"minecraft:random_selector":{features:Od.ListNode(Od.ObjectNode({chance:Od.NumberNode({min:0,max:1}),feature:o})),default:o},"minecraft:replace_single_block":{targets:Od.ListNode(d)},"minecraft:root_system":{required_vertical_space_for_tree:Od.NumberNode({integer:!0,min:1,max:64}),root_radius:Od.NumberNode({integer:!0,min:1,max:64}),root_placement_attempts:Od.NumberNode({integer:!0,min:1,max:256}),root_column_max_height:Od.NumberNode({integer:!0,min:1,max:4096}),hanging_root_radius:Od.NumberNode({integer:!0,min:1,max:64}),hanging_roots_vertical_span:Od.NumberNode({integer:!0,min:0,max:16}),hanging_root_placement_attempts:Od.NumberNode({integer:!0,min:0,max:256}),allowed_vertical_water_for_tree:Od.NumberNode({integer:!0,min:1,max:64}),root_replaceable:n({validator:"resource",params:{pool:"$tag/block"}}),root_state_provider:r("block_state_provider"),hanging_root_state_provider:r("block_state_provider"),feature:o},"minecraft:scattered_ore":_,"minecraft:sea_pickle":{count:xd.IntProvider({min:0,max:256})},"minecraft:seagrass":{probability:Od.NumberNode({min:0,max:1})},"minecraft:simple_block":{to_place:r("block_state_provider")},"minecraft:simple_random_selector":{features:Od.ListNode(o)},"minecraft:spring_feature":{state:r("fluid_state"),rock_count:Od.NumberNode({integer:!0}),hole_count:Od.NumberNode({integer:!0}),requires_block_below:Od.BooleanNode(),valid_blocks:Od.ListNode(n({validator:"resource",params:{pool:"block"}}))},"minecraft:tree":{ignore_vines:Od.Opt(Od.BooleanNode()),force_dirt:Od.Opt(Od.BooleanNode()),minimum_size:r("feature_size"),dirt_provider:r("block_state_provider"),trunk_provider:r("block_state_provider"),foliage_provider:r("block_state_provider"),trunk_placer:Od.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/trunk_placer_type"}}),base_height:Od.NumberNode({integer:!0,min:0,max:32}),height_rand_a:Od.NumberNode({integer:!0,min:0,max:24}),height_rand_b:Od.NumberNode({integer:!0,min:0,max:24}),[Od.Switch]:[{push:"type"}],[Od.Case]:{"minecraft:bending_trunk_placer":{bend_length:xd.IntProvider({min:1,max:64}),min_height_for_leaves:Od.Opt(Od.NumberNode({integer:!0,min:1}))}}},{context:"trunk_placer"}),foliage_placer:Od.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/foliage_placer_type"}}),radius:xd.IntProvider({min:0,max:16}),offset:xd.IntProvider({min:0,max:16}),[Od.Switch]:[{push:"type"}],[Od.Case]:{"minecraft:blob_foliage_placer":{height:Od.NumberNode({integer:!0,min:0,max:16})},"minecraft:bush_foliage_placer":{height:Od.NumberNode({integer:!0,min:0,max:16})},"minecraft:fancy_foliage_placer":{height:Od.NumberNode({integer:!0,min:0,max:16})},"minecraft:jungle_foliage_placer":{height:Od.NumberNode({integer:!0,min:0,max:16})},"minecraft:mega_pine_foliage_placer":{crown_height:xd.IntProvider({min:0,max:24})},"minecraft:pine_foliage_placer":{height:xd.IntProvider({min:0,max:24})},"minecraft:random_spread_foliage_placer":{foliage_height:xd.IntProvider({min:1,max:512}),leaf_placement_attempts:Od.NumberNode({integer:!0,min:0,max:256})},"minecraft:spruce_foliage_placer":{trunk_height:xd.IntProvider({min:0,max:24})}}},{context:"foliage_placer",disableSwitchContext:!0}),decorators:Od.ListNode(Od.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/tree_decorator_type"}}),[Od.Switch]:[{push:"type"}],[Od.Case]:{"minecraft:alter_ground":{provider:r("block_state_provider")},"minecraft:beehive":{probability:Od.NumberNode({min:0,max:1})},"minecraft:cocoa":{probability:Od.NumberNode({min:0,max:1})}}},{context:"tree_decorator"}))},"minecraft:underwater_magma":{floor_search_range:Od.NumberNode({integer:!0,min:0,max:512}),placement_radius_around_floor:Od.NumberNode({integer:!0,min:0,max:64}),placement_probability_per_valid_position:Od.NumberNode({min:0,max:1})},"minecraft:vegetation_patch":m,"minecraft:waterlogged_vegetation_patch":m}},{context:"feature"})},{context:"feature"}),{default:()=>({type:"minecraft:decorated",config:{decorator:{type:"minecraft:count",config:{count:4}},feature:{type:"minecraft:tree",config:{ignore_vines:!0,minimum_size:{type:"minecraft:two_layers_feature_size"},trunk_placer:{type:"minecraft:straight_trunk_placer",base_height:5,height_rand_a:2,height_rand_b:0},foliage_placer:{type:"minecraft:blob_foliage_placer",radius:2,offset:0,height:3}}}}})})),e.register("feature_size",Od.Mod(Od.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/feature_size_type"}}),min_clipped_height:Od.Opt(Od.NumberNode({min:0,max:80})),[Od.Switch]:[{push:"type"}],[Od.Case]:{"minecraft:two_layers_feature_size":{limit:Od.Opt(Od.NumberNode({integer:!0,min:0,max:81})),lower_size:Od.Opt(Od.NumberNode({integer:!0,min:0,max:16})),upper_size:Od.Opt(Od.NumberNode({integer:!0,min:0,max:16}))},"minecraft:three_layers_feature_size":{limit:Od.Opt(Od.NumberNode({integer:!0,min:0,max:80})),upper_limit:Od.Opt(Od.NumberNode({integer:!0,min:0,max:80})),lower_size:Od.Opt(Od.NumberNode({integer:!0,min:0,max:16})),middle_size:Od.Opt(Od.NumberNode({integer:!0,min:0,max:16})),upper_size:Od.Opt(Od.NumberNode({integer:!0,min:0,max:16}))}}},{disableSwitchContext:!0}),{default:()=>({type:"minecraft:two_layers_feature_size"})}));const p={seed:Od.NumberNode({integer:!0}),noise:r("noise_parameters"),scale:Od.Mod(Od.NumberNode({min:Number.MIN_VALUE}),{default:()=>1})};e.register("block_state_provider",Od.Mod(Od.ObjectNode({type:n({validator:"resource",params:{pool:"worldgen/block_state_provider_type"}}),[Od.Switch]:[{push:"type"}],[Od.Case]:{"minecraft:dual_noise_provider":c(s({},p),{variety:xd.InclusiveRange({integer:!0,min:1,max:64}),slow_noise:r("noise_parameters"),slow_scale:Od.Mod(Od.NumberNode({min:Number.MIN_VALUE}),{default:()=>1}),states:Od.ListNode(r("block_state"))}),"minecraft:noise_threshold_provider":c(s({},p),{threshold:Od.NumberNode({min:-1,max:1}),high_chance:Od.NumberNode({min:0,max:1}),default_state:r("block_state"),low_states:Od.ListNode(r("block_state")),high_states:Od.ListNode(r("block_state"))}),"minecraft:noise_provider":c(s({},p),{states:Od.ListNode(r("block_state"))}),"minecraft:randomized_int_state_provider":{property:n(),values:xd.IntProvider(),source:r("block_state_provider")},"minecraft:rotated_block_provider":{state:r("block_state")},"minecraft:simple_state_provider":{state:r("block_state")},"minecraft:weighted_state_provider":{entries:Od.ListNode(Od.Mod(Od.ObjectNode({weight:Od.NumberNode({integer:!0,min:1}),data:r("block_state")}),{default:()=>({data:{}})}))}}},{context:"block_state_provider"}),{default:()=>({type:"minecraft:simple_state_provider"})})),e.register("block_predicate_worldgen",Od.Mod(Od.ObjectNode({type:n({validator:"resource",params:{pool:"block_predicate_type"}}),[Od.Switch]:[{push:"type"}],[Od.Case]:{"minecraft:all_of":{predicates:Od.ListNode(r("block_predicate_worldgen"))},"minecraft:any_of":{predicates:Od.ListNode(r("block_predicate_worldgen"))},"minecraft:matching_blocks":{offset:Od.Opt(r("block_pos")),blocks:Od.ListNode(n({validator:"resource",params:{pool:"block"}}))},"minecraft:matching_fluids":{offset:Od.Opt(r("block_pos")),fluids:Od.ListNode(n({validator:"resource",params:{pool:"fluid"}}))},"minecraft:not":{predicate:r("block_predicate_worldgen")},"minecraft:would_survive":{offset:Od.Opt(r("block_pos")),state:r("block_state")}}},{context:"block_predicate"}),{default:()=>({type:"minecraft:true"})}))};var jd={};Object.defineProperty(jd,"__esModule",{value:!0}),jd.initNoiseSettingsSchemas=void 0;const Md=Ce,Ad=Fl;jd.initNoiseSettingsSchemas=function(e,t){const r=Md.Reference.bind(void 0,e),n=Md.StringNode.bind(void 0,t);e.register("noise_settings",Md.Mod(Md.ObjectNode({bedrock_roof_position:Md.NumberNode({integer:!0}),bedrock_floor_position:Md.NumberNode({integer:!0}),sea_level:Md.NumberNode({integer:!0}),disable_mob_generation:Md.BooleanNode(),noise_caves_enabled:Md.BooleanNode(),noodle_caves_enabled:Md.BooleanNode(),aquifers_enabled:Md.BooleanNode(),deepslate_enabled:Md.BooleanNode(),ore_veins_enabled:Md.BooleanNode(),legacy_random_source:Md.BooleanNode(),default_block:r("block_state"),default_fluid:r("block_state"),noise:Md.ObjectNode({min_y:Md.NumberNode({integer:!0,min:-2048,max:2047}),height:Md.NumberNode({integer:!0,min:0,max:4096}),density_factor:Md.NumberNode(),density_offset:Md.NumberNode(),size_horizontal:Md.NumberNode({integer:!0}),size_vertical:Md.NumberNode({integer:!0}),island_noise_override:Md.Opt(Md.BooleanNode()),amplified:Md.Opt(Md.BooleanNode()),sampling:Md.ObjectNode({xz_scale:Md.NumberNode(),y_scale:Md.NumberNode(),xz_factor:Md.NumberNode(),y_factor:Md.NumberNode()}),bottom_slide:r("noise_slider"),top_slide:r("noise_slider"),terrain_shaper:r("terrain_shaper")}),surface_rule:r("material_rule"),structures:r("generator_structures")},{context:"noise_settings"}),(e=>({default:()=>Ad.DefaultNoiseSettings,validate:(t,r,n,o)=>{var i,a,s,c;return(null===(i=null==(r=e.validate(t,r,n,o))?void 0:r.noise)||void 0===i?void 0:i.min_y)+(null===(a=null==r?void 0:r.noise)||void 0===a?void 0:a.height)>2047&&n.add(t.push("noise").push("height"),"error.min_y_plus_height",2047),(null===(s=null==r?void 0:r.noise)||void 0===s?void 0:s.height)%16!=0&&n.add(t.push("noise").push("height"),"error.height_multiple",16),(null===(c=null==r?void 0:r.noise)||void 0===c?void 0:c.min_y)%16!=0&&n.add(t.push("noise").push("min_y"),"error.min_y_multiple",16),r}})))),e.register("noise_slider",Md.ObjectNode({target:Md.NumberNode(),size:Md.NumberNode({integer:!0,min:0}),offset:Md.NumberNode({integer:!0})})),e.register("generator_structures",Md.ObjectNode({stronghold:Md.Opt(Md.ObjectNode({distance:Md.NumberNode({integer:!0,min:0,max:1023}),spread:Md.NumberNode({integer:!0,min:0,max:1023}),count:Md.NumberNode({integer:!0,min:1,max:4095})})),structures:Md.MapNode(n({validator:"resource",params:{pool:"worldgen/structure_feature"}}),Md.Mod(Md.ObjectNode({spacing:Md.NumberNode({integer:!0,min:0,max:4096}),separation:Md.Mod(Md.NumberNode({integer:!0,min:0,max:4096}),(e=>({validate:(t,r,n,o)=>(t.pop().push("spacing").get()<=r&&n.add(t,"error.separation_smaller_spacing"),e.validate(t,r,n,o))}))),salt:Md.NumberNode({integer:!0,min:0})},{context:"generator_structure"}),{default:()=>({spacing:10,separation:5,salt:0})}))})),e.register("generator_layer",Md.Mod(Md.ObjectNode({block:n({validator:"resource",params:{pool:"block"}}),height:Md.NumberNode({integer:!0,min:1})}),{default:()=>({block:"minecraft:stone",height:1})})),e.register("terrain_shaper",Md.Mod(Md.ObjectNode({offset:r("terrain_spline"),factor:r("terrain_spline"),jaggedness:r("terrain_spline")},{context:"terrain_shaper"}),{default:()=>({offset:0,factor:0,jaggedness:0})})),e.register("terrain_spline",Md.Mod(Md.ChoiceNode([{type:"number",node:Md.NumberNode()},{type:"object",node:Md.ObjectNode({coordinate:Md.Mod(n({enum:["continents","erosion","weirdness","ridges"]}),{default:()=>"continents"}),points:Md.ListNode(Md.ObjectNode({location:Md.NumberNode(),derivative:Md.NumberNode(),value:r("terrain_spline")}))},{category:"function"})}],{context:"terrain_spline",choiceContext:"terrain_spline"}),{default:()=>0}))};var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.initStructureFeatureSchemas=void 0;const Ld=Ce;Pd.initStructureFeatureSchemas=function(e,t){const r=Ld.StringNode.bind(void 0,t),n=Ld.Reference.bind(void 0,e),o={start_pool:r({validator:"resource",params:{pool:"$worldgen/template_pool"}}),size:Ld.NumberNode({integer:!0})};e.register("configured_structure_feature",Ld.Mod(Ld.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/structure_feature"}}),config:Ld.ObjectNode({[Ld.Switch]:["pop",{push:"type"}],[Ld.Case]:{"minecraft:bastion_remnant":o,"minecraft:buried_treasure":{probability:Ld.NumberNode({min:0,max:1})},"minecraft:mineshaft":{type:r({enum:["normal","mesa"]}),probability:Ld.NumberNode({min:0,max:1})},"minecraft:nether_fossil":{height:n("height_provider")},"minecraft:ocean_ruin":{biome_temp:r({enum:["cold","warm"]}),large_probability:Ld.NumberNode({min:0,max:1}),cluster_probability:Ld.NumberNode({min:0,max:1})},"minecraft:pillager_outpost":o,"minecraft:ruined_portal":{portal_type:r({enum:["standard","desert","jungle","mountain","nether","ocean","swamp"]})},"minecraft:shipwreck":{is_beached:Ld.Opt(Ld.BooleanNode())},"minecraft:village":o}},{context:"structure_feature",disableSwitchContext:!0})},{context:"structure_feature"}),{default:()=>({type:"minecraft:bastion_remnant",config:{start_pool:"minecraft:bastion/starts",size:6}})}))};var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.initSurfaceRuleSchemas=void 0;const Cd=Ce;Bd.initSurfaceRuleSchemas=function(e,t){const r=Cd.StringNode.bind(void 0,t),n=Cd.Reference.bind(void 0,e);e.register("material_rule",Cd.Mod(Cd.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/material_rule"}}),[Cd.Switch]:[{push:"type"}],[Cd.Case]:{"minecraft:block":{result_state:n("block_state")},"minecraft:condition":{if_true:n("material_condition"),then_run:n("material_rule")},"minecraft:sequence":{sequence:Cd.ListNode(n("material_rule"))}}},{context:"material_rule",category:"pool"}),{default:()=>({type:"minecraft:block",result_state:{Name:"minecraft:stone"}})})),e.register("material_condition",Cd.Mod(Cd.ObjectNode({type:r({validator:"resource",params:{pool:"worldgen/material_condition"}}),[Cd.Switch]:[{push:"type"}],[Cd.Case]:{"minecraft:biome":{biome_is:Cd.ListNode(r({validator:"resource",params:{pool:"$worldgen/biome"}}))},"minecraft:noise_threshold":{noise:r({validator:"resource",params:{pool:"$worldgen/noise"}}),min_threshold:Cd.NumberNode(),max_threshold:Cd.NumberNode()},"minecraft:not":{invert:n("material_condition")},"minecraft:stone_depth":{surface_type:r({enum:"cave_surface"}),add_run_depth:Cd.BooleanNode()},"minecraft:water":{offset:Cd.NumberNode({integer:!0}),run_depth_multiplier:Cd.NumberNode({integer:!0,min:-20,max:20}),add_stone_depth:Cd.BooleanNode()},"minecraft:y_above":{anchor:n("vertical_anchor"),run_depth_multiplier:Cd.NumberNode({integer:!0,min:-20,max:20}),add_stone_depth:Cd.BooleanNode()}}},{context:"material_condition"}),{default:()=>({type:"minecraft:biome",is_biome:"minecraft:plains"})}))};var zd={};Object.defineProperty(zd,"__esModule",{value:!0}),zd.initTemplatePoolSchemas=void 0;const Td=Ce,Id=kd;zd.initTemplatePoolSchemas=function(e,t){const r=Td.Reference.bind(void 0,e),n=Td.StringNode.bind(void 0,t);e.register("template_pool",Td.Mod(Td.ObjectNode({fallback:n(),elements:Td.ListNode(r("template_weighted_element"))},{context:"template_pool"}),{default:()=>({fallback:"minecraft:empty",elements:[{weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}}]})})),e.register("template_weighted_element",Td.Mod(Td.ObjectNode({weight:Td.NumberNode({integer:!0,min:1}),element:r("template_element")},{category:"pool"}),{default:()=>({weight:1,element:{element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"}})})),e.register("template_element",Td.Mod(Td.ObjectNode({element_type:n({validator:"resource",params:{pool:"worldgen/structure_pool_element"}}),projection:n({enum:["rigid","terrain_matching"]}),[Td.Switch]:[{push:"element_type"}],[Td.Case]:{"minecraft:feature_pool_element":{feature:n({validator:"resource",params:{pool:"$worldgen/configured_feature"}})},"minecraft:legacy_single_pool_element":{location:n({validator:"resource",params:{pool:"$structure"}}),processors:Id.Processors},"minecraft:list_pool_element":{elements:Td.ListNode(r("template_element"))},"minecraft:single_pool_element":{location:n({validator:"resource",params:{pool:"$structure"}}),processors:Id.Processors}}},{context:"template_element",disableSwitchContext:!0}),{default:()=>({element_type:"minecraft:single_pool_element",projection:"rigid",processors:"minecraft:empty"})}))},Object.defineProperty(md,"__esModule",{value:!0}),md.initWorldgenSchemas=void 0;const Rd=pd,Fd=fd,Ed=bd,Dd=Nd,$d=jd,qd=kd,Ud=Pd,Zd=Bd,Hd=zd;md.initWorldgenSchemas=function(e,t){qd.initProcessorListSchemas(e,t),Rd.initBiomeSchemas(e,t),Fd.initCarverSchemas(e,t),Ed.initDecoratorSchemas(e,t),Dd.initFeatureSchemas(e,t),$d.initNoiseSettingsSchemas(e,t),Ud.initStructureFeatureSchemas(e,t),Zd.initSurfaceRuleSchemas(e,t),Hd.initTemplatePoolSchemas(e,t)};var Wd={};Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.initWorldSettingsSchemas=void 0;const Xd=Ce;Wd.initWorldSettingsSchemas=function(e,t){const r=Xd.Reference.bind(void 0,e),n=Xd.StringNode.bind(void 0,t);e.register("world_settings",Xd.Mod(Xd.ObjectNode({generate_features:Xd.BooleanNode(),bonus_chest:Xd.BooleanNode(),seed:Xd.NumberNode({integer:!0}),dimensions:Xd.MapNode(n({validator:"resource",params:{pool:"$dimension"}}),r("dimension"))},{context:"world_settings"}),{default:()=>{const e=Math.floor(4294967296*Math.random())-2147483648;return{generate_features:!0,bonus_chest:!1,seed:e,dimensions:{"minecraft:overworld":{type:"minecraft:overworld",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:vanilla_layered",seed:e},settings:"minecraft:overworld"}},"minecraft:the_nether":{type:"minecraft:the_nether",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:multi_noise",seed:e,humidity_noise:{firstOctave:-7,amplitudes:[1,1]},altitude_noise:{firstOctave:-7,amplitudes:[1,1]},weirdness_noise:{firstOctave:-7,amplitudes:[1,1]},temperature_noise:{firstOctave:-7,amplitudes:[1,1]},biomes:[{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:0},biome:"minecraft:nether_wastes"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:0,humidity:-.5},biome:"minecraft:soul_sand_valley"},{parameters:{altitude:0,weirdness:0,offset:0,temperature:.4,humidity:0},biome:"minecraft:crimson_forest"},{parameters:{altitude:0,weirdness:0,offset:.375,temperature:0,humidity:.5},biome:"minecraft:warped_forest"},{parameters:{altitude:0,weirdness:0,offset:.175,temperature:-.5,humidity:0},biome:"minecraft:basalt_deltas"}]},settings:"minecraft:nether"}},"minecraft:the_end":{type:"minecraft:the_end",generator:{type:"minecraft:noise",seed:e,biome_source:{type:"minecraft:the_end",seed:e},settings:"minecraft:end"}}}}}}))},Object.defineProperty(Tl,"__esModule",{value:!0}),Tl.initSchemas=void 0;const Gd=Il,Vd=Fl,Jd=El,Yd=ql,Kd=Hl,Qd=Gl,e_=Yl,t_=rd,r_=od,n_=ad,o_=cd,i_=dd,a_=md,s_=Wd;Tl.initSchemas=function(e,t){Vd.initCommonSchemas(e,t),Gd.initAdvancementSchemas(e,t),Jd.initConditionSchemas(e,t),Kd.initDimensionTypeSchemas(e,t),Yd.initDimensionSchemas(e,t),Qd.initItemModifierSchemas(e,t),e_.initLootTableSchemas(e,t),t_.initPackMcmetaSchemas(e,t),r_.initPredicatesSchemas(e,t),n_.initRecipeSchemas(e,t),o_.initTagsSchemas(e,t),i_.initTextComponentSchemas(e,t),a_.initWorldgenSchemas(e,t),s_.initWorldSettingsSchemas(e,t)};var c_=Be&&Be.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),l_=Be&&Be.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),d_=Be&&Be.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&c_(t,e,r);return l_(t,e),t};Object.defineProperty(Cl,"__esModule",{value:!0});var __=Cl.getSchemas=Cl.getCollections=void 0;const m_=Ce,p_=zl,u_=Tl;var f_=Cl.lootContext=d_(Kl);var h_=Cl.getCollections=function(){const e=new m_.CollectionRegistry;return p_.initCollections(e),e};__=Cl.getSchemas=function(e){const t=new m_.SchemaRegistry;return u_.initSchemas(t,e),t};var g_=Object.freeze(Object.assign(Object.create(null),Cl,{[Symbol.toStringTag]:"Module",get getSchemas(){return __},get getCollections(){return h_},lootContext:f_,default:Cl})),b_=function(e){return(e=e||{}).circles?function(e){var t=[],r=[];return e.proto?function e(o){if("object"!=typeof o||null===o)return o;if(o instanceof Date)return new Date(o);if(Array.isArray(o))return n(o,e);if(o instanceof Map)return new Map(n(Array.from(o),e));if(o instanceof Set)return new Set(n(Array.from(o),e));var i={};for(var a in t.push(o),r.push(i),o){var s=o[a];if("object"!=typeof s||null===s)i[a]=s;else if(s instanceof Date)i[a]=new Date(s);else if(s instanceof Map)i[a]=new Map(n(Array.from(s),e));else if(s instanceof Set)i[a]=new Set(n(Array.from(s),e));else if(ArrayBuffer.isView(s))i[a]=v_(s);else{var c=t.indexOf(s);i[a]=-1!==c?r[c]:e(s)}}return t.pop(),r.pop(),i}:function e(o){if("object"!=typeof o||null===o)return o;if(o instanceof Date)return new Date(o);if(Array.isArray(o))return n(o,e);if(o instanceof Map)return new Map(n(Array.from(o),e));if(o instanceof Set)return new Set(n(Array.from(o),e));var i={};for(var a in t.push(o),r.push(i),o)if(!1!==Object.hasOwnProperty.call(o,a)){var s=o[a];if("object"!=typeof s||null===s)i[a]=s;else if(s instanceof Date)i[a]=new Date(s);else if(s instanceof Map)i[a]=new Map(n(Array.from(s),e));else if(s instanceof Set)i[a]=new Set(n(Array.from(s),e));else if(ArrayBuffer.isView(s))i[a]=v_(s);else{var c=t.indexOf(s);i[a]=-1!==c?r[c]:e(s)}}return t.pop(),r.pop(),i};function n(e,n){for(var o=Object.keys(e),i=new Array(o.length),a=0;a3;)r.pop()();if(r[1]=0&&e<=1){if(t._volume=e,t._muted)return t;t.usingWebAudio&&t.masterGain.gain.setValueAtTime(e,r.ctx.currentTime);for(var o=0;o=0;t--)e._howls[t].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,d()),e},codecs:function(e){return(this||r)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||r;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(t){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||r,t=null;try{t="undefined"!=typeof Audio?new Audio:null}catch(d){return e}if(!t||"function"!=typeof t.canPlayType)return e;var o=t.canPlayType("audio/mpeg;").replace(/^no$/,""),i=e._navigator?e._navigator.userAgent:"",n=i.match(/OPR\/([0-6].)/g),a=n&&parseInt(n[0].split("/")[1],10)<33,s=-1!==i.indexOf("Safari")&&-1===i.indexOf("Chrome"),c=i.match(/Version\/(.*?) /),l=s&&c&&parseInt(c[1],10)<15;return e._codecs={mp3:!(a||!o&&!t.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!o,opus:!!t.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(t.canPlayType('audio/wav; codecs="1"')||t.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!t.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!t.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(t.canPlayType("audio/x-m4a;")||t.canPlayType("audio/m4a;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(t.canPlayType("audio/x-m4b;")||t.canPlayType("audio/m4b;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(t.canPlayType("audio/x-mp4;")||t.canPlayType("audio/mp4;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!t.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(t.canPlayType("audio/x-flac;")||t.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||r;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var t=function(r){for(;e._html5AudioPool.length0?s._seek:o._sprite[e][0]/1e3),d=Math.max(0,(o._sprite[e][0]+o._sprite[e][1])/1e3-l),_=1e3*d/Math.abs(s._rate),m=o._sprite[e][0]/1e3,p=(o._sprite[e][0]+o._sprite[e][1])/1e3;s._sprite=e,s._ended=!1;var u=function(){s._paused=!1,s._seek=l,s._start=m,s._stop=p,s._loop=!(!s._loop&&!o._sprite[e][2])};if(!(l>=p)){var f=s._node;if(o._webAudio){var h=function(){o._playLock=!1,u(),o._refreshBuffer(s);var e=s._muted||o._muted?0:s._volume;f.gain.setValueAtTime(e,r.ctx.currentTime),s._playStart=r.ctx.currentTime,void 0===f.bufferSource.start?s._loop?f.bufferSource.noteGrainOn(0,l,86400):f.bufferSource.noteGrainOn(0,l,d):s._loop?f.bufferSource.start(0,l,86400):f.bufferSource.start(0,l,d),_!==1/0&&(o._endTimers[s._id]=setTimeout(o._ended.bind(o,s),_)),t||setTimeout((function(){o._emit("play",s._id),o._loadQueue()}),0)};"running"===r.state&&"interrupted"!==r.ctx.state?h():(o._playLock=!0,o.once("resume",h),o._clearTimer(s._id))}else{var g=function(){f.currentTime=l,f.muted=s._muted||o._muted||r._muted||f.muted,f.volume=s._volume*r.volume(),f.playbackRate=s._rate;try{var i=f.play();if(i&&"undefined"!=typeof Promise&&(i instanceof Promise||"function"==typeof i.then)?(o._playLock=!0,u(),i.then((function(){o._playLock=!1,f._unlocked=!0,t?o._loadQueue():o._emit("play",s._id)})).catch((function(){o._playLock=!1,o._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),s._ended=!0,s._paused=!0}))):t||(o._playLock=!1,u(),o._emit("play",s._id)),f.playbackRate=s._rate,f.paused)return void o._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||s._loop?o._endTimers[s._id]=setTimeout(o._ended.bind(o,s),_):(o._endTimers[s._id]=function(){o._ended(s),f.removeEventListener("ended",o._endTimers[s._id],!1)},f.addEventListener("ended",o._endTimers[s._id],!1))}catch(n){o._emit("playerror",s._id,n)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===f.src&&(f.src=o._src,f.load());var b=window&&window.ejecta||!f.readyState&&r._navigator.isCocoonJS;if(f.readyState>=3||b)g();else{o._playLock=!0,o._state="loading";var v=function(){o._state="loaded",g(),f.removeEventListener(r._canPlayEvent,v,!1)};f.addEventListener(r._canPlayEvent,v,!1),o._clearTimer(s._id)}}return s._id}o._ended(s)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var r=t._getSoundIds(e),o=0;o=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else n.length>=2&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(o=t?i._soundById(t):i._sounds[0])?o._volume:0;if("loaded"!==i._state||i._playLock)return i._queue.push({event:"volume",action:function(){i.volume.apply(i,n)}}),i;void 0===t&&(i._volume=e),t=i._getSoundIds(t);for(var c=0;c0?o/l:o),_=Date.now();e._fadeTo=r,e._interval=setInterval((function(){var i=(Date.now()-_)/o;_=Date.now(),s+=c*i,s=Math.round(100*s)/100,s=c<0?Math.max(r,s):Math.min(r,s),a._webAudio?e._volume=s:a.volume(s,e._id,!0),n&&(a._volume=s),(rt&&s>=r)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,a.volume(r,e._id),a._emit("fade",e._id))}),d)},_stopFade:function(e){var t=this,o=t._soundById(e);return o&&o._interval&&(t._webAudio&&o._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(o._interval),o._interval=null,t.volume(o._fadeTo,e),o._fadeTo=null,t._emit("fade",e)),t},loop:function(){var e,t,r,o=this,i=arguments;if(0===i.length)return o._loop;if(1===i.length){if("boolean"!=typeof i[0])return!!(r=o._soundById(parseInt(i[0],10)))&&r._loop;e=i[0],o._loop=e}else 2===i.length&&(e=i[0],t=parseInt(i[1],10));for(var n=o._getSoundIds(t),a=0;a=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else 2===n.length&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if("number"!=typeof e)return(o=i._soundById(t))?o._rate:i._rate;if("loaded"!==i._state||i._playLock)return i._queue.push({event:"rate",action:function(){i.rate.apply(i,n)}}),i;void 0===t&&(i._rate=e),t=i._getSoundIds(t);for(var c=0;c=0?t=parseInt(i[0],10):o._sounds.length&&(t=o._sounds[0]._id,e=parseFloat(i[0]))}else 2===i.length&&(e=parseFloat(i[0]),t=parseInt(i[1],10));if(void 0===t)return 0;if("number"==typeof e&&("loaded"!==o._state||o._playLock))return o._queue.push({event:"seek",action:function(){o.seek.apply(o,i)}}),o;var s=o._soundById(t);if(s){if(!("number"==typeof e&&e>=0)){if(o._webAudio){var c=o.playing(t)?r.ctx.currentTime-s._playStart:0,l=s._rateSeek?s._rateSeek-s._seek:0;return s._seek+(l+c*Math.abs(s._rate))}return s._node.currentTime}var d=o.playing(t);d&&o.pause(t,!0),s._seek=e,s._ended=!1,o._clearTimer(t),o._webAudio||!s._node||isNaN(s._node.duration)||(s._node.currentTime=e);var _=function(){d&&o.play(t,!0),o._emit("seek",t)};if(d&&!o._webAudio){var m=function(){o._playLock?setTimeout(m,0):_()};setTimeout(m,0)}else _()}return o},playing:function(e){var t=this;if("number"==typeof e){var r=t._soundById(e);return!!r&&!r._paused}for(var o=0;o=0&&r._howls.splice(i,1);var a=!0;for(o=0;o=0){a=!1;break}return n&&a&&delete n[e._src],r.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,r,o){var i=this["_on"+e];return"function"==typeof t&&i.push(o?{id:r,fn:t,once:o}:{id:r,fn:t}),this},off:function(e,t,r){var o=this,i=o["_on"+e],n=0;if("number"==typeof t&&(r=t,t=null),t||r)for(n=0;n=0;n--)i[n].id&&i[n].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,r)}.bind(o,i[n].fn),0),i[n].once&&o.off(e,i[n].fn,i[n].id));return o._loadQueue(e),o},_loadQueue:function(e){var t=this;if(t._queue.length>0){var r=t._queue[0];r.event===e&&(t._queue.shift(),t._loadQueue()),e||r.action()}return t},_ended:function(e){var t=this,o=e._sprite;if(!t._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;o--){if(r<=t)return;e._sounds[o]._ended&&(e._webAudio&&e._sounds[o]._node&&e._sounds[o]._node.disconnect(0),e._sounds.splice(o,1),r--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],r=0;r=0;if(r._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),t))try{e.bufferSource.buffer=r._scratchBuffer}catch(o){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var i=function(e){this._parent=e,this.init()};i.prototype={init:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++r._counter,t._sounds.push(e),e.create(),e},create:function(){var e=this,t=e._parent,o=r._muted||e._muted||e._parent._muted?0:e._volume;return t._webAudio?(e._node=void 0===r.ctx.createGain?r.ctx.createGainNode():r.ctx.createGain(),e._node.gain.setValueAtTime(o,r.ctx.currentTime),e._node.paused=!0,e._node.connect(r.masterGain)):r.noAudio||(e._node=r._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(r._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=t._src,e._node.preload=!0===t._preload?"auto":t._preload,e._node.volume=o*r.volume(),e._node.load()),e},reset:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++r._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,t=e._parent;t._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(t._sprite).length&&(t._sprite={__default:[0,1e3*t._duration]}),"loaded"!==t._state&&(t._state="loaded",t._emit("load"),t._loadQueue()),e._node.removeEventListener(r._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var n={},a=function(e){var t=e._src;if(n[t])return e._duration=n[t].duration,void l(e);if(/^data:[^;]+;base64,/.test(t)){for(var r=atob(t.split(",")[1]),o=new Uint8Array(r.length),i=0;i0?(n[t._src]=e,l(t,e)):o()};"undefined"!=typeof Promise&&1===r.ctx.decodeAudioData.length?r.ctx.decodeAudioData(e).then(i).catch(o):r.ctx.decodeAudioData(e,i,o)},l=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},d=function(){if(r.usingWebAudio){try{"undefined"!=typeof AudioContext?r.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch(n){r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),t=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),o=t?parseInt(t[1],10):null;if(e&&o&&o<9){var i=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!i&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=void 0===r.ctx.createGain?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};e.Howler=r,e.Howl=o,void 0!==Be?(Be.HowlerGlobal=t,Be.Howler=r,Be.Howl=o,Be.Sound=i):"undefined"!=typeof window&&(window.HowlerGlobal=t,window.Howler=r,window.Howl=o,window.Sound=i)}(), + */!function(e){!function(){var t=function(){this.init()};t.prototype={init:function(){var e=this||r;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var t=this||r;if(e=parseFloat(e),t.ctx||d(),void 0!==e&&e>=0&&e<=1){if(t._volume=e,t._muted)return t;t.usingWebAudio&&t.masterGain.gain.setValueAtTime(e,r.ctx.currentTime);for(var n=0;n=0;t--)e._howls[t].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,d()),e},codecs:function(e){return(this||r)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||r;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(t){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||r,t=null;try{t="undefined"!=typeof Audio?new Audio:null}catch(d){return e}if(!t||"function"!=typeof t.canPlayType)return e;var n=t.canPlayType("audio/mpeg;").replace(/^no$/,""),o=e._navigator?e._navigator.userAgent:"",i=o.match(/OPR\/([0-6].)/g),a=i&&parseInt(i[0].split("/")[1],10)<33,s=-1!==o.indexOf("Safari")&&-1===o.indexOf("Chrome"),c=o.match(/Version\/(.*?) /),l=s&&c&&parseInt(c[1],10)<15;return e._codecs={mp3:!(a||!n&&!t.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!n,opus:!!t.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(t.canPlayType('audio/wav; codecs="1"')||t.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!t.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!t.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(t.canPlayType("audio/x-m4a;")||t.canPlayType("audio/m4a;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(t.canPlayType("audio/x-m4b;")||t.canPlayType("audio/m4b;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(t.canPlayType("audio/x-mp4;")||t.canPlayType("audio/mp4;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!t.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(t.canPlayType("audio/x-flac;")||t.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||r;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var t=function(r){for(;e._html5AudioPool.length0?s._seek:n._sprite[e][0]/1e3),d=Math.max(0,(n._sprite[e][0]+n._sprite[e][1])/1e3-l),_=1e3*d/Math.abs(s._rate),m=n._sprite[e][0]/1e3,p=(n._sprite[e][0]+n._sprite[e][1])/1e3;s._sprite=e,s._ended=!1;var u=function(){s._paused=!1,s._seek=l,s._start=m,s._stop=p,s._loop=!(!s._loop&&!n._sprite[e][2])};if(!(l>=p)){var f=s._node;if(n._webAudio){var h=function(){n._playLock=!1,u(),n._refreshBuffer(s);var e=s._muted||n._muted?0:s._volume;f.gain.setValueAtTime(e,r.ctx.currentTime),s._playStart=r.ctx.currentTime,void 0===f.bufferSource.start?s._loop?f.bufferSource.noteGrainOn(0,l,86400):f.bufferSource.noteGrainOn(0,l,d):s._loop?f.bufferSource.start(0,l,86400):f.bufferSource.start(0,l,d),_!==1/0&&(n._endTimers[s._id]=setTimeout(n._ended.bind(n,s),_)),t||setTimeout((function(){n._emit("play",s._id),n._loadQueue()}),0)};"running"===r.state&&"interrupted"!==r.ctx.state?h():(n._playLock=!0,n.once("resume",h),n._clearTimer(s._id))}else{var g=function(){f.currentTime=l,f.muted=s._muted||n._muted||r._muted||f.muted,f.volume=s._volume*r.volume(),f.playbackRate=s._rate;try{var o=f.play();if(o&&"undefined"!=typeof Promise&&(o instanceof Promise||"function"==typeof o.then)?(n._playLock=!0,u(),o.then((function(){n._playLock=!1,f._unlocked=!0,t?n._loadQueue():n._emit("play",s._id)})).catch((function(){n._playLock=!1,n._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),s._ended=!0,s._paused=!0}))):t||(n._playLock=!1,u(),n._emit("play",s._id)),f.playbackRate=s._rate,f.paused)return void n._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||s._loop?n._endTimers[s._id]=setTimeout(n._ended.bind(n,s),_):(n._endTimers[s._id]=function(){n._ended(s),f.removeEventListener("ended",n._endTimers[s._id],!1)},f.addEventListener("ended",n._endTimers[s._id],!1))}catch(i){n._emit("playerror",s._id,i)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===f.src&&(f.src=n._src,f.load());var b=window&&window.ejecta||!f.readyState&&r._navigator.isCocoonJS;if(f.readyState>=3||b)g();else{n._playLock=!0,n._state="loading";var v=function(){n._state="loaded",g(),f.removeEventListener(r._canPlayEvent,v,!1)};f.addEventListener(r._canPlayEvent,v,!1),n._clearTimer(s._id)}}return s._id}n._ended(s)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var r=t._getSoundIds(e),n=0;n=0?t=parseInt(i[0],10):e=parseFloat(i[0])}else i.length>=2&&(e=parseFloat(i[0]),t=parseInt(i[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(n=t?o._soundById(t):o._sounds[0])?n._volume:0;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"volume",action:function(){o.volume.apply(o,i)}}),o;void 0===t&&(o._volume=e),t=o._getSoundIds(t);for(var c=0;c0?n/l:n),_=Date.now();e._fadeTo=r,e._interval=setInterval((function(){var o=(Date.now()-_)/n;_=Date.now(),s+=c*o,s=Math.round(100*s)/100,s=c<0?Math.max(r,s):Math.min(r,s),a._webAudio?e._volume=s:a.volume(s,e._id,!0),i&&(a._volume=s),(rt&&s>=r)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,a.volume(r,e._id),a._emit("fade",e._id))}),d)},_stopFade:function(e){var t=this,n=t._soundById(e);return n&&n._interval&&(t._webAudio&&n._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(n._interval),n._interval=null,t.volume(n._fadeTo,e),n._fadeTo=null,t._emit("fade",e)),t},loop:function(){var e,t,r,n=this,o=arguments;if(0===o.length)return n._loop;if(1===o.length){if("boolean"!=typeof o[0])return!!(r=n._soundById(parseInt(o[0],10)))&&r._loop;e=o[0],n._loop=e}else 2===o.length&&(e=o[0],t=parseInt(o[1],10));for(var i=n._getSoundIds(t),a=0;a=0?t=parseInt(i[0],10):e=parseFloat(i[0])}else 2===i.length&&(e=parseFloat(i[0]),t=parseInt(i[1],10));if("number"!=typeof e)return(n=o._soundById(t))?n._rate:o._rate;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"rate",action:function(){o.rate.apply(o,i)}}),o;void 0===t&&(o._rate=e),t=o._getSoundIds(t);for(var c=0;c=0?t=parseInt(o[0],10):n._sounds.length&&(t=n._sounds[0]._id,e=parseFloat(o[0]))}else 2===o.length&&(e=parseFloat(o[0]),t=parseInt(o[1],10));if(void 0===t)return 0;if("number"==typeof e&&("loaded"!==n._state||n._playLock))return n._queue.push({event:"seek",action:function(){n.seek.apply(n,o)}}),n;var s=n._soundById(t);if(s){if(!("number"==typeof e&&e>=0)){if(n._webAudio){var c=n.playing(t)?r.ctx.currentTime-s._playStart:0,l=s._rateSeek?s._rateSeek-s._seek:0;return s._seek+(l+c*Math.abs(s._rate))}return s._node.currentTime}var d=n.playing(t);d&&n.pause(t,!0),s._seek=e,s._ended=!1,n._clearTimer(t),n._webAudio||!s._node||isNaN(s._node.duration)||(s._node.currentTime=e);var _=function(){d&&n.play(t,!0),n._emit("seek",t)};if(d&&!n._webAudio){var m=function(){n._playLock?setTimeout(m,0):_()};setTimeout(m,0)}else _()}return n},playing:function(e){var t=this;if("number"==typeof e){var r=t._soundById(e);return!!r&&!r._paused}for(var n=0;n=0&&r._howls.splice(o,1);var a=!0;for(n=0;n=0){a=!1;break}return i&&a&&delete i[e._src],r.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,r,n){var o=this["_on"+e];return"function"==typeof t&&o.push(n?{id:r,fn:t,once:n}:{id:r,fn:t}),this},off:function(e,t,r){var n=this,o=n["_on"+e],i=0;if("number"==typeof t&&(r=t,t=null),t||r)for(i=0;i=0;i--)o[i].id&&o[i].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,r)}.bind(n,o[i].fn),0),o[i].once&&n.off(e,o[i].fn,o[i].id));return n._loadQueue(e),n},_loadQueue:function(e){var t=this;if(t._queue.length>0){var r=t._queue[0];r.event===e&&(t._queue.shift(),t._loadQueue()),e||r.action()}return t},_ended:function(e){var t=this,n=e._sprite;if(!t._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;n--){if(r<=t)return;e._sounds[n]._ended&&(e._webAudio&&e._sounds[n]._node&&e._sounds[n]._node.disconnect(0),e._sounds.splice(n,1),r--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],r=0;r=0;if(r._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),t))try{e.bufferSource.buffer=r._scratchBuffer}catch(n){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var o=function(e){this._parent=e,this.init()};o.prototype={init:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++r._counter,t._sounds.push(e),e.create(),e},create:function(){var e=this,t=e._parent,n=r._muted||e._muted||e._parent._muted?0:e._volume;return t._webAudio?(e._node=void 0===r.ctx.createGain?r.ctx.createGainNode():r.ctx.createGain(),e._node.gain.setValueAtTime(n,r.ctx.currentTime),e._node.paused=!0,e._node.connect(r.masterGain)):r.noAudio||(e._node=r._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(r._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=t._src,e._node.preload=!0===t._preload?"auto":t._preload,e._node.volume=n*r.volume(),e._node.load()),e},reset:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++r._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,t=e._parent;t._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(t._sprite).length&&(t._sprite={__default:[0,1e3*t._duration]}),"loaded"!==t._state&&(t._state="loaded",t._emit("load"),t._loadQueue()),e._node.removeEventListener(r._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var i={},a=function(e){var t=e._src;if(i[t])return e._duration=i[t].duration,void l(e);if(/^data:[^;]+;base64,/.test(t)){for(var r=atob(t.split(",")[1]),n=new Uint8Array(r.length),o=0;o0?(i[t._src]=e,l(t,e)):n()};"undefined"!=typeof Promise&&1===r.ctx.decodeAudioData.length?r.ctx.decodeAudioData(e).then(o).catch(n):r.ctx.decodeAudioData(e,o,n)},l=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},d=function(){if(r.usingWebAudio){try{"undefined"!=typeof AudioContext?r.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch(i){r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),t=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),n=t?parseInt(t[1],10):null;if(e&&n&&n<9){var o=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!o&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=void 0===r.ctx.createGain?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};e.Howler=r,e.Howl=n,void 0!==Be?(Be.HowlerGlobal=t,Be.Howler=r,Be.Howl=n,Be.Sound=o):"undefined"!=typeof window&&(window.HowlerGlobal=t,window.Howler=r,window.Howl=n,window.Sound=o)}(), /*! * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported. * @@ -19,5 +19,5 @@ var e=Object.defineProperty,t=Object.defineProperties,r=Object.getOwnPropertyDes * * MIT License */ -function(){var e;HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var r=t._howls.length-1;r>=0;r--)t._howls[r].stereo(e);return t},HowlerGlobal.prototype.pos=function(e,t,r){var o=this;return o.ctx&&o.ctx.listener?(t="number"!=typeof t?o._pos[1]:t,r="number"!=typeof r?o._pos[2]:r,"number"!=typeof e?o._pos:(o._pos=[e,t,r],void 0!==o.ctx.listener.positionX?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]),o)):o},HowlerGlobal.prototype.orientation=function(e,t,r,o,i,n){var a=this;if(!a.ctx||!a.ctx.listener)return a;var s=a._orientation;return t="number"!=typeof t?s[1]:t,r="number"!=typeof r?s[2]:r,o="number"!=typeof o?s[3]:o,i="number"!=typeof i?s[4]:i,n="number"!=typeof n?s[5]:n,"number"!=typeof e?s:(a._orientation=[e,t,r,o,i,n],void 0!==a.ctx.listener.forwardX?(a.ctx.listener.forwardX.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(n,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(e,t,r,o,i,n),a)},Howl.prototype.init=(e=Howl.prototype.init,function(t){var r=this;return r._orientation=t.orientation||[1,0,0],r._stereo=t.stereo||null,r._pos=t.pos||null,r._pannerAttr={coneInnerAngle:void 0!==t.coneInnerAngle?t.coneInnerAngle:360,coneOuterAngle:void 0!==t.coneOuterAngle?t.coneOuterAngle:360,coneOuterGain:void 0!==t.coneOuterGain?t.coneOuterGain:0,distanceModel:void 0!==t.distanceModel?t.distanceModel:"inverse",maxDistance:void 0!==t.maxDistance?t.maxDistance:1e4,panningModel:void 0!==t.panningModel?t.panningModel:"HRTF",refDistance:void 0!==t.refDistance?t.refDistance:1,rolloffFactor:void 0!==t.rolloffFactor?t.rolloffFactor:1},r._onstereo=t.onstereo?[{fn:t.onstereo}]:[],r._onpos=t.onpos?[{fn:t.onpos}]:[],r._onorientation=t.onorientation?[{fn:t.onorientation}]:[],e.call(this,t)}),Howl.prototype.stereo=function(e,r){var o=this;if(!o._webAudio)return o;if("loaded"!==o._state)return o._queue.push({event:"stereo",action:function(){o.stereo(e,r)}}),o;var i=void 0===Howler.ctx.createStereoPanner?"spatial":"stereo";if(void 0===r){if("number"!=typeof e)return o._stereo;o._stereo=e,o._pos=[e,0,0]}for(var n=o._getSoundIds(r),a=0;a=0;r--)t._howls[r].stereo(e);return t},HowlerGlobal.prototype.pos=function(e,t,r){var n=this;return n.ctx&&n.ctx.listener?(t="number"!=typeof t?n._pos[1]:t,r="number"!=typeof r?n._pos[2]:r,"number"!=typeof e?n._pos:(n._pos=[e,t,r],void 0!==n.ctx.listener.positionX?(n.ctx.listener.positionX.setTargetAtTime(n._pos[0],Howler.ctx.currentTime,.1),n.ctx.listener.positionY.setTargetAtTime(n._pos[1],Howler.ctx.currentTime,.1),n.ctx.listener.positionZ.setTargetAtTime(n._pos[2],Howler.ctx.currentTime,.1)):n.ctx.listener.setPosition(n._pos[0],n._pos[1],n._pos[2]),n)):n},HowlerGlobal.prototype.orientation=function(e,t,r,n,o,i){var a=this;if(!a.ctx||!a.ctx.listener)return a;var s=a._orientation;return t="number"!=typeof t?s[1]:t,r="number"!=typeof r?s[2]:r,n="number"!=typeof n?s[3]:n,o="number"!=typeof o?s[4]:o,i="number"!=typeof i?s[5]:i,"number"!=typeof e?s:(a._orientation=[e,t,r,n,o,i],void 0!==a.ctx.listener.forwardX?(a.ctx.listener.forwardX.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(n,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(i,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(e,t,r,n,o,i),a)},Howl.prototype.init=(e=Howl.prototype.init,function(t){var r=this;return r._orientation=t.orientation||[1,0,0],r._stereo=t.stereo||null,r._pos=t.pos||null,r._pannerAttr={coneInnerAngle:void 0!==t.coneInnerAngle?t.coneInnerAngle:360,coneOuterAngle:void 0!==t.coneOuterAngle?t.coneOuterAngle:360,coneOuterGain:void 0!==t.coneOuterGain?t.coneOuterGain:0,distanceModel:void 0!==t.distanceModel?t.distanceModel:"inverse",maxDistance:void 0!==t.maxDistance?t.maxDistance:1e4,panningModel:void 0!==t.panningModel?t.panningModel:"HRTF",refDistance:void 0!==t.refDistance?t.refDistance:1,rolloffFactor:void 0!==t.rolloffFactor?t.rolloffFactor:1},r._onstereo=t.onstereo?[{fn:t.onstereo}]:[],r._onpos=t.onpos?[{fn:t.onpos}]:[],r._onorientation=t.onorientation?[{fn:t.onorientation}]:[],e.call(this,t)}),Howl.prototype.stereo=function(e,r){var n=this;if(!n._webAudio)return n;if("loaded"!==n._state)return n._queue.push({event:"stereo",action:function(){n.stereo(e,r)}}),n;var o=void 0===Howler.ctx.createStereoPanner?"spatial":"stereo";if(void 0===r){if("number"!=typeof e)return n._stereo;n._stereo=e,n._pos=[e,0,0]}for(var i=n._getSoundIds(r),a=0;a"']/,H_=/[&<>"']/g,W_=/[<>"']|&(?!#?\w+;)/,X_=/[<>"']|&(?!#?\w+;)/g,G_={"&":"&","<":"<",">":">",'"':""","'":"'"},V_=e=>G_[e];const J_=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function Y_(e){return e.replace(J_,((e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}const K_=/(^|[^\[])\^/g;const Q_=/[^\w:]/g,em=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;const tm={},rm=/^[^:]+:\/*[^/]*$/,nm=/^([^:]+:)[\s\S]*$/,om=/^([^:]+:\/*[^/]*)[\s\S]*$/;function im(e,t){tm[" "+e]||(rm.test(e)?tm[" "+e]=e+"/":tm[" "+e]=am(e,"/",!0));const r=-1===(e=tm[" "+e]).indexOf(":");return"//"===t.substring(0,2)?r?t:e.replace(nm,"$1")+t:"/"===t.charAt(0)?r?t:e.replace(om,"$1")+t:e+t}function am(e,t,r){const n=e.length;if(0===n)return"";let o=0;for(;o(n=(n=n.source||n).replace(K_,"$1"),e=e.replace(t,n),r),getRegex:()=>new RegExp(e,t)};return r},cleanUrl:function(e,t,r){if(e){let e;try{e=decodeURIComponent(Y_(r)).replace(Q_,"").toLowerCase()}catch(n){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}t&&!em.test(r)&&(r=im(t,r));try{r=encodeURI(r).replace(/%25/g,"%")}catch(n){return null}return r},resolveUrl:im,noopTest:{exec:function(){}},merge:function(e){let t,r,n=1;for(;n{let n=!1,o=t;for(;--o>=0&&"\\"===r[o];)n=!n;return n?"|":" |"})).split(/ \|/);let n=0;if(r[0].trim()||r.shift(),r[r.length-1].trim()||r.pop(),r.length>t)r.splice(t);else for(;r.length1;)1&t&&(r+=e),t>>=1,e+=e;return r+e}};const{defaults:cm}=q_.exports,{rtrim:lm,splitCells:dm,escape:_m,findClosingBracket:mm}=sm;function pm(e,t,r,n){const o=t.href,i=t.title?_m(t.title):null,a=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){n.state.inLink=!0;const e={type:"link",raw:r,href:o,title:i,text:a,tokens:n.inlineTokens(a,[])};return n.state.inLink=!1,e}return{type:"image",raw:r,href:o,title:i,text:_m(a)}}var um=class{constructor(e){this.options=e||cm}space(e){const t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:lm(e,"\n")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],r=function(e,t){const r=e.match(/^(\s+)(?:```)/);if(null===r)return t;const n=r[1];return t.split("\n").map((e=>{const t=e.match(/^\s+/);if(null===t)return e;const[r]=t;return r.length>=n.length?e.slice(n.length):e})).join("\n")}(e,t[3]||"");return{type:"code",raw:e,lang:t[2]?t[2].trim():t[2],text:r}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){const t=lm(e,"#");this.options.pedantic?e=t.trim():t&&!/ $/.test(t)||(e=t.trim())}const r={type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:[]};return this.lexer.inline(r.text,r.tokens),r}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){const e=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(e,[]),text:e}}}list(e){let t=this.rules.block.list.exec(e);if(t){let r,n,o,i,a,s,c,l,d,_,m=t[1].trim();const p=m.length>1,u={type:"list",raw:"",ordered:p,start:p?+m.slice(0,-1):"",loose:!1,items:[]};m=p?`\\d{1,9}\\${m.slice(-1)}`:`\\${m}`,this.options.pedantic&&(m=p?m:"[*+-]");const f=new RegExp(`^( {0,3}${m})((?: [^\\n]*| *)(?:\\n[^\\n]*)*(?:\\n|$))`);for(;e&&!this.rules.block.hr.test(e)&&(t=f.exec(e));){d=t[2].split("\n"),this.options.pedantic?(i=2,_=d[0].trimLeft()):(i=t[2].search(/[^ ]/),i=t[1].length+(i>4?1:i),_=d[0].slice(i-t[1].length)),s=!1,r=t[0],!d[0]&&/^ *$/.test(d[1])&&(r=t[1]+d.slice(0,2).join("\n")+"\n",u.loose=!0,d=[]);const m=new RegExp(`^ {0,${Math.min(3,i-1)}}(?:[*+-]|\\d{1,9}[.)])`);for(a=1;a=i)&&l.trim()){r=t[1]+d.slice(0,a).join("\n")+"\n";break}_+="\n"+l.slice(i)}else l.trim()||(s=!0),l.search(/[^ ]/)>=i?_+="\n"+l.slice(i):_+="\n"+l}u.loose||(c?u.loose=!0:/\n *\n *$/.test(r)&&(c=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(_),n&&(o="[ ] "!==n[0],_=_.replace(/^\[[ xX]\] +/,""))),u.items.push({type:"list_item",raw:r,task:!!n,checked:o,loose:!1,text:_}),u.raw+=r,e=e.slice(r.length)}u.items[u.items.length-1].raw=r.trimRight(),u.items[u.items.length-1].text=_.trimRight(),u.raw=u.raw.trimRight();const h=u.items.length;for(a=0;a"space"===e.type))&&(u.loose=!0,u.items[a].loose=!0);return u}}html(e){const t=this.rules.block.html.exec(e);if(t){const e={type:"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:t[0]};return this.options.sanitize&&(e.type="paragraph",e.text=this.options.sanitizer?this.options.sanitizer(t[0]):_m(t[0]),e.tokens=[],this.lexer.inline(e.text,e.tokens)),e}}def(e){const t=this.rules.block.def.exec(e);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));return{type:"def",tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}}}table(e){const t=this.rules.block.table.exec(e);if(t){const e={type:"table",header:dm(t[1]).map((e=>({text:e}))),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(e.header.length===e.align.length){e.raw=t[0];let r,n,o,i,a=e.align.length;for(r=0;r({text:e})));for(a=e.header.length,n=0;n/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):_m(t[0]):t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&/^$/.test(e))return;const t=lm(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{const e=mm(t[2],"()");if(e>-1){const r=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,r).trim(),t[3]=""}}let r=t[2],n="";if(this.options.pedantic){const e=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r);e&&(r=e[1],n=e[3])}else n=t[3]?t[3].slice(1,-1):"";return r=r.trim(),/^$/.test(e)?r.slice(1):r.slice(1,-1)),pm(t,{href:r?r.replace(this.rules.inline._escapes,"$1"):r,title:n?n.replace(this.rules.inline._escapes,"$1"):n},t[0],this.lexer)}}reflink(e,t){let r;if((r=this.rules.inline.reflink.exec(e))||(r=this.rules.inline.nolink.exec(e))){let e=(r[2]||r[1]).replace(/\s+/g," ");if(e=t[e.toLowerCase()],!e||!e.href){const e=r[0].charAt(0);return{type:"text",raw:e,text:e}}return pm(r,e,r[0],this.lexer)}}emStrong(e,t,r=""){let n=this.rules.inline.emStrong.lDelim.exec(e);if(!n)return;if(n[3]&&r.match(/[\p{L}\p{N}]/u))return;const o=n[1]||n[2]||"";if(!o||o&&(""===r||this.rules.inline.punctuation.exec(r))){const r=n[0].length-1;let o,i,a=r,s=0;const c="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+r);null!=(n=c.exec(t));){if(o=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!o)continue;if(i=o.length,n[3]||n[4]){a+=i;continue}if((n[5]||n[6])&&r%3&&!((r+i)%3)){s+=i;continue}if(a-=i,a>0)continue;if(i=Math.min(i,i+a+s),Math.min(r,i)%2){const t=e.slice(1,r+n.index+i);return{type:"em",raw:e.slice(0,r+n.index+i+1),text:t,tokens:this.lexer.inlineTokens(t,[])}}const t=e.slice(2,r+n.index+i-1);return{type:"strong",raw:e.slice(0,r+n.index+i+1),text:t,tokens:this.lexer.inlineTokens(t,[])}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\n/g," ");const r=/[^ ]/.test(e),n=/^ /.test(e)&&/ $/.test(e);return r&&n&&(e=e.substring(1,e.length-1)),e=_m(e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}}autolink(e,t){const r=this.rules.inline.autolink.exec(e);if(r){let e,n;return"@"===r[2]?(e=_m(this.options.mangle?t(r[1]):r[1]),n="mailto:"+e):(e=_m(r[1]),n=e),{type:"link",raw:r[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e,t){let r;if(r=this.rules.inline.url.exec(e)){let e,n;if("@"===r[2])e=_m(this.options.mangle?t(r[0]):r[0]),n="mailto:"+e;else{let t;do{t=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])[0]}while(t!==r[0]);e=_m(r[0]),n="www."===r[1]?"http://"+e:e}return{type:"link",raw:r[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e,t){const r=this.rules.inline.text.exec(e);if(r){let e;return e=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):_m(r[0]):r[0]:_m(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:e}}}};const{noopTest:fm,edit:hm,merge:gm}=sm,bm={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)( [^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:fm,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};bm.def=hm(bm.def).replace("label",bm._label).replace("title",bm._title).getRegex(),bm.bullet=/(?:[*+-]|\d{1,9}[.)])/,bm.listItemStart=hm(/^( *)(bull) */).replace("bull",bm.bullet).getRegex(),bm.list=hm(bm.list).replace(/bull/g,bm.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+bm.def.source+")").getRegex(),bm._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",bm._comment=/|$)/,bm.html=hm(bm.html,"i").replace("comment",bm._comment).replace("tag",bm._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),bm.paragraph=hm(bm._paragraph).replace("hr",bm.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",bm._tag).getRegex(),bm.blockquote=hm(bm.blockquote).replace("paragraph",bm.paragraph).getRegex(),bm.normal=gm({},bm),bm.gfm=gm({},bm.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),bm.gfm.table=hm(bm.gfm.table).replace("hr",bm.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",bm._tag).getRegex(),bm.pedantic=gm({},bm.normal,{html:hm("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",bm._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:fm,paragraph:hm(bm.normal._paragraph).replace("hr",bm.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",bm.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const vm={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:fm,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:fm,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"};vm.punctuation=hm(vm.punctuation).replace(/punctuation/g,vm._punctuation).getRegex(),vm.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,vm.escapedEmSt=/\\\*|\\_/g,vm._comment=hm(bm._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),vm.emStrong.lDelim=hm(vm.emStrong.lDelim).replace(/punct/g,vm._punctuation).getRegex(),vm.emStrong.rDelimAst=hm(vm.emStrong.rDelimAst,"g").replace(/punct/g,vm._punctuation).getRegex(),vm.emStrong.rDelimUnd=hm(vm.emStrong.rDelimUnd,"g").replace(/punct/g,vm._punctuation).getRegex(),vm._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,vm._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,vm._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,vm.autolink=hm(vm.autolink).replace("scheme",vm._scheme).replace("email",vm._email).getRegex(),vm._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,vm.tag=hm(vm.tag).replace("comment",vm._comment).replace("attribute",vm._attribute).getRegex(),vm._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,vm._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,vm._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,vm.link=hm(vm.link).replace("label",vm._label).replace("href",vm._href).replace("title",vm._title).getRegex(),vm.reflink=hm(vm.reflink).replace("label",vm._label).getRegex(),vm.reflinkSearch=hm(vm.reflinkSearch,"g").replace("reflink",vm.reflink).replace("nolink",vm.nolink).getRegex(),vm.normal=gm({},vm),vm.pedantic=gm({},vm.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:hm(/^!?\[(label)\]\((.*?)\)/).replace("label",vm._label).getRegex(),reflink:hm(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",vm._label).getRegex()}),vm.gfm=gm({},vm.normal,{escape:hm(vm.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\.5&&(r="x"+r.toString(16)),n+="&#"+r+";";return n}var Mm=class e{constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||km,this.options.tokenizer=this.options.tokenizer||new Nm,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const t={block:wm.normal,inline:Om.normal};this.options.pedantic?(t.block=wm.pedantic,t.inline=Om.pedantic):this.options.gfm&&(t.block=wm.gfm,this.options.breaks?t.inline=Om.breaks:t.inline=Om.gfm),this.tokenizer.rules=t}static get rules(){return{block:wm,inline:Om}}static lex(t,r){return new e(r).lex(t)}static lexInline(t,r){return new e(r).inlineTokens(t)}lex(e){let t;for(e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens);t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens}blockTokens(e,t=[]){let r,n,o,i;for(this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some((n=>!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)))))if(r=this.tokenizer.space(e))e=e.substring(r.raw.length),r.type&&t.push(r);else if(r=this.tokenizer.code(e))e=e.substring(r.raw.length),n=t[t.length-1],!n||"paragraph"!==n.type&&"text"!==n.type?t.push(r):(n.raw+="\n"+r.raw,n.text+="\n"+r.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(r=this.tokenizer.fences(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.heading(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.hr(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.blockquote(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.list(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.html(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.def(e))e=e.substring(r.raw.length),n=t[t.length-1],!n||"paragraph"!==n.type&&"text"!==n.type?this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title}):(n.raw+="\n"+r.raw,n.text+="\n"+r.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(r=this.tokenizer.table(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.lheading(e))e=e.substring(r.raw.length),t.push(r);else{if(o=e,this.options.extensions&&this.options.extensions.startBlock){let t=1/0;const r=e.slice(1);let n;this.options.extensions.startBlock.forEach((function(e){n=e.call({lexer:this},r),"number"==typeof n&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(o=e.substring(0,t+1))}if(this.state.top&&(r=this.tokenizer.paragraph(o)))n=t[t.length-1],i&&"paragraph"===n.type?(n.raw+="\n"+r.raw,n.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(r),i=o.length!==e.length,e=e.substring(r.raw.length);else if(r=this.tokenizer.text(e))e=e.substring(r.raw.length),n=t[t.length-1],n&&"text"===n.type?(n.raw+="\n"+r.raw,n.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(r);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t){this.inlineQueue.push({src:e,tokens:t})}inlineTokens(e,t=[]){let r,n,o,i,a,s,c=e;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(c));)e.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(c=c.slice(0,i.index)+"["+xm("a",i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(c));)c=c.slice(0,i.index)+"["+xm("a",i[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.escapedEmSt.exec(c));)c=c.slice(0,i.index)+"++"+c.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;e;)if(a||(s=""),a=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((n=>!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)))))if(r=this.tokenizer.escape(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.tag(e))e=e.substring(r.raw.length),n=t[t.length-1],n&&"text"===r.type&&"text"===n.type?(n.raw+=r.raw,n.text+=r.text):t.push(r);else if(r=this.tokenizer.link(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(r.raw.length),n=t[t.length-1],n&&"text"===r.type&&"text"===n.type?(n.raw+=r.raw,n.text+=r.text):t.push(r);else if(r=this.tokenizer.emStrong(e,c,s))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.codespan(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.br(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.del(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.autolink(e,jm))e=e.substring(r.raw.length),t.push(r);else if(this.state.inLink||!(r=this.tokenizer.url(e,jm))){if(o=e,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const r=e.slice(1);let n;this.options.extensions.startInline.forEach((function(e){n=e.call({lexer:this},r),"number"==typeof n&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(o=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(o,Sm))e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(s=r.raw.slice(-1)),a=!0,n=t[t.length-1],n&&"text"===n.type?(n.raw+=r.raw,n.text+=r.text):t.push(r);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}else e=e.substring(r.raw.length),t.push(r);return t}};const{defaults:Am}=q_.exports,{cleanUrl:Pm,escape:Lm}=sm;var Bm=class{constructor(e){this.options=e||Am}code(e,t,r){const n=(t||"").match(/\S*/)[0];if(this.options.highlight){const t=this.options.highlight(e,n);null!=t&&t!==e&&(r=!0,e=t)}return e=e.replace(/\n$/,"")+"\n",n?'
'+(r?e:Lm(e,!0))+"
\n":"
"+(r?e:Lm(e,!0))+"
\n"}blockquote(e){return"
\n"+e+"
\n"}html(e){return e}heading(e,t,r,n){return this.options.headerIds?"'+e+"\n":""+e+"\n"}hr(){return this.options.xhtml?"
\n":"
\n"}list(e,t,r){const n=t?"ol":"ul";return"<"+n+(t&&1!==r?' start="'+r+'"':"")+">\n"+e+"\n"}listitem(e){return"
  • "+e+"
  • \n"}checkbox(e){return" "}paragraph(e){return"

    "+e+"

    \n"}table(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"}tablerow(e){return"\n"+e+"\n"}tablecell(e,t){const r=t.header?"th":"td";return(t.align?"<"+r+' align="'+t.align+'">':"<"+r+">")+e+"\n"}strong(e){return""+e+""}em(e){return""+e+""}codespan(e){return""+e+""}br(){return this.options.xhtml?"
    ":"
    "}del(e){return""+e+""}link(e,t,r){if(null===(e=Pm(this.options.sanitize,this.options.baseUrl,e)))return r;let n='",n}image(e,t,r){if(null===(e=Pm(this.options.sanitize,this.options.baseUrl,e)))return r;let n=''+r+'":">",n}text(e){return e}},Cm=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,r){return""+r}image(e,t,r){return""+r}br(){return""}},zm=class{constructor(){this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let r=e,n=0;if(this.seen.hasOwnProperty(r)){n=this.seen[e];do{n++,r=e+"-"+n}while(this.seen.hasOwnProperty(r))}return t||(this.seen[e]=n,this.seen[r]=0),r}slug(e,t={}){const r=this.serialize(e);return this.getNextSafeSlug(r,t.dryrun)}};const Tm=Bm,Im=Cm,Rm=zm,{defaults:Fm}=q_.exports,{unescape:Em}=sm;var Dm=class e{constructor(e){this.options=e||Fm,this.options.renderer=this.options.renderer||new Tm,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new Im,this.slugger=new Rm}static parse(t,r){return new e(r).parse(t)}static parseInline(t,r){return new e(r).parseInline(t)}parse(e,t=!0){let r,n,o,i,a,s,c,l,d,_,m,p,u,f,h,g,b,v,y,N="";const k=e.length;for(r=0;r0&&"paragraph"===h.tokens[0].type?(h.tokens[0].text=v+" "+h.tokens[0].text,h.tokens[0].tokens&&h.tokens[0].tokens.length>0&&"text"===h.tokens[0].tokens[0].type&&(h.tokens[0].tokens[0].text=v+" "+h.tokens[0].tokens[0].text)):h.tokens.unshift({type:"text",text:v}):f+=v),f+=this.parse(h.tokens,u),d+=this.renderer.listitem(f,b,g);N+=this.renderer.list(d,m,p);continue;case"html":N+=this.renderer.html(_.text);continue;case"paragraph":N+=this.renderer.paragraph(this.parseInline(_.tokens));continue;case"text":for(d=_.tokens?this.parseInline(_.tokens):_.text;r+1{o(e.text,e.lang,(function(t,r){if(t)return a(t);null!=r&&r!==e.text&&(e.text=r,e.escaped=!0),s--,0===s&&a()}))}),0))})),void(0===s&&a())}try{const r=$m.lex(e,t);return t.walkTokens&&Qm.walkTokens(r,t.walkTokens),qm.parse(r,t)}catch(n){if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"

    An error occurred:

    "+Vm(n.message+"",!0)+"
    ";throw n}}Qm.options=Qm.setOptions=function(e){return Xm(Qm.defaults,e),Ym(Qm.defaults),Qm},Qm.getDefaults=Jm,Qm.defaults=Km,Qm.use=function(...e){const t=Xm({},...e),r=Qm.defaults.extensions||{renderers:{},childTokens:{}};let n;e.forEach((e=>{if(e.extensions&&(n=!0,e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if(e.renderer){const t=r.renderers?r.renderers[e.name]:null;r.renderers[e.name]=t?function(...r){let n=e.renderer.apply(this,r);return!1===n&&(n=t.apply(this,r)),n}:e.renderer}if(e.tokenizer){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");r[e.level]?r[e.level].unshift(e.tokenizer):r[e.level]=[e.tokenizer],e.start&&("block"===e.level?r.startBlock?r.startBlock.push(e.start):r.startBlock=[e.start]:"inline"===e.level&&(r.startInline?r.startInline.push(e.start):r.startInline=[e.start]))}e.childTokens&&(r.childTokens[e.name]=e.childTokens)}))),e.renderer){const r=Qm.defaults.renderer||new Zm;for(const t in e.renderer){const n=r[t];r[t]=(...o)=>{let i=e.renderer[t].apply(r,o);return!1===i&&(i=n.apply(r,o)),i}}t.renderer=r}if(e.tokenizer){const r=Qm.defaults.tokenizer||new Um;for(const t in e.tokenizer){const n=r[t];r[t]=(...o)=>{let i=e.tokenizer[t].apply(r,o);return!1===i&&(i=n.apply(r,o)),i}}t.tokenizer=r}if(e.walkTokens){const r=Qm.defaults.walkTokens;t.walkTokens=function(t){e.walkTokens.call(this,t),r&&r.call(this,t)}}n&&(t.extensions=r),Qm.setOptions(t)}))},Qm.walkTokens=function(e,t){for(const r of e)switch(t.call(Qm,r),r.type){case"table":for(const e of r.header)Qm.walkTokens(e.tokens,t);for(const e of r.rows)for(const r of e)Qm.walkTokens(r.tokens,t);break;case"list":Qm.walkTokens(r.items,t);break;default:Qm.defaults.extensions&&Qm.defaults.extensions.childTokens&&Qm.defaults.extensions.childTokens[r.type]?Qm.defaults.extensions.childTokens[r.type].forEach((function(e){Qm.walkTokens(r[e],t)})):r.tokens&&Qm.walkTokens(r.tokens,t)}},Qm.parseInline=function(e,t){if(null==e)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");t=Xm({},Qm.defaults,t||{}),Gm(t);try{const r=$m.lexInline(e,t);return t.walkTokens&&Qm.walkTokens(r,t.walkTokens),qm.parseInline(r,t)}catch(r){if(r.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"

    An error occurred:

    "+Vm(r.message+"",!0)+"
    ";throw r}},Qm.Parser=qm,Qm.parser=qm.parse,Qm.Renderer=Zm,Qm.TextRenderer=Hm,Qm.Lexer=$m,Qm.lexer=$m.lex,Qm.Tokenizer=Um,Qm.Slugger=Wm,Qm.parse=Qm;const ep=Qm,tp=Mm,rp=Dm,np=um,op=Bm,ip=Cm,ap=zm;$_.exports=ep,$_.exports.parse=ep,$_.exports.Parser=rp,$_.exports.parser=rp.parse,$_.exports.Renderer=op,$_.exports.TextRenderer=ip,$_.exports.Lexer=tp,$_.exports.lexer=tp.lex,$_.exports.Tokenizer=np,$_.exports.Slugger=ap;var sp=$_.exports;export{Oe as A,sp as B,bo as C,ho as E,Wo as G,Jo as L,$ as N,Vo as O,se as R,Co as T,Do as V,Zo as Z,y as a,Ce as b,Xs as c,Bl as d,g_ as e,fi as f,hi as g,vi as h,ki as i,pa as j,jo as k,ye as l,bi as m,k as n,k_ as o,Q as p,xe as q,b_ as r,ke as s,ce as t,ee as u,D_ as v,wi as w,we as x,Ne as y,ei as z}; +//# sourceMappingURL=vendor.22f0794e.js.map diff --git a/assets/vendor.22f0794e.js.map b/assets/vendor.22f0794e.js.map new file mode 100644 index 00000000..a9acfff5 --- /dev/null +++ b/assets/vendor.22f0794e.js.map @@ -0,0 +1 @@ +{"version":3,"file":"vendor.22f0794e.js","sources":["../../node_modules/preact/dist/preact.module.js","../../node_modules/preact-router/dist/preact-router.es.js","../../node_modules/preact/hooks/dist/hooks.module.js","../../node_modules/@mcschema/core/lib/model/Path.js","../../node_modules/@mcschema/core/lib/model/Errors.js","../../node_modules/@mcschema/core/lib/utils.js","../../node_modules/@mcschema/core/lib/model/DataModel.js","../../node_modules/@mcschema/core/lib/nodes/Node.js","../../node_modules/@mcschema/core/lib/nodes/BooleanNode.js","../../node_modules/@mcschema/core/lib/nodes/ListNode.js","../../node_modules/@mcschema/core/lib/nodes/SwitchNode.js","../../node_modules/@mcschema/core/lib/nodes/ChoiceNode.js","../../node_modules/@mcschema/core/lib/nodes/MapNode.js","../../node_modules/@mcschema/core/lib/nodes/NumberNode.js","../../node_modules/@mcschema/core/lib/nodes/ObjectNode.js","../../node_modules/@mcschema/core/lib/nodes/Reference.js","../../node_modules/@mcschema/core/lib/nodes/StringNode.js","../../node_modules/@mcschema/core/lib/Hook.js","../../node_modules/@mcschema/core/lib/Registries.js","../../node_modules/@mcschema/core/lib/ValidationOption.js","../../node_modules/@mcschema/core/lib/index.js","../../node_modules/pako/dist/pako.esm.mjs","../../node_modules/crypt/crypt.js","../../node_modules/charenc/charenc.js","../../node_modules/is-buffer/index.js","../../node_modules/md5/md5.js","../../node_modules/deepslate/dist/deepslate.esm.js","../../node_modules/deepslate-rs/deepslate_rs.js","../../node_modules/deepslate-rs/deepslate_rs_bg.wasm?url","../../node_modules/@mcschema/java-1.15/lib/Collections.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Common.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Predicates.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Advancement.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Condition.js","../../node_modules/@mcschema/java-1.15/lib/LootContext.js","../../node_modules/@mcschema/java-1.15/lib/schemas/LootTable.js","../../node_modules/@mcschema/java-1.15/lib/schemas/PackMcmeta.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Recipe.js","../../node_modules/@mcschema/java-1.15/lib/schemas/Tags.js","../../node_modules/@mcschema/java-1.15/lib/schemas/TextComponent.js","../../node_modules/@mcschema/java-1.15/lib/schemas/index.js","../../node_modules/@mcschema/java-1.15/lib/index.js","../../node_modules/@mcschema/java-1.16/lib/Collections.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Common.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Advancement.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Condition.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Dimension.js","../../node_modules/@mcschema/java-1.16/lib/schemas/DimensionType.js","../../node_modules/@mcschema/java-1.16/lib/LootContext.js","../../node_modules/@mcschema/java-1.16/lib/schemas/LootTable.js","../../node_modules/@mcschema/java-1.16/lib/schemas/PackMcmeta.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Predicates.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Recipe.js","../../node_modules/@mcschema/java-1.16/lib/schemas/Tags.js","../../node_modules/@mcschema/java-1.16/lib/schemas/TextComponent.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/Biome.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/Carver.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/Decorator.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/ProcessorList.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/Feature.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/NoiseSettings.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/StructureFeature.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/SurfaceBuilder.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/TemplatePool.js","../../node_modules/@mcschema/java-1.16/lib/schemas/worldgen/index.js","../../node_modules/@mcschema/java-1.16/lib/schemas/WorldSettings.js","../../node_modules/@mcschema/java-1.16/lib/schemas/index.js","../../node_modules/@mcschema/java-1.16/lib/index.js","../../node_modules/@mcschema/java-1.17/lib/Collections.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Advancement.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Common.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Condition.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Dimension.js","../../node_modules/@mcschema/java-1.17/lib/schemas/DimensionType.js","../../node_modules/@mcschema/java-1.17/lib/schemas/ItemModifier.js","../../node_modules/@mcschema/java-1.17/lib/LootContext.js","../../node_modules/@mcschema/java-1.17/lib/schemas/LootTable.js","../../node_modules/@mcschema/java-1.17/lib/schemas/PackMcmeta.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Predicates.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Recipe.js","../../node_modules/@mcschema/java-1.17/lib/schemas/Tags.js","../../node_modules/@mcschema/java-1.17/lib/schemas/TextComponent.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/Biome.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/Carver.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/Decorator.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/ProcessorList.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/Feature.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/NoiseSettings.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/StructureFeature.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/SurfaceBuilder.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/TemplatePool.js","../../node_modules/@mcschema/java-1.17/lib/schemas/worldgen/index.js","../../node_modules/@mcschema/java-1.17/lib/schemas/WorldSettings.js","../../node_modules/@mcschema/java-1.17/lib/schemas/index.js","../../node_modules/@mcschema/java-1.17/lib/index.js","../../node_modules/@mcschema/java-1.18/lib/Collections.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Advancement.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Common.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Condition.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Dimension.js","../../node_modules/@mcschema/java-1.18/lib/schemas/DimensionType.js","../../node_modules/@mcschema/java-1.18/lib/schemas/ItemModifier.js","../../node_modules/@mcschema/java-1.18/lib/LootContext.js","../../node_modules/@mcschema/java-1.18/lib/schemas/LootTable.js","../../node_modules/@mcschema/java-1.18/lib/schemas/PackMcmeta.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Predicates.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Recipe.js","../../node_modules/@mcschema/java-1.18/lib/schemas/Tags.js","../../node_modules/@mcschema/java-1.18/lib/schemas/TextComponent.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/Biome.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/Carver.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/Decorator.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/ProcessorList.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/Feature.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/NoiseSettings.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/StructureFeature.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/SurfaceRule.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/TemplatePool.js","../../node_modules/@mcschema/java-1.18/lib/schemas/worldgen/index.js","../../node_modules/@mcschema/java-1.18/lib/schemas/WorldSettings.js","../../node_modules/@mcschema/java-1.18/lib/schemas/index.js","../../node_modules/@mcschema/java-1.18/lib/index.js","../../node_modules/rfdc/index.js","../../node_modules/preact/compat/dist/compat.module.js","../../node_modules/howler/dist/howler.js","../../node_modules/marked/lib/marked.esm.js"],"sourcesContent":["var n,l,u,i,t,o,r={},f=[],e=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function c(n,l){for(var u in l)n[u]=l[u];return n}function s(n){var l=n.parentNode;l&&l.removeChild(n)}function a(n,l,u){var i,t,o,r=arguments,f={};for(o in l)\"key\"==o?i=l[o]:\"ref\"==o?t=l[o]:f[o]=l[o];if(arguments.length>3)for(u=[u],o=3;o0?v(k.type,k.props,k.key,null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(_=A[h])||_&&k.key==_.key&&k.type===_.type)A[h]=void 0;else for(p=0;p3)for(u=[u],o=3;o b.rank) ? -1 :\n\t\t\t\t(a.index - b.index)\n\t);\n}\n\n// filter out VNodes without attributes (which are unrankeable), and add `index`/`rank` properties to be used in sorting.\nfunction prepareVNodeForRanking(vnode, index) {\n\tvnode.index = index;\n\tvnode.rank = rankChild(vnode);\n\treturn vnode.props;\n}\n\nfunction segmentize(url) {\n\treturn url.replace(/(^\\/+|\\/+$)/g, '').split('/');\n}\n\nfunction rankSegment(segment) {\n\treturn segment.charAt(0)==':' ? (1 + '*+?'.indexOf(segment.charAt(segment.length-1))) || 4 : 5;\n}\n\nfunction rank(path) {\n\treturn segmentize(path).map(rankSegment).join('');\n}\n\nfunction rankChild(vnode) {\n\treturn vnode.props.default ? 0 : rank(vnode.props.path);\n}\n\nvar customHistory = null;\n\nvar ROUTERS = [];\n\nvar subscribers = [];\n\nvar EMPTY = {};\n\nfunction setUrl(url, type) {\n\tif ( type === void 0 ) type='push';\n\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tvar url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn (\"\" + (url.pathname || '') + (url.search || ''));\n}\n\n\n\nfunction route(url, replace) {\n\tif ( replace === void 0 ) replace=false;\n\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (var i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) { return true; }\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tvar didRoute = false;\n\tfor (var i=0; i 0;\n\t};\n\n\t/** Re-render children with a new URL to match against. */\n\tRouter.prototype.routeTo = function routeTo (url) {\n\t\tthis.setState({ url: url });\n\n\t\tvar didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) { this.forceUpdate(); }\n\n\t\treturn didRoute;\n\t};\n\n\tRouter.prototype.componentWillMount = function componentWillMount () {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t};\n\n\tRouter.prototype.componentDidMount = function componentDidMount () {\n\t\tvar this$1 = this;\n\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen(function (location) {\n\t\t\t\tthis$1.routeTo((\"\" + (location.pathname || '') + (location.search || '')));\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t};\n\n\tRouter.prototype.componentWillUnmount = function componentWillUnmount () {\n\t\tif (typeof this.unlisten==='function') { this.unlisten(); }\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t};\n\n\tRouter.prototype.componentWillUpdate = function componentWillUpdate () {\n\t\tthis.updating = true;\n\t};\n\n\tRouter.prototype.componentDidUpdate = function componentDidUpdate () {\n\t\tthis.updating = false;\n\t};\n\n\tRouter.prototype.getMatchingChildren = function getMatchingChildren (children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( function (vnode) {\n\t\t\t\tvar matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tvar newProps = { url: url, matches: matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t};\n\n\tRouter.prototype.render = function render (ref, ref$1) {\n\t\tvar children = ref.children;\n\t\tvar onChange = ref.onChange;\n\t\tvar url = ref$1.url;\n\n\t\tvar active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tvar current = active[0] || null;\n\n\t\tvar previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl: url,\n\t\t\t\t\tprevious: previous,\n\t\t\t\t\tactive: active,\n\t\t\t\t\tcurrent: current\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t};\n\n\treturn Router;\n}(Component));\n\nvar Link = function (props) { return (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n); };\n\nvar Route = function (props) { return createElement(props.component, props); };\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };export default Router;\n//# sourceMappingURL=preact-router.es.js.map\n","import{options as n}from\"preact\";var t,u,r,o=0,i=[],c=n.__b,f=n.__r,e=n.diffed,a=n.__c,v=n.unmount;function m(t,r){n.__h&&n.__h(u,t,o||r),o=0;var i=u.__H||(u.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({}),i.__[t]}function l(n){return o=1,p(w,n)}function p(n,r,o){var i=m(t++,2);return i.t=n,i.__c||(i.__=[o?o(r):w(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}))}],i.__c=u),i.__}function y(r,o){var i=m(t++,3);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i))}function h(r,o){var i=m(t++,4);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i))}function s(n){return o=5,d(function(){return{current:n}},[])}function _(n,t,u){o=6,h(function(){\"function\"==typeof n?n(t()):n&&(n.current=t())},null==u?u:u.concat(n))}function d(n,u){var r=m(t++,7);return k(r.__H,u)&&(r.__=n(),r.__H=u,r.__h=n),r.__}function A(n,t){return o=8,d(function(){return n},t)}function F(n){var r=u.context[n.__c],o=m(t++,9);return o.__c=n,r?(null==o.__&&(o.__=!0,r.sub(u)),r.props.value):n.__}function T(t,u){n.useDebugValue&&n.useDebugValue(u?u(t):t)}function q(n){var r=m(t++,10),o=l();return r.__=n,u.componentDidCatch||(u.componentDidCatch=function(n){r.__&&r.__(n),o[1](n)}),[o[0],function(){o[1](void 0)}]}function x(){i.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(g),t.__H.__h.forEach(j),t.__H.__h=[]}catch(u){t.__H.__h=[],n.__e(u,t.__v)}}),i=[]}n.__b=function(n){u=null,c&&c(n)},n.__r=function(n){f&&f(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(g),r.__h.forEach(j),r.__h=[])},n.diffed=function(t){e&&e(t);var o=t.__c;o&&o.__H&&o.__H.__h.length&&(1!==i.push(o)&&r===n.requestAnimationFrame||((r=n.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),b&&cancelAnimationFrame(t),setTimeout(n)},r=setTimeout(u,100);b&&(t=requestAnimationFrame(u))})(x)),u=void 0},n.__c=function(t,u){u.some(function(t){try{t.__h.forEach(g),t.__h=t.__h.filter(function(n){return!n.__||j(n)})}catch(r){u.some(function(n){n.__h&&(n.__h=[])}),u=[],n.__e(r,t.__v)}}),a&&a(t,u)},n.unmount=function(t){v&&v(t);var u=t.__c;if(u&&u.__H)try{u.__H.__.forEach(g)}catch(t){n.__e(t,u.__v)}};var b=\"function\"==typeof requestAnimationFrame;function g(n){var t=u;\"function\"==typeof n.__c&&n.__c(),u=t}function j(n){var t=u;n.__c=n.__(),u=t}function k(n,t){return!n||n.length!==t.length||t.some(function(t,u){return t!==n[u]})}function w(n,t){return\"function\"==typeof t?t(n):t}export{l as useState,p as useReducer,y as useEffect,h as useLayoutEffect,s as useRef,_ as useImperativeHandle,d as useMemo,A as useCallback,F as useContext,T as useDebugValue,q as useErrorBoundary};\n//# sourceMappingURL=hooks.module.js.map\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ModelPath = exports.Path = exports.relativePath = void 0;\r\nfunction relativePath(start, relativePath) {\r\n return relativePath.reduce((path, e) => {\r\n if (e === 'pop') {\r\n return path.pop();\r\n }\r\n else {\r\n return path.push(e.push);\r\n }\r\n }, start);\r\n}\r\nexports.relativePath = relativePath;\r\n/**\r\n * Immutable helper class to represent a path in data\r\n */\r\nclass Path {\r\n /**\r\n * @param modelArr Initial array of path model elements. Empty if not given\r\n * @param contextArr Initial array of path context elements. Empty if not given\r\n */\r\n constructor(modelArr, contextArr) {\r\n this.modelArr = modelArr !== null && modelArr !== void 0 ? modelArr : [];\r\n this.contextArr = contextArr !== null && contextArr !== void 0 ? contextArr : [];\r\n }\r\n /**\r\n * The last model element of this path\r\n */\r\n last() {\r\n return this.modelArr[this.modelArr.length - 1];\r\n }\r\n /**\r\n * A new path with the specific sliced module elements\r\n */\r\n slice(start, end) {\r\n return new Path(this.modelArr.slice(start, end), this.contextArr);\r\n }\r\n /**\r\n * A new path with the first model element removed\r\n */\r\n shift() {\r\n return new Path(this.modelArr.slice(1), this.contextArr);\r\n }\r\n /**\r\n * A new path with the last model element removed\r\n */\r\n pop() {\r\n return new Path(this.modelArr.slice(0, -1), this.contextArr);\r\n }\r\n /**\r\n * A new path with an element added at the end\r\n * @param element element to push at the end of the array\r\n */\r\n push(element) {\r\n return this.modelPush(element).contextPush(element);\r\n }\r\n /**\r\n * Push an element exclusivly to the model array\r\n * @param element\r\n */\r\n modelPush(element) {\r\n return new Path([...this.modelArr, element], [...this.contextArr]);\r\n }\r\n /**\r\n * Push an element exclusivly to the context array\r\n * @param element\r\n */\r\n contextPush(element) {\r\n if (typeof element === 'number')\r\n return this.copy();\r\n const newElement = element.startsWith('minecraft:') ? element.slice(10) : element;\r\n return new Path([...this.modelArr], [...this.contextArr, newElement]);\r\n }\r\n copy() {\r\n return new Path([...this.modelArr], [...this.contextArr]);\r\n }\r\n getArray() {\r\n return this.modelArr;\r\n }\r\n /**\r\n * Attaches a model to this path and all paths created from this\r\n * @param model\r\n */\r\n withModel(model) {\r\n return new ModelPath(model, this);\r\n }\r\n getContext() {\r\n return this.contextArr;\r\n }\r\n /**\r\n * Checks path equality\r\n * @param other path to compare\r\n */\r\n equals(other) {\r\n return other.modelArr.length === this.modelArr.length\r\n && other.modelArr.every((v, i) => v === this.modelArr[i]);\r\n }\r\n /**\r\n * Checks if this path starts with another path\r\n * @param other path that this path should start with\r\n */\r\n startsWith(other) {\r\n if (this.modelArr.length < other.modelArr.length)\r\n return false;\r\n return other.modelArr.every((v, i) => v === this.modelArr[i]);\r\n }\r\n /**\r\n * Checks if this path ends with another path\r\n * @param other parent path where this path should end with\r\n */\r\n endsWith(other) {\r\n const offset = this.modelArr.length - other.modelArr.length;\r\n if (offset < 0)\r\n return false;\r\n return other.modelArr.every((v, i) => v === this.modelArr[offset + i]);\r\n }\r\n toString() {\r\n return this.modelArr\r\n .map(e => (typeof e === 'string') ? `.${e}` : `[${e}]`)\r\n .join('')\r\n .replace(/^\\./, '');\r\n }\r\n forEach(fn, thisArg) {\r\n return this.modelArr.forEach(fn, thisArg);\r\n }\r\n}\r\nexports.Path = Path;\r\nclass ModelPath extends Path {\r\n constructor(model, path) {\r\n super(path === null || path === void 0 ? void 0 : path.modelArr, path === null || path === void 0 ? void 0 : path.contextArr);\r\n this.model = model;\r\n }\r\n getModel() {\r\n return this.model;\r\n }\r\n /**\r\n * Gets the data from the model if it was attached\r\n * @returns undefined, if no model was attached\r\n */\r\n get() {\r\n var _a;\r\n return (_a = this.model) === null || _a === void 0 ? void 0 : _a.get(this);\r\n }\r\n /**\r\n * Sets the value to the model if it was attached\r\n */\r\n set(value) {\r\n var _a;\r\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.set(this, value);\r\n }\r\n /**\r\n * A new path with the specific sliced module elements\r\n */\r\n slice(start, end) {\r\n return new ModelPath(this.model, super.slice(start, end));\r\n }\r\n /**\r\n * A new path with the first model element removed\r\n */\r\n shift() {\r\n return new ModelPath(this.model, super.shift());\r\n }\r\n /**\r\n * A new path with the last model element removed\r\n */\r\n pop() {\r\n return new ModelPath(this.model, super.pop());\r\n }\r\n /**\r\n * A new path with an element added at the end\r\n * @param element element to push at the end of the array\r\n */\r\n push(element) {\r\n return this.modelPush(element).contextPush(element);\r\n }\r\n /**\r\n * Push an element exclusivly to the model array\r\n * @param element\r\n */\r\n modelPush(element) {\r\n return new ModelPath(this.model, super.modelPush(element));\r\n }\r\n /**\r\n * Push an element exclusivly to the context array\r\n * @param element\r\n */\r\n contextPush(element) {\r\n return new ModelPath(this.model, super.contextPush(element));\r\n }\r\n copy() {\r\n return new ModelPath(this.model, super.copy());\r\n }\r\n}\r\nexports.ModelPath = ModelPath;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Errors = void 0;\r\n/**\r\n * Collects errors from data paths\r\n */\r\nclass Errors {\r\n constructor() {\r\n this.errors = [];\r\n }\r\n add(path, error, ...params) {\r\n this.errors.push({ path, error, params });\r\n return false;\r\n }\r\n get(path, exact = false) {\r\n return exact ? this.errors.filter(e => e.path.equals(path))\r\n : this.errors.filter(e => e.path.startsWith(path));\r\n }\r\n getAll() {\r\n return this.errors;\r\n }\r\n clear() {\r\n this.errors = [];\r\n }\r\n count() {\r\n return this.errors.length;\r\n }\r\n *[Symbol.iterator]() {\r\n for (const e of this.errors) {\r\n yield e;\r\n }\r\n }\r\n}\r\nexports.Errors = Errors;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.hexId = exports.quoteString = exports.escapeString = void 0;\r\nfunction escapeString(str) {\r\n return str.replace(/(\\\\|\")/g, '\\\\$1');\r\n}\r\nexports.escapeString = escapeString;\r\nfunction quoteString(str) {\r\n return `\"${escapeString(str)}\"`;\r\n}\r\nexports.quoteString = quoteString;\r\nconst dec2hex = (dec) => ('0' + dec.toString(16)).substr(-2);\r\nfunction hexId(length = 12) {\r\n var arr = new Uint8Array(length / 2);\r\n window.crypto.getRandomValues(arr);\r\n return Array.from(arr, dec2hex).join('');\r\n}\r\nexports.hexId = hexId;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.DataModel = void 0;\r\nconst Path_1 = require(\"./Path\");\r\nconst Errors_1 = require(\"./Errors\");\r\nconst utils_1 = require(\"../utils\");\r\n/**\r\n * Holding the data linked to a given schema\r\n */\r\nclass DataModel {\r\n /**\r\n * @param schema node to use as schema for this model\r\n */\r\n constructor(schema, options) {\r\n var _a, _b, _c, _d;\r\n this.historyMax = (_a = options === null || options === void 0 ? void 0 : options.historyMax) !== null && _a !== void 0 ? _a : 50;\r\n this.verbose = (_b = options === null || options === void 0 ? void 0 : options.verbose) !== null && _b !== void 0 ? _b : false;\r\n this.wrapLists = (_c = options === null || options === void 0 ? void 0 : options.wrapLists) !== null && _c !== void 0 ? _c : false;\r\n this.schema = schema;\r\n const data = (_d = options === null || options === void 0 ? void 0 : options.initialData) !== null && _d !== void 0 ? _d : schema.default();\r\n this.data = this.wrapLists ? DataModel.wrapLists(data) : data;\r\n this.listeners = [];\r\n this.errors = new Errors_1.Errors();\r\n this.history = [JSON.stringify(this.data)];\r\n this.historyIndex = 0;\r\n }\r\n /**\r\n * Adds a listener to notify when the model is invalidated\r\n * @param listener the listener to be notified\r\n */\r\n addListener(listener) {\r\n this.listeners.push(listener);\r\n }\r\n /**\r\n * Removes a listener from this model\r\n * @param listener the listener to be removed\r\n */\r\n removeListener(listener) {\r\n const index = this.listeners.indexOf(listener);\r\n if (index > -1) {\r\n this.listeners.splice(index, 1);\r\n }\r\n }\r\n /**\r\n * Updates the history and notifies all\r\n * listeners that the model is invalidated\r\n */\r\n invalidate() {\r\n const newHistory = JSON.stringify(this.data);\r\n if (this.history[this.historyIndex] !== newHistory) {\r\n this.historyIndex += 1;\r\n this.history.splice(this.historyIndex, this.historyMax, newHistory);\r\n if (this.history.length > this.historyMax) {\r\n this.history.splice(0, 1);\r\n this.historyIndex -= 1;\r\n }\r\n }\r\n this.silentInvalidate();\r\n }\r\n /**\r\n * Notifies all listeners that the model is invalidated\r\n */\r\n silentInvalidate() {\r\n this.listeners.forEach(l => {\r\n if (l.invalidated)\r\n l.invalidated(this);\r\n if (l.errors)\r\n l.errors(this.errors);\r\n });\r\n }\r\n /**\r\n * Resets the full data and notifies listeners\r\n * @param value new model data\r\n */\r\n reset(value, loose) {\r\n this.data = value;\r\n this.validate(loose);\r\n this.invalidate();\r\n }\r\n /**\r\n * Gets the data at a specified path\r\n * @param path path at which to find the data\r\n * @returns undefined, if the the path does not exist in the data\r\n */\r\n get(path) {\r\n let node = this.data;\r\n path.forEach(e => {\r\n if (node === undefined)\r\n return node;\r\n if (this.wrapLists && typeof e === 'number') {\r\n node = node[e].node;\r\n }\r\n else {\r\n node = node[e];\r\n }\r\n });\r\n return node;\r\n }\r\n /**\r\n * Updates the data on a path. Node will be removed when value is undefined\r\n * @param path path to update\r\n * @param value new data at the specified path\r\n */\r\n set(path, value, silent) {\r\n if (path.getArray().length === 0) {\r\n this.reset(value, true);\r\n return;\r\n }\r\n let node = this.data;\r\n path.pop().forEach(e => {\r\n if (node[e] === undefined || typeof node[e] === 'string' || typeof node[e] === 'number') {\r\n if (this.wrapLists && typeof e === 'number') {\r\n node[e] = { node: {}, id: utils_1.hexId() };\r\n }\r\n else {\r\n node[e] = {};\r\n }\r\n }\r\n if (this.wrapLists && typeof e === 'number') {\r\n node = node[e].node;\r\n }\r\n else {\r\n node = node[e];\r\n }\r\n });\r\n if (node === null)\r\n return;\r\n if (value === undefined || (typeof value === 'number' && isNaN(value))) {\r\n if (typeof path.last() === 'number') {\r\n node.splice(path.last(), 1);\r\n }\r\n else {\r\n delete node[path.last()];\r\n }\r\n }\r\n else if (this.wrapLists && typeof path.last() === 'number') {\r\n node[path.last()] = { node: value, id: utils_1.hexId() };\r\n }\r\n else {\r\n node[path.last()] = value;\r\n }\r\n if (silent)\r\n return;\r\n if (this.verbose) {\r\n console.log('Set', path.toString(), JSON.stringify(value));\r\n }\r\n this.validate(true);\r\n this.invalidate();\r\n }\r\n /**\r\n * Go one step back in history\r\n */\r\n undo() {\r\n if (this.historyIndex > 0) {\r\n this.historyIndex -= 1;\r\n this.data = JSON.parse(this.history[this.historyIndex]);\r\n this.validate(false);\r\n this.silentInvalidate();\r\n }\r\n }\r\n /**\r\n * Go one step forward in history.\r\n */\r\n redo() {\r\n if (this.historyIndex < this.history.length - 1) {\r\n this.historyIndex += 1;\r\n this.data = JSON.parse(this.history[this.historyIndex]);\r\n this.validate(false);\r\n this.silentInvalidate();\r\n }\r\n }\r\n /**\r\n * Uses the schema to check whether the data is valid\r\n */\r\n validate(loose) {\r\n var _a;\r\n const path = new Path_1.Path().withModel(this);\r\n this.errors.clear();\r\n this.data = (_a = this.schema.validate(path, this.data, this.errors, { loose, wrapLists: this.wrapLists })) !== null && _a !== void 0 ? _a : {};\r\n }\r\n error(path, error, ...params) {\r\n const tempErrors = new Errors_1.Errors();\r\n tempErrors.add(path, error, params);\r\n this.listeners.forEach(l => {\r\n if (l.errors)\r\n l.errors(tempErrors);\r\n });\r\n }\r\n static wrapLists(value) {\r\n if (Array.isArray(value)) {\r\n return value.map(v => ({\r\n node: this.wrapLists(v),\r\n id: utils_1.hexId(),\r\n }));\r\n }\r\n else if (typeof value === 'object' && value !== null) {\r\n const res = {};\r\n Object.entries(value).map(([k, v]) => {\r\n res[k] = this.wrapLists(v);\r\n });\r\n return res;\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n static unwrapLists(value) {\r\n if (Array.isArray(value)) {\r\n return value.map(v => this.unwrapLists(v.node));\r\n }\r\n else if (typeof value === 'object' && value !== null) {\r\n const res = {};\r\n Object.entries(value).map(([k, v]) => {\r\n res[k] = this.unwrapLists(v);\r\n });\r\n return res;\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n}\r\nexports.DataModel = DataModel;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Keep = exports.Opt = exports.Has = exports.Mod = exports.Base = void 0;\r\nexports.Base = ({\r\n type: () => 'base',\r\n category: () => undefined,\r\n default: () => undefined,\r\n enabled: () => true,\r\n keep: () => false,\r\n optional: () => false,\r\n navigate() { return this; },\r\n pathPush: (p) => p,\r\n suggest: () => [],\r\n validate: (_, v) => v,\r\n validationOption: () => undefined,\r\n hook(hook, path, ...args) { return hook.base({ node: this }, path, ...args); },\r\n canUpdate: () => false,\r\n update: () => []\r\n});\r\nexports.Mod = (node, mods) => ({\r\n ...node, ...(typeof mods === 'function' ? mods(node) : mods)\r\n});\r\nexports.Has = (key, node) => exports.Mod(node, {\r\n enabled: (p) => p.push(key).get() !== undefined\r\n});\r\nfunction Opt(node) {\r\n return {\r\n ...node,\r\n optional: () => true\r\n };\r\n}\r\nexports.Opt = Opt;\r\nfunction Keep(node) {\r\n return {\r\n ...node,\r\n keep: () => true\r\n };\r\n}\r\nexports.Keep = Keep;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BooleanNode = void 0;\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nconst Node_1 = require(\"./Node\");\r\n/**\r\n * Boolean node with two buttons for true/false\r\n */\r\nexports.BooleanNode = () => {\r\n return {\r\n ...Node_1.Base,\r\n type: () => 'boolean',\r\n default: () => false,\r\n suggest: () => ['false', 'true'],\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'boolean') {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (typeof value !== 'boolean' || value === undefined) {\r\n errors.add(path, 'error.expected_boolean');\r\n }\r\n return value;\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.boolean) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this }, path, ...args);\r\n }\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ListNode = void 0;\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nconst Node_1 = require(\"./Node\");\r\nexports.ListNode = (children, config) => {\r\n var _a, _b;\r\n const min = (_a = config === null || config === void 0 ? void 0 : config.minLength) !== null && _a !== void 0 ? _a : 0;\r\n const max = (_b = config === null || config === void 0 ? void 0 : config.maxLength) !== null && _b !== void 0 ? _b : Infinity;\r\n const between = (config === null || config === void 0 ? void 0 : config.minLength) && (config === null || config === void 0 ? void 0 : config.maxLength);\r\n return ({\r\n ...Node_1.Base,\r\n type: () => 'list',\r\n default: () => (config === null || config === void 0 ? void 0 : config.minLength) ? [...Array(min)].map(_ => children.default()) : [],\r\n navigate(path, index) {\r\n const nextIndex = index + 1;\r\n const pathElements = path.getArray();\r\n if (pathElements.length <= nextIndex) {\r\n return this;\r\n }\r\n return children.navigate(path, nextIndex);\r\n },\r\n pathPush(path, index) {\r\n return path.push(parseInt(index.toString())).contextPush('entry');\r\n },\r\n validate(path, value, errors, options) {\r\n if (options.loose && !Array.isArray(value)) {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (!Array.isArray(value)) {\r\n errors.add(path, 'error.expected_list');\r\n return value;\r\n }\r\n else if (between && (value.length < min || value.length > max)) {\r\n if (min === max) {\r\n errors.add(path, 'error.invalid_list_range.exact', value.length, min);\r\n }\r\n else {\r\n errors.add(path, 'error.invalid_list_range.between', value.length, min, max);\r\n }\r\n }\r\n else if (value.length < min) {\r\n errors.add(path, 'error.invalid_list_range.smaller', value.length, min);\r\n }\r\n else if (value.length > max) {\r\n errors.add(path, 'error.invalid_list_range.larger', value.length, max);\r\n }\r\n return value.map((obj, index) => {\r\n const newObj = children.validate(path.push(index), options.wrapLists ? obj.node : obj, errors, options);\r\n return options.wrapLists ? { node: newObj, id: obj.id } : newObj;\r\n });\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.list) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, children, config: config !== null && config !== void 0 ? config : {} }, path, ...args);\r\n }\r\n });\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SwitchNode = void 0;\r\nconst Node_1 = require(\"./Node\");\r\n/**\r\n * Node that allows multiple types\r\n */\r\nexports.SwitchNode = (cases) => {\r\n return {\r\n ...Node_1.Base,\r\n type(path) {\r\n return this.activeCase(path, true)\r\n .node.type(path);\r\n },\r\n category(path) {\r\n return this.activeCase(path, true)\r\n .node.category(path);\r\n },\r\n default: () => cases[0].node.default(),\r\n navigate(path, index) {\r\n var _a;\r\n const nextIndex = index + 1;\r\n return (_a = this.activeCase(path.slice(0, nextIndex))) === null || _a === void 0 ? void 0 : _a.node.navigate(path, index);\r\n },\r\n pathPush(path, key) {\r\n var _a, _b;\r\n return (_b = (_a = this.activeCase(path)) === null || _a === void 0 ? void 0 : _a.node.pathPush(path, key)) !== null && _b !== void 0 ? _b : path;\r\n },\r\n suggest(path, value) {\r\n var _a, _b;\r\n return (_b = (_a = this.activeCase(path)) === null || _a === void 0 ? void 0 : _a.node.suggest(path, value)) !== null && _b !== void 0 ? _b : cases\r\n .filter(c => c.match(path))\r\n .map(c => c.node.suggest(path, value))\r\n .reduce((p, c) => p.concat(c));\r\n },\r\n validate(path, value, errors, options) {\r\n let c = this.activeCase(path);\r\n if (c === undefined) {\r\n return value;\r\n }\r\n return c.node.validate(path, value, errors, options);\r\n },\r\n validationOption(path) {\r\n var _a;\r\n return (_a = this.activeCase(path)) === null || _a === void 0 ? void 0 : _a.node.validationOption(path);\r\n },\r\n activeCase(path, fallback) {\r\n const sorter = (a, b) => { var _a, _b; return ((_a = b.priority) !== null && _a !== void 0 ? _a : 0) - ((_b = a.priority) !== null && _b !== void 0 ? _b : 0); };\r\n const matchedCases = cases.filter(c => c.match(path)).sort(sorter);\r\n if (fallback && matchedCases.length === 0) {\r\n return cases.sort(sorter)[0];\r\n }\r\n return (matchedCases.length > 0 ? matchedCases[0] : undefined);\r\n },\r\n hook(hook, path, ...args) {\r\n return this.activeCase(path, true)\r\n .node.hook(hook, path, ...args);\r\n },\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ObjectOrPreset = exports.StringOrList = exports.ObjectOrList = exports.ChoiceNode = void 0;\r\nconst ListNode_1 = require(\"./ListNode\");\r\nconst SwitchNode_1 = require(\"./SwitchNode\");\r\n/**\r\n * Node that allows multiple types\r\n */\r\nexports.ChoiceNode = (choices, config) => {\r\n const isValid = (choice, value) => {\r\n if (choice.match) {\r\n return choice.match(value);\r\n }\r\n switch (choice.type) {\r\n case 'list': return Array.isArray(value);\r\n case 'object': return typeof value === 'object' && !Array.isArray(value);\r\n default: return typeof value === choice.type;\r\n }\r\n };\r\n const switchNode = SwitchNode_1.SwitchNode(choices.map(c => ({\r\n type: c.type,\r\n priority: c.priority,\r\n match: (path) => isValid(c, path.get()),\r\n node: c.node\r\n })));\r\n return {\r\n ...switchNode,\r\n validate(path, value, errors, options) {\r\n let choice = switchNode.activeCase(path, true);\r\n if (choice.node.optional()) {\r\n return value;\r\n }\r\n return choice.node.validate(path, value, errors, options);\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.choice) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, choices, config: config !== null && config !== void 0 ? config : {}, switchNode }, path, ...args);\r\n }\r\n };\r\n};\r\nconst XOrList = (x) => ((node, config) => {\r\n return exports.ChoiceNode([\r\n {\r\n type: x,\r\n node,\r\n change: v => { var _a; return (_a = v[0]) !== null && _a !== void 0 ? _a : node.default(); }\r\n },\r\n {\r\n type: 'list',\r\n node: ListNode_1.ListNode(node),\r\n change: v => v ? [v] : []\r\n }\r\n ], config);\r\n});\r\nexports.ObjectOrList = XOrList('object');\r\nexports.StringOrList = XOrList('string');\r\nexports.ObjectOrPreset = (presetNode, objectNode, presets) => {\r\n return exports.ChoiceNode([\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: presetNode,\r\n change: v => Object.keys(presets)[0]\r\n },\r\n {\r\n type: 'object',\r\n node: objectNode,\r\n change: v => { var _a; return (_a = presets[v]) !== null && _a !== void 0 ? _a : presets[Object.keys(presets)[0]]; }\r\n }\r\n ]);\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.MapNode = void 0;\r\nconst Node_1 = require(\"./Node\");\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\n/**\r\n * Map nodes similar to list nodes, but a string key is required to add children\r\n */\r\nexports.MapNode = (keys, children, config) => {\r\n return {\r\n ...Node_1.Base,\r\n type: () => 'map',\r\n default: () => ({}),\r\n navigate(path, index) {\r\n const nextIndex = index + 1;\r\n const pathElements = path.getArray();\r\n if (pathElements.length <= nextIndex) {\r\n return this;\r\n }\r\n return children.navigate(path, nextIndex);\r\n },\r\n pathPush(path, key) {\r\n return path.modelPush(key);\r\n },\r\n suggest: (path) => keys.suggest(path, ''),\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'object') {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (value === null || typeof value !== 'object') {\r\n errors.add(path, 'error.expected_object');\r\n return value;\r\n }\r\n let res = {};\r\n Object.keys(value).forEach(k => {\r\n keys.validate(path, k, errors, options);\r\n res[k] = children.validate(path.push(k), value[k], errors, options);\r\n });\r\n return res;\r\n },\r\n validationOption(path) {\r\n var _a;\r\n return (_a = config === null || config === void 0 ? void 0 : config.validation) !== null && _a !== void 0 ? _a : keys.validationOption(path.push(''));\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.map) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, keys, children, config: config !== null && config !== void 0 ? config : {} }, path, ...args);\r\n }\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NumberNode = void 0;\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nconst Node_1 = require(\"./Node\");\r\nexports.NumberNode = (config) => {\r\n var _a, _b, _c;\r\n const integer = (config === null || config === void 0 ? void 0 : config.color) ? true : (_a = config === null || config === void 0 ? void 0 : config.integer) !== null && _a !== void 0 ? _a : false;\r\n const min = (config === null || config === void 0 ? void 0 : config.color) ? 0 : (_b = config === null || config === void 0 ? void 0 : config.min) !== null && _b !== void 0 ? _b : -Infinity;\r\n const max = (config === null || config === void 0 ? void 0 : config.color) ? 16777215 : (_c = config === null || config === void 0 ? void 0 : config.max) !== null && _c !== void 0 ? _c : Infinity;\r\n const between = (config === null || config === void 0 ? void 0 : config.min) !== undefined && (config === null || config === void 0 ? void 0 : config.max) !== undefined;\r\n return {\r\n ...Node_1.Base,\r\n type: () => 'number',\r\n default: () => min > 0 ? min : 0,\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'number') {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (typeof value !== 'number') {\r\n errors.add(path, 'error.expected_number');\r\n }\r\n else if (integer && !Number.isInteger(value)) {\r\n errors.add(path, 'error.expected_integer');\r\n }\r\n else if (between && (value < min || value > max)) {\r\n errors.add(path, 'error.invalid_number_range.between', value, min, max);\r\n }\r\n else if (value < min) {\r\n errors.add(path, 'error.invalid_number_range.smaller', value, min);\r\n }\r\n else if (value > max) {\r\n errors.add(path, 'error.invalid_number_range.larger', value, max);\r\n }\r\n return value;\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.number) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, integer, min, max, between, config: config !== null && config !== void 0 ? config : {} }, path, ...args);\r\n }\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ObjectNode = exports.Case = exports.Switch = void 0;\r\nconst Node_1 = require(\"./Node\");\r\nconst Path_1 = require(\"../model/Path\");\r\nconst Errors_1 = require(\"../model/Errors\");\r\nconst utils_1 = require(\"../utils\");\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nexports.Switch = Symbol('switch');\r\nexports.Case = Symbol('case');\r\nexports.ObjectNode = (fields, config) => {\r\n const { [exports.Switch]: filter, [exports.Case]: cases, ...defaultFields } = fields;\r\n const getActiveFields = (path) => {\r\n if (filter === undefined)\r\n return defaultFields;\r\n const switchValue = Path_1.relativePath(path, filter).get();\r\n const activeCase = cases[switchValue];\r\n return { ...defaultFields, ...activeCase };\r\n };\r\n const getChildModelPath = (path, childKey) => {\r\n var _a;\r\n const switchValue = filter ? Path_1.relativePath(path, filter).get() : undefined;\r\n const caseFields = filter ? ((_a = cases[switchValue]) !== null && _a !== void 0 ? _a : {}) : {};\r\n const caseKeys = Object.keys(caseFields);\r\n const pathWithContext = (config === null || config === void 0 ? void 0 : config.context) ?\r\n new Path_1.ModelPath(path.getModel(), new Path_1.Path(path.getArray(), [config.context])) : path;\r\n const pathWithFilter = !(config === null || config === void 0 ? void 0 : config.disableSwitchContext) && switchValue && caseKeys.includes(childKey) ?\r\n pathWithContext.contextPush(switchValue) : pathWithContext;\r\n return pathWithFilter.push(childKey);\r\n };\r\n return ({\r\n ...Node_1.Base,\r\n type: () => 'object',\r\n category: () => config === null || config === void 0 ? void 0 : config.category,\r\n default: () => ({}),\r\n keep() {\r\n return this.optional();\r\n },\r\n navigate(path, index) {\r\n const nextIndex = index + 1;\r\n const pathElements = path.getArray();\r\n if (pathElements.length <= nextIndex) {\r\n return this;\r\n }\r\n const activeFields = getActiveFields(path.slice(0, nextIndex));\r\n const node = activeFields[pathElements[nextIndex]];\r\n return node === null || node === void 0 ? void 0 : node.navigate(path, nextIndex);\r\n },\r\n pathPush(path, key) {\r\n return getChildModelPath(path, key.toString());\r\n },\r\n suggest(path, value) {\r\n const activeFields = getActiveFields(path);\r\n const existingKeys = Object.keys(typeof value === 'object' ? value : {});\r\n return Object.keys(activeFields)\r\n .filter(k => activeFields[k].enabled(path))\r\n .filter(k => !existingKeys.includes(k))\r\n .map(utils_1.quoteString);\r\n },\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'object') {\r\n value = options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default();\r\n }\r\n if (typeof value !== 'object' || value === null) {\r\n errors.add(path, 'error.expected_object');\r\n return value;\r\n }\r\n let activeFields = defaultFields;\r\n if (filter) {\r\n const filterPath = Path_1.relativePath(path, filter);\r\n let switchValue = filterPath.get();\r\n if (path.equals(filterPath.pop())) {\r\n const filterField = filterPath.last();\r\n switchValue = defaultFields[filterField].validate(path.push(filterField), value[filterField], new Errors_1.Errors(), options);\r\n }\r\n activeFields = { ...activeFields, ...cases[switchValue] };\r\n }\r\n const activeKeys = Object.keys(activeFields);\r\n const forcedKeys = activeKeys.filter(k => !activeFields[k].optional());\r\n const keys = new Set([...forcedKeys, ...Object.keys(value)]);\r\n let res = {};\r\n keys.forEach(k => {\r\n if (activeKeys.includes(k)) {\r\n if (!activeFields[k].enabled(path))\r\n return;\r\n const newValue = activeFields[k].validate(path.push(k), value[k], errors, options);\r\n if (!activeFields[k].keep() && activeFields[k].optional()\r\n && (newValue === undefined\r\n || (Array.isArray(newValue) && newValue.length === 0)\r\n || (newValue.constructor === Object && Object.keys(newValue).length === 0))) {\r\n delete res[k];\r\n }\r\n else {\r\n res[k] = newValue;\r\n path.getModel().set(path.push(k), newValue, true);\r\n }\r\n }\r\n else {\r\n res[k] = value[k];\r\n }\r\n });\r\n return res;\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.object) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, fields: defaultFields, config: config !== null && config !== void 0 ? config : {}, filter, cases, getActiveFields, getChildModelPath }, path, ...args);\r\n }\r\n });\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Reference = void 0;\r\nexports.Reference = (schemas, schema) => ({\r\n type(path) {\r\n return schemas.get(schema).type.bind(this)(path);\r\n },\r\n category(path) {\r\n return schemas.get(schema).category.bind(this)(path);\r\n },\r\n default() {\r\n return schemas.get(schema).default.bind(this)();\r\n },\r\n transform(path, value) {\r\n return schemas.get(schema).transform(path, value);\r\n },\r\n enabled(path) {\r\n return schemas.get(schema).enabled.bind(this)(path);\r\n },\r\n keep() {\r\n return schemas.get(schema).keep.bind(this)();\r\n },\r\n optional() {\r\n return schemas.get(schema).optional.bind(this)();\r\n },\r\n navigate(path, index) {\r\n return schemas.get(schema).navigate.bind(this)(path, index);\r\n },\r\n pathPush(path, key) {\r\n return schemas.get(schema).pathPush.bind(this)(path, key);\r\n },\r\n suggest(path, value) {\r\n return schemas.get(schema).suggest.bind(this)(path, value);\r\n },\r\n validate(path, value, errors, options) {\r\n return schemas.get(schema).validate.bind(this)(path, value, errors, options);\r\n },\r\n validationOption(path) {\r\n return schemas.get(schema).validationOption.bind(this)(path);\r\n },\r\n hook(hook, path, ...args) {\r\n return schemas.get(schema).hook.bind(this)(hook, path, ...args);\r\n },\r\n activeCase(path, fallback) {\r\n return schemas.get(schema).activeCase.bind(this)(path, fallback);\r\n },\r\n canUpdate(path, value) {\r\n return schemas.get(schema).canUpdate.bind(this)(path, value);\r\n },\r\n update(path, value) {\r\n return schemas.get(schema).update.bind(this)(path, value);\r\n }\r\n});\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StringNode = void 0;\r\nconst Node_1 = require(\"./Node\");\r\nconst utils_1 = require(\"../utils\");\r\nconst DataModel_1 = require(\"../model/DataModel\");\r\nconst isEnum = (value) => {\r\n var _a;\r\n return !!((_a = value) === null || _a === void 0 ? void 0 : _a.enum);\r\n};\r\nconst isValidator = (value) => {\r\n var _a;\r\n return !!((_a = value) === null || _a === void 0 ? void 0 : _a.validator);\r\n};\r\n/**\r\n * Simple string node with one text field\r\n */\r\nexports.StringNode = (collections, config) => {\r\n const getValues = isEnum(config)\r\n ? ((typeof config.enum === 'string')\r\n ? () => { var _a; return (_a = collections === null || collections === void 0 ? void 0 : collections.get(config.enum)) !== null && _a !== void 0 ? _a : []; }\r\n : () => config.enum)\r\n : (((config === null || config === void 0 ? void 0 : config.validator) === 'resource')\r\n ? ((typeof config.params.pool === 'string')\r\n ? (config.params.pool.startsWith('$')\r\n ? () => { var _a; return (_a = collections === null || collections === void 0 ? void 0 : collections.get(config.params.pool.slice(1))) !== null && _a !== void 0 ? _a : []; }\r\n : () => { var _a; return (_a = collections === null || collections === void 0 ? void 0 : collections.get(config.params.pool)) !== null && _a !== void 0 ? _a : []; })\r\n : () => config.params.pool)\r\n : () => []);\r\n return {\r\n ...Node_1.Base,\r\n type: () => 'string',\r\n default: () => '',\r\n validate(path, value, errors, options) {\r\n if (options.loose && typeof value !== 'string') {\r\n value = (options.wrapLists ? DataModel_1.DataModel.wrapLists(this.default()) : this.default()) || undefined;\r\n }\r\n if (typeof value !== 'string') {\r\n errors.add(path, 'error.expected_string');\r\n return value;\r\n }\r\n if (isValidator(config)) {\r\n if (config.validator === 'resource' && value.length > 0 && !value.includes(':')) {\r\n value = value[0] === '#'\r\n ? '#minecraft:' + value.slice(1)\r\n : 'minecraft:' + value;\r\n }\r\n if (config.validator === 'resource' && ((typeof config.params.pool === 'string' && config.params.pool.startsWith('$')) ||\r\n (config.params.allowTag && value[0] === '#') ||\r\n config.params.isDefinition ||\r\n config.params.allowUnknown)) {\r\n return value;\r\n }\r\n }\r\n if ((isEnum(config) && config.additional)) {\r\n return value;\r\n }\r\n const values = getValues();\r\n if (values.length > 0 && !values.includes(value)) {\r\n errors.add(path, 'error.invalid_enum_option', value);\r\n }\r\n return value;\r\n },\r\n suggest: () => getValues().map(utils_1.quoteString),\r\n validationOption() {\r\n return isValidator(config) ? config : undefined;\r\n },\r\n hook(hook, path, ...args) {\r\n var _a;\r\n return ((_a = hook.string) !== null && _a !== void 0 ? _a : hook.base).call(hook, { node: this, getValues, config }, path, ...args);\r\n }\r\n };\r\n};\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.CollectionRegistry = exports.SchemaRegistry = void 0;\r\n/**\r\n * Registry for schemas\r\n */\r\nclass SchemaRegistry {\r\n constructor() {\r\n this.registry = {};\r\n }\r\n register(id, node) {\r\n this.registry[id] = node;\r\n }\r\n get(id) {\r\n const node = this.registry[id];\r\n if (node === undefined) {\r\n console.error(`Tried to access schema \"${id}\", but that doesn't exist.`);\r\n }\r\n return node;\r\n }\r\n}\r\nexports.SchemaRegistry = SchemaRegistry;\r\n/**\r\n * Registry for collections\r\n */\r\nclass CollectionRegistry {\r\n constructor() {\r\n this.registry = {};\r\n }\r\n register(id, list) {\r\n this.registry[id] = list;\r\n }\r\n get(id) {\r\n const list = this.registry[id];\r\n if (list === undefined) {\r\n console.warn(`Tried to access collection \"${id}\", but that doesn't exist.`);\r\n }\r\n return list !== null && list !== void 0 ? list : [];\r\n }\r\n}\r\nexports.CollectionRegistry = CollectionRegistry;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__exportStar(require(\"./model/DataModel\"), exports);\r\n__exportStar(require(\"./model/Path\"), exports);\r\n__exportStar(require(\"./model/Errors\"), exports);\r\n__exportStar(require(\"./nodes/Node\"), exports);\r\n__exportStar(require(\"./nodes/BooleanNode\"), exports);\r\n__exportStar(require(\"./nodes/ChoiceNode\"), exports);\r\n__exportStar(require(\"./nodes/ListNode\"), exports);\r\n__exportStar(require(\"./nodes/MapNode\"), exports);\r\n__exportStar(require(\"./nodes/NumberNode\"), exports);\r\n__exportStar(require(\"./nodes/ObjectNode\"), exports);\r\n__exportStar(require(\"./nodes/Reference\"), exports);\r\n__exportStar(require(\"./nodes/StringNode\"), exports);\r\n__exportStar(require(\"./nodes/SwitchNode\"), exports);\r\n__exportStar(require(\"./Hook\"), exports);\r\n__exportStar(require(\"./Registries\"), exports);\r\n__exportStar(require(\"./ValidationOption\"), exports);\r\n","\n/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED$1 = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN$1 = 2;\n\n/*============================================================================*/\n\n\nfunction zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH$1 = 3;\nconst MAX_MATCH$1 = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES$1 = 30;\n/* number of distance codes */\n\nconst BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\n\nconst MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES$1);\nzero$1(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES$1);\nzero$1(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) =>\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS$1; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES$1; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES$1; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES$1; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES$1; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nconst copy_block = (s, buf, len, header) =>\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n s.pending_buf.set(s.window.subarray(buf, buf + len), s.pending);\n s.pending += len;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) =>\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let lx = 0; /* running index in l_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE$1;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) =>\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let black_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS$1; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init$1 = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block$1 = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align$1 = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nconst _tr_flush_block$1 = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN$1) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block$1(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally$1 = (s, dist, lc) =>\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //let out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n};\n\nvar _tr_init_1 = _tr_init$1;\nvar _tr_stored_block_1 = _tr_stored_block$1;\nvar _tr_flush_block_1 = _tr_flush_block$1;\nvar _tr_tally_1 = _tr_tally$1;\nvar _tr_align_1 = _tr_align$1;\n\nvar trees = {\n\t_tr_init: _tr_init_1,\n\t_tr_stored_block: _tr_stored_block_1,\n\t_tr_flush_block: _tr_flush_block_1,\n\t_tr_tally: _tr_tally_1,\n\t_tr_align: _tr_align_1\n};\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nvar adler32_1 = adler32;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nvar crc32_1 = crc32;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants$2 = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;\n\n\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1,\n Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1,\n Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n Z_UNKNOWN,\n Z_DEFLATED: Z_DEFLATED$2\n} = constants$2;\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES = 30;\n/* number of distance codes */\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42;\nconst EXTRA_STATE = 69;\nconst NAME_STATE = 73;\nconst COMMENT_STATE = 91;\nconst HCRC_STATE = 103;\nconst BUSY_STATE = 113;\nconst FINISH_STATE = 666;\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = messages[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32_1(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32_1(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n let max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n const max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n};\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED$2; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nconst deflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH$2;\n _tr_init(s);\n return Z_OK$3;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK$3) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$2; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR$2; }\n strm.state.gzhead = head;\n return Z_OK$3;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR$2;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION$1) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);\n};\n\n\nconst deflate$2 = (strm, flush) => {\n\n let beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK$1 || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH$3)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);\n }\n\n s.strm = strm; /* just in case */\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK$3;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH$3) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) {\n let bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK$3;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH$1) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK$3;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH$3) { return Z_OK$3; }\n if (s.wrap <= 0) { return Z_STREAM_END$3; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR$2;\n }\n\n const status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR$2;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK$3;\n};\n\n\nvar deflateInit_1 = deflateInit;\nvar deflateInit2_1 = deflateInit2;\nvar deflateReset_1 = deflateReset;\nvar deflateResetKeep_1 = deflateResetKeep;\nvar deflateSetHeader_1 = deflateSetHeader;\nvar deflate_2$1 = deflate$2;\nvar deflateEnd_1 = deflateEnd;\nvar deflateSetDictionary_1 = deflateSetDictionary;\nvar deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n\nvar deflate_1$2 = {\n\tdeflateInit: deflateInit_1,\n\tdeflateInit2: deflateInit2_1,\n\tdeflateReset: deflateReset_1,\n\tdeflateResetKeep: deflateResetKeep_1,\n\tdeflateSetHeader: deflateSetHeader_1,\n\tdeflate: deflate_2$1,\n\tdeflateEnd: deflateEnd_1,\n\tdeflateSetDictionary: deflateSetDictionary_1,\n\tdeflateInfo: deflateInfo\n};\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nvar assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nvar flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n\nvar common = {\n\tassign: assign,\n\tflattenChunks: flattenChunks\n};\n\n// String encode/decode helpers\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nvar string2buf = (str) => {\n if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n return new TextEncoder().encode(str);\n }\n\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nvar buf2string = (buf, max) => {\n const len = max || buf.length;\n\n if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n return new TextDecoder().decode(buf.subarray(0, max));\n }\n\n let i, out;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\nvar strings = {\n\tstring2buf: string2buf,\n\tbuf2string: buf2string,\n\tutf8border: utf8border\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nvar zstream = ZStream;\n\nconst toString$1 = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2,\n Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2,\n Z_DEFAULT_COMPRESSION,\n Z_DEFAULT_STRATEGY,\n Z_DEFLATED: Z_DEFLATED$1\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate$1(options) {\n this.options = common.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED$1,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = deflate_1$2.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n if (opt.header) {\n deflate_1$2.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflate_1$2.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = deflate_1$2.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END$2) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = deflate_1$2.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK$2;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK$2) {\n this.result = common.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n const deflator = new Deflate$1(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || messages[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip$1(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\n\nvar Deflate_1$1 = Deflate$1;\nvar deflate_2 = deflate$1;\nvar deflateRaw_1$1 = deflateRaw$1;\nvar gzip_1$1 = gzip$1;\nvar constants$1 = constants$2;\n\nvar deflate_1$1 = {\n\tDeflate: Deflate_1$1,\n\tdeflate: deflate_2,\n\tdeflateRaw: deflateRaw_1$1,\n\tgzip: gzip_1$1,\n\tconstants: constants$1\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD$1 = 30; /* got a data error -- remain here until reset */\nconst TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE$1;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n let base_index = 0;\n// let shoextra; /* extra bits table to use */\n let end; /* use base and extra for symbol > end */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n let extra_index = 0;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES$1 || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES$1) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS$1) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nvar inftrees = inflate_table;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,\n Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR,\n Z_DEFLATED\n} = constants$2;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 1; /* i: waiting for magic header */\nconst FLAGS = 2; /* i: waiting for method and flags (gzip) */\nconst TIME = 3; /* i: waiting for modification time (gzip) */\nconst OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 5; /* i: waiting for extra length (gzip) */\nconst EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nconst NAME = 7; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 8; /* i: waiting for end of comment (gzip) */\nconst HCRC = 9; /* i: waiting for header crc (gzip) */\nconst DICTID = 10; /* i: waiting for dictionary check value */\nconst DICT = 11; /* waiting for inflateSetDictionary() call */\nconst TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 14; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 17; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 18; /* i: waiting for code length code lengths */\nconst CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 20; /* i: same as LEN below, but only first time in */\nconst LEN = 21; /* i: waiting for length/lit/eob code */\nconst LENEXT = 22; /* i: waiting for length extra bits */\nconst DIST = 23; /* i: waiting for distance code */\nconst DISTEXT = 24; /* i: waiting for distance extra bits */\nconst MATCH = 25; /* o: waiting for output space to copy string */\nconst LIT = 26; /* o: waiting for output space to write literal */\nconst CHECK = 27; /* i: waiting for 32-bit check value */\nconst LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 29; /* finished check, done -- remain here until reset */\nconst BAD = 30; /* got a data error -- remain here until reset */\nconst MEM = 31; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate$2 = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32_1(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inffast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR$1;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32_1(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR$1;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n};\n\n\nvar inflateReset_1 = inflateReset;\nvar inflateReset2_1 = inflateReset2;\nvar inflateResetKeep_1 = inflateResetKeep;\nvar inflateInit_1 = inflateInit;\nvar inflateInit2_1 = inflateInit2;\nvar inflate_2$1 = inflate$2;\nvar inflateEnd_1 = inflateEnd;\nvar inflateGetHeader_1 = inflateGetHeader;\nvar inflateSetDictionary_1 = inflateSetDictionary;\nvar inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\n*/\n\nvar inflate_1$2 = {\n\tinflateReset: inflateReset_1,\n\tinflateReset2: inflateReset2_1,\n\tinflateResetKeep: inflateResetKeep_1,\n\tinflateInit: inflateInit_1,\n\tinflateInit2: inflateInit2_1,\n\tinflate: inflate_2$1,\n\tinflateEnd: inflateEnd_1,\n\tinflateGetHeader: inflateGetHeader_1,\n\tinflateSetDictionary: inflateSetDictionary_1,\n\tinflateInfo: inflateInfo\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nvar gzheader = GZheader;\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate$1(options) {\n this.options = common.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = inflate_1$2.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n\n this.header = new gzheader();\n\n inflate_1$2.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate_1$2.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = inflate_1$2.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = inflate_1$2.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n inflate_1$2.inflateReset(strm);\n status = inflate_1$2.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = inflate_1$2.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = common.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err) {\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n const inflator = new Inflate$1(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nvar Inflate_1$1 = Inflate$1;\nvar inflate_2 = inflate$1;\nvar inflateRaw_1$1 = inflateRaw$1;\nvar ungzip$1 = inflate$1;\nvar constants = constants$2;\n\nvar inflate_1$1 = {\n\tInflate: Inflate_1$1,\n\tinflate: inflate_2,\n\tinflateRaw: inflateRaw_1$1,\n\tungzip: ungzip$1,\n\tconstants: constants\n};\n\nconst { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;\n\nconst { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;\n\n\n\nvar Deflate_1 = Deflate;\nvar deflate_1 = deflate;\nvar deflateRaw_1 = deflateRaw;\nvar gzip_1 = gzip;\nvar Inflate_1 = Inflate;\nvar inflate_1 = inflate;\nvar inflateRaw_1 = inflateRaw;\nvar ungzip_1 = ungzip;\nvar constants_1 = constants$2;\n\nvar pako = {\n\tDeflate: Deflate_1,\n\tdeflate: deflate_1,\n\tdeflateRaw: deflateRaw_1,\n\tgzip: gzip_1,\n\tInflate: Inflate_1,\n\tinflate: inflate_1,\n\tinflateRaw: inflateRaw_1,\n\tungzip: ungzip_1,\n\tconstants: constants_1\n};\n\nexport { Deflate_1 as Deflate, Inflate_1 as Inflate, constants_1 as constants, pako as default, deflate_1 as deflate, deflateRaw_1 as deflateRaw, gzip_1 as gzip, inflate_1 as inflate, inflateRaw_1 as inflateRaw, ungzip_1 as ungzip };\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","import t from\"pako\";import e from\"md5\";import{vec3 as i,mat4 as s,glMatrix as n}from\"gl-matrix\";var r;!function(t){t.UP=\"up\",t.DOWN=\"down\",t.NORTH=\"north\",t.EAST=\"east\",t.SOUTH=\"south\",t.WEST=\"west\"}(r||(r={}));const o={[r.UP]:[0,1,0],[r.DOWN]:[0,-1,0],[r.NORTH]:[0,0,-1],[r.EAST]:[1,0,0],[r.SOUTH]:[0,0,1],[r.WEST]:[-1,0,0]};var a;!function(t){t.ALL=[t.UP,t.DOWN,t.NORTH,t.EAST,t.SOUTH,t.WEST],t.normal=function(t){return o[t]}}(r||(r={})),function(t){t.create=function(t,e,i){return[t,e,i]},t.offset=function(t,e,i,s){return[t[0]+e,t[1]+i,t[2]+s]},t.towards=function(e,i){return t.offset(e,...r.normal(i))}}(a||(a={}));const l={end:0,byte:1,short:2,int:3,long:4,float:5,double:6,byteArray:7,string:8,list:9,compound:10,intArray:11,longArray:12},h=[\"end\",\"byte\",\"short\",\"int\",\"long\",\"float\",\"double\",\"byteArray\",\"string\",\"list\",\"compound\",\"intArray\",\"longArray\"];class u{constructor(t,e=!1){this.byte=this.readNum.bind(this,\"getInt8\",1),this.short=this.readNum.bind(this,\"getInt16\",2),this.int=this.readNum.bind(this,\"getInt32\",4),this.float=this.readNum.bind(this,\"getFloat32\",4),this.double=this.readNum.bind(this,\"getFloat64\",8),this.offset=0,this.littleEndian=e,this.arrayView=t,this.dataView=new DataView(t.buffer,t.byteOffset)}end(){return null}readNum(t,e){const i=this.dataView[t](this.offset,this.littleEndian);return this.offset+=e,i}long(){return[this.int(),this.int()]}byteArray(){const t=this.int(),e=[];for(let i=0;i=e)return;let i=this.buffer.byteLength;for(;ithis.buffer.byteLength&&n.fill(0,this.buffer.byteLength,this.offset),this.buffer=s,this.dataView=new DataView(s),this.arrayView=n}getData(){return this.accommodate(0),this.arrayView.slice(0,this.offset)}end(t){}writeNum(t,e,i){this.accommodate(e),this.dataView[t](this.offset,i,this.littleEndian),this.offset+=e}long(t){this.int(t[0]),this.int(t[1])}byteArray(t){this.int(t.length),this.accommodate(t.length),this.arrayView.set(t,this.offset),this.offset+=t.length}intArray(t){this.int(t.length);for(let e=0;e>6),s.push(128|63&i)):i<65536?(s.push(224|i>>12),s.push(128|i>>6&63),s.push(128|63&i)):(s.push(240|i>>18&7),s.push(128|i>>12&63),s.push(128|i>>6&63),s.push(128|63&i));return s}(t);this.short(e.length),this.accommodate(e.length),this.arrayView.set(e,this.offset),this.offset+=e.length}list(t){this.byte(l[t.type]),this.int(t.value.length),t.value;for(let e=0;e>16),s.setInt16(t+1,65535&n),s.setInt8(t+3,r),s.setInt32(t+4096,e.timestamp);const o=4096*n;s.setInt32(o,e.data.length+1),s.setInt8(o+4,e.compression),i.set(e.data,o+5),n+=r}return i}function y(t,e,i,s){const n=x(t,e,i);switch(n.compression){case 1:n.data=b(s);break;case 2:n.data=b(s,!1,!0);break;case 3:n.data=v(s);break;default:throw new Error(`Invalid compression mode ${n.compression}`)}return n}function x(t,e,i){const s=t.find((t=>t.x===e&&t.z===i));if(void 0===s)throw new Error(`Cannot find chunk [${e}, ${i}]`);return s}function S(t,e,i){if(!t[e])throw new Error(`Missing ${e} tag`);if(t[e].type!==i)throw new Error(`Expected ${e} to be of type ${i}, but found ${t[e].type}`);return t[e].value}function B(t,e,i,s){const n=S(t,e,\"list\");if(n.type!==i)throw new Error(`Expected ${e} to be a list of ${i}s, but found ${n.type}s`);if(s&&n.value.length!==s)throw new Error(`Expected ${e} to be a list of length ${s}, but found length ${n.value.length}`);return n.value}function I(t,e){try{return t()}catch(t){return e}}var P,E,A,C,R;!function(t){function e(t){return\"object\"==typeof t&&null!==t?t:void 0}t.readNumber=function(t){return\"number\"==typeof t?t:void 0},t.readInt=function(t){return\"number\"==typeof t?Math.floor(t):void 0},t.readString=function(t){return\"string\"==typeof t?t:void 0},t.readBoolean=function(t){return\"boolean\"==typeof t?t:void 0},t.readObject=e,t.readArray=function(t,e){if(Array.isArray(t))return t.map((t=>e(t)))},t.readMap=function(t,i){var s;const n=null!==(s=e(t))&&void 0!==s?s:{};return Object.fromEntries(Object.entries(n).map((([t,e])=>[t,i(e)])))},t.compose=function(t,e,i){const s=e(t);return s?i(s):void 0}}(P||(P={}));class N{constructor(t,e={}){this.name=t,this.properties=e}getName(){return this.name}getProperties(){return this.properties}getProperty(t){return this.properties[t]}isFluid(){return\"minecraft:water\"===this.name||\"minecraft:lava\"===this.name}equals(t){return this.name===t.name&&Object.keys(this.properties).every((e=>t.properties[e]===this.properties[e]))}toString(){return 0===Object.keys(this.properties).length?this.name:`${this.name}[${Object.entries(this.properties).map((([t,e])=>t+\"=\"+e)).join(\",\")}]`}static fromNbt(t){const e=S(t.value,\"Name\",\"string\"),i=I((()=>S(t.value,\"Properties\",\"compound\")),{}),s=Object.keys(i).reduce(((t,e)=>Object.assign(Object.assign({},t),{[e]:S(i,e,\"string\")})),{});return new N(e,s)}static fromJson(t){var e,i;const s=null!==(e=P.readObject(t))&&void 0!==e?e:{},n=null!==(i=P.readString(s.Name))&&void 0!==i?i:\"minecraft:stone\",r=P.readMap(s.Properties,(t=>{var e;return null!==(e=P.readString(t))&&void 0!==e?e:\"\"}));return new N(n,r)}}N.AIR=new N(\"minecraft:air\");class k{constructor(t){this.minY=t,this.storage=Array(k.SIZE),this.palette=[N.AIR]}get minBlockY(){return this.minY<<4}index(t,e,i){return(t<<8)+(e<<4)+i}getBlockState(t,e,i){var s;const n=this.storage[this.index(t,e,i)];return null!==(s=this.palette[n])&&void 0!==s?s:N.AIR}setBlockState(t,e,i,s){let n=this.palette.findIndex((t=>t.equals(s)));-1===n&&(n=this.palette.length,this.palette.push(s)),this.storage[this.index(t,e,i)]=n}}k.WIDTH=16,k.SIZE=k.WIDTH*k.WIDTH*k.WIDTH;class T{constructor(t,e,i){this.minY=t,this.height=e,this.pos=i,this.sections=Array(this.sectionsCount).fill(null)}get maxY(){return this.minY+this.height}get minSection(){return this.minY>>4}get maxSection(){return 1+(this.maxY-1>>4)}get sectionsCount(){return this.maxSection-this.minSection}getSectionIndex(t){return(t>>4)-this.minSection}getBlockState(t){var e;const[i,s,n]=t,r=this.sections[this.getSectionIndex(s)];return null!==(e=null==r?void 0:r.getBlockState(15&i,15&s,15&n))&&void 0!==e?e:N.AIR}setBlockState(t,e){const[i,s,n]=t,r=this.getSectionIndex(s);let o=this.sections[r];if(null===o){if(e.equals(N.AIR))return;o=this.getOrCreateSection(r)}o.setBlockState(15&i,15&s,15&n,e)}getOrCreateSection(t){return null==this.sections[t]&&(this.sections[t]=new k(this.minSection+t)),this.sections[t]}}!function(t){t.create=function(t,e){return[t,e]},t.fromBlockPos=function(t){return[t[0]>>4,t[2]>>4]},t.fromLong=function(t){return[4294967295&Number(t),Number(t>>BigInt(32))]},t.minBlockX=function(t){return t[0]<<4},t.minBlockZ=function(t){return t[1]<<4},t.maxBlockX=function(t){return t[0]<<19},t.maxBlockZ=function(t){return t[1]<<19}}(E||(E={}));class _{constructor(t,e=[],i=[]){this.size=t,this.palette=e,this.blocks=i,this.blocksMap=[],i.forEach((e=>{if(!this.isInside(e.pos))throw new Error(`Found block at ${e.pos} which is outside the structure bounds ${this.size}`);this.blocksMap[e.pos[0]*t[1]*t[2]+e.pos[1]*t[2]+e.pos[2]]=e}))}getSize(){return this.size}addBlock(t,e,i,s){if(!this.isInside(t))throw new Error(`Cannot add block at ${t} outside the structure bounds ${this.size}`);const n=new N(e,i);let r=this.palette.findIndex((t=>t.equals(n)));return-1===r&&(r=this.palette.length,this.palette.push(n)),this.blocks.push({pos:t,state:r,nbt:s}),this.blocksMap[t[0]*this.size[1]*this.size[2]+t[1]*this.size[2]+t[2]]={pos:t,state:r,nbt:s},this}getBlocks(){return this.blocks.map((t=>({pos:t.pos,state:this.palette[t.state],nbt:t.nbt})))}getBlock(t){if(!this.isInside(t))return null;const e=this.blocksMap[t[0]*this.size[1]*this.size[2]+t[1]*this.size[2]+t[2]];if(!e)return null;return{pos:e.pos,state:this.palette[e.state],nbt:e.nbt}}isInside(t){return t[0]>=0&&t[0]=0&&t[1]=0&&t[2]N.fromNbt({name:\"\",value:t}))),s=B(t.value,\"blocks\",\"compound\").map((t=>({pos:B(t,\"pos\",\"int\",3),state:S(t,\"state\",\"int\"),nbt:I((()=>S(t,\"nbt\",\"compound\")),void 0)})));return new _(e,i,s)}}function O(t){return t*t}function M(t,e,i){return Math.max(e,Math.min(i,t))}function L(t,e,i){return e+t*(i-e)}function D(t,e,i,s,n,r){return L(e,L(t,i,s),L(t,n,r))}function U(t,e,i,s,n,r,o,a,l,h,u){return L(i,D(t,e,s,n,r,o),D(t,e,a,l,h,u))}function X(t,e,i){return i<0?t:i>1?e:L(i,t,e)}function z(t){return t*t*t*(t*(6*t-15)+10)}function j(t,e,i){let s=e-t;for(;s>0;){const e=Math.floor(s/2),n=t+e;i(n)?s=e:(t=n+1,s-=e+1)}return t}class V{constructor(t){this.seed=BigInt(0),this.setSeed(t)}fork(){return new V(this.nextLong())}setSeed(t){this.seed=t^V.MULTIPLIER&V.MODULUS_MASK}advance(){this.seed=this.seed*V.MULTIPLIER+V.INCREMENT&V.MODULUS_MASK}consume(t){for(let e=0;e>BigInt(V.MODULUS_BITS-t));return e>2147483647?e-4294967296:e}nextInt(t){if(void 0===t)return this.next(32);if(0==(t&t-1))return Number(BigInt(t)*BigInt(this.next(31))>>BigInt(31));let e,i;for(;(e=this.next(31))-(i=e%t)+(t-1)<0;);return i}nextLong(){return(BigInt(this.next(32))<>BigInt(30))*BigInt(\"-4658895280553007687\")&BigInt(\"0xFFFFFFFFFFFFFFFF\"))^t>>BigInt(27))*BigInt(\"-7723592293110705685\")&BigInt(\"0xFFFFFFFFFFFFFFFF\"))^t>>BigInt(31))&BigInt(\"0xFFFFFFFFFFFFFFFF\")}static upgradeSeedTo128bit(t){t<0&&(t+=BigInt(\"0x10000000000000000\"));const e=t^W.SILVER_RATIO_64,i=e+W.GOLDEN_RATIO_64&BigInt(\"0xFFFFFFFFFFFFFFFF\");return[W.mixStafford13(e),W.mixStafford13(i)]}static rotateLeft(t,e){return t<>BigInt(64)-e}setSeed(t){this.seed=W.upgradeSeedTo128bit(t)}fork(){return new W([this.next(),this.next()])}static getSeed(t,e,i){let s=t*BigInt(3129871)^i*BigInt(116129781)^e;return s=s*s*BigInt(42317861)+s*BigInt(11),s>>BigInt(16)}forkAt(t,e,i){const s=W.getSeed(t,e,i)^this.seed[0];return new W([s,this.seed[1]])}static LongfromBytes(t,e,i,s,n,r,o,a){return BigInt(t)<BigInt(\"0x8000000000000000\")&&(t-=BigInt(\"0x10000000000000000\")),t}consume(t){let e=this.seed[0],i=this.seed[1];for(let s=0;s>BigInt(64-t)}nextInt(t){var e=this.next()&BigInt(4294967295);if(t){const o=BigInt(t);var i=e*o,s=i&BigInt(4294967295);if(s>BigInt(32);return Number(r)}var o=Number(e);return o>=2147483648&&(o-=4294967296),o}nextFloat(){return Number(this.nextBits(24))*W.FLOAT_MULTIPLIER}nextDouble(){return Number(this.nextBits(53))*W.DOUBLE_MULTIPLIER}parityConfigString(){return\"seedLo: \"+this.seed[0]+\", seedHi: \"+this.seed[1]}}W.SILVER_RATIO_64=BigInt(\"7640891576956012809\"),W.GOLDEN_RATIO_64=BigInt(\"-7046029254386353131\"),W.FLOAT_MULTIPLIER=1/Math.pow(2,24),W.DOUBLE_MULTIPLIER=11102230246251565e-32;class Y{constructor(t){this.xo=256*t.nextDouble(),this.yo=256*t.nextDouble(),this.zo=256*t.nextDouble(),this.p=Array(256);for(let t=0;t<256;t+=1)this.p[t]=t;for(let e=0;e<256;e+=1){const i=t.nextInt(256-e),s=this.p[e];this.p[e]=this.p[e+i],this.p[e+i]=s}}sample2D(t,e){let i,s,n;const r=(t+e)*Y.F2,o=Math.floor(t+r),a=t-(o-(i=(o+(s=Math.floor(e+r)))*Y.G2));let l,h;a>(n=e-(s-i))?(l=1,h=0):(l=0,h=1);const u=a-l+Y.G2,c=n-h+Y.G2,d=a-1+2*Y.G2,f=n-1+2*Y.G2,g=255&o,p=255&s,m=this.P(g+this.P(p))%12,v=this.P(g+l+this.P(p+h))%12,b=this.P(g+1+this.P(p+1))%12;return 70*(this.getCornerNoise3D(m,a,n,0,.5)+this.getCornerNoise3D(v,u,c,0,.5)+this.getCornerNoise3D(b,d,f,0,.5))}sample(t,e,i){const s=.3333333333333333*(t+e+i),n=Math.floor(t+s),r=Math.floor(e+s),o=Math.floor(i+s),a=.16666666666666666*(n+r+o),l=t-(n-a),h=e-(r-a),u=i-(o-a);let c,d,f,g,p,m;l>=h?h>=u?(c=1,d=0,f=0,g=1,p=1,m=0):l>=u?(c=1,d=0,f=0,g=1,p=0,m=1):(c=0,d=0,f=1,g=1,p=0,m=1):h127?t-256:t;for(let e=0;e<256;e+=1){const i=t.nextInt(256-e),s=this.p[e];this.p[e]=this.p[e+i],this.p[e+i]=s}}sample(t,e,i,s=0,n=0){const r=t+this.xo,o=e+this.yo,a=i+this.zo,l=Math.floor(r),h=Math.floor(o),u=Math.floor(a),c=r-l,d=o-h,f=a-u;let g=0;if(0!==s){const t=n>=0&&n=0;s-=1)s0&&(s=this.maxLimitNoise.getOctaveNoise(l))&&(a+=s.sample(c,d,f,u,e*u)/r),r/=2}return X(o/512,a/512,n)/128}}!function(t){t.fromJson=function(t){var e,i,s,n,r;const o=null!==(e=P.readObject(t))&&void 0!==e?e:{};return{xzScale:null!==(i=P.readNumber(o.xz_scale))&&void 0!==i?i:1,yScale:null!==(s=P.readNumber(o.y_scale))&&void 0!==s?s:1,xzFactor:null!==(n=P.readNumber(o.xz_factor))&&void 0!==n?n:80,yFactor:null!==(r=P.readNumber(o.y_factor))&&void 0!==r?r:80}}}(A||(A={}));class G{constructor(t,{firstOctave:e,amplitudes:i}){this.first=new Z(t,e,i),this.second=new Z(t,e,i);let s=1/0,n=-1/0;for(let t=0;t{var e;return null!==(e=P.readNumber(t))&&void 0!==e?e:0})))&&void 0!==s?s:[]}}}(C||(C={}));class ${constructor(t,e){const i=e[e.length-1],s=-e[0]+i+1,n=new Set(e),r=new Y(t);this.noiseLevels=Array(s),i>=0&&i=0&&n.has(i-e)?this.noiseLevels[e]=new Y(t):t.consume(262);if(i>0)throw new Error(\"Positive octaves are not allowed\");this.highestFreqInputFactor=Math.pow(2,i),this.highestFreqValueFactor=1/(Math.pow(2,s)-1)}sample(t,e,i){let s=0,n=this.highestFreqInputFactor,r=this.highestFreqValueFactor;for(let o=0;o{var e;return null!==(e=P.readObject(t))&&void 0!==e?e:{}})))&&void 0!==n?n:[];if(0===h.length)return new q(0);for(const e of h){const s=null!==(r=P.readNumber(e.location))&&void 0!==r?r:0,n=t.fromJson(e.value,i),a=null!==(o=P.readNumber(e.derivative))&&void 0!==o?o:0;l.addPoint(s,n,a)}return l}}(R||(R={}));class q{constructor(t){this.value=t}apply(){return this.value}toJson(){return this.value}}class K{constructor(t,e=[],i=[],s=[]){this.coordinate=t,this.locations=e,this.values=i,this.derivatives=s}apply(t){const e=this.coordinate.apply(t),i=j(0,this.locations.length,(t=>e({location:t,value:this.values[e].toJson(),derivative:this.derivatives[e]})))}}}const Q=t=>[(t>>16&255)/256,(t>>8&255)/256,(255&t)/256],tt=[124/256,189/256,107/256],et=Q(6396257),it=Q(8431445),st=Q(4764952),nt=Q(4159204),rt=Q(8431445),ot=Q(2129968),at=t=>[t/8,1-t/32,64*t],lt={large_fern:()=>tt,tall_grass:()=>tt,grass_block:()=>tt,fern:()=>tt,grass:()=>tt,potted_fern:()=>tt,spruce_leaves:()=>et,birch_leaves:()=>it,oak_leaves:()=>st,jungle_leaves:()=>st,acacia_leaves:()=>st,dark_oak_leaves:()=>st,vine:()=>st,water:()=>nt,bubble_column:()=>nt,cauldron:()=>nt,redstone_wire:t=>{var e;return(t=>{const e=t/15;return[.6*e+(e>0?.4:.3),M(e*e*.7-.5,0,1),M(e*e*.6-.7,0,1)]})(parseInt(null!==(e=t.power)&&void 0!==e?e:\"0\"))},sugar_cane:()=>tt,attached_melon_stem:()=>rt,attached_pumpkin_stem:()=>rt,melon_stem:t=>{var e;return at(parseInt(null!==(e=t.age)&&void 0!==e?e:\"0\"))},pumpkin_stem:t=>{var e;return at(parseInt(null!==(e=t.age)&&void 0!==e?e:\"0\"))},lily_pad:()=>ot};var ht;function ut(...t){let e=0;for(const i of t)e+=i.length;const i=new Float32Array(e);let s=0;for(const e of t)i.set(e,s),s+=e.length;return i}function ct(t,e){const s=i.create();for(let n=0;nthis.matchesVariant(e,t)));if(0===e.length)return[];const i=this.variants[e[0]];return[Array.isArray(i)?i[0]:i]}if(this.multipart){return this.multipart.filter((e=>!e.when||this.matchesCase(e.when,t))).map((t=>Array.isArray(t.apply)?t.apply[0]:t.apply))}return[]}getBuffers(t,e,i,r,o,a){var l,h,u,c;const d=this.getModelVariants(e),f=[],g=[],p=[],m=[];for(const v of d){const d=ht.rotate(a,null!==(l=v.x)&&void 0!==l?l:0,null!==(h=v.y)&&void 0!==h?h:0),b=r.getBlockModel(v.model).getBuffers(t,e,i,o,d);if(v.x||v.y){const t=s.create();s.identity(t),s.translate(t,t,[8,8,8]),s.rotateY(t,t,-n.toRadian(null!==(u=v.y)&&void 0!==u?u:0)),s.rotateX(t,t,-n.toRadian(null!==(c=v.x)&&void 0!==c?c:0)),s.translate(t,t,[-8,-8,-8]),ct(b.position,t)}f.push(b.position),g.push(...b.texCoord),p.push(...b.tintColor),m.push(...b.index),o+=b.texCoord.length/2}const v=s.create();s.identity(v),s.scale(v,v,[.0625,.0625,.0625]);const b=ut(...f);return ct(b,v),{position:b,texCoord:g,tintColor:p,index:m}}matchesVariant(t,e){return t.split(\",\").every((t=>{const[i,s]=t.split(\"=\");return e[i]===s}))}matchesCase(t,e){if(Array.isArray(t.OR))return t.OR.some((t=>this.matchesCase(t,e)));const i=t;return Object.keys(i).every((t=>i[t].split(\"|\").includes(e[t])))}static fromJson(t,e){return new dt(t,e.variants,e.multipart)}}const ft={0:[0,3,2,3,2,1,0,1],90:[2,3,2,1,0,1,0,3],180:[2,1,0,1,0,3,2,3],270:[0,1,0,3,2,3,2,1]},gt={x:[1,0,0],y:[0,1,0],z:[0,0,1]},pt=1.41421356237,mt={x:[1,pt,pt],y:[pt,1,pt],z:[pt,pt,1]};class vt{constructor(t,e,i,s){this.id=t,this.parent=e,this.textures=i,this.elements=s,this.flattened=!1}getBuffers(t,e,i,s,n){var r;const o=[],a=[],l=[],h=[];for(const u of null!==(r=this.elements)&&void 0!==r?r:[]){const r=this.getElementBuffers(t,e,u,s,i,n);o.push(r.position),a.push(...r.texCoord),l.push(...r.tintColor),h.push(...r.index),s+=r.texCoord.length/2}return{position:ut(...o),texCoord:a,tintColor:l,index:h}}getElementBuffers(t,e,r,o,a,l){var h,u,c,d,f,g,p,m,v,b,w,F;const y=r.from[0],x=r.from[1],S=r.from[2],B=r.to[0],I=r.to[1],P=r.to[2],E=[],A=[],C=[],R=[],N=(i,s,n)=>{var r,l,h,u,c,d,f,g,p,m,v,b;const[w,F,y,x]=a.getTextureUV(this.getTexture(i.texture)),S=(y-w)/16,B=(x-F)/16,I=S/16,P=B/16;s[0]=(null!==(l=null===(r=i.uv)||void 0===r?void 0:r[0])&&void 0!==l?l:s[0])*S+I,s[1]=(null!==(u=null===(h=i.uv)||void 0===h?void 0:h[1])&&void 0!==u?u:s[1])*B+P,s[2]=(null!==(d=null===(c=i.uv)||void 0===c?void 0:c[2])&&void 0!==d?d:s[2])*S-I,s[3]=(null!==(g=null===(f=i.uv)||void 0===f?void 0:f[3])&&void 0!==g?g:s[3])*B-P;const N=ft[null!==(p=i.rotation)&&void 0!==p?p:0];A.push(w+s[N[0]],F+s[N[1]],w+s[N[2]],F+s[N[3]],w+s[N[4]],F+s[N[5]],w+s[N[6]],F+s[N[7]]);const k=(null!==(m=i.tintindex)&&void 0!==m?m:-1)>=0&&null!==(b=null===(v=lt[t.slice(10)])||void 0===v?void 0:v.call(lt,e))&&void 0!==b?b:[1,1,1];C.push(...k,...k,...k,...k),E.push(...n),R.push(o,o+1,o+2,o,o+2,o+3),o+=4};!(null===(u=null===(h=r.faces)||void 0===h?void 0:h.up)||void 0===u?void 0:u.texture)||r.faces.up.cullface&&l[r.faces.up.cullface]||N(r.faces.up,[y,16-P,B,16-S],[y,I,P,B,I,P,B,I,S,y,I,S]),!(null===(d=null===(c=r.faces)||void 0===c?void 0:c.down)||void 0===d?void 0:d.texture)||r.faces.down.cullface&&l[r.faces.down.cullface]||N(r.faces.down,[16-P,16-B,16-S,16-y],[y,x,S,B,x,S,B,x,P,y,x,P]),!(null===(g=null===(f=r.faces)||void 0===f?void 0:f.south)||void 0===g?void 0:g.texture)||r.faces.south.cullface&&l[r.faces.south.cullface]||N(r.faces.south,[y,16-I,B,16-x],[y,x,P,B,x,P,B,I,P,y,I,P]),!(null===(m=null===(p=r.faces)||void 0===p?void 0:p.north)||void 0===m?void 0:m.texture)||r.faces.north.cullface&&l[r.faces.north.cullface]||N(r.faces.north,[16-B,16-I,16-y,16-x],[B,x,S,y,x,S,y,I,S,B,I,S]),!(null===(b=null===(v=r.faces)||void 0===v?void 0:v.east)||void 0===b?void 0:b.texture)||r.faces.east.cullface&&l[r.faces.east.cullface]||N(r.faces.east,[16-P,16-I,16-S,16-x],[B,x,P,B,x,S,B,I,S,B,I,P]),!(null===(F=null===(w=r.faces)||void 0===w?void 0:w.west)||void 0===F?void 0:F.texture)||r.faces.west.cullface&&l[r.faces.west.cullface]||N(r.faces.west,[S,16-I,P,16-x],[y,x,S,y,x,P,y,I,P,y,I,S]);const k=s.create();if(s.identity(k),r.rotation){const t=i.fromValues(...r.rotation.origin);s.translate(k,k,t),s.rotate(k,k,n.toRadian(r.rotation.angle),gt[r.rotation.axis]),r.rotation.rescale&&s.scale(k,k,mt[r.rotation.axis]),i.negate(t,t),s.translate(k,k,t)}const T=new Float32Array(E);return ct(T,k),{position:T,texCoord:A,tintColor:C,index:R}}getTexture(t){for(var e,i;t.startsWith(\"#\");)t=null!==(i=null===(e=this.textures)||void 0===e?void 0:e[t.slice(1)])&&void 0!==i?i:\"\";return t.startsWith(\"minecraft:\")||(t=\"minecraft:\"+t),t}flatten(t){var e;if(!this.flattened&&this.parent){const i=t.getBlockModel(this.parent);if(!i)return console.warn(`parent ${this.parent} does not exist!`),void(this.flattened=!0);i.flatten(t),this.elements||(this.elements=i.elements),this.textures||(this.textures={}),Object.keys(null!==(e=i.textures)&&void 0!==e?e:{}).forEach((t=>{this.textures[t]||(this.textures[t]=i.textures[t])})),this.flattened=!0}}static fromJson(t,e){let i=e.parent;return i&&!i.startsWith(\"minecraft:\")&&(i=\"minecraft:\"+i),new vt(t,i,e.textures,e.elements)}}class bt{constructor(t,e,i){this.gl=t,this.program=this.initShaderProgram(e,i)}getProgram(){return this.program}initShaderProgram(t,e){const i=this.loadShader(this.gl.VERTEX_SHADER,t),s=this.loadShader(this.gl.FRAGMENT_SHADER,e),n=this.gl.createProgram();if(this.gl.attachShader(n,i),this.gl.attachShader(n,s),this.gl.linkProgram(n),!this.gl.getProgramParameter(n,this.gl.LINK_STATUS))throw new Error(`Unable to link shader program: ${this.gl.getProgramInfoLog(n)}`);return n}loadShader(t,e){const i=this.gl.createShader(t);if(this.gl.shaderSource(i,e),this.gl.compileShader(i),!this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS)){const e=new Error(`Compiling ${t===this.gl.VERTEX_SHADER?\"vertex\":\"fragment\"} shader: ${this.gl.getShaderInfoLog(i)}`);throw this.gl.deleteShader(i),e}return i}}function wt(t,e,i,s,n){const r=new dt(\"\",{\"\":{model:\"\"}},void 0),o={getBlockModel:()=>n};return n.flatten(o),r.getBuffers(t,{},e,o,i,s)}function Ft(t,e,i,s,n,o){const a=n.up?16:[14.2,12.5,10.5,9,7,5.3,3.7,1.9,16,16,16,16,16,16,16,16][i];return wt(`minecraft:${t}`,s,e,n,new vt(\"\",\"\",{still:`minecraft:block/${t}_still`,flow:`minecraft:block/${t}_flow`},[{from:[0,0,0],to:[16,a,16],faces:{up:{texture:\"#still\",tintindex:o,cullface:r.UP},down:{texture:\"#still\",tintindex:o,cullface:r.DOWN},north:{texture:\"#flow\",tintindex:o,cullface:r.NORTH},east:{texture:\"#flow\",tintindex:o,cullface:r.EAST},south:{texture:\"#flow\",tintindex:o,cullface:r.SOUTH},west:{texture:\"#flow\",tintindex:o,cullface:r.WEST}}}]))}const yt={\"minecraft:water\":(t,e,i,s)=>Ft(\"water\",t,parseInt(e.level),i,s,0),\"minecraft:lava\":(t,e,i,s)=>Ft(\"lava\",t,parseInt(e.level),i,s),\"minecraft:chest\":(t,e,i)=>function(t,e,i,s){return wt(\"minecraft:chest\",s,t,{},new vt(\"\",\"\",{0:\"minecraft:block/chest\"},[{from:[1,0,1],to:[15,14,15],faces:{up:{texture:\"#0\"},down:{texture:\"#0\"},north:{texture:\"#0\"},east:{texture:\"#0\"},south:{texture:\"#0\"},west:{texture:\"#0\"}}}]))}(t,e.facing,e.type,i)},xt=new Set(Object.keys(yt));class St{constructor(t,e,i,s){var n,r;this.gl=t,this.structure=e,this.resources=i,this.chunks=[],(null==s?void 0:s.facesPerBuffer)&&console.warn(\"webgl render warning: facesPerBuffer option has been removed in favor of chunkSize\"),this.chunkSize=null!==(n=null==s?void 0:s.chunkSize)&&void 0!==n?n:16,this.useInvisibleBlockBuffer=null===(r=null==s?void 0:s.useInvisibleBlockBuffer)||void 0===r||r,this.shaderProgram=new bt(t,\"\\n attribute vec4 vertPos;\\n attribute vec2 texCoord;\\n attribute vec3 tintColor;\\n attribute vec3 normal;\\n\\n uniform mat4 mView;\\n uniform mat4 mProj;\\n\\n varying highp vec2 vTexCoord;\\n varying highp vec3 vTintColor;\\n varying highp float vLighting;\\n\\n void main(void) {\\n gl_Position = mProj * mView * vertPos;\\n vTexCoord = texCoord;\\n vTintColor = tintColor;\\n vLighting = normal.y * 0.2 + abs(normal.z) * 0.1 + 0.8;\\n }\\n\",\"\\n precision highp float;\\n varying highp vec2 vTexCoord;\\n varying highp vec3 vTintColor;\\n varying highp float vLighting;\\n\\n uniform sampler2D sampler;\\n\\n void main(void) {\\n vec4 texColor = texture2D(sampler, vTexCoord);\\n if(texColor.a < 0.01) discard;\\n gl_FragColor = vec4(texColor.xyz * vTintColor * vLighting, texColor.a);\\n }\\n\").getProgram(),this.gridShaderProgram=new bt(t,\"\\n attribute vec4 vertPos;\\n attribute vec3 vertColor;\\n\\n uniform mat4 mView;\\n uniform mat4 mProj;\\n\\n varying highp vec3 vColor;\\n\\n void main(void) {\\n gl_Position = mProj * mView * vertPos;\\n vColor = vertColor;\\n }\\n\",\"\\n precision highp float;\\n varying highp vec3 vColor;\\n\\n void main(void) {\\n gl_FragColor = vec4(vColor, 1.0);\\n }\\n\").getProgram(),this.colorShaderProgram=new bt(t,\"\\n attribute vec4 vertPos;\\n attribute vec3 blockPos;\\n\\n uniform mat4 mView;\\n uniform mat4 mProj;\\n\\n varying highp vec3 vColor;\\n\\n void main(void) {\\n gl_Position = mProj * mView * vertPos;\\n vColor = blockPos / 256.0;\\n }\\n\",\"\\n precision highp float;\\n varying highp vec3 vColor;\\n\\n void main(void) {\\n gl_FragColor = vec4(vColor, 1.0);\\n }\\n\").getProgram(),this.updateStructureBuffers(),this.gridBuffers=this.getGridBuffers(),this.outlineBuffers=this.getOutlineBuffers(),this.invisibleBlockBuffers=this.getInvisibleBlockBuffers(),this.atlasTexture=this.getBlockTexture(),this.projMatrix=this.getPerspective(),this.activeShader=this.shaderProgram,this.initialize()}setStructure(t){this.structure=t,this.updateStructureBuffers(),this.gridBuffers=this.getGridBuffers(),this.invisibleBlockBuffers=this.getInvisibleBlockBuffers()}initialize(){this.gl.enable(this.gl.DEPTH_TEST),this.gl.depthFunc(this.gl.LEQUAL),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.enable(this.gl.CULL_FACE),this.gl.cullFace(this.gl.BACK)}getBlockTexture(){const t=this.gl.createTexture();return this.gl.bindTexture(this.gl.TEXTURE_2D,t),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.resources.getTextureAtlas()),this.gl.generateMipmap(this.gl.TEXTURE_2D),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST),t}getPerspective(){const t=70*Math.PI/180,e=this.gl.canvas.clientWidth/this.gl.canvas.clientHeight,i=s.create();return s.perspective(i,t,e,.1,500),i}getChunk(t){const e=2*Math.abs(t[0])+(t[0]<0?1:0),i=2*Math.abs(t[1])+(t[1]<0?1:0),s=2*Math.abs(t[2])+(t[2]<0?1:0);return this.chunks[e]||(this.chunks[e]=[]),this.chunks[e][i]||(this.chunks[e][i]=[]),this.chunks[e][i][s]||(this.chunks[e][i][s]={positions:[],textureCoordinates:[],tintColors:[],blockPositions:[],normals:[],indices:[],indexOffset:0}),this.chunks[e][i][s]}updateStructureBuffers(t){var e;const n=(t,e,n)=>{const r=s.create();s.translate(r,r,e),ct(t.position,r),n.positions.push(t.position),n.textureCoordinates.push(...t.texCoord),n.tintColors.push(...t.tintColor);for(let e=0;e{t.positions=[],t.textureCoordinates=[],t.tintColors=[],t.blockPositions=[],t.normals=[],t.indices=[],t.indexOffset=0},a=t=>{t.buffer?(this.updateBuffer(t.buffer.position,this.gl.ARRAY_BUFFER,ut(...t.positions)),this.updateBuffer(t.buffer.texCoord,this.gl.ARRAY_BUFFER,new Float32Array(t.textureCoordinates)),this.updateBuffer(t.buffer.tintColor,this.gl.ARRAY_BUFFER,new Float32Array(t.tintColors)),this.updateBuffer(t.buffer.normal,this.gl.ARRAY_BUFFER,new Float32Array(t.normals)),this.updateBuffer(t.buffer.blockPos,this.gl.ARRAY_BUFFER,new Float32Array(t.blockPositions)),this.updateBuffer(t.buffer.index,this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array(t.indices)),t.buffer.length=t.indices.length):t.buffer={position:this.createBuffer(this.gl.ARRAY_BUFFER,ut(...t.positions)),texCoord:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t.textureCoordinates)),tintColor:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t.tintColors)),blockPos:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t.blockPositions)),normal:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t.normals)),index:this.createBuffer(this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array(t.indices)),length:t.indices.length}};let l;t?t.forEach((t=>{const e=this.getChunk(t);o(e)})):this.chunks.forEach((t=>t.forEach((t=>t.forEach((t=>{o(t)}))))));for(const s of this.structure.getBlocks()){const o=s.state.getName(),a=s.state.getProperties(),h=null!==(e=this.resources.getDefaultBlockProperties(o))&&void 0!==e?e:{};Object.entries(h).forEach((([t,e])=>{a[t]||(a[t]=e)}));const u=[Math.floor(s.pos[0]/this.chunkSize),Math.floor(s.pos[1]/this.chunkSize),Math.floor(s.pos[2]/this.chunkSize)];if(t&&!t.some((t=>i.equals(t,u))))continue;const c=this.getChunk(u);try{const t=this.resources.getBlockDefinition(o),e={up:this.needsCull(s,r.UP),down:this.needsCull(s,r.DOWN),west:this.needsCull(s,r.WEST),east:this.needsCull(s,r.EAST),north:this.needsCull(s,r.NORTH),south:this.needsCull(s,r.SOUTH)};t&&(l=t.getBuffers(o,a,this.resources,this.resources,c.indexOffset,e),n(l,s.pos,c)),xt.has(o)&&(l=yt[o](c.indexOffset,a,this.resources,e),n(l,s.pos,c))}catch(t){console.error(`Error rendering block ${o}`,t)}}t?t.forEach((t=>{const e=this.getChunk(t);a(e)})):this.chunks.forEach((t=>t.forEach((t=>t.forEach((t=>{a(t)}))))))}needsCull(t,e){var i,s;const n=null===(i=this.structure.getBlock(a.towards(t.pos,e)))||void 0===i?void 0:i.state;return!!n&&((null===(s=this.resources.getBlockFlags(n.getName()))||void 0===s?void 0:s.opaque)?!(e===r.UP&&t.state.isFluid()):t.state.isFluid()&&n.isFluid())}getGridBuffers(){const[t,e,i]=this.structure.getSize(),s=[],n=[];s.push(0,0,0,t,0,0),n.push(1,0,0,1,0,0),s.push(0,0,0,0,0,i),n.push(0,0,1,0,0,1),s.push(0,0,0,0,e,0),s.push(t,0,0,t,e,0),s.push(0,0,i,0,e,i),s.push(t,0,i,t,e,i),s.push(0,e,0,0,e,i),s.push(t,e,0,t,e,i),s.push(0,e,0,t,e,0),s.push(0,e,i,t,e,i);for(let e=1;e<=t;e+=1)s.push(e,0,0,e,0,i);for(let e=1;e<=i;e+=1)s.push(0,0,e,t,0,e);for(let e=0;e<8+t+i;e+=1)n.push(.8,.8,.8,.8,.8,.8);return{position:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(s)),color:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(n)),length:s.length/3}}getOutlineBuffers(){const t=[],e=[];return this.addCube(t,e,[1,1,1],[0,0,0],[1,1,1]),{position:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(t)),color:this.createBuffer(this.gl.ARRAY_BUFFER,new Float32Array(e)),length:t.length/3}}getInvisibleBlockBuffers(){if(!this.useInvisibleBlockBuffer)return;const t=this.structure.getSize(),e=[],i=[];for(let s=0;s{t.forEach((t=>{t.forEach((t=>{t.buffer&&(this.setVertexAttr(\"vertPos\",3,t.buffer.position),this.setVertexAttr(\"texCoord\",2,t.buffer.texCoord),this.setVertexAttr(\"tintColor\",3,t.buffer.tintColor),this.setVertexAttr(\"normal\",3,t.buffer.normal),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,t.buffer.index),this.gl.drawElements(this.gl.TRIANGLES,t.buffer.length,this.gl.UNSIGNED_SHORT,0))}))}))}))}drawColoredStructure(t){this.setShader(this.colorShaderProgram),this.setUniform(\"mView\",t),this.setUniform(\"mProj\",this.projMatrix),this.chunks.forEach((t=>{t.forEach((t=>{t.forEach((t=>{t.buffer&&(this.setVertexAttr(\"vertPos\",3,t.buffer.position),this.setVertexAttr(\"blockPos\",3,t.buffer.blockPos),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,t.buffer.index),this.gl.drawElements(this.gl.TRIANGLES,t.buffer.length,this.gl.UNSIGNED_SHORT,0))}))}))}))}drawOutline(t,e){this.setShader(this.gridShaderProgram),this.setVertexAttr(\"vertPos\",3,this.outlineBuffers.position),this.setVertexAttr(\"vertColor\",3,this.outlineBuffers.color);const i=s.create();s.copy(i,t),s.translate(i,i,e),this.setUniform(\"mView\",i),this.setUniform(\"mProj\",this.projMatrix),this.gl.drawArrays(this.gl.LINES,0,this.outlineBuffers.length)}setViewport(t,e,i,s){this.gl.viewport(t,e,i,s),this.projMatrix=this.getPerspective()}setShader(t){this.gl.useProgram(t),this.activeShader=t}setVertexAttr(t,e,i){const s=this.gl.getAttribLocation(this.activeShader,t);this.gl.bindBuffer(this.gl.ARRAY_BUFFER,i),this.gl.vertexAttribPointer(s,e,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(s)}setUniform(t,e){const i=this.gl.getUniformLocation(this.activeShader,t);this.gl.uniformMatrix4fv(i,!1,e)}}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */function Bt(t,e,i,s){return new(i||(i=Promise))((function(n,r){function o(t){try{l(s.next(t))}catch(t){r(t)}}function a(t){try{l(s.throw(t))}catch(t){r(t)}}function l(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,a)}l((s=s.apply(t,e||[])).next())}))}class It{constructor(t,e){this.img=t,this.idMap=e,this.part=16/t.width}getTextureAtlas(){return this.img}getTextureUV(t){var e;return null!==(e=this.idMap[t])&&void 0!==e?e:[0,0,this.part,this.part]}static fromBlobs(t){return Bt(this,void 0,void 0,(function*(){const e=Math.sqrt(Object.keys(t).length+1),i=Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))),s=16*i,n=1/i,r=document.createElement(\"canvas\");r.width=s,r.height=s;const o=r.getContext(\"2d\");this.drawInvalidTexture(o);const a={};let l=1;return yield Promise.all(Object.keys(t).map((e=>Bt(this,void 0,void 0,(function*(){const s=l%i,r=Math.floor(l/i);l+=1,a[e]=[n*s,n*r,n*s+n,n*r+n];const h=yield createImageBitmap(t[e]);o.drawImage(h,0,0,16,16,16*s,16*r,16,16)}))))),new It(o.getImageData(0,0,s,s),a)}))}static empty(){const t=document.createElement(\"canvas\");t.width=16,t.height=16;const e=t.getContext(\"2d\");return It.drawInvalidTexture(e),new It(e.getImageData(0,0,16,16),{})}static drawInvalidTexture(t){t.fillStyle=\"black\",t.fillRect(0,0,16,16),t.fillStyle=\"magenta\",t.fillRect(0,0,8,8),t.fillRect(8,8,8,8)}}var Pt,Et,At,Ct,Rt,Nt,kt,Tt,_t;!function(t){function e(t,e){return\"number\"==typeof t?new i(t,null!=e?e:t):t}t.target=function(t,e,i,s,r,o){return new n(t,e,i,s,r,o)},t.parameters=function(t,i,n,r,o,a,l){return new s(e(t),e(i),e(n),e(r),e(o),e(a),l)},t.param=e;class i{constructor(t,e){this.min=t,this.max=e}distance(t){const e=(\"number\"==typeof t?t:t.min)-this.max,i=this.min-(\"number\"==typeof t?t:t.max);return e>0?e:Math.max(i,0)}union(t){return new i(Math.min(this.min,t.min),Math.max(this.max,t.max))}static fromJson(t){var e;if(\"number\"==typeof t)return new i(t,t);const[s,n]=null!==(e=P.readArray(t,(t=>P.readNumber(t))))&&void 0!==e?e:[];return new i(null!=s?s:0,null!=n?n:0)}}t.Param=i;class s{constructor(t,e,i,s,n,r,o){this.temperature=t,this.humidity=e,this.continentalness=i,this.erosion=s,this.depth=n,this.weirdness=r,this.offset=o}fittness(t){return O(this.temperature.distance(t.temperature))+O(this.humidity.distance(t.humidity))+O(this.continentalness.distance(t.continentalness))+O(this.erosion.distance(t.erosion))+O(this.depth.distance(t.depth))+O(this.weirdness.distance(t.weirdness))+O(this.offset-t.offset)}space(){return[this.temperature,this.humidity,this.continentalness,this.erosion,this.depth,this.weirdness,new i(this.offset,this.offset)]}static fromJson(t){var e,n;const r=null!==(e=P.readObject(t))&&void 0!==e?e:{};return new s(i.fromJson(r.temperature),i.fromJson(r.humidity),i.fromJson(r.continentalness),i.fromJson(r.erosion),i.fromJson(r.depth),i.fromJson(r.weirdness),null!==(n=P.readInt(r.offset))&&void 0!==n?n:0)}}t.ParamPoint=s;class n{constructor(t,e,i,s,n,r){this.temperature=t,this.humidity=e,this.continentalness=i,this.erosion=s,this.depth=n,this.weirdness=r}get offset(){return 0}toArray(){return[this.temperature,this.humidity,this.continentalness,this.erosion,this.depth,this.weirdness,this.offset]}}t.TargetPoint=n;t.Parameters=class{constructor(t){this.things=t,this.index=new r(t)}find(t){return this.index.search(t,((t,e)=>t.distance(e)))}};class r{constructor(t){this.root=r.build(t.map((([t,e])=>new l(t,e))))}static build(t){if(1===t.length)return t[0];if(t.length<=r.CHILDREN_PER_NODE){const e=t.map((t=>{let e=0;for(let i=0;i<7;i+=1){const s=t.space[i];e+=Math.abs((s.min+s.max)/2)}return{key:e,node:t}})).sort(((t,e)=>t.key-e.key)).map((({node:t})=>t));return new a(e)}let e=1/0,i=-1,s=[];for(let n=0;n<7;++n){t=r.sort(t,n,!1),s=r.bucketize(t);let o=0;for(const t of s)o+=r.area(t.space);e>o&&(e=o,i=n)}return t=r.sort(t,i,!1),s=r.bucketize(t),s=r.sort(s,i,!0),new a(s.map((t=>r.build(t.children))))}static sort(t,e,i){return t.map((t=>{const s=t.space[e],n=(s.min+s.max)/2;return{key:i?Math.abs(n):n,node:t}})).sort(((t,e)=>t.key-e.key)).map((({node:t})=>t))}static bucketize(t){const e=[];let i=[];const s=Math.pow(10,Math.floor(Math.log(t.length-.01)/Math.log(10)));for(const n of t)i.push(n),i.lengthnew i(1/0,-1/0)));for(const i of t)e=[...Array(7)].map(((t,s)=>e[s].union(i.space[s])));return e}search(t,e){let i=1/0,s=null;for(const n of this.children){const r=e(n,t);if(i<=r)continue;const o=n.search(t,e),a=n==o?r:e(o,t);i<=a||(i=a,s=o)}return s}}t.RSubTree=a;class l extends o{constructor(t,e){super(t.space()),this.thing=e}search(){return this}}t.RLeaf=l}(Pt||(Pt={}));class Ot{constructor(t){this.biome=t}getBiome(){return this.biome}static fromJson(t){var e,i;const s=null!==(e=P.readObject(t))&&void 0!==e?e:{},n=null!==(i=P.readString(s.biome))&&void 0!==i?i:\"minecraft:the_void\";return new Ot(n)}}class Mt{constructor(t){this.parameters=t}getBiome(t,e,i,s){const n=s(t,e,i);return this.parameters.find(n)}static fromJson(t){var e,i;const s=null!==(e=P.readObject(t))&&void 0!==e?e:{},n=(null!==(i=P.readArray(s.biomes,(t=>{var e;return(t=>{var e;return{biome:null!==(e=P.readString(t.biome))&&void 0!==e?e:\"minecraft:the_void\",parameters:Pt.ParamPoint.fromJson(t.parameters)}})(null!==(e=P.readObject(t))&&void 0!==e?e:{})})))&&void 0!==i?i:[]).map((t=>[t.parameters,()=>t.biome]));return new Mt(new Pt.Parameters(n))}}class Lt{constructor(t,e,i){this.offsetSampler=t,this.factorSampler=e,this.jaggednessSampler=i}static extractor(t){return{apply:e=>e[t],toJson:()=>t}}static fromJson(t){var e;const i=null!==(e=P.readObject(t))&&void 0!==e?e:{};return new Lt(R.fromJson(i.offset,this.EXTRACTOR),R.fromJson(i.factor,this.EXTRACTOR),R.fromJson(i.jaggedness,this.EXTRACTOR))}toJson(){return{offset:this.offsetSampler.toJson(),factor:this.factorSampler.toJson(),jaggedness:this.jaggednessSampler.toJson()}}offset(t){return this.offsetSampler.apply(t)+Lt.GLOBAL_OFFSET}factor(t){return this.factorSampler.apply(t)}jaggedness(t){return this.jaggednessSampler.apply(t)}static point(t,e,i){return{continents:t,erosion:e,weirdness:i,ridges:this.peaksAndValleys(i)}}static peaksAndValleys(t){return 3*-(Math.abs(Math.abs(t)-.6666667)-.33333334)}static overworld(){const t=this.buildErosionOffsetSpline(-.05,0,0,.1,0,-.03,!1,!1),e=this.buildErosionOffsetSpline(-.1,.03,.1,.1,.01,-.03,!1,!1),i=this.buildErosionOffsetSpline(-.1,.03,.1,.7,.01,-.03,!0,!0),s=this.buildErosionOffsetSpline(.3,.03,.1,1,.01,.01,!0,!0),n=new K(this.CONTINENTS).addPoint(-1.1,.044).addPoint(-1.02,-.2222).addPoint(-.51,-.2222).addPoint(-.44,-.12).addPoint(-.18,-.12).addPoint(-.16,t).addPoint(-.15,t).addPoint(-.1,e).addPoint(.25,i).addPoint(1,s),r=new K(this.CONTINENTS).addPoint(-.19,3.95).addPoint(-.15,this.getErosionFactor(6.25,!0)).addPoint(-.1,this.getErosionFactor(5.47,!0)).addPoint(.03,this.getErosionFactor(5.08,!0)).addPoint(.06,this.getErosionFactor(4.69,!1)),o=new K(this.CONTINENTS).addPoint(.11,0).addPoint(.03,this.buildErosionJaggednessSpline(1,.5,0,0)).addPoint(.65,this.buildErosionJaggednessSpline(1,1,1,0));return new Lt(n,r,o)}static getErosionFactor(t,e){const i=new K(this.WEIRDNESS).addPoint(-.2,6.3).addPoint(.2,t),s=new K(this.EROSION).addPoint(-.6,i).addPoint(-.5,new K(this.WEIRDNESS).addPoint(-.05,6.3).addPoint(.05,2.67)).addPoint(-.35,i).addPoint(-.25,i).addPoint(-.1,new K(this.WEIRDNESS).addPoint(-.05,2.67).addPoint(.05,6.3)).addPoint(.03,i);if(e){const e=new K(this.WEIRDNESS).addPoint(0,t).addPoint(.1,.625),i=new K(this.RIDGES).addPoint(-.9,t).addPoint(-.69,e);s.addPoint(.35,t).addPoint(.45,i).addPoint(.55,i).addPoint(.62,t)}else{const e=new K(this.RIDGES).addPoint(-.7,i).addPoint(-.15,1.37),n=new K(this.RIDGES).addPoint(.45,i).addPoint(.7,1.56);s.addPoint(.05,n).addPoint(.4,n).addPoint(.45,e).addPoint(.55,e).addPoint(.58,t)}return s}static buildErosionOffsetSpline(t,e,i,s,n,r,o,a){const l=this.buildMountainRidgeSplineWithPoints(L(s,.6,1.5),a),h=this.buildMountainRidgeSplineWithPoints(L(s,.6,1),a),u=this.buildMountainRidgeSplineWithPoints(s,a),c=this.ridgeSpline(t-.15,.5*s,L(.5,.5,.5)*s,.5*s,.6*s,.5),d=this.ridgeSpline(t,n*s,e*s,.5*s,.6*s,.5),f=this.ridgeSpline(t,n,n,e,i,.5),g=this.ridgeSpline(t,n,n,e,i,.5),p=new K(this.RIDGES).addPoint(-1,t).addPoint(-.4,f).addPoint(0,i+.07),m=this.ridgeSpline(-.02,r,r,e,i,0),v=new K(this.EROSION).addPoint(-.85,l).addPoint(-.7,h).addPoint(-.4,u).addPoint(-.35,c).addPoint(-.1,d).addPoint(.2,f);return o&&v.addPoint(.4,g).addPoint(.45,p).addPoint(.55,p).addPoint(.58,g),v.addPoint(.7,m),v}static buildMountainRidgeSplineWithPoints(t,e){const i=new K(this.RIDGES),s=this.mountainContinentalness(-1,t,-.7),n=this.mountainContinentalness(1,t,-.7),r=this.calculateMountainRidgeZeroContinentalnessPoint(t);if(-.650?this.buildWeirdnessJaggednessSpline(e):0).addPoint(1,t>0?this.buildWeirdnessJaggednessSpline(t):0)}static buildWeirdnessJaggednessSpline(t){return new K(Lt.WEIRDNESS).addPoint(-.01,.63*t).addPoint(.01,.3*t)}}Lt.GLOBAL_OFFSET=-.50375,Lt.EXTRACTOR=t=>{var e;const i=null!==(e=P.readString(t))&&void 0!==e?e:\"continents\";return Lt.extractor(i)},Lt.CONTINENTS=Lt.extractor(\"continents\"),Lt.EROSION=Lt.extractor(\"erosion\"),Lt.WEIRDNESS=Lt.extractor(\"weirdness\"),Lt.RIDGES=Lt.extractor(\"ridges\"),function(t){t.fromList=function(t){return(e,i,s,n)=>{for(const r of t){const t=r(e,i,s,n);if(t)return t}return null}}}(Et||(Et={}));class Dt{constructor(t,e){this.chunk=t,this.filler=e,this.noise000=0,this.noise001=0,this.noise100=0,this.noise101=0,this.noise010=0,this.noise011=0,this.noise110=0,this.noise111=0,this.valueXZ00=0,this.valueXZ10=0,this.valueXZ01=0,this.valueXZ11=0,this.valueZ0=0,this.valueZ1=0,this.value=0,this.slice0=Dt.allocateSlice(t.cellCountY,t.cellCountXZ),this.slice1=Dt.allocateSlice(t.cellCountY,t.cellCountXZ)}static allocateSlice(t,e){const i=Array(e+1);for(let s=0;st.initializeForFirstCellX()))}advanceCellX(t){this.interpolators.forEach((e=>e.advanceCellX(t)))}selectCellYZ(t,e){this.interpolators.forEach((i=>i.selectCellYZ(t,e)))}updateForY(t){this.interpolators.forEach((e=>e.updateForY(t)))}updateForX(t){this.interpolators.forEach((e=>e.updateForX(t)))}updateForZ(t){this.interpolators.forEach((e=>e.updateForZ(t)))}swapSlices(){this.interpolators.forEach((t=>t.swapSlices()))}updateNoiseAndGenerateBaseState(t,e,i){return this.baseNoise(t,e,i)}}!function(t){t.create=function(t,e,i){return{offset:t,factor:e,jaggedness:i}}}(At||(At={})),function(t){t.create=function(t,e,i){const s=e+t.getOffset(e,0,i),n=i+t.getOffset(i,e,0),r=t.getContinentalness(s,n),o=t.getWeirdness(s,n),a=t.getErosion(s,n);return{shiftedX:s,shiftedZ:n,continentalness:r,weirdness:o,erosion:a,terrainInfo:t.getTerrainInfo(s<<2,n<<2,r,o,a)}}}(Ct||(Ct={})),function(t){t.fromJson=function(t){var e,i,s,n,r,o,a,l,h,u,c,d;const f=null!==(e=P.readObject(t))&&void 0!==e?e:{};return{minY:null!==(i=P.readInt(f.min_y))&&void 0!==i?i:0,height:null!==(s=P.readInt(f.height))&&void 0!==s?s:256,xzSize:null!==(n=P.readInt(f.size_horizontal))&&void 0!==n?n:1,ySize:null!==(r=P.readInt(f.size_vertical))&&void 0!==r?r:1,densityFactor:null!==(o=P.readNumber(f.density_factor))&&void 0!==o?o:0,densityOffset:null!==(a=P.readNumber(f.density_offset))&&void 0!==a?a:0,sampling:A.fromJson(f.sampling),topSlide:Nt.fromJson(f.top_slide),bottomSlide:Nt.fromJson(f.bottom_slide),terrainShaper:Lt.fromJson(f.terrain_shaper),useSimplexSurfaceNoise:null!==(l=P.readBoolean(f.simplex_surface_noise))&&void 0!==l&&l,randomDensityOffset:null!==(h=P.readBoolean(f.random_density_offset))&&void 0!==h&&h,islandNoiseOverride:null!==(u=P.readBoolean(f.island_noise_override))&&void 0!==u&&u,isAmplified:null!==(c=P.readBoolean(f.amplified))&&void 0!==c&&c,useLegacyRandom:null!==(d=P.readBoolean(f.use_legacy_random))&&void 0!==d&&d}}}(Rt||(Rt={})),function(t){t.fromJson=function(t){var e,i,s,n;const r=null!==(e=P.readObject(t))&&void 0!==e?e:{};return{target:null!==(i=P.readNumber(r.target))&&void 0!==i?i:0,size:null!==(s=P.readInt(r.size))&&void 0!==s?s:0,offset:null!==(n=P.readInt(r.offset))&&void 0!==n?n:0}},t.apply=function(t,e,i){if(t.size<=0)return e;const s=(i-t.offset)/t.size;return X(t.target,e,s)}}(Nt||(Nt={}));class Xt{constructor(t,e,i,s,n,r,o=!1){if(this.cellWidth=t,this.cellHeight=e,this.cellCountY=i,this.settings=s,o){const i=new V(r),o=s.useLegacyRandom?new V(r):i.fork();this.blendedNoise=new H(o,s.sampling,t,e),i.consume(8),this.temperatureNoise=new G(new V(r),n.temperature),this.humidityNoise=new G(new V(r+BigInt(1)),n.humidity),this.continentalnessNoise=new G(new V(r+BigInt(2)),n.continentalness),this.erosionNoise=new G(new V(r+BigInt(3)),n.erosion),this.weirdnessNoise=new G(new V(r+BigInt(4)),n.weirdness),this.offsetNoise=new G(new V(r+BigInt(5)),n.shift),this.jaggedNoise=new G(i.fork(),{firstOctave:-16,amplitudes:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]})}else{const i=W.create(r).fork();this.blendedNoise=new H(i.forkWithHashOf(\"minecraft:terrain\"),s.sampling,t,e),this.temperatureNoise=new G(i.forkWithHashOf(\"minecraft:temperature\"),n.temperature),this.humidityNoise=new G(i.forkWithHashOf(\"minecraft:vegetation\"),n.humidity),this.continentalnessNoise=new G(i.forkWithHashOf(\"minecraft:continentalness\"),n.continentalness),this.erosionNoise=new G(i.forkWithHashOf(\"minecraft:erosion\"),n.erosion),this.weirdnessNoise=new G(i.forkWithHashOf(\"minecraft:ridge\"),n.weirdness),this.offsetNoise=new G(i.forkWithHashOf(\"minecraft:offset\"),n.shift),this.jaggedNoise=new G(i.forkWithHashOf(\"minecraft:jagged\"),{firstOctave:-16,amplitudes:[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]})}this.shaper=s.terrainShaper,this.baseNoise=t=>{const e=t.createNoiseInterpolator(((e,i,s)=>this.calculateBaseNoise(e,i,s,t.getTerrainInfo(e>>2,s>>2))));return()=>e.sample()}}sample(t,e,i){const s=t+this.getOffset(t,0,i),n=i+this.getOffset(i,t,0),r=this.getContinentalness(s,n),o=this.getErosion(s,n),a=this.getWeirdness(s,n),l=this.shaper.offset(Lt.point(r,o,a));return this.target(t,e,i,s,n,r,o,a,l)}target(t,e,i,s,n,r,o,a,l){const h=e+this.getOffset(e,i,t),u=this.getTemperature(s,h,n),c=this.getHumidity(s,h,n),d=this.computeDimensionDensity(e<<2)+l;return Pt.target(u,c,r,o,d,a)}getOffset(t,e,i){return 4*this.offsetNoise.sample(t,e,i)}getTemperature(t,e,i){return this.temperatureNoise.sample(t,e,i)}getHumidity(t,e,i){return this.humidityNoise.sample(t,e,i)}getContinentalness(t,e){return this.continentalnessNoise.sample(t,0,e)}getErosion(t,e){return this.erosionNoise.sample(t,0,e)}getWeirdness(t,e){return this.weirdnessNoise.sample(t,0,e)}getTerrainInfo(t,e,i,s,n){const r=Lt.point(i,s,n);return At.create(this.shaper.offset(r),this.shaper.factor(r),this.shaper.jaggedness(r))}makeBaseNoiseFiller(t,e){const i=this.baseNoise(t);return(t,s,n)=>{let r=i();return r=M(.64*r,-1,1),r=r/2-r*r*r/24,r+=e(t,s,n),r>0?null:N.AIR}}calculateBaseNoise(t,e,i,s){let n=this.blendedNoise.sample(t,e,i);if(s){const r=this.sampleJaggedNoise(s.jaggedness,t,i),o=this.computeDimensionDensity(e),a=s.factor*(s.offset+r+o);n+=a>0?4*a:a}return n=M(n,-64,64),n=this.applySlide(n,e/this.cellHeight),n=M(n,-64,64),n}sampleJaggedNoise(t,e,i){if(0===t)return 0;const s=this.jaggedNoise.sample(1500*e,0,1500*i);return s>0?t*s:t/2*s}computeDimensionDensity(t){return(1-t/128)*this.settings.densityFactor+this.settings.densityOffset}applySlide(t,e){const i=e-Math.floor(this.settings.minY/this.cellHeight);return t=Nt.apply(this.settings.topSlide,t,this.cellCountY-i),t=Nt.apply(this.settings.bottomSlide,t,i)}}class zt{constructor(t,e,i){this.biomeSource=e,this.settings=i,this.cellHeight=i.noise.ySize<<2,this.cellWidth=i.noise.xzSize<<2,this.cellCountXZ=Math.floor(16/this.cellWidth),this.cellCountY=Math.floor(i.noise.height/this.cellHeight),this.sampler=new Xt(this.cellWidth,this.cellHeight,this.cellCountY,i.noise,i.octaves,t,i.legacyRandomSource),this.materialRule=Et.fromList([(t,e,i,s)=>t.updateNoiseAndGenerateBaseState(e,i,s)])}fillBiomes(t){const e=Math.max(t.minY,this.settings.noise.minY),i=Math.min(t.maxY,this.settings.noise.minY+this.settings.noise.height),s=Math.floor(e/this.cellHeight);Math.floor((i-e)/this.cellHeight);const n=E.minBlockX(t.pos),r=E.minBlockZ(t.pos),o=new Ut(this.cellWidth,this.cellHeight,this.cellCountXZ,this.cellCountY,s,this.sampler,n,r,(()=>0));for(let e=0;em))}}}fill(t){var e;const i=Math.max(t.minY,this.settings.noise.minY),s=Math.min(t.maxY,this.settings.noise.minY+this.settings.noise.height),n=Math.floor(i/this.cellHeight),r=Math.floor((s-i)/this.cellHeight),o=E.minBlockX(t.pos),a=E.minBlockZ(t.pos),l=new Ut(this.cellWidth,this.cellHeight,this.cellCountXZ,this.cellCountY,n,this.sampler,o,a,(()=>0));l.initializeForFirstCellX();for(let i=0;i=0;u-=1){l.selectCellYZ(u,s);for(let r=this.cellHeight-1;r>=0;r-=1){const c=(n+u)*this.cellHeight+r,d=15&c,f=t.getSectionIndex(c);t.getSectionIndex(h.minBlockY)!==f&&(h=t.getOrCreateSection(f));const g=r/this.cellHeight;l.updateForY(g);for(let t=0;t{var e,i,s;return{distance:null!==(e=P.readInt(t.distance))&&void 0!==e?e:0,spread:null!==(i=P.readInt(t.spread))&&void 0!==i?i:0,count:null!==(s=P.readInt(t.count))&&void 0!==s?s:0}})),structures:P.readMap(i.structures,(t=>{var e;return(t=>{var e,i,s;return{spacing:null!==(e=P.readInt(t.spacing))&&void 0!==e?e:0,separation:null!==(i=P.readInt(t.separation))&&void 0!==i?i:0,salt:null!==(s=P.readInt(t.salt))&&void 0!==s?s:0}})(null!==(e=P.readObject(t))&&void 0!==e?e:{})}))}}}(Tt||(Tt={})),function(t){t.fromJson=function(t){var e;const i=null!==(e=P.readObject(t))&&void 0!==e?e:{};return{temperature:C.fromJson(i.temperature),humidity:C.fromJson(i.humidity),continentalness:C.fromJson(i.continentalness),erosion:C.fromJson(i.erosion),weirdness:C.fromJson(i.weirdness),shift:C.fromJson(i.shift)}}}(_t||(_t={}));export{H as BlendedNoise,lt as BlockColors,dt as BlockDefinition,vt as BlockModel,a as BlockPos,N as BlockState,T as Chunk,E as ChunkPos,k as ChunkSection,Pt as Climate,q as ConstantProvider,r as Direction,Ot as FixedBiome,Ct as FlatNoiseData,J as ImprovedNoise,P as Json,V as LegacyRandom,Et as MaterialRule,Mt as MultiNoise,u as NbtReader,c as NbtWriter,Ut as NoiseChunk,zt as NoiseChunkGenerator,kt as NoiseGeneratorSettings,Dt as NoiseInterpolator,_t as NoiseOctaves,C as NoiseParameters,Xt as NoiseSampler,A as NoiseSamplingSettings,Rt as NoiseSettings,Nt as NoiseSlideSettings,G as NormalNoise,R as NumberProvider,Z as PerlinNoise,$ as PerlinSimplexNoise,Y as SimplexNoise,K as Spline,_ as Structure,St as StructureRenderer,Tt as StructureSettings,At as TerrainInfo,Lt as TerrainShaper,It as TextureAtlas,W as XoroshiroRandom,j as binarySearch,M as clamp,X as clampedLerp,B as getListTag,I as getOptional,S as getTag,L as lerp,D as lerp2,U as lerp3,g as read,m as readChunk,f as readCompressed,p as readRegion,d as readUncompressed,z as smoothstep,O as square,h as tagNames,l as tagTypes,w as write,y as writeChunk,b as writeCompressed,F as writeRegion,v as writeUncompressed};\n//# sourceMappingURL=deepslate.esm.js.map\n","\nlet wasm;\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nconst u32CvtShim = new Uint32Array(2);\n\nconst int64CvtShim = new BigInt64Array(u32CvtShim.buffer);\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nlet cachegetFloat64Memory0 = null;\nfunction getFloat64Memory0() {\n if (cachegetFloat64Memory0 === null || cachegetFloat64Memory0.buffer !== wasm.memory.buffer) {\n cachegetFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachegetFloat64Memory0;\n}\n\nfunction getArrayF64FromWasm0(ptr, len) {\n return getFloat64Memory0().subarray(ptr / 8, ptr / 8 + len);\n}\n/**\n* @param {BigInt} seed\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Float64Array}\n*/\nexport function improved_noise(seed, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n int64CvtShim[0] = seed;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.improved_noise(retptr, low0, high0, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayF64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArrayF64ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 8);\n getFloat64Memory0().set(arg, ptr / 8);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* @param {BigInt} seed\n* @param {number} first_octave\n* @param {Float64Array} amplitudes\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Float64Array}\n*/\nexport function perlin_noise(seed, first_octave, amplitudes, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n int64CvtShim[0] = seed;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n var ptr1 = passArrayF64ToWasm0(amplitudes, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n wasm.perlin_noise(retptr, low0, high0, first_octave, ptr1, len1, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v2 = getArrayF64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {BigInt} seed\n* @param {number} first_octave\n* @param {Float64Array} amplitudes\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Float64Array}\n*/\nexport function normal_noise(seed, first_octave, amplitudes, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n int64CvtShim[0] = seed;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n var ptr1 = passArrayF64ToWasm0(amplitudes, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n wasm.normal_noise(retptr, low0, high0, first_octave, ptr1, len1, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v2 = getArrayF64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nlet cachegetUint32Memory0 = null;\nfunction getUint32Memory0() {\n if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachegetUint32Memory0;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4);\n getUint32Memory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* @param {Float64Array} t_min\n* @param {Float64Array} t_max\n* @param {Float64Array} h_min\n* @param {Float64Array} h_max\n* @param {Float64Array} c_min\n* @param {Float64Array} c_max\n* @param {Float64Array} e_min\n* @param {Float64Array} e_max\n* @param {Float64Array} w_min\n* @param {Float64Array} w_max\n* @param {Float64Array} d_min\n* @param {Float64Array} d_max\n* @param {Float64Array} offset\n* @param {Int32Array} biome\n* @returns {ParameterList}\n*/\nexport function biome_parameters(t_min, t_max, h_min, h_max, c_min, c_max, e_min, e_max, w_min, w_max, d_min, d_max, offset, biome) {\n var ptr0 = passArrayF64ToWasm0(t_min, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passArrayF64ToWasm0(t_max, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passArrayF64ToWasm0(h_min, wasm.__wbindgen_malloc);\n var len2 = WASM_VECTOR_LEN;\n var ptr3 = passArrayF64ToWasm0(h_max, wasm.__wbindgen_malloc);\n var len3 = WASM_VECTOR_LEN;\n var ptr4 = passArrayF64ToWasm0(c_min, wasm.__wbindgen_malloc);\n var len4 = WASM_VECTOR_LEN;\n var ptr5 = passArrayF64ToWasm0(c_max, wasm.__wbindgen_malloc);\n var len5 = WASM_VECTOR_LEN;\n var ptr6 = passArrayF64ToWasm0(e_min, wasm.__wbindgen_malloc);\n var len6 = WASM_VECTOR_LEN;\n var ptr7 = passArrayF64ToWasm0(e_max, wasm.__wbindgen_malloc);\n var len7 = WASM_VECTOR_LEN;\n var ptr8 = passArrayF64ToWasm0(w_min, wasm.__wbindgen_malloc);\n var len8 = WASM_VECTOR_LEN;\n var ptr9 = passArrayF64ToWasm0(w_max, wasm.__wbindgen_malloc);\n var len9 = WASM_VECTOR_LEN;\n var ptr10 = passArrayF64ToWasm0(d_min, wasm.__wbindgen_malloc);\n var len10 = WASM_VECTOR_LEN;\n var ptr11 = passArrayF64ToWasm0(d_max, wasm.__wbindgen_malloc);\n var len11 = WASM_VECTOR_LEN;\n var ptr12 = passArrayF64ToWasm0(offset, wasm.__wbindgen_malloc);\n var len12 = WASM_VECTOR_LEN;\n var ptr13 = passArray32ToWasm0(biome, wasm.__wbindgen_malloc);\n var len13 = WASM_VECTOR_LEN;\n var ret = wasm.biome_parameters(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ptr5, len5, ptr6, len6, ptr7, len7, ptr8, len8, ptr9, len9, ptr10, len10, ptr11, len11, ptr12, len12, ptr13, len13);\n return ParameterList.__wrap(ret);\n}\n\n/**\n* @param {number} first_octave\n* @param {Float64Array} amplitudes\n* @returns {NoiseParameters}\n*/\nexport function noise_parameters(first_octave, amplitudes) {\n var ptr0 = passArrayF64ToWasm0(amplitudes, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.noise_parameters(first_octave, ptr0, len0);\n return NoiseParameters.__wrap(ret);\n}\n\n/**\n* @param {BigInt} seed\n* @param {number} t_first\n* @param {Float64Array} t_amplitudes\n* @param {number} h_first\n* @param {Float64Array} h_amplitudes\n* @param {number} c_first\n* @param {Float64Array} c_amplitudes\n* @param {number} e_first\n* @param {Float64Array} e_amplitudes\n* @param {number} w_first\n* @param {Float64Array} w_amplitudes\n* @param {number} s_first\n* @param {Float64Array} s_amplitudes\n* @returns {Sampler}\n*/\nexport function climate_sampler(seed, t_first, t_amplitudes, h_first, h_amplitudes, c_first, c_amplitudes, e_first, e_amplitudes, w_first, w_amplitudes, s_first, s_amplitudes) {\n int64CvtShim[0] = seed;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n var ptr1 = passArrayF64ToWasm0(t_amplitudes, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passArrayF64ToWasm0(h_amplitudes, wasm.__wbindgen_malloc);\n var len2 = WASM_VECTOR_LEN;\n var ptr3 = passArrayF64ToWasm0(c_amplitudes, wasm.__wbindgen_malloc);\n var len3 = WASM_VECTOR_LEN;\n var ptr4 = passArrayF64ToWasm0(e_amplitudes, wasm.__wbindgen_malloc);\n var len4 = WASM_VECTOR_LEN;\n var ptr5 = passArrayF64ToWasm0(w_amplitudes, wasm.__wbindgen_malloc);\n var len5 = WASM_VECTOR_LEN;\n var ptr6 = passArrayF64ToWasm0(s_amplitudes, wasm.__wbindgen_malloc);\n var len6 = WASM_VECTOR_LEN;\n var ret = wasm.climate_sampler(low0, high0, t_first, ptr1, len1, h_first, ptr2, len2, c_first, ptr3, len3, e_first, ptr4, len4, w_first, ptr5, len5, s_first, ptr6, len6);\n return Sampler.__wrap(ret);\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n/**\n* @param {ParameterList} parameters\n* @param {Float64Array} target\n* @returns {number}\n*/\nexport function find_biome(parameters, target) {\n _assertClass(parameters, ParameterList);\n var ptr0 = passArrayF64ToWasm0(target, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.find_biome(parameters.ptr, ptr0, len0);\n return ret;\n}\n\nfunction getArrayI32FromWasm0(ptr, len) {\n return getInt32Memory0().subarray(ptr / 4, ptr / 4 + len);\n}\n/**\n* @param {ParameterList} parameters\n* @param {Sampler} sampler\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Int32Array}\n*/\nexport function multi_noise(parameters, sampler, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(parameters, ParameterList);\n _assertClass(sampler, Sampler);\n wasm.multi_noise(retptr, parameters.ptr, sampler.ptr, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayI32FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {Sampler} sampler\n* @param {number} x_from\n* @param {number} x_to\n* @param {number} x_step\n* @param {number} y_from\n* @param {number} y_to\n* @param {number} y_step\n* @param {number} z_from\n* @param {number} z_to\n* @param {number} z_step\n* @returns {Float64Array}\n*/\nexport function climate_noise(sampler, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(sampler, Sampler);\n wasm.climate_noise(retptr, sampler.ptr, x_from, x_to, x_step, y_from, y_to, y_step, z_from, z_to, z_step);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayF64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} x\n* @returns {Test}\n*/\nexport function create_test(x) {\n var ret = wasm.create_test(x);\n return Test.__wrap(ret);\n}\n\n/**\n* @param {Test} test\n* @returns {number}\n*/\nexport function calc_test(test) {\n _assertClass(test, Test);\n var ret = wasm.calc_test(test.ptr);\n return ret;\n}\n\n/**\n*/\nexport class ImprovedNoise {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_improvednoise_free(ptr);\n }\n}\n/**\n*/\nexport class NoiseOctaves {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_noiseoctaves_free(ptr);\n }\n}\n/**\n*/\nexport class NoiseParameters {\n\n static __wrap(ptr) {\n const obj = Object.create(NoiseParameters.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_noiseparameters_free(ptr);\n }\n}\n/**\n*/\nexport class NormalNoise {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_normalnoise_free(ptr);\n }\n}\n/**\n*/\nexport class ParameterList {\n\n static __wrap(ptr) {\n const obj = Object.create(ParameterList.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_parameterlist_free(ptr);\n }\n}\n/**\n*/\nexport class PerlinNoise {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_perlinnoise_free(ptr);\n }\n}\n/**\n*/\nexport class Sampler {\n\n static __wrap(ptr) {\n const obj = Object.create(Sampler.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_sampler_free(ptr);\n }\n}\n/**\n*/\nexport class Test {\n\n static __wrap(ptr) {\n const obj = Object.create(Test.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_test_free(ptr);\n }\n}\n\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nasync function init(input) {\n if (typeof input === 'undefined') {\n input = new URL('deepslate_rs_bg.wasm', import.meta.url);\n }\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n\n\n const { instance, module } = await load(await input, imports);\n\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport default init;\n\n","export default \"__VITE_ASSET__4990c219__\"","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCollections = void 0;\r\nfunction initCollections(collections) {\r\n collections.register('advancement_trigger', [\r\n 'minecraft:bee_nest_destroyed',\r\n 'minecraft:bred_animals',\r\n 'minecraft:brewed_potion',\r\n 'minecraft:changed_dimension',\r\n 'minecraft:channeled_lightning',\r\n 'minecraft:construct_beacon',\r\n 'minecraft:consume_item',\r\n 'minecraft:cured_zombie_villager',\r\n 'minecraft:effects_changed',\r\n 'minecraft:enchanted_item',\r\n 'minecraft:enter_block',\r\n 'minecraft:entity_hurt_player',\r\n 'minecraft:entity_killed_player',\r\n 'minecraft:filled_bucket',\r\n 'minecraft:fishing_rod_hooked',\r\n 'minecraft:hero_of_the_village',\r\n 'minecraft:impossible',\r\n 'minecraft:inventory_changed',\r\n 'minecraft:item_durability_changed',\r\n 'minecraft:killed_by_crossbow',\r\n 'minecraft:levitation',\r\n 'minecraft:location',\r\n 'minecraft:nether_travel',\r\n 'minecraft:placed_block',\r\n 'minecraft:player_hurt_entity',\r\n 'minecraft:player_killed_entity',\r\n 'minecraft:recipe_unlocked',\r\n 'minecraft:shot_crossbow',\r\n 'minecraft:safely_harvest_honey',\r\n 'minecraft:slept_in_bed',\r\n 'minecraft:slide_down_block',\r\n 'minecraft:summoned_entity',\r\n 'minecraft:tame_animal',\r\n 'minecraft:tick',\r\n 'minecraft:used_ender_eye',\r\n 'minecraft:used_totem',\r\n 'minecraft:villager_trade',\r\n 'minecraft:voluntary_exile'\r\n ]);\r\n collections.register('loot_pool_entry_type', [\r\n 'minecraft:empty',\r\n 'minecraft:item',\r\n 'minecraft:tag',\r\n 'minecraft:loot_table',\r\n 'minecraft:alternatives',\r\n 'minecraft:sequence',\r\n 'minecraft:group',\r\n 'minecraft:dynamic'\r\n ]);\r\n collections.register('loot_condition_type', [\r\n 'minecraft:alternative',\r\n 'minecraft:inverted',\r\n 'minecraft:reference',\r\n 'minecraft:entity_properties',\r\n 'minecraft:block_state_property',\r\n 'minecraft:match_tool',\r\n 'minecraft:damage_source_properties',\r\n 'minecraft:location_check',\r\n 'minecraft:weather_check',\r\n 'minecraft:time_check',\r\n 'minecraft:entity_scores',\r\n 'minecraft:random_chance',\r\n 'minecraft:random_chance_with_looting',\r\n 'minecraft:table_bonus',\r\n 'minecraft:killed_by_player',\r\n 'minecraft:survives_explosion'\r\n ]);\r\n collections.register('loot_function_type', [\r\n 'minecraft:set_count',\r\n 'minecraft:set_damage',\r\n 'minecraft:set_name',\r\n 'minecraft:set_lore',\r\n 'minecraft:set_nbt',\r\n 'minecraft:set_attributes',\r\n 'minecraft:set_contents',\r\n 'minecraft:enchant_randomly',\r\n 'minecraft:enchant_with_levels',\r\n 'minecraft:looting_enchant',\r\n 'minecraft:limit_count',\r\n 'minecraft:furnace_smelt',\r\n 'minecraft:explosion_decay',\r\n 'minecraft:fill_player_head',\r\n 'minecraft:copy_name',\r\n 'minecraft:copy_nbt',\r\n 'minecraft:copy_state',\r\n 'minecraft:apply_bonus',\r\n 'minecraft:exploration_map',\r\n 'minecraft:set_stew_effect'\r\n ]);\r\n collections.register('attribute', [\r\n 'generic.maxHealth',\r\n 'generic.followRange',\r\n 'generic.knockbackResistance',\r\n 'generic.movementSpeed',\r\n 'generic.attackDamage',\r\n 'generic.armor',\r\n 'generic.armorToughness',\r\n 'generic.attackSpeed',\r\n 'generic.luck',\r\n 'horse.jumpStrength',\r\n 'generic.attackKnockback',\r\n 'generic.flyingSpeed',\r\n 'zombie.spawnReinforcements'\r\n ]);\r\n collections.register('structure_feature', [\r\n 'pillager_outpost',\r\n 'mineshaft',\r\n 'mansion',\r\n 'jungle_pyramid',\r\n 'desert_pyramid',\r\n 'igloo',\r\n 'shipwreck',\r\n 'swamp_hut',\r\n 'stronghold',\r\n 'monument',\r\n 'ocean_ruin',\r\n 'fortress',\r\n 'endcity',\r\n 'buried_treasure',\r\n 'village'\r\n ]);\r\n collections.register('dimension', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('keybind', [\r\n 'key.advancements',\r\n 'key.attack',\r\n 'key.back',\r\n 'key.chat',\r\n 'key.command',\r\n 'key.drop',\r\n 'key.forward',\r\n 'key.fullscreen',\r\n 'key.hotbar.1',\r\n 'key.hotbar.2',\r\n 'key.hotbar.3',\r\n 'key.hotbar.4',\r\n 'key.hotbar.5',\r\n 'key.hotbar.6',\r\n 'key.hotbar.7',\r\n 'key.hotbar.8',\r\n 'key.hotbar.9',\r\n 'key.inventory',\r\n 'key.jump',\r\n 'key.left',\r\n 'key.loadToolbarActivator',\r\n 'key.pickItem',\r\n 'key.playerlist',\r\n 'key.right',\r\n 'key.saveToolbarActivator',\r\n 'key.screenshot',\r\n 'key.smoothCamera',\r\n 'key.sneak',\r\n 'key.spectatorOutlines',\r\n 'key.sprint',\r\n 'key.swapOffhand',\r\n 'key.togglePerspective',\r\n 'key.use'\r\n ]);\r\n collections.register('slot', [\r\n 'mainhand',\r\n 'offhand',\r\n 'head',\r\n 'chest',\r\n 'legs',\r\n 'feet'\r\n ]);\r\n collections.register('gamemode', [\r\n 'survival',\r\n 'creative',\r\n 'adventure',\r\n 'spectator'\r\n ]);\r\n collections.register('entity_source', [\r\n 'this',\r\n 'direct_killer',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('copy_source', [\r\n 'block_entity',\r\n 'this',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('loot_table_apply_bonus_formula', [\r\n 'minecraft:uniform_bonus_count',\r\n 'minecraft:binomial_with_bonus_count',\r\n 'minecraft:ore_drops'\r\n ]);\r\n collections.register('map_decoration', [\r\n 'mansion',\r\n 'monument',\r\n 'player',\r\n 'frame',\r\n 'red_marker',\r\n 'blue_marker',\r\n 'target_x',\r\n 'target_point',\r\n 'player_off_map',\r\n 'player_off_limits',\r\n 'red_x',\r\n 'banner_white',\r\n 'banner_orange',\r\n 'banner_magenta',\r\n 'banner_light_blue',\r\n 'banner_yellow',\r\n 'banner_lime',\r\n 'banner_pink',\r\n 'banner_gray',\r\n 'banner_light_gray',\r\n 'banner_cyan',\r\n 'banner_purple',\r\n 'banner_blue',\r\n 'banner_brown',\r\n 'banner_green',\r\n 'banner_red',\r\n 'banner_black'\r\n ]);\r\n collections.register('recipe_group', [\r\n 'bed',\r\n 'light_gray_dye',\r\n 'iron_ingot',\r\n 'wooden_stairs',\r\n 'black_dye',\r\n 'stained_terracotta',\r\n 'dyed_bed',\r\n 'magenta_dye',\r\n 'bark',\r\n 'rabbit_stew',\r\n 'light_blue_dye',\r\n 'wooden_fence_gate',\r\n 'planks',\r\n 'stained_glass',\r\n 'wooden_door',\r\n 'stained_glass_pane',\r\n 'wooden_fence',\r\n 'sticks',\r\n 'concrete_powder',\r\n 'wooden_pressure_plate',\r\n 'boat',\r\n 'brown_dye',\r\n 'yellow_dye',\r\n 'bonemeal',\r\n 'red_dye',\r\n 'wooden_trapdoor',\r\n 'wooden_button',\r\n 'gold_ingot',\r\n 'pink_dye',\r\n 'wooden_slab',\r\n 'orange_dye',\r\n 'carpet',\r\n 'sign',\r\n 'wool',\r\n 'sugar',\r\n 'blue_dye',\r\n 'white_dye',\r\n 'banner',\r\n 'netherite_ingot'\r\n ]);\r\n collections.register('loot_context_type', [\r\n 'minecraft:empty',\r\n 'minecraft:chest',\r\n 'minecraft:command',\r\n 'minecraft:selector',\r\n 'minecraft:fishing',\r\n 'minecraft:entity',\r\n 'minecraft:gift',\r\n 'minecraft:barter',\r\n 'minecraft:advancement_reward',\r\n 'minecraft:advancement_entity',\r\n 'minecraft:generic',\r\n 'minecraft:block'\r\n ]);\r\n}\r\nexports.initCollections = initCollections;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCommonSchemas = exports.Range = exports.ConditionCases = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initCommonSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('block_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'Name' }] } } }))\r\n }, { context: 'block_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('fluid_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'fluid' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode()))\r\n }, { context: 'fluid_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:water',\r\n Properties: {\r\n 'level': '0'\r\n }\r\n })\r\n }));\r\n schemas.register('block_pos', core_1.Mod(core_1.ListNode(core_1.NumberNode({ integer: true })), {\r\n default: () => [0, 0, 0]\r\n }));\r\n exports.Range = (config) => core_1.ChoiceNode([\r\n ...((config === null || config === void 0 ? void 0 : config.forceRange) ? [] : [{\r\n type: 'number',\r\n node: core_1.NumberNode(config),\r\n change: (v) => { var _a, _b, _c; return v === undefined ? 0 : (_c = (_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : v.n) !== null && _c !== void 0 ? _c : 0; }\r\n }]),\r\n {\r\n type: 'object',\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n min: (config === null || config === void 0 ? void 0 : config.bounds) ? core_1.NumberNode(config) : core_1.Opt(core_1.NumberNode(config)),\r\n max: (config === null || config === void 0 ? void 0 : config.bounds) ? core_1.NumberNode(config) : core_1.Opt(core_1.NumberNode(config))\r\n }, { context: 'range' }),\r\n change: (v) => ({\r\n min: typeof v === 'number' ? v : v === undefined ? 1 : v.n,\r\n max: typeof v === 'number' ? v : v === undefined ? 1 : v.n\r\n })\r\n },\r\n ...((config === null || config === void 0 ? void 0 : config.allowBinomial) ? [{\r\n type: 'binomial',\r\n node: core_1.ObjectNode({\r\n type: StringNode({ enum: ['minecraft:binomial'] }),\r\n n: core_1.NumberNode({ integer: true, min: 0 }),\r\n p: core_1.NumberNode({ min: 0, max: 1 })\r\n }, { context: 'range' }),\r\n match: (v) => v !== undefined && v.type === 'minecraft:binomial',\r\n change: (v) => {\r\n var _a, _b;\r\n return ({\r\n type: 'minecraft:binomial',\r\n n: typeof v === 'number' ? v : v === undefined ? 1 : ((_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : 1),\r\n p: 0.5\r\n });\r\n }\r\n }] : [])\r\n ], { choiceContext: 'range' });\r\n exports.ConditionCases = {\r\n 'minecraft:alternative': {\r\n terms: core_1.ListNode(Reference('condition'))\r\n },\r\n 'minecraft:block_state_property': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })\r\n },\r\n 'minecraft:damage_source_properties': {\r\n predicate: Reference('damage_source_predicate')\r\n },\r\n 'minecraft:entity_properties': {\r\n entity: StringNode({ enum: 'entity_source' }),\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: StringNode({ enum: 'entity_source' }),\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), exports.Range({ forceRange: true, bounds: true }))\r\n },\r\n 'minecraft:inverted': {\r\n term: Reference('condition')\r\n },\r\n 'minecraft:killed_by_player': {\r\n inverse: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:location_check': {\r\n offsetX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetY: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n predicate: Reference('location_predicate')\r\n },\r\n 'minecraft:match_tool': {\r\n predicate: Reference('item_predicate')\r\n },\r\n 'minecraft:random_chance': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_chance_with_looting': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n looting_multiplier: core_1.NumberNode()\r\n },\r\n 'minecraft:reference': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$predicate' } })\r\n },\r\n 'minecraft:table_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n chances: core_1.ListNode(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:time_check': {\r\n value: exports.Range(),\r\n period: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:weather_check': {\r\n raining: core_1.Opt(core_1.BooleanNode()),\r\n thundering: core_1.Opt(core_1.BooleanNode())\r\n }\r\n };\r\n}\r\nexports.initCommonSchemas = initCommonSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPredicatesSchemas = exports.LocationFields = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initPredicatesSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const StateChoice = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode(),\r\n change: v => (typeof v === 'boolean' || typeof v === 'number') ? v.toString() : ''\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => (typeof v === 'string') ? parseInt(v) : 0\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }),\r\n change: v => (typeof v === 'number') ? ({ min: v, max: v }) : ({})\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => v === 'true' || v === 1\r\n }\r\n ]);\r\n schemas.register('item_predicate', core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } })),\r\n count: core_1.Opt(Common_1.Range()),\r\n durability: core_1.Opt(Common_1.Range()),\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } })),\r\n enchantments: core_1.Opt(core_1.ListNode(Reference('enchantment_predicate')))\r\n }, { context: 'item' }));\r\n schemas.register('enchantment_predicate', core_1.ObjectNode({\r\n enchantment: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })),\r\n levels: core_1.Opt(Common_1.Range())\r\n }, { context: 'enchantment' }));\r\n schemas.register('block_predicate', core_1.ObjectNode({\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block', id: ['pop', { push: 'block' }] } } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice, { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n }, { context: 'block' }));\r\n schemas.register('fluid_predicate', core_1.ObjectNode({\r\n fluid: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'fluid' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/fluid' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice))\r\n }, { context: 'fluid' }));\r\n exports.LocationFields = {\r\n position: core_1.Opt(core_1.ObjectNode({\r\n x: core_1.Opt(Common_1.Range()),\r\n y: core_1.Opt(Common_1.Range()),\r\n z: core_1.Opt(Common_1.Range())\r\n })),\r\n biome: core_1.Opt(StringNode({ enum: 'biome' })),\r\n feature: core_1.Opt(StringNode({ enum: 'structure_feature' })),\r\n dimension: core_1.Opt(StringNode({ enum: 'dimension' })),\r\n light: core_1.Opt(core_1.ObjectNode({\r\n light: core_1.Opt(Common_1.Range({ integer: true, min: 0, max: 15 }))\r\n })),\r\n block: core_1.Opt(Reference('block_predicate')),\r\n fluid: core_1.Opt(Reference('fluid_predicate'))\r\n };\r\n schemas.register('location_predicate', core_1.ObjectNode(exports.LocationFields, { context: 'location' }));\r\n schemas.register('statistic_predicate', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'stat_type' } }),\r\n stat: StringNode(),\r\n value: Common_1.Range(),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:mined': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:crafted': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:used': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:broken': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:picked_up': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:dropped': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:killed': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:killed_by': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:custom': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'custom_stat' } })\r\n }\r\n }\r\n }));\r\n schemas.register('player_predicate', core_1.ObjectNode({\r\n gamemode: core_1.Opt(StringNode({ enum: 'gamemode' })),\r\n level: core_1.Opt(Common_1.Range()),\r\n advancements: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$advancement' } }), core_1.ChoiceNode([\r\n { type: 'boolean', node: core_1.BooleanNode(), change: _ => true },\r\n {\r\n type: 'object', node: core_1.MapNode(StringNode(), core_1.BooleanNode())\r\n }\r\n ]))),\r\n recipes: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }), core_1.BooleanNode())),\r\n stats: core_1.Opt(core_1.ListNode(Reference('statistic_predicate')))\r\n }, { context: 'player' }));\r\n schemas.register('status_effect_predicate', core_1.ObjectNode({\r\n amplifier: core_1.Opt(Common_1.Range()),\r\n duration: core_1.Opt(Common_1.Range()),\r\n ambient: core_1.Opt(core_1.BooleanNode()),\r\n visible: core_1.Opt(core_1.BooleanNode())\r\n }, { context: 'status_effect' }));\r\n schemas.register('distance_predicate', core_1.ObjectNode({\r\n x: core_1.Opt(Common_1.Range()),\r\n y: core_1.Opt(Common_1.Range()),\r\n z: core_1.Opt(Common_1.Range()),\r\n absolute: core_1.Opt(Common_1.Range()),\r\n horizontal: core_1.Opt(Common_1.Range())\r\n }, { context: 'distance' }));\r\n schemas.register('entity_predicate', core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'entity_type', allowTag: true } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:entity', id: ['pop', { push: 'type' }] } } })),\r\n team: core_1.Opt(StringNode({ validator: 'team' })),\r\n location: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n flags: core_1.Opt(core_1.ObjectNode({\r\n is_on_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_sneaking: core_1.Opt(core_1.BooleanNode()),\r\n is_sprinting: core_1.Opt(core_1.BooleanNode()),\r\n is_swimming: core_1.Opt(core_1.BooleanNode()),\r\n is_baby: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n equipment: core_1.Opt(core_1.MapNode(StringNode({ enum: 'slot' }), Reference('item_predicate'))),\r\n player: core_1.Opt(Reference('player_predicate')),\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n }, { context: 'entity' }));\r\n schemas.register('damage_source_predicate', core_1.ObjectNode({\r\n is_explosion: core_1.Opt(core_1.BooleanNode()),\r\n is_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_magic: core_1.Opt(core_1.BooleanNode()),\r\n is_projectile: core_1.Opt(core_1.BooleanNode()),\r\n is_lightning: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_armor: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_invulnerability: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_magic: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n direct_entity: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'damage_source' }));\r\n schemas.register('damage_predicate', core_1.ObjectNode({\r\n dealt: core_1.Opt(Common_1.Range()),\r\n taken: core_1.Opt(Common_1.Range()),\r\n blocked: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n type: core_1.Opt(Reference('damage_source_predicate'))\r\n }, { context: 'damage' }));\r\n}\r\nexports.initPredicatesSchemas = initPredicatesSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initAdvancementSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nfunction initAdvancementSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('advancement', core_1.Mod(core_1.ObjectNode({\r\n display: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n icon: core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } }))\r\n }),\r\n title: Reference('text_component'),\r\n description: Reference('text_component'),\r\n background: core_1.Opt(StringNode()),\r\n frame: core_1.Opt(StringNode({ enum: ['task', 'challenge', 'goal'] })),\r\n show_toast: core_1.Opt(core_1.BooleanNode()),\r\n announce_to_chat: core_1.Opt(core_1.BooleanNode()),\r\n hidden: core_1.Opt(core_1.BooleanNode())\r\n }), {\r\n default: () => ({\r\n icon: {\r\n item: 'minecraft:stone'\r\n },\r\n title: '',\r\n description: ''\r\n })\r\n })),\r\n parent: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$advancement' } })),\r\n criteria: core_1.MapNode(StringNode(), Reference('advancement_criteria')),\r\n requirements: core_1.Opt(core_1.ListNode(core_1.ListNode(StringNode() // TODO: add validation\r\n ))),\r\n rewards: core_1.Opt(core_1.ObjectNode({\r\n function: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$function' } })),\r\n loot: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$loot_table' } }))),\r\n recipes: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }))),\r\n experience: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n })),\r\n }, { context: 'advancement' }), {\r\n default: () => ({\r\n criteria: {\r\n requirement: {\r\n trigger: 'minecraft:location'\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('advancement_criteria', core_1.ObjectNode({\r\n trigger: StringNode({ validator: 'resource', params: { pool: collections.get('advancement_trigger') } }),\r\n conditions: core_1.Opt(core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'trigger' }],\r\n [core_1.Case]: {\r\n 'minecraft:bee_nest_destroyed': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n num_bees_inside: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:bred_animals': {\r\n parent: core_1.Opt(Reference('entity_predicate')),\r\n partner: core_1.Opt(Reference('entity_predicate')),\r\n child: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:brewed_potion': {\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } }))\r\n },\r\n 'minecraft:changed_dimension': {\r\n from: core_1.Opt(StringNode({ enum: 'dimension' })),\r\n to: core_1.Opt(StringNode({ enum: 'dimension' }))\r\n },\r\n 'minecraft:channeled_lightning': {\r\n victims: core_1.Opt(core_1.ListNode(core_1.Opt(Reference('entity_predicate'))))\r\n },\r\n 'minecraft:construct_beacon': {\r\n level: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:consume_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:cured_zombie_villager': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n zombie: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:effects_changed': {\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n },\r\n 'minecraft:enter_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n },\r\n 'minecraft:enchanted_item': {\r\n levels: core_1.Opt(Common_1.Range()),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:entity_hurt_player': {\r\n damage: core_1.Opt(Reference('damage_predicate'))\r\n },\r\n 'minecraft:entity_killed_player': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:filled_bucket': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:fishing_rod_hooked': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:hero_of_the_village': Predicates_1.LocationFields,\r\n 'minecraft:inventory_changed': {\r\n slots: core_1.Opt(core_1.ObjectNode({\r\n empty: core_1.Opt(Common_1.Range()),\r\n occupied: core_1.Opt(Common_1.Range()),\r\n full: core_1.Opt(Common_1.Range())\r\n })),\r\n items: core_1.Opt(core_1.ListNode(Reference('item_predicate')))\r\n },\r\n 'minecraft:item_durability_changed': {\r\n delta: core_1.Opt(Common_1.Range()),\r\n durability: core_1.Opt(Common_1.Range()),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:killed_by_crossbow': {\r\n unique_entity_types: core_1.Opt(Common_1.Range()),\r\n victims: core_1.Opt(core_1.ListNode(core_1.Opt(Reference('entity_predicate'))))\r\n },\r\n 'minecraft:levitation': {\r\n distance: core_1.Opt(Common_1.Range()),\r\n duration: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:location': Predicates_1.LocationFields,\r\n 'minecraft:nether_travel': {\r\n distance: core_1.Opt(Common_1.Range()),\r\n entered: core_1.Opt(Reference('location_predicate')),\r\n exited: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:placed_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })),\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:player_hurt_entity': {\r\n damage: core_1.Opt(Reference('damage_predicate')),\r\n entity: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:player_killed_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:recipe_unlocked': {\r\n recipe: StringNode({ validator: 'resource', params: { pool: '$recipe' } })\r\n },\r\n 'minecraft:safely_harvest_honey': {\r\n block: core_1.Opt(core_1.ObjectNode({\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } }))\r\n })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:slept_in_bed': Predicates_1.LocationFields,\r\n 'minecraft:slide_down_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:shot_crossbow': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:summoned_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:tame_animal': {\r\n entity: core_1.Opt(Reference('entity_predicate'))\r\n },\r\n 'minecraft:used_ender_eye': {\r\n distance: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:used_totem': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:villager_trade': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:voluntary_exile': Predicates_1.LocationFields\r\n }\r\n }, { context: 'criterion' }))\r\n }, { category: 'predicate', context: 'criterion' }));\r\n}\r\nexports.initAdvancementSchemas = initAdvancementSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initConditionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initConditionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('predicate', core_1.ObjectOrList(Reference('condition'), { choiceContext: 'condition' }));\r\n schemas.register('condition', core_1.Mod(core_1.ObjectNode({\r\n condition: StringNode({ validator: 'resource', params: { pool: 'loot_condition_type' } }),\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:entity_properties',\r\n entity: 'this'\r\n })\r\n }));\r\n}\r\nexports.initConditionSchemas = initConditionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LootFunctions = exports.LootConditions = exports.LootCopySources = exports.LootEntitySources = exports.LootTableTypes = void 0;\r\nexports.LootTableTypes = new Map([\r\n ['minecraft:advancement_entity', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:advancement_reward', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:barter', { requires: [8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:block', { requires: [1 /* BlockState */, 7 /* Origin */, 9 /* Tool */], allows: [0 /* BlockEntity */, 4 /* ExplosionRadius */, 8 /* ThisEntity */] }],\r\n ['minecraft:chest', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:command', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:empty', { requires: [], allows: [] }],\r\n ['minecraft:entity', { requires: [2 /* DamageSource */, 7 /* Origin */, 8 /* ThisEntity */], allows: [3 /* DirectKillerEntity */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */] }],\r\n ['minecraft:fishing', { requires: [7 /* Origin */, 9 /* Tool */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:generic', { requires: [2 /* DamageSource */, 0 /* BlockEntity */, 1 /* BlockState */, 3 /* DirectKillerEntity */, 4 /* ExplosionRadius */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */, 7 /* Origin */, 8 /* ThisEntity */, 9 /* Tool */], allows: [] }],\r\n ['minecraft:gift', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:selector', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }]\r\n]);\r\n/**\r\n * A map from loot entity sources to an array of their required context.\r\n */\r\nexports.LootEntitySources = new Map([\r\n ['direct_killer', [3 /* DirectKillerEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot copy sources to an array of their required context.\r\n */\r\nexports.LootCopySources = new Map([\r\n ['block_entity', [0 /* BlockEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot condition IDs to an array of their required context.\r\n */\r\nexports.LootConditions = new Map([\r\n ['minecraft:alternative', []],\r\n ['minecraft:block_state_property', [1 /* BlockState */]],\r\n ['minecraft:damage_source_properties', [2 /* DamageSource */]],\r\n ['minecraft:entity_properties', [7 /* Origin */]],\r\n ['minecraft:entity_scores', []],\r\n ['minecraft:inverted', []],\r\n ['minecraft:killed_by_player', [6 /* LastDamagePlayer */]],\r\n ['minecraft:location_check', []],\r\n ['minecraft:match_tool', [9 /* Tool */]],\r\n ['minecraft:random_chance', []],\r\n ['minecraft:random_chance_with_looting', [5 /* KillerEntity */]],\r\n ['minecraft:reference', []],\r\n ['minecraft:survives_explosion', [4 /* ExplosionRadius */]],\r\n ['minecraft:table_bonus', [9 /* Tool */]],\r\n ['minecraft:time_check', []],\r\n ['minecraft:weather_check', []]\r\n]);\r\n/**\r\n * A map from loot function IDs to an array of their required context.\r\n */\r\nexports.LootFunctions = new Map([\r\n ['minecraft:apply_bonus', [9 /* Tool */]],\r\n ['minecraft:copy_name', []],\r\n ['minecraft:copy_nbt', []],\r\n ['minecraft:copy_state', [1 /* BlockState */]],\r\n ['minecraft:enchant_randomly', []],\r\n ['minecraft:enchant_with_levels', []],\r\n ['minecraft:exploration_map', [7 /* Origin */]],\r\n ['minecraft:explosion_decay', []],\r\n ['minecraft:fill_player_head', []],\r\n ['minecraft:furnace_smelt', []],\r\n ['minecraft:limit_count', []],\r\n ['minecraft:looting_enchant', [5 /* KillerEntity */]],\r\n ['minecraft:set_attributes', []],\r\n ['minecraft:set_contents', []],\r\n ['minecraft:set_count', []],\r\n ['minecraft:set_damage', []],\r\n ['minecraft:set_loot_table', []],\r\n ['minecraft:set_lore', []],\r\n ['minecraft:set_name', []],\r\n ['minecraft:set_nbt', []],\r\n ['minecraft:set_stew_effect', []]\r\n]);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initLootTableSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst LootContext_1 = require(\"../LootContext\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initLootTableSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('loot_condition')))\r\n };\r\n const functionsAndConditions = {\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function'))),\r\n ...conditions\r\n };\r\n function compileSwitchNode(contextMap, collectionID, getNode) {\r\n const cases = [];\r\n const getAvailableOptions = (providedContext) => collections\r\n .get(collectionID)\r\n .filter(t => {\r\n var _a;\r\n const requiredContext = (_a = contextMap.get(t)) !== null && _a !== void 0 ? _a : [];\r\n return requiredContext.every(c => providedContext.includes(c));\r\n });\r\n for (const [tableType, { allows, requires }] of LootContext_1.LootTableTypes) {\r\n const providedContext = [...allows, ...requires];\r\n cases.push({\r\n match: path => path.getModel().get(new core_1.Path(['type'])) === tableType,\r\n node: getNode(getAvailableOptions(providedContext))\r\n });\r\n }\r\n cases.push({ match: _ => true, node: getNode(collectionID) });\r\n return core_1.SwitchNode(cases);\r\n }\r\n const conditionSwtichNode = compileSwitchNode(LootContext_1.LootConditions, 'loot_condition_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_condition_type` } }));\r\n const functionSwtichNode = compileSwitchNode(LootContext_1.LootFunctions, 'loot_function_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_function_type` } }));\r\n const entitySourceSwtichNode = compileSwitchNode(LootContext_1.LootEntitySources, 'entity_source', type => StringNode({ enum: type }));\r\n const copySourceSwtichNode = compileSwitchNode(LootContext_1.LootCopySources, 'copy_source', type => StringNode({ enum: type }));\r\n schemas.register('loot_table', core_1.Mod(core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: \"resource\", params: { pool: collections.get('loot_context_type') } })),\r\n pools: core_1.Opt(core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n rolls: Common_1.Range({ allowBinomial: true, integer: true }),\r\n bonus_rolls: core_1.Opt(Common_1.Range({ integer: true })),\r\n entries: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n }, { category: 'pool', context: 'loot_pool' }), {\r\n default: () => ({\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n })\r\n }))),\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function')))\r\n }, { context: 'loot_table' }), {\r\n default: () => ({\r\n pools: [{\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n }]\r\n })\r\n }));\r\n const weightMod = {\r\n enabled: path => {\r\n var _a;\r\n return ((_a = path.pop().get()) === null || _a === void 0 ? void 0 : _a.length) > 1\r\n && !['minecraft:alternatives', 'minecraft:group', 'minecraft:sequence'].includes(path.push('type').get());\r\n }\r\n };\r\n schemas.register('loot_entry', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'loot_pool_entry_type' } }),\r\n weight: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true, min: 1 }), weightMod)),\r\n quality: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), weightMod)),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alternatives': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:dynamic': {\r\n name: StringNode(),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:group': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:item': {\r\n name: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:sequence': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:tag': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$tag/item' } }),\r\n expand: core_1.Opt(core_1.BooleanNode()),\r\n ...functionsAndConditions\r\n }\r\n }\r\n }, { context: 'loot_entry' }), {\r\n default: () => ({\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('loot_function', core_1.Mod(core_1.ObjectNode({\r\n function: functionSwtichNode,\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: (() => {\r\n const cases = {\r\n 'minecraft:apply_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n formula: StringNode({ validator: 'resource', params: { pool: collections.get('loot_table_apply_bonus_formula') } }),\r\n parameters: core_1.Mod(core_1.ObjectNode({\r\n bonusMultiplier: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:uniform_bonus_count'\r\n }),\r\n extra: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n }),\r\n probability: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n })\r\n }), {\r\n enabled: path => path.push('formula').get() !== 'minecraft:ore_drops'\r\n })\r\n },\r\n 'minecraft:copy_name': {\r\n source: copySourceSwtichNode\r\n },\r\n 'minecraft:copy_nbt': {\r\n source: copySourceSwtichNode,\r\n ops: core_1.ListNode(core_1.ObjectNode({\r\n source: StringNode({ validator: 'nbt_path', params: { category: { getter: 'copy_source', path: ['pop', 'pop', 'pop', { push: 'source' }] } } }),\r\n target: StringNode({ validator: 'nbt_path', params: { category: 'minecraft:item' } }),\r\n op: StringNode({ enum: ['replace', 'append', 'merge'] })\r\n }, { context: 'nbt_operation' }))\r\n },\r\n 'minecraft:copy_state': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.ListNode(StringNode({ validator: 'block_state_key', params: { id: ['pop', 'pop', { push: 'block' }] } }))\r\n },\r\n 'minecraft:enchant_randomly': {\r\n enchantments: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })))\r\n },\r\n 'minecraft:enchant_with_levels': {\r\n levels: Common_1.Range({ allowBinomial: true }),\r\n treasure: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:exploration_map': {\r\n destination: core_1.Opt(StringNode({ enum: 'structure_feature' })),\r\n decoration: core_1.Opt(StringNode({ enum: 'map_decoration' })),\r\n zoom: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n search_radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n skip_existing_chunks: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:fill_player_head': {\r\n entity: entitySourceSwtichNode\r\n },\r\n 'minecraft:limit_count': {\r\n limit: Common_1.Range({ bounds: true })\r\n },\r\n 'minecraft:looting_enchant': {\r\n count: Common_1.Range({ bounds: true }),\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_attributes': {\r\n modifiers: core_1.ListNode(Reference('attribute_modifier'))\r\n },\r\n 'minecraft:set_contents': {\r\n entries: core_1.ListNode(Reference('loot_entry'))\r\n },\r\n 'minecraft:set_count': {\r\n count: Common_1.Range({ allowBinomial: true })\r\n },\r\n 'minecraft:set_damage': {\r\n damage: Common_1.Range({ forceRange: true })\r\n },\r\n 'minecraft:set_loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n seed: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_lore': {\r\n entity: core_1.Opt(entitySourceSwtichNode),\r\n lore: core_1.ListNode(Reference('text_component')),\r\n replace: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_name': {\r\n entity: core_1.Opt(entitySourceSwtichNode),\r\n name: core_1.Opt(Reference('text_component'))\r\n },\r\n 'minecraft:set_nbt': {\r\n tag: StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item' } } })\r\n },\r\n 'minecraft:set_stew_effect': {\r\n effects: core_1.Opt(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }),\r\n duration: Common_1.Range()\r\n })))\r\n }\r\n };\r\n const res = {};\r\n collections.get('loot_function_type').forEach(f => {\r\n res[f] = { ...cases[f], ...conditions };\r\n });\r\n return res;\r\n })()\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => ({\r\n function: 'minecraft:set_count',\r\n count: 1\r\n })\r\n }));\r\n schemas.register('loot_condition', core_1.Mod(core_1.ObjectNode({\r\n condition: conditionSwtichNode,\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: {\r\n ...Common_1.ConditionCases,\r\n 'minecraft:entity_properties': {\r\n entity: entitySourceSwtichNode,\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: entitySourceSwtichNode,\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), Common_1.Range({ bounds: true }))\r\n }\r\n }\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:random_chance',\r\n chance: 0.5\r\n })\r\n }));\r\n schemas.register('attribute_modifier', core_1.Mod(core_1.ObjectNode({\r\n attribute: StringNode({ validator: 'resource', params: { pool: 'attribute' } }),\r\n name: StringNode(),\r\n amount: Common_1.Range({ bounds: true }),\r\n operation: StringNode({ enum: ['addition', 'multiply_base', 'multiply_total'] }),\r\n slot: core_1.StringOrList(StringNode({ enum: 'slot' }))\r\n }, { context: 'attribute_modifier' }), {\r\n default: () => ({\r\n attribute: 'minecraft:generic.max_health',\r\n name: '',\r\n amount: 1,\r\n operation: 'addition',\r\n slot: 'mainhand'\r\n })\r\n }));\r\n}\r\nexports.initLootTableSchemas = initLootTableSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPackMcmetaSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initPackMcmetaSchemas(schemas, _) {\r\n const getSimpleString = (jsonText) => { var _a, _b; return jsonText instanceof Array ? getSimpleString(jsonText[0]) : (_b = (_a = jsonText === null || jsonText === void 0 ? void 0 : jsonText.text) !== null && _a !== void 0 ? _a : jsonText === null || jsonText === void 0 ? void 0 : jsonText.toString()) !== null && _b !== void 0 ? _b : ''; };\r\n schemas.register('pack_mcmeta', core_1.Mod(core_1.ObjectNode({\r\n pack: core_1.Mod(core_1.ObjectNode({\r\n pack_format: core_1.Mod(core_1.NumberNode({ integer: true, min: 5, max: 5 }), { default: () => 5 }),\r\n description: core_1.Reference(schemas, 'text_component')\r\n }), {\r\n default: () => ({\r\n pack_format: 5,\r\n description: ''\r\n })\r\n })\r\n }), {\r\n default: () => ({\r\n pack: {\r\n pack_format: 5,\r\n description: ''\r\n }\r\n })\r\n }));\r\n}\r\nexports.initPackMcmetaSchemas = initPackMcmetaSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initRecipeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initRecipeSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('recipe', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'recipe_serializer' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:crafting_shaped': {\r\n group: core_1.Opt(StringNode({ enum: 'recipe_group', additional: true })),\r\n pattern: core_1.ListNode(StringNode()),\r\n key: core_1.MapNode(StringNode(), // TODO: add validation\r\n Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:crafting_shapeless': {\r\n group: core_1.Opt(StringNode()),\r\n ingredients: core_1.ListNode(Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:smelting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 200 }))\r\n },\r\n 'minecraft:blasting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:smoking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:campfire_cooking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:stonecutting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:smithing': {\r\n group: core_1.Opt(StringNode()),\r\n base: Reference('recipe_ingredient_object'),\r\n addition: Reference('recipe_ingredient_object'),\r\n result: Reference('recipe_result')\r\n }\r\n }\r\n }, { context: 'recipe', disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:crafting_shaped'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('recipe_ingredient_object'),\r\n change: v => v[0]\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('recipe_ingredient_object')),\r\n change: v => [v]\r\n }\r\n ]), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient_object', core_1.Mod(core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_result', core_1.Mod(core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 1 }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n}\r\nexports.initRecipeSchemas = initRecipeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTagsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTagsSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const TagBase = (type) => core_1.Mod(core_1.ObjectNode({\r\n replace: core_1.Opt(core_1.BooleanNode()),\r\n values: core_1.ListNode(core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: type, allowTag: true } }),\r\n change: v => v.id\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: type, allowTag: true, allowUnknown: true } }),\r\n required: core_1.BooleanNode()\r\n }),\r\n change: v => ({ id: v })\r\n }\r\n ])),\r\n }, { context: 'tag' }), {\r\n default: () => ({\r\n values: []\r\n })\r\n });\r\n schemas.register('block_tag', TagBase('block'));\r\n schemas.register('entity_type_tag', TagBase('entity_type'));\r\n schemas.register('fluid_tag', TagBase('fluid'));\r\n schemas.register('function_tag', TagBase('$function'));\r\n schemas.register('item_tag', TagBase('item'));\r\n}\r\nexports.initTagsSchemas = initTagsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTextComponentSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTextComponentSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const getSimpleString = (v) => { var _a; return v instanceof Array ? getSimpleString(v[0]) : (_a = v === null || v === void 0 ? void 0 : v.text) !== null && _a !== void 0 ? _a : (typeof v === 'object' ? '' : v === null || v === void 0 ? void 0 : v.toString()); };\r\n schemas.register('text_component', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('text_component_object'),\r\n change: v => v instanceof Array ? (typeof v[0] === 'object' ? v[0] : { text: getSimpleString(v[0]) }) : typeof v === 'object' ? v : { text: getSimpleString(v) }\r\n },\r\n {\r\n type: 'list',\r\n node: Reference('text_component_list'),\r\n change: v => [v]\r\n },\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: StringNode(),\r\n change: getSimpleString\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => {\r\n const n = parseFloat(getSimpleString(v));\r\n return isFinite(n) ? n : (!!v ? 1 : 0);\r\n }\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => {\r\n const s = getSimpleString(v);\r\n return s === 'true' || s === 'false' ? s === 'true' : !!s;\r\n }\r\n }\r\n ], { context: 'text_component' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n const CommonFields = {\r\n bold: core_1.Opt(core_1.BooleanNode()),\r\n italic: core_1.Opt(core_1.BooleanNode()),\r\n underlined: core_1.Opt(core_1.BooleanNode()),\r\n strikethrough: core_1.Opt(core_1.BooleanNode()),\r\n obfuscated: core_1.Opt(core_1.BooleanNode()),\r\n insertion: core_1.Opt(StringNode()),\r\n clickEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['open_url', 'open_file', 'run_command', 'suggest_command', 'change_page', 'copy_to_clipboard'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'change_page': {\r\n value: StringNode()\r\n },\r\n 'copy_to_clipboard': {\r\n value: StringNode()\r\n },\r\n 'open_file': {\r\n value: StringNode()\r\n },\r\n 'open_url': {\r\n value: StringNode()\r\n },\r\n 'run_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n },\r\n 'suggest_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n }\r\n }\r\n })),\r\n hoverEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['show_text', 'show_item', 'show_entity'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'show_text': {\r\n value: core_1.Opt(Reference('text_component'))\r\n },\r\n 'show_item': {\r\n value: core_1.Opt(StringNode({ validator: 'nbt', params: { module: 'util::InventoryItem' } }))\r\n },\r\n 'show_entity': {\r\n value: core_1.Opt(core_1.ObjectNode({\r\n name: core_1.Opt(StringNode()),\r\n type: core_1.Opt(StringNode()),\r\n id: core_1.Opt(StringNode())\r\n }))\r\n }\r\n }\r\n })),\r\n extra: core_1.Opt(Reference('text_component_list'))\r\n };\r\n schemas.register('text_component_object', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'text',\r\n match: v => typeof v === 'object',\r\n change: v => ({ text: '' }),\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n text: StringNode(),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'translation',\r\n match: v => (v === null || v === void 0 ? void 0 : v.translate) !== undefined,\r\n change: v => ({ translate: '' }),\r\n node: core_1.ObjectNode({\r\n translate: StringNode(),\r\n with: core_1.Opt(Reference('text_component_list')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'score',\r\n match: v => (v === null || v === void 0 ? void 0 : v.score) !== undefined,\r\n change: v => ({ score: {} }),\r\n node: core_1.ObjectNode({\r\n score: core_1.ObjectNode({\r\n name: StringNode({ validator: 'entity', params: { amount: 'single', type: 'entities', isScoreHolder: true } }),\r\n objective: StringNode({ validator: 'objective' }),\r\n value: core_1.Opt(StringNode())\r\n }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'selector',\r\n match: v => (v === null || v === void 0 ? void 0 : v.selector) !== undefined,\r\n change: v => ({ selector: '' }),\r\n node: core_1.ObjectNode({\r\n selector: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'keybind',\r\n match: v => (v === null || v === void 0 ? void 0 : v.keybind) !== undefined,\r\n change: v => ({ keybind: '' }),\r\n node: core_1.ObjectNode({\r\n keybind: StringNode({ enum: 'keybind', additional: true }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'nbt',\r\n match: v => (v === null || v === void 0 ? void 0 : v.nbt) !== undefined,\r\n change: v => ({ nbt: '' }),\r\n node: core_1.ObjectNode({\r\n nbt: StringNode({ validator: 'nbt_path' }),\r\n block: core_1.Opt(StringNode({ validator: 'vector', params: { dimension: 3, isInteger: true } })),\r\n entity: core_1.Opt(StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } })),\r\n storage: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$storage' } })),\r\n interpret: core_1.Opt(core_1.BooleanNode()),\r\n ...CommonFields\r\n })\r\n }\r\n ], { context: 'text_component_object', choiceContext: 'text_component.object' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n schemas.register('text_component_list', core_1.Mod(core_1.ListNode(Reference('text_component')), {\r\n default: () => [{\r\n text: \"\"\r\n }]\r\n }));\r\n}\r\nexports.initTextComponentSchemas = initTextComponentSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSchemas = void 0;\r\nconst Advancement_1 = require(\"./Advancement\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Condition_1 = require(\"./Condition\");\r\nconst LootTable_1 = require(\"./LootTable\");\r\nconst PackMcmeta_1 = require(\"./PackMcmeta\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nconst Recipe_1 = require(\"./Recipe\");\r\nconst Tags_1 = require(\"./Tags\");\r\nconst TextComponent_1 = require(\"./TextComponent\");\r\nfunction initSchemas(schemas, collections) {\r\n // `Common.ts` and `Predicates.ts` are files that have exports. They should be initialized first. \r\n Common_1.initCommonSchemas(schemas, collections);\r\n Predicates_1.initPredicatesSchemas(schemas, collections);\r\n Advancement_1.initAdvancementSchemas(schemas, collections);\r\n Condition_1.initConditionSchemas(schemas, collections);\r\n LootTable_1.initLootTableSchemas(schemas, collections);\r\n PackMcmeta_1.initPackMcmetaSchemas(schemas, collections);\r\n Recipe_1.initRecipeSchemas(schemas, collections);\r\n Tags_1.initTagsSchemas(schemas, collections);\r\n TextComponent_1.initTextComponentSchemas(schemas, collections);\r\n}\r\nexports.initSchemas = initSchemas;\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getSchemas = exports.getCollections = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Collections_1 = require(\"./Collections\");\r\nconst schemas_1 = require(\"./schemas\");\r\nexports.lootContext = __importStar(require(\"./LootContext\"));\r\nfunction getCollections() {\r\n const collections = new core_1.CollectionRegistry();\r\n Collections_1.initCollections(collections);\r\n return collections;\r\n}\r\nexports.getCollections = getCollections;\r\n/**\r\n * @param collections The CollectionRegistry for this version. Note that apart from\r\n * the built-in collections, the client of this module is responsible for futhermore\r\n * adding the vanilla registries to it: the collection IDs shouldn't contain the\r\n * namespace (`minecraft:`) part, while the values within the collections should.\r\n *\r\n * @example\r\n * for (const key in VANILLA_REGISTRIES>) {\r\n * collections.register(\r\n * key.replace(/^minecraft:/, ''),\r\n * Object.keys(VANILLA_REGISTRIES[key].entries)\r\n * )\r\n * }\r\n */\r\nfunction getSchemas(collections) {\r\n const schemas = new core_1.SchemaRegistry();\r\n schemas_1.initSchemas(schemas, collections);\r\n return schemas;\r\n}\r\nexports.getSchemas = getSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCollections = void 0;\r\nfunction initCollections(collections) {\r\n collections.register('advancement_trigger', [\r\n 'minecraft:bee_nest_destroyed',\r\n 'minecraft:bred_animals',\r\n 'minecraft:brewed_potion',\r\n 'minecraft:changed_dimension',\r\n 'minecraft:channeled_lightning',\r\n 'minecraft:construct_beacon',\r\n 'minecraft:consume_item',\r\n 'minecraft:cured_zombie_villager',\r\n 'minecraft:effects_changed',\r\n 'minecraft:enchanted_item',\r\n 'minecraft:enter_block',\r\n 'minecraft:entity_hurt_player',\r\n 'minecraft:entity_killed_player',\r\n 'minecraft:filled_bucket',\r\n 'minecraft:fishing_rod_hooked',\r\n 'minecraft:hero_of_the_village',\r\n 'minecraft:impossible',\r\n 'minecraft:inventory_changed',\r\n 'minecraft:item_durability_changed',\r\n 'minecraft:item_used_on_block',\r\n 'minecraft:killed_by_crossbow',\r\n 'minecraft:levitation',\r\n 'minecraft:location',\r\n 'minecraft:nether_travel',\r\n 'minecraft:placed_block',\r\n 'minecraft:player_generates_container_loot',\r\n 'minecraft:player_hurt_entity',\r\n 'minecraft:player_interacted_with_entity',\r\n 'minecraft:player_killed_entity',\r\n 'minecraft:recipe_unlocked',\r\n 'minecraft:shot_crossbow',\r\n 'minecraft:slept_in_bed',\r\n 'minecraft:slide_down_block',\r\n 'minecraft:summoned_entity',\r\n 'minecraft:tame_animal',\r\n 'minecraft:target_hit',\r\n 'minecraft:tick',\r\n 'minecraft:thrown_item_picked_up_by_entity',\r\n 'minecraft:used_ender_eye',\r\n 'minecraft:used_totem',\r\n 'minecraft:villager_trade',\r\n 'minecraft:voluntary_exile'\r\n ]);\r\n collections.register('dimension', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('dimension_type', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('keybind', [\r\n 'key.advancements',\r\n 'key.attack',\r\n 'key.back',\r\n 'key.chat',\r\n 'key.command',\r\n 'key.drop',\r\n 'key.forward',\r\n 'key.fullscreen',\r\n 'key.hotbar.1',\r\n 'key.hotbar.2',\r\n 'key.hotbar.3',\r\n 'key.hotbar.4',\r\n 'key.hotbar.5',\r\n 'key.hotbar.6',\r\n 'key.hotbar.7',\r\n 'key.hotbar.8',\r\n 'key.hotbar.9',\r\n 'key.inventory',\r\n 'key.jump',\r\n 'key.left',\r\n 'key.loadToolbarActivator',\r\n 'key.pickItem',\r\n 'key.playerlist',\r\n 'key.right',\r\n 'key.saveToolbarActivator',\r\n 'key.screenshot',\r\n 'key.smoothCamera',\r\n 'key.sneak',\r\n 'key.spectatorOutlines',\r\n 'key.sprint',\r\n 'key.swapOffhand',\r\n 'key.togglePerspective',\r\n 'key.use'\r\n ]);\r\n collections.register('slot', [\r\n 'mainhand',\r\n 'offhand',\r\n 'head',\r\n 'chest',\r\n 'legs',\r\n 'feet'\r\n ]);\r\n collections.register('gamemode', [\r\n 'survival',\r\n 'creative',\r\n 'adventure',\r\n 'spectator'\r\n ]);\r\n collections.register('worldgen/noise_settings', [\r\n 'minecraft:overworld',\r\n 'minecraft:nether',\r\n 'minecraft:end',\r\n 'minecraft:amplified',\r\n 'minecraft:caves',\r\n 'minecraft:floating_islands'\r\n ]);\r\n collections.register('entity_source', [\r\n 'this',\r\n 'direct_killer',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('copy_source', [\r\n 'block_entity',\r\n 'this',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('loot_table_apply_bonus_formula', [\r\n 'minecraft:uniform_bonus_count',\r\n 'minecraft:binomial_with_bonus_count',\r\n 'minecraft:ore_drops'\r\n ]);\r\n collections.register('map_decoration', [\r\n 'mansion',\r\n 'monument',\r\n 'player',\r\n 'frame',\r\n 'red_marker',\r\n 'blue_marker',\r\n 'target_x',\r\n 'target_point',\r\n 'player_off_map',\r\n 'player_off_limits',\r\n 'red_x',\r\n 'banner_white',\r\n 'banner_orange',\r\n 'banner_magenta',\r\n 'banner_light_blue',\r\n 'banner_yellow',\r\n 'banner_lime',\r\n 'banner_pink',\r\n 'banner_gray',\r\n 'banner_light_gray',\r\n 'banner_cyan',\r\n 'banner_purple',\r\n 'banner_blue',\r\n 'banner_brown',\r\n 'banner_green',\r\n 'banner_red',\r\n 'banner_black'\r\n ]);\r\n collections.register('map_feature', [\r\n 'bastion_remnant',\r\n 'buried_treasure',\r\n 'desert_pyramid',\r\n 'endcity',\r\n 'fortress',\r\n 'igloo',\r\n 'jungle_pyramid',\r\n 'mansion',\r\n 'mineshaft',\r\n 'monument',\r\n 'nether_fossil',\r\n 'ocean_ruin',\r\n 'pillager_outpost',\r\n 'ruined_portal',\r\n 'shipwreck',\r\n 'stronghold',\r\n 'swamp_hut',\r\n 'village'\r\n ]);\r\n collections.register('recipe_group', [\r\n 'bed',\r\n 'light_gray_dye',\r\n 'iron_ingot',\r\n 'wooden_stairs',\r\n 'black_dye',\r\n 'stained_terracotta',\r\n 'dyed_bed',\r\n 'magenta_dye',\r\n 'bark',\r\n 'rabbit_stew',\r\n 'light_blue_dye',\r\n 'wooden_fence_gate',\r\n 'planks',\r\n 'stained_glass',\r\n 'wooden_door',\r\n 'stained_glass_pane',\r\n 'wooden_fence',\r\n 'sticks',\r\n 'concrete_powder',\r\n 'wooden_pressure_plate',\r\n 'boat',\r\n 'brown_dye',\r\n 'yellow_dye',\r\n 'bonemeal',\r\n 'red_dye',\r\n 'wooden_trapdoor',\r\n 'wooden_button',\r\n 'gold_ingot',\r\n 'pink_dye',\r\n 'wooden_slab',\r\n 'orange_dye',\r\n 'carpet',\r\n 'sign',\r\n 'wool',\r\n 'sugar',\r\n 'blue_dye',\r\n 'white_dye',\r\n 'banner',\r\n 'netherite_ingot'\r\n ]);\r\n collections.register('worldgen/configured_feature', [\r\n 'minecraft:acacia',\r\n 'minecraft:bamboo_light',\r\n 'minecraft:bamboo_vegetation',\r\n 'minecraft:bamboo',\r\n 'minecraft:basalt_blobs',\r\n 'minecraft:basalt_pillar',\r\n 'minecraft:birch_bees_0002',\r\n 'minecraft:birch_bees_002',\r\n 'minecraft:birch_bees_005',\r\n 'minecraft:birch_other',\r\n 'minecraft:birch_tall',\r\n 'minecraft:birch',\r\n 'minecraft:blackstone_blobs',\r\n 'minecraft:blue_ice',\r\n 'minecraft:bonus_chest',\r\n 'minecraft:brown_mushroom_giant',\r\n 'minecraft:brown_mushroom_nether',\r\n 'minecraft:brown_mushroom_normal',\r\n 'minecraft:brown_mushroom_swamp',\r\n 'minecraft:brown_mushroom_taiga',\r\n 'minecraft:chorus_plant',\r\n 'minecraft:crimson_forest_vegetation',\r\n 'minecraft:crimson_fungi_planted',\r\n 'minecraft:crimson_fungi',\r\n 'minecraft:dark_forest_vegetation_brown',\r\n 'minecraft:dark_forest_vegetation_red',\r\n 'minecraft:dark_oak',\r\n 'minecraft:delta',\r\n 'minecraft:desert_well',\r\n 'minecraft:disk_clay',\r\n 'minecraft:disk_gravel',\r\n 'minecraft:disk_sand',\r\n 'minecraft:end_gateway_delayed',\r\n 'minecraft:end_gateway',\r\n 'minecraft:end_island_decorated',\r\n 'minecraft:end_island',\r\n 'minecraft:end_spike',\r\n 'minecraft:fancy_oak_bees_0002',\r\n 'minecraft:fancy_oak_bees_002',\r\n 'minecraft:fancy_oak_bees_005',\r\n 'minecraft:fancy_oak',\r\n 'minecraft:flower_default',\r\n 'minecraft:flower_forest',\r\n 'minecraft:flower_plain_decorated',\r\n 'minecraft:flower_plain',\r\n 'minecraft:flower_swamp',\r\n 'minecraft:flower_warm',\r\n 'minecraft:forest_flower_trees',\r\n 'minecraft:forest_flower_vegetation_common',\r\n 'minecraft:forest_flower_vegetation',\r\n 'minecraft:forest_rock',\r\n 'minecraft:fossil',\r\n 'minecraft:freeze_top_layer',\r\n 'minecraft:glowstone_extra',\r\n 'minecraft:glowstone',\r\n 'minecraft:huge_brown_mushroom',\r\n 'minecraft:huge_red_mushroom',\r\n 'minecraft:ice_patch',\r\n 'minecraft:ice_spike',\r\n 'minecraft:iceberg_blue',\r\n 'minecraft:iceberg_packed',\r\n 'minecraft:jungle_bush',\r\n 'minecraft:jungle_tree_no_vine',\r\n 'minecraft:jungle_tree',\r\n 'minecraft:kelp_cold',\r\n 'minecraft:kelp_warm',\r\n 'minecraft:lake_lava',\r\n 'minecraft:lake_water',\r\n 'minecraft:large_basalt_columns',\r\n 'minecraft:mega_jungle_tree',\r\n 'minecraft:mega_pine',\r\n 'minecraft:mega_spruce',\r\n 'minecraft:monster_room',\r\n 'minecraft:mushroom_field_vegetation',\r\n 'minecraft:nether_sprouts',\r\n 'minecraft:oak_badlands',\r\n 'minecraft:oak_bees_0002',\r\n 'minecraft:oak_bees_002',\r\n 'minecraft:oak_bees_005',\r\n 'minecraft:oak',\r\n 'minecraft:ore_andesite',\r\n 'minecraft:ore_blackstone',\r\n 'minecraft:ore_coal',\r\n 'minecraft:ore_debris_large',\r\n 'minecraft:ore_debris_small',\r\n 'minecraft:ore_diamond',\r\n 'minecraft:ore_diorite',\r\n 'minecraft:ore_dirt',\r\n 'minecraft:ore_emerald',\r\n 'minecraft:ore_gold_deltas',\r\n 'minecraft:ore_gold_extra',\r\n 'minecraft:ore_gold_nether',\r\n 'minecraft:ore_gold',\r\n 'minecraft:ore_granite',\r\n 'minecraft:ore_gravel_nether',\r\n 'minecraft:ore_gravel',\r\n 'minecraft:ore_infested',\r\n 'minecraft:ore_iron',\r\n 'minecraft:ore_lapis',\r\n 'minecraft:ore_magma',\r\n 'minecraft:ore_quartz_deltas',\r\n 'minecraft:ore_quartz_nether',\r\n 'minecraft:ore_redstone',\r\n 'minecraft:ore_soul_sand',\r\n 'minecraft:patch_berry_bush',\r\n 'minecraft:patch_berry_decorated',\r\n 'minecraft:patch_berry_sparse',\r\n 'minecraft:patch_brown_mushroom',\r\n 'minecraft:patch_cactus_decorated',\r\n 'minecraft:patch_cactus_desert',\r\n 'minecraft:patch_cactus',\r\n 'minecraft:patch_crimson_roots',\r\n 'minecraft:patch_dead_bush_2',\r\n 'minecraft:patch_dead_bush_badlands',\r\n 'minecraft:patch_dead_bush',\r\n 'minecraft:patch_fire',\r\n 'minecraft:patch_grass_badlands',\r\n 'minecraft:patch_grass_forest',\r\n 'minecraft:patch_grass_jungle',\r\n 'minecraft:patch_grass_normal',\r\n 'minecraft:patch_grass_plain',\r\n 'minecraft:patch_grass_savanna',\r\n 'minecraft:patch_grass_taiga_2',\r\n 'minecraft:patch_grass_taiga',\r\n 'minecraft:patch_large_fern',\r\n 'minecraft:patch_melon',\r\n 'minecraft:patch_pumpkin',\r\n 'minecraft:patch_red_mushroom',\r\n 'minecraft:patch_soul_fire',\r\n 'minecraft:patch_sugar_cane_badlands',\r\n 'minecraft:patch_sugar_cane_desert',\r\n 'minecraft:patch_sugar_cane_swamp',\r\n 'minecraft:patch_sugar_cane',\r\n 'minecraft:patch_sunflower',\r\n 'minecraft:patch_taiga_grass',\r\n 'minecraft:patch_tall_grass_2',\r\n 'minecraft:patch_tall_grass',\r\n 'minecraft:patch_waterlilly',\r\n 'minecraft:pile_hay',\r\n 'minecraft:pile_ice',\r\n 'minecraft:pile_melon',\r\n 'minecraft:pile_pumpkin',\r\n 'minecraft:pile_snow',\r\n 'minecraft:pine',\r\n 'minecraft:plain_vegetation',\r\n 'minecraft:red_mushroom_giant',\r\n 'minecraft:red_mushroom_nether',\r\n 'minecraft:red_mushroom_normal',\r\n 'minecraft:red_mushroom_swamp',\r\n 'minecraft:red_mushroom_taiga',\r\n 'minecraft:sea_pickle',\r\n 'minecraft:seagrass_cold',\r\n 'minecraft:seagrass_deep_cold',\r\n 'minecraft:seagrass_deep_warm',\r\n 'minecraft:seagrass_deep',\r\n 'minecraft:seagrass_normal',\r\n 'minecraft:seagrass_river',\r\n 'minecraft:seagrass_simple',\r\n 'minecraft:seagrass_swamp',\r\n 'minecraft:seagrass_warm',\r\n 'minecraft:small_basalt_columns',\r\n 'minecraft:spring_closed_double',\r\n 'minecraft:spring_closed',\r\n 'minecraft:spring_delta',\r\n 'minecraft:spring_lava_double',\r\n 'minecraft:spring_lava',\r\n 'minecraft:spring_open',\r\n 'minecraft:spring_water',\r\n 'minecraft:spruce_snowy',\r\n 'minecraft:spruce',\r\n 'minecraft:super_birch_bees_0002',\r\n 'minecraft:swamp_tree',\r\n 'minecraft:taiga_vegetation',\r\n 'minecraft:trees_birch',\r\n 'minecraft:trees_giant_spruce',\r\n 'minecraft:trees_giant',\r\n 'minecraft:trees_jungle_edge',\r\n 'minecraft:trees_jungle',\r\n 'minecraft:trees_mountain_edge',\r\n 'minecraft:trees_mountain',\r\n 'minecraft:trees_savanna',\r\n 'minecraft:trees_shattered_savanna',\r\n 'minecraft:trees_water',\r\n 'minecraft:twisting_vines',\r\n 'minecraft:vines',\r\n 'minecraft:void_start_platform',\r\n 'minecraft:warm_ocean_vegetation',\r\n 'minecraft:warped_forest_vegetation',\r\n 'minecraft:warped_fungi_planted',\r\n 'minecraft:warped_fungi',\r\n 'minecraft:weeping_vines'\r\n ]);\r\n collections.register('worldgen/configured_structure_feature', [\r\n 'minecraft:bastion_remnant',\r\n 'minecraft:buried_treasure',\r\n 'minecraft:desert_pyramid',\r\n 'minecraft:end_city',\r\n 'minecraft:fortress',\r\n 'minecraft:igloo',\r\n 'minecraft:jungle_pyramid',\r\n 'minecraft:mansion',\r\n 'minecraft:mineshaft_mesa',\r\n 'minecraft:mineshaft',\r\n 'minecraft:monument',\r\n 'minecraft:nether_fossil',\r\n 'minecraft:ocean_ruin_cold',\r\n 'minecraft:ocean_ruin_warm',\r\n 'minecraft:pillager_outpost',\r\n 'minecraft:ruined_portal_desert',\r\n 'minecraft:ruined_portal_jungle',\r\n 'minecraft:ruined_portal_mountain',\r\n 'minecraft:ruined_portal_nether',\r\n 'minecraft:ruined_portal_ocean',\r\n 'minecraft:ruined_portal_swamp',\r\n 'minecraft:ruined_portal',\r\n 'minecraft:shipwreck_beached',\r\n 'minecraft:shipwreck',\r\n 'minecraft:stronghold',\r\n 'minecraft:swamp_hut',\r\n 'minecraft:village_desert',\r\n 'minecraft:village_plains',\r\n 'minecraft:village_savanna',\r\n 'minecraft:village_snowy',\r\n 'minecraft:village_taiga'\r\n ]);\r\n collections.register('worldgen/configured_surface_builder', [\r\n 'minecraft:badlands',\r\n 'minecraft:basalt_deltas',\r\n 'minecraft:crimson_forest',\r\n 'minecraft:desert',\r\n 'minecraft:end',\r\n 'minecraft:eroded_badlands',\r\n 'minecraft:frozen_ocean',\r\n 'minecraft:full_sand',\r\n 'minecraft:giant_tree_taiga',\r\n 'minecraft:grass',\r\n 'minecraft:gravelly_mountain',\r\n 'minecraft:ice_spikes',\r\n 'minecraft:mountain',\r\n 'minecraft:mycelium',\r\n 'minecraft:nether',\r\n 'minecraft:nope',\r\n 'minecraft:ocean_sand',\r\n 'minecraft:shattered_savanna',\r\n 'minecraft:soul_sand_valley',\r\n 'minecraft:stone',\r\n 'minecraft:swamp',\r\n 'minecraft:warped_forest',\r\n 'minecraft:wooded_badlands'\r\n ]);\r\n collections.register('biome_category', [\r\n 'beach',\r\n 'desert',\r\n 'extreme_hills',\r\n 'forest',\r\n 'icy',\r\n 'jungle',\r\n 'mesa',\r\n 'mushroom',\r\n 'nether',\r\n 'none',\r\n 'ocean',\r\n 'plains',\r\n 'river',\r\n 'savanna',\r\n 'swamp',\r\n 'taiga',\r\n 'the_end'\r\n ]);\r\n collections.register('heightmap_type', [\r\n 'MOTION_BLOCKING',\r\n 'MOTION_BLOCKING_NO_LEAVES',\r\n 'OCEAN_FLOOR',\r\n 'OCEAN_FLOOR_WG',\r\n 'WORLD_SURFACE',\r\n 'WORLD_SURFACE_WG'\r\n ]);\r\n collections.register('generation_step', [\r\n 'air',\r\n 'liquid'\r\n ]);\r\n collections.register('loot_context_type', [\r\n 'minecraft:empty',\r\n 'minecraft:chest',\r\n 'minecraft:command',\r\n 'minecraft:selector',\r\n 'minecraft:fishing',\r\n 'minecraft:entity',\r\n 'minecraft:gift',\r\n 'minecraft:barter',\r\n 'minecraft:advancement_reward',\r\n 'minecraft:advancement_entity',\r\n 'minecraft:generic',\r\n 'minecraft:block'\r\n ]);\r\n}\r\nexports.initCollections = initCollections;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCommonSchemas = exports.UniformInt = exports.Range = exports.NoiseSettingsPresets = exports.DefaultNoiseSettings = exports.DimensionTypePresets = exports.DefaultDimensionType = exports.ConditionCases = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nexports.DefaultDimensionType = {\r\n ultrawarm: false,\r\n natural: true,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: true,\r\n has_raids: true,\r\n has_skylight: true,\r\n has_ceiling: false,\r\n coordinate_scale: 1,\r\n ambient_light: 0,\r\n logical_height: 256,\r\n infiniburn: 'minecraft:infiniburn_overworld',\r\n};\r\nexports.DefaultNoiseSettings = {\r\n name: 'minecraft:overworld',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n disable_mob_generation: false,\r\n noise: {\r\n density_factor: 1,\r\n density_offset: -0.46875,\r\n simplex_surface_noise: true,\r\n random_density_offset: true,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n height: 256,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -10,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 0,\r\n offset: 0\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n};\r\nfunction initCommonSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('block_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'Name' }] } } }))\r\n }, { context: 'block_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('fluid_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'fluid' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode()))\r\n }, { context: 'fluid_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:water',\r\n Properties: {\r\n 'level': '0'\r\n }\r\n })\r\n }));\r\n schemas.register('block_pos', core_1.Mod(core_1.ListNode(core_1.NumberNode({ integer: true }), { minLength: 3, maxLength: 3 }), {\r\n default: () => [0, 0, 0]\r\n }));\r\n exports.Range = (config) => core_1.ChoiceNode([\r\n ...((config === null || config === void 0 ? void 0 : config.forceRange) ? [] : [{\r\n type: 'number',\r\n node: core_1.NumberNode(config),\r\n change: (v) => { var _a, _b, _c; return v === undefined ? 0 : (_c = (_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : v.n) !== null && _c !== void 0 ? _c : 0; }\r\n }]),\r\n {\r\n type: 'object',\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n min: (config === null || config === void 0 ? void 0 : config.bounds) ? core_1.NumberNode(config) : core_1.Opt(core_1.NumberNode(config)),\r\n max: (config === null || config === void 0 ? void 0 : config.bounds) ? core_1.NumberNode(config) : core_1.Opt(core_1.NumberNode(config))\r\n }, { context: 'range' }),\r\n change: (v) => ({\r\n min: typeof v === 'number' ? v : v === undefined ? 1 : v.n,\r\n max: typeof v === 'number' ? v : v === undefined ? 1 : v.n\r\n })\r\n },\r\n ...((config === null || config === void 0 ? void 0 : config.allowBinomial) ? [{\r\n type: 'binomial',\r\n node: core_1.ObjectNode({\r\n type: StringNode({ enum: ['minecraft:binomial'] }),\r\n n: core_1.NumberNode({ integer: true, min: 0 }),\r\n p: core_1.NumberNode({ min: 0, max: 1 })\r\n }, { context: 'range' }),\r\n match: (v) => v !== undefined && v.type === 'minecraft:binomial',\r\n change: (v) => {\r\n var _a, _b;\r\n return ({\r\n type: 'minecraft:binomial',\r\n n: typeof v === 'number' ? v : v === undefined ? 1 : ((_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : 1),\r\n p: 0.5\r\n });\r\n }\r\n }] : [])\r\n ], { choiceContext: 'range' });\r\n exports.UniformInt = (config) => core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer: true, min: config === null || config === void 0 ? void 0 : config.min, max: config === null || config === void 0 ? void 0 : config.max }),\r\n change: v => v.base\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n base: core_1.NumberNode({ integer: true, min: config === null || config === void 0 ? void 0 : config.min, max: config === null || config === void 0 ? void 0 : config.max }),\r\n spread: core_1.NumberNode({ integer: true, min: 0, max: config === null || config === void 0 ? void 0 : config.maxSpread })\r\n }),\r\n change: v => ({\r\n base: v,\r\n spread: 0\r\n })\r\n }\r\n ], { context: 'uniform_int' });\r\n exports.ConditionCases = {\r\n 'minecraft:alternative': {\r\n terms: core_1.ListNode(Reference('condition'))\r\n },\r\n 'minecraft:block_state_property': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })\r\n },\r\n 'minecraft:damage_source_properties': {\r\n predicate: Reference('damage_source_predicate')\r\n },\r\n 'minecraft:entity_properties': {\r\n entity: StringNode({ enum: 'entity_source' }),\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: StringNode({ enum: 'entity_source' }),\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), exports.Range({ forceRange: true }))\r\n },\r\n 'minecraft:inverted': {\r\n term: Reference('condition')\r\n },\r\n 'minecraft:killed_by_player': {\r\n inverse: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:location_check': {\r\n offsetX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetY: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n predicate: Reference('location_predicate')\r\n },\r\n 'minecraft:match_tool': {\r\n predicate: Reference('item_predicate')\r\n },\r\n 'minecraft:random_chance': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_chance_with_looting': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n looting_multiplier: core_1.NumberNode()\r\n },\r\n 'minecraft:reference': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$predicate' } })\r\n },\r\n 'minecraft:table_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n chances: core_1.ListNode(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:time_check': {\r\n value: exports.Range(),\r\n period: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:weather_check': {\r\n raining: core_1.Opt(core_1.BooleanNode()),\r\n thundering: core_1.Opt(core_1.BooleanNode())\r\n }\r\n };\r\n exports.DimensionTypePresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$dimension_type' } }), node, {\r\n 'minecraft:overworld': exports.DefaultDimensionType,\r\n 'minecraft:the_nether': {\r\n name: 'minecraft:the_nether',\r\n ultrawarm: true,\r\n natural: false,\r\n shrunk: true,\r\n piglin_safe: true,\r\n respawn_anchor_works: true,\r\n bed_works: false,\r\n has_raids: false,\r\n has_skylight: false,\r\n has_ceiling: true,\r\n ambient_light: 0.1,\r\n fixed_time: 18000,\r\n logical_height: 128,\r\n effects: 'minecraft:the_nether',\r\n infiniburn: 'minecraft:infiniburn_nether',\r\n },\r\n 'minecraft:the_end': {\r\n name: 'minecraft:the_end',\r\n ultrawarm: false,\r\n natural: false,\r\n shrunk: false,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: false,\r\n has_raids: true,\r\n has_skylight: false,\r\n has_ceiling: false,\r\n ambient_light: 0,\r\n fixed_time: 6000,\r\n logical_height: 256,\r\n effects: 'minecraft:the_end',\r\n infiniburn: 'minecraft:infiniburn_end',\r\n }\r\n });\r\n exports.NoiseSettingsPresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings' } }), node, {\r\n 'minecraft:overworld': exports.DefaultNoiseSettings,\r\n 'minecraft:nether': {\r\n name: 'minecraft:nether',\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n disable_mob_generation: true,\r\n noise: {\r\n density_factor: 0,\r\n density_offset: 0.019921875,\r\n simplex_surface_noise: false,\r\n random_density_offset: false,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n height: 128,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 3,\r\n xz_factor: 80,\r\n y_factor: 60\r\n },\r\n top_slide: {\r\n target: 120,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 320,\r\n size: 4,\r\n offset: -1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:netherrack\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:lava\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:end': {\r\n name: 'minecraft:end',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: -10,\r\n sea_level: 0,\r\n disable_mob_generation: true,\r\n noise: {\r\n density_factor: 0,\r\n density_offset: 0,\r\n simplex_surface_noise: true,\r\n random_density_offset: false,\r\n island_noise_override: true,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n height: 128,\r\n sampling: {\r\n xz_scale: 2,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -3000,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 7,\r\n offset: 1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:end_stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:air\"\r\n }\r\n },\r\n 'minecraft:amplified': {\r\n name: 'minecraft:amplified',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n disable_mob_generation: false,\r\n noise: {\r\n density_factor: 1,\r\n density_offset: -0.46875,\r\n simplex_surface_noise: true,\r\n random_density_offset: true,\r\n amplified: true,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n height: 256,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -10,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 0,\r\n offset: 0\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:caves': {\r\n name: 'minecraft:caves',\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n disable_mob_generation: true,\r\n noise: {\r\n density_factor: 0,\r\n density_offset: 0.019921875,\r\n simplex_surface_noise: false,\r\n random_density_offset: false,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n height: 128,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 3,\r\n xz_factor: 80,\r\n y_factor: 60\r\n },\r\n top_slide: {\r\n target: 120,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 320,\r\n size: 4,\r\n offset: -1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:floating_islands': {\r\n name: 'minecraft:floating_islands',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: -10,\r\n sea_level: 0,\r\n disable_mob_generation: true,\r\n noise: {\r\n density_factor: 0,\r\n density_offset: 0,\r\n simplex_surface_noise: true,\r\n random_density_offset: false,\r\n island_noise_override: true,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n height: 128,\r\n sampling: {\r\n xz_scale: 2,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -3000,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 7,\r\n offset: 1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n }\r\n });\r\n}\r\nexports.initCommonSchemas = initCommonSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initAdvancementSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initAdvancementSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const EntityPredicate = core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.Opt(Reference('entity_predicate')),\r\n change: v => { var _a, _b; return (_b = (_a = v[0]) === null || _a === void 0 ? void 0 : _a.predicate) !== null && _b !== void 0 ? _b : ({}); }\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('condition')),\r\n change: v => [{\r\n condition: 'minecraft:entity_properties',\r\n predicate: v\r\n }]\r\n }\r\n ], { context: 'conditions' });\r\n schemas.register('advancement', core_1.Mod(core_1.ObjectNode({\r\n display: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n icon: core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } }))\r\n }),\r\n title: Reference('text_component'),\r\n description: Reference('text_component'),\r\n background: core_1.Opt(StringNode()),\r\n frame: core_1.Opt(StringNode({ enum: ['task', 'challenge', 'goal'] })),\r\n show_toast: core_1.Opt(core_1.BooleanNode()),\r\n announce_to_chat: core_1.Opt(core_1.BooleanNode()),\r\n hidden: core_1.Opt(core_1.BooleanNode())\r\n }), {\r\n default: () => ({\r\n icon: {\r\n item: 'minecraft:stone'\r\n },\r\n title: '',\r\n description: ''\r\n })\r\n })),\r\n parent: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$advancement' } })),\r\n criteria: core_1.MapNode(StringNode(), Reference('advancement_criteria')),\r\n requirements: core_1.Opt(core_1.ListNode(core_1.ListNode(StringNode() // TODO: add validation\r\n ))),\r\n rewards: core_1.Opt(core_1.ObjectNode({\r\n function: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$function' } })),\r\n loot: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$loot_table' } }))),\r\n recipes: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }))),\r\n experience: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n })),\r\n }, { context: 'advancement' }), {\r\n default: () => ({\r\n criteria: {\r\n requirement: {\r\n trigger: 'minecraft:location'\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('advancement_criteria', core_1.ObjectNode({\r\n trigger: StringNode({ validator: 'resource', params: { pool: collections.get('advancement_trigger') } }),\r\n conditions: core_1.Opt(core_1.ObjectNode({\r\n player: core_1.Mod(EntityPredicate, {\r\n enabled: path => path.pop().push('trigger').get() !== 'minecraft:impossible'\r\n }),\r\n [core_1.Switch]: ['pop', { push: 'trigger' }],\r\n [core_1.Case]: {\r\n 'minecraft:bee_nest_destroyed': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n num_bees_inside: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:bred_animals': {\r\n parent: EntityPredicate,\r\n partner: EntityPredicate,\r\n child: EntityPredicate\r\n },\r\n 'minecraft:brewed_potion': {\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } }))\r\n },\r\n 'minecraft:changed_dimension': {\r\n from: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n to: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } }))\r\n },\r\n 'minecraft:channeled_lightning': {\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:construct_beacon': {\r\n level: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:consume_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:cured_zombie_villager': {\r\n villager: EntityPredicate,\r\n zombie: EntityPredicate\r\n },\r\n 'minecraft:effects_changed': {\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n },\r\n 'minecraft:enter_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n },\r\n 'minecraft:enchanted_item': {\r\n levels: core_1.Opt(Common_1.Range()),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:entity_hurt_player': {\r\n damage: core_1.Opt(Reference('damage_predicate'))\r\n },\r\n 'minecraft:entity_killed_player': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:filled_bucket': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:fishing_rod_hooked': {\r\n entity: EntityPredicate,\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:hero_of_the_village': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:inventory_changed': {\r\n slots: core_1.Opt(core_1.ObjectNode({\r\n empty: core_1.Opt(Common_1.Range()),\r\n occupied: core_1.Opt(Common_1.Range()),\r\n full: core_1.Opt(Common_1.Range())\r\n })),\r\n items: core_1.Opt(core_1.ListNode(Reference('item_predicate')))\r\n },\r\n 'minecraft:item_durability_changed': {\r\n delta: core_1.Opt(Common_1.Range()),\r\n durability: core_1.Opt(Common_1.Range()),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:item_used_on_block': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:killed_by_crossbow': {\r\n unique_entity_types: core_1.Opt(Common_1.Range()),\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:levitation': {\r\n distance: core_1.Opt(Common_1.Range()),\r\n duration: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:location': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:nether_travel': {\r\n distance: core_1.Opt(Common_1.Range()),\r\n entered: core_1.Opt(Reference('location_predicate')),\r\n exited: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:placed_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })),\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:player_generates_container_loot': {\r\n loot_table: StringNode({ validator: 'resource', params: { pool: '$loot_table' } })\r\n },\r\n 'minecraft:player_hurt_entity': {\r\n damage: core_1.Opt(Reference('damage_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_interacted_with_entity': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_killed_entity': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:recipe_unlocked': {\r\n recipe: StringNode({ validator: 'resource', params: { pool: '$recipe' } })\r\n },\r\n 'minecraft:slept_in_bed': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:slide_down_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:shot_crossbow': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:summoned_entity': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:tame_animal': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:target_hit': {\r\n projectile: EntityPredicate,\r\n shooter: EntityPredicate,\r\n signal_strength: core_1.Opt(Common_1.Range({ integer: true }))\r\n },\r\n 'minecraft:thrown_item_picked_up_by_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:used_ender_eye': {\r\n distance: core_1.Opt(Common_1.Range())\r\n },\r\n 'minecraft:used_totem': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:villager_trade': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:voluntary_exile': {\r\n location: Reference('location_predicate')\r\n }\r\n }\r\n }, { context: 'criterion' }))\r\n }, { category: 'predicate', context: 'criterion' }));\r\n}\r\nexports.initAdvancementSchemas = initAdvancementSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initConditionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initConditionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('predicate', core_1.ObjectOrList(Reference('condition'), { choiceContext: 'condition' }));\r\n schemas.register('condition', core_1.Mod(core_1.ObjectNode({\r\n condition: StringNode({ validator: 'resource', params: { pool: 'loot_condition_type' } }),\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:entity_properties',\r\n entity: 'this'\r\n })\r\n }));\r\n}\r\nexports.initConditionSchemas = initConditionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const NoPreset = (node) => core_1.Mod(node, {\r\n enabled: path => path.push('preset').get() === undefined\r\n });\r\n schemas.register('dimension', core_1.Mod(core_1.ObjectNode({\r\n type: Common_1.DimensionTypePresets(Reference('dimension_type')),\r\n generator: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/chunk_generator' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n settings: Common_1.NoiseSettingsPresets(Reference('noise_settings')),\r\n biome_source: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/biome_source' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:fixed': {\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })\r\n },\r\n 'minecraft:multi_noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n preset: core_1.Opt(StringNode({ enum: ['nether'] })),\r\n altitude_noise: NoPreset(Reference('generator_biome_noise')),\r\n temperature_noise: NoPreset(Reference('generator_biome_noise')),\r\n humidity_noise: NoPreset(Reference('generator_biome_noise')),\r\n weirdness_noise: NoPreset(Reference('generator_biome_noise')),\r\n biomes: NoPreset(core_1.Mod(core_1.ListNode(Reference('generator_biome')), {\r\n default: () => [{\r\n biome: 'minecraft:plains'\r\n }]\r\n }))\r\n },\r\n 'minecraft:checkerboard': {\r\n scale: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 62 })),\r\n biomes: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }))\r\n },\r\n 'minecraft:the_end': {\r\n seed: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:vanilla_layered': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n large_biomes: core_1.Opt(core_1.BooleanNode()),\r\n legacy_biome_init_layer: core_1.Opt(core_1.BooleanNode())\r\n }\r\n }\r\n }, { category: 'predicate', disableSwitchContext: true })\r\n },\r\n 'minecraft:flat': {\r\n settings: core_1.ObjectNode({\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n lakes: core_1.Opt(core_1.BooleanNode()),\r\n features: core_1.Opt(core_1.BooleanNode()),\r\n layers: core_1.ListNode(Reference('generator_layer')),\r\n structures: Reference('generator_structures')\r\n })\r\n }\r\n }\r\n }, { disableSwitchContext: true })\r\n }, { category: 'pool', context: 'dimension' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:fixed',\r\n seed,\r\n biome: 'minecraft:plains'\r\n },\r\n settings: 'minecraft:overworld'\r\n }\r\n };\r\n }\r\n }));\r\n schemas.register('generator_biome', core_1.Mod(core_1.ObjectNode({\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }),\r\n parameters: core_1.ObjectNode({\r\n altitude: core_1.NumberNode(),\r\n temperature: core_1.NumberNode(),\r\n humidity: core_1.NumberNode(),\r\n weirdness: core_1.NumberNode(),\r\n offset: core_1.NumberNode()\r\n })\r\n }, { context: 'generator_biome' }), {\r\n default: () => ({\r\n biome: 'minecraft:plains',\r\n parameters: {\r\n altitude: 0,\r\n temperature: 0,\r\n humidity: 0,\r\n weirdness: 0,\r\n offset: 0\r\n }\r\n })\r\n }));\r\n schemas.register('generator_biome_noise', core_1.Mod(core_1.ObjectNode({\r\n firstOctave: core_1.NumberNode({ integer: true }),\r\n amplitudes: core_1.ListNode(core_1.NumberNode())\r\n }, { context: 'generator_biome_noise' }), {\r\n default: () => ({\r\n firstOctave: -7,\r\n amplitudes: [1, 1]\r\n })\r\n }));\r\n}\r\nexports.initDimensionSchemas = initDimensionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionTypeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionTypeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('dimension_type', core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Mod(StringNode({ validator: 'resource', params: { pool: '$dimension_type', isDefinition: true } }), {\r\n enabled: (path) => path.getArray().length > 0\r\n }),\r\n ultrawarm: core_1.BooleanNode(),\r\n natural: core_1.BooleanNode(),\r\n piglin_safe: core_1.BooleanNode(),\r\n respawn_anchor_works: core_1.BooleanNode(),\r\n bed_works: core_1.BooleanNode(),\r\n has_raids: core_1.BooleanNode(),\r\n has_skylight: core_1.BooleanNode(),\r\n has_ceiling: core_1.BooleanNode(),\r\n coordinate_scale: core_1.NumberNode({ min: 0.00001, max: 30000000 }),\r\n ambient_light: core_1.NumberNode(),\r\n fixed_time: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n logical_height: core_1.NumberNode({ integer: true, min: 0, max: 256 }),\r\n effects: core_1.Opt(StringNode({ enum: ['minecraft:overworld', 'minecraft:the_nether', 'minecraft:the_end'] })),\r\n infiniburn: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }, { context: 'dimension_type' }), {\r\n default: () => Common_1.DefaultDimensionType\r\n }));\r\n}\r\nexports.initDimensionTypeSchemas = initDimensionTypeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LootFunctions = exports.LootConditions = exports.LootCopySources = exports.LootEntitySources = exports.LootTableTypes = void 0;\r\nexports.LootTableTypes = new Map([\r\n ['minecraft:advancement_entity', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:advancement_reward', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:barter', { requires: [8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:block', { requires: [1 /* BlockState */, 7 /* Origin */, 9 /* Tool */], allows: [0 /* BlockEntity */, 4 /* ExplosionRadius */, 8 /* ThisEntity */] }],\r\n ['minecraft:chest', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:command', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:empty', { requires: [], allows: [] }],\r\n ['minecraft:entity', { requires: [2 /* DamageSource */, 7 /* Origin */, 8 /* ThisEntity */], allows: [3 /* DirectKillerEntity */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */] }],\r\n ['minecraft:fishing', { requires: [7 /* Origin */, 9 /* Tool */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:generic', { requires: [2 /* DamageSource */, 0 /* BlockEntity */, 1 /* BlockState */, 3 /* DirectKillerEntity */, 4 /* ExplosionRadius */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */, 7 /* Origin */, 8 /* ThisEntity */, 9 /* Tool */], allows: [] }],\r\n ['minecraft:gift', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:selector', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }]\r\n]);\r\n/**\r\n * A map from loot entity sources to an array of their required context.\r\n */\r\nexports.LootEntitySources = new Map([\r\n ['direct_killer', [3 /* DirectKillerEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot copy sources to an array of their required context.\r\n */\r\nexports.LootCopySources = new Map([\r\n ['block_entity', [0 /* BlockEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot condition IDs to an array of their required context.\r\n */\r\nexports.LootConditions = new Map([\r\n ['minecraft:alternative', []],\r\n ['minecraft:block_state_property', [1 /* BlockState */]],\r\n ['minecraft:damage_source_properties', [2 /* DamageSource */]],\r\n ['minecraft:entity_properties', [7 /* Origin */]],\r\n ['minecraft:entity_scores', []],\r\n ['minecraft:inverted', []],\r\n ['minecraft:killed_by_player', [6 /* LastDamagePlayer */]],\r\n ['minecraft:location_check', []],\r\n ['minecraft:match_tool', [9 /* Tool */]],\r\n ['minecraft:random_chance', []],\r\n ['minecraft:random_chance_with_looting', [5 /* KillerEntity */]],\r\n ['minecraft:reference', []],\r\n ['minecraft:survives_explosion', [4 /* ExplosionRadius */]],\r\n ['minecraft:table_bonus', [9 /* Tool */]],\r\n ['minecraft:time_check', []],\r\n ['minecraft:weather_check', []]\r\n]);\r\n/**\r\n * A map from loot function IDs to an array of their required context.\r\n */\r\nexports.LootFunctions = new Map([\r\n ['minecraft:apply_bonus', [9 /* Tool */]],\r\n ['minecraft:copy_name', []],\r\n ['minecraft:copy_nbt', []],\r\n ['minecraft:copy_state', [1 /* BlockState */]],\r\n ['minecraft:enchant_randomly', []],\r\n ['minecraft:enchant_with_levels', []],\r\n ['minecraft:exploration_map', [7 /* Origin */]],\r\n ['minecraft:explosion_decay', []],\r\n ['minecraft:fill_player_head', []],\r\n ['minecraft:furnace_smelt', []],\r\n ['minecraft:limit_count', []],\r\n ['minecraft:looting_enchant', [5 /* KillerEntity */]],\r\n ['minecraft:set_attributes', []],\r\n ['minecraft:set_contents', []],\r\n ['minecraft:set_count', []],\r\n ['minecraft:set_damage', []],\r\n ['minecraft:set_loot_table', []],\r\n ['minecraft:set_lore', []],\r\n ['minecraft:set_name', []],\r\n ['minecraft:set_nbt', []],\r\n ['minecraft:set_stew_effect', []]\r\n]);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initLootTableSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst LootContext_1 = require(\"../LootContext\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initLootTableSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('loot_condition')))\r\n };\r\n const functionsAndConditions = {\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function'))),\r\n ...conditions\r\n };\r\n function compileSwitchNode(contextMap, collectionID, getNode) {\r\n const cases = [];\r\n const getAvailableOptions = (providedContext) => collections\r\n .get(collectionID)\r\n .filter(t => {\r\n var _a;\r\n const requiredContext = (_a = contextMap.get(t)) !== null && _a !== void 0 ? _a : [];\r\n return requiredContext.every(c => providedContext.includes(c));\r\n });\r\n for (const [tableType, { allows, requires }] of LootContext_1.LootTableTypes) {\r\n const providedContext = [...allows, ...requires];\r\n cases.push({\r\n match: path => path.getModel().get(new core_1.Path(['type'])) === tableType,\r\n node: getNode(getAvailableOptions(providedContext))\r\n });\r\n }\r\n cases.push({ match: _ => true, node: getNode(collectionID) });\r\n return core_1.SwitchNode(cases);\r\n }\r\n const conditionSwtichNode = compileSwitchNode(LootContext_1.LootConditions, 'loot_condition_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_condition_type` } }));\r\n const functionSwtichNode = compileSwitchNode(LootContext_1.LootFunctions, 'loot_function_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_function_type` } }));\r\n const entitySourceSwtichNode = compileSwitchNode(LootContext_1.LootEntitySources, 'entity_source', type => StringNode({ enum: type }));\r\n const copySourceSwtichNode = compileSwitchNode(LootContext_1.LootCopySources, 'copy_source', type => StringNode({ enum: type }));\r\n schemas.register('loot_table', core_1.Mod(core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: \"resource\", params: { pool: collections.get('loot_context_type') } })),\r\n pools: core_1.Opt(core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n rolls: Common_1.Range({ allowBinomial: true, integer: true }),\r\n bonus_rolls: core_1.Opt(Common_1.Range({ integer: true })),\r\n entries: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n }, { category: 'pool', context: 'loot_pool' }), {\r\n default: () => ({\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n })\r\n }))),\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function')))\r\n }, { context: 'loot_table' }), {\r\n default: () => ({\r\n pools: [{\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n }]\r\n })\r\n }));\r\n const weightMod = {\r\n enabled: path => {\r\n var _a;\r\n return ((_a = path.pop().get()) === null || _a === void 0 ? void 0 : _a.length) > 1\r\n && !['minecraft:alternatives', 'minecraft:group', 'minecraft:sequence'].includes(path.push('type').get());\r\n }\r\n };\r\n schemas.register('loot_entry', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'loot_pool_entry_type' } }),\r\n weight: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true, min: 1 }), weightMod)),\r\n quality: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), weightMod)),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alternatives': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:dynamic': {\r\n name: StringNode(),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:group': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:item': {\r\n name: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:sequence': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:tag': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$tag/item' } }),\r\n expand: core_1.Opt(core_1.BooleanNode()),\r\n ...functionsAndConditions\r\n }\r\n }\r\n }, { context: 'loot_entry' }), {\r\n default: () => ({\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('loot_function', core_1.Mod(core_1.ObjectNode({\r\n function: functionSwtichNode,\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: (() => {\r\n const cases = {\r\n 'minecraft:apply_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n formula: StringNode({ validator: 'resource', params: { pool: collections.get('loot_table_apply_bonus_formula') } }),\r\n parameters: core_1.Mod(core_1.ObjectNode({\r\n bonusMultiplier: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:uniform_bonus_count'\r\n }),\r\n extra: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n }),\r\n probability: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n })\r\n }), {\r\n enabled: path => path.push('formula').get() !== 'minecraft:ore_drops'\r\n })\r\n },\r\n 'minecraft:copy_name': {\r\n source: copySourceSwtichNode\r\n },\r\n 'minecraft:copy_nbt': {\r\n source: copySourceSwtichNode,\r\n ops: core_1.ListNode(core_1.ObjectNode({\r\n source: StringNode({ validator: 'nbt_path', params: { category: { getter: 'copy_source', path: ['pop', 'pop', 'pop', { push: 'source' }] } } }),\r\n target: StringNode({ validator: 'nbt_path', params: { category: 'minecraft:item' } }),\r\n op: StringNode({ enum: ['replace', 'append', 'merge'] })\r\n }, { context: 'nbt_operation' }))\r\n },\r\n 'minecraft:copy_state': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.ListNode(StringNode({ validator: 'block_state_key', params: { id: ['pop', 'pop', { push: 'block' }] } }))\r\n },\r\n 'minecraft:enchant_randomly': {\r\n enchantments: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })))\r\n },\r\n 'minecraft:enchant_with_levels': {\r\n levels: Common_1.Range({ allowBinomial: true }),\r\n treasure: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:exploration_map': {\r\n destination: core_1.Opt(StringNode({ enum: 'map_feature' })),\r\n decoration: core_1.Opt(StringNode({ enum: 'map_decoration' })),\r\n zoom: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n search_radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n skip_existing_chunks: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:fill_player_head': {\r\n entity: entitySourceSwtichNode\r\n },\r\n 'minecraft:limit_count': {\r\n limit: Common_1.Range({ bounds: true })\r\n },\r\n 'minecraft:looting_enchant': {\r\n count: Common_1.Range({ bounds: true }),\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_attributes': {\r\n modifiers: core_1.ListNode(Reference('attribute_modifier'))\r\n },\r\n 'minecraft:set_contents': {\r\n entries: core_1.ListNode(Reference('loot_entry'))\r\n },\r\n 'minecraft:set_count': {\r\n count: Common_1.Range({ allowBinomial: true })\r\n },\r\n 'minecraft:set_damage': {\r\n damage: Common_1.Range({ forceRange: true })\r\n },\r\n 'minecraft:set_loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n seed: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_lore': {\r\n entity: core_1.Opt(entitySourceSwtichNode),\r\n lore: core_1.ListNode(Reference('text_component')),\r\n replace: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_name': {\r\n entity: core_1.Opt(entitySourceSwtichNode),\r\n name: core_1.Opt(Reference('text_component'))\r\n },\r\n 'minecraft:set_nbt': {\r\n tag: StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item' } } })\r\n },\r\n 'minecraft:set_stew_effect': {\r\n effects: core_1.Opt(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }),\r\n duration: Common_1.Range()\r\n })))\r\n }\r\n };\r\n const res = {};\r\n collections.get('loot_function_type').forEach(f => {\r\n res[f] = { ...cases[f], ...conditions };\r\n });\r\n return res;\r\n })()\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => ({\r\n function: 'minecraft:set_count',\r\n count: 1\r\n })\r\n }));\r\n schemas.register('loot_condition', core_1.Mod(core_1.ObjectNode({\r\n condition: conditionSwtichNode,\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: {\r\n ...Common_1.ConditionCases,\r\n 'minecraft:entity_properties': {\r\n entity: entitySourceSwtichNode,\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: entitySourceSwtichNode,\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), Common_1.Range({ bounds: true }))\r\n }\r\n }\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:random_chance',\r\n chance: 0.5\r\n })\r\n }));\r\n schemas.register('attribute_modifier', core_1.Mod(core_1.ObjectNode({\r\n attribute: StringNode({ validator: 'resource', params: { pool: 'attribute' } }),\r\n name: StringNode(),\r\n amount: Common_1.Range({ bounds: true }),\r\n operation: StringNode({ enum: ['addition', 'multiply_base', 'multiply_total'] }),\r\n slot: core_1.StringOrList(StringNode({ enum: 'slot' }))\r\n }, { context: 'attribute_modifier' }), {\r\n default: () => ({\r\n attribute: 'minecraft:generic.max_health',\r\n name: '',\r\n amount: 1,\r\n operation: 'addition',\r\n slot: 'mainhand'\r\n })\r\n }));\r\n}\r\nexports.initLootTableSchemas = initLootTableSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPackMcmetaSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initPackMcmetaSchemas(schemas, _) {\r\n const getSimpleString = (jsonText) => { var _a, _b; return jsonText instanceof Array ? getSimpleString(jsonText[0]) : (_b = (_a = jsonText === null || jsonText === void 0 ? void 0 : jsonText.text) !== null && _a !== void 0 ? _a : jsonText === null || jsonText === void 0 ? void 0 : jsonText.toString()) !== null && _b !== void 0 ? _b : ''; };\r\n schemas.register('pack_mcmeta', core_1.Mod(core_1.ObjectNode({\r\n pack: core_1.Mod(core_1.ObjectNode({\r\n pack_format: core_1.Mod(core_1.NumberNode({ integer: true, min: 6, max: 6 }), { default: () => 6 }),\r\n description: core_1.Reference(schemas, 'text_component')\r\n }), {\r\n default: () => ({\r\n pack_format: 6,\r\n description: ''\r\n })\r\n })\r\n }), {\r\n default: () => ({\r\n pack: {\r\n pack_format: 6,\r\n description: ''\r\n }\r\n })\r\n }));\r\n}\r\nexports.initPackMcmetaSchemas = initPackMcmetaSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPredicatesSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initPredicatesSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const StateChoice = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode(),\r\n change: v => (typeof v === 'boolean' || typeof v === 'number') ? v.toString() : ''\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => (typeof v === 'string') ? parseInt(v) : 0\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }),\r\n change: v => (typeof v === 'number') ? ({ min: v, max: v }) : ({})\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => v === 'true' || v === 1\r\n }\r\n ]);\r\n schemas.register('item_predicate', core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } })),\r\n count: core_1.Opt(Common_1.Range()),\r\n durability: core_1.Opt(Common_1.Range()),\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } })),\r\n enchantments: core_1.Opt(core_1.ListNode(Reference('enchantment_predicate')))\r\n }, { context: 'item' }));\r\n schemas.register('enchantment_predicate', core_1.ObjectNode({\r\n enchantment: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })),\r\n levels: core_1.Opt(Common_1.Range())\r\n }, { context: 'enchantment' }));\r\n schemas.register('block_predicate', core_1.ObjectNode({\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block', id: ['pop', { push: 'block' }] } } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice, { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n }, { context: 'block' }));\r\n schemas.register('fluid_predicate', core_1.ObjectNode({\r\n fluid: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'fluid' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/fluid' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice))\r\n }, { context: 'fluid' }));\r\n schemas.register('location_predicate', core_1.ObjectNode({\r\n position: core_1.Opt(core_1.ObjectNode({\r\n x: core_1.Opt(Common_1.Range()),\r\n y: core_1.Opt(Common_1.Range()),\r\n z: core_1.Opt(Common_1.Range())\r\n })),\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n feature: core_1.Opt(StringNode({ enum: collections.get('worldgen/structure_feature').map(v => v.slice(10)) })),\r\n dimension: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n light: core_1.Opt(core_1.ObjectNode({\r\n light: core_1.Opt(Common_1.Range({ integer: true, min: 0, max: 15 }))\r\n })),\r\n smokey: core_1.Opt(core_1.BooleanNode()),\r\n block: core_1.Opt(Reference('block_predicate')),\r\n fluid: core_1.Opt(Reference('fluid_predicate'))\r\n }, { context: 'location' }));\r\n schemas.register('statistic_predicate', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'stat_type' } }),\r\n stat: StringNode(),\r\n value: Common_1.Range(),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:mined': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:crafted': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:used': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:broken': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:picked_up': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:dropped': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:killed': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:killed_by': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:custom': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'custom_stat' } })\r\n }\r\n }\r\n }));\r\n schemas.register('player_predicate', core_1.ObjectNode({\r\n gamemode: core_1.Opt(StringNode({ enum: 'gamemode' })),\r\n level: core_1.Opt(Common_1.Range()),\r\n advancements: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$advancement' } }), core_1.ChoiceNode([\r\n { type: 'boolean', node: core_1.BooleanNode(), change: _ => true },\r\n {\r\n type: 'object', node: core_1.MapNode(StringNode(), core_1.BooleanNode())\r\n }\r\n ]))),\r\n recipes: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }), core_1.BooleanNode())),\r\n stats: core_1.Opt(core_1.ListNode(Reference('statistic_predicate')))\r\n }, { context: 'player' }));\r\n schemas.register('status_effect_predicate', core_1.ObjectNode({\r\n amplifier: core_1.Opt(Common_1.Range()),\r\n duration: core_1.Opt(Common_1.Range()),\r\n ambient: core_1.Opt(core_1.BooleanNode()),\r\n visible: core_1.Opt(core_1.BooleanNode())\r\n }, { context: 'status_effect' }));\r\n schemas.register('distance_predicate', core_1.ObjectNode({\r\n x: core_1.Opt(Common_1.Range()),\r\n y: core_1.Opt(Common_1.Range()),\r\n z: core_1.Opt(Common_1.Range()),\r\n absolute: core_1.Opt(Common_1.Range()),\r\n horizontal: core_1.Opt(Common_1.Range())\r\n }, { context: 'distance' }));\r\n schemas.register('entity_predicate', core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'entity_type', allowTag: true } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:entity', id: ['pop', { push: 'type' }] } } })),\r\n team: core_1.Opt(StringNode({ validator: 'team' })),\r\n location: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n flags: core_1.Opt(core_1.ObjectNode({\r\n is_on_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_sneaking: core_1.Opt(core_1.BooleanNode()),\r\n is_sprinting: core_1.Opt(core_1.BooleanNode()),\r\n is_swimming: core_1.Opt(core_1.BooleanNode()),\r\n is_baby: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n equipment: core_1.Opt(core_1.MapNode(StringNode({ enum: 'slot' }), Reference('item_predicate'))),\r\n vehicle: core_1.Opt(Reference('entity_predicate')),\r\n targeted_entity: core_1.Opt(Reference('entity_predicate')),\r\n player: core_1.Opt(Reference('player_predicate')),\r\n fishing_hook: core_1.Opt(core_1.ObjectNode({\r\n in_open_water: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n }, { context: 'entity' }));\r\n schemas.register('damage_source_predicate', core_1.ObjectNode({\r\n is_explosion: core_1.Opt(core_1.BooleanNode()),\r\n is_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_magic: core_1.Opt(core_1.BooleanNode()),\r\n is_projectile: core_1.Opt(core_1.BooleanNode()),\r\n is_lightning: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_armor: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_invulnerability: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_magic: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n direct_entity: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'damage_source' }));\r\n schemas.register('damage_predicate', core_1.ObjectNode({\r\n dealt: core_1.Opt(Common_1.Range()),\r\n taken: core_1.Opt(Common_1.Range()),\r\n blocked: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n type: core_1.Opt(Reference('damage_source_predicate'))\r\n }, { context: 'damage' }));\r\n}\r\nexports.initPredicatesSchemas = initPredicatesSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initRecipeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initRecipeSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('recipe', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'recipe_serializer' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:crafting_shaped': {\r\n group: core_1.Opt(StringNode({ enum: 'recipe_group', additional: true })),\r\n pattern: core_1.ListNode(StringNode()),\r\n key: core_1.MapNode(StringNode(), // TODO: add validation\r\n Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:crafting_shapeless': {\r\n group: core_1.Opt(StringNode()),\r\n ingredients: core_1.ListNode(Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:smelting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 200 }))\r\n },\r\n 'minecraft:blasting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:smoking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:campfire_cooking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:stonecutting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:smithing': {\r\n group: core_1.Opt(StringNode()),\r\n base: Reference('recipe_ingredient_object'),\r\n addition: Reference('recipe_ingredient_object'),\r\n result: Reference('recipe_result')\r\n }\r\n }\r\n }, { context: 'recipe', disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:crafting_shaped'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('recipe_ingredient_object'),\r\n change: v => v[0]\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('recipe_ingredient_object')),\r\n change: v => [v]\r\n }\r\n ]), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient_object', core_1.Mod(core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_result', core_1.Mod(core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 1 }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n}\r\nexports.initRecipeSchemas = initRecipeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTagsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTagsSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const TagBase = (type) => core_1.Mod(core_1.ObjectNode({\r\n replace: core_1.Opt(core_1.BooleanNode()),\r\n values: core_1.ListNode(core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: type, allowTag: true } }),\r\n change: v => v.id\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: type, allowTag: true, allowUnknown: true } }),\r\n required: core_1.BooleanNode()\r\n }),\r\n change: v => ({ id: v })\r\n }\r\n ])),\r\n }, { context: 'tag' }), {\r\n default: () => ({\r\n values: []\r\n })\r\n });\r\n schemas.register('block_tag', TagBase('block'));\r\n schemas.register('entity_type_tag', TagBase('entity_type'));\r\n schemas.register('fluid_tag', TagBase('fluid'));\r\n schemas.register('function_tag', TagBase('$function'));\r\n schemas.register('item_tag', TagBase('item'));\r\n}\r\nexports.initTagsSchemas = initTagsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTextComponentSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTextComponentSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const getSimpleString = (v) => { var _a; return v instanceof Array ? getSimpleString(v[0]) : (_a = v === null || v === void 0 ? void 0 : v.text) !== null && _a !== void 0 ? _a : (typeof v === 'object' ? '' : v === null || v === void 0 ? void 0 : v.toString()); };\r\n schemas.register('text_component', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('text_component_object'),\r\n change: v => v instanceof Array ? (typeof v[0] === 'object' ? v[0] : { text: getSimpleString(v[0]) }) : typeof v === 'object' ? v : { text: getSimpleString(v) }\r\n },\r\n {\r\n type: 'list',\r\n node: Reference('text_component_list'),\r\n change: v => [v]\r\n },\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: StringNode(),\r\n change: getSimpleString\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => {\r\n const n = parseFloat(getSimpleString(v));\r\n return isFinite(n) ? n : (!!v ? 1 : 0);\r\n }\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => {\r\n const s = getSimpleString(v);\r\n return s === 'true' || s === 'false' ? s === 'true' : !!s;\r\n }\r\n }\r\n ], { context: 'text_component' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n const CommonFields = {\r\n color: core_1.Opt(StringNode()) /* TODO */,\r\n font: core_1.Opt(StringNode()),\r\n bold: core_1.Opt(core_1.BooleanNode()),\r\n italic: core_1.Opt(core_1.BooleanNode()),\r\n underlined: core_1.Opt(core_1.BooleanNode()),\r\n strikethrough: core_1.Opt(core_1.BooleanNode()),\r\n obfuscated: core_1.Opt(core_1.BooleanNode()),\r\n insertion: core_1.Opt(StringNode()),\r\n clickEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['open_url', 'open_file', 'run_command', 'suggest_command', 'change_page', 'copy_to_clipboard'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'change_page': {\r\n value: StringNode()\r\n },\r\n 'copy_to_clipboard': {\r\n value: StringNode()\r\n },\r\n 'open_file': {\r\n value: StringNode()\r\n },\r\n 'open_url': {\r\n value: StringNode()\r\n },\r\n 'run_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n },\r\n 'suggest_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n }\r\n }\r\n })),\r\n hoverEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['show_text', 'show_item', 'show_entity'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'show_text': {\r\n value: core_1.Opt(Reference('text_component')),\r\n contents: core_1.Opt(Reference('text_component'))\r\n },\r\n 'show_item': {\r\n value: core_1.Opt(StringNode({ validator: 'nbt', params: { module: 'util::InventoryItem' } })),\r\n contents: core_1.Opt(core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n tag: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'id' }] } } }))\r\n }))\r\n },\r\n 'show_entity': {\r\n value: core_1.Opt(core_1.ObjectNode({\r\n name: core_1.Opt(StringNode()),\r\n type: core_1.Opt(StringNode()),\r\n id: core_1.Opt(StringNode())\r\n })),\r\n contents: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Opt(Reference('text_component')),\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n id: StringNode({ validator: 'uuid' })\r\n }), {\r\n default: () => ({\r\n type: 'minecraft:pig',\r\n id: '00000001-0001-0001-0001-000000000001'\r\n })\r\n }))\r\n }\r\n }\r\n })),\r\n extra: core_1.Opt(Reference('text_component_list'))\r\n };\r\n schemas.register('text_component_object', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'text',\r\n match: v => typeof v === 'object',\r\n change: v => ({ text: '' }),\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n text: StringNode(),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'translation',\r\n match: v => (v === null || v === void 0 ? void 0 : v.translate) !== undefined,\r\n change: v => ({ translate: '' }),\r\n node: core_1.ObjectNode({\r\n translate: StringNode(),\r\n with: core_1.Opt(Reference('text_component_list')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'score',\r\n match: v => (v === null || v === void 0 ? void 0 : v.score) !== undefined,\r\n change: v => ({ score: {} }),\r\n node: core_1.ObjectNode({\r\n score: core_1.ObjectNode({\r\n name: StringNode({ validator: 'entity', params: { amount: 'single', type: 'entities', isScoreHolder: true } }),\r\n objective: StringNode({ validator: 'objective' }),\r\n value: core_1.Opt(StringNode())\r\n }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'selector',\r\n match: v => (v === null || v === void 0 ? void 0 : v.selector) !== undefined,\r\n change: v => ({ selector: '' }),\r\n node: core_1.ObjectNode({\r\n selector: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'keybind',\r\n match: v => (v === null || v === void 0 ? void 0 : v.keybind) !== undefined,\r\n change: v => ({ keybind: '' }),\r\n node: core_1.ObjectNode({\r\n keybind: StringNode({ enum: 'keybind', additional: true }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'nbt',\r\n match: v => (v === null || v === void 0 ? void 0 : v.nbt) !== undefined,\r\n change: v => ({ nbt: '' }),\r\n node: core_1.ObjectNode({\r\n nbt: StringNode({ validator: 'nbt_path' }),\r\n block: core_1.Opt(StringNode({ validator: 'vector', params: { dimension: 3, isInteger: true } })),\r\n entity: core_1.Opt(StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } })),\r\n storage: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$storage' } })),\r\n interpret: core_1.Opt(core_1.BooleanNode()),\r\n ...CommonFields\r\n })\r\n }\r\n ], { context: 'text_component_object', choiceContext: 'text_component.object' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n schemas.register('text_component_list', core_1.Mod(core_1.ListNode(Reference('text_component')), {\r\n default: () => [{\r\n text: \"\"\r\n }]\r\n }));\r\n}\r\nexports.initTextComponentSchemas = initTextComponentSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initBiomeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initBiomeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('biome', core_1.Mod(core_1.ObjectNode({\r\n surface_builder: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_surface_builder' } }),\r\n depth: core_1.NumberNode(),\r\n scale: core_1.NumberNode(),\r\n temperature: core_1.NumberNode(),\r\n downfall: core_1.NumberNode(),\r\n precipitation: StringNode({ enum: ['none', 'rain', 'snow'] }),\r\n temperature_modifier: core_1.Opt(StringNode({ enum: ['none', 'frozen'] })),\r\n category: StringNode({ enum: 'biome_category' }),\r\n player_spawn_friendly: core_1.Opt(core_1.BooleanNode()),\r\n creature_spawn_probability: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n effects: core_1.ObjectNode({\r\n sky_color: core_1.NumberNode({ color: true }),\r\n fog_color: core_1.NumberNode({ color: true }),\r\n water_color: core_1.NumberNode({ color: true }),\r\n water_fog_color: core_1.NumberNode({ color: true }),\r\n grass_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n foliage_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n grass_color_modifier: core_1.Opt(StringNode({ enum: ['none', 'dark_forest', 'swamp'] })),\r\n ambient_sound: core_1.Opt(StringNode()),\r\n mood_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_delay: core_1.NumberNode({ integer: true }),\r\n block_search_extent: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode()\r\n })),\r\n additions_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n })),\r\n music: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n min_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n max_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n replace_current_music: core_1.BooleanNode()\r\n })),\r\n particle: core_1.Opt(core_1.ObjectNode({\r\n options: core_1.ObjectNode({\r\n type: StringNode()\r\n }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }))\r\n }),\r\n starts: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_structure_feature' } })),\r\n spawners: core_1.MapNode(StringNode({ enum: [\r\n 'water_ambient',\r\n 'ambient',\r\n 'misc',\r\n 'water_creature',\r\n 'creature',\r\n 'monster'\r\n ] }), core_1.Mod(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n weight: core_1.NumberNode({ integer: true }),\r\n minCount: core_1.NumberNode({ integer: true }),\r\n maxCount: core_1.NumberNode({ integer: true })\r\n })), {\r\n category: () => 'pool',\r\n default: () => [{\r\n type: 'minecraft:bat',\r\n weight: 1\r\n }]\r\n })),\r\n spawn_costs: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'entity_type' } }), core_1.Mod(core_1.ObjectNode({\r\n energy_budget: core_1.NumberNode(),\r\n charge: core_1.NumberNode()\r\n }, { category: 'function' }), {\r\n default: () => ({\r\n energy_budget: 0.12,\r\n charge: 1.0\r\n })\r\n })),\r\n carvers: core_1.MapNode(StringNode({ enum: ['air', 'liquid'] }), core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_carver' } })), {\r\n default: () => ['minecraft:cave']\r\n })),\r\n features: core_1.ListNode(core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })), { category: () => 'predicate' }), { maxLength: 10 })\r\n }, { context: 'biome' }), {\r\n default: () => ({\r\n surface_builder: 'minecraft:grass',\r\n depth: 0.125,\r\n scale: 0.05,\r\n temperature: 0.8,\r\n downfall: 0.4,\r\n precipitation: 'rain',\r\n category: 'plains',\r\n effects: {\r\n sky_color: 7907327,\r\n fog_color: 12638463,\r\n water_color: 4159204,\r\n water_fog_color: 329011\r\n }\r\n })\r\n }));\r\n}\r\nexports.initBiomeSchemas = initBiomeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCarverSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initCarverSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('configured_carver', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/carver' } }),\r\n config: core_1.ObjectNode({\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n })\r\n }, { context: 'carver' }), {\r\n default: () => ({\r\n type: 'minecraft:cave',\r\n config: {\r\n probability: 0.1\r\n }\r\n })\r\n }));\r\n}\r\nexports.initCarverSchemas = initCarverSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDecoratorSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initDecoratorSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const RangeConfig = {\r\n maximum: core_1.NumberNode({ integer: true }),\r\n bottom_offset: core_1.NumberNode({ integer: true }),\r\n top_offset: core_1.NumberNode({ integer: true })\r\n };\r\n const ChanceConfig = {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n };\r\n const CountConfig = {\r\n count: Common_1.UniformInt({ min: -10, max: 128, maxSpread: 128 })\r\n };\r\n schemas.register('configured_decorator', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/decorator' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:carving_mask': {\r\n step: StringNode({ enum: 'generation_step' }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:chance': ChanceConfig,\r\n 'minecraft:count': CountConfig,\r\n 'minecraft:count_extra': {\r\n count: core_1.NumberNode({ integer: true }),\r\n extra_count: core_1.NumberNode({ integer: true }),\r\n extra_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:count_multilayer': CountConfig,\r\n 'minecraft:count_noise': {\r\n noise_level: core_1.NumberNode(),\r\n below_noise: core_1.NumberNode({ integer: true }),\r\n above_noise: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:count_noise_biased': {\r\n noise_to_count_ratio: core_1.NumberNode({ integer: true }),\r\n noise_factor: core_1.NumberNode(),\r\n noise_offset: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:decorated': {\r\n outer: Reference('configured_decorator'),\r\n inner: Reference('configured_decorator')\r\n },\r\n 'minecraft:depth_average': {\r\n baseline: core_1.NumberNode({ integer: true }),\r\n spread: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:fire': CountConfig,\r\n 'minecraft:glowstone': CountConfig,\r\n 'minecraft:lava_lake': ChanceConfig,\r\n 'minecraft:range': RangeConfig,\r\n 'minecraft:range_biased': RangeConfig,\r\n 'minecraft:range_very_biased': RangeConfig,\r\n 'minecraft:water_lake': ChanceConfig\r\n }\r\n }, { context: 'decorator', category: 'predicate' })\r\n }, { context: 'decorator', category: 'predicate' }));\r\n}\r\nexports.initDecoratorSchemas = initDecoratorSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initProcessorListSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initProcessorListSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('processor_list', core_1.Mod(core_1.ObjectNode({\r\n processors: core_1.ListNode(Reference('processor'))\r\n }, { context: 'processor_list' }), {\r\n default: () => ({\r\n processors: [{\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n }]\r\n })\r\n }));\r\n schemas.register('processor', core_1.Mod(core_1.ObjectNode({\r\n processor_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_processor' } }),\r\n [core_1.Switch]: [{ push: 'processor_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_age': {\r\n mossiness: core_1.NumberNode()\r\n },\r\n 'minecraft:block_ignore': {\r\n blocks: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:block_rot': {\r\n integrity: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:gravity': {\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n offset: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:rule': {\r\n rules: core_1.ListNode(Reference('processor_rule'))\r\n }\r\n }\r\n }, { category: 'function', context: 'processor' }), {\r\n default: () => ({\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n })\r\n }));\r\n schemas.register('processor_rule', core_1.Mod(core_1.ObjectNode({\r\n position_predicate: core_1.Opt(Reference('pos_rule_test')),\r\n location_predicate: Reference('rule_test'),\r\n input_predicate: Reference('rule_test'),\r\n output_state: Reference('block_state'),\r\n output_nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block' } } }))\r\n }, { category: 'predicate', context: 'processor_rule' }), {\r\n default: () => ({\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n })\r\n }));\r\n const posTestFields = {\r\n min_dist: core_1.NumberNode({ min: 0, max: 255, integer: true }),\r\n max_dist: core_1.NumberNode({ min: 0, max: 255, integer: true }),\r\n min_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n max_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n };\r\n schemas.register('pos_rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'pos_rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:axis_aligned_linear_pos': {\r\n axis: StringNode({ enum: ['x', 'y', 'z'] }),\r\n ...posTestFields\r\n },\r\n 'minecraft:linear_pos': posTestFields\r\n }\r\n }, { context: 'pos_rule_test', disableSwitchContext: true }));\r\n schemas.register('rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:blockstate_match': {\r\n block_state: Reference('block_state')\r\n },\r\n 'minecraft:random_block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_blockstate_match': {\r\n block_state: Reference('block_state'),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:tag_match': {\r\n tag: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }\r\n }\r\n }, { context: 'rule_test', disableSwitchContext: true }));\r\n}\r\nexports.initProcessorListSchemas = initProcessorListSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nrequire(\"./Decorator\");\r\nrequire(\"./ProcessorList\");\r\nfunction initFeatureSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const RandomPatchConfig = {\r\n can_replace: core_1.BooleanNode(),\r\n project: core_1.BooleanNode(),\r\n need_water: core_1.BooleanNode(),\r\n xspread: core_1.NumberNode({ integer: true }),\r\n yspread: core_1.NumberNode({ integer: true }),\r\n zspread: core_1.NumberNode({ integer: true }),\r\n tries: core_1.NumberNode({ integer: true }),\r\n state_provider: Reference('block_state_provider'),\r\n block_placer: Reference('block_placer'),\r\n whitelist: core_1.ListNode(Reference('block_state')),\r\n blacklist: core_1.ListNode(Reference('block_state'))\r\n };\r\n const DiskConfig = {\r\n state: Reference('block_state'),\r\n radius: Common_1.UniformInt({ min: 0, max: 4, maxSpread: 4 }),\r\n half_height: core_1.NumberNode({ integer: true, min: 0, max: 4 }),\r\n targets: core_1.ListNode(Reference('block_state'))\r\n };\r\n const HugeMushroomConfig = {\r\n cap_provider: Reference('block_state_provider'),\r\n stem_provider: Reference('block_state_provider'),\r\n foliage_radius: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n };\r\n const OreConfig = {\r\n state: Reference('block_state'),\r\n size: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n target: Reference('rule_test')\r\n };\r\n const CountConfig = {\r\n count: Common_1.UniformInt({ min: -10, max: 128, maxSpread: 128 })\r\n };\r\n const Feature = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('configured_feature')\r\n }\r\n ], { choiceContext: 'feature' });\r\n schemas.register('configured_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bamboo': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:basalt_columns': {\r\n reach: Common_1.UniformInt({ min: 0, max: 2, maxSpread: 1 }),\r\n height: Common_1.UniformInt({ min: 1, max: 5, maxSpread: 5 })\r\n },\r\n 'minecraft:block_pile': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:decorated': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:delta_feature': {\r\n contents: Reference('block_state'),\r\n rim: Reference('block_state'),\r\n size: Common_1.UniformInt({ min: 0, max: 8, maxSpread: 8 }),\r\n rim_size: Common_1.UniformInt({ min: 0, max: 8, maxSpread: 8 })\r\n },\r\n 'minecraft:disk': DiskConfig,\r\n 'minecraft:emerald_ore': {\r\n state: Reference('block_state'),\r\n target: Reference('block_state')\r\n },\r\n 'minecraft:end_gateway': {\r\n exact: core_1.BooleanNode(),\r\n exit: core_1.Opt(Reference('block_pos'))\r\n },\r\n 'minecraft:end_spike': {\r\n crystal_invulnerable: core_1.Opt(core_1.BooleanNode()),\r\n crystal_beam_target: core_1.Opt(Reference('block_pos')),\r\n spikes: core_1.ListNode(core_1.ObjectNode({\r\n centerX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n centerZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n height: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n guarded: core_1.Opt(core_1.BooleanNode())\r\n }))\r\n },\r\n 'minecraft:fill_layer': {\r\n state: Reference('block_state'),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 255 })\r\n },\r\n 'minecraft:flower': RandomPatchConfig,\r\n 'minecraft:forest_rock': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:huge_brown_mushroom': HugeMushroomConfig,\r\n 'minecraft:huge_fungus': {\r\n hat_state: Reference('block_state'),\r\n decor_state: Reference('block_state'),\r\n stem_state: Reference('block_state'),\r\n valid_base_block: Reference('block_state'),\r\n planted: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:huge_red_mushroom': HugeMushroomConfig,\r\n 'minecraft:ice_patch': DiskConfig,\r\n 'minecraft:iceberg': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:lake': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:nether_forest_vegetation': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:netherrack_replace_blobs': {\r\n state: Reference('block_state'),\r\n target: Reference('block_state'),\r\n radius: Common_1.UniformInt()\r\n },\r\n 'minecraft:no_bonemeal_flower': RandomPatchConfig,\r\n 'minecraft:no_surface_ore': OreConfig,\r\n 'minecraft:ore': OreConfig,\r\n 'minecraft:random_patch': RandomPatchConfig,\r\n 'minecraft:random_boolean_selector': {\r\n feature_false: Feature,\r\n feature_true: Feature\r\n },\r\n 'minecraft:random_selector': {\r\n features: core_1.ListNode(core_1.ObjectNode({\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n feature: Feature\r\n })),\r\n default: Feature\r\n },\r\n 'minecraft:sea_pickle': CountConfig,\r\n 'minecraft:seagrass': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:simple_block': {\r\n to_place: Reference('block_state'),\r\n place_on: core_1.ListNode(Reference('block_state')),\r\n place_in: core_1.ListNode(Reference('block_state')),\r\n place_under: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:simple_random_selector': {\r\n features: core_1.ListNode(Feature)\r\n },\r\n 'minecraft:spring_feature': {\r\n state: Reference('fluid_state'),\r\n rock_count: core_1.NumberNode({ integer: true }),\r\n hole_count: core_1.NumberNode({ integer: true }),\r\n requires_block_below: core_1.BooleanNode(),\r\n valid_blocks: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:tree': {\r\n max_water_depth: core_1.NumberNode({ integer: true }),\r\n ignore_vines: core_1.BooleanNode(),\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n minimum_size: Reference('feature_size'),\r\n trunk_provider: Reference('block_state_provider'),\r\n leaves_provider: Reference('block_state_provider'),\r\n trunk_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/trunk_placer_type' } }),\r\n base_height: core_1.NumberNode({ integer: true, min: 0, max: 32 }),\r\n height_rand_a: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n height_rand_b: core_1.NumberNode({ integer: true, min: 0, max: 24 })\r\n }, { context: 'trunk_placer' }),\r\n foliage_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/foliage_placer_type' } }),\r\n radius: Common_1.UniformInt({ min: 0, max: 8, maxSpread: 8 }),\r\n offset: Common_1.UniformInt({ min: 0, max: 8, maxSpread: 8 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:blob_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:bush_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:fancy_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:jungle_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:mega_pine_foliage_placer': {\r\n crown_height: Common_1.UniformInt({ min: 0, max: 16, maxSpread: 8 })\r\n },\r\n 'minecraft:pine_foliage_placer': {\r\n height: Common_1.UniformInt({ min: 0, max: 16, maxSpread: 8 })\r\n },\r\n 'minecraft:spruce_foliage_placer': {\r\n trunk_height: Common_1.UniformInt({ min: 0, max: 16, maxSpread: 8 })\r\n }\r\n }\r\n }, { context: 'foliage_placer', disableSwitchContext: true }),\r\n decorators: core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/tree_decorator_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alter_ground': {\r\n provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:beehive': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:cocoa': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }\r\n }\r\n }, { context: 'tree_decorator' }))\r\n }\r\n }\r\n }, { context: 'feature' })\r\n }, { context: 'feature' }), {\r\n default: () => ({\r\n type: 'minecraft:decorated',\r\n config: {\r\n decorator: {\r\n type: 'minecraft:count',\r\n config: {\r\n count: 4\r\n }\r\n },\r\n feature: {\r\n type: 'minecraft:tree',\r\n config: {\r\n max_water_depth: 0,\r\n ignore_vines: true,\r\n minimum_size: {},\r\n trunk_placer: {\r\n base_height: 5,\r\n height_rand_a: 2,\r\n height_rand_b: 0\r\n },\r\n foliage_placer: {\r\n radius: 2,\r\n offset: 0,\r\n height: 3\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('feature_size', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature_size_type' } }),\r\n min_clipped_height: core_1.Opt(core_1.NumberNode({ min: 0, max: 80 })),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:two_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 81 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n },\r\n 'minecraft:three_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n upper_limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n middle_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n }\r\n }\r\n }, { disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:two_layers_feature_size'\r\n })\r\n }));\r\n schemas.register('block_state_provider', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_state_provider_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:rotated_block_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:simple_state_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:weighted_state_provider': {\r\n entries: core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n data: Reference('block_state')\r\n }), {\r\n default: () => ({\r\n data: {}\r\n })\r\n }))\r\n }\r\n }\r\n }, { context: 'block_state_provider' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_state_provider'\r\n })\r\n }));\r\n schemas.register('block_placer', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_placer_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:column_placer': {\r\n min_size: core_1.NumberNode({ integer: true }),\r\n extra_size: core_1.NumberNode({ integer: true })\r\n }\r\n }\r\n }, { context: 'block_placer' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_block_placer'\r\n })\r\n }));\r\n}\r\nexports.initFeatureSchemas = initFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initNoiseSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initNoiseSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('noise_settings', core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Mod(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings', isDefinition: true } }), {\r\n enabled: (path) => path.getArray().length > 0\r\n }),\r\n bedrock_roof_position: core_1.NumberNode({ integer: true }),\r\n bedrock_floor_position: core_1.NumberNode({ integer: true }),\r\n sea_level: core_1.NumberNode({ integer: true }),\r\n disable_mob_generation: core_1.BooleanNode(),\r\n default_block: Reference('block_state'),\r\n default_fluid: Reference('block_state'),\r\n noise: core_1.ObjectNode({\r\n height: core_1.NumberNode({ integer: true }),\r\n density_factor: core_1.NumberNode(),\r\n density_offset: core_1.NumberNode(),\r\n size_horizontal: core_1.NumberNode({ integer: true }),\r\n size_vertical: core_1.NumberNode({ integer: true }),\r\n simplex_surface_noise: core_1.BooleanNode(),\r\n random_density_offset: core_1.Opt(core_1.BooleanNode()),\r\n island_noise_override: core_1.Opt(core_1.BooleanNode()),\r\n amplified: core_1.Opt(core_1.BooleanNode()),\r\n sampling: core_1.ObjectNode({\r\n xz_scale: core_1.NumberNode(),\r\n y_scale: core_1.NumberNode(),\r\n xz_factor: core_1.NumberNode(),\r\n y_factor: core_1.NumberNode()\r\n }),\r\n bottom_slide: core_1.ObjectNode({\r\n target: core_1.NumberNode({ integer: true }),\r\n size: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode({ integer: true })\r\n }),\r\n top_slide: core_1.ObjectNode({\r\n target: core_1.NumberNode({ integer: true }),\r\n size: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode({ integer: true })\r\n })\r\n }),\r\n structures: Reference('generator_structures')\r\n }, { context: 'noise_settings' }), {\r\n default: () => Common_1.DefaultNoiseSettings\r\n }));\r\n schemas.register('generator_structures', core_1.ObjectNode({\r\n stronghold: core_1.Opt(core_1.ObjectNode({\r\n distance: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n spread: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n count: core_1.NumberNode({ integer: true, min: 1, max: 4095 })\r\n })),\r\n structures: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }), core_1.Mod(core_1.ObjectNode({\r\n spacing: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n separation: core_1.Mod(core_1.NumberNode({ integer: true, min: 0, max: 4096 }), (node) => ({\r\n validate: (path, value, errors, options) => {\r\n if (path.pop().push('spacing').get() <= value) {\r\n errors.add(path, 'error.separation_smaller_spacing');\r\n }\r\n return node.validate(path, value, errors, options);\r\n }\r\n })),\r\n salt: core_1.NumberNode({ integer: true, min: 0 })\r\n }, { context: 'generator_structure' }), {\r\n default: () => ({\r\n spacing: 10,\r\n separation: 5,\r\n salt: 0\r\n })\r\n }))\r\n }));\r\n schemas.register('generator_layer', core_1.Mod(core_1.ObjectNode({\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n height: core_1.NumberNode({ integer: true, min: 1 })\r\n }), {\r\n default: () => ({\r\n block: 'minecraft:stone',\r\n height: 1\r\n })\r\n }));\r\n}\r\nexports.initNoiseSettingsSchemas = initNoiseSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initStructureFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initStructureFeatureSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const templatePoolConfig = {\r\n start_pool: StringNode({ validator: 'resource', params: { pool: '$worldgen/template_pool' } }),\r\n size: core_1.NumberNode({ integer: true })\r\n };\r\n schemas.register('configured_structure_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bastion_remnant': templatePoolConfig,\r\n 'minecraft:buried_treasure': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:mineshaft': {\r\n type: StringNode({ enum: ['normal', 'mesa'] }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:ocean_ruin': {\r\n biome_temp: StringNode({ enum: ['cold', 'warm'] }),\r\n large_probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n cluster_probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:pillager_outpost': templatePoolConfig,\r\n 'minecraft:ruined_portal': {\r\n portal_type: StringNode({ enum: ['standard', 'desert', 'jungle', 'mountain', 'nether', 'ocean', 'swamp'] })\r\n },\r\n 'minecraft:shipwreck': {\r\n is_beached: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:village': templatePoolConfig\r\n }\r\n }, { context: 'structure_feature', disableSwitchContext: true })\r\n }, { context: 'structure_feature' }), {\r\n default: () => ({\r\n type: 'minecraft:bastion_remnant',\r\n config: {\r\n start_pool: 'minecraft:bastion/starts',\r\n size: 6\r\n }\r\n })\r\n }));\r\n}\r\nexports.initStructureFeatureSchemas = initStructureFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSurfaceBuilderSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initSurfaceBuilderSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('configured_surface_builder', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/surface_builder' } }),\r\n config: core_1.ObjectNode({\r\n top_material: Reference('block_state'),\r\n under_material: Reference('block_state'),\r\n underwater_material: Reference('block_state'),\r\n }, { context: 'surface_builder' })\r\n }, { context: 'surface_builder' }), {\r\n default: () => ({\r\n type: 'minecraft:default',\r\n config: {\r\n top_material: {\r\n Name: 'minecraft:grass_block',\r\n Properties: {\r\n snowy: 'false'\r\n }\r\n },\r\n under_material: {\r\n Name: 'minecraft:dirt'\r\n },\r\n underwater_material: {\r\n Name: 'minecraft:gravel'\r\n }\r\n }\r\n })\r\n }));\r\n}\r\nexports.initSurfaceBuilderSchemas = initSurfaceBuilderSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTemplatePoolSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nrequire(\"./ProcessorList\");\r\nfunction initTemplatePoolSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Processors = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/processor_list' } }),\r\n change: v => undefined\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('processor_list'),\r\n change: v => ({\r\n processors: [{\r\n \"processor_type\": \"minecraft:nop\"\r\n }]\r\n })\r\n }\r\n ]);\r\n schemas.register('template_pool', core_1.Mod(core_1.ObjectNode({\r\n name: StringNode(),\r\n fallback: StringNode(),\r\n elements: core_1.ListNode(Reference('template_weighted_element'))\r\n }, { context: 'template_pool' }), {\r\n default: () => ({\r\n fallback: 'minecraft:empty',\r\n elements: [\r\n {\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n }\r\n ]\r\n })\r\n }));\r\n schemas.register('template_weighted_element', core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n element: Reference('template_element')\r\n }, { category: 'pool' }), {\r\n default: () => ({\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n })\r\n }));\r\n schemas.register('template_element', core_1.Mod(core_1.ObjectNode({\r\n element_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_pool_element' } }),\r\n projection: StringNode({ enum: ['rigid', 'terrain_matching'] }),\r\n [core_1.Switch]: [{ push: 'element_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:feature_pool_element': {\r\n feature: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n 'minecraft:legacy_single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: Processors\r\n },\r\n 'minecraft:list_pool_element': {\r\n elements: core_1.ListNode(Reference('template_element'))\r\n },\r\n 'minecraft:single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: Processors\r\n }\r\n }\r\n }, { context: 'template_element', disableSwitchContext: true }), {\r\n default: () => ({\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n })\r\n }));\r\n}\r\nexports.initTemplatePoolSchemas = initTemplatePoolSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldgenSchemas = void 0;\r\nconst Biome_1 = require(\"./Biome\");\r\nconst Carver_1 = require(\"./Carver\");\r\nconst Decorator_1 = require(\"./Decorator\");\r\nconst Feature_1 = require(\"./Feature\");\r\nconst NoiseSettings_1 = require(\"./NoiseSettings\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nconst StructureFeature_1 = require(\"./StructureFeature\");\r\nconst SurfaceBuilder_1 = require(\"./SurfaceBuilder\");\r\nconst TemplatePool_1 = require(\"./TemplatePool\");\r\nfunction initWorldgenSchemas(schemas, collections) {\r\n Biome_1.initBiomeSchemas(schemas, collections);\r\n Carver_1.initCarverSchemas(schemas, collections);\r\n Decorator_1.initDecoratorSchemas(schemas, collections);\r\n Feature_1.initFeatureSchemas(schemas, collections);\r\n NoiseSettings_1.initNoiseSettingsSchemas(schemas, collections);\r\n ProcessorList_1.initProcessorListSchemas(schemas, collections);\r\n StructureFeature_1.initStructureFeatureSchemas(schemas, collections);\r\n SurfaceBuilder_1.initSurfaceBuilderSchemas(schemas, collections);\r\n TemplatePool_1.initTemplatePoolSchemas(schemas, collections);\r\n}\r\nexports.initWorldgenSchemas = initWorldgenSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initWorldSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('world_settings', core_1.Mod(core_1.ObjectNode({\r\n generate_features: core_1.BooleanNode(),\r\n bonus_chest: core_1.BooleanNode(),\r\n seed: core_1.NumberNode({ integer: true }),\r\n dimensions: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$dimension' } }), Reference('dimension'))\r\n }, { context: 'world_settings' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n generate_features: true,\r\n bonus_chest: false,\r\n seed,\r\n dimensions: {\r\n 'minecraft:overworld': {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:vanilla_layered',\r\n seed\r\n },\r\n settings: 'minecraft:overworld',\r\n }\r\n },\r\n 'minecraft:the_nether': {\r\n type: 'minecraft:the_nether',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:multi_noise',\r\n seed,\r\n humidity_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n altitude_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n weirdness_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n temperature_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n biomes: [\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: 0.0 },\r\n biome: 'minecraft:nether_wastes'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: -0.5 },\r\n biome: 'minecraft:soul_sand_valley'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.4, humidity: 0.0 },\r\n biome: 'minecraft:crimson_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.375, temperature: 0.0, humidity: 0.5 },\r\n biome: 'minecraft:warped_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.175, temperature: -0.5, humidity: 0.0 },\r\n biome: 'minecraft:basalt_deltas'\r\n }\r\n ]\r\n },\r\n settings: 'minecraft:nether'\r\n }\r\n },\r\n 'minecraft:the_end': {\r\n type: \"minecraft:the_end\",\r\n generator: {\r\n type: \"minecraft:noise\",\r\n seed,\r\n biome_source: {\r\n type: \"minecraft:the_end\",\r\n seed\r\n },\r\n settings: \"minecraft:end\"\r\n }\r\n }\r\n }\r\n };\r\n }\r\n }));\r\n}\r\nexports.initWorldSettingsSchemas = initWorldSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSchemas = void 0;\r\nconst Advancement_1 = require(\"./Advancement\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Condition_1 = require(\"./Condition\");\r\nconst Dimension_1 = require(\"./Dimension\");\r\nconst DimensionType_1 = require(\"./DimensionType\");\r\nconst LootTable_1 = require(\"./LootTable\");\r\nconst PackMcmeta_1 = require(\"./PackMcmeta\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nconst Recipe_1 = require(\"./Recipe\");\r\nconst Tags_1 = require(\"./Tags\");\r\nconst TextComponent_1 = require(\"./TextComponent\");\r\nconst worldgen_1 = require(\"./worldgen\");\r\nconst WorldSettings_1 = require(\"./WorldSettings\");\r\nfunction initSchemas(schemas, collections) {\r\n // `Common.ts` is the only file that has exports. It should be initialized first. \r\n Common_1.initCommonSchemas(schemas, collections);\r\n Advancement_1.initAdvancementSchemas(schemas, collections);\r\n Condition_1.initConditionSchemas(schemas, collections);\r\n DimensionType_1.initDimensionTypeSchemas(schemas, collections);\r\n Dimension_1.initDimensionSchemas(schemas, collections);\r\n LootTable_1.initLootTableSchemas(schemas, collections);\r\n PackMcmeta_1.initPackMcmetaSchemas(schemas, collections);\r\n Predicates_1.initPredicatesSchemas(schemas, collections);\r\n Recipe_1.initRecipeSchemas(schemas, collections);\r\n Tags_1.initTagsSchemas(schemas, collections);\r\n TextComponent_1.initTextComponentSchemas(schemas, collections);\r\n worldgen_1.initWorldgenSchemas(schemas, collections);\r\n WorldSettings_1.initWorldSettingsSchemas(schemas, collections);\r\n}\r\nexports.initSchemas = initSchemas;\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getSchemas = exports.getCollections = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Collections_1 = require(\"./Collections\");\r\nconst schemas_1 = require(\"./schemas\");\r\nexports.lootContext = __importStar(require(\"./LootContext\"));\r\nfunction getCollections() {\r\n const collections = new core_1.CollectionRegistry();\r\n Collections_1.initCollections(collections);\r\n return collections;\r\n}\r\nexports.getCollections = getCollections;\r\n/**\r\n * @param collections The CollectionRegistry for this version. Note that apart from\r\n * the built-in collections, the client of this module is responsible for futhermore\r\n * adding the vanilla registries to it: the collection IDs shouldn't contain the\r\n * namespace (`minecraft:`) part, while the values within the collections should.\r\n *\r\n * @example\r\n * for (const key in VANILLA_REGISTRIES>) {\r\n * collections.register(\r\n * key.replace(/^minecraft:/, ''),\r\n * Object.keys(VANILLA_REGISTRIES[key].entries)\r\n * )\r\n * }\r\n */\r\nfunction getSchemas(collections) {\r\n const schemas = new core_1.SchemaRegistry();\r\n schemas_1.initSchemas(schemas, collections);\r\n return schemas;\r\n}\r\nexports.getSchemas = getSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCollections = void 0;\r\nfunction initCollections(collections) {\r\n collections.register('advancement_trigger', [\r\n 'minecraft:bee_nest_destroyed',\r\n 'minecraft:bred_animals',\r\n 'minecraft:brewed_potion',\r\n 'minecraft:changed_dimension',\r\n 'minecraft:channeled_lightning',\r\n 'minecraft:construct_beacon',\r\n 'minecraft:consume_item',\r\n 'minecraft:cured_zombie_villager',\r\n 'minecraft:effects_changed',\r\n 'minecraft:enchanted_item',\r\n 'minecraft:enter_block',\r\n 'minecraft:entity_hurt_player',\r\n 'minecraft:entity_killed_player',\r\n 'minecraft:filled_bucket',\r\n 'minecraft:fishing_rod_hooked',\r\n 'minecraft:hero_of_the_village',\r\n 'minecraft:impossible',\r\n 'minecraft:inventory_changed',\r\n 'minecraft:item_durability_changed',\r\n 'minecraft:item_used_on_block',\r\n 'minecraft:killed_by_crossbow',\r\n 'minecraft:levitation',\r\n 'minecraft:lightning_strike',\r\n 'minecraft:location',\r\n 'minecraft:nether_travel',\r\n 'minecraft:placed_block',\r\n 'minecraft:player_generates_container_loot',\r\n 'minecraft:player_hurt_entity',\r\n 'minecraft:player_interacted_with_entity',\r\n 'minecraft:player_killed_entity',\r\n 'minecraft:recipe_unlocked',\r\n 'minecraft:shot_crossbow',\r\n 'minecraft:slept_in_bed',\r\n 'minecraft:slide_down_block',\r\n 'minecraft:started_riding',\r\n 'minecraft:summoned_entity',\r\n 'minecraft:tame_animal',\r\n 'minecraft:target_hit',\r\n 'minecraft:tick',\r\n 'minecraft:thrown_item_picked_up_by_entity',\r\n 'minecraft:used_ender_eye',\r\n 'minecraft:used_totem',\r\n 'minecraft:using_item',\r\n 'minecraft:villager_trade',\r\n 'minecraft:voluntary_exile'\r\n ]);\r\n collections.register('dimension', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('dimension_type', [\r\n 'minecraft:overworld',\r\n 'minecraft:the_nether',\r\n 'minecraft:the_end'\r\n ]);\r\n collections.register('keybind', [\r\n 'key.advancements',\r\n 'key.attack',\r\n 'key.back',\r\n 'key.chat',\r\n 'key.command',\r\n 'key.drop',\r\n 'key.forward',\r\n 'key.fullscreen',\r\n 'key.hotbar.1',\r\n 'key.hotbar.2',\r\n 'key.hotbar.3',\r\n 'key.hotbar.4',\r\n 'key.hotbar.5',\r\n 'key.hotbar.6',\r\n 'key.hotbar.7',\r\n 'key.hotbar.8',\r\n 'key.hotbar.9',\r\n 'key.inventory',\r\n 'key.jump',\r\n 'key.left',\r\n 'key.loadToolbarActivator',\r\n 'key.pickItem',\r\n 'key.playerlist',\r\n 'key.right',\r\n 'key.saveToolbarActivator',\r\n 'key.screenshot',\r\n 'key.smoothCamera',\r\n 'key.sneak',\r\n 'key.spectatorOutlines',\r\n 'key.sprint',\r\n 'key.swapOffhand',\r\n 'key.togglePerspective',\r\n 'key.use'\r\n ]);\r\n collections.register('slot', [\r\n 'mainhand',\r\n 'offhand',\r\n 'head',\r\n 'chest',\r\n 'legs',\r\n 'feet'\r\n ]);\r\n collections.register('gamemode', [\r\n 'survival',\r\n 'creative',\r\n 'adventure',\r\n 'spectator'\r\n ]);\r\n collections.register('worldgen/noise_settings', [\r\n 'minecraft:overworld',\r\n 'minecraft:nether',\r\n 'minecraft:end',\r\n 'minecraft:amplified',\r\n 'minecraft:caves',\r\n 'minecraft:floating_islands'\r\n ]);\r\n collections.register('entity_source', [\r\n 'this',\r\n 'killer',\r\n 'direct_killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('copy_source', [\r\n 'block_entity',\r\n 'this',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('loot_table_apply_bonus_formula', [\r\n 'minecraft:uniform_bonus_count',\r\n 'minecraft:binomial_with_bonus_count',\r\n 'minecraft:ore_drops'\r\n ]);\r\n collections.register('map_decoration', [\r\n 'mansion',\r\n 'monument',\r\n 'player',\r\n 'frame',\r\n 'red_marker',\r\n 'blue_marker',\r\n 'target_x',\r\n 'target_point',\r\n 'player_off_map',\r\n 'player_off_limits',\r\n 'red_x',\r\n 'banner_white',\r\n 'banner_orange',\r\n 'banner_magenta',\r\n 'banner_light_blue',\r\n 'banner_yellow',\r\n 'banner_lime',\r\n 'banner_pink',\r\n 'banner_gray',\r\n 'banner_light_gray',\r\n 'banner_cyan',\r\n 'banner_purple',\r\n 'banner_blue',\r\n 'banner_brown',\r\n 'banner_green',\r\n 'banner_red',\r\n 'banner_black'\r\n ]);\r\n collections.register('map_feature', [\r\n 'bastion_remnant',\r\n 'buried_treasure',\r\n 'desert_pyramid',\r\n 'endcity',\r\n 'fortress',\r\n 'igloo',\r\n 'jungle_pyramid',\r\n 'mansion',\r\n 'mineshaft',\r\n 'monument',\r\n 'nether_fossil',\r\n 'ocean_ruin',\r\n 'pillager_outpost',\r\n 'ruined_portal',\r\n 'shipwreck',\r\n 'stronghold',\r\n 'swamp_hut',\r\n 'village'\r\n ]);\r\n collections.register('recipe_group', [\r\n 'bed',\r\n 'light_gray_dye',\r\n 'iron_ingot',\r\n 'wooden_stairs',\r\n 'black_dye',\r\n 'stained_terracotta',\r\n 'dyed_bed',\r\n 'magenta_dye',\r\n 'bark',\r\n 'rabbit_stew',\r\n 'light_blue_dye',\r\n 'wooden_fence_gate',\r\n 'planks',\r\n 'stained_glass',\r\n 'wooden_door',\r\n 'stained_glass_pane',\r\n 'wooden_fence',\r\n 'sticks',\r\n 'concrete_powder',\r\n 'wooden_pressure_plate',\r\n 'boat',\r\n 'brown_dye',\r\n 'yellow_dye',\r\n 'bonemeal',\r\n 'red_dye',\r\n 'wooden_trapdoor',\r\n 'wooden_button',\r\n 'gold_ingot',\r\n 'pink_dye',\r\n 'wooden_slab',\r\n 'orange_dye',\r\n 'carpet',\r\n 'sign',\r\n 'wool',\r\n 'sugar',\r\n 'blue_dye',\r\n 'white_dye',\r\n 'banner',\r\n 'netherite_ingot'\r\n ]);\r\n collections.register('worldgen/configured_feature', [\r\n 'minecraft:acacia',\r\n 'minecraft:bamboo_light',\r\n 'minecraft:bamboo_vegetation',\r\n 'minecraft:bamboo',\r\n 'minecraft:basalt_blobs',\r\n 'minecraft:basalt_pillar',\r\n 'minecraft:birch_bees_0002',\r\n 'minecraft:birch_bees_002',\r\n 'minecraft:birch_bees_005',\r\n 'minecraft:birch_other',\r\n 'minecraft:birch_tall',\r\n 'minecraft:birch',\r\n 'minecraft:blackstone_blobs',\r\n 'minecraft:blue_ice',\r\n 'minecraft:bonus_chest',\r\n 'minecraft:brown_mushroom_giant',\r\n 'minecraft:brown_mushroom_nether',\r\n 'minecraft:brown_mushroom_normal',\r\n 'minecraft:brown_mushroom_swamp',\r\n 'minecraft:brown_mushroom_taiga',\r\n 'minecraft:chorus_plant',\r\n 'minecraft:crimson_forest_vegetation',\r\n 'minecraft:crimson_fungi_planted',\r\n 'minecraft:crimson_fungi',\r\n 'minecraft:dark_forest_vegetation_brown',\r\n 'minecraft:dark_forest_vegetation_red',\r\n 'minecraft:dark_oak',\r\n 'minecraft:delta',\r\n 'minecraft:desert_well',\r\n 'minecraft:disk_clay',\r\n 'minecraft:disk_gravel',\r\n 'minecraft:disk_sand',\r\n 'minecraft:end_gateway_delayed',\r\n 'minecraft:end_gateway',\r\n 'minecraft:end_island_decorated',\r\n 'minecraft:end_island',\r\n 'minecraft:end_spike',\r\n 'minecraft:fancy_oak_bees_0002',\r\n 'minecraft:fancy_oak_bees_002',\r\n 'minecraft:fancy_oak_bees_005',\r\n 'minecraft:fancy_oak',\r\n 'minecraft:flower_default',\r\n 'minecraft:flower_forest',\r\n 'minecraft:flower_plain_decorated',\r\n 'minecraft:flower_plain',\r\n 'minecraft:flower_swamp',\r\n 'minecraft:flower_warm',\r\n 'minecraft:forest_flower_trees',\r\n 'minecraft:forest_flower_vegetation_common',\r\n 'minecraft:forest_flower_vegetation',\r\n 'minecraft:forest_rock',\r\n 'minecraft:fossil',\r\n 'minecraft:freeze_top_layer',\r\n 'minecraft:glowstone_extra',\r\n 'minecraft:glowstone',\r\n 'minecraft:huge_brown_mushroom',\r\n 'minecraft:huge_red_mushroom',\r\n 'minecraft:ice_patch',\r\n 'minecraft:ice_spike',\r\n 'minecraft:iceberg_blue',\r\n 'minecraft:iceberg_packed',\r\n 'minecraft:jungle_bush',\r\n 'minecraft:jungle_tree_no_vine',\r\n 'minecraft:jungle_tree',\r\n 'minecraft:kelp_cold',\r\n 'minecraft:kelp_warm',\r\n 'minecraft:lake_lava',\r\n 'minecraft:lake_water',\r\n 'minecraft:large_basalt_columns',\r\n 'minecraft:mega_jungle_tree',\r\n 'minecraft:mega_pine',\r\n 'minecraft:mega_spruce',\r\n 'minecraft:monster_room',\r\n 'minecraft:mushroom_field_vegetation',\r\n 'minecraft:nether_sprouts',\r\n 'minecraft:oak_badlands',\r\n 'minecraft:oak_bees_0002',\r\n 'minecraft:oak_bees_002',\r\n 'minecraft:oak_bees_005',\r\n 'minecraft:oak',\r\n 'minecraft:ore_andesite',\r\n 'minecraft:ore_blackstone',\r\n 'minecraft:ore_coal',\r\n 'minecraft:ore_debris_large',\r\n 'minecraft:ore_debris_small',\r\n 'minecraft:ore_diamond',\r\n 'minecraft:ore_diorite',\r\n 'minecraft:ore_dirt',\r\n 'minecraft:ore_emerald',\r\n 'minecraft:ore_gold_deltas',\r\n 'minecraft:ore_gold_extra',\r\n 'minecraft:ore_gold_nether',\r\n 'minecraft:ore_gold',\r\n 'minecraft:ore_granite',\r\n 'minecraft:ore_gravel_nether',\r\n 'minecraft:ore_gravel',\r\n 'minecraft:ore_infested',\r\n 'minecraft:ore_iron',\r\n 'minecraft:ore_lapis',\r\n 'minecraft:ore_magma',\r\n 'minecraft:ore_quartz_deltas',\r\n 'minecraft:ore_quartz_nether',\r\n 'minecraft:ore_redstone',\r\n 'minecraft:ore_soul_sand',\r\n 'minecraft:patch_berry_bush',\r\n 'minecraft:patch_berry_decorated',\r\n 'minecraft:patch_berry_sparse',\r\n 'minecraft:patch_brown_mushroom',\r\n 'minecraft:patch_cactus_decorated',\r\n 'minecraft:patch_cactus_desert',\r\n 'minecraft:patch_cactus',\r\n 'minecraft:patch_crimson_roots',\r\n 'minecraft:patch_dead_bush_2',\r\n 'minecraft:patch_dead_bush_badlands',\r\n 'minecraft:patch_dead_bush',\r\n 'minecraft:patch_fire',\r\n 'minecraft:patch_grass_badlands',\r\n 'minecraft:patch_grass_forest',\r\n 'minecraft:patch_grass_jungle',\r\n 'minecraft:patch_grass_normal',\r\n 'minecraft:patch_grass_plain',\r\n 'minecraft:patch_grass_savanna',\r\n 'minecraft:patch_grass_taiga_2',\r\n 'minecraft:patch_grass_taiga',\r\n 'minecraft:patch_large_fern',\r\n 'minecraft:patch_melon',\r\n 'minecraft:patch_pumpkin',\r\n 'minecraft:patch_red_mushroom',\r\n 'minecraft:patch_soul_fire',\r\n 'minecraft:patch_sugar_cane_badlands',\r\n 'minecraft:patch_sugar_cane_desert',\r\n 'minecraft:patch_sugar_cane_swamp',\r\n 'minecraft:patch_sugar_cane',\r\n 'minecraft:patch_sunflower',\r\n 'minecraft:patch_taiga_grass',\r\n 'minecraft:patch_tall_grass_2',\r\n 'minecraft:patch_tall_grass',\r\n 'minecraft:patch_waterlilly',\r\n 'minecraft:pile_hay',\r\n 'minecraft:pile_ice',\r\n 'minecraft:pile_melon',\r\n 'minecraft:pile_pumpkin',\r\n 'minecraft:pile_snow',\r\n 'minecraft:pine',\r\n 'minecraft:plain_vegetation',\r\n 'minecraft:red_mushroom_giant',\r\n 'minecraft:red_mushroom_nether',\r\n 'minecraft:red_mushroom_normal',\r\n 'minecraft:red_mushroom_swamp',\r\n 'minecraft:red_mushroom_taiga',\r\n 'minecraft:sea_pickle',\r\n 'minecraft:seagrass_cold',\r\n 'minecraft:seagrass_deep_cold',\r\n 'minecraft:seagrass_deep_warm',\r\n 'minecraft:seagrass_deep',\r\n 'minecraft:seagrass_normal',\r\n 'minecraft:seagrass_river',\r\n 'minecraft:seagrass_simple',\r\n 'minecraft:seagrass_swamp',\r\n 'minecraft:seagrass_warm',\r\n 'minecraft:small_basalt_columns',\r\n 'minecraft:spring_closed_double',\r\n 'minecraft:spring_closed',\r\n 'minecraft:spring_delta',\r\n 'minecraft:spring_lava_double',\r\n 'minecraft:spring_lava',\r\n 'minecraft:spring_open',\r\n 'minecraft:spring_water',\r\n 'minecraft:spruce_snowy',\r\n 'minecraft:spruce',\r\n 'minecraft:super_birch_bees_0002',\r\n 'minecraft:swamp_tree',\r\n 'minecraft:taiga_vegetation',\r\n 'minecraft:trees_birch',\r\n 'minecraft:trees_giant_spruce',\r\n 'minecraft:trees_giant',\r\n 'minecraft:trees_jungle_edge',\r\n 'minecraft:trees_jungle',\r\n 'minecraft:trees_mountain_edge',\r\n 'minecraft:trees_mountain',\r\n 'minecraft:trees_savanna',\r\n 'minecraft:trees_shattered_savanna',\r\n 'minecraft:trees_water',\r\n 'minecraft:twisting_vines',\r\n 'minecraft:vines',\r\n 'minecraft:void_start_platform',\r\n 'minecraft:warm_ocean_vegetation',\r\n 'minecraft:warped_forest_vegetation',\r\n 'minecraft:warped_fungi_planted',\r\n 'minecraft:warped_fungi',\r\n 'minecraft:weeping_vines'\r\n ]);\r\n collections.register('worldgen/configured_structure_feature', [\r\n 'minecraft:bastion_remnant',\r\n 'minecraft:buried_treasure',\r\n 'minecraft:desert_pyramid',\r\n 'minecraft:end_city',\r\n 'minecraft:fortress',\r\n 'minecraft:igloo',\r\n 'minecraft:jungle_pyramid',\r\n 'minecraft:mansion',\r\n 'minecraft:mineshaft_mesa',\r\n 'minecraft:mineshaft',\r\n 'minecraft:monument',\r\n 'minecraft:nether_fossil',\r\n 'minecraft:ocean_ruin_cold',\r\n 'minecraft:ocean_ruin_warm',\r\n 'minecraft:pillager_outpost',\r\n 'minecraft:ruined_portal_desert',\r\n 'minecraft:ruined_portal_jungle',\r\n 'minecraft:ruined_portal_mountain',\r\n 'minecraft:ruined_portal_nether',\r\n 'minecraft:ruined_portal_ocean',\r\n 'minecraft:ruined_portal_swamp',\r\n 'minecraft:ruined_portal',\r\n 'minecraft:shipwreck_beached',\r\n 'minecraft:shipwreck',\r\n 'minecraft:stronghold',\r\n 'minecraft:swamp_hut',\r\n 'minecraft:village_desert',\r\n 'minecraft:village_plains',\r\n 'minecraft:village_savanna',\r\n 'minecraft:village_snowy',\r\n 'minecraft:village_taiga'\r\n ]);\r\n collections.register('worldgen/configured_surface_builder', [\r\n 'minecraft:badlands',\r\n 'minecraft:basalt_deltas',\r\n 'minecraft:crimson_forest',\r\n 'minecraft:desert',\r\n 'minecraft:end',\r\n 'minecraft:eroded_badlands',\r\n 'minecraft:frozen_ocean',\r\n 'minecraft:full_sand',\r\n 'minecraft:giant_tree_taiga',\r\n 'minecraft:grass',\r\n 'minecraft:gravelly_mountain',\r\n 'minecraft:ice_spikes',\r\n 'minecraft:mountain',\r\n 'minecraft:mycelium',\r\n 'minecraft:nether',\r\n 'minecraft:nope',\r\n 'minecraft:ocean_sand',\r\n 'minecraft:shattered_savanna',\r\n 'minecraft:soul_sand_valley',\r\n 'minecraft:stone',\r\n 'minecraft:swamp',\r\n 'minecraft:warped_forest',\r\n 'minecraft:wooded_badlands'\r\n ]);\r\n collections.register('biome_category', [\r\n 'beach',\r\n 'desert',\r\n 'extreme_hills',\r\n 'forest',\r\n 'icy',\r\n 'jungle',\r\n 'mesa',\r\n 'mushroom',\r\n 'nether',\r\n 'none',\r\n 'ocean',\r\n 'plains',\r\n 'river',\r\n 'savanna',\r\n 'swamp',\r\n 'taiga',\r\n 'the_end',\r\n 'underground'\r\n ]);\r\n collections.register('heightmap_type', [\r\n 'MOTION_BLOCKING',\r\n 'MOTION_BLOCKING_NO_LEAVES',\r\n 'OCEAN_FLOOR',\r\n 'OCEAN_FLOOR_WG',\r\n 'WORLD_SURFACE',\r\n 'WORLD_SURFACE_WG'\r\n ]);\r\n collections.register('generation_step', [\r\n 'air',\r\n 'liquid'\r\n ]);\r\n collections.register('loot_context_type', [\r\n 'minecraft:empty',\r\n 'minecraft:chest',\r\n 'minecraft:command',\r\n 'minecraft:selector',\r\n 'minecraft:fishing',\r\n 'minecraft:entity',\r\n 'minecraft:gift',\r\n 'minecraft:barter',\r\n 'minecraft:advancement_reward',\r\n 'minecraft:advancement_entity',\r\n 'minecraft:generic',\r\n 'minecraft:block'\r\n ]);\r\n collections.register('banner_pattern', [\r\n 'base',\r\n 'square_bottom_left',\r\n 'square_bottom_right',\r\n 'square_top_left',\r\n 'square_top_right',\r\n 'stripe_bottom',\r\n 'stripe_top',\r\n 'stripe_left',\r\n 'stripe_right',\r\n 'stripe_center',\r\n 'stripe_middle',\r\n 'stripe_downright',\r\n 'stripe_downleft',\r\n 'small_stripes',\r\n 'cross',\r\n 'straight_cross',\r\n 'triangle_bottom',\r\n 'triangle_top',\r\n 'triangles_bottom',\r\n 'triangles_top',\r\n 'diagonal_left',\r\n 'diagonal_up_right',\r\n 'diagonal_up_left',\r\n 'diagonal_right',\r\n 'circle',\r\n 'rhombus',\r\n 'half_vertical',\r\n 'half_horizontal',\r\n 'half_vertical_right',\r\n 'half_horizontal_bottom',\r\n 'border',\r\n 'curly_border',\r\n 'gradient',\r\n 'gradient_up',\r\n 'bricks',\r\n 'globe',\r\n 'creeper',\r\n 'skull',\r\n 'flower',\r\n 'mojang',\r\n 'piglin'\r\n ]);\r\n collections.register('dye_color', [\r\n 'white',\r\n 'orange',\r\n 'magenta',\r\n 'light_blue',\r\n 'yellow',\r\n 'lime',\r\n 'pink',\r\n 'gray',\r\n 'light_gray',\r\n 'cyan',\r\n 'purple',\r\n 'blue',\r\n 'brown',\r\n 'green',\r\n 'red',\r\n 'black'\r\n ]);\r\n}\r\nexports.initCollections = initCollections;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initAdvancementSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initAdvancementSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const EntityPredicate = core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.Opt(Reference('entity_predicate')),\r\n change: v => { var _a, _b; return (_b = (_a = v[0]) === null || _a === void 0 ? void 0 : _a.predicate) !== null && _b !== void 0 ? _b : ({}); }\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('condition')),\r\n change: v => [{\r\n condition: 'minecraft:entity_properties',\r\n predicate: v\r\n }]\r\n }\r\n ], { context: 'conditions' });\r\n schemas.register('advancement', core_1.Mod(core_1.ObjectNode({\r\n display: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n icon: core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } }))\r\n }),\r\n title: Reference('text_component'),\r\n description: Reference('text_component'),\r\n background: core_1.Opt(StringNode()),\r\n frame: core_1.Opt(StringNode({ enum: ['task', 'challenge', 'goal'] })),\r\n show_toast: core_1.Opt(core_1.BooleanNode()),\r\n announce_to_chat: core_1.Opt(core_1.BooleanNode()),\r\n hidden: core_1.Opt(core_1.BooleanNode())\r\n }), {\r\n default: () => ({\r\n icon: {\r\n item: 'minecraft:stone'\r\n },\r\n title: '',\r\n description: ''\r\n })\r\n })),\r\n parent: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$advancement' } })),\r\n criteria: core_1.MapNode(StringNode(), Reference('advancement_criteria')),\r\n requirements: core_1.Opt(core_1.ListNode(core_1.ListNode(StringNode() // TODO: add validation\r\n ))),\r\n rewards: core_1.Opt(core_1.ObjectNode({\r\n function: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$function' } })),\r\n loot: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$loot_table' } }))),\r\n recipes: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }))),\r\n experience: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n })),\r\n }, { context: 'advancement' }), {\r\n default: () => ({\r\n criteria: {\r\n requirement: {\r\n trigger: 'minecraft:location'\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('advancement_criteria', core_1.ObjectNode({\r\n trigger: StringNode({ validator: 'resource', params: { pool: collections.get('advancement_trigger') } }),\r\n conditions: core_1.Opt(core_1.ObjectNode({\r\n player: core_1.Mod(EntityPredicate, {\r\n enabled: path => path.pop().push('trigger').get() !== 'minecraft:impossible'\r\n }),\r\n [core_1.Switch]: ['pop', { push: 'trigger' }],\r\n [core_1.Case]: {\r\n 'minecraft:bee_nest_destroyed': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n num_bees_inside: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:bred_animals': {\r\n parent: EntityPredicate,\r\n partner: EntityPredicate,\r\n child: EntityPredicate\r\n },\r\n 'minecraft:brewed_potion': {\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } }))\r\n },\r\n 'minecraft:changed_dimension': {\r\n from: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n to: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } }))\r\n },\r\n 'minecraft:channeled_lightning': {\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:construct_beacon': {\r\n level: Reference('int_bounds')\r\n },\r\n 'minecraft:consume_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:cured_zombie_villager': {\r\n villager: EntityPredicate,\r\n zombie: EntityPredicate\r\n },\r\n 'minecraft:effects_changed': {\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), core_1.ObjectNode({\r\n amplifier: Reference('int_bounds'),\r\n duration: Reference('int_bounds')\r\n }))),\r\n source: core_1.Opt(EntityPredicate)\r\n },\r\n 'minecraft:enter_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n },\r\n 'minecraft:enchanted_item': {\r\n levels: Reference('int_bounds'),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:entity_hurt_player': {\r\n damage: core_1.Opt(Reference('damage_predicate'))\r\n },\r\n 'minecraft:entity_killed_player': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:filled_bucket': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:fishing_rod_hooked': {\r\n entity: EntityPredicate,\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:hero_of_the_village': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:inventory_changed': {\r\n slots: core_1.Opt(core_1.ObjectNode({\r\n empty: Reference('int_bounds'),\r\n occupied: Reference('int_bounds'),\r\n full: Reference('int_bounds')\r\n })),\r\n items: core_1.Opt(core_1.ListNode(Reference('item_predicate')))\r\n },\r\n 'minecraft:item_durability_changed': {\r\n delta: Reference('int_bounds'),\r\n durability: Reference('int_bounds'),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:item_used_on_block': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:killed_by_crossbow': {\r\n unique_entity_types: Reference('int_bounds'),\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:levitation': {\r\n distance: Reference('distance_predicate'),\r\n duration: Reference('int_bounds')\r\n },\r\n 'minecraft:lightning_strike': {\r\n lightning: EntityPredicate,\r\n bystander: EntityPredicate,\r\n },\r\n 'minecraft:location': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:nether_travel': {\r\n distance: Reference('distance_predicate'),\r\n entered: core_1.Opt(Reference('location_predicate')),\r\n exited: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:placed_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })),\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:player_generates_container_loot': {\r\n loot_table: StringNode({ validator: 'resource', params: { pool: '$loot_table' } })\r\n },\r\n 'minecraft:player_hurt_entity': {\r\n damage: core_1.Opt(Reference('damage_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_interacted_with_entity': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_killed_entity': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:recipe_unlocked': {\r\n recipe: StringNode({ validator: 'resource', params: { pool: '$recipe' } })\r\n },\r\n 'minecraft:slept_in_bed': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:slide_down_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:shot_crossbow': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:summoned_entity': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:tame_animal': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:target_hit': {\r\n projectile: EntityPredicate,\r\n shooter: EntityPredicate,\r\n signal_strength: Reference('int_bounds')\r\n },\r\n 'minecraft:thrown_item_picked_up_by_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:used_ender_eye': {\r\n distance: Reference('float_bounds')\r\n },\r\n 'minecraft:used_totem': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:using_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:villager_trade': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:voluntary_exile': {\r\n location: Reference('location_predicate')\r\n }\r\n }\r\n }, { context: 'criterion' }))\r\n }, { category: 'predicate', context: 'criterion' }));\r\n}\r\nexports.initAdvancementSchemas = initAdvancementSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCommonSchemas = exports.IntProvider = exports.FloatProvider = exports.NoiseSettingsPresets = exports.DefaultNoiseSettings = exports.DimensionTypePresets = exports.DefaultDimensionType = exports.FunctionCases = exports.ConditionCases = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nexports.DefaultDimensionType = {\r\n ultrawarm: false,\r\n natural: true,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: true,\r\n has_raids: true,\r\n has_skylight: true,\r\n has_ceiling: false,\r\n coordinate_scale: 1,\r\n ambient_light: 0,\r\n logical_height: 256,\r\n infiniburn: 'minecraft:infiniburn_overworld',\r\n min_y: 0,\r\n height: 256,\r\n};\r\nexports.DefaultNoiseSettings = {\r\n name: 'minecraft:overworld',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n disable_mob_generation: false,\r\n noise_caves_enabled: true,\r\n aquifers_enabled: true,\r\n deepslate_enabled: true,\r\n noise: {\r\n min_y: 0,\r\n height: 256,\r\n density_factor: 1,\r\n density_offset: -0.46875,\r\n simplex_surface_noise: true,\r\n random_density_offset: true,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -10,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 0,\r\n offset: 0\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n};\r\nfunction initCommonSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('block_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'Name' }] } } }))\r\n }, { context: 'block_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('fluid_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'fluid' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode()))\r\n }, { context: 'fluid_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:water',\r\n Properties: {\r\n 'level': '0'\r\n }\r\n })\r\n }));\r\n schemas.register('block_pos', core_1.Mod(core_1.ListNode(core_1.NumberNode({ integer: true }), { minLength: 3, maxLength: 3 }), {\r\n default: () => [0, 0, 0]\r\n }));\r\n const Bounds = (integer) => core_1.Opt(core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer }),\r\n change: (v) => { var _a, _b; return v === undefined ? 0 : (_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : 0; }\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer })),\r\n max: core_1.Opt(core_1.NumberNode({ integer }))\r\n }, { context: 'range' }),\r\n change: (v) => ({\r\n min: v !== null && v !== void 0 ? v : 0,\r\n max: v !== null && v !== void 0 ? v : 0\r\n })\r\n }\r\n ]));\r\n schemas.register('int_bounds', Bounds(true));\r\n schemas.register('float_bounds', Bounds());\r\n schemas.register('int_range', core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(Reference('number_provider')),\r\n max: core_1.Opt(Reference('number_provider'))\r\n })\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer: true })\r\n }\r\n ], { context: 'range' }));\r\n const ObjectWithType = (pool, directType, directPath, directDefault, objectDefault, context, cases) => {\r\n let defaultCase = {};\r\n if (objectDefault) {\r\n Object.keys(cases[objectDefault]).forEach(k => {\r\n defaultCase[k] = core_1.Mod(cases[objectDefault][k], {\r\n enabled: path => path.push('type').get() === undefined\r\n });\r\n });\r\n }\r\n const provider = core_1.ObjectNode({\r\n type: core_1.Mod(core_1.Opt(StringNode({ validator: 'resource', params: { pool } })), {\r\n hidden: () => true\r\n }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: cases,\r\n ...defaultCase\r\n }, { context, disableSwitchContext: true });\r\n const choices = [{\r\n type: directType,\r\n node: cases[directDefault][directPath]\r\n }];\r\n if (objectDefault) {\r\n choices.push({\r\n type: 'object',\r\n priority: -1,\r\n node: provider\r\n });\r\n }\r\n Object.keys(cases).forEach(k => {\r\n choices.push({\r\n type: k,\r\n match: (v) => {\r\n var _a;\r\n const type = 'minecraft:' + ((_a = v === null || v === void 0 ? void 0 : v.type) === null || _a === void 0 ? void 0 : _a.replace(/^minecraft:/, ''));\r\n if (type === k)\r\n return true;\r\n const keys = v ? Object.keys(v) : [];\r\n return typeof v === 'object' && ((keys === null || keys === void 0 ? void 0 : keys.length) === 0 || ((keys === null || keys === void 0 ? void 0 : keys.length) === 1 && (keys === null || keys === void 0 ? void 0 : keys[0]) === 'type'));\r\n },\r\n node: provider,\r\n change: (v) => ({ type: k })\r\n });\r\n });\r\n return core_1.ChoiceNode(choices, { context, choiceContext: `${context}.type` });\r\n };\r\n schemas.register('number_provider', ObjectWithType('loot_number_provider_type', 'number', 'value', 'minecraft:constant', 'minecraft:uniform', 'number_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode()\r\n },\r\n 'minecraft:uniform': {\r\n min: Reference('number_provider'),\r\n max: Reference('number_provider')\r\n },\r\n 'minecraft:binomial': {\r\n n: Reference('number_provider'),\r\n p: Reference('number_provider')\r\n },\r\n 'minecraft:score': {\r\n target: Reference('scoreboard_name_provider'),\r\n score: StringNode({ validator: 'objective' }),\r\n scale: core_1.Opt(core_1.NumberNode())\r\n }\r\n }));\r\n schemas.register('scoreboard_name_provider', ObjectWithType('loot_score_provider_type', 'string', 'target', 'minecraft:context', null, 'score_provider', {\r\n 'minecraft:fixed': {\r\n name: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities', isScoreHolder: true } }) // FIXME: doesn't support selectors\r\n },\r\n 'minecraft:context': {\r\n target: core_1.Mod(StringNode({ enum: 'entity_source' }), { default: () => 'this' })\r\n }\r\n }));\r\n schemas.register('nbt_provider', ObjectWithType('loot_nbt_provider_type', 'string', 'target', 'minecraft:context', null, 'nbt_provider', {\r\n 'minecraft:storage': {\r\n source: StringNode({ validator: 'resource', params: { pool: '$storage' } })\r\n },\r\n 'minecraft:context': {\r\n target: core_1.Mod(StringNode({ enum: 'copy_source' }), { default: () => 'this' })\r\n }\r\n }));\r\n exports.FloatProvider = (config) => ObjectWithType('float_provider_type', 'number', 'value', 'minecraft:constant', null, 'float_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode(config)\r\n },\r\n 'minecraft:uniform': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode(config),\r\n max_exclusive: core_1.NumberNode(config)\r\n })\r\n },\r\n 'minecraft:clamped_normal': {\r\n value: core_1.ObjectNode({\r\n min: core_1.NumberNode(),\r\n max: core_1.NumberNode(),\r\n mean: core_1.NumberNode(),\r\n deviation: core_1.NumberNode()\r\n })\r\n },\r\n 'minecraft:trapezoid': {\r\n value: core_1.ObjectNode({\r\n min: core_1.NumberNode(),\r\n max: core_1.NumberNode(),\r\n plateau: core_1.NumberNode()\r\n })\r\n }\r\n });\r\n schemas.register('float_provider', exports.FloatProvider());\r\n exports.IntProvider = (config) => ObjectWithType('int_provider_type', 'number', 'value', 'minecraft:constant', null, 'int_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode({ integer: true, ...config })\r\n },\r\n 'minecraft:uniform': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config })\r\n })\r\n },\r\n 'minecraft:biased_to_bottom': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config })\r\n })\r\n },\r\n 'minecraft:clamped': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n source: Reference('int_provider')\r\n })\r\n }\r\n });\r\n schemas.register('int_provider', exports.IntProvider());\r\n schemas.register('vertical_anchor', core_1.ChoiceNode(['absolute', 'above_bottom', 'below_top'].map(t => ({\r\n type: t,\r\n match: v => (v === null || v === void 0 ? void 0 : v[t]) !== undefined,\r\n change: v => { var _a, _b, _c; return ({ [t]: (_c = (_b = (_a = v.absolute) !== null && _a !== void 0 ? _a : v.above_bottom) !== null && _b !== void 0 ? _b : v.below_top) !== null && _c !== void 0 ? _c : 0 }); },\r\n node: core_1.ObjectNode({\r\n [t]: core_1.NumberNode({ integer: true, min: -2048, max: 2047 })\r\n })\r\n })), { context: 'vertical_anchor' }));\r\n schemas.register('height_provider', ObjectWithType('height_provider_type', 'number', 'value', 'minecraft:constant', null, 'height_provider', {\r\n 'minecraft:constant': {\r\n value: Reference('vertical_anchor')\r\n },\r\n 'minecraft:uniform': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor')\r\n },\r\n 'minecraft:biased_to_bottom': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n inner: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n },\r\n 'minecraft:very_biased_to_bottom': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n inner: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n },\r\n 'minecraft:trapezoid': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n plateau: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }\r\n }));\r\n exports.ConditionCases = (entitySourceNode = StringNode({ enum: 'entity_source' })) => ({\r\n 'minecraft:alternative': {\r\n terms: core_1.ListNode(Reference('condition'))\r\n },\r\n 'minecraft:block_state_property': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })\r\n },\r\n 'minecraft:damage_source_properties': {\r\n predicate: Reference('damage_source_predicate')\r\n },\r\n 'minecraft:entity_properties': {\r\n entity: entitySourceNode,\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: entitySourceNode,\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), Reference('int_range'))\r\n },\r\n 'minecraft:inverted': {\r\n term: Reference('condition')\r\n },\r\n 'minecraft:killed_by_player': {\r\n inverse: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:location_check': {\r\n offsetX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetY: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n predicate: Reference('location_predicate')\r\n },\r\n 'minecraft:match_tool': {\r\n predicate: Reference('item_predicate')\r\n },\r\n 'minecraft:random_chance': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_chance_with_looting': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n looting_multiplier: core_1.NumberNode()\r\n },\r\n 'minecraft:reference': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$predicate' } })\r\n },\r\n 'minecraft:table_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n chances: core_1.ListNode(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:time_check': {\r\n value: Reference('int_range'),\r\n period: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:value_check': {\r\n value: Reference('number_provider'),\r\n range: Reference('int_range')\r\n },\r\n 'minecraft:weather_check': {\r\n raining: core_1.Opt(core_1.BooleanNode()),\r\n thundering: core_1.Opt(core_1.BooleanNode())\r\n }\r\n });\r\n exports.FunctionCases = (conditions, copySourceNode = StringNode({ enum: 'copy_source' }), entitySourceNode = StringNode({ enum: 'entity_source' })) => {\r\n const cases = {\r\n 'minecraft:apply_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n formula: StringNode({ validator: 'resource', params: { pool: collections.get('loot_table_apply_bonus_formula') } }),\r\n parameters: core_1.Mod(core_1.ObjectNode({\r\n bonusMultiplier: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:uniform_bonus_count'\r\n }),\r\n extra: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n }),\r\n probability: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n })\r\n }), {\r\n enabled: path => path.push('formula').get() !== 'minecraft:ore_drops'\r\n })\r\n },\r\n 'minecraft:copy_name': {\r\n source: copySourceNode\r\n },\r\n 'minecraft:copy_nbt': {\r\n source: Reference('nbt_provider'),\r\n ops: core_1.ListNode(core_1.ObjectNode({\r\n source: StringNode({ validator: 'nbt_path', params: { category: { getter: 'copy_source', path: ['pop', 'pop', 'pop', { push: 'source' }] } } }),\r\n target: StringNode({ validator: 'nbt_path', params: { category: 'minecraft:item' } }),\r\n op: StringNode({ enum: ['replace', 'append', 'merge'] })\r\n }, { context: 'nbt_operation' }))\r\n },\r\n 'minecraft:copy_state': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.ListNode(StringNode({ validator: 'block_state_key', params: { id: ['pop', 'pop', { push: 'block' }] } }))\r\n },\r\n 'minecraft:enchant_randomly': {\r\n enchantments: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })))\r\n },\r\n 'minecraft:enchant_with_levels': {\r\n levels: Reference('number_provider'),\r\n treasure: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:exploration_map': {\r\n destination: core_1.Opt(StringNode({ enum: 'map_feature' })),\r\n decoration: core_1.Opt(StringNode({ enum: 'map_decoration' })),\r\n zoom: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n search_radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n skip_existing_chunks: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:fill_player_head': {\r\n entity: entitySourceNode\r\n },\r\n 'minecraft:limit_count': {\r\n limit: Reference('int_range')\r\n },\r\n 'minecraft:looting_enchant': {\r\n count: Reference('number_provider'),\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_attributes': {\r\n modifiers: core_1.ListNode(Reference('attribute_modifier'))\r\n },\r\n 'minecraft:set_banner_pattern': {\r\n patterns: core_1.ListNode(core_1.ObjectNode({\r\n pattern: StringNode({ enum: 'banner_pattern' }),\r\n color: StringNode({ enum: 'dye_color' })\r\n })),\r\n append: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_contents': {\r\n entries: core_1.ListNode(Reference('loot_entry'))\r\n },\r\n 'minecraft:set_count': {\r\n count: Reference('number_provider'),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_damage': {\r\n damage: Reference('number_provider'),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_enchantments': {\r\n enchantments: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } }), Reference('number_provider')),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n seed: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_lore': {\r\n entity: core_1.Opt(entitySourceNode),\r\n lore: core_1.ListNode(Reference('text_component')),\r\n replace: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_name': {\r\n entity: core_1.Opt(entitySourceNode),\r\n name: core_1.Opt(Reference('text_component'))\r\n },\r\n 'minecraft:set_nbt': {\r\n tag: StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item' } } })\r\n },\r\n 'minecraft:set_stew_effect': {\r\n effects: core_1.Opt(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }),\r\n duration: Reference('number_provider')\r\n })))\r\n }\r\n };\r\n const res = {};\r\n collections.get('loot_function_type').forEach(f => {\r\n res[f] = { ...cases[f], ...conditions };\r\n });\r\n return res;\r\n };\r\n exports.DimensionTypePresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$dimension_type' } }), node, {\r\n 'minecraft:overworld': exports.DefaultDimensionType,\r\n 'minecraft:the_nether': {\r\n name: 'minecraft:the_nether',\r\n ultrawarm: true,\r\n natural: false,\r\n shrunk: true,\r\n piglin_safe: true,\r\n respawn_anchor_works: true,\r\n bed_works: false,\r\n has_raids: false,\r\n has_skylight: false,\r\n has_ceiling: true,\r\n ambient_light: 0.1,\r\n fixed_time: 18000,\r\n logical_height: 128,\r\n effects: 'minecraft:the_nether',\r\n infiniburn: 'minecraft:infiniburn_nether',\r\n min_y: 0,\r\n height: 256,\r\n },\r\n 'minecraft:the_end': {\r\n name: 'minecraft:the_end',\r\n ultrawarm: false,\r\n natural: false,\r\n shrunk: false,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: false,\r\n has_raids: true,\r\n has_skylight: false,\r\n has_ceiling: false,\r\n ambient_light: 0,\r\n fixed_time: 6000,\r\n logical_height: 256,\r\n effects: 'minecraft:the_end',\r\n infiniburn: 'minecraft:infiniburn_end',\r\n min_y: 0,\r\n height: 256,\r\n }\r\n });\r\n exports.NoiseSettingsPresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings' } }), node, {\r\n 'minecraft:overworld': exports.DefaultNoiseSettings,\r\n 'minecraft:nether': {\r\n name: 'minecraft:nether',\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n disable_mob_generation: true,\r\n noise_caves_enabled: false,\r\n aquifers_enabled: false,\r\n deepslate_enabled: false,\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n density_factor: 0,\r\n density_offset: 0.019921875,\r\n simplex_surface_noise: false,\r\n random_density_offset: false,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 3,\r\n xz_factor: 80,\r\n y_factor: 60\r\n },\r\n top_slide: {\r\n target: 120,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 320,\r\n size: 4,\r\n offset: -1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:netherrack\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:lava\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:end': {\r\n name: 'minecraft:end',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: -10,\r\n sea_level: 0,\r\n disable_mob_generation: true,\r\n noise_caves_enabled: false,\r\n aquifers_enabled: false,\r\n deepslate_enabled: false,\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n density_factor: 0,\r\n density_offset: 0,\r\n simplex_surface_noise: true,\r\n random_density_offset: false,\r\n island_noise_override: true,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n sampling: {\r\n xz_scale: 2,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -3000,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 7,\r\n offset: 1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:end_stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:air\"\r\n }\r\n },\r\n 'minecraft:amplified': {\r\n name: 'minecraft:amplified',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n disable_mob_generation: false,\r\n noise_caves_enabled: true,\r\n aquifers_enabled: true,\r\n deepslate_enabled: true,\r\n noise: {\r\n min_y: 0,\r\n height: 256,\r\n density_factor: 1,\r\n density_offset: -0.46875,\r\n simplex_surface_noise: true,\r\n random_density_offset: true,\r\n amplified: true,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -10,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 0,\r\n offset: 0\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:caves': {\r\n name: 'minecraft:caves',\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n disable_mob_generation: true,\r\n noise_caves_enabled: false,\r\n aquifers_enabled: false,\r\n deepslate_enabled: false,\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n density_factor: 0,\r\n density_offset: 0.019921875,\r\n simplex_surface_noise: false,\r\n random_density_offset: false,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n sampling: {\r\n xz_scale: 1,\r\n y_scale: 3,\r\n xz_factor: 80,\r\n y_factor: 60\r\n },\r\n top_slide: {\r\n target: 120,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 320,\r\n size: 4,\r\n offset: -1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n },\r\n 'minecraft:floating_islands': {\r\n name: 'minecraft:floating_islands',\r\n bedrock_roof_position: -10,\r\n bedrock_floor_position: -10,\r\n sea_level: 0,\r\n disable_mob_generation: true,\r\n noise_caves_enabled: false,\r\n aquifers_enabled: false,\r\n deepslate_enabled: false,\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n density_factor: 0,\r\n density_offset: 0,\r\n simplex_surface_noise: true,\r\n random_density_offset: false,\r\n island_noise_override: true,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n sampling: {\r\n xz_scale: 2,\r\n y_scale: 1,\r\n xz_factor: 80,\r\n y_factor: 160\r\n },\r\n top_slide: {\r\n target: -3000,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -30,\r\n size: 7,\r\n offset: 1\r\n }\r\n },\r\n default_block: {\r\n Name: \"minecraft:stone\"\r\n },\r\n default_fluid: {\r\n Name: \"minecraft:water\",\r\n Properties: {\r\n level: \"0\"\r\n }\r\n }\r\n }\r\n });\r\n}\r\nexports.initCommonSchemas = initCommonSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initConditionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initConditionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('predicate', core_1.ObjectOrList(Reference('condition'), { choiceContext: 'condition' }));\r\n schemas.register('condition', core_1.Mod(core_1.ObjectNode({\r\n condition: StringNode({ validator: 'resource', params: { pool: 'loot_condition_type' } }),\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases()\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:entity_properties',\r\n entity: 'this'\r\n })\r\n }));\r\n}\r\nexports.initConditionSchemas = initConditionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const NoPreset = (node) => core_1.Mod(node, {\r\n enabled: path => path.push('preset').get() === undefined\r\n });\r\n schemas.register('dimension', core_1.Mod(core_1.ObjectNode({\r\n type: Common_1.DimensionTypePresets(Reference('dimension_type')),\r\n generator: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/chunk_generator' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n settings: Common_1.NoiseSettingsPresets(Reference('noise_settings')),\r\n biome_source: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/biome_source' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:fixed': {\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })\r\n },\r\n 'minecraft:multi_noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n preset: core_1.Opt(StringNode({ enum: ['nether'] })),\r\n altitude_noise: NoPreset(Reference('generator_biome_noise')),\r\n temperature_noise: NoPreset(Reference('generator_biome_noise')),\r\n humidity_noise: NoPreset(Reference('generator_biome_noise')),\r\n weirdness_noise: NoPreset(Reference('generator_biome_noise')),\r\n biomes: NoPreset(core_1.Mod(core_1.ListNode(Reference('generator_biome')), {\r\n default: () => [{\r\n biome: 'minecraft:plains'\r\n }]\r\n }))\r\n },\r\n 'minecraft:checkerboard': {\r\n scale: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 62 })),\r\n biomes: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }))\r\n },\r\n 'minecraft:the_end': {\r\n seed: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:vanilla_layered': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n large_biomes: core_1.Opt(core_1.BooleanNode()),\r\n legacy_biome_init_layer: core_1.Opt(core_1.BooleanNode())\r\n }\r\n }\r\n }, { category: 'predicate', disableSwitchContext: true })\r\n },\r\n 'minecraft:flat': {\r\n settings: core_1.ObjectNode({\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n lakes: core_1.Opt(core_1.BooleanNode()),\r\n features: core_1.Opt(core_1.BooleanNode()),\r\n layers: core_1.ListNode(Reference('generator_layer')),\r\n structures: Reference('generator_structures')\r\n })\r\n }\r\n }\r\n }, { disableSwitchContext: true })\r\n }, { category: 'pool', context: 'dimension' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:fixed',\r\n seed,\r\n biome: 'minecraft:plains'\r\n },\r\n settings: 'minecraft:overworld'\r\n }\r\n };\r\n }\r\n }));\r\n schemas.register('generator_biome', core_1.Mod(core_1.ObjectNode({\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }),\r\n parameters: core_1.ObjectNode({\r\n altitude: core_1.NumberNode(),\r\n temperature: core_1.NumberNode(),\r\n humidity: core_1.NumberNode(),\r\n weirdness: core_1.NumberNode(),\r\n offset: core_1.NumberNode()\r\n })\r\n }, { context: 'generator_biome' }), {\r\n default: () => ({\r\n biome: 'minecraft:plains',\r\n parameters: {\r\n altitude: 0,\r\n temperature: 0,\r\n humidity: 0,\r\n weirdness: 0,\r\n offset: 0\r\n }\r\n })\r\n }));\r\n schemas.register('generator_biome_noise', core_1.Mod(core_1.ObjectNode({\r\n firstOctave: core_1.NumberNode({ integer: true }),\r\n amplitudes: core_1.ListNode(core_1.NumberNode())\r\n }, { context: 'generator_biome_noise' }), {\r\n default: () => ({\r\n firstOctave: -7,\r\n amplitudes: [1, 1]\r\n })\r\n }));\r\n}\r\nexports.initDimensionSchemas = initDimensionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionTypeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionTypeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('dimension_type', core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Mod(StringNode({ validator: 'resource', params: { pool: '$dimension_type', isDefinition: true } }), {\r\n enabled: (path) => path.getArray().length > 0\r\n }),\r\n ultrawarm: core_1.BooleanNode(),\r\n natural: core_1.BooleanNode(),\r\n piglin_safe: core_1.BooleanNode(),\r\n respawn_anchor_works: core_1.BooleanNode(),\r\n bed_works: core_1.BooleanNode(),\r\n has_raids: core_1.BooleanNode(),\r\n has_skylight: core_1.BooleanNode(),\r\n has_ceiling: core_1.BooleanNode(),\r\n coordinate_scale: core_1.NumberNode({ min: 0.00001, max: 30000000 }),\r\n ambient_light: core_1.NumberNode(),\r\n fixed_time: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n logical_height: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n effects: core_1.Opt(StringNode({ enum: ['minecraft:overworld', 'minecraft:the_nether', 'minecraft:the_end'] })),\r\n infiniburn: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n min_y: core_1.NumberNode({ integer: true, min: -2048, max: 2047 }),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 4096 })\r\n }, { context: 'dimension_type' }), node => ({\r\n default: () => Common_1.DefaultDimensionType,\r\n validate: (path, value, errors, options) => {\r\n value = node.validate(path, value, errors, options);\r\n if ((value === null || value === void 0 ? void 0 : value.min_y) + (value === null || value === void 0 ? void 0 : value.height) > 2047) {\r\n errors.add(path.push('height'), 'error.min_y_plus_height', 2047);\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.logical_height) > (value === null || value === void 0 ? void 0 : value.height)) {\r\n errors.add(path.push('logical_height'), 'error.logical_height');\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.height) % 16 !== 0) {\r\n errors.add(path.push('height'), 'error.height_multiple', 16);\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.min_y) % 16 !== 0) {\r\n errors.add(path.push('min_y'), 'error.min_y_multiple', 16);\r\n }\r\n return value;\r\n }\r\n })));\r\n}\r\nexports.initDimensionTypeSchemas = initDimensionTypeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initItemModifierSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initItemModifierSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('item_modifier', core_1.ObjectOrList(Reference('function'), { choiceContext: 'function' }));\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('condition')))\r\n };\r\n schemas.register('function', core_1.Mod(core_1.ObjectNode({\r\n function: StringNode({ validator: 'resource', params: { pool: 'loot_function_type' } }),\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: Common_1.FunctionCases(conditions)\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => [{\r\n function: 'minecraft:set_count',\r\n count: 1\r\n }]\r\n }));\r\n}\r\nexports.initItemModifierSchemas = initItemModifierSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LootFunctions = exports.LootConditions = exports.LootCopySources = exports.LootEntitySources = exports.LootTableTypes = void 0;\r\nexports.LootTableTypes = new Map([\r\n ['minecraft:advancement_entity', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:advancement_reward', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:barter', { requires: [8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:block', { requires: [1 /* BlockState */, 7 /* Origin */, 9 /* Tool */], allows: [0 /* BlockEntity */, 4 /* ExplosionRadius */, 8 /* ThisEntity */] }],\r\n ['minecraft:chest', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:command', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:empty', { requires: [], allows: [] }],\r\n ['minecraft:entity', { requires: [2 /* DamageSource */, 7 /* Origin */, 8 /* ThisEntity */], allows: [3 /* DirectKillerEntity */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */] }],\r\n ['minecraft:fishing', { requires: [7 /* Origin */, 9 /* Tool */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:generic', { requires: [2 /* DamageSource */, 0 /* BlockEntity */, 1 /* BlockState */, 3 /* DirectKillerEntity */, 4 /* ExplosionRadius */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */, 7 /* Origin */, 8 /* ThisEntity */, 9 /* Tool */], allows: [] }],\r\n ['minecraft:gift', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:selector', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }]\r\n]);\r\n/**\r\n * A map from loot entity sources to an array of their required context.\r\n */\r\nexports.LootEntitySources = new Map([\r\n ['direct_killer', [3 /* DirectKillerEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot copy sources to an array of their required context.\r\n */\r\nexports.LootCopySources = new Map([\r\n ['block_entity', [0 /* BlockEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot condition IDs to an array of their required context.\r\n */\r\nexports.LootConditions = new Map([\r\n ['minecraft:alternative', []],\r\n ['minecraft:block_state_property', [1 /* BlockState */]],\r\n ['minecraft:damage_source_properties', [2 /* DamageSource */]],\r\n ['minecraft:entity_properties', [7 /* Origin */]],\r\n ['minecraft:entity_scores', []],\r\n ['minecraft:inverted', []],\r\n ['minecraft:killed_by_player', [6 /* LastDamagePlayer */]],\r\n ['minecraft:location_check', []],\r\n ['minecraft:match_tool', [9 /* Tool */]],\r\n ['minecraft:random_chance', []],\r\n ['minecraft:random_chance_with_looting', [5 /* KillerEntity */]],\r\n ['minecraft:reference', []],\r\n ['minecraft:survives_explosion', [4 /* ExplosionRadius */]],\r\n ['minecraft:table_bonus', [9 /* Tool */]],\r\n ['minecraft:time_check', []],\r\n ['minecraft:weather_check', []]\r\n]);\r\n/**\r\n * A map from loot function IDs to an array of their required context.\r\n */\r\nexports.LootFunctions = new Map([\r\n ['minecraft:apply_bonus', [9 /* Tool */]],\r\n ['minecraft:copy_name', []],\r\n ['minecraft:copy_nbt', []],\r\n ['minecraft:copy_state', [1 /* BlockState */]],\r\n ['minecraft:enchant_randomly', []],\r\n ['minecraft:enchant_with_levels', []],\r\n ['minecraft:exploration_map', [7 /* Origin */]],\r\n ['minecraft:explosion_decay', []],\r\n ['minecraft:fill_player_head', []],\r\n ['minecraft:furnace_smelt', []],\r\n ['minecraft:limit_count', []],\r\n ['minecraft:looting_enchant', [5 /* KillerEntity */]],\r\n ['minecraft:set_attributes', []],\r\n ['minecraft:set_banner_pattern', []],\r\n ['minecraft:set_contents', []],\r\n ['minecraft:set_count', []],\r\n ['minecraft:set_damage', []],\r\n ['minecraft:set_loot_table', []],\r\n ['minecraft:set_lore', []],\r\n ['minecraft:set_name', []],\r\n ['minecraft:set_nbt', []],\r\n ['minecraft:set_stew_effect', []]\r\n]);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initLootTableSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst LootContext_1 = require(\"../LootContext\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initLootTableSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('loot_condition')))\r\n };\r\n const functionsAndConditions = {\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function'))),\r\n ...conditions\r\n };\r\n function compileSwitchNode(contextMap, collectionID, getNode) {\r\n const cases = [];\r\n const getAvailableOptions = (providedContext) => collections\r\n .get(collectionID)\r\n .filter(t => {\r\n var _a;\r\n const requiredContext = (_a = contextMap.get(t)) !== null && _a !== void 0 ? _a : [];\r\n return requiredContext.every(c => providedContext.includes(c));\r\n });\r\n for (const [tableType, { allows, requires }] of LootContext_1.LootTableTypes) {\r\n const providedContext = [...allows, ...requires];\r\n cases.push({\r\n match: path => path.getModel().get(new core_1.Path(['type'])) === tableType,\r\n node: getNode(getAvailableOptions(providedContext))\r\n });\r\n }\r\n cases.push({ match: _ => true, node: getNode(collectionID) });\r\n return core_1.SwitchNode(cases);\r\n }\r\n const conditionIDSwtichNode = compileSwitchNode(LootContext_1.LootConditions, 'loot_condition_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_condition_type` } }));\r\n const functionIDSwtichNode = compileSwitchNode(LootContext_1.LootFunctions, 'loot_function_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_function_type` } }));\r\n const entitySourceSwtichNode = compileSwitchNode(LootContext_1.LootEntitySources, 'entity_source', type => StringNode({ enum: type }));\r\n const copySourceSwtichNode = compileSwitchNode(LootContext_1.LootCopySources, 'copy_source', type => StringNode({ enum: type }));\r\n schemas.register('loot_table', core_1.Mod(core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: \"resource\", params: { pool: collections.get('loot_context_type') } })),\r\n pools: core_1.Opt(core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n rolls: Reference('number_provider'),\r\n bonus_rolls: core_1.Opt(Reference('number_provider')),\r\n entries: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n }, { category: 'pool', context: 'loot_pool' }), {\r\n default: () => ({\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n })\r\n }))),\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function')))\r\n }, { context: 'loot_table' }), {\r\n default: () => ({\r\n pools: [{\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n }]\r\n })\r\n }));\r\n const weightMod = {\r\n enabled: path => {\r\n var _a;\r\n return ((_a = path.pop().get()) === null || _a === void 0 ? void 0 : _a.length) > 1\r\n && !['minecraft:alternatives', 'minecraft:group', 'minecraft:sequence'].includes(path.push('type').get());\r\n }\r\n };\r\n schemas.register('loot_entry', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'loot_pool_entry_type' } }),\r\n weight: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true, min: 1 }), weightMod)),\r\n quality: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), weightMod)),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alternatives': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:dynamic': {\r\n name: StringNode(),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:group': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:item': {\r\n name: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:sequence': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:tag': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$tag/item' } }),\r\n expand: core_1.Opt(core_1.BooleanNode()),\r\n ...functionsAndConditions\r\n }\r\n }\r\n }, { context: 'loot_entry' }), {\r\n default: () => ({\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('loot_function', core_1.Mod(core_1.ObjectNode({\r\n function: functionIDSwtichNode,\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: Common_1.FunctionCases(conditions, copySourceSwtichNode, entitySourceSwtichNode)\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => ({\r\n function: 'minecraft:set_count',\r\n count: 1\r\n })\r\n }));\r\n schemas.register('loot_condition', core_1.Mod(core_1.ObjectNode({\r\n condition: conditionIDSwtichNode,\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases(entitySourceSwtichNode)\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:random_chance',\r\n chance: 0.5\r\n })\r\n }));\r\n schemas.register('attribute_modifier', core_1.Mod(core_1.ObjectNode({\r\n attribute: StringNode({ validator: 'resource', params: { pool: 'attribute' } }),\r\n name: StringNode(),\r\n amount: Reference('number_provider'),\r\n operation: StringNode({ enum: ['addition', 'multiply_base', 'multiply_total'] }),\r\n slot: core_1.StringOrList(StringNode({ enum: 'slot' }))\r\n }, { context: 'attribute_modifier' }), {\r\n default: () => ({\r\n attribute: 'minecraft:generic.max_health',\r\n name: '',\r\n amount: 1,\r\n operation: 'addition',\r\n slot: 'mainhand'\r\n })\r\n }));\r\n}\r\nexports.initLootTableSchemas = initLootTableSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPackMcmetaSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst CURRENT_PACK_FORMAT = 7;\r\nfunction initPackMcmetaSchemas(schemas, _) {\r\n const getSimpleString = (jsonText) => { var _a, _b; return jsonText instanceof Array ? getSimpleString(jsonText[0]) : (_b = (_a = jsonText === null || jsonText === void 0 ? void 0 : jsonText.text) !== null && _a !== void 0 ? _a : jsonText === null || jsonText === void 0 ? void 0 : jsonText.toString()) !== null && _b !== void 0 ? _b : ''; };\r\n schemas.register('pack_mcmeta', core_1.Mod(core_1.ObjectNode({\r\n pack: core_1.Mod(core_1.ObjectNode({\r\n pack_format: core_1.Mod(core_1.NumberNode({ integer: true, min: CURRENT_PACK_FORMAT, max: CURRENT_PACK_FORMAT }), {\r\n default: () => CURRENT_PACK_FORMAT,\r\n canUpdate: (_p, v) => v !== CURRENT_PACK_FORMAT,\r\n update: () => [{ name: 'pack_format', params: [CURRENT_PACK_FORMAT], newValue: CURRENT_PACK_FORMAT }]\r\n }),\r\n description: core_1.Reference(schemas, 'text_component')\r\n }), {\r\n default: () => ({\r\n pack_format: CURRENT_PACK_FORMAT,\r\n description: ''\r\n })\r\n })\r\n }), {\r\n default: () => ({\r\n pack: {\r\n pack_format: CURRENT_PACK_FORMAT,\r\n description: ''\r\n }\r\n })\r\n }));\r\n}\r\nexports.initPackMcmetaSchemas = initPackMcmetaSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPredicatesSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initPredicatesSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const StateChoice = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode(),\r\n change: v => (typeof v === 'boolean' || typeof v === 'number') ? v.toString() : ''\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => (typeof v === 'string') ? parseInt(v) : 0\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }),\r\n change: v => (typeof v === 'number') ? ({ min: v, max: v }) : ({})\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => v === 'true' || v === 1\r\n }\r\n ]);\r\n schemas.register('item_predicate', core_1.ObjectNode({\r\n items: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'item' } }))),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } })),\r\n count: Reference('int_bounds'),\r\n durability: Reference('int_bounds'),\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } })),\r\n enchantments: core_1.Opt(core_1.ListNode(Reference('enchantment_predicate')))\r\n }, { context: 'item' }));\r\n schemas.register('enchantment_predicate', core_1.ObjectNode({\r\n enchantment: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })),\r\n levels: Reference('int_bounds')\r\n }, { context: 'enchantment' }));\r\n schemas.register('block_predicate', core_1.ObjectNode({\r\n blocks: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block', id: ['pop', { push: 'block' }] } } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice, { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n }, { context: 'block' }));\r\n schemas.register('fluid_predicate', core_1.ObjectNode({\r\n fluid: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'fluid' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/fluid' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice))\r\n }, { context: 'fluid' }));\r\n schemas.register('location_predicate', core_1.ObjectNode({\r\n position: core_1.Opt(core_1.ObjectNode({\r\n x: Reference('float_bounds'),\r\n y: Reference('float_bounds'),\r\n z: Reference('float_bounds')\r\n })),\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n feature: core_1.Opt(StringNode({ enum: collections.get('worldgen/structure_feature').map(v => v.slice(10)) })),\r\n dimension: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n light: core_1.Opt(core_1.ObjectNode({\r\n light: Reference('int_bounds')\r\n })),\r\n smokey: core_1.Opt(core_1.BooleanNode()),\r\n block: core_1.Opt(Reference('block_predicate')),\r\n fluid: core_1.Opt(Reference('fluid_predicate'))\r\n }, { context: 'location' }));\r\n schemas.register('statistic_predicate', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'stat_type' } }),\r\n stat: StringNode(),\r\n value: Reference('int_bounds'),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:mined': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:crafted': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:used': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:broken': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:picked_up': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:dropped': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:killed': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:killed_by': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:custom': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'custom_stat' } })\r\n }\r\n }\r\n }));\r\n schemas.register('player_predicate', core_1.ObjectNode({\r\n gamemode: core_1.Opt(StringNode({ enum: 'gamemode' })),\r\n level: Reference('int_bounds'),\r\n advancements: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$advancement' } }), core_1.ChoiceNode([\r\n { type: 'boolean', node: core_1.BooleanNode(), change: _ => true },\r\n {\r\n type: 'object', node: core_1.MapNode(StringNode(), core_1.BooleanNode())\r\n }\r\n ]))),\r\n recipes: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }), core_1.BooleanNode())),\r\n stats: core_1.Opt(core_1.ListNode(Reference('statistic_predicate'))),\r\n looking_at: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'player' }));\r\n schemas.register('status_effect_predicate', core_1.ObjectNode({\r\n amplifier: Reference('int_bounds'),\r\n duration: Reference('int_bounds'),\r\n ambient: core_1.Opt(core_1.BooleanNode()),\r\n visible: core_1.Opt(core_1.BooleanNode())\r\n }, { context: 'status_effect' }));\r\n schemas.register('distance_predicate', core_1.ObjectNode({\r\n x: Reference('float_bounds'),\r\n y: Reference('float_bounds'),\r\n z: Reference('float_bounds'),\r\n absolute: Reference('float_bounds'),\r\n horizontal: Reference('float_bounds')\r\n }, { context: 'distance' }));\r\n schemas.register('entity_predicate', core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'entity_type', allowTag: true } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:entity', id: ['pop', { push: 'type' }] } } })),\r\n team: core_1.Opt(StringNode({ validator: 'team' })),\r\n location: core_1.Opt(Reference('location_predicate')),\r\n stepping_on: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n flags: core_1.Opt(core_1.ObjectNode({\r\n is_on_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_sneaking: core_1.Opt(core_1.BooleanNode()),\r\n is_sprinting: core_1.Opt(core_1.BooleanNode()),\r\n is_swimming: core_1.Opt(core_1.BooleanNode()),\r\n is_baby: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n equipment: core_1.Opt(core_1.MapNode(StringNode({ enum: 'slot' }), Reference('item_predicate'))),\r\n player: core_1.Opt(Reference('player_predicate')),\r\n vehicle: core_1.Opt(Reference('entity_predicate')),\r\n passenger: core_1.Opt(Reference('entity_predicate')),\r\n targeted_entity: core_1.Opt(Reference('entity_predicate')),\r\n lightning_bolt: core_1.Opt(core_1.ObjectNode({\r\n blocks_set_on_fire: core_1.Opt(Reference('int_bounds')),\r\n entity_struck: core_1.Opt(Reference('entity_predicate'))\r\n })),\r\n fishing_hook: core_1.Opt(core_1.ObjectNode({\r\n in_open_water: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n }, { context: 'entity' }));\r\n schemas.register('damage_source_predicate', core_1.ObjectNode({\r\n is_explosion: core_1.Opt(core_1.BooleanNode()),\r\n is_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_magic: core_1.Opt(core_1.BooleanNode()),\r\n is_projectile: core_1.Opt(core_1.BooleanNode()),\r\n is_lightning: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_armor: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_invulnerability: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_magic: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n direct_entity: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'damage_source' }));\r\n schemas.register('damage_predicate', core_1.ObjectNode({\r\n dealt: Reference('float_bounds'),\r\n taken: Reference('float_bounds'),\r\n blocked: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n type: core_1.Opt(Reference('damage_source_predicate'))\r\n }, { context: 'damage' }));\r\n}\r\nexports.initPredicatesSchemas = initPredicatesSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initRecipeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initRecipeSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('recipe', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'recipe_serializer' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:crafting_shaped': {\r\n group: core_1.Opt(StringNode({ enum: 'recipe_group', additional: true })),\r\n pattern: core_1.ListNode(StringNode()),\r\n key: core_1.MapNode(StringNode(), // TODO: add validation\r\n Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:crafting_shapeless': {\r\n group: core_1.Opt(StringNode()),\r\n ingredients: core_1.ListNode(Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:smelting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 200 }))\r\n },\r\n 'minecraft:blasting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:smoking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:campfire_cooking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:stonecutting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:smithing': {\r\n group: core_1.Opt(StringNode()),\r\n base: Reference('recipe_ingredient_object'),\r\n addition: Reference('recipe_ingredient_object'),\r\n result: Reference('recipe_result')\r\n }\r\n }\r\n }, { context: 'recipe', disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:crafting_shaped'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('recipe_ingredient_object'),\r\n change: v => v[0]\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('recipe_ingredient_object')),\r\n change: v => [v]\r\n }\r\n ]), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient_object', core_1.Mod(core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_result', core_1.Mod(core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 1 }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n}\r\nexports.initRecipeSchemas = initRecipeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTagsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTagsSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const TagBase = (type) => core_1.Mod(core_1.ObjectNode({\r\n replace: core_1.Opt(core_1.BooleanNode()),\r\n values: core_1.ListNode(core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: type, allowTag: true } }),\r\n change: v => v.id\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: type, allowTag: true, allowUnknown: true } }),\r\n required: core_1.BooleanNode()\r\n }),\r\n change: v => ({ id: v })\r\n }\r\n ])),\r\n }, { context: 'tag' }), {\r\n default: () => ({\r\n values: []\r\n })\r\n });\r\n schemas.register('block_tag', TagBase('block'));\r\n schemas.register('entity_type_tag', TagBase('entity_type'));\r\n schemas.register('fluid_tag', TagBase('fluid'));\r\n schemas.register('function_tag', TagBase('$function'));\r\n schemas.register('game_event_tag', TagBase('game_event'));\r\n schemas.register('item_tag', TagBase('item'));\r\n}\r\nexports.initTagsSchemas = initTagsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTextComponentSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTextComponentSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const getSimpleString = (v) => { var _a; return v instanceof Array ? getSimpleString(v[0]) : (_a = v === null || v === void 0 ? void 0 : v.text) !== null && _a !== void 0 ? _a : (typeof v === 'object' ? '' : v === null || v === void 0 ? void 0 : v.toString()); };\r\n schemas.register('text_component', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('text_component_object'),\r\n change: v => v instanceof Array ? (typeof v[0] === 'object' ? v[0] : { text: getSimpleString(v[0]) }) : typeof v === 'object' ? v : { text: getSimpleString(v) }\r\n },\r\n {\r\n type: 'list',\r\n node: Reference('text_component_list'),\r\n change: v => [v]\r\n },\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: StringNode(),\r\n change: getSimpleString\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => {\r\n const n = parseFloat(getSimpleString(v));\r\n return isFinite(n) ? n : (!!v ? 1 : 0);\r\n }\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => {\r\n const s = getSimpleString(v);\r\n return s === 'true' || s === 'false' ? s === 'true' : !!s;\r\n }\r\n }\r\n ], { context: 'text_component' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n const CommonFields = {\r\n color: core_1.Opt(StringNode()) /* TODO */,\r\n font: core_1.Opt(StringNode()),\r\n bold: core_1.Opt(core_1.BooleanNode()),\r\n italic: core_1.Opt(core_1.BooleanNode()),\r\n underlined: core_1.Opt(core_1.BooleanNode()),\r\n strikethrough: core_1.Opt(core_1.BooleanNode()),\r\n obfuscated: core_1.Opt(core_1.BooleanNode()),\r\n insertion: core_1.Opt(StringNode()),\r\n clickEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['open_url', 'open_file', 'run_command', 'suggest_command', 'change_page', 'copy_to_clipboard'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'change_page': {\r\n value: StringNode()\r\n },\r\n 'copy_to_clipboard': {\r\n value: StringNode()\r\n },\r\n 'open_file': {\r\n value: StringNode()\r\n },\r\n 'open_url': {\r\n value: StringNode()\r\n },\r\n 'run_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n },\r\n 'suggest_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n }\r\n }\r\n })),\r\n hoverEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['show_text', 'show_item', 'show_entity'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'show_text': {\r\n value: core_1.Opt(Reference('text_component')),\r\n contents: core_1.Opt(Reference('text_component'))\r\n },\r\n 'show_item': {\r\n value: core_1.Opt(StringNode({ validator: 'nbt', params: { module: 'util::InventoryItem' } })),\r\n contents: core_1.Opt(core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n tag: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'id' }] } } }))\r\n }))\r\n },\r\n 'show_entity': {\r\n value: core_1.Opt(core_1.ObjectNode({\r\n name: core_1.Opt(StringNode()),\r\n type: core_1.Opt(StringNode()),\r\n id: core_1.Opt(StringNode())\r\n })),\r\n contents: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Opt(Reference('text_component')),\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n id: StringNode({ validator: 'uuid' })\r\n }), {\r\n default: () => ({\r\n type: 'minecraft:pig',\r\n id: '00000001-0001-0001-0001-000000000001'\r\n })\r\n }))\r\n }\r\n }\r\n })),\r\n extra: core_1.Opt(Reference('text_component_list'))\r\n };\r\n schemas.register('text_component_object', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'text',\r\n match: v => typeof v === 'object',\r\n change: v => ({ text: '' }),\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n text: StringNode(),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'translation',\r\n match: v => (v === null || v === void 0 ? void 0 : v.translate) !== undefined,\r\n change: v => ({ translate: '' }),\r\n node: core_1.ObjectNode({\r\n translate: StringNode(),\r\n with: core_1.Opt(Reference('text_component_list')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'score',\r\n match: v => (v === null || v === void 0 ? void 0 : v.score) !== undefined,\r\n change: v => ({ score: {} }),\r\n node: core_1.ObjectNode({\r\n score: core_1.ObjectNode({\r\n name: StringNode({ validator: 'entity', params: { amount: 'single', type: 'entities', isScoreHolder: true } }),\r\n objective: StringNode({ validator: 'objective' }),\r\n value: core_1.Opt(StringNode())\r\n }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'selector',\r\n match: v => (v === null || v === void 0 ? void 0 : v.selector) !== undefined,\r\n change: v => ({ selector: '' }),\r\n node: core_1.ObjectNode({\r\n selector: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } }),\r\n separator: core_1.Opt(Reference('text_component')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'keybind',\r\n match: v => (v === null || v === void 0 ? void 0 : v.keybind) !== undefined,\r\n change: v => ({ keybind: '' }),\r\n node: core_1.ObjectNode({\r\n keybind: StringNode({ enum: 'keybind', additional: true }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'nbt',\r\n match: v => (v === null || v === void 0 ? void 0 : v.nbt) !== undefined,\r\n change: v => ({ nbt: '' }),\r\n node: core_1.ObjectNode({\r\n nbt: StringNode({ validator: 'nbt_path' }),\r\n block: core_1.Opt(StringNode({ validator: 'vector', params: { dimension: 3, isInteger: true } })),\r\n entity: core_1.Opt(StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } })),\r\n storage: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$storage' } })),\r\n interpret: core_1.Opt(core_1.BooleanNode()),\r\n separator: core_1.Opt(Reference('text_component')),\r\n ...CommonFields\r\n })\r\n }\r\n ], { context: 'text_component_object', choiceContext: 'text_component.object' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n schemas.register('text_component_list', core_1.Mod(core_1.ListNode(Reference('text_component')), {\r\n default: () => [{\r\n text: \"\"\r\n }]\r\n }));\r\n}\r\nexports.initTextComponentSchemas = initTextComponentSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initBiomeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initBiomeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('biome', core_1.Mod(core_1.ObjectNode({\r\n surface_builder: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_surface_builder' } }),\r\n depth: core_1.NumberNode(),\r\n scale: core_1.NumberNode(),\r\n temperature: core_1.NumberNode(),\r\n downfall: core_1.NumberNode(),\r\n precipitation: StringNode({ enum: ['none', 'rain', 'snow'] }),\r\n temperature_modifier: core_1.Opt(StringNode({ enum: ['none', 'frozen'] })),\r\n category: StringNode({ enum: 'biome_category' }),\r\n player_spawn_friendly: core_1.Opt(core_1.BooleanNode()),\r\n creature_spawn_probability: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n effects: core_1.ObjectNode({\r\n sky_color: core_1.NumberNode({ color: true }),\r\n fog_color: core_1.NumberNode({ color: true }),\r\n water_color: core_1.NumberNode({ color: true }),\r\n water_fog_color: core_1.NumberNode({ color: true }),\r\n grass_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n foliage_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n grass_color_modifier: core_1.Opt(StringNode({ enum: ['none', 'dark_forest', 'swamp'] })),\r\n ambient_sound: core_1.Opt(StringNode()),\r\n mood_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_delay: core_1.NumberNode({ integer: true }),\r\n block_search_extent: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode()\r\n })),\r\n additions_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n })),\r\n music: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n min_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n max_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n replace_current_music: core_1.BooleanNode()\r\n })),\r\n particle: core_1.Opt(core_1.ObjectNode({\r\n options: core_1.ObjectNode({\r\n type: StringNode()\r\n }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }))\r\n }),\r\n starts: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_structure_feature' } })),\r\n spawners: core_1.MapNode(StringNode({ enum: [\r\n 'monster',\r\n 'creature',\r\n 'ambient',\r\n 'underground_water_creature',\r\n 'water_creature',\r\n 'water_ambient',\r\n 'misc'\r\n ] }), core_1.Mod(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n weight: core_1.NumberNode({ integer: true }),\r\n minCount: core_1.NumberNode({ integer: true }),\r\n maxCount: core_1.NumberNode({ integer: true })\r\n })), {\r\n category: () => 'pool',\r\n default: () => [{\r\n type: 'minecraft:bat',\r\n weight: 1\r\n }]\r\n })),\r\n spawn_costs: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'entity_type' } }), core_1.Mod(core_1.ObjectNode({\r\n energy_budget: core_1.NumberNode(),\r\n charge: core_1.NumberNode()\r\n }, { category: 'function' }), {\r\n default: () => ({\r\n energy_budget: 0.12,\r\n charge: 1.0\r\n })\r\n })),\r\n carvers: core_1.MapNode(StringNode({ enum: ['air', 'liquid'] }), core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_carver' } })), {\r\n default: () => ['minecraft:cave']\r\n })),\r\n features: core_1.ListNode(core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })), { category: () => 'predicate' }), { maxLength: 10 })\r\n }, { context: 'biome' }), {\r\n default: () => ({\r\n surface_builder: 'minecraft:grass',\r\n depth: 0.125,\r\n scale: 0.05,\r\n temperature: 0.8,\r\n downfall: 0.4,\r\n precipitation: 'rain',\r\n category: 'plains',\r\n effects: {\r\n sky_color: 7907327,\r\n fog_color: 12638463,\r\n water_color: 4159204,\r\n water_fog_color: 329011\r\n }\r\n })\r\n }));\r\n}\r\nexports.initBiomeSchemas = initBiomeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCarverSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initCarverSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const CanyonConfig = {\r\n vertical_rotation: Common_1.FloatProvider(),\r\n shape: core_1.ObjectNode({\r\n distance_factor: Common_1.FloatProvider(),\r\n thickness: Common_1.FloatProvider(),\r\n width_smoothness: core_1.NumberNode({ integer: true, min: 0 }),\r\n horizontal_radius_factor: Common_1.FloatProvider(),\r\n vertical_radius_default_factor: core_1.NumberNode(),\r\n vertical_radius_center_factor: core_1.NumberNode()\r\n })\r\n };\r\n const CaveConfig = {\r\n horizontal_radius_multiplier: Common_1.FloatProvider(),\r\n vertical_radius_multiplier: Common_1.FloatProvider(),\r\n floor_level: Common_1.FloatProvider({ min: -1, max: 1 }),\r\n };\r\n schemas.register('configured_carver', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/carver' } }),\r\n config: core_1.ObjectNode({\r\n probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n y: Reference('height_provider'),\r\n yScale: Common_1.FloatProvider(),\r\n lava_level: Reference('vertical_anchor'),\r\n aquifers_enabled: core_1.BooleanNode(),\r\n debug_settings: core_1.Opt(core_1.ObjectNode({\r\n debug_mode: core_1.Opt(core_1.BooleanNode()),\r\n air_state: core_1.Opt(Reference('block_state')),\r\n water_state: core_1.Opt(Reference('block_state')),\r\n lava_state: core_1.Opt(Reference('block_state')),\r\n barrier_state: core_1.Opt(Reference('block_state'))\r\n })),\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:canyon': CanyonConfig,\r\n 'minecraft:cave': CaveConfig,\r\n 'minecraft:nether_cave': CaveConfig\r\n },\r\n })\r\n }, { context: 'carver' }), {\r\n default: () => ({\r\n type: 'minecraft:cave',\r\n config: {\r\n probability: 0.1\r\n }\r\n })\r\n }));\r\n}\r\nexports.initCarverSchemas = initCarverSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDecoratorSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initDecoratorSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const CountConfig = {\r\n count: Common_1.IntProvider({ min: 0, max: 256 })\r\n };\r\n schemas.register('configured_decorator', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/decorator' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:carving_mask': {\r\n step: StringNode({ enum: 'generation_step' })\r\n },\r\n 'minecraft:cave_surface': {\r\n surface: StringNode({ enum: ['floor', 'ceiling'] }),\r\n floor_to_ceiling_search_range: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:chance': {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n },\r\n 'minecraft:count': CountConfig,\r\n 'minecraft:count_extra': {\r\n count: core_1.NumberNode({ integer: true, min: 0 }),\r\n extra_count: core_1.NumberNode({ integer: true, min: 0 }),\r\n extra_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:count_multilayer': CountConfig,\r\n 'minecraft:count_noise': {\r\n noise_level: core_1.NumberNode(),\r\n below_noise: core_1.NumberNode({ integer: true }),\r\n above_noise: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:count_noise_biased': {\r\n noise_to_count_ratio: core_1.NumberNode({ integer: true }),\r\n noise_factor: core_1.NumberNode(),\r\n noise_offset: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:decorated': {\r\n outer: Reference('configured_decorator'),\r\n inner: Reference('configured_decorator')\r\n },\r\n 'minecraft:heightmap': {\r\n heightmap: StringNode({ enum: 'heightmap_type' })\r\n },\r\n 'minecraft:heightmap_spread_double': {\r\n heightmap: StringNode({ enum: 'heightmap_type' })\r\n },\r\n 'minecraft:lava_lake': {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n },\r\n 'minecraft:range': {\r\n height: Reference('height_provider')\r\n },\r\n 'minecraft:water_depth_threshold': {\r\n max_water_depth: core_1.NumberNode({ integer: true })\r\n }\r\n }\r\n }, { context: 'decorator', category: 'predicate' })\r\n }, { context: 'decorator', category: 'predicate' }));\r\n}\r\nexports.initDecoratorSchemas = initDecoratorSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initProcessorListSchemas = exports.Processors = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initProcessorListSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n exports.Processors = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/processor_list' } }),\r\n change: v => undefined\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('processor_list'),\r\n change: v => ({\r\n processors: [{\r\n \"processor_type\": \"minecraft:nop\"\r\n }]\r\n })\r\n }\r\n ]);\r\n schemas.register('processor_list', core_1.Mod(core_1.ObjectNode({\r\n processors: core_1.ListNode(Reference('processor'))\r\n }, { context: 'processor_list' }), {\r\n default: () => ({\r\n processors: [{\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n }]\r\n })\r\n }));\r\n schemas.register('processor', core_1.Mod(core_1.ObjectNode({\r\n processor_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_processor' } }),\r\n [core_1.Switch]: [{ push: 'processor_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_age': {\r\n mossiness: core_1.NumberNode()\r\n },\r\n 'minecraft:block_ignore': {\r\n blocks: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:block_rot': {\r\n integrity: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:gravity': {\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n offset: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:protected_blocks': {\r\n value: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n },\r\n 'minecraft:rule': {\r\n rules: core_1.ListNode(Reference('processor_rule'))\r\n }\r\n }\r\n }, { category: 'function', context: 'processor' }), {\r\n default: () => ({\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n })\r\n }));\r\n schemas.register('processor_rule', core_1.Mod(core_1.ObjectNode({\r\n position_predicate: core_1.Opt(Reference('pos_rule_test')),\r\n location_predicate: Reference('rule_test'),\r\n input_predicate: Reference('rule_test'),\r\n output_state: Reference('block_state'),\r\n output_nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block' } } }))\r\n }, { category: 'predicate', context: 'processor_rule' }), {\r\n default: () => ({\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n })\r\n }));\r\n const posTestFields = {\r\n min_dist: core_1.Opt(core_1.NumberNode({ min: 0, max: 255, integer: true })),\r\n max_dist: core_1.Opt(core_1.NumberNode({ min: 0, max: 255, integer: true })),\r\n min_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n max_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 }))\r\n };\r\n schemas.register('pos_rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'pos_rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:axis_aligned_linear_pos': {\r\n axis: StringNode({ enum: ['x', 'y', 'z'] }),\r\n ...posTestFields\r\n },\r\n 'minecraft:linear_pos': posTestFields\r\n }\r\n }, { context: 'pos_rule_test', disableSwitchContext: true }));\r\n schemas.register('rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:blockstate_match': {\r\n block_state: Reference('block_state')\r\n },\r\n 'minecraft:random_block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_blockstate_match': {\r\n block_state: Reference('block_state'),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:tag_match': {\r\n tag: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }\r\n }\r\n }, { context: 'rule_test', disableSwitchContext: true }));\r\n}\r\nexports.initProcessorListSchemas = initProcessorListSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nrequire(\"./Decorator\");\r\nrequire(\"./ProcessorList\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nfunction initFeatureSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const RandomPatchConfig = {\r\n can_replace: core_1.Opt(core_1.BooleanNode()),\r\n project: core_1.Opt(core_1.BooleanNode()),\r\n need_water: core_1.Opt(core_1.BooleanNode()),\r\n xspread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n yspread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n zspread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n tries: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 })),\r\n state_provider: Reference('block_state_provider'),\r\n block_placer: Reference('block_placer'),\r\n whitelist: core_1.ListNode(Reference('block_state')),\r\n blacklist: core_1.ListNode(Reference('block_state'))\r\n };\r\n const DiskConfig = {\r\n state: Reference('block_state'),\r\n radius: Common_1.IntProvider({ min: 0, max: 8 }),\r\n half_height: core_1.NumberNode({ integer: true, min: 0, max: 4 }),\r\n targets: core_1.ListNode(Reference('block_state'))\r\n };\r\n const HugeMushroomConfig = {\r\n cap_provider: Reference('block_state_provider'),\r\n stem_provider: Reference('block_state_provider'),\r\n foliage_radius: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n };\r\n const TargetBlockState = core_1.ObjectNode({\r\n target: Reference('rule_test'),\r\n state: Reference('block_state')\r\n });\r\n const OreConfig = {\r\n size: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n discard_chance_on_air_exposure: core_1.NumberNode({ min: 0, max: 1 }),\r\n targets: core_1.ListNode(TargetBlockState)\r\n };\r\n const Feature = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('configured_feature')\r\n }\r\n ], { choiceContext: 'feature' });\r\n const VegetationPatchConfig = {\r\n surface: StringNode({ enum: ['floor', 'ceiling'] }),\r\n depth: Common_1.IntProvider({ min: 1, max: 128 }),\r\n vertical_range: core_1.NumberNode({ integer: true, min: 1, max: 256 }),\r\n extra_bottom_block_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n extra_edge_column_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n vegetation_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n xz_radius: Common_1.IntProvider(),\r\n replaceable: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n ground_state: Reference('block_state_provider'),\r\n vegetation_feature: Feature\r\n };\r\n schemas.register('configured_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bamboo': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:basalt_columns': {\r\n reach: Common_1.IntProvider({ min: 0, max: 3 }),\r\n height: Common_1.IntProvider({ min: 1, max: 10 })\r\n },\r\n 'minecraft:block_pile': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:decorated': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:decorated_flower': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:delta_feature': {\r\n contents: Reference('block_state'),\r\n rim: Reference('block_state'),\r\n size: Common_1.IntProvider({ min: 0, max: 16 }),\r\n rim_size: Common_1.IntProvider({ min: 0, max: 16 })\r\n },\r\n 'minecraft:disk': DiskConfig,\r\n 'minecraft:dripstone_cluster': {\r\n floor_to_ceiling_search_range: core_1.NumberNode({ integer: true, min: 1, max: 512 }),\r\n height: Common_1.IntProvider({ min: 0, max: 128 }),\r\n radius: Common_1.IntProvider({ min: 0, max: 128 }),\r\n max_stalagmite_stalactite_height_diff: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n height_deviation: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n dripstone_block_layer_thickness: Common_1.IntProvider({ min: 0, max: 128 }),\r\n density: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n wetness: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n chance_of_dripstone_column_at_max_distance_from_center: core_1.NumberNode({ min: 0, max: 1 }),\r\n max_distance_from_edge_affecting_chance_of_dripstone_column: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n max_distance_from_center_affecting_height_bias: core_1.NumberNode({ integer: true, min: 1, max: 64 })\r\n },\r\n 'minecraft:end_gateway': {\r\n exact: core_1.BooleanNode(),\r\n exit: core_1.Opt(Reference('block_pos'))\r\n },\r\n 'minecraft:end_spike': {\r\n crystal_invulnerable: core_1.Opt(core_1.BooleanNode()),\r\n crystal_beam_target: core_1.Opt(Reference('block_pos')),\r\n spikes: core_1.ListNode(core_1.ObjectNode({\r\n centerX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n centerZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n height: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n guarded: core_1.Opt(core_1.BooleanNode())\r\n }))\r\n },\r\n 'minecraft:fill_layer': {\r\n state: Reference('block_state'),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 255 })\r\n },\r\n 'minecraft:flower': RandomPatchConfig,\r\n 'minecraft:forest_rock': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:fossil': {\r\n max_empty_corners_allowed: core_1.NumberNode({ integer: true, min: 0, max: 7 }),\r\n fossil_structures: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$structure' } })),\r\n overlay_structures: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$structure' } })),\r\n fossil_processors: ProcessorList_1.Processors,\r\n overlay_processors: ProcessorList_1.Processors,\r\n },\r\n 'minecraft:geode': {\r\n blocks: core_1.ObjectNode({\r\n filling_provider: Reference('block_state_provider'),\r\n inner_layer_provider: Reference('block_state_provider'),\r\n alternate_inner_layer_provider: Reference('block_state_provider'),\r\n middle_layer_provider: Reference('block_state_provider'),\r\n outer_layer_provider: Reference('block_state_provider'),\r\n inner_placements: core_1.ListNode(Reference('block_state')),\r\n cannot_replace: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n invalid_blocks: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }),\r\n layers: core_1.ObjectNode({\r\n filling: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n inner_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n middle_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n outer_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n }),\r\n crack: core_1.ObjectNode({\r\n generate_crack_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n base_crack_size: core_1.Opt(core_1.NumberNode({ min: 0, max: 5 })),\r\n crack_point_offset: core_1.Opt(core_1.NumberNode({ min: 0, max: 10, integer: true })),\r\n }),\r\n noise_multiplier: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n use_potential_placements_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n use_alternate_layer0_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n placements_require_layer0_alternate: core_1.Opt(core_1.BooleanNode()),\r\n outer_wall_distance: core_1.Opt(Common_1.IntProvider({ min: 1, max: 20 })),\r\n distribution_points: core_1.Opt(Common_1.IntProvider({ min: 1, max: 20 })),\r\n point_offset: core_1.Opt(Common_1.IntProvider({ min: 0, max: 10 })),\r\n min_gen_offset: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max_gen_offset: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n invalid_blocks_threshold: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:glow_lichen': {\r\n search_range: core_1.Opt(core_1.NumberNode({ min: 1, max: 64, integer: true })),\r\n chance_of_spreading: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n can_place_on_floor: core_1.Opt(core_1.BooleanNode()),\r\n can_place_on_ceiling: core_1.Opt(core_1.BooleanNode()),\r\n can_place_on_wall: core_1.Opt(core_1.BooleanNode()),\r\n can_be_placed_on: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:growing_plant': {\r\n direction: StringNode({ enum: ['up', 'down', 'north', 'east', 'south', 'west'] }),\r\n allow_water: core_1.BooleanNode(),\r\n height_distribution: core_1.ListNode(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true }),\r\n data: Common_1.IntProvider()\r\n })),\r\n body_provider: Reference('block_state_provider'),\r\n head_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:huge_brown_mushroom': HugeMushroomConfig,\r\n 'minecraft:huge_fungus': {\r\n hat_state: Reference('block_state'),\r\n decor_state: Reference('block_state'),\r\n stem_state: Reference('block_state'),\r\n valid_base_block: Reference('block_state'),\r\n planted: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:huge_red_mushroom': HugeMushroomConfig,\r\n 'minecraft:ice_patch': DiskConfig,\r\n 'minecraft:iceberg': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:lake': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:large_dripstone': {\r\n floor_to_ceiling_search_range: core_1.Opt(core_1.NumberNode({ integer: true, min: 1, max: 512 })),\r\n column_radius: Common_1.IntProvider({ min: 0, max: 60 }),\r\n height_scale: Common_1.FloatProvider({ min: 0, max: 20 }),\r\n max_column_radius_to_cave_height_ratio: core_1.NumberNode({ min: 0, max: 1 }),\r\n stalactite_bluntness: Common_1.FloatProvider({ min: 0.1, max: 10 }),\r\n stalagmite_bluntness: Common_1.FloatProvider({ min: 0.1, max: 10 }),\r\n wind_speed: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n min_radius_for_wind: core_1.NumberNode({ integer: true, min: 0, max: 100 }),\r\n min_bluntness_for_wind: core_1.NumberNode({ min: 0, max: 5 })\r\n },\r\n 'minecraft:nether_forest_vegetation': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:netherrack_replace_blobs': {\r\n state: Reference('block_state'),\r\n target: Reference('block_state'),\r\n radius: Common_1.IntProvider({ min: 0, max: 12 })\r\n },\r\n 'minecraft:no_bonemeal_flower': RandomPatchConfig,\r\n 'minecraft:ore': OreConfig,\r\n 'minecraft:random_patch': RandomPatchConfig,\r\n 'minecraft:random_boolean_selector': {\r\n feature_false: Feature,\r\n feature_true: Feature\r\n },\r\n 'minecraft:random_selector': {\r\n features: core_1.ListNode(core_1.ObjectNode({\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n feature: Feature\r\n })),\r\n default: Feature\r\n },\r\n 'minecraft:replace_single_block': {\r\n targets: core_1.ListNode(TargetBlockState)\r\n },\r\n 'minecraft:root_system': {\r\n required_vertical_space_for_tree: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_radius: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_placement_attempts: core_1.NumberNode({ integer: true, min: 1, max: 256 }),\r\n root_column_max_height: core_1.NumberNode({ integer: true, min: 1, max: 4096 }),\r\n hanging_root_radius: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n hanging_roots_vertical_span: core_1.NumberNode({ integer: true, min: 0, max: 16 }),\r\n hanging_root_placement_attempts: core_1.NumberNode({ integer: true, min: 0, max: 256 }),\r\n allowed_vertical_water_for_tree: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_replaceable: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n root_state_provider: Reference('block_state_provider'),\r\n hanging_root_state_provider: Reference('block_state_provider'),\r\n feature: Feature\r\n },\r\n 'minecraft:scattered_ore': OreConfig,\r\n 'minecraft:sea_pickle': {\r\n count: Common_1.IntProvider({ min: 0, max: 256 })\r\n },\r\n 'minecraft:seagrass': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:simple_block': {\r\n to_place: Reference('block_state_provider'),\r\n place_on: core_1.Opt(core_1.ListNode(Reference('block_state'))),\r\n place_in: core_1.Opt(core_1.ListNode(Reference('block_state'))),\r\n place_under: core_1.Opt(core_1.ListNode(Reference('block_state')))\r\n },\r\n 'minecraft:simple_random_selector': {\r\n features: core_1.ListNode(Feature)\r\n },\r\n 'minecraft:small_dripstone': {\r\n max_placements: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 100 })),\r\n empty_space_search_radius: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 20 })),\r\n max_offset_from_origin: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 20 })),\r\n chance_of_taller_dripstone: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:spring_feature': {\r\n state: Reference('fluid_state'),\r\n rock_count: core_1.NumberNode({ integer: true }),\r\n hole_count: core_1.NumberNode({ integer: true }),\r\n requires_block_below: core_1.BooleanNode(),\r\n valid_blocks: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:tree': {\r\n ignore_vines: core_1.Opt(core_1.BooleanNode()),\r\n force_dirt: core_1.Opt(core_1.BooleanNode()),\r\n minimum_size: Reference('feature_size'),\r\n dirt_provider: Reference('block_state_provider'),\r\n sapling_provider: Reference('block_state_provider'),\r\n trunk_provider: Reference('block_state_provider'),\r\n foliage_provider: Reference('block_state_provider'),\r\n trunk_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/trunk_placer_type' } }),\r\n base_height: core_1.NumberNode({ integer: true, min: 0, max: 32 }),\r\n height_rand_a: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n height_rand_b: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bending_trunk_placer': {\r\n bend_length: Common_1.IntProvider({ min: 1, max: 64 }),\r\n min_height_for_leaves: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n }\r\n }\r\n }, { context: 'trunk_placer' }),\r\n foliage_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/foliage_placer_type' } }),\r\n radius: Common_1.IntProvider({ min: 0, max: 16 }),\r\n offset: Common_1.IntProvider({ min: 0, max: 16 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:blob_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:bush_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:fancy_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:jungle_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:mega_pine_foliage_placer': {\r\n crown_height: Common_1.IntProvider({ min: 0, max: 24 })\r\n },\r\n 'minecraft:pine_foliage_placer': {\r\n height: Common_1.IntProvider({ min: 0, max: 24 })\r\n },\r\n 'minecraft:random_spread_foliage_placer': {\r\n foliage_height: Common_1.IntProvider({ min: 1, max: 512 }),\r\n leaf_placement_attempts: core_1.NumberNode({ integer: true, min: 0, max: 256 })\r\n },\r\n 'minecraft:spruce_foliage_placer': {\r\n trunk_height: Common_1.IntProvider({ min: 0, max: 24 })\r\n }\r\n }\r\n }, { context: 'foliage_placer', disableSwitchContext: true }),\r\n decorators: core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/tree_decorator_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alter_ground': {\r\n provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:beehive': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:cocoa': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }\r\n }\r\n }, { context: 'tree_decorator' }))\r\n },\r\n 'minecraft:underwater_magma': {\r\n floor_search_range: core_1.NumberNode({ integer: true, min: 0, max: 512 }),\r\n placement_radius_around_floor: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n placement_probability_per_valid_position: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:vegetation_patch': VegetationPatchConfig,\r\n 'minecraft:waterlogged_vegetation_patch': VegetationPatchConfig\r\n }\r\n }, { context: 'feature' })\r\n }, { context: 'feature' }), {\r\n default: () => ({\r\n type: 'minecraft:decorated',\r\n config: {\r\n decorator: {\r\n type: 'minecraft:count',\r\n config: {\r\n count: 4\r\n }\r\n },\r\n feature: {\r\n type: 'minecraft:tree',\r\n config: {\r\n max_water_depth: 0,\r\n ignore_vines: true,\r\n minimum_size: {},\r\n trunk_placer: {\r\n base_height: 5,\r\n height_rand_a: 2,\r\n height_rand_b: 0\r\n },\r\n foliage_placer: {\r\n radius: 2,\r\n offset: 0,\r\n height: 3\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('feature_size', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature_size_type' } }),\r\n min_clipped_height: core_1.Opt(core_1.NumberNode({ min: 0, max: 80 })),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:two_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 81 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n },\r\n 'minecraft:three_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n upper_limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n middle_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n }\r\n }\r\n }, { disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:two_layers_feature_size'\r\n })\r\n }));\r\n schemas.register('block_state_provider', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_state_provider_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:randomized_int_state_provider': {\r\n property: StringNode(),\r\n values: Common_1.IntProvider(),\r\n source: Reference('block_state_provider')\r\n },\r\n 'minecraft:rotated_block_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:simple_state_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:weighted_state_provider': {\r\n entries: core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n data: Reference('block_state')\r\n }), {\r\n default: () => ({\r\n data: {}\r\n })\r\n }))\r\n }\r\n }\r\n }, { context: 'block_state_provider' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_state_provider'\r\n })\r\n }));\r\n schemas.register('block_placer', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_placer_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:column_placer': {\r\n size: Common_1.IntProvider({ min: 0 })\r\n }\r\n }\r\n }, { context: 'block_placer' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_block_placer'\r\n })\r\n }));\r\n}\r\nexports.initFeatureSchemas = initFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initNoiseSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initNoiseSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('noise_settings', core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Mod(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings', isDefinition: true } }), {\r\n enabled: (path) => path.getArray().length > 0\r\n }),\r\n bedrock_roof_position: core_1.NumberNode({ integer: true }),\r\n bedrock_floor_position: core_1.NumberNode({ integer: true }),\r\n sea_level: core_1.NumberNode({ integer: true }),\r\n min_surface_level: core_1.NumberNode({ integer: true }),\r\n disable_mob_generation: core_1.BooleanNode(),\r\n noise_caves_enabled: core_1.BooleanNode(),\r\n noodle_caves_enabled: core_1.BooleanNode(),\r\n aquifers_enabled: core_1.BooleanNode(),\r\n deepslate_enabled: core_1.BooleanNode(),\r\n ore_veins_enabled: core_1.BooleanNode(),\r\n default_block: Reference('block_state'),\r\n default_fluid: Reference('block_state'),\r\n noise: core_1.ObjectNode({\r\n min_y: core_1.NumberNode({ integer: true, min: -2048, max: 2047 }),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n density_factor: core_1.NumberNode(),\r\n density_offset: core_1.NumberNode(),\r\n size_horizontal: core_1.NumberNode({ integer: true }),\r\n size_vertical: core_1.NumberNode({ integer: true }),\r\n simplex_surface_noise: core_1.BooleanNode(),\r\n random_density_offset: core_1.Opt(core_1.BooleanNode()),\r\n island_noise_override: core_1.Opt(core_1.BooleanNode()),\r\n amplified: core_1.Opt(core_1.BooleanNode()),\r\n sampling: core_1.ObjectNode({\r\n xz_scale: core_1.NumberNode(),\r\n y_scale: core_1.NumberNode(),\r\n xz_factor: core_1.NumberNode(),\r\n y_factor: core_1.NumberNode()\r\n }),\r\n bottom_slide: core_1.ObjectNode({\r\n target: core_1.NumberNode({ integer: true }),\r\n size: core_1.NumberNode({ integer: true, min: 0 }),\r\n offset: core_1.NumberNode({ integer: true })\r\n }),\r\n top_slide: core_1.ObjectNode({\r\n target: core_1.NumberNode({ integer: true }),\r\n size: core_1.NumberNode({ integer: true, min: 0 }),\r\n offset: core_1.NumberNode({ integer: true })\r\n })\r\n }),\r\n structures: Reference('generator_structures')\r\n }, { context: 'noise_settings' }), node => ({\r\n default: () => Common_1.DefaultNoiseSettings,\r\n validate: (path, value, errors, options) => {\r\n var _a, _b, _c, _d;\r\n value = node.validate(path, value, errors, options);\r\n if (((_a = value === null || value === void 0 ? void 0 : value.noise) === null || _a === void 0 ? void 0 : _a.min_y) + ((_b = value === null || value === void 0 ? void 0 : value.noise) === null || _b === void 0 ? void 0 : _b.height) > 2047) {\r\n errors.add(path.push('noise').push('height'), 'error.min_y_plus_height', 2047);\r\n }\r\n if (((_c = value === null || value === void 0 ? void 0 : value.noise) === null || _c === void 0 ? void 0 : _c.height) % 16 !== 0) {\r\n errors.add(path.push('noise').push('height'), 'error.height_multiple', 16);\r\n }\r\n if (((_d = value === null || value === void 0 ? void 0 : value.noise) === null || _d === void 0 ? void 0 : _d.min_y) % 16 !== 0) {\r\n errors.add(path.push('noise').push('min_y'), 'error.min_y_multiple', 16);\r\n }\r\n return value;\r\n }\r\n })));\r\n schemas.register('generator_structures', core_1.ObjectNode({\r\n stronghold: core_1.Opt(core_1.ObjectNode({\r\n distance: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n spread: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n count: core_1.NumberNode({ integer: true, min: 1, max: 4095 })\r\n })),\r\n structures: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }), core_1.Mod(core_1.ObjectNode({\r\n spacing: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n separation: core_1.Mod(core_1.NumberNode({ integer: true, min: 0, max: 4096 }), (node) => ({\r\n validate: (path, value, errors, options) => {\r\n if (path.pop().push('spacing').get() <= value) {\r\n errors.add(path, 'error.separation_smaller_spacing');\r\n }\r\n return node.validate(path, value, errors, options);\r\n }\r\n })),\r\n salt: core_1.NumberNode({ integer: true, min: 0 })\r\n }, { context: 'generator_structure' }), {\r\n default: () => ({\r\n spacing: 10,\r\n separation: 5,\r\n salt: 0\r\n })\r\n }))\r\n }));\r\n schemas.register('generator_layer', core_1.Mod(core_1.ObjectNode({\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n height: core_1.NumberNode({ integer: true, min: 1 })\r\n }), {\r\n default: () => ({\r\n block: 'minecraft:stone',\r\n height: 1\r\n })\r\n }));\r\n}\r\nexports.initNoiseSettingsSchemas = initNoiseSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initStructureFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initStructureFeatureSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const templatePoolConfig = {\r\n start_pool: StringNode({ validator: 'resource', params: { pool: '$worldgen/template_pool' } }),\r\n size: core_1.NumberNode({ integer: true })\r\n };\r\n schemas.register('configured_structure_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bastion_remnant': templatePoolConfig,\r\n 'minecraft:buried_treasure': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:mineshaft': {\r\n type: StringNode({ enum: ['normal', 'mesa'] }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:nether_fossil': {\r\n height: Reference('height_provider')\r\n },\r\n 'minecraft:ocean_ruin': {\r\n biome_temp: StringNode({ enum: ['cold', 'warm'] }),\r\n large_probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n cluster_probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:pillager_outpost': templatePoolConfig,\r\n 'minecraft:ruined_portal': {\r\n portal_type: StringNode({ enum: ['standard', 'desert', 'jungle', 'mountain', 'nether', 'ocean', 'swamp'] })\r\n },\r\n 'minecraft:shipwreck': {\r\n is_beached: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:village': templatePoolConfig\r\n }\r\n }, { context: 'structure_feature', disableSwitchContext: true })\r\n }, { context: 'structure_feature' }), {\r\n default: () => ({\r\n type: 'minecraft:bastion_remnant',\r\n config: {\r\n start_pool: 'minecraft:bastion/starts',\r\n size: 6\r\n }\r\n })\r\n }));\r\n}\r\nexports.initStructureFeatureSchemas = initStructureFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSurfaceBuilderSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initSurfaceBuilderSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('configured_surface_builder', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/surface_builder' } }),\r\n config: core_1.ObjectNode({\r\n top_material: Reference('block_state'),\r\n under_material: Reference('block_state'),\r\n underwater_material: Reference('block_state'),\r\n }, { context: 'surface_builder' })\r\n }, { context: 'surface_builder' }), {\r\n default: () => ({\r\n type: 'minecraft:default',\r\n config: {\r\n top_material: {\r\n Name: 'minecraft:grass_block',\r\n Properties: {\r\n snowy: 'false'\r\n }\r\n },\r\n under_material: {\r\n Name: 'minecraft:dirt'\r\n },\r\n underwater_material: {\r\n Name: 'minecraft:gravel'\r\n }\r\n }\r\n })\r\n }));\r\n}\r\nexports.initSurfaceBuilderSchemas = initSurfaceBuilderSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTemplatePoolSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nrequire(\"./ProcessorList\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nfunction initTemplatePoolSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('template_pool', core_1.Mod(core_1.ObjectNode({\r\n name: StringNode(),\r\n fallback: StringNode(),\r\n elements: core_1.ListNode(Reference('template_weighted_element'))\r\n }, { context: 'template_pool' }), {\r\n default: () => ({\r\n fallback: 'minecraft:empty',\r\n elements: [\r\n {\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n }\r\n ]\r\n })\r\n }));\r\n schemas.register('template_weighted_element', core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n element: Reference('template_element')\r\n }, { category: 'pool' }), {\r\n default: () => ({\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n })\r\n }));\r\n schemas.register('template_element', core_1.Mod(core_1.ObjectNode({\r\n element_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_pool_element' } }),\r\n projection: StringNode({ enum: ['rigid', 'terrain_matching'] }),\r\n [core_1.Switch]: [{ push: 'element_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:feature_pool_element': {\r\n feature: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n 'minecraft:legacy_single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: ProcessorList_1.Processors\r\n },\r\n 'minecraft:list_pool_element': {\r\n elements: core_1.ListNode(Reference('template_element'))\r\n },\r\n 'minecraft:single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: ProcessorList_1.Processors\r\n }\r\n }\r\n }, { context: 'template_element', disableSwitchContext: true }), {\r\n default: () => ({\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n })\r\n }));\r\n}\r\nexports.initTemplatePoolSchemas = initTemplatePoolSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldgenSchemas = void 0;\r\nconst Biome_1 = require(\"./Biome\");\r\nconst Carver_1 = require(\"./Carver\");\r\nconst Decorator_1 = require(\"./Decorator\");\r\nconst Feature_1 = require(\"./Feature\");\r\nconst NoiseSettings_1 = require(\"./NoiseSettings\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nconst StructureFeature_1 = require(\"./StructureFeature\");\r\nconst SurfaceBuilder_1 = require(\"./SurfaceBuilder\");\r\nconst TemplatePool_1 = require(\"./TemplatePool\");\r\nfunction initWorldgenSchemas(schemas, collections) {\r\n // `ProcessorList.ts` has exports. It should be initialized first. \r\n ProcessorList_1.initProcessorListSchemas(schemas, collections);\r\n Biome_1.initBiomeSchemas(schemas, collections);\r\n Carver_1.initCarverSchemas(schemas, collections);\r\n Decorator_1.initDecoratorSchemas(schemas, collections);\r\n Feature_1.initFeatureSchemas(schemas, collections);\r\n NoiseSettings_1.initNoiseSettingsSchemas(schemas, collections);\r\n StructureFeature_1.initStructureFeatureSchemas(schemas, collections);\r\n SurfaceBuilder_1.initSurfaceBuilderSchemas(schemas, collections);\r\n TemplatePool_1.initTemplatePoolSchemas(schemas, collections);\r\n}\r\nexports.initWorldgenSchemas = initWorldgenSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initWorldSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('world_settings', core_1.Mod(core_1.ObjectNode({\r\n generate_features: core_1.BooleanNode(),\r\n bonus_chest: core_1.BooleanNode(),\r\n seed: core_1.NumberNode({ integer: true }),\r\n dimensions: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$dimension' } }), Reference('dimension'))\r\n }, { context: 'world_settings' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n generate_features: true,\r\n bonus_chest: false,\r\n seed,\r\n dimensions: {\r\n 'minecraft:overworld': {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:vanilla_layered',\r\n seed\r\n },\r\n settings: 'minecraft:overworld',\r\n }\r\n },\r\n 'minecraft:the_nether': {\r\n type: 'minecraft:the_nether',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:multi_noise',\r\n seed,\r\n humidity_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n altitude_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n weirdness_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n temperature_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n biomes: [\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: 0.0 },\r\n biome: 'minecraft:nether_wastes'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: -0.5 },\r\n biome: 'minecraft:soul_sand_valley'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.4, humidity: 0.0 },\r\n biome: 'minecraft:crimson_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.375, temperature: 0.0, humidity: 0.5 },\r\n biome: 'minecraft:warped_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.175, temperature: -0.5, humidity: 0.0 },\r\n biome: 'minecraft:basalt_deltas'\r\n }\r\n ]\r\n },\r\n settings: 'minecraft:nether'\r\n }\r\n },\r\n 'minecraft:the_end': {\r\n type: \"minecraft:the_end\",\r\n generator: {\r\n type: \"minecraft:noise\",\r\n seed,\r\n biome_source: {\r\n type: \"minecraft:the_end\",\r\n seed\r\n },\r\n settings: \"minecraft:end\"\r\n }\r\n }\r\n }\r\n };\r\n }\r\n }));\r\n}\r\nexports.initWorldSettingsSchemas = initWorldSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSchemas = void 0;\r\nconst Advancement_1 = require(\"./Advancement\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Condition_1 = require(\"./Condition\");\r\nconst Dimension_1 = require(\"./Dimension\");\r\nconst DimensionType_1 = require(\"./DimensionType\");\r\nconst ItemModifier_1 = require(\"./ItemModifier\");\r\nconst LootTable_1 = require(\"./LootTable\");\r\nconst PackMcmeta_1 = require(\"./PackMcmeta\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nconst Recipe_1 = require(\"./Recipe\");\r\nconst Tags_1 = require(\"./Tags\");\r\nconst TextComponent_1 = require(\"./TextComponent\");\r\nconst worldgen_1 = require(\"./worldgen\");\r\nconst WorldSettings_1 = require(\"./WorldSettings\");\r\nfunction initSchemas(schemas, collections) {\r\n // `Common.ts` is the only file that has exports. It should be initialized first. \r\n Common_1.initCommonSchemas(schemas, collections);\r\n Advancement_1.initAdvancementSchemas(schemas, collections);\r\n Condition_1.initConditionSchemas(schemas, collections);\r\n DimensionType_1.initDimensionTypeSchemas(schemas, collections);\r\n Dimension_1.initDimensionSchemas(schemas, collections);\r\n ItemModifier_1.initItemModifierSchemas(schemas, collections);\r\n LootTable_1.initLootTableSchemas(schemas, collections);\r\n PackMcmeta_1.initPackMcmetaSchemas(schemas, collections);\r\n Predicates_1.initPredicatesSchemas(schemas, collections);\r\n Recipe_1.initRecipeSchemas(schemas, collections);\r\n Tags_1.initTagsSchemas(schemas, collections);\r\n TextComponent_1.initTextComponentSchemas(schemas, collections);\r\n worldgen_1.initWorldgenSchemas(schemas, collections);\r\n WorldSettings_1.initWorldSettingsSchemas(schemas, collections);\r\n}\r\nexports.initSchemas = initSchemas;\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getSchemas = exports.getCollections = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Collections_1 = require(\"./Collections\");\r\nconst schemas_1 = require(\"./schemas\");\r\nexports.lootContext = __importStar(require(\"./LootContext\"));\r\nfunction getCollections() {\r\n const collections = new core_1.CollectionRegistry();\r\n Collections_1.initCollections(collections);\r\n return collections;\r\n}\r\nexports.getCollections = getCollections;\r\n/**\r\n * @param collections The CollectionRegistry for this version. Note that apart from\r\n * the built-in collections, the client of this module is responsible for futhermore\r\n * adding the vanilla registries to it: the collection IDs shouldn't contain the\r\n * namespace (`minecraft:`) part, while the values within the collections should.\r\n *\r\n * @example\r\n * for (const key in VANILLA_REGISTRIES>) {\r\n * collections.register(\r\n * key.replace(/^minecraft:/, ''),\r\n * Object.keys(VANILLA_REGISTRIES[key].entries)\r\n * )\r\n * }\r\n */\r\nfunction getSchemas(collections) {\r\n const schemas = new core_1.SchemaRegistry();\r\n schemas_1.initSchemas(schemas, collections);\r\n return schemas;\r\n}\r\nexports.getSchemas = getSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCollections = void 0;\r\nfunction initCollections(collections) {\r\n collections.register('advancement_trigger', [\r\n 'minecraft:bee_nest_destroyed',\r\n 'minecraft:bred_animals',\r\n 'minecraft:brewed_potion',\r\n 'minecraft:changed_dimension',\r\n 'minecraft:channeled_lightning',\r\n 'minecraft:construct_beacon',\r\n 'minecraft:consume_item',\r\n 'minecraft:cured_zombie_villager',\r\n 'minecraft:effects_changed',\r\n 'minecraft:enchanted_item',\r\n 'minecraft:enter_block',\r\n 'minecraft:entity_hurt_player',\r\n 'minecraft:entity_killed_player',\r\n 'minecraft:fall_from_height',\r\n 'minecraft:filled_bucket',\r\n 'minecraft:fishing_rod_hooked',\r\n 'minecraft:hero_of_the_village',\r\n 'minecraft:impossible',\r\n 'minecraft:inventory_changed',\r\n 'minecraft:item_durability_changed',\r\n 'minecraft:item_used_on_block',\r\n 'minecraft:killed_by_crossbow',\r\n 'minecraft:levitation',\r\n 'minecraft:lightning_strike',\r\n 'minecraft:location',\r\n 'minecraft:nether_travel',\r\n 'minecraft:placed_block',\r\n 'minecraft:player_generates_container_loot',\r\n 'minecraft:player_hurt_entity',\r\n 'minecraft:player_interacted_with_entity',\r\n 'minecraft:player_killed_entity',\r\n 'minecraft:recipe_unlocked',\r\n 'minecraft:ride_entity_in_lava',\r\n 'minecraft:shot_crossbow',\r\n 'minecraft:slept_in_bed',\r\n 'minecraft:slide_down_block',\r\n 'minecraft:started_riding',\r\n 'minecraft:summoned_entity',\r\n 'minecraft:tame_animal',\r\n 'minecraft:target_hit',\r\n 'minecraft:tick',\r\n 'minecraft:thrown_item_picked_up_by_entity',\r\n 'minecraft:used_ender_eye',\r\n 'minecraft:used_totem',\r\n 'minecraft:using_item',\r\n 'minecraft:villager_trade',\r\n 'minecraft:voluntary_exile'\r\n ]);\r\n collections.register('keybind', [\r\n 'key.advancements',\r\n 'key.attack',\r\n 'key.back',\r\n 'key.chat',\r\n 'key.command',\r\n 'key.drop',\r\n 'key.forward',\r\n 'key.fullscreen',\r\n 'key.hotbar.1',\r\n 'key.hotbar.2',\r\n 'key.hotbar.3',\r\n 'key.hotbar.4',\r\n 'key.hotbar.5',\r\n 'key.hotbar.6',\r\n 'key.hotbar.7',\r\n 'key.hotbar.8',\r\n 'key.hotbar.9',\r\n 'key.inventory',\r\n 'key.jump',\r\n 'key.left',\r\n 'key.loadToolbarActivator',\r\n 'key.pickItem',\r\n 'key.playerlist',\r\n 'key.right',\r\n 'key.saveToolbarActivator',\r\n 'key.screenshot',\r\n 'key.smoothCamera',\r\n 'key.sneak',\r\n 'key.spectatorOutlines',\r\n 'key.sprint',\r\n 'key.swapOffhand',\r\n 'key.togglePerspective',\r\n 'key.use'\r\n ]);\r\n collections.register('slot', [\r\n 'mainhand',\r\n 'offhand',\r\n 'head',\r\n 'chest',\r\n 'legs',\r\n 'feet'\r\n ]);\r\n collections.register('gamemode', [\r\n 'survival',\r\n 'creative',\r\n 'adventure',\r\n 'spectator'\r\n ]);\r\n collections.register('entity_source', [\r\n 'this',\r\n 'killer',\r\n 'direct_killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('copy_source', [\r\n 'block_entity',\r\n 'this',\r\n 'killer',\r\n 'killer_player'\r\n ]);\r\n collections.register('loot_table_apply_bonus_formula', [\r\n 'minecraft:uniform_bonus_count',\r\n 'minecraft:binomial_with_bonus_count',\r\n 'minecraft:ore_drops'\r\n ]);\r\n collections.register('map_decoration', [\r\n 'mansion',\r\n 'monument',\r\n 'player',\r\n 'frame',\r\n 'red_marker',\r\n 'blue_marker',\r\n 'target_x',\r\n 'target_point',\r\n 'player_off_map',\r\n 'player_off_limits',\r\n 'red_x',\r\n 'banner_white',\r\n 'banner_orange',\r\n 'banner_magenta',\r\n 'banner_light_blue',\r\n 'banner_yellow',\r\n 'banner_lime',\r\n 'banner_pink',\r\n 'banner_gray',\r\n 'banner_light_gray',\r\n 'banner_cyan',\r\n 'banner_purple',\r\n 'banner_blue',\r\n 'banner_brown',\r\n 'banner_green',\r\n 'banner_red',\r\n 'banner_black'\r\n ]);\r\n collections.register('map_feature', [\r\n 'bastion_remnant',\r\n 'buried_treasure',\r\n 'desert_pyramid',\r\n 'endcity',\r\n 'fortress',\r\n 'igloo',\r\n 'jungle_pyramid',\r\n 'mansion',\r\n 'mineshaft',\r\n 'monument',\r\n 'nether_fossil',\r\n 'ocean_ruin',\r\n 'pillager_outpost',\r\n 'ruined_portal',\r\n 'shipwreck',\r\n 'stronghold',\r\n 'swamp_hut',\r\n 'village'\r\n ]);\r\n collections.register('recipe_group', [\r\n 'bed',\r\n 'light_gray_dye',\r\n 'iron_ingot',\r\n 'wooden_stairs',\r\n 'black_dye',\r\n 'stained_terracotta',\r\n 'dyed_bed',\r\n 'magenta_dye',\r\n 'bark',\r\n 'rabbit_stew',\r\n 'light_blue_dye',\r\n 'wooden_fence_gate',\r\n 'planks',\r\n 'stained_glass',\r\n 'wooden_door',\r\n 'stained_glass_pane',\r\n 'wooden_fence',\r\n 'sticks',\r\n 'concrete_powder',\r\n 'wooden_pressure_plate',\r\n 'boat',\r\n 'brown_dye',\r\n 'yellow_dye',\r\n 'bonemeal',\r\n 'red_dye',\r\n 'wooden_trapdoor',\r\n 'wooden_button',\r\n 'gold_ingot',\r\n 'pink_dye',\r\n 'wooden_slab',\r\n 'orange_dye',\r\n 'carpet',\r\n 'sign',\r\n 'wool',\r\n 'sugar',\r\n 'blue_dye',\r\n 'white_dye',\r\n 'banner',\r\n 'netherite_ingot'\r\n ]);\r\n collections.register('biome_category', [\r\n 'beach',\r\n 'desert',\r\n 'extreme_hills',\r\n 'forest',\r\n 'icy',\r\n 'jungle',\r\n 'mesa',\r\n 'mountain',\r\n 'mushroom',\r\n 'nether',\r\n 'none',\r\n 'ocean',\r\n 'plains',\r\n 'river',\r\n 'savanna',\r\n 'swamp',\r\n 'taiga',\r\n 'the_end',\r\n 'underground'\r\n ]);\r\n collections.register('heightmap_type', [\r\n 'MOTION_BLOCKING',\r\n 'MOTION_BLOCKING_NO_LEAVES',\r\n 'OCEAN_FLOOR',\r\n 'OCEAN_FLOOR_WG',\r\n 'WORLD_SURFACE',\r\n 'WORLD_SURFACE_WG'\r\n ]);\r\n collections.register('generation_step', [\r\n 'air',\r\n 'liquid'\r\n ]);\r\n collections.register('loot_context_type', [\r\n 'minecraft:empty',\r\n 'minecraft:chest',\r\n 'minecraft:command',\r\n 'minecraft:selector',\r\n 'minecraft:fishing',\r\n 'minecraft:entity',\r\n 'minecraft:gift',\r\n 'minecraft:barter',\r\n 'minecraft:advancement_reward',\r\n 'minecraft:advancement_entity',\r\n 'minecraft:generic',\r\n 'minecraft:block'\r\n ]);\r\n collections.register('banner_pattern', [\r\n 'base',\r\n 'square_bottom_left',\r\n 'square_bottom_right',\r\n 'square_top_left',\r\n 'square_top_right',\r\n 'stripe_bottom',\r\n 'stripe_top',\r\n 'stripe_left',\r\n 'stripe_right',\r\n 'stripe_center',\r\n 'stripe_middle',\r\n 'stripe_downright',\r\n 'stripe_downleft',\r\n 'small_stripes',\r\n 'cross',\r\n 'straight_cross',\r\n 'triangle_bottom',\r\n 'triangle_top',\r\n 'triangles_bottom',\r\n 'triangles_top',\r\n 'diagonal_left',\r\n 'diagonal_up_right',\r\n 'diagonal_up_left',\r\n 'diagonal_right',\r\n 'circle',\r\n 'rhombus',\r\n 'half_vertical',\r\n 'half_horizontal',\r\n 'half_vertical_right',\r\n 'half_horizontal_bottom',\r\n 'border',\r\n 'curly_border',\r\n 'gradient',\r\n 'gradient_up',\r\n 'bricks',\r\n 'globe',\r\n 'creeper',\r\n 'skull',\r\n 'flower',\r\n 'mojang',\r\n 'piglin'\r\n ]);\r\n collections.register('dye_color', [\r\n 'white',\r\n 'orange',\r\n 'magenta',\r\n 'light_blue',\r\n 'yellow',\r\n 'lime',\r\n 'pink',\r\n 'gray',\r\n 'light_gray',\r\n 'cyan',\r\n 'purple',\r\n 'blue',\r\n 'brown',\r\n 'green',\r\n 'red',\r\n 'black'\r\n ]);\r\n collections.register('cave_surface', [\r\n 'floor',\r\n 'ceiling'\r\n ]);\r\n}\r\nexports.initCollections = initCollections;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initAdvancementSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initAdvancementSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const EntityPredicate = core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.Opt(Reference('entity_predicate')),\r\n change: v => { var _a, _b; return (_b = (_a = v[0]) === null || _a === void 0 ? void 0 : _a.predicate) !== null && _b !== void 0 ? _b : ({}); }\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('condition')),\r\n change: v => [{\r\n condition: 'minecraft:entity_properties',\r\n predicate: v\r\n }]\r\n }\r\n ], { context: 'conditions' });\r\n schemas.register('advancement', core_1.Mod(core_1.ObjectNode({\r\n display: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n icon: core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } }))\r\n }),\r\n title: Reference('text_component'),\r\n description: Reference('text_component'),\r\n background: core_1.Opt(StringNode()),\r\n frame: core_1.Opt(StringNode({ enum: ['task', 'challenge', 'goal'] })),\r\n show_toast: core_1.Opt(core_1.BooleanNode()),\r\n announce_to_chat: core_1.Opt(core_1.BooleanNode()),\r\n hidden: core_1.Opt(core_1.BooleanNode())\r\n }), {\r\n default: () => ({\r\n icon: {\r\n item: 'minecraft:stone'\r\n },\r\n title: '',\r\n description: ''\r\n })\r\n })),\r\n parent: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$advancement' } })),\r\n criteria: core_1.MapNode(StringNode(), Reference('advancement_criteria')),\r\n requirements: core_1.Opt(core_1.ListNode(core_1.ListNode(StringNode() // TODO: add validation\r\n ))),\r\n rewards: core_1.Opt(core_1.ObjectNode({\r\n function: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$function' } })),\r\n loot: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$loot_table' } }))),\r\n recipes: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }))),\r\n experience: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n })),\r\n }, { context: 'advancement' }), {\r\n default: () => ({\r\n criteria: {\r\n requirement: {\r\n trigger: 'minecraft:location'\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('advancement_criteria', core_1.ObjectNode({\r\n trigger: StringNode({ validator: 'resource', params: { pool: collections.get('advancement_trigger') } }),\r\n conditions: core_1.Opt(core_1.ObjectNode({\r\n player: core_1.Mod(EntityPredicate, {\r\n enabled: path => path.pop().push('trigger').get() !== 'minecraft:impossible'\r\n }),\r\n [core_1.Switch]: ['pop', { push: 'trigger' }],\r\n [core_1.Case]: {\r\n 'minecraft:bee_nest_destroyed': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n num_bees_inside: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:bred_animals': {\r\n parent: EntityPredicate,\r\n partner: EntityPredicate,\r\n child: EntityPredicate\r\n },\r\n 'minecraft:brewed_potion': {\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } }))\r\n },\r\n 'minecraft:changed_dimension': {\r\n from: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n to: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } }))\r\n },\r\n 'minecraft:channeled_lightning': {\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:construct_beacon': {\r\n level: Reference('int_bounds')\r\n },\r\n 'minecraft:consume_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:cured_zombie_villager': {\r\n villager: EntityPredicate,\r\n zombie: EntityPredicate\r\n },\r\n 'minecraft:effects_changed': {\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), core_1.ObjectNode({\r\n amplifier: Reference('int_bounds'),\r\n duration: Reference('int_bounds')\r\n }))),\r\n source: core_1.Opt(EntityPredicate)\r\n },\r\n 'minecraft:enter_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n },\r\n 'minecraft:enchanted_item': {\r\n levels: Reference('int_bounds'),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:entity_hurt_player': {\r\n damage: core_1.Opt(Reference('damage_predicate'))\r\n },\r\n 'minecraft:entity_killed_player': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:fall_from_height': {\r\n start_position: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate'))\r\n },\r\n 'minecraft:filled_bucket': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:fishing_rod_hooked': {\r\n entity: EntityPredicate,\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:hero_of_the_village': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:inventory_changed': {\r\n slots: core_1.Opt(core_1.ObjectNode({\r\n empty: Reference('int_bounds'),\r\n occupied: Reference('int_bounds'),\r\n full: Reference('int_bounds')\r\n })),\r\n items: core_1.Opt(core_1.ListNode(Reference('item_predicate')))\r\n },\r\n 'minecraft:item_durability_changed': {\r\n delta: Reference('int_bounds'),\r\n durability: Reference('int_bounds'),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:item_used_on_block': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:killed_by_crossbow': {\r\n unique_entity_types: Reference('int_bounds'),\r\n victims: core_1.Opt(core_1.ListNode(EntityPredicate))\r\n },\r\n 'minecraft:levitation': {\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n duration: Reference('int_bounds')\r\n },\r\n 'minecraft:lightning_strike': {\r\n lightning: EntityPredicate,\r\n bystander: EntityPredicate,\r\n },\r\n 'minecraft:location': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:nether_travel': {\r\n start_position: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n },\r\n 'minecraft:placed_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })),\r\n item: core_1.Opt(Reference('item_predicate')),\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:player_generates_container_loot': {\r\n loot_table: StringNode({ validator: 'resource', params: { pool: '$loot_table' } })\r\n },\r\n 'minecraft:player_hurt_entity': {\r\n damage: core_1.Opt(Reference('damage_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_interacted_with_entity': {\r\n item: core_1.Opt(Reference('item_predicate')),\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:player_killed_entity': {\r\n entity: EntityPredicate,\r\n killing_blow: core_1.Opt(Reference('damage_source_predicate'))\r\n },\r\n 'minecraft:recipe_unlocked': {\r\n recipe: StringNode({ validator: 'resource', params: { pool: '$recipe' } })\r\n },\r\n 'minecraft:ride_entity_in_lava': {\r\n start_position: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate'))\r\n },\r\n 'minecraft:slept_in_bed': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n },\r\n 'minecraft:slide_down_block': {\r\n block: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:shot_crossbow': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:summoned_entity': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:tame_animal': {\r\n entity: EntityPredicate\r\n },\r\n 'minecraft:target_hit': {\r\n projectile: EntityPredicate,\r\n shooter: EntityPredicate,\r\n signal_strength: Reference('int_bounds')\r\n },\r\n 'minecraft:thrown_item_picked_up_by_entity': {\r\n entity: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:used_ender_eye': {\r\n distance: core_1.Opt(Reference('float_bounds'))\r\n },\r\n 'minecraft:used_totem': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:using_item': {\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:villager_trade': {\r\n villager: core_1.Opt(Reference('entity_predicate')),\r\n item: core_1.Opt(Reference('item_predicate'))\r\n },\r\n 'minecraft:voluntary_exile': {\r\n location: core_1.Opt(Reference('location_predicate'))\r\n }\r\n }\r\n }, { context: 'criterion' }))\r\n }, { category: 'predicate', context: 'criterion' }));\r\n}\r\nexports.initAdvancementSchemas = initAdvancementSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCommonSchemas = exports.InclusiveRange = exports.IntProvider = exports.FloatProvider = exports.NoiseSettingsPresets = exports.DefaultNoiseSettings = exports.DimensionTypePresets = exports.DefaultDimensionType = exports.FunctionCases = exports.ConditionCases = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nexports.DefaultDimensionType = {\r\n ultrawarm: false,\r\n natural: true,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: true,\r\n has_raids: true,\r\n has_skylight: true,\r\n has_ceiling: false,\r\n coordinate_scale: 1,\r\n ambient_light: 0,\r\n logical_height: 256,\r\n infiniburn: 'minecraft:infiniburn_overworld',\r\n min_y: 0,\r\n height: 256,\r\n};\r\nconst DefaultStructureSettings = {\r\n 'minecraft:igloo': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 14357618\r\n },\r\n 'minecraft:mansion': {\r\n spacing: 80,\r\n separation: 20,\r\n salt: 10387319\r\n },\r\n 'minecraft:jungle_pyramid': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 14357619\r\n },\r\n 'minecraft:nether_fossil': {\r\n spacing: 2,\r\n separation: 1,\r\n salt: 14357921\r\n },\r\n 'minecraft:stronghold': {\r\n spacing: 1,\r\n separation: 0,\r\n salt: 0\r\n },\r\n 'minecraft:shipwreck': {\r\n spacing: 24,\r\n separation: 4,\r\n salt: 165745295\r\n },\r\n 'minecraft:mineshaft': {\r\n spacing: 1,\r\n separation: 0,\r\n salt: 0\r\n },\r\n 'minecraft:desert_pyramid': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 14357617\r\n },\r\n 'minecraft:ruined_portal': {\r\n spacing: 40,\r\n separation: 15,\r\n salt: 34222645\r\n },\r\n 'minecraft:fortress': {\r\n spacing: 27,\r\n separation: 4,\r\n salt: 30084232\r\n },\r\n 'minecraft:pillager_outpost': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 165745296\r\n },\r\n 'minecraft:village': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 10387312\r\n },\r\n 'minecraft:endcity': {\r\n spacing: 20,\r\n separation: 11,\r\n salt: 10387313\r\n },\r\n 'minecraft:buried_treasure': {\r\n spacing: 1,\r\n separation: 0,\r\n salt: 0\r\n },\r\n 'minecraft:ocean_ruin': {\r\n spacing: 20,\r\n separation: 8,\r\n salt: 14357621\r\n },\r\n 'minecraft:bastion_remnant': {\r\n spacing: 27,\r\n separation: 4,\r\n salt: 30084232\r\n },\r\n 'minecraft:swamp_hut': {\r\n spacing: 32,\r\n separation: 8,\r\n salt: 14357620\r\n },\r\n 'minecraft:monument': {\r\n spacing: 32,\r\n separation: 5,\r\n salt: 10387313\r\n }\r\n};\r\nexports.DefaultNoiseSettings = {\r\n bedrock_roof_position: -2147483648,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n noise_caves_enabled: true,\r\n deepslate_enabled: true,\r\n ore_veins_enabled: true,\r\n noodle_caves_enabled: true,\r\n disable_mob_generation: false,\r\n aquifers_enabled: true,\r\n default_block: {\r\n Name: 'minecraft:stone'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:water'\r\n },\r\n noise: {\r\n min_y: -64,\r\n height: 384,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n density_factor: 1,\r\n density_offset: -0.51875,\r\n top_slide: {\r\n target: -0.078125,\r\n size: 2,\r\n offset: 8\r\n },\r\n bottom_slide: {\r\n target: 0.1171875,\r\n size: 3,\r\n offset: 0\r\n },\r\n sampling: {\r\n xz_scale: 0.9999999814507745,\r\n y_scale: 0.9999999814507745,\r\n xz_factor: 80,\r\n y_factor: 160\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n stronghold: {\r\n distance: 32,\r\n spread: 3,\r\n count: 128\r\n },\r\n structures: DefaultStructureSettings,\r\n }\r\n};\r\nfunction initCommonSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('block_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'Name' }] } } }))\r\n }, { context: 'block_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('fluid_state', core_1.Mod(core_1.ObjectNode({\r\n Name: StringNode({ validator: 'resource', params: { pool: 'fluid' } }),\r\n Properties: core_1.Opt(core_1.MapNode(StringNode(), StringNode()))\r\n }, { context: 'fluid_state' }), {\r\n default: () => ({\r\n Name: 'minecraft:water',\r\n Properties: {\r\n 'level': '0'\r\n }\r\n })\r\n }));\r\n schemas.register('block_pos', core_1.Mod(core_1.ListNode(core_1.NumberNode({ integer: true }), { minLength: 3, maxLength: 3 }), {\r\n default: () => [0, 0, 0]\r\n }));\r\n const Bounds = (integer) => core_1.Opt(core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer }),\r\n change: (v) => { var _a, _b; return v === undefined ? 0 : (_b = (_a = v.min) !== null && _a !== void 0 ? _a : v.max) !== null && _b !== void 0 ? _b : 0; }\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer })),\r\n max: core_1.Opt(core_1.NumberNode({ integer }))\r\n }, { context: 'range' }),\r\n change: (v) => ({\r\n min: v !== null && v !== void 0 ? v : 0,\r\n max: v !== null && v !== void 0 ? v : 0\r\n })\r\n }\r\n ]));\r\n schemas.register('int_bounds', Bounds(true));\r\n schemas.register('float_bounds', Bounds());\r\n schemas.register('int_range', core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(Reference('number_provider')),\r\n max: core_1.Opt(Reference('number_provider'))\r\n })\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ integer: true })\r\n }\r\n ], { context: 'range' }));\r\n const ObjectWithType = (pool, directType, directPath, directDefault, objectDefault, context, cases) => {\r\n let defaultCase = {};\r\n if (objectDefault) {\r\n Object.keys(cases[objectDefault]).forEach(k => {\r\n defaultCase[k] = core_1.Mod(cases[objectDefault][k], {\r\n enabled: path => path.push('type').get() === undefined\r\n });\r\n });\r\n }\r\n const provider = core_1.ObjectNode({\r\n type: core_1.Mod(core_1.Opt(StringNode({ validator: 'resource', params: { pool } })), {\r\n hidden: () => true\r\n }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: cases,\r\n ...defaultCase\r\n }, { context, disableSwitchContext: true });\r\n const choices = [{\r\n type: directType,\r\n node: cases[directDefault][directPath]\r\n }];\r\n if (objectDefault) {\r\n choices.push({\r\n type: 'object',\r\n priority: -1,\r\n node: provider\r\n });\r\n }\r\n Object.keys(cases).forEach(k => {\r\n choices.push({\r\n type: k,\r\n match: (v) => {\r\n var _a;\r\n const type = 'minecraft:' + ((_a = v === null || v === void 0 ? void 0 : v.type) === null || _a === void 0 ? void 0 : _a.replace(/^minecraft:/, ''));\r\n if (type === k)\r\n return true;\r\n const keys = v ? Object.keys(v) : [];\r\n return typeof v === 'object' && ((keys === null || keys === void 0 ? void 0 : keys.length) === 0 || ((keys === null || keys === void 0 ? void 0 : keys.length) === 1 && (keys === null || keys === void 0 ? void 0 : keys[0]) === 'type'));\r\n },\r\n node: provider,\r\n change: (v) => ({ type: k })\r\n });\r\n });\r\n return core_1.ChoiceNode(choices, { context, choiceContext: `${context}.type` });\r\n };\r\n schemas.register('number_provider', ObjectWithType('loot_number_provider_type', 'number', 'value', 'minecraft:constant', 'minecraft:uniform', 'number_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode()\r\n },\r\n 'minecraft:uniform': {\r\n min: Reference('number_provider'),\r\n max: Reference('number_provider')\r\n },\r\n 'minecraft:binomial': {\r\n n: Reference('number_provider'),\r\n p: Reference('number_provider')\r\n },\r\n 'minecraft:score': {\r\n target: Reference('scoreboard_name_provider'),\r\n score: StringNode({ validator: 'objective' }),\r\n scale: core_1.Opt(core_1.NumberNode())\r\n }\r\n }));\r\n schemas.register('scoreboard_name_provider', ObjectWithType('loot_score_provider_type', 'string', 'target', 'minecraft:context', null, 'score_provider', {\r\n 'minecraft:fixed': {\r\n name: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities', isScoreHolder: true } }) // FIXME: doesn't support selectors\r\n },\r\n 'minecraft:context': {\r\n target: core_1.Mod(StringNode({ enum: 'entity_source' }), { default: () => 'this' })\r\n }\r\n }));\r\n schemas.register('nbt_provider', ObjectWithType('loot_nbt_provider_type', 'string', 'target', 'minecraft:context', null, 'nbt_provider', {\r\n 'minecraft:storage': {\r\n source: StringNode({ validator: 'resource', params: { pool: '$storage' } })\r\n },\r\n 'minecraft:context': {\r\n target: core_1.Mod(StringNode({ enum: 'copy_source' }), { default: () => 'this' })\r\n }\r\n }));\r\n exports.FloatProvider = (config) => ObjectWithType('float_provider_type', 'number', 'value', 'minecraft:constant', null, 'float_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode(config)\r\n },\r\n 'minecraft:uniform': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode(config),\r\n max_exclusive: core_1.NumberNode(config)\r\n })\r\n },\r\n 'minecraft:clamped_normal': {\r\n value: core_1.ObjectNode({\r\n min: core_1.NumberNode(),\r\n max: core_1.NumberNode(),\r\n mean: core_1.NumberNode(),\r\n deviation: core_1.NumberNode()\r\n })\r\n },\r\n 'minecraft:trapezoid': {\r\n value: core_1.ObjectNode({\r\n min: core_1.NumberNode(),\r\n max: core_1.NumberNode(),\r\n plateau: core_1.NumberNode()\r\n })\r\n }\r\n });\r\n schemas.register('float_provider', exports.FloatProvider());\r\n exports.IntProvider = (config) => ObjectWithType('int_provider_type', 'number', 'value', 'minecraft:constant', null, 'int_provider', {\r\n 'minecraft:constant': {\r\n value: core_1.NumberNode({ integer: true, ...config })\r\n },\r\n 'minecraft:uniform': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config })\r\n })\r\n },\r\n 'minecraft:biased_to_bottom': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config })\r\n })\r\n },\r\n 'minecraft:clamped': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n source: Reference('int_provider')\r\n })\r\n },\r\n 'minecraft:clamped_normal': {\r\n value: core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n max_inclusive: core_1.NumberNode({ integer: true, ...config }),\r\n mean: core_1.NumberNode(),\r\n deviation: core_1.NumberNode()\r\n })\r\n },\r\n 'minecraft:weighted_list': {\r\n distribution: core_1.ListNode(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true }),\r\n data: Reference('int_provider'),\r\n }))\r\n }\r\n });\r\n schemas.register('int_provider', exports.IntProvider());\r\n schemas.register('vertical_anchor', core_1.ChoiceNode(['absolute', 'above_bottom', 'below_top'].map(t => ({\r\n type: t,\r\n match: v => (v === null || v === void 0 ? void 0 : v[t]) !== undefined,\r\n change: v => { var _a, _b, _c; return ({ [t]: (_c = (_b = (_a = v.absolute) !== null && _a !== void 0 ? _a : v.above_bottom) !== null && _b !== void 0 ? _b : v.below_top) !== null && _c !== void 0 ? _c : 0 }); },\r\n node: core_1.ObjectNode({\r\n [t]: core_1.NumberNode({ integer: true, min: -2048, max: 2047 })\r\n })\r\n })), { context: 'vertical_anchor' }));\r\n schemas.register('height_provider', ObjectWithType('height_provider_type', 'number', 'value', 'minecraft:constant', null, 'height_provider', {\r\n 'minecraft:constant': {\r\n value: Reference('vertical_anchor')\r\n },\r\n 'minecraft:uniform': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor')\r\n },\r\n 'minecraft:biased_to_bottom': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n inner: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n },\r\n 'minecraft:very_biased_to_bottom': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n inner: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n },\r\n 'minecraft:trapezoid': {\r\n min_inclusive: Reference('vertical_anchor'),\r\n max_inclusive: Reference('vertical_anchor'),\r\n plateau: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }\r\n }));\r\n exports.InclusiveRange = (config) => core_1.ObjectNode({\r\n min_inclusive: core_1.NumberNode(config),\r\n max_inclusive: core_1.NumberNode(config)\r\n }, { context: 'range' });\r\n schemas.register('noise_parameters', core_1.Mod(core_1.ObjectNode({\r\n firstOctave: core_1.NumberNode({ integer: true }),\r\n amplitudes: core_1.ListNode(core_1.NumberNode())\r\n }, { context: 'noise_parameters' }), {\r\n default: () => ({\r\n firstOctave: -7,\r\n amplitudes: [1, 1]\r\n })\r\n }));\r\n exports.ConditionCases = (entitySourceNode = StringNode({ enum: 'entity_source' })) => ({\r\n 'minecraft:alternative': {\r\n terms: core_1.ListNode(Reference('condition'))\r\n },\r\n 'minecraft:block_state_property': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.MapNode(StringNode(), StringNode(), { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } })\r\n },\r\n 'minecraft:damage_source_properties': {\r\n predicate: Reference('damage_source_predicate')\r\n },\r\n 'minecraft:entity_properties': {\r\n entity: entitySourceNode,\r\n predicate: Reference('entity_predicate')\r\n },\r\n 'minecraft:entity_scores': {\r\n entity: entitySourceNode,\r\n scores: core_1.MapNode(StringNode({ validator: 'objective' }), Reference('int_range'))\r\n },\r\n 'minecraft:inverted': {\r\n term: Reference('condition')\r\n },\r\n 'minecraft:killed_by_player': {\r\n inverse: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:location_check': {\r\n offsetX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetY: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n offsetZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n predicate: Reference('location_predicate')\r\n },\r\n 'minecraft:match_tool': {\r\n predicate: Reference('item_predicate')\r\n },\r\n 'minecraft:random_chance': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_chance_with_looting': {\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n looting_multiplier: core_1.NumberNode()\r\n },\r\n 'minecraft:reference': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$predicate' } })\r\n },\r\n 'minecraft:table_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n chances: core_1.ListNode(core_1.NumberNode({ min: 0, max: 1 }))\r\n },\r\n 'minecraft:time_check': {\r\n value: Reference('int_range'),\r\n period: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:value_check': {\r\n value: Reference('number_provider'),\r\n range: Reference('int_range')\r\n },\r\n 'minecraft:weather_check': {\r\n raining: core_1.Opt(core_1.BooleanNode()),\r\n thundering: core_1.Opt(core_1.BooleanNode())\r\n }\r\n });\r\n exports.FunctionCases = (conditions, copySourceNode = StringNode({ enum: 'copy_source' }), entitySourceNode = StringNode({ enum: 'entity_source' })) => {\r\n const cases = {\r\n 'minecraft:apply_bonus': {\r\n enchantment: StringNode({ validator: 'resource', params: { pool: 'enchantment' } }),\r\n formula: StringNode({ validator: 'resource', params: { pool: collections.get('loot_table_apply_bonus_formula') } }),\r\n parameters: core_1.Mod(core_1.ObjectNode({\r\n bonusMultiplier: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:uniform_bonus_count'\r\n }),\r\n extra: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n }),\r\n probability: core_1.Mod(core_1.NumberNode(), {\r\n enabled: path => path.pop().push('formula').get() === 'minecraft:binomial_with_bonus_count'\r\n })\r\n }), {\r\n enabled: path => path.push('formula').get() !== 'minecraft:ore_drops'\r\n })\r\n },\r\n 'minecraft:copy_name': {\r\n source: copySourceNode\r\n },\r\n 'minecraft:copy_nbt': {\r\n source: Reference('nbt_provider'),\r\n ops: core_1.ListNode(core_1.ObjectNode({\r\n source: StringNode({ validator: 'nbt_path', params: { category: { getter: 'copy_source', path: ['pop', 'pop', 'pop', { push: 'source' }] } } }),\r\n target: StringNode({ validator: 'nbt_path', params: { category: 'minecraft:item' } }),\r\n op: StringNode({ enum: ['replace', 'append', 'merge'] })\r\n }, { context: 'nbt_operation' }))\r\n },\r\n 'minecraft:copy_state': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n properties: core_1.ListNode(StringNode({ validator: 'block_state_key', params: { id: ['pop', 'pop', { push: 'block' }] } }))\r\n },\r\n 'minecraft:enchant_randomly': {\r\n enchantments: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })))\r\n },\r\n 'minecraft:enchant_with_levels': {\r\n levels: Reference('number_provider'),\r\n treasure: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:exploration_map': {\r\n destination: core_1.Opt(StringNode({ enum: 'map_feature' })),\r\n decoration: core_1.Opt(StringNode({ enum: 'map_decoration' })),\r\n zoom: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n search_radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n skip_existing_chunks: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:fill_player_head': {\r\n entity: entitySourceNode\r\n },\r\n 'minecraft:limit_count': {\r\n limit: Reference('int_range')\r\n },\r\n 'minecraft:looting_enchant': {\r\n count: Reference('number_provider'),\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_attributes': {\r\n modifiers: core_1.ListNode(Reference('attribute_modifier'))\r\n },\r\n 'minecraft:set_banner_pattern': {\r\n patterns: core_1.ListNode(core_1.ObjectNode({\r\n pattern: StringNode({ enum: 'banner_pattern' }),\r\n color: StringNode({ enum: 'dye_color' })\r\n })),\r\n append: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_contents': {\r\n entries: core_1.ListNode(Reference('loot_entry'))\r\n },\r\n 'minecraft:set_count': {\r\n count: Reference('number_provider'),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_damage': {\r\n damage: Reference('number_provider'),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_enchantments': {\r\n enchantments: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'enchantment' } }), Reference('number_provider')),\r\n add: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n seed: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:set_lore': {\r\n entity: core_1.Opt(entitySourceNode),\r\n lore: core_1.ListNode(Reference('text_component')),\r\n replace: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:set_name': {\r\n entity: core_1.Opt(entitySourceNode),\r\n name: core_1.Opt(Reference('text_component'))\r\n },\r\n 'minecraft:set_nbt': {\r\n tag: StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item' } } })\r\n },\r\n 'minecraft:set_potion': {\r\n id: StringNode({ validator: 'resource', params: { pool: 'potion' } })\r\n },\r\n 'minecraft:set_stew_effect': {\r\n effects: core_1.Opt(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }),\r\n duration: Reference('number_provider')\r\n })))\r\n }\r\n };\r\n const res = {};\r\n collections.get('loot_function_type').forEach(f => {\r\n res[f] = { ...cases[f], ...conditions };\r\n });\r\n return res;\r\n };\r\n exports.DimensionTypePresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$dimension_type' } }), node, {\r\n 'minecraft:overworld': exports.DefaultDimensionType,\r\n 'minecraft:the_nether': {\r\n name: 'minecraft:the_nether',\r\n ultrawarm: true,\r\n natural: false,\r\n shrunk: true,\r\n piglin_safe: true,\r\n respawn_anchor_works: true,\r\n bed_works: false,\r\n has_raids: false,\r\n has_skylight: false,\r\n has_ceiling: true,\r\n ambient_light: 0.1,\r\n fixed_time: 18000,\r\n logical_height: 128,\r\n effects: 'minecraft:the_nether',\r\n infiniburn: 'minecraft:infiniburn_nether',\r\n min_y: 0,\r\n height: 256,\r\n },\r\n 'minecraft:the_end': {\r\n name: 'minecraft:the_end',\r\n ultrawarm: false,\r\n natural: false,\r\n shrunk: false,\r\n piglin_safe: false,\r\n respawn_anchor_works: false,\r\n bed_works: false,\r\n has_raids: true,\r\n has_skylight: false,\r\n has_ceiling: false,\r\n ambient_light: 0,\r\n fixed_time: 6000,\r\n logical_height: 256,\r\n effects: 'minecraft:the_end',\r\n infiniburn: 'minecraft:infiniburn_end',\r\n min_y: 0,\r\n height: 256,\r\n }\r\n });\r\n exports.NoiseSettingsPresets = (node) => core_1.ObjectOrPreset(StringNode({ validator: 'resource', params: { pool: '$worldgen/noise_settings' } }), node, {\r\n 'minecraft:overworld': exports.DefaultNoiseSettings,\r\n 'minecraft:nether': {\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n noise_caves_enabled: false,\r\n deepslate_enabled: false,\r\n ore_veins_enabled: false,\r\n noodle_caves_enabled: false,\r\n disable_mob_generation: false,\r\n aquifers_enabled: false,\r\n default_block: {\r\n Name: 'minecraft:netherrack'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:lava'\r\n },\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n density_factor: 0,\r\n density_offset: -0.030078125,\r\n top_slide: {\r\n target: 0.9375,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 2.5,\r\n size: 4,\r\n offset: -1\r\n },\r\n sampling: {\r\n xz_scale: 1.0,\r\n y_scale: 3.0,\r\n xz_factor: 80.0,\r\n y_factor: 60.0\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n structures: DefaultStructureSettings,\r\n }\r\n },\r\n 'minecraft:end': {\r\n bedrock_roof_position: -2147483648,\r\n bedrock_floor_position: -2147483648,\r\n sea_level: 0,\r\n noise_caves_enabled: false,\r\n deepslate_enabled: false,\r\n ore_veins_enabled: false,\r\n noodle_caves_enabled: false,\r\n disable_mob_generation: false,\r\n aquifers_enabled: false,\r\n default_block: {\r\n Name: 'minecraft:end_stone'\r\n },\r\n default_fluid: {\r\n Name: 'minecraft:air'\r\n },\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n density_factor: 0,\r\n density_offset: 0,\r\n island_noise_override: true,\r\n top_slide: {\r\n target: -23.4375,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -0.234375,\r\n size: 7,\r\n offset: 1\r\n },\r\n sampling: {\r\n xz_scale: 2.0,\r\n y_scale: 1.0,\r\n xz_factor: 80.0,\r\n y_factor: 160.0\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n structures: DefaultStructureSettings\r\n }\r\n },\r\n 'minecraft:amplified': {\r\n bedrock_roof_position: -2147483648,\r\n bedrock_floor_position: 0,\r\n sea_level: 63,\r\n noise_caves_enabled: true,\r\n deepslate_enabled: true,\r\n ore_veins_enabled: true,\r\n noodle_caves_enabled: true,\r\n disable_mob_generation: false,\r\n aquifers_enabled: true,\r\n default_block: {\r\n Name: 'minecraft:stone'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:water'\r\n },\r\n noise: {\r\n min_y: -64,\r\n height: 384,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n density_factor: 1,\r\n density_offset: -0.51875,\r\n amplified: true,\r\n top_slide: {\r\n target: -0.078125,\r\n size: 2,\r\n offset: 8\r\n },\r\n bottom_slide: {\r\n target: 0.1171875,\r\n size: 3,\r\n offset: 0\r\n },\r\n sampling: {\r\n xz_scale: 0.9999999814507745,\r\n y_scale: 0.9999999814507745,\r\n xz_factor: 80,\r\n y_factor: 160\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n stronghold: {\r\n distance: 32,\r\n spread: 3,\r\n count: 128\r\n },\r\n structures: DefaultStructureSettings,\r\n },\r\n },\r\n 'minecraft:caves': {\r\n bedrock_roof_position: 0,\r\n bedrock_floor_position: 0,\r\n sea_level: 32,\r\n noise_caves_enabled: false,\r\n deepslate_enabled: false,\r\n ore_veins_enabled: false,\r\n noodle_caves_enabled: false,\r\n disable_mob_generation: false,\r\n aquifers_enabled: false,\r\n default_block: {\r\n Name: 'minecraft:stone'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:water'\r\n },\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n size_horizontal: 1,\r\n size_vertical: 2,\r\n density_factor: 0,\r\n density_offset: -0.030078125,\r\n top_slide: {\r\n target: 0.9375,\r\n size: 3,\r\n offset: 0\r\n },\r\n bottom_slide: {\r\n target: 2.5,\r\n size: 4,\r\n offset: -1\r\n },\r\n sampling: {\r\n xz_scale: 1.0,\r\n y_scale: 3.0,\r\n xz_factor: 80.0,\r\n y_factor: 60.0\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n stronghold: {\r\n distance: 32,\r\n spread: 3,\r\n count: 128\r\n },\r\n structures: DefaultStructureSettings,\r\n }\r\n },\r\n 'minecraft:floating_islands': {\r\n bedrock_roof_position: -2147483648,\r\n bedrock_floor_position: -2147483648,\r\n sea_level: 0,\r\n noise_caves_enabled: false,\r\n deepslate_enabled: false,\r\n ore_veins_enabled: false,\r\n noodle_caves_enabled: false,\r\n disable_mob_generation: false,\r\n aquifers_enabled: false,\r\n default_block: {\r\n Name: 'minecraft:stone'\r\n },\r\n default_fluid: {\r\n Properties: {\r\n level: '0'\r\n },\r\n Name: 'minecraft:water'\r\n },\r\n noise: {\r\n min_y: 0,\r\n height: 128,\r\n size_horizontal: 2,\r\n size_vertical: 1,\r\n density_factor: 0,\r\n density_offset: 0,\r\n island_noise_override: true,\r\n top_slide: {\r\n target: -23.4375,\r\n size: 64,\r\n offset: -46\r\n },\r\n bottom_slide: {\r\n target: -0.234375,\r\n size: 7,\r\n offset: 1\r\n },\r\n sampling: {\r\n xz_scale: 2.0,\r\n y_scale: 1.0,\r\n xz_factor: 80.0,\r\n y_factor: 160.0\r\n }\r\n },\r\n surface_rule: {\r\n type: 'minecraft:sequence',\r\n sequence: []\r\n },\r\n structures: {\r\n stronghold: {\r\n distance: 32,\r\n spread: 3,\r\n count: 128\r\n },\r\n structures: DefaultStructureSettings,\r\n }\r\n }\r\n });\r\n}\r\nexports.initCommonSchemas = initCommonSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initConditionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initConditionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('predicate', core_1.ObjectOrList(Reference('condition'), { choiceContext: 'condition' }));\r\n schemas.register('condition', core_1.Mod(core_1.ObjectNode({\r\n condition: StringNode({ validator: 'resource', params: { pool: 'loot_condition_type' } }),\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases()\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:entity_properties',\r\n entity: 'this'\r\n })\r\n }));\r\n}\r\nexports.initConditionSchemas = initConditionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('dimension', core_1.Mod(core_1.ObjectNode({\r\n type: Common_1.DimensionTypePresets(Reference('dimension_type')),\r\n generator: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/chunk_generator' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:noise': {\r\n seed: core_1.NumberNode({ integer: true }),\r\n settings: Common_1.NoiseSettingsPresets(Reference('noise_settings')),\r\n biome_source: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/biome_source' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:fixed': {\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })\r\n },\r\n 'minecraft:multi_noise': {\r\n preset: core_1.Opt(StringNode({ validator: 'resource', params: { pool: ['minecraft:overworld', 'minecraft:nether'] } })),\r\n biomes: core_1.Mod(core_1.ListNode(Reference('generator_biome')), {\r\n enabled: path => path.push('preset').get() === undefined,\r\n default: () => [{\r\n biome: 'minecraft:plains'\r\n }]\r\n })\r\n },\r\n 'minecraft:checkerboard': {\r\n scale: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 62 })),\r\n biomes: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }))\r\n },\r\n 'minecraft:the_end': {\r\n seed: core_1.NumberNode({ integer: true })\r\n }\r\n }\r\n }, { category: 'predicate', disableSwitchContext: true })\r\n },\r\n 'minecraft:flat': {\r\n settings: core_1.ObjectNode({\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n lakes: core_1.Opt(core_1.BooleanNode()),\r\n features: core_1.Opt(core_1.BooleanNode()),\r\n layers: core_1.ListNode(Reference('generator_layer')),\r\n structures: Reference('generator_structures')\r\n })\r\n }\r\n }\r\n }, { disableSwitchContext: true })\r\n }, { category: 'pool', context: 'dimension' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:fixed',\r\n seed,\r\n biome: 'minecraft:plains'\r\n },\r\n settings: 'minecraft:overworld'\r\n }\r\n };\r\n }\r\n }));\r\n const ClimateParameter = core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode({ min: -2, max: 2 }),\r\n change: (v) => { var _a; return (_a = v[0]) !== null && _a !== void 0 ? _a : 0; }\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(core_1.NumberNode({ min: -2, max: 2 }), { minLength: 2, maxLength: 2 }),\r\n change: (v) => [v !== null && v !== void 0 ? v : 0, v !== null && v !== void 0 ? v : 0]\r\n }\r\n ]);\r\n schemas.register('generator_biome', core_1.Mod(core_1.ObjectNode({\r\n biome: StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }),\r\n parameters: core_1.ObjectNode({\r\n temperature: ClimateParameter,\r\n humidity: ClimateParameter,\r\n continentalness: ClimateParameter,\r\n erosion: ClimateParameter,\r\n weirdness: ClimateParameter,\r\n depth: ClimateParameter,\r\n offset: core_1.NumberNode({ min: 0, max: 1 })\r\n })\r\n }, { context: 'generator_biome' }), {\r\n default: () => ({\r\n biome: 'minecraft:plains',\r\n parameters: {\r\n altitude: 0,\r\n temperature: 0,\r\n humidity: 0,\r\n weirdness: 0,\r\n offset: 0\r\n }\r\n })\r\n }));\r\n}\r\nexports.initDimensionSchemas = initDimensionSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDimensionTypeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initDimensionTypeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('dimension_type', core_1.Mod(core_1.ObjectNode({\r\n ultrawarm: core_1.BooleanNode(),\r\n natural: core_1.BooleanNode(),\r\n piglin_safe: core_1.BooleanNode(),\r\n respawn_anchor_works: core_1.BooleanNode(),\r\n bed_works: core_1.BooleanNode(),\r\n has_raids: core_1.BooleanNode(),\r\n has_skylight: core_1.BooleanNode(),\r\n has_ceiling: core_1.BooleanNode(),\r\n coordinate_scale: core_1.NumberNode({ min: 0.00001, max: 30000000 }),\r\n ambient_light: core_1.NumberNode(),\r\n fixed_time: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n logical_height: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n effects: core_1.Opt(StringNode({ enum: ['minecraft:overworld', 'minecraft:the_nether', 'minecraft:the_end'] })),\r\n infiniburn: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n min_y: core_1.NumberNode({ integer: true, min: -2048, max: 2047 }),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 4096 })\r\n }, { context: 'dimension_type' }), node => ({\r\n default: () => Common_1.DefaultDimensionType,\r\n validate: (path, value, errors, options) => {\r\n value = node.validate(path, value, errors, options);\r\n if ((value === null || value === void 0 ? void 0 : value.min_y) + (value === null || value === void 0 ? void 0 : value.height) > 2047) {\r\n errors.add(path.push('height'), 'error.min_y_plus_height', 2047);\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.logical_height) > (value === null || value === void 0 ? void 0 : value.height)) {\r\n errors.add(path.push('logical_height'), 'error.logical_height');\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.height) % 16 !== 0) {\r\n errors.add(path.push('height'), 'error.height_multiple', 16);\r\n }\r\n if ((value === null || value === void 0 ? void 0 : value.min_y) % 16 !== 0) {\r\n errors.add(path.push('min_y'), 'error.min_y_multiple', 16);\r\n }\r\n return value;\r\n }\r\n })));\r\n}\r\nexports.initDimensionTypeSchemas = initDimensionTypeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initItemModifierSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initItemModifierSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('item_modifier', core_1.ObjectOrList(Reference('function'), { choiceContext: 'function' }));\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('condition')))\r\n };\r\n schemas.register('function', core_1.Mod(core_1.ObjectNode({\r\n function: StringNode({ validator: 'resource', params: { pool: 'loot_function_type' } }),\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: Common_1.FunctionCases(conditions)\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => [{\r\n function: 'minecraft:set_count',\r\n count: 1\r\n }]\r\n }));\r\n}\r\nexports.initItemModifierSchemas = initItemModifierSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LootFunctions = exports.LootConditions = exports.LootCopySources = exports.LootEntitySources = exports.LootTableTypes = void 0;\r\nexports.LootTableTypes = new Map([\r\n ['minecraft:advancement_entity', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:advancement_reward', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:barter', { requires: [8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:block', { requires: [1 /* BlockState */, 7 /* Origin */, 9 /* Tool */], allows: [0 /* BlockEntity */, 4 /* ExplosionRadius */, 8 /* ThisEntity */] }],\r\n ['minecraft:chest', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:command', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:empty', { requires: [], allows: [] }],\r\n ['minecraft:entity', { requires: [2 /* DamageSource */, 7 /* Origin */, 8 /* ThisEntity */], allows: [3 /* DirectKillerEntity */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */] }],\r\n ['minecraft:fishing', { requires: [7 /* Origin */, 9 /* Tool */], allows: [8 /* ThisEntity */] }],\r\n ['minecraft:generic', { requires: [2 /* DamageSource */, 0 /* BlockEntity */, 1 /* BlockState */, 3 /* DirectKillerEntity */, 4 /* ExplosionRadius */, 5 /* KillerEntity */, 6 /* LastDamagePlayer */, 7 /* Origin */, 8 /* ThisEntity */, 9 /* Tool */], allows: [] }],\r\n ['minecraft:gift', { requires: [7 /* Origin */, 8 /* ThisEntity */], allows: [] }],\r\n ['minecraft:selector', { requires: [7 /* Origin */], allows: [8 /* ThisEntity */] }]\r\n]);\r\n/**\r\n * A map from loot entity sources to an array of their required context.\r\n */\r\nexports.LootEntitySources = new Map([\r\n ['direct_killer', [3 /* DirectKillerEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot copy sources to an array of their required context.\r\n */\r\nexports.LootCopySources = new Map([\r\n ['block_entity', [0 /* BlockEntity */]],\r\n ['killer', [5 /* KillerEntity */]],\r\n ['killer_player', [5 /* KillerEntity */]],\r\n ['this', [8 /* ThisEntity */]]\r\n]);\r\n/**\r\n * A map from loot condition IDs to an array of their required context.\r\n */\r\nexports.LootConditions = new Map([\r\n ['minecraft:alternative', []],\r\n ['minecraft:block_state_property', [1 /* BlockState */]],\r\n ['minecraft:damage_source_properties', [2 /* DamageSource */]],\r\n ['minecraft:entity_properties', [7 /* Origin */]],\r\n ['minecraft:entity_scores', []],\r\n ['minecraft:inverted', []],\r\n ['minecraft:killed_by_player', [6 /* LastDamagePlayer */]],\r\n ['minecraft:location_check', []],\r\n ['minecraft:match_tool', [9 /* Tool */]],\r\n ['minecraft:random_chance', []],\r\n ['minecraft:random_chance_with_looting', [5 /* KillerEntity */]],\r\n ['minecraft:reference', []],\r\n ['minecraft:survives_explosion', [4 /* ExplosionRadius */]],\r\n ['minecraft:table_bonus', [9 /* Tool */]],\r\n ['minecraft:time_check', []],\r\n ['minecraft:weather_check', []]\r\n]);\r\n/**\r\n * A map from loot function IDs to an array of their required context.\r\n */\r\nexports.LootFunctions = new Map([\r\n ['minecraft:apply_bonus', [9 /* Tool */]],\r\n ['minecraft:copy_name', []],\r\n ['minecraft:copy_nbt', []],\r\n ['minecraft:copy_state', [1 /* BlockState */]],\r\n ['minecraft:enchant_randomly', []],\r\n ['minecraft:enchant_with_levels', []],\r\n ['minecraft:exploration_map', [7 /* Origin */]],\r\n ['minecraft:explosion_decay', []],\r\n ['minecraft:fill_player_head', []],\r\n ['minecraft:furnace_smelt', []],\r\n ['minecraft:limit_count', []],\r\n ['minecraft:looting_enchant', [5 /* KillerEntity */]],\r\n ['minecraft:set_attributes', []],\r\n ['minecraft:set_banner_pattern', []],\r\n ['minecraft:set_contents', []],\r\n ['minecraft:set_count', []],\r\n ['minecraft:set_damage', []],\r\n ['minecraft:set_loot_table', []],\r\n ['minecraft:set_lore', []],\r\n ['minecraft:set_name', []],\r\n ['minecraft:set_nbt', []],\r\n ['minecraft:set_stew_effect', []]\r\n]);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initLootTableSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst LootContext_1 = require(\"../LootContext\");\r\nconst Common_1 = require(\"./Common\");\r\nfunction initLootTableSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const conditions = {\r\n conditions: core_1.Opt(core_1.ListNode(Reference('loot_condition')))\r\n };\r\n const functionsAndConditions = {\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function'))),\r\n ...conditions\r\n };\r\n function compileSwitchNode(contextMap, collectionID, getNode) {\r\n const cases = [];\r\n const getAvailableOptions = (providedContext) => collections\r\n .get(collectionID)\r\n .filter(t => {\r\n var _a;\r\n const requiredContext = (_a = contextMap.get(t)) !== null && _a !== void 0 ? _a : [];\r\n return requiredContext.every(c => providedContext.includes(c));\r\n });\r\n for (const [tableType, { allows, requires }] of LootContext_1.LootTableTypes) {\r\n const providedContext = [...allows, ...requires];\r\n cases.push({\r\n match: path => path.getModel().get(new core_1.Path(['type'])) === tableType,\r\n node: getNode(getAvailableOptions(providedContext))\r\n });\r\n }\r\n cases.push({ match: _ => true, node: getNode(collectionID) });\r\n return core_1.SwitchNode(cases);\r\n }\r\n const conditionIDSwtichNode = compileSwitchNode(LootContext_1.LootConditions, 'loot_condition_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_condition_type` } }));\r\n const functionIDSwtichNode = compileSwitchNode(LootContext_1.LootFunctions, 'loot_function_type', type => StringNode({ validator: 'resource', params: { pool: type instanceof Array ? type : `loot_function_type` } }));\r\n const entitySourceSwtichNode = compileSwitchNode(LootContext_1.LootEntitySources, 'entity_source', type => StringNode({ enum: type }));\r\n const copySourceSwtichNode = compileSwitchNode(LootContext_1.LootCopySources, 'copy_source', type => StringNode({ enum: type }));\r\n schemas.register('loot_table', core_1.Mod(core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: \"resource\", params: { pool: collections.get('loot_context_type') } })),\r\n pools: core_1.Opt(core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n rolls: Reference('number_provider'),\r\n bonus_rolls: core_1.Opt(Reference('number_provider')),\r\n entries: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n }, { category: 'pool', context: 'loot_pool' }), {\r\n default: () => ({\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n })\r\n }))),\r\n functions: core_1.Opt(core_1.ListNode(Reference('loot_function')))\r\n }, { context: 'loot_table' }), {\r\n default: () => ({\r\n pools: [{\r\n rolls: 1,\r\n entries: [{\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n }]\r\n }]\r\n })\r\n }));\r\n const weightMod = {\r\n enabled: path => {\r\n var _a;\r\n return ((_a = path.pop().get()) === null || _a === void 0 ? void 0 : _a.length) > 1\r\n && !['minecraft:alternatives', 'minecraft:group', 'minecraft:sequence'].includes(path.push('type').get());\r\n }\r\n };\r\n schemas.register('loot_entry', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'loot_pool_entry_type' } }),\r\n weight: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true, min: 1 }), weightMod)),\r\n quality: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), weightMod)),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alternatives': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:dynamic': {\r\n name: StringNode(),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:group': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:item': {\r\n name: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:loot_table': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$loot_table' } }),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:sequence': {\r\n children: core_1.ListNode(Reference('loot_entry')),\r\n ...functionsAndConditions\r\n },\r\n 'minecraft:tag': {\r\n name: StringNode({ validator: 'resource', params: { pool: '$tag/item' } }),\r\n expand: core_1.Opt(core_1.BooleanNode()),\r\n ...functionsAndConditions\r\n }\r\n }\r\n }, { context: 'loot_entry' }), {\r\n default: () => ({\r\n type: 'minecraft:item',\r\n name: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('loot_function', core_1.Mod(core_1.ObjectNode({\r\n function: functionIDSwtichNode,\r\n [core_1.Switch]: [{ push: 'function' }],\r\n [core_1.Case]: Common_1.FunctionCases(conditions, copySourceSwtichNode, entitySourceSwtichNode)\r\n }, { category: 'function', context: 'function' }), {\r\n default: () => ({\r\n function: 'minecraft:set_count',\r\n count: 1\r\n })\r\n }));\r\n schemas.register('loot_condition', core_1.Mod(core_1.ObjectNode({\r\n condition: conditionIDSwtichNode,\r\n [core_1.Switch]: [{ push: 'condition' }],\r\n [core_1.Case]: Common_1.ConditionCases(entitySourceSwtichNode)\r\n }, { category: 'predicate', context: 'condition' }), {\r\n default: () => ({\r\n condition: 'minecraft:random_chance',\r\n chance: 0.5\r\n })\r\n }));\r\n schemas.register('attribute_modifier', core_1.Mod(core_1.ObjectNode({\r\n attribute: StringNode({ validator: 'resource', params: { pool: 'attribute' } }),\r\n name: StringNode(),\r\n amount: Reference('number_provider'),\r\n operation: StringNode({ enum: ['addition', 'multiply_base', 'multiply_total'] }),\r\n slot: core_1.StringOrList(StringNode({ enum: 'slot' }))\r\n }, { context: 'attribute_modifier' }), {\r\n default: () => ({\r\n attribute: 'minecraft:generic.max_health',\r\n name: '',\r\n amount: 1,\r\n operation: 'addition',\r\n slot: 'mainhand'\r\n })\r\n }));\r\n}\r\nexports.initLootTableSchemas = initLootTableSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPackMcmetaSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst CURRENT_PACK_FORMAT = 7;\r\nfunction initPackMcmetaSchemas(schemas, _) {\r\n const getSimpleString = (jsonText) => { var _a, _b; return jsonText instanceof Array ? getSimpleString(jsonText[0]) : (_b = (_a = jsonText === null || jsonText === void 0 ? void 0 : jsonText.text) !== null && _a !== void 0 ? _a : jsonText === null || jsonText === void 0 ? void 0 : jsonText.toString()) !== null && _b !== void 0 ? _b : ''; };\r\n schemas.register('pack_mcmeta', core_1.Mod(core_1.ObjectNode({\r\n pack: core_1.Mod(core_1.ObjectNode({\r\n pack_format: core_1.Mod(core_1.NumberNode({ integer: true, min: CURRENT_PACK_FORMAT, max: CURRENT_PACK_FORMAT }), {\r\n default: () => CURRENT_PACK_FORMAT,\r\n canUpdate: (_p, v) => v !== CURRENT_PACK_FORMAT,\r\n update: () => [{ name: 'pack_format', params: [CURRENT_PACK_FORMAT], newValue: CURRENT_PACK_FORMAT }]\r\n }),\r\n description: core_1.Reference(schemas, 'text_component')\r\n }), {\r\n default: () => ({\r\n pack_format: CURRENT_PACK_FORMAT,\r\n description: ''\r\n })\r\n })\r\n }), {\r\n default: () => ({\r\n pack: {\r\n pack_format: CURRENT_PACK_FORMAT,\r\n description: ''\r\n }\r\n })\r\n }));\r\n}\r\nexports.initPackMcmetaSchemas = initPackMcmetaSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initPredicatesSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initPredicatesSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const StateChoice = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode(),\r\n change: v => (typeof v === 'boolean' || typeof v === 'number') ? v.toString() : ''\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => (typeof v === 'string') ? parseInt(v) : 0\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n min: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n }),\r\n change: v => (typeof v === 'number') ? ({ min: v, max: v }) : ({})\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => v === 'true' || v === 1\r\n }\r\n ]);\r\n schemas.register('item_predicate', core_1.ObjectNode({\r\n items: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'item' } }))),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } })),\r\n count: Reference('int_bounds'),\r\n durability: Reference('int_bounds'),\r\n potion: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'potion' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'item' }] } } })),\r\n enchantments: core_1.Opt(core_1.ListNode(Reference('enchantment_predicate')))\r\n }, { context: 'item' }));\r\n schemas.register('enchantment_predicate', core_1.ObjectNode({\r\n enchantment: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'enchantment' } })),\r\n levels: Reference('int_bounds')\r\n }, { context: 'enchantment' }));\r\n schemas.register('block_predicate', core_1.ObjectNode({\r\n blocks: core_1.Opt(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/block' } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block', id: ['pop', { push: 'block' }] } } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice, { validation: { validator: 'block_state_map', params: { id: ['pop', { push: 'block' }] } } }))\r\n }, { context: 'block' }));\r\n schemas.register('fluid_predicate', core_1.ObjectNode({\r\n fluid: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'fluid' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/fluid' } })),\r\n state: core_1.Opt(core_1.MapNode(StringNode(), StateChoice))\r\n }, { context: 'fluid' }));\r\n schemas.register('location_predicate', core_1.ObjectNode({\r\n position: core_1.Opt(core_1.ObjectNode({\r\n x: Reference('float_bounds'),\r\n y: Reference('float_bounds'),\r\n z: Reference('float_bounds')\r\n })),\r\n biome: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } })),\r\n feature: core_1.Opt(StringNode({ enum: collections.get('worldgen/structure_feature').map(v => v.slice(10)) })),\r\n dimension: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$dimension' } })),\r\n light: core_1.Opt(core_1.ObjectNode({\r\n light: Reference('int_bounds')\r\n })),\r\n smokey: core_1.Opt(core_1.BooleanNode()),\r\n block: core_1.Opt(Reference('block_predicate')),\r\n fluid: core_1.Opt(Reference('fluid_predicate'))\r\n }, { context: 'location' }));\r\n schemas.register('statistic_predicate', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'stat_type' } }),\r\n stat: StringNode(),\r\n value: Reference('int_bounds'),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:mined': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:crafted': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:used': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:broken': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:picked_up': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:dropped': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'item' } })\r\n },\r\n 'minecraft:killed': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:killed_by': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'entity_type' } })\r\n },\r\n 'minecraft:custom': {\r\n stat: StringNode({ validator: 'resource', params: { pool: 'custom_stat' } })\r\n }\r\n }\r\n }));\r\n schemas.register('player_predicate', core_1.ObjectNode({\r\n gamemode: core_1.Opt(StringNode({ enum: 'gamemode' })),\r\n level: Reference('int_bounds'),\r\n advancements: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$advancement' } }), core_1.ChoiceNode([\r\n { type: 'boolean', node: core_1.BooleanNode(), change: _ => true },\r\n {\r\n type: 'object', node: core_1.MapNode(StringNode(), core_1.BooleanNode())\r\n }\r\n ]))),\r\n recipes: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$recipe' } }), core_1.BooleanNode())),\r\n stats: core_1.Opt(core_1.ListNode(Reference('statistic_predicate'))),\r\n looking_at: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'player' }));\r\n schemas.register('status_effect_predicate', core_1.ObjectNode({\r\n amplifier: Reference('int_bounds'),\r\n duration: Reference('int_bounds'),\r\n ambient: core_1.Opt(core_1.BooleanNode()),\r\n visible: core_1.Opt(core_1.BooleanNode())\r\n }, { context: 'status_effect' }));\r\n schemas.register('distance_predicate', core_1.ObjectNode({\r\n x: Reference('float_bounds'),\r\n y: Reference('float_bounds'),\r\n z: Reference('float_bounds'),\r\n absolute: Reference('float_bounds'),\r\n horizontal: Reference('float_bounds')\r\n }, { context: 'distance' }));\r\n schemas.register('entity_predicate', core_1.ObjectNode({\r\n type: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'entity_type', allowTag: true } })),\r\n nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:entity', id: ['pop', { push: 'type' }] } } })),\r\n team: core_1.Opt(StringNode({ validator: 'team' })),\r\n location: core_1.Opt(Reference('location_predicate')),\r\n stepping_on: core_1.Opt(Reference('location_predicate')),\r\n distance: core_1.Opt(Reference('distance_predicate')),\r\n flags: core_1.Opt(core_1.ObjectNode({\r\n is_on_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_sneaking: core_1.Opt(core_1.BooleanNode()),\r\n is_sprinting: core_1.Opt(core_1.BooleanNode()),\r\n is_swimming: core_1.Opt(core_1.BooleanNode()),\r\n is_baby: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n equipment: core_1.Opt(core_1.MapNode(StringNode({ enum: 'slot' }), Reference('item_predicate'))),\r\n player: core_1.Opt(Reference('player_predicate')),\r\n vehicle: core_1.Opt(Reference('entity_predicate')),\r\n passenger: core_1.Opt(Reference('entity_predicate')),\r\n targeted_entity: core_1.Opt(Reference('entity_predicate')),\r\n lightning_bolt: core_1.Opt(core_1.ObjectNode({\r\n blocks_set_on_fire: core_1.Opt(Reference('int_bounds')),\r\n entity_struck: core_1.Opt(Reference('entity_predicate'))\r\n })),\r\n fishing_hook: core_1.Opt(core_1.ObjectNode({\r\n in_open_water: core_1.Opt(core_1.BooleanNode())\r\n })),\r\n effects: core_1.Opt(core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'mob_effect' } }), Reference('status_effect_predicate')))\r\n }, { context: 'entity' }));\r\n schemas.register('damage_source_predicate', core_1.ObjectNode({\r\n is_explosion: core_1.Opt(core_1.BooleanNode()),\r\n is_fire: core_1.Opt(core_1.BooleanNode()),\r\n is_magic: core_1.Opt(core_1.BooleanNode()),\r\n is_projectile: core_1.Opt(core_1.BooleanNode()),\r\n is_lightning: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_armor: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_invulnerability: core_1.Opt(core_1.BooleanNode()),\r\n bypasses_magic: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n direct_entity: core_1.Opt(Reference('entity_predicate'))\r\n }, { context: 'damage_source' }));\r\n schemas.register('damage_predicate', core_1.ObjectNode({\r\n dealt: Reference('float_bounds'),\r\n taken: Reference('float_bounds'),\r\n blocked: core_1.Opt(core_1.BooleanNode()),\r\n source_entity: core_1.Opt(Reference('entity_predicate')),\r\n type: core_1.Opt(Reference('damage_source_predicate'))\r\n }, { context: 'damage' }));\r\n}\r\nexports.initPredicatesSchemas = initPredicatesSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initRecipeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initRecipeSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('recipe', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'recipe_serializer' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:crafting_shaped': {\r\n group: core_1.Opt(StringNode({ enum: 'recipe_group', additional: true })),\r\n pattern: core_1.ListNode(StringNode()),\r\n key: core_1.MapNode(StringNode(), // TODO: add validation\r\n Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:crafting_shapeless': {\r\n group: core_1.Opt(StringNode()),\r\n ingredients: core_1.ListNode(Reference('recipe_ingredient')),\r\n result: Reference('recipe_result')\r\n },\r\n 'minecraft:smelting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 200 }))\r\n },\r\n 'minecraft:blasting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:smoking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:campfire_cooking': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n experience: core_1.Opt(core_1.NumberNode()),\r\n cookingtime: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 100 }))\r\n },\r\n 'minecraft:stonecutting': {\r\n group: core_1.Opt(StringNode()),\r\n ingredient: Reference('recipe_ingredient'),\r\n result: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:smithing': {\r\n group: core_1.Opt(StringNode()),\r\n base: Reference('recipe_ingredient_object'),\r\n addition: Reference('recipe_ingredient_object'),\r\n result: Reference('recipe_result')\r\n }\r\n }\r\n }, { context: 'recipe', disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:crafting_shaped'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('recipe_ingredient_object'),\r\n change: v => v[0]\r\n },\r\n {\r\n type: 'list',\r\n node: core_1.ListNode(Reference('recipe_ingredient_object')),\r\n change: v => [v]\r\n }\r\n ]), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_ingredient_object', core_1.Mod(core_1.ObjectNode({\r\n item: core_1.Opt(StringNode({ validator: 'resource', params: { pool: 'item' } })),\r\n tag: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$tag/item' } }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n schemas.register('recipe_result', core_1.Mod(core_1.ObjectNode({\r\n item: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.Mod(core_1.NumberNode({ integer: true }), { default: () => 1 }))\r\n }), {\r\n default: () => ({\r\n item: 'minecraft:stone'\r\n })\r\n }));\r\n}\r\nexports.initRecipeSchemas = initRecipeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTagsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTagsSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const TagBase = (type) => core_1.Mod(core_1.ObjectNode({\r\n replace: core_1.Opt(core_1.BooleanNode()),\r\n values: core_1.ListNode(core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: type, allowTag: true } }),\r\n change: v => v.id\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: type, allowTag: true, allowUnknown: true } }),\r\n required: core_1.BooleanNode()\r\n }),\r\n change: v => ({ id: v })\r\n }\r\n ])),\r\n }, { context: 'tag' }), {\r\n default: () => ({\r\n values: []\r\n })\r\n });\r\n schemas.register('block_tag', TagBase('block'));\r\n schemas.register('entity_type_tag', TagBase('entity_type'));\r\n schemas.register('fluid_tag', TagBase('fluid'));\r\n schemas.register('function_tag', TagBase('$function'));\r\n schemas.register('game_event_tag', TagBase('game_event'));\r\n schemas.register('item_tag', TagBase('item'));\r\n}\r\nexports.initTagsSchemas = initTagsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTextComponentSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initTextComponentSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const getSimpleString = (v) => { var _a; return v instanceof Array ? getSimpleString(v[0]) : (_a = v === null || v === void 0 ? void 0 : v.text) !== null && _a !== void 0 ? _a : (typeof v === 'object' ? '' : v === null || v === void 0 ? void 0 : v.toString()); };\r\n schemas.register('text_component', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'object',\r\n node: Reference('text_component_object'),\r\n change: v => v instanceof Array ? (typeof v[0] === 'object' ? v[0] : { text: getSimpleString(v[0]) }) : typeof v === 'object' ? v : { text: getSimpleString(v) }\r\n },\r\n {\r\n type: 'list',\r\n node: Reference('text_component_list'),\r\n change: v => [v]\r\n },\r\n {\r\n type: 'string',\r\n priority: 1,\r\n node: StringNode(),\r\n change: getSimpleString\r\n },\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode(),\r\n change: v => {\r\n const n = parseFloat(getSimpleString(v));\r\n return isFinite(n) ? n : (!!v ? 1 : 0);\r\n }\r\n },\r\n {\r\n type: 'boolean',\r\n node: core_1.BooleanNode(),\r\n change: v => {\r\n const s = getSimpleString(v);\r\n return s === 'true' || s === 'false' ? s === 'true' : !!s;\r\n }\r\n }\r\n ], { context: 'text_component' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n const CommonFields = {\r\n color: core_1.Opt(StringNode()) /* TODO */,\r\n font: core_1.Opt(StringNode()),\r\n bold: core_1.Opt(core_1.BooleanNode()),\r\n italic: core_1.Opt(core_1.BooleanNode()),\r\n underlined: core_1.Opt(core_1.BooleanNode()),\r\n strikethrough: core_1.Opt(core_1.BooleanNode()),\r\n obfuscated: core_1.Opt(core_1.BooleanNode()),\r\n insertion: core_1.Opt(StringNode()),\r\n clickEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['open_url', 'open_file', 'run_command', 'suggest_command', 'change_page', 'copy_to_clipboard'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'change_page': {\r\n value: StringNode()\r\n },\r\n 'copy_to_clipboard': {\r\n value: StringNode()\r\n },\r\n 'open_file': {\r\n value: StringNode()\r\n },\r\n 'open_url': {\r\n value: StringNode()\r\n },\r\n 'run_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n },\r\n 'suggest_command': {\r\n value: StringNode({ validator: 'command', params: { leadingSlash: true, allowPartial: true } })\r\n }\r\n }\r\n })),\r\n hoverEvent: core_1.Opt(core_1.ObjectNode({\r\n action: StringNode({ enum: ['show_text', 'show_item', 'show_entity'] }),\r\n [core_1.Switch]: [{ push: 'action' }],\r\n [core_1.Case]: {\r\n 'show_text': {\r\n value: core_1.Opt(Reference('text_component')),\r\n contents: core_1.Opt(Reference('text_component'))\r\n },\r\n 'show_item': {\r\n value: core_1.Opt(StringNode({ validator: 'nbt', params: { module: 'util::InventoryItem' } })),\r\n contents: core_1.Opt(core_1.ObjectNode({\r\n id: StringNode({ validator: 'resource', params: { pool: 'item' } }),\r\n count: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n tag: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:item', id: ['pop', { push: 'id' }] } } }))\r\n }))\r\n },\r\n 'show_entity': {\r\n value: core_1.Opt(core_1.ObjectNode({\r\n name: core_1.Opt(StringNode()),\r\n type: core_1.Opt(StringNode()),\r\n id: core_1.Opt(StringNode())\r\n })),\r\n contents: core_1.Opt(core_1.Mod(core_1.ObjectNode({\r\n name: core_1.Opt(Reference('text_component')),\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n id: StringNode({ validator: 'uuid' })\r\n }), {\r\n default: () => ({\r\n type: 'minecraft:pig',\r\n id: '00000001-0001-0001-0001-000000000001'\r\n })\r\n }))\r\n }\r\n }\r\n })),\r\n extra: core_1.Opt(Reference('text_component_list'))\r\n };\r\n schemas.register('text_component_object', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'text',\r\n match: v => typeof v === 'object',\r\n change: v => ({ text: '' }),\r\n priority: -1,\r\n node: core_1.ObjectNode({\r\n text: StringNode(),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'translation',\r\n match: v => (v === null || v === void 0 ? void 0 : v.translate) !== undefined,\r\n change: v => ({ translate: '' }),\r\n node: core_1.ObjectNode({\r\n translate: StringNode(),\r\n with: core_1.Opt(Reference('text_component_list')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'score',\r\n match: v => (v === null || v === void 0 ? void 0 : v.score) !== undefined,\r\n change: v => ({ score: {} }),\r\n node: core_1.ObjectNode({\r\n score: core_1.ObjectNode({\r\n name: StringNode({ validator: 'entity', params: { amount: 'single', type: 'entities', isScoreHolder: true } }),\r\n objective: StringNode({ validator: 'objective' }),\r\n value: core_1.Opt(StringNode())\r\n }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'selector',\r\n match: v => (v === null || v === void 0 ? void 0 : v.selector) !== undefined,\r\n change: v => ({ selector: '' }),\r\n node: core_1.ObjectNode({\r\n selector: StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } }),\r\n separator: core_1.Opt(Reference('text_component')),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'keybind',\r\n match: v => (v === null || v === void 0 ? void 0 : v.keybind) !== undefined,\r\n change: v => ({ keybind: '' }),\r\n node: core_1.ObjectNode({\r\n keybind: StringNode({ enum: 'keybind', additional: true }),\r\n ...CommonFields\r\n })\r\n },\r\n {\r\n type: 'nbt',\r\n match: v => (v === null || v === void 0 ? void 0 : v.nbt) !== undefined,\r\n change: v => ({ nbt: '' }),\r\n node: core_1.ObjectNode({\r\n nbt: StringNode({ validator: 'nbt_path' }),\r\n block: core_1.Opt(StringNode({ validator: 'vector', params: { dimension: 3, isInteger: true } })),\r\n entity: core_1.Opt(StringNode({ validator: 'entity', params: { amount: 'multiple', type: 'entities' } })),\r\n storage: core_1.Opt(StringNode({ validator: 'resource', params: { pool: '$storage' } })),\r\n interpret: core_1.Opt(core_1.BooleanNode()),\r\n separator: core_1.Opt(Reference('text_component')),\r\n ...CommonFields\r\n })\r\n }\r\n ], { context: 'text_component_object', choiceContext: 'text_component.object' }), {\r\n default: () => ({\r\n text: \"\"\r\n })\r\n }));\r\n schemas.register('text_component_list', core_1.Mod(core_1.ListNode(Reference('text_component')), {\r\n default: () => [{\r\n text: \"\"\r\n }]\r\n }));\r\n}\r\nexports.initTextComponentSchemas = initTextComponentSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initBiomeSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initBiomeSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('biome', core_1.Mod(core_1.ObjectNode({\r\n temperature: core_1.NumberNode(),\r\n downfall: core_1.NumberNode(),\r\n precipitation: StringNode({ enum: ['none', 'rain', 'snow'] }),\r\n temperature_modifier: core_1.Opt(StringNode({ enum: ['none', 'frozen'] })),\r\n category: StringNode({ enum: 'biome_category' }),\r\n player_spawn_friendly: core_1.Opt(core_1.BooleanNode()),\r\n creature_spawn_probability: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n effects: core_1.ObjectNode({\r\n sky_color: core_1.NumberNode({ color: true }),\r\n fog_color: core_1.NumberNode({ color: true }),\r\n water_color: core_1.NumberNode({ color: true }),\r\n water_fog_color: core_1.NumberNode({ color: true }),\r\n grass_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n foliage_color: core_1.Opt(core_1.NumberNode({ color: true })),\r\n grass_color_modifier: core_1.Opt(StringNode({ enum: ['none', 'dark_forest', 'swamp'] })),\r\n ambient_sound: core_1.Opt(StringNode()),\r\n mood_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_delay: core_1.NumberNode({ integer: true }),\r\n block_search_extent: core_1.NumberNode({ integer: true }),\r\n offset: core_1.NumberNode()\r\n })),\r\n additions_sound: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n tick_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n })),\r\n music: core_1.Opt(core_1.ObjectNode({\r\n sound: StringNode(),\r\n min_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n max_delay: core_1.NumberNode({ integer: true, min: 0 }),\r\n replace_current_music: core_1.BooleanNode()\r\n })),\r\n particle: core_1.Opt(core_1.ObjectNode({\r\n options: core_1.ObjectNode({\r\n type: StringNode()\r\n }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }))\r\n }),\r\n spawners: core_1.MapNode(StringNode({ enum: [\r\n 'monster',\r\n 'creature',\r\n 'ambient',\r\n 'axolotls',\r\n 'underground_water_creature',\r\n 'water_creature',\r\n 'water_ambient',\r\n 'misc'\r\n ] }), core_1.Mod(core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'entity_type' } }),\r\n weight: core_1.NumberNode({ integer: true }),\r\n minCount: core_1.NumberNode({ integer: true }),\r\n maxCount: core_1.NumberNode({ integer: true })\r\n })), {\r\n category: () => 'pool',\r\n default: () => [{\r\n type: 'minecraft:bat',\r\n weight: 1\r\n }]\r\n })),\r\n spawn_costs: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'entity_type' } }), core_1.Mod(core_1.ObjectNode({\r\n energy_budget: core_1.NumberNode(),\r\n charge: core_1.NumberNode()\r\n }, { category: 'function' }), {\r\n default: () => ({\r\n energy_budget: 0.12,\r\n charge: 1.0\r\n })\r\n })),\r\n carvers: core_1.MapNode(StringNode({ enum: ['air', 'liquid'] }), core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_carver' } })), {\r\n default: () => ['minecraft:cave']\r\n })),\r\n features: core_1.ListNode(core_1.Mod(core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })), { category: () => 'predicate' }), { maxLength: 11 })\r\n }, { context: 'biome' }), {\r\n default: () => ({\r\n temperature: 0.8,\r\n downfall: 0.4,\r\n precipitation: 'rain',\r\n category: 'plains',\r\n effects: {\r\n sky_color: 7907327,\r\n fog_color: 12638463,\r\n water_color: 4159204,\r\n water_fog_color: 329011\r\n }\r\n })\r\n }));\r\n}\r\nexports.initBiomeSchemas = initBiomeSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initCarverSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initCarverSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const CanyonConfig = {\r\n vertical_rotation: Common_1.FloatProvider(),\r\n shape: core_1.ObjectNode({\r\n distance_factor: Common_1.FloatProvider(),\r\n thickness: Common_1.FloatProvider(),\r\n width_smoothness: core_1.NumberNode({ integer: true, min: 0 }),\r\n horizontal_radius_factor: Common_1.FloatProvider(),\r\n vertical_radius_default_factor: core_1.NumberNode(),\r\n vertical_radius_center_factor: core_1.NumberNode()\r\n })\r\n };\r\n const CaveConfig = {\r\n horizontal_radius_multiplier: Common_1.FloatProvider(),\r\n vertical_radius_multiplier: Common_1.FloatProvider(),\r\n floor_level: Common_1.FloatProvider({ min: -1, max: 1 }),\r\n };\r\n schemas.register('configured_carver', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/carver' } }),\r\n config: core_1.ObjectNode({\r\n probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n y: Reference('height_provider'),\r\n yScale: Common_1.FloatProvider(),\r\n lava_level: Reference('vertical_anchor'),\r\n debug_settings: core_1.Opt(core_1.ObjectNode({\r\n debug_mode: core_1.Opt(core_1.BooleanNode()),\r\n air_state: core_1.Opt(Reference('block_state')),\r\n water_state: core_1.Opt(Reference('block_state')),\r\n lava_state: core_1.Opt(Reference('block_state')),\r\n barrier_state: core_1.Opt(Reference('block_state'))\r\n })),\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:canyon': CanyonConfig,\r\n 'minecraft:cave': CaveConfig,\r\n 'minecraft:nether_cave': CaveConfig\r\n },\r\n })\r\n }, { context: 'carver' }), {\r\n default: () => ({\r\n type: 'minecraft:cave',\r\n config: {\r\n probability: 0.1\r\n }\r\n })\r\n }));\r\n}\r\nexports.initCarverSchemas = initCarverSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initDecoratorSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initDecoratorSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const CountConfig = {\r\n count: Common_1.IntProvider({ min: 0, max: 256 })\r\n };\r\n schemas.register('configured_decorator', core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/decorator' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_filter': {\r\n predicate: Reference('block_predicate_worldgen')\r\n },\r\n 'minecraft:carving_mask': {\r\n step: StringNode({ enum: 'generation_step' })\r\n },\r\n 'minecraft:cave_surface': {\r\n surface: StringNode({ enum: ['floor', 'ceiling'] }),\r\n floor_to_ceiling_search_range: core_1.NumberNode({ integer: true }),\r\n allow_water: core_1.BooleanNode(),\r\n },\r\n 'minecraft:chance': {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n },\r\n 'minecraft:count': CountConfig,\r\n 'minecraft:count_extra': {\r\n count: core_1.NumberNode({ integer: true, min: 0 }),\r\n extra_count: core_1.NumberNode({ integer: true, min: 0 }),\r\n extra_chance: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:count_multilayer': CountConfig,\r\n 'minecraft:count_noise': {\r\n noise_level: core_1.NumberNode(),\r\n below_noise: core_1.NumberNode({ integer: true }),\r\n above_noise: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:count_noise_biased': {\r\n noise_to_count_ratio: core_1.NumberNode({ integer: true }),\r\n noise_factor: core_1.NumberNode(),\r\n noise_offset: core_1.Opt(core_1.NumberNode())\r\n },\r\n 'minecraft:decorated': {\r\n outer: Reference('configured_decorator'),\r\n inner: Reference('configured_decorator')\r\n },\r\n 'minecraft:environment_scan': {\r\n direction_of_search: StringNode({ enum: ['up', 'down'] }),\r\n max_steps: core_1.NumberNode({ integer: true, min: 1, max: 32 }),\r\n target_condition: Reference('block_predicate_worldgen')\r\n },\r\n 'minecraft:heightmap': {\r\n heightmap: StringNode({ enum: 'heightmap_type' })\r\n },\r\n 'minecraft:lava_lake': {\r\n chance: core_1.NumberNode({ integer: true, min: 0 })\r\n },\r\n 'minecraft:range': {\r\n height: Reference('height_provider')\r\n },\r\n 'minecraft:scatter': {\r\n xz_spread: Common_1.IntProvider({ min: -16, max: 16 }),\r\n y_spread: Common_1.IntProvider({ min: -16, max: 16 }),\r\n },\r\n 'minecraft:surface_relative_threshold': {\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n min_inclusive: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max_inclusive: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n },\r\n 'minecraft:water_depth_threshold': {\r\n max_water_depth: core_1.NumberNode({ integer: true })\r\n }\r\n }\r\n }, { context: 'decorator', category: 'predicate' })\r\n }, { context: 'decorator', category: 'predicate' }));\r\n}\r\nexports.initDecoratorSchemas = initDecoratorSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initProcessorListSchemas = exports.Processors = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initProcessorListSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n exports.Processors = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/processor_list' } }),\r\n change: v => undefined\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('processor_list'),\r\n change: v => ({\r\n processors: [{\r\n \"processor_type\": \"minecraft:nop\"\r\n }]\r\n })\r\n }\r\n ]);\r\n schemas.register('processor_list', core_1.Mod(core_1.ObjectNode({\r\n processors: core_1.ListNode(Reference('processor'))\r\n }, { context: 'processor_list' }), {\r\n default: () => ({\r\n processors: [{\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n }]\r\n })\r\n }));\r\n schemas.register('processor', core_1.Mod(core_1.ObjectNode({\r\n processor_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_processor' } }),\r\n [core_1.Switch]: [{ push: 'processor_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_age': {\r\n mossiness: core_1.NumberNode()\r\n },\r\n 'minecraft:block_ignore': {\r\n blocks: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:block_rot': {\r\n integrity: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:gravity': {\r\n heightmap: StringNode({ enum: 'heightmap_type' }),\r\n offset: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:protected_blocks': {\r\n value: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n },\r\n 'minecraft:rule': {\r\n rules: core_1.ListNode(Reference('processor_rule'))\r\n }\r\n }\r\n }, { category: 'function', context: 'processor' }), {\r\n default: () => ({\r\n processor_type: 'minecraft:rule',\r\n rules: [{\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n }]\r\n })\r\n }));\r\n schemas.register('processor_rule', core_1.Mod(core_1.ObjectNode({\r\n position_predicate: core_1.Opt(Reference('pos_rule_test')),\r\n location_predicate: Reference('rule_test'),\r\n input_predicate: Reference('rule_test'),\r\n output_state: Reference('block_state'),\r\n output_nbt: core_1.Opt(StringNode({ validator: 'nbt', params: { registry: { category: 'minecraft:block' } } }))\r\n }, { category: 'predicate', context: 'processor_rule' }), {\r\n default: () => ({\r\n location_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n },\r\n input_predicate: {\r\n predicate_type: 'minecraft:always_true'\r\n }\r\n })\r\n }));\r\n const posTestFields = {\r\n min_dist: core_1.Opt(core_1.NumberNode({ min: 0, max: 255, integer: true })),\r\n max_dist: core_1.Opt(core_1.NumberNode({ min: 0, max: 255, integer: true })),\r\n min_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n max_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 }))\r\n };\r\n schemas.register('pos_rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'pos_rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:axis_aligned_linear_pos': {\r\n axis: StringNode({ enum: ['x', 'y', 'z'] }),\r\n ...posTestFields\r\n },\r\n 'minecraft:linear_pos': posTestFields\r\n }\r\n }, { context: 'pos_rule_test', disableSwitchContext: true }));\r\n schemas.register('rule_test', core_1.ObjectNode({\r\n predicate_type: StringNode({ validator: 'resource', params: { pool: 'rule_test' } }),\r\n [core_1.Switch]: [{ push: 'predicate_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } })\r\n },\r\n 'minecraft:blockstate_match': {\r\n block_state: Reference('block_state')\r\n },\r\n 'minecraft:random_block_match': {\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:random_blockstate_match': {\r\n block_state: Reference('block_state'),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:tag_match': {\r\n tag: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }\r\n }\r\n }, { context: 'rule_test', disableSwitchContext: true }));\r\n}\r\nexports.initProcessorListSchemas = initProcessorListSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nrequire(\"./Decorator\");\r\nrequire(\"./ProcessorList\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nfunction initFeatureSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Feature = core_1.ChoiceNode([\r\n {\r\n type: 'string',\r\n node: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n {\r\n type: 'object',\r\n node: Reference('configured_feature')\r\n }\r\n ], { choiceContext: 'feature' });\r\n const RandomPatchConfig = {\r\n tries: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 })),\r\n xz_spread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n y_spread: core_1.Opt(core_1.NumberNode({ integer: true, min: 0 })),\r\n feature: Feature,\r\n };\r\n const DiskConfig = {\r\n state: Reference('block_state'),\r\n radius: Common_1.IntProvider({ min: 0, max: 8 }),\r\n half_height: core_1.NumberNode({ integer: true, min: 0, max: 4 }),\r\n targets: core_1.ListNode(Reference('block_state'))\r\n };\r\n const HugeMushroomConfig = {\r\n cap_provider: Reference('block_state_provider'),\r\n stem_provider: Reference('block_state_provider'),\r\n foliage_radius: core_1.Opt(core_1.NumberNode({ integer: true }))\r\n };\r\n const TargetBlockState = core_1.ObjectNode({\r\n target: Reference('rule_test'),\r\n state: Reference('block_state')\r\n });\r\n const OreConfig = {\r\n size: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n discard_chance_on_air_exposure: core_1.NumberNode({ min: 0, max: 1 }),\r\n targets: core_1.ListNode(TargetBlockState)\r\n };\r\n const VegetationPatchConfig = {\r\n surface: StringNode({ enum: 'cave_surface' }),\r\n depth: Common_1.IntProvider({ min: 1, max: 128 }),\r\n vertical_range: core_1.NumberNode({ integer: true, min: 1, max: 256 }),\r\n extra_bottom_block_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n extra_edge_column_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n vegetation_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n xz_radius: Common_1.IntProvider(),\r\n replaceable: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n ground_state: Reference('block_state_provider'),\r\n vegetation_feature: Feature\r\n };\r\n schemas.register('configured_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bamboo': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:basalt_columns': {\r\n reach: Common_1.IntProvider({ min: 0, max: 3 }),\r\n height: Common_1.IntProvider({ min: 1, max: 10 })\r\n },\r\n 'minecraft:block_column': {\r\n direction: StringNode({ enum: ['up', 'down', 'north', 'east', 'south', 'west'] }),\r\n allowed_placement: Reference('block_predicate_worldgen'),\r\n prioritize_tip: core_1.BooleanNode(),\r\n layers: core_1.ListNode(core_1.ObjectNode({\r\n height: Common_1.IntProvider({ min: 0 }),\r\n provider: Reference('block_state_provider')\r\n }))\r\n },\r\n 'minecraft:block_pile': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:decorated': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:decorated_flower': {\r\n decorator: Reference('configured_decorator'),\r\n feature: Feature\r\n },\r\n 'minecraft:delta_feature': {\r\n contents: Reference('block_state'),\r\n rim: Reference('block_state'),\r\n size: Common_1.IntProvider({ min: 0, max: 16 }),\r\n rim_size: Common_1.IntProvider({ min: 0, max: 16 })\r\n },\r\n 'minecraft:disk': DiskConfig,\r\n 'minecraft:dripstone_cluster': {\r\n floor_to_ceiling_search_range: core_1.NumberNode({ integer: true, min: 1, max: 512 }),\r\n height: Common_1.IntProvider({ min: 0, max: 128 }),\r\n radius: Common_1.IntProvider({ min: 0, max: 128 }),\r\n max_stalagmite_stalactite_height_diff: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n height_deviation: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n dripstone_block_layer_thickness: Common_1.IntProvider({ min: 0, max: 128 }),\r\n density: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n wetness: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n chance_of_dripstone_column_at_max_distance_from_center: core_1.NumberNode({ min: 0, max: 1 }),\r\n max_distance_from_edge_affecting_chance_of_dripstone_column: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n max_distance_from_center_affecting_height_bias: core_1.NumberNode({ integer: true, min: 1, max: 64 })\r\n },\r\n 'minecraft:end_gateway': {\r\n exact: core_1.BooleanNode(),\r\n exit: core_1.Opt(Reference('block_pos'))\r\n },\r\n 'minecraft:end_spike': {\r\n crystal_invulnerable: core_1.Opt(core_1.BooleanNode()),\r\n crystal_beam_target: core_1.Opt(Reference('block_pos')),\r\n spikes: core_1.ListNode(core_1.ObjectNode({\r\n centerX: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n centerZ: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n radius: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n height: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n guarded: core_1.Opt(core_1.BooleanNode())\r\n }))\r\n },\r\n 'minecraft:fill_layer': {\r\n state: Reference('block_state'),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 255 })\r\n },\r\n 'minecraft:flower': RandomPatchConfig,\r\n 'minecraft:forest_rock': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:fossil': {\r\n max_empty_corners_allowed: core_1.NumberNode({ integer: true, min: 0, max: 7 }),\r\n fossil_structures: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$structure' } })),\r\n overlay_structures: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$structure' } })),\r\n fossil_processors: ProcessorList_1.Processors,\r\n overlay_processors: ProcessorList_1.Processors,\r\n },\r\n 'minecraft:geode': {\r\n blocks: core_1.ObjectNode({\r\n filling_provider: Reference('block_state_provider'),\r\n inner_layer_provider: Reference('block_state_provider'),\r\n alternate_inner_layer_provider: Reference('block_state_provider'),\r\n middle_layer_provider: Reference('block_state_provider'),\r\n outer_layer_provider: Reference('block_state_provider'),\r\n inner_placements: core_1.ListNode(Reference('block_state')),\r\n cannot_replace: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n invalid_blocks: StringNode({ validator: 'resource', params: { pool: '$tag/block' } })\r\n }),\r\n layers: core_1.ObjectNode({\r\n filling: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n inner_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n middle_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n outer_layer: core_1.Opt(core_1.NumberNode({ min: 0.01, max: 50 })),\r\n }),\r\n crack: core_1.ObjectNode({\r\n generate_crack_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n base_crack_size: core_1.Opt(core_1.NumberNode({ min: 0, max: 5 })),\r\n crack_point_offset: core_1.Opt(core_1.NumberNode({ min: 0, max: 10, integer: true })),\r\n }),\r\n noise_multiplier: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n use_potential_placements_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n use_alternate_layer0_chance: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n placements_require_layer0_alternate: core_1.Opt(core_1.BooleanNode()),\r\n outer_wall_distance: core_1.Opt(Common_1.IntProvider({ min: 1, max: 20 })),\r\n distribution_points: core_1.Opt(Common_1.IntProvider({ min: 1, max: 20 })),\r\n point_offset: core_1.Opt(Common_1.IntProvider({ min: 0, max: 10 })),\r\n min_gen_offset: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n max_gen_offset: core_1.Opt(core_1.NumberNode({ integer: true })),\r\n invalid_blocks_threshold: core_1.NumberNode({ integer: true })\r\n },\r\n 'minecraft:glow_lichen': {\r\n search_range: core_1.Opt(core_1.NumberNode({ min: 1, max: 64, integer: true })),\r\n chance_of_spreading: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n can_place_on_floor: core_1.Opt(core_1.BooleanNode()),\r\n can_place_on_ceiling: core_1.Opt(core_1.BooleanNode()),\r\n can_place_on_wall: core_1.Opt(core_1.BooleanNode()),\r\n can_be_placed_on: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:huge_brown_mushroom': HugeMushroomConfig,\r\n 'minecraft:huge_fungus': {\r\n hat_state: Reference('block_state'),\r\n decor_state: Reference('block_state'),\r\n stem_state: Reference('block_state'),\r\n valid_base_block: Reference('block_state'),\r\n planted: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:huge_red_mushroom': HugeMushroomConfig,\r\n 'minecraft:ice_patch': DiskConfig,\r\n 'minecraft:iceberg': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:lake': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:large_dripstone': {\r\n floor_to_ceiling_search_range: core_1.Opt(core_1.NumberNode({ integer: true, min: 1, max: 512 })),\r\n column_radius: Common_1.IntProvider({ min: 0, max: 60 }),\r\n height_scale: Common_1.FloatProvider({ min: 0, max: 20 }),\r\n max_column_radius_to_cave_height_ratio: core_1.NumberNode({ min: 0, max: 1 }),\r\n stalactite_bluntness: Common_1.FloatProvider({ min: 0.1, max: 10 }),\r\n stalagmite_bluntness: Common_1.FloatProvider({ min: 0.1, max: 10 }),\r\n wind_speed: Common_1.FloatProvider({ min: 0, max: 2 }),\r\n min_radius_for_wind: core_1.NumberNode({ integer: true, min: 0, max: 100 }),\r\n min_bluntness_for_wind: core_1.NumberNode({ min: 0, max: 5 })\r\n },\r\n 'minecraft:nether_forest_vegetation': {\r\n state_provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:netherrack_replace_blobs': {\r\n state: Reference('block_state'),\r\n target: Reference('block_state'),\r\n radius: Common_1.IntProvider({ min: 0, max: 12 })\r\n },\r\n 'minecraft:no_bonemeal_flower': RandomPatchConfig,\r\n 'minecraft:ore': OreConfig,\r\n 'minecraft:pointed_dripstone': {\r\n chance_of_taller_dripstone: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n chance_of_directional_spread: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n chance_of_spread_radius2: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n chance_of_spread_radius3: core_1.Opt(core_1.NumberNode({ min: 0, max: 1 })),\r\n },\r\n 'minecraft:random_patch': RandomPatchConfig,\r\n 'minecraft:random_boolean_selector': {\r\n feature_false: Feature,\r\n feature_true: Feature\r\n },\r\n 'minecraft:random_selector': {\r\n features: core_1.ListNode(core_1.ObjectNode({\r\n chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n feature: Feature\r\n })),\r\n default: Feature\r\n },\r\n 'minecraft:replace_single_block': {\r\n targets: core_1.ListNode(TargetBlockState)\r\n },\r\n 'minecraft:root_system': {\r\n required_vertical_space_for_tree: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_radius: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_placement_attempts: core_1.NumberNode({ integer: true, min: 1, max: 256 }),\r\n root_column_max_height: core_1.NumberNode({ integer: true, min: 1, max: 4096 }),\r\n hanging_root_radius: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n hanging_roots_vertical_span: core_1.NumberNode({ integer: true, min: 0, max: 16 }),\r\n hanging_root_placement_attempts: core_1.NumberNode({ integer: true, min: 0, max: 256 }),\r\n allowed_vertical_water_for_tree: core_1.NumberNode({ integer: true, min: 1, max: 64 }),\r\n root_replaceable: StringNode({ validator: 'resource', params: { pool: '$tag/block' } }),\r\n root_state_provider: Reference('block_state_provider'),\r\n hanging_root_state_provider: Reference('block_state_provider'),\r\n feature: Feature\r\n },\r\n 'minecraft:scattered_ore': OreConfig,\r\n 'minecraft:sea_pickle': {\r\n count: Common_1.IntProvider({ min: 0, max: 256 })\r\n },\r\n 'minecraft:seagrass': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:simple_block': {\r\n to_place: Reference('block_state_provider')\r\n },\r\n 'minecraft:simple_random_selector': {\r\n features: core_1.ListNode(Feature)\r\n },\r\n 'minecraft:spring_feature': {\r\n state: Reference('fluid_state'),\r\n rock_count: core_1.NumberNode({ integer: true }),\r\n hole_count: core_1.NumberNode({ integer: true }),\r\n requires_block_below: core_1.BooleanNode(),\r\n valid_blocks: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:tree': {\r\n ignore_vines: core_1.Opt(core_1.BooleanNode()),\r\n force_dirt: core_1.Opt(core_1.BooleanNode()),\r\n minimum_size: Reference('feature_size'),\r\n dirt_provider: Reference('block_state_provider'),\r\n trunk_provider: Reference('block_state_provider'),\r\n foliage_provider: Reference('block_state_provider'),\r\n trunk_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/trunk_placer_type' } }),\r\n base_height: core_1.NumberNode({ integer: true, min: 0, max: 32 }),\r\n height_rand_a: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n height_rand_b: core_1.NumberNode({ integer: true, min: 0, max: 24 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bending_trunk_placer': {\r\n bend_length: Common_1.IntProvider({ min: 1, max: 64 }),\r\n min_height_for_leaves: core_1.Opt(core_1.NumberNode({ integer: true, min: 1 }))\r\n }\r\n }\r\n }, { context: 'trunk_placer' }),\r\n foliage_placer: core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/foliage_placer_type' } }),\r\n radius: Common_1.IntProvider({ min: 0, max: 16 }),\r\n offset: Common_1.IntProvider({ min: 0, max: 16 }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:blob_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:bush_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:fancy_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:jungle_foliage_placer': {\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 16 })\r\n },\r\n 'minecraft:mega_pine_foliage_placer': {\r\n crown_height: Common_1.IntProvider({ min: 0, max: 24 })\r\n },\r\n 'minecraft:pine_foliage_placer': {\r\n height: Common_1.IntProvider({ min: 0, max: 24 })\r\n },\r\n 'minecraft:random_spread_foliage_placer': {\r\n foliage_height: Common_1.IntProvider({ min: 1, max: 512 }),\r\n leaf_placement_attempts: core_1.NumberNode({ integer: true, min: 0, max: 256 })\r\n },\r\n 'minecraft:spruce_foliage_placer': {\r\n trunk_height: Common_1.IntProvider({ min: 0, max: 24 })\r\n }\r\n }\r\n }, { context: 'foliage_placer', disableSwitchContext: true }),\r\n decorators: core_1.ListNode(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/tree_decorator_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:alter_ground': {\r\n provider: Reference('block_state_provider')\r\n },\r\n 'minecraft:beehive': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:cocoa': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n }\r\n }\r\n }, { context: 'tree_decorator' }))\r\n },\r\n 'minecraft:underwater_magma': {\r\n floor_search_range: core_1.NumberNode({ integer: true, min: 0, max: 512 }),\r\n placement_radius_around_floor: core_1.NumberNode({ integer: true, min: 0, max: 64 }),\r\n placement_probability_per_valid_position: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:vegetation_patch': VegetationPatchConfig,\r\n 'minecraft:waterlogged_vegetation_patch': VegetationPatchConfig\r\n }\r\n }, { context: 'feature' })\r\n }, { context: 'feature' }), {\r\n default: () => ({\r\n type: 'minecraft:decorated',\r\n config: {\r\n decorator: {\r\n type: 'minecraft:count',\r\n config: {\r\n count: 4\r\n }\r\n },\r\n feature: {\r\n type: 'minecraft:tree',\r\n config: {\r\n ignore_vines: true,\r\n minimum_size: {\r\n type: 'minecraft:two_layers_feature_size'\r\n },\r\n trunk_placer: {\r\n type: 'minecraft:straight_trunk_placer',\r\n base_height: 5,\r\n height_rand_a: 2,\r\n height_rand_b: 0\r\n },\r\n foliage_placer: {\r\n type: 'minecraft:blob_foliage_placer',\r\n radius: 2,\r\n offset: 0,\r\n height: 3\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }));\r\n schemas.register('feature_size', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/feature_size_type' } }),\r\n min_clipped_height: core_1.Opt(core_1.NumberNode({ min: 0, max: 80 })),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:two_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 81 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n },\r\n 'minecraft:three_layers_feature_size': {\r\n limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n upper_limit: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 80 })),\r\n lower_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n middle_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 })),\r\n upper_size: core_1.Opt(core_1.NumberNode({ integer: true, min: 0, max: 16 }))\r\n }\r\n }\r\n }, { disableSwitchContext: true }), {\r\n default: () => ({\r\n type: 'minecraft:two_layers_feature_size'\r\n })\r\n }));\r\n const NoiseProvider = {\r\n seed: core_1.NumberNode({ integer: true }),\r\n noise: Reference('noise_parameters'),\r\n scale: core_1.Mod(core_1.NumberNode({ min: Number.MIN_VALUE }), { default: () => 1 })\r\n };\r\n schemas.register('block_state_provider', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/block_state_provider_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:dual_noise_provider': {\r\n ...NoiseProvider,\r\n variety: Common_1.InclusiveRange({ integer: true, min: 1, max: 64 }),\r\n slow_noise: Reference('noise_parameters'),\r\n slow_scale: core_1.Mod(core_1.NumberNode({ min: Number.MIN_VALUE }), { default: () => 1 }),\r\n states: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:noise_threshold_provider': {\r\n ...NoiseProvider,\r\n threshold: core_1.NumberNode({ min: -1, max: 1 }),\r\n high_chance: core_1.NumberNode({ min: 0, max: 1 }),\r\n default_state: Reference('block_state'),\r\n low_states: core_1.ListNode(Reference('block_state')),\r\n high_states: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:noise_provider': {\r\n ...NoiseProvider,\r\n states: core_1.ListNode(Reference('block_state'))\r\n },\r\n 'minecraft:randomized_int_state_provider': {\r\n property: StringNode(),\r\n values: Common_1.IntProvider(),\r\n source: Reference('block_state_provider')\r\n },\r\n 'minecraft:rotated_block_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:simple_state_provider': {\r\n state: Reference('block_state')\r\n },\r\n 'minecraft:weighted_state_provider': {\r\n entries: core_1.ListNode(core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n data: Reference('block_state')\r\n }), {\r\n default: () => ({\r\n data: {}\r\n })\r\n }))\r\n }\r\n }\r\n }, { context: 'block_state_provider' }), {\r\n default: () => ({\r\n type: 'minecraft:simple_state_provider'\r\n })\r\n }));\r\n schemas.register('block_predicate_worldgen', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'block_predicate_type' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:all_of': {\r\n predicates: core_1.ListNode(Reference('block_predicate_worldgen'))\r\n },\r\n 'minecraft:any_of': {\r\n predicates: core_1.ListNode(Reference('block_predicate_worldgen'))\r\n },\r\n 'minecraft:matching_blocks': {\r\n offset: core_1.Opt(Reference('block_pos')),\r\n blocks: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'block' } }))\r\n },\r\n 'minecraft:matching_fluids': {\r\n offset: core_1.Opt(Reference('block_pos')),\r\n fluids: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: 'fluid' } }))\r\n },\r\n 'minecraft:not': {\r\n predicate: Reference('block_predicate_worldgen')\r\n },\r\n 'minecraft:would_survive': {\r\n offset: core_1.Opt(Reference('block_pos')),\r\n state: Reference('block_state')\r\n }\r\n }\r\n }, { context: 'block_predicate' }), {\r\n default: () => ({\r\n type: 'minecraft:true'\r\n })\r\n }));\r\n}\r\nexports.initFeatureSchemas = initFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initNoiseSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Common_1 = require(\"../Common\");\r\nfunction initNoiseSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('noise_settings', core_1.Mod(core_1.ObjectNode({\r\n bedrock_roof_position: core_1.NumberNode({ integer: true }),\r\n bedrock_floor_position: core_1.NumberNode({ integer: true }),\r\n sea_level: core_1.NumberNode({ integer: true }),\r\n disable_mob_generation: core_1.BooleanNode(),\r\n noise_caves_enabled: core_1.BooleanNode(),\r\n noodle_caves_enabled: core_1.BooleanNode(),\r\n aquifers_enabled: core_1.BooleanNode(),\r\n deepslate_enabled: core_1.BooleanNode(),\r\n ore_veins_enabled: core_1.BooleanNode(),\r\n legacy_random_source: core_1.BooleanNode(),\r\n default_block: Reference('block_state'),\r\n default_fluid: Reference('block_state'),\r\n noise: core_1.ObjectNode({\r\n min_y: core_1.NumberNode({ integer: true, min: -2048, max: 2047 }),\r\n height: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n density_factor: core_1.NumberNode(),\r\n density_offset: core_1.NumberNode(),\r\n size_horizontal: core_1.NumberNode({ integer: true }),\r\n size_vertical: core_1.NumberNode({ integer: true }),\r\n island_noise_override: core_1.Opt(core_1.BooleanNode()),\r\n amplified: core_1.Opt(core_1.BooleanNode()),\r\n sampling: core_1.ObjectNode({\r\n xz_scale: core_1.NumberNode(),\r\n y_scale: core_1.NumberNode(),\r\n xz_factor: core_1.NumberNode(),\r\n y_factor: core_1.NumberNode()\r\n }),\r\n bottom_slide: Reference('noise_slider'),\r\n top_slide: Reference('noise_slider'),\r\n terrain_shaper: Reference('terrain_shaper')\r\n }),\r\n surface_rule: Reference('material_rule'),\r\n structures: Reference('generator_structures')\r\n }, { context: 'noise_settings' }), node => ({\r\n default: () => Common_1.DefaultNoiseSettings,\r\n validate: (path, value, errors, options) => {\r\n var _a, _b, _c, _d;\r\n value = node.validate(path, value, errors, options);\r\n if (((_a = value === null || value === void 0 ? void 0 : value.noise) === null || _a === void 0 ? void 0 : _a.min_y) + ((_b = value === null || value === void 0 ? void 0 : value.noise) === null || _b === void 0 ? void 0 : _b.height) > 2047) {\r\n errors.add(path.push('noise').push('height'), 'error.min_y_plus_height', 2047);\r\n }\r\n if (((_c = value === null || value === void 0 ? void 0 : value.noise) === null || _c === void 0 ? void 0 : _c.height) % 16 !== 0) {\r\n errors.add(path.push('noise').push('height'), 'error.height_multiple', 16);\r\n }\r\n if (((_d = value === null || value === void 0 ? void 0 : value.noise) === null || _d === void 0 ? void 0 : _d.min_y) % 16 !== 0) {\r\n errors.add(path.push('noise').push('min_y'), 'error.min_y_multiple', 16);\r\n }\r\n return value;\r\n }\r\n })));\r\n schemas.register('noise_slider', core_1.ObjectNode({\r\n target: core_1.NumberNode(),\r\n size: core_1.NumberNode({ integer: true, min: 0 }),\r\n offset: core_1.NumberNode({ integer: true })\r\n }));\r\n schemas.register('generator_structures', core_1.ObjectNode({\r\n stronghold: core_1.Opt(core_1.ObjectNode({\r\n distance: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n spread: core_1.NumberNode({ integer: true, min: 0, max: 1023 }),\r\n count: core_1.NumberNode({ integer: true, min: 1, max: 4095 })\r\n })),\r\n structures: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }), core_1.Mod(core_1.ObjectNode({\r\n spacing: core_1.NumberNode({ integer: true, min: 0, max: 4096 }),\r\n separation: core_1.Mod(core_1.NumberNode({ integer: true, min: 0, max: 4096 }), (node) => ({\r\n validate: (path, value, errors, options) => {\r\n if (path.pop().push('spacing').get() <= value) {\r\n errors.add(path, 'error.separation_smaller_spacing');\r\n }\r\n return node.validate(path, value, errors, options);\r\n }\r\n })),\r\n salt: core_1.NumberNode({ integer: true, min: 0 })\r\n }, { context: 'generator_structure' }), {\r\n default: () => ({\r\n spacing: 10,\r\n separation: 5,\r\n salt: 0\r\n })\r\n }))\r\n }));\r\n schemas.register('generator_layer', core_1.Mod(core_1.ObjectNode({\r\n block: StringNode({ validator: 'resource', params: { pool: 'block' } }),\r\n height: core_1.NumberNode({ integer: true, min: 1 })\r\n }), {\r\n default: () => ({\r\n block: 'minecraft:stone',\r\n height: 1\r\n })\r\n }));\r\n schemas.register('terrain_shaper', core_1.Mod(core_1.ObjectNode({\r\n offset: Reference('terrain_spline'),\r\n factor: Reference('terrain_spline'),\r\n jaggedness: Reference('terrain_spline'),\r\n }, { context: 'terrain_shaper' }), {\r\n default: () => ({\r\n offset: 0,\r\n factor: 0,\r\n jaggedness: 0,\r\n })\r\n }));\r\n schemas.register('terrain_spline', core_1.Mod(core_1.ChoiceNode([\r\n {\r\n type: 'number',\r\n node: core_1.NumberNode()\r\n },\r\n {\r\n type: 'object',\r\n node: core_1.ObjectNode({\r\n coordinate: core_1.Mod(StringNode({ enum: ['continents', 'erosion', 'weirdness', 'ridges'] }), { default: () => 'continents' }),\r\n points: core_1.ListNode(core_1.ObjectNode({\r\n location: core_1.NumberNode(),\r\n derivative: core_1.NumberNode(),\r\n value: Reference('terrain_spline')\r\n }))\r\n }, { category: 'function' })\r\n }\r\n ], { context: 'terrain_spline', choiceContext: 'terrain_spline' }), {\r\n default: () => 0\r\n }));\r\n}\r\nexports.initNoiseSettingsSchemas = initNoiseSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initStructureFeatureSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initStructureFeatureSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const templatePoolConfig = {\r\n start_pool: StringNode({ validator: 'resource', params: { pool: '$worldgen/template_pool' } }),\r\n size: core_1.NumberNode({ integer: true })\r\n };\r\n schemas.register('configured_structure_feature', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_feature' } }),\r\n config: core_1.ObjectNode({\r\n [core_1.Switch]: ['pop', { push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:bastion_remnant': templatePoolConfig,\r\n 'minecraft:buried_treasure': {\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:mineshaft': {\r\n type: StringNode({ enum: ['normal', 'mesa'] }),\r\n probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:nether_fossil': {\r\n height: Reference('height_provider')\r\n },\r\n 'minecraft:ocean_ruin': {\r\n biome_temp: StringNode({ enum: ['cold', 'warm'] }),\r\n large_probability: core_1.NumberNode({ min: 0, max: 1 }),\r\n cluster_probability: core_1.NumberNode({ min: 0, max: 1 })\r\n },\r\n 'minecraft:pillager_outpost': templatePoolConfig,\r\n 'minecraft:ruined_portal': {\r\n portal_type: StringNode({ enum: ['standard', 'desert', 'jungle', 'mountain', 'nether', 'ocean', 'swamp'] })\r\n },\r\n 'minecraft:shipwreck': {\r\n is_beached: core_1.Opt(core_1.BooleanNode())\r\n },\r\n 'minecraft:village': templatePoolConfig\r\n }\r\n }, { context: 'structure_feature', disableSwitchContext: true })\r\n }, { context: 'structure_feature' }), {\r\n default: () => ({\r\n type: 'minecraft:bastion_remnant',\r\n config: {\r\n start_pool: 'minecraft:bastion/starts',\r\n size: 6\r\n }\r\n })\r\n }));\r\n}\r\nexports.initStructureFeatureSchemas = initStructureFeatureSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSurfaceRuleSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initSurfaceRuleSchemas(schemas, collections) {\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n schemas.register('material_rule', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/material_rule' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:block': {\r\n result_state: Reference('block_state'),\r\n },\r\n 'minecraft:condition': {\r\n if_true: Reference('material_condition'),\r\n then_run: Reference('material_rule')\r\n },\r\n 'minecraft:sequence': {\r\n sequence: core_1.ListNode(Reference('material_rule'))\r\n }\r\n }\r\n }, { context: 'material_rule', category: 'pool' }), {\r\n default: () => ({\r\n type: 'minecraft:block',\r\n result_state: {\r\n Name: 'minecraft:stone'\r\n }\r\n })\r\n }));\r\n schemas.register('material_condition', core_1.Mod(core_1.ObjectNode({\r\n type: StringNode({ validator: 'resource', params: { pool: 'worldgen/material_condition' } }),\r\n [core_1.Switch]: [{ push: 'type' }],\r\n [core_1.Case]: {\r\n 'minecraft:biome': {\r\n biome_is: core_1.ListNode(StringNode({ validator: 'resource', params: { pool: '$worldgen/biome' } }))\r\n },\r\n 'minecraft:noise_threshold': {\r\n noise: StringNode({ validator: 'resource', params: { pool: '$worldgen/noise' } }),\r\n min_threshold: core_1.NumberNode(),\r\n max_threshold: core_1.NumberNode()\r\n },\r\n 'minecraft:not': {\r\n invert: Reference('material_condition')\r\n },\r\n 'minecraft:stone_depth': {\r\n surface_type: StringNode({ enum: 'cave_surface' }),\r\n add_run_depth: core_1.BooleanNode()\r\n },\r\n 'minecraft:water': {\r\n offset: core_1.NumberNode({ integer: true }),\r\n run_depth_multiplier: core_1.NumberNode({ integer: true, min: -20, max: 20 }),\r\n add_stone_depth: core_1.BooleanNode()\r\n },\r\n 'minecraft:y_above': {\r\n anchor: Reference('vertical_anchor'),\r\n run_depth_multiplier: core_1.NumberNode({ integer: true, min: -20, max: 20 }),\r\n add_stone_depth: core_1.BooleanNode()\r\n }\r\n }\r\n }, { context: 'material_condition' }), {\r\n default: () => ({\r\n type: 'minecraft:biome',\r\n is_biome: 'minecraft:plains'\r\n })\r\n }));\r\n}\r\nexports.initSurfaceRuleSchemas = initSurfaceRuleSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initTemplatePoolSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nrequire(\"./ProcessorList\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nfunction initTemplatePoolSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('template_pool', core_1.Mod(core_1.ObjectNode({\r\n fallback: StringNode(),\r\n elements: core_1.ListNode(Reference('template_weighted_element'))\r\n }, { context: 'template_pool' }), {\r\n default: () => ({\r\n fallback: 'minecraft:empty',\r\n elements: [\r\n {\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n }\r\n ]\r\n })\r\n }));\r\n schemas.register('template_weighted_element', core_1.Mod(core_1.ObjectNode({\r\n weight: core_1.NumberNode({ integer: true, min: 1 }),\r\n element: Reference('template_element')\r\n }, { category: 'pool' }), {\r\n default: () => ({\r\n weight: 1,\r\n element: {\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n }\r\n })\r\n }));\r\n schemas.register('template_element', core_1.Mod(core_1.ObjectNode({\r\n element_type: StringNode({ validator: 'resource', params: { pool: 'worldgen/structure_pool_element' } }),\r\n projection: StringNode({ enum: ['rigid', 'terrain_matching'] }),\r\n [core_1.Switch]: [{ push: 'element_type' }],\r\n [core_1.Case]: {\r\n 'minecraft:feature_pool_element': {\r\n feature: StringNode({ validator: 'resource', params: { pool: '$worldgen/configured_feature' } })\r\n },\r\n 'minecraft:legacy_single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: ProcessorList_1.Processors\r\n },\r\n 'minecraft:list_pool_element': {\r\n elements: core_1.ListNode(Reference('template_element'))\r\n },\r\n 'minecraft:single_pool_element': {\r\n location: StringNode({ validator: 'resource', params: { pool: '$structure' } }),\r\n processors: ProcessorList_1.Processors\r\n }\r\n }\r\n }, { context: 'template_element', disableSwitchContext: true }), {\r\n default: () => ({\r\n element_type: 'minecraft:single_pool_element',\r\n projection: 'rigid',\r\n processors: 'minecraft:empty'\r\n })\r\n }));\r\n}\r\nexports.initTemplatePoolSchemas = initTemplatePoolSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldgenSchemas = void 0;\r\nconst Biome_1 = require(\"./Biome\");\r\nconst Carver_1 = require(\"./Carver\");\r\nconst Decorator_1 = require(\"./Decorator\");\r\nconst Feature_1 = require(\"./Feature\");\r\nconst NoiseSettings_1 = require(\"./NoiseSettings\");\r\nconst ProcessorList_1 = require(\"./ProcessorList\");\r\nconst StructureFeature_1 = require(\"./StructureFeature\");\r\nconst SurfaceRule_1 = require(\"./SurfaceRule\");\r\nconst TemplatePool_1 = require(\"./TemplatePool\");\r\nfunction initWorldgenSchemas(schemas, collections) {\r\n // `ProcessorList.ts` has exports. It should be initialized first. \r\n ProcessorList_1.initProcessorListSchemas(schemas, collections);\r\n Biome_1.initBiomeSchemas(schemas, collections);\r\n Carver_1.initCarverSchemas(schemas, collections);\r\n Decorator_1.initDecoratorSchemas(schemas, collections);\r\n Feature_1.initFeatureSchemas(schemas, collections);\r\n NoiseSettings_1.initNoiseSettingsSchemas(schemas, collections);\r\n StructureFeature_1.initStructureFeatureSchemas(schemas, collections);\r\n SurfaceRule_1.initSurfaceRuleSchemas(schemas, collections);\r\n TemplatePool_1.initTemplatePoolSchemas(schemas, collections);\r\n}\r\nexports.initWorldgenSchemas = initWorldgenSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initWorldSettingsSchemas = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nfunction initWorldSettingsSchemas(schemas, collections) {\r\n const Reference = core_1.Reference.bind(undefined, schemas);\r\n const StringNode = core_1.StringNode.bind(undefined, collections);\r\n schemas.register('world_settings', core_1.Mod(core_1.ObjectNode({\r\n generate_features: core_1.BooleanNode(),\r\n bonus_chest: core_1.BooleanNode(),\r\n seed: core_1.NumberNode({ integer: true }),\r\n dimensions: core_1.MapNode(StringNode({ validator: 'resource', params: { pool: '$dimension' } }), Reference('dimension'))\r\n }, { context: 'world_settings' }), {\r\n default: () => {\r\n const seed = Math.floor(Math.random() * (4294967296)) - 2147483648;\r\n return {\r\n generate_features: true,\r\n bonus_chest: false,\r\n seed,\r\n dimensions: {\r\n 'minecraft:overworld': {\r\n type: 'minecraft:overworld',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:vanilla_layered',\r\n seed\r\n },\r\n settings: 'minecraft:overworld',\r\n }\r\n },\r\n 'minecraft:the_nether': {\r\n type: 'minecraft:the_nether',\r\n generator: {\r\n type: 'minecraft:noise',\r\n seed,\r\n biome_source: {\r\n type: 'minecraft:multi_noise',\r\n seed,\r\n humidity_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n altitude_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n weirdness_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n temperature_noise: {\r\n firstOctave: -7,\r\n amplitudes: [1.0, 1.0]\r\n },\r\n biomes: [\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: 0.0 },\r\n biome: 'minecraft:nether_wastes'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.0, humidity: -0.5 },\r\n biome: 'minecraft:soul_sand_valley'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.0, temperature: 0.4, humidity: 0.0 },\r\n biome: 'minecraft:crimson_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.375, temperature: 0.0, humidity: 0.5 },\r\n biome: 'minecraft:warped_forest'\r\n },\r\n {\r\n parameters: { altitude: 0.0, weirdness: 0.0, offset: 0.175, temperature: -0.5, humidity: 0.0 },\r\n biome: 'minecraft:basalt_deltas'\r\n }\r\n ]\r\n },\r\n settings: 'minecraft:nether'\r\n }\r\n },\r\n 'minecraft:the_end': {\r\n type: \"minecraft:the_end\",\r\n generator: {\r\n type: \"minecraft:noise\",\r\n seed,\r\n biome_source: {\r\n type: \"minecraft:the_end\",\r\n seed\r\n },\r\n settings: \"minecraft:end\"\r\n }\r\n }\r\n }\r\n };\r\n }\r\n }));\r\n}\r\nexports.initWorldSettingsSchemas = initWorldSettingsSchemas;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initSchemas = void 0;\r\nconst Advancement_1 = require(\"./Advancement\");\r\nconst Common_1 = require(\"./Common\");\r\nconst Condition_1 = require(\"./Condition\");\r\nconst Dimension_1 = require(\"./Dimension\");\r\nconst DimensionType_1 = require(\"./DimensionType\");\r\nconst ItemModifier_1 = require(\"./ItemModifier\");\r\nconst LootTable_1 = require(\"./LootTable\");\r\nconst PackMcmeta_1 = require(\"./PackMcmeta\");\r\nconst Predicates_1 = require(\"./Predicates\");\r\nconst Recipe_1 = require(\"./Recipe\");\r\nconst Tags_1 = require(\"./Tags\");\r\nconst TextComponent_1 = require(\"./TextComponent\");\r\nconst worldgen_1 = require(\"./worldgen\");\r\nconst WorldSettings_1 = require(\"./WorldSettings\");\r\nfunction initSchemas(schemas, collections) {\r\n // `Common.ts` is the only file that has exports. It should be initialized first. \r\n Common_1.initCommonSchemas(schemas, collections);\r\n Advancement_1.initAdvancementSchemas(schemas, collections);\r\n Condition_1.initConditionSchemas(schemas, collections);\r\n DimensionType_1.initDimensionTypeSchemas(schemas, collections);\r\n Dimension_1.initDimensionSchemas(schemas, collections);\r\n ItemModifier_1.initItemModifierSchemas(schemas, collections);\r\n LootTable_1.initLootTableSchemas(schemas, collections);\r\n PackMcmeta_1.initPackMcmetaSchemas(schemas, collections);\r\n Predicates_1.initPredicatesSchemas(schemas, collections);\r\n Recipe_1.initRecipeSchemas(schemas, collections);\r\n Tags_1.initTagsSchemas(schemas, collections);\r\n TextComponent_1.initTextComponentSchemas(schemas, collections);\r\n worldgen_1.initWorldgenSchemas(schemas, collections);\r\n WorldSettings_1.initWorldSettingsSchemas(schemas, collections);\r\n}\r\nexports.initSchemas = initSchemas;\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getSchemas = exports.getCollections = void 0;\r\nconst core_1 = require(\"@mcschema/core\");\r\nconst Collections_1 = require(\"./Collections\");\r\nconst schemas_1 = require(\"./schemas\");\r\nexports.lootContext = __importStar(require(\"./LootContext\"));\r\nfunction getCollections() {\r\n const collections = new core_1.CollectionRegistry();\r\n Collections_1.initCollections(collections);\r\n return collections;\r\n}\r\nexports.getCollections = getCollections;\r\n/**\r\n * @param collections The CollectionRegistry for this version. Note that apart from\r\n * the built-in collections, the client of this module is responsible for futhermore\r\n * adding the vanilla registries to it: the collection IDs shouldn't contain the\r\n * namespace (`minecraft:`) part, while the values within the collections should.\r\n *\r\n * @example\r\n * for (const key in VANILLA_REGISTRIES>) {\r\n * collections.register(\r\n * key.replace(/^minecraft:/, ''),\r\n * Object.keys(VANILLA_REGISTRIES[key].entries)\r\n * )\r\n * }\r\n */\r\nfunction getSchemas(collections) {\r\n const schemas = new core_1.SchemaRegistry();\r\n schemas_1.initSchemas(schemas, collections);\r\n return schemas;\r\n}\r\nexports.getSchemas = getSchemas;\r\n","'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n if (cur instanceof Buffer) {\n return Buffer.from(cur)\n }\n\n return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n opts = opts || {}\n\n if (opts.circles) return rfdcCircles(opts)\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n a2[k] = fn(cur)\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = clone(cur)\n }\n }\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n return o2\n }\n}\n\nfunction rfdcCircles (opts) {\n var refs = []\n var refsNew = []\n\n return opts.proto ? cloneProto : clone\n\n function cloneArray (a, fn) {\n var keys = Object.keys(a)\n var a2 = new Array(keys.length)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n var cur = a[k]\n if (typeof cur !== 'object' || cur === null) {\n a2[k] = cur\n } else if (cur instanceof Date) {\n a2[k] = new Date(cur)\n } else if (ArrayBuffer.isView(cur)) {\n a2[k] = copyBuffer(cur)\n } else {\n var index = refs.indexOf(cur)\n if (index !== -1) {\n a2[k] = refsNew[index]\n } else {\n a2[k] = fn(cur)\n }\n }\n }\n return a2\n }\n\n function clone (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, clone)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n if (Object.hasOwnProperty.call(o, k) === false) continue\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), clone))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), clone))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = clone(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n\n function cloneProto (o) {\n if (typeof o !== 'object' || o === null) return o\n if (o instanceof Date) return new Date(o)\n if (Array.isArray(o)) return cloneArray(o, cloneProto)\n if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n var o2 = {}\n refs.push(o)\n refsNew.push(o2)\n for (var k in o) {\n var cur = o[k]\n if (typeof cur !== 'object' || cur === null) {\n o2[k] = cur\n } else if (cur instanceof Date) {\n o2[k] = new Date(cur)\n } else if (cur instanceof Map) {\n o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n } else if (cur instanceof Set) {\n o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n } else if (ArrayBuffer.isView(cur)) {\n o2[k] = copyBuffer(cur)\n } else {\n var i = refs.indexOf(cur)\n if (i !== -1) {\n o2[k] = refsNew[i]\n } else {\n o2[k] = cloneProto(cur)\n }\n }\n }\n refs.pop()\n refsNew.pop()\n return o2\n }\n}\n","import{useState as n,useReducer as t,useEffect as e,useLayoutEffect as r,useRef as u,useImperativeHandle as o,useMemo as i,useCallback as l,useContext as f,useDebugValue as c}from\"preact/hooks\";export*from\"preact/hooks\";import{Component as a,createElement as s,options as h,toChildArray as p,Fragment as v,render as d,hydrate as m,cloneElement as y,createRef as b,createContext as _}from\"preact\";export{createElement,createContext,createRef,Fragment,Component}from\"preact\";function C(n,t){for(var e in t)n[e]=t[e];return n}function S(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function E(n){this.props=n}function g(n,t){function e(n){var e=this.props.ref,r=e==n.ref;return!r&&e&&(e.call?e(null):e.current=null),t?!t(this.props,n)||!r:S(this.props,n)}function r(t){return this.shouldComponentUpdate=e,s(n,t)}return r.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",r.prototype.isReactComponent=!0,r.__f=!0,r}(E.prototype=new a).isPureReactComponent=!0,E.prototype.shouldComponentUpdate=function(n,t){return S(this.props,n)||S(this.state,t)};var w=h.__b;h.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),w&&w(n)};var R=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function x(n){function t(t,e){var r=C({},t);return delete r.ref,n(r,(e=t.ref||e)&&(\"object\"!=typeof e||\"current\"in e)?e:null)}return t.$$typeof=R,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var N=function(n,t){return null==n?null:p(p(n).map(t))},k={map:N,forEach:N,count:function(n){return n?p(n).length:0},only:function(n){var t=p(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:p},A=h.__e;h.__e=function(n,t,e){if(n.then)for(var r,u=t;u=u.__;)if((r=u.__c)&&r.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),r.__c(n,t);A(n,t,e)};var O=h.unmount;function L(){this.__u=0,this.t=null,this.__b=null}function U(n){var t=n.__.__c;return t&&t.__e&&t.__e(n)}function D(n){var t,e,r;function u(u){if(t||(t=n()).then(function(n){e=n.default||n},function(n){r=n}),r)throw r;if(!e)throw t;return s(e,u)}return u.displayName=\"Lazy\",u.__f=!0,u}function F(){this.u=null,this.o=null}h.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),O&&O(n)},(L.prototype=new a).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=U(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__e){var n=r.state.__e;r.__v.__k[0]=function n(t,e,r){return t&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)}),t.__c&&t.__c.__P===e&&(t.__e&&r.insertBefore(t.__e,t.__d),t.__c.__e=!0,t.__c.__P=r)),t}(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate()}},f=!0===t.__h;r.__u++||f||r.setState({__e:r.__b=r.__v.__k[0]}),n.then(i,i)},L.prototype.componentWillUnmount=function(){this.t=[]},L.prototype.render=function(n,t){if(this.__b){if(this.__v.__k){var e=document.createElement(\"div\"),r=this.__v.__k[0].__c;this.__v.__k[0]=function n(t,e,r){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),t.__c.__H=null),null!=(t=C({},t)).__c&&(t.__c.__P===r&&(t.__c.__P=e),t.__c=null),t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)})),t}(this.__b,e,r.__O=r.__P)}this.__b=null}var u=t.__e&&s(v,null,n.fallback);return u&&(u.__h=null),[s(v,null,t.__e?null:n.children),u]};var M=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),t.i.removeChild(n)}}),d(s(T,{context:t.context},n.__v),t.l)):t.l&&t.componentWillUnmount()}function I(n,t){return s(j,{__v:n,i:t})}(F.prototype=new a).__e=function(n){var t=this,e=U(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),M(t,n,r)):u()};e?e(o):o()}},F.prototype.render=function(n){this.u=null,this.o=new Map;var t=p(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},F.prototype.componentDidUpdate=F.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){M(n,e,t)})};var W=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,P=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,V=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function z(n,t,e){return null==t.__k&&(t.textContent=\"\"),d(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function B(n,t,e){return m(n,t),\"function\"==typeof e&&e(),n?n.__c:null}a.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(n){Object.defineProperty(a.prototype,n,{configurable:!0,get:function(){return this[\"UNSAFE_\"+n]},set:function(t){Object.defineProperty(this,n,{configurable:!0,writable:!0,value:t})}})});var H=h.event;function Z(){}function Y(){return this.cancelBubble}function $(){return this.defaultPrevented}h.event=function(n){return H&&(n=H(n)),n.persist=Z,n.isPropagationStopped=Y,n.isDefaultPrevented=$,n.nativeEvent=n};var q,G={configurable:!0,get:function(){return this.class}},J=h.vnode;h.vnode=function(n){var t=n.type,e=n.props,r=e;if(\"string\"==typeof t){for(var u in r={},e){var o=e[u];\"value\"===u&&\"defaultValue\"in e&&null==o||(\"defaultValue\"===u&&\"value\"in e&&null==e.value?u=\"value\":\"download\"===u&&!0===o?o=\"\":/ondoubleclick/i.test(u)?u=\"ondblclick\":/^onchange(textarea|input)/i.test(u+t)&&!V(e.type)?u=\"oninput\":/^on(Ani|Tra|Tou|BeforeInp)/.test(u)?u=u.toLowerCase():P.test(u)?u=u.replace(/[A-Z0-9]/,\"-$&\").toLowerCase():null===o&&(o=void 0),r[u]=o)}\"select\"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=p(e.children).forEach(function(n){n.props.selected=-1!=r.value.indexOf(n.props.value)})),\"select\"==t&&null!=r.defaultValue&&(r.value=p(e.children).forEach(function(n){n.props.selected=r.multiple?-1!=r.defaultValue.indexOf(n.props.value):r.defaultValue==n.props.value})),n.props=r}t&&e.class!=e.className&&(G.enumerable=\"className\"in e,null!=e.className&&(r.class=e.className),Object.defineProperty(r,\"className\",G)),n.$$typeof=W,J&&J(n)};var K=h.__r;h.__r=function(n){K&&K(n),q=n.__c};var Q={ReactCurrentDispatcher:{current:{readContext:function(n){return q.__n[n.__c].props.value}}}},X=1,nn=2,tn=3,en=4,rn=5;function un(n,t){return t()}var on=\"object\"==typeof performance&&\"function\"==typeof performance.now?performance.now.bind(performance):function(){return Date.now()},ln=\"16.8.0\";function fn(n){return s.bind(null,n)}function cn(n){return!!n&&n.$$typeof===W}function an(n){return cn(n)?y.apply(null,arguments):n}function sn(n){return!!n.__k&&(d(null,n),!0)}function hn(n){return n&&(n.base||1===n.nodeType&&n)||null}var pn=function(n,t){return n(t)},vn=v;export default{useState:n,useReducer:t,useEffect:e,useLayoutEffect:r,useRef:u,useImperativeHandle:o,useMemo:i,useCallback:l,useContext:f,useDebugValue:c,version:\"16.8.0\",Children:k,render:z,hydrate:B,unmountComponentAtNode:sn,createPortal:I,createElement:s,createContext:_,createFactory:fn,cloneElement:an,createRef:b,Fragment:v,isValidElement:cn,findDOMNode:hn,Component:a,PureComponent:E,memo:g,forwardRef:x,unstable_batchedUpdates:pn,StrictMode:v,Suspense:L,SuspenseList:F,lazy:D,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Q};export{ln as version,k as Children,z as render,B as hydrate,sn as unmountComponentAtNode,I as createPortal,fn as createFactory,an as cloneElement,cn as isValidElement,hn as findDOMNode,E as PureComponent,g as memo,x as forwardRef,pn as unstable_batchedUpdates,vn as StrictMode,L as Suspense,F as SuspenseList,D as lazy,Q as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,X as unstable_ImmediatePriority,nn as unstable_UserBlockingPriority,tn as unstable_NormalPriority,en as unstable_LowPriority,rn as unstable_IdlePriority,un as unstable_runWithPriority,on as unstable_now};\n//# sourceMappingURL=compat.module.js.map\n","/*!\n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/([0-6].)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, ∞]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape$3(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape$1(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit$1(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl$1(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape$1(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim$1(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest$1 = { exec: function noopTest() {} };\n\nfunction merge$2(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells$1(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) { cells.shift(); }\n if (!cells[cells.length - 1].trim()) { cells.pop(); }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim$1(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket$1(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation$1(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\nfunction repeatString$1(pattern, count) {\n if (count < 1) {\n return '';\n }\n let result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\n\nvar helpers = {\n escape: escape$3,\n unescape: unescape$1,\n edit: edit$1,\n cleanUrl: cleanUrl$1,\n resolveUrl,\n noopTest: noopTest$1,\n merge: merge$2,\n splitCells: splitCells$1,\n rtrim: rtrim$1,\n findClosingBracket: findClosingBracket$1,\n checkSanitizeDeprecation: checkSanitizeDeprecation$1,\n repeatString: repeatString$1\n};\n\nconst { defaults: defaults$4 } = defaults$5.exports;\nconst {\n rtrim,\n splitCells,\n escape: escape$2,\n findClosingBracket\n} = helpers;\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape$2(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text, [])\n };\n lexer.state.inLink = false;\n return token;\n } else {\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape$2(text)\n };\n }\n}\n\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nvar Tokenizer_1$1 = class Tokenizer {\n constructor(options) {\n this.options = options || defaults$4;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n return { raw: '\\n' };\n }\n }\n\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *> ?/gm, '');\n\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text\n };\n }\n }\n\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, lines, itemContents;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?: [^\\\\n]*| *)(?:\\\\n[^\\\\n]*)*(?:\\\\n|$))`);\n\n // Get each top-level item\n while (src) {\n if (this.rules.block.hr.test(src)) { // End list if we encounter an HR (possibly move into itemRegex?)\n break;\n }\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n lines = cap[2].split('\\n');\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = lines[0].trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = cap[1].length + (indent > 4 ? 1 : indent); // intented code blocks after 4 spaces; indent is always 1\n itemContents = lines[0].slice(indent - cap[1].length);\n }\n\n blankLine = false;\n raw = cap[0];\n\n if (!lines[0] && /^ *$/.test(lines[1])) { // items begin with at most one blank line\n raw = cap[1] + lines.slice(0, 2).join('\\n') + '\\n';\n list.loose = true;\n lines = [];\n }\n\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])`);\n\n for (i = 1; i < lines.length; i++) {\n line = lines[i];\n\n if (this.options.pedantic) { // Re-align to follow commonmark nesting rules\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(line)) {\n raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n break;\n }\n\n // Until we encounter a blank line, item contents do not need indentation\n if (!blankLine) {\n if (!line.trim()) { // Check if current line is empty\n blankLine = true;\n }\n\n // Dedent if possible\n if (line.search(/[^ ]/) >= indent) {\n itemContents += '\\n' + line.slice(indent);\n } else {\n itemContents += '\\n' + line;\n }\n continue;\n }\n\n // Dedent this line\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n itemContents += '\\n' + line.slice(indent);\n continue;\n } else { // Line was not properly indented; end of this item\n raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n break;\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n src = src.slice(raw.length);\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (list.items[i].tokens.some(t => t.type === 'space')) {\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape$2(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => { return { text: c }; }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = [];\n this.lexer.inlineTokens(item.header[j].text, item.header[j].tokens);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = [];\n this.lexer.inlineTokens(row[k].text, row[k].tokens);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n const token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape$2(cap[1])\n };\n }\n }\n\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape$2(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link || !link.href) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = src.slice(1, lLength + match.index + rLength);\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape$2(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2], [])\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$2(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape$2(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$2(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape$2(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape$2(cap[0])) : cap[0];\n } else {\n text = escape$2(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n};\n\nconst {\n noopTest,\n edit,\n merge: merge$1\n} = helpers;\n\n/**\n * Block-Level Grammar\n */\nconst block$1 = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)( [^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock$1._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock$1._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock$1.def = edit(block$1.def)\n .replace('label', block$1._label)\n .replace('title', block$1._title)\n .getRegex();\n\nblock$1.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock$1.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block$1.bullet)\n .getRegex();\n\nblock$1.list = edit(block$1.list)\n .replace(/bull/g, block$1.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block$1.def.source + ')')\n .getRegex();\n\nblock$1._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock$1._comment = /|$)/;\nblock$1.html = edit(block$1.html, 'i')\n .replace('comment', block$1._comment)\n .replace('tag', block$1._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock$1.paragraph = edit(block$1._paragraph)\n .replace('hr', block$1.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block$1._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock$1.blockquote = edit(block$1.blockquote)\n .replace('paragraph', block$1.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock$1.normal = merge$1({}, block$1);\n\n/**\n * GFM Block Grammar\n */\n\nblock$1.gfm = merge$1({}, block$1.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n});\n\nblock$1.gfm.table = edit(block$1.gfm.table)\n .replace('hr', block$1.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock$1.pedantic = merge$1({}, block$1.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block$1._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block$1.normal._paragraph)\n .replace('hr', block$1.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block$1.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline$1 = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan delim inside strong (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\ninline$1.punctuation = edit(inline$1.punctuation).replace(/punctuation/g, inline$1._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline$1.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\ninline$1.escapedEmSt = /\\\\\\*|\\\\_/g;\n\ninline$1._comment = edit(block$1._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline$1.emStrong.lDelim = edit(inline$1.emStrong.lDelim)\n .replace(/punct/g, inline$1._punctuation)\n .getRegex();\n\ninline$1.emStrong.rDelimAst = edit(inline$1.emStrong.rDelimAst, 'g')\n .replace(/punct/g, inline$1._punctuation)\n .getRegex();\n\ninline$1.emStrong.rDelimUnd = edit(inline$1.emStrong.rDelimUnd, 'g')\n .replace(/punct/g, inline$1._punctuation)\n .getRegex();\n\ninline$1._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline$1._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline$1._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline$1.autolink = edit(inline$1.autolink)\n .replace('scheme', inline$1._scheme)\n .replace('email', inline$1._email)\n .getRegex();\n\ninline$1._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline$1.tag = edit(inline$1.tag)\n .replace('comment', inline$1._comment)\n .replace('attribute', inline$1._attribute)\n .getRegex();\n\ninline$1._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline$1._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline$1._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline$1.link = edit(inline$1.link)\n .replace('label', inline$1._label)\n .replace('href', inline$1._href)\n .replace('title', inline$1._title)\n .getRegex();\n\ninline$1.reflink = edit(inline$1.reflink)\n .replace('label', inline$1._label)\n .getRegex();\n\ninline$1.reflinkSearch = edit(inline$1.reflinkSearch, 'g')\n .replace('reflink', inline$1.reflink)\n .replace('nolink', inline$1.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline$1.normal = merge$1({}, inline$1);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline$1.pedantic = merge$1({}, inline$1.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline$1._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline$1._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline$1.gfm = merge$1({}, inline$1.normal, {\n escape: edit(inline$1.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nvar Lexer_1$1 = class Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults$3;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer$2();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/^ +$/gm, '');\n }\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.type) {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src, tokens) {\n this.inlineQueue.push({ src, tokens });\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n};\n\nconst { defaults: defaults$2 } = defaults$5.exports;\nconst {\n cleanUrl,\n escape: escape$1\n} = helpers;\n\n/**\n * Renderer\n */\nvar Renderer_1$1 = class Renderer {\n constructor(options) {\n this.options = options || defaults$2;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape$1(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape$1(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote) {\n return '
    \\n' + quote + '
    \\n';\n }\n\n html(html) {\n return html;\n }\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + '\\n';\n }\n // ignore IDs\n return '' + text + '\\n';\n }\n\n hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text) {\n return '
  • ' + text + '
  • \\n';\n }\n\n checkbox(checked) {\n return ' ';\n }\n\n paragraph(text) {\n return '

    ' + text + '

    \\n';\n }\n\n table(header, body) {\n if (body) body = '' + body + '';\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content) {\n return '\\n' + content + '\\n';\n }\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n }\n\n // span level renderer\n strong(text) {\n return '' + text + '';\n }\n\n em(text) {\n return '' + text + '';\n }\n\n codespan(text) {\n return '' + text + '';\n }\n\n br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text) {\n return '' + text + '';\n }\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '\"'' : '>';\n return out;\n }\n\n text(text) {\n return text;\n }\n};\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\n\nvar TextRenderer_1$1 = class TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n};\n\n/**\n * Slugger generates header id\n */\n\nvar Slugger_1$1 = class Slugger {\n constructor() {\n this.seen = {};\n }\n\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} options\n * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n};\n\nconst Renderer$2 = Renderer_1$1;\nconst TextRenderer$2 = TextRenderer_1$1;\nconst Slugger$2 = Slugger_1$1;\nconst { defaults: defaults$1 } = defaults$5.exports;\nconst {\n unescape\n} = helpers;\n\n/**\n * Parsing & Compiling\n */\nvar Parser_1$1 = class Parser {\n constructor(options) {\n this.options = options || defaults$1;\n this.options.renderer = this.options.renderer || new Renderer$2();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer$2();\n this.slugger = new Slugger$2();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens),\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens),\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens),\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n};\n\nconst Lexer$1 = Lexer_1$1;\nconst Parser$1 = Parser_1$1;\nconst Tokenizer$1 = Tokenizer_1$1;\nconst Renderer$1 = Renderer_1$1;\nconst TextRenderer$1 = TextRenderer_1$1;\nconst Slugger$1 = Slugger_1$1;\nconst {\n merge,\n checkSanitizeDeprecation,\n escape\n} = helpers;\nconst {\n getDefaults,\n changeDefaults,\n defaults\n} = defaults$5.exports;\n\n/**\n * Marked\n */\nfunction marked$1(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked$1.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n\n try {\n tokens = Lexer$1.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n const done = function(err) {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked$1.walkTokens(tokens, opt.walkTokens);\n }\n out = Parser$1.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n marked$1.walkTokens(tokens, function(token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function(err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n const tokens = Lexer$1.lex(src, opt);\n if (opt.walkTokens) {\n marked$1.walkTokens(tokens, opt.walkTokens);\n }\n return Parser$1.parse(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked$1.options =\nmarked$1.setOptions = function(opt) {\n merge(marked$1.defaults, opt);\n changeDefaults(marked$1.defaults);\n return marked$1;\n};\n\nmarked$1.getDefaults = getDefaults;\n\nmarked$1.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked$1.use = function(...args) {\n const opts = merge({}, ...args);\n const extensions = marked$1.defaults.extensions || { renderers: {}, childTokens: {} };\n let hasExtensions;\n\n args.forEach((pack) => {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) { // Renderer extensions\n const prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = marked$1.defaults.renderer || new Renderer$1();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args) => {\n let ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked$1.defaults.tokenizer || new Tokenizer$1();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked$1.defaults.walkTokens;\n opts.walkTokens = function(token) {\n pack.walkTokens.call(this, token);\n if (walkTokens) {\n walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked$1.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked$1.walkTokens = function(tokens, callback) {\n for (const token of tokens) {\n callback.call(marked$1, token);\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n marked$1.walkTokens(cell.tokens, callback);\n }\n for (const row of token.rows) {\n for (const cell of row) {\n marked$1.walkTokens(cell.tokens, callback);\n }\n }\n break;\n }\n case 'list': {\n marked$1.walkTokens(token.items, callback);\n break;\n }\n default: {\n if (marked$1.defaults.extensions && marked$1.defaults.extensions.childTokens && marked$1.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n marked$1.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n marked$1.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked$1.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n};\n\n/**\n * Parse Inline\n */\nmarked$1.parseInline = function(src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked$1.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n const tokens = Lexer$1.lexInline(src, opt);\n if (opt.walkTokens) {\n marked$1.walkTokens(tokens, opt.walkTokens);\n }\n return Parser$1.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n};\n\n/**\n * Expose\n */\nmarked$1.Parser = Parser$1;\nmarked$1.parser = Parser$1.parse;\nmarked$1.Renderer = Renderer$1;\nmarked$1.TextRenderer = TextRenderer$1;\nmarked$1.Lexer = Lexer$1;\nmarked$1.lexer = Lexer$1.lex;\nmarked$1.Tokenizer = Tokenizer$1;\nmarked$1.Slugger = Slugger$1;\nmarked$1.parse = marked$1;\n\nvar marked_1 = marked$1;\n\nconst marked = marked_1;\nconst Lexer = Lexer_1$1;\nconst Parser = Parser_1$1;\nconst Tokenizer = Tokenizer_1$1;\nconst Renderer = Renderer_1$1;\nconst TextRenderer = TextRenderer_1$1;\nconst Slugger = Slugger_1$1;\n\nesmEntry$1.exports = marked;\nvar parse = esmEntry$1.exports.parse = marked;\nvar Parser_1 = esmEntry$1.exports.Parser = Parser;\nvar parser = esmEntry$1.exports.parser = Parser.parse;\nvar Renderer_1 = esmEntry$1.exports.Renderer = Renderer;\nvar TextRenderer_1 = esmEntry$1.exports.TextRenderer = TextRenderer;\nvar Lexer_1 = esmEntry$1.exports.Lexer = Lexer;\nvar lexer = esmEntry$1.exports.lexer = Lexer.lex;\nvar Tokenizer_1 = esmEntry$1.exports.Tokenizer = Tokenizer;\nvar Slugger_1 = esmEntry$1.exports.Slugger = Slugger;\n\nvar esmEntry = esmEntry$1.exports;\n\nexport { Lexer_1 as Lexer, Parser_1 as Parser, Renderer_1 as Renderer, Slugger_1 as Slugger, TextRenderer_1 as TextRenderer, Tokenizer_1 as Tokenizer, esmEntry as default, lexer, parse, parser };\n"],"names":["n","u","i","t","r","f","e","n2","l2","u2","parentNode","removeChild","i2","t2","o2","r2","arguments","f2","length","push","children","defaultProps","v","type","props","key","ref","__k","__","__b","__e","__d","__c","__h","constructor","__v","vnode","this","context","d","indexOf","base","_","b","__r","debounceRendering","sort","n3","some","__P","c","I","__n","ownerSVGElement","T","e2","c2","s2","a2","h","p2","_2","k2","b2","m2","w2","A2","P2","Array","isArray","y","g","x","value","L","appendChild","nextSibling","insertBefore","setProperty","test","style","cssText","P","replace","toLowerCase","slice","l","addEventListener","H","$","removeEventListener","setAttribute","removeAttribute","event","v2","d2","g2","x2","contextType","__E","prototype","render","p","M","sub","state","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","forEach","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","m","y2","localName","nodeType","document","createTextNode","createElementNS","createElement","is","data","call","childNodes","dangerouslySetInnerHTML","attributes","name","__html","innerHTML","C","A","firstChild","s","checked","j","diffed","l3","u3","current","unmount","z","componentWillUnmount","a","getDerivedStateFromError","setState","componentDidCatch","k","forceUpdate","Promise","then","bind","resolve","setTimeout","EMPTY$1","obj","url","route2","opts","ret","reg","match","matches","split","decodeURIComponent","join","segmentize","max","Math","i$12","charAt","param","flags","plus","star","val","map","default","rank","index","path","rankSegment","rankChild","segment","customHistory","ROUTERS","subscribers","EMPTY","location","getCurrentLocation","pathname","search","canRoute","history","routeTo","didRoute","node","getAttribute","href","target","route","ctrlKey","metaKey","altKey","shiftKey","button","currentTarget","prevent","stopImmediatePropagation","stopPropagation","preventDefault","String","nodeName","toUpperCase","hasAttribute","routeFromLink","eventListenersInitialized","Router","Component$$1","getCurrentUrl","delegateLinkHandler","__proto__","Object","create","Router2","static","onChange","toChildArray","getMatchingChildren","updating","this$1","unlisten","listen","location2","splice","invoke","filter","prepareVNodeForRanking","pathRankSort","exec","newProps","cloneElement","Boolean","ref$1","active","previous","previousUrl","router","Component","Link","assign","onClick","handleLinkClick","Route","component","o","__H","w","requestAnimationFrame","t3","cancelAnimationFrame","defineProperty","Path_1","start","relativePath2","reduce","pop","[object Object]","modelArr","contextArr","end","Path","element","modelPush","contextPush","copy","newElement","startsWith","model","ModelPath","other","every","offset","fn","thisArg","_a","get","set","super","shift","Errors_1","errors","error","params","exact","equals","Symbol","iterator","Errors","str","utils","escapeString","dec2hex","dec","toString","substr","arr","Uint8Array","crypto","getRandomValues","from","DataModel_1","require$$0","require$$1","utils_1","require$$2","schema","options","_b","_c","_d","historyMax","verbose","wrapLists","initialData","DataModel","listeners","JSON","stringify","historyIndex","listener","newHistory","silentInvalidate","invalidated","loose","validate","invalidate","silent","getArray","reset","id","hexId","isNaN","last","log","parse","withModel","clear","tempErrors","add","res","entries","unwrapLists","exports","category","enabled","keep","optional","pathPush","suggest","validationOption","hook","args","canUpdate","update","mods","__spreadValues","Mod","__spreadProps","BooleanNode","Node_1","Base","boolean","ListNode","config","min","minLength","maxLength","Infinity","between","nextIndex","navigate","parseInt","newObj","_a2","list","SwitchNode","cases","activeCase","concat","fallback","sorter","priority","matchedCases","ListNode_1","SwitchNode_1","choices","switchNode","choice","isValid","XOrList","ChoiceNode","change","presetNode","objectNode","presets","keys","MapNode","validation","NumberNode","integer","color","Number","isInteger","number","Node_12","Path_12","Errors_12","utils_12","require$$3","DataModel_12","require$$4","fields","Switch","Case","defaultFields","__restKey","getActiveFields","switchValue","relativePath","getChildModelPath","childKey","caseFields","caseKeys","pathWithContext","getModel","disableSwitchContext","includes","pathElements","activeFields","existingKeys","quoteString","filterPath","filterField","activeKeys","forcedKeys","Set","newValue","object","Reference","schemas2","transform","StringNode","isEnum","enum","isValidator","validator","collections","getValues","pool","allowTag","isDefinition","allowUnknown","additional","values","string","Hook","Registries","registry","warn","ValidationOption","__createBinding2","__createBinding","k22","enumerable","__exportStar","exports2","hasOwnProperty","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","buf","len","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","zero$1","static_dtree","D_CODES$1","_dist_code","_length_code","MAX_MATCH$1","base_length","base_dist","static_tree","extra_bits","extra_base","elems","max_length","has_stree","static_l_desc","static_d_desc","static_bl_desc","dyn_tree","stat_desc","max_code","d_code","dist","put_short","pending_buf","pending","send_bits","bi_valid","bi_buf","send_code","tree","bi_reverse","code","gen_codes","bl_count","next_code","MAX_BITS$1","bits","init_block","LITERALS$1","dyn_ltree","dyn_dtree","bl_tree","END_BLOCK","opt_len","static_len","last_lit","bi_windup","smaller","depth","_n2","_m2","pqdownheap","heap","j2","heap_len","compress_block","ltree","dtree","lc","extra","lx","d_buf","l_buf","build_tree","desc","stree","heap_max","xbits","overflow","scan_tree","curlen","prevlen","nextlen","count","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","_tr_stored_block$1","stored_len","header","window","subarray","trees","_tr_init","LENGTH_CODES$1","L_CODES$1","StaticTreeDesc","l_desc","TreeDesc","d_desc","bl_desc","_tr_stored_block","_tr_flush_block","opt_lenb","static_lenb","max_blindex","level","strm","data_type","black_mask","detect_data_type","BL_CODES$1","build_bl_tree","strategy","lcodes","dcodes","blcodes","rank2","_tr_tally","lit_bufsize","_tr_align","STATIC_TREES","adler32_1","adler","pos","s1","crcTable","Uint32Array","table","makeTable","crc32_1","crc","messages","2","1","0","-1","-2","-3","-4","-5","-6","constants$2","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","Z_NO_FLUSH$2","Z_FULL_FLUSH$1","Z_FINISH$3","Z_BLOCK$1","Z_OK$3","Z_STREAM_END$3","Z_STREAM_ERROR$2","Z_DATA_ERROR$2","Z_BUF_ERROR$1","Z_DEFAULT_COMPRESSION$1","Z_DEFAULT_STRATEGY$1","Z_DEFLATED$2","err","errorCode","msg","zero","HASH","prev","hash_shift","hash_mask","flush_pending","avail_out","output","pending_out","next_out","total_out","flush_block_only","block_start","strstart","put_byte","putShortMSB","read_buf","size","avail_in","input","next_in","wrap","total_in","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","limit","w_size","MAX_MATCH","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","_w_size","more","window_size","hash_size","head","insert","ins_h","deflate_fast","flush","hash_head","bflush","match_length","max_lazy_match","MIN_MATCH","deflate_slow","max_insert","prev_match","match_available","good_length","max_lazy","nice_length","max_chain","func","configuration_table","Config","max_block_size","pending_buf_size","max_start","status","gzhead","gzindex","method","last_flush","w_bits","hash_bits","Uint16Array","HEAP_SIZE","MAX_BITS","deflateResetKeep","deflateReset","deflateInit2","windowBits","memLevel","DeflateState","deflate_1$2","deflateInit","deflateSetHeader","deflate","beg","old_flush","text","hcrc","comment","time","os","level_flags","charCodeAt","bstate","deflate_huff","deflate_rle","deflateEnd","deflateSetDictionary","dictionary","dictLength","tmpDict","avail","next","deflateInfo","_has","common","sources","source","TypeError","chunks","result","chunk","STR_APPLY_UIA_OK","fromCharCode","apply","_utf8len","q2","strings","TextEncoder","encode","c22","m_pos","str_len","buf_len","TextDecoder","decode","out","utf16buf","c_len","buf2binstring","zstream","toString$1","Z_NO_FLUSH$1","Z_FINISH$2","Z_OK$2","Z_STREAM_END$2","Z_DEFLATED$1","chunkSize","opt","raw","gzip","ended","Error","dict","_dict_set","Deflate$1","flush_mode","_flush_mode","onData","onEnd","inffast","_in","_out","dmax","wsize","whave","wnext","s_window","hold","lcode","dcode","lmask","dmask","here","op","from_source","lencode","distcode","lenbits","distbits","mode","sane","lbase","lext","dbase","dext","inftrees","lens","lens_index","codes","table_index","work","incr","fill","low","mask","sym","root","curr","drop","left","used","huff","base_index","MAXBITS","offs","here_bits","here_op","here_val","extra_index","Z_FINISH$1","Z_OK$1","Z_STREAM_END$1","Z_NEED_DICT$1","Z_STREAM_ERROR$1","Z_DATA_ERROR$1","Z_MEM_ERROR$1","zswap32","havedict","check","total","wbits","ncode","nlen","ndist","have","lendyn","distdyn","back","was","inflateResetKeep","Int32Array","inflateReset","inflateReset2","inflateInit2","InflateState","lenfix","distfix","virgin","fixedtables","updatewindow","src","inflate_1$2","inflateInit","inflate","put","last_bits","last_op","last_val","hbuf","order","done","xflags","extra_len","inflateEnd","inflateGetHeader","inflateSetDictionary","dictid","inflateInfo","gzheader","to","Inflate$1","last_avail_out","next_out_utf8","tail","utf8str","base64map","crypt","rotl","rotr","endian","randomBytes","bytes","floor","random","bytesToWords","words","wordsToBytes","bytesToHex","hex","hexToBytes","bytesToBase64","base64","triplet","base64ToBytes","imod4","pow","charenc","utf8","stringToBytes","bin","unescape","encodeURIComponent","bytesToString","escape","charenc_1","isBuffer_1","readFloatLE","isBuffer","isSlowBuffer","_isBuffer","isBuffer2","md5","message","encoding","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","digestbytes","asBytes","asString","UP","DOWN","NORTH","EAST","SOUTH","WEST","E","R","ht","Pt","Et","At","Ct","Rt","Nt","kt","Tt","_t","ALL","normal","towards","readNumber","readInt","readString","readBoolean","readObject","readArray","e3","t4","readMap","fromEntries","compose","properties","S","N","Name","Properties","AIR","minY","storage","SIZE","palette","findIndex","WIDTH","height","sections","sectionsCount","maxY","maxSection","minSection","getSectionIndex","getBlockState","getOrCreateSection","setBlockState","fromBlockPos","fromLong","BigInt","minBlockX","minBlockZ","maxBlockX","maxBlockZ","seed","setSeed","V","nextLong","MULTIPLIER","MODULUS_MASK","INCREMENT","advance","MODULUS_BITS","FLOAT_MULTIPLIER","DOUBLE_MULTIPLIER","W","upgradeSeedTo128bit","SILVER_RATIO_64","GOLDEN_RATIO_64","mixStafford13","getSeed","LongfromBytes","rotateLeft","o3","nextBits","xo","nextDouble","yo","zo","nextInt","Y","F2","G2","getCornerNoise3D","S2","B","I2","E2","C2","R2","N2","gradDot","GRADIENT","sqrt","sampleAndLerp","D","U","fork","noiseLevels","i3","J","forkWithHashOf","consume","amplitudes","lowestFreqInputFactor","lowestFreqValueFactor","sample","Z","cellWidth","cellHeight","minLimitNoise","maxLimitNoise","mainNoise","xzScale","yScale","xzMainScale","xzFactor","yMainScale","yFactor","getOctaveNoise","o4","a3","X","fromJson","xz_scale","y_scale","xz_factor","y_factor","firstOctave","first","second","valueFactor","G","INPUT_FACTOR","q","K","coordinate","points","s3","derivative","addPoint","locations","derivatives","toJson","rotate","up","down","north","east","south","west","r3","parameters","Param","temperature","humidity","continentalness","erosion","weirdness","O","distance","ParamPoint","TargetPoint","Parameters","things","build","CHILDREN_PER_NODE","e4","e5","i4","s4","space","abs","bucketize","area","toArray","thing","RTree","RNode","buildSpace","union","RSubTree","RLeaf","biome","Ot","offsetSampler","factorSampler","jaggednessSampler","Lt","EXTRACTOR","factor","jaggedness","GLOBAL_OFFSET","continents","ridges","peaksAndValleys","buildErosionOffsetSpline","CONTINENTS","getErosionFactor","buildErosionJaggednessSpline","WEIRDNESS","EROSION","RIDGES","buildMountainRidgeSplineWithPoints","ridgeSpline","mountainContinentalness","calculateMountainRidgeZeroContinentalnessPoint","calculateSlope","buildRidgeJaggednessSpline","buildWeirdnessJaggednessSpline","extractor","fromList","filler","noise000","noise001","noise100","noise101","noise010","noise011","noise110","noise111","valueXZ00","valueXZ10","valueXZ01","valueXZ11","valueZ0","valueZ1","slice0","Dt","allocateSlice","cellCountY","cellCountXZ","slice1","fillSlice","firstCellX","firstCellZ","cellCountNoiseMinY","interpolators","terrainInfo","Map","shiftedX","shiftedZ","terrainInfoBuffer","baseNoise","makeBaseNoiseFiller","initializeForFirstCellX","advanceCellX","selectCellYZ","updateForY","updateForX","updateForZ","swapSlices","getOffset","getContinentalness","getWeirdness","getErosion","getTerrainInfo","min_y","xzSize","size_horizontal","ySize","size_vertical","densityFactor","density_factor","densityOffset","density_offset","sampling","topSlide","top_slide","bottomSlide","bottom_slide","terrainShaper","terrain_shaper","useSimplexSurfaceNoise","simplex_surface_noise","randomDensityOffset","random_density_offset","islandNoiseOverride","island_noise_override","isAmplified","amplified","useLegacyRandom","use_legacy_random","settings","blendedNoise","temperatureNoise","humidityNoise","continentalnessNoise","erosionNoise","weirdnessNoise","offsetNoise","jaggedNoise","shaper","createNoiseInterpolator","calculateBaseNoise","point","getTemperature","getHumidity","computeDimensionDensity","sampleJaggedNoise","applySlide","biomeSource","noise","sampler","Xt","octaves","legacyRandomSource","materialRule","updateNoiseAndGenerateBaseState","Ut","minBlockY","getShiftedX","getShiftedZ","getBiome","r4","u4","f3","defaultBlock","seaLevel","defaultFluid","wasm","structures","default_block","default_fluid","bedrockRoofPosition","bedrock_roof_position","bedrockFloorPosition","bedrock_floor_position","sea_level","disableMobGeneration","disable_mob_generation","aquifersEnabled","aquifers_enabled","noiseCavesEnabled","noise_caves_enabled","deepslateEnabled","deepslate_enabled","oreVeinsEnabled","ore_veins_enabled","noodleCavesEnabled","noodle_caves_enabled","legacy_random_source","stronghold","spread","spacing","t5","separation","salt","cachedTextDecoder","ignoreBOM","fatal","cachegetUint8Memory0","ptr","buffer","memory","u32CvtShim","int64CvtShim","BigInt64Array","cachegetInt32Memory0","cachegetFloat64Memory0","Float64Array","WASM_VECTOR_LEN","arg","malloc","cachegetUint32Memory0","t_min","t_max","h_min","h_max","c_min","c_max","e_min","e_max","w_min","w_max","d_min","d_max","ptr0","passArrayF64ToWasm0","__wbindgen_malloc","len0","ptr1","len1","ptr2","len2","ptr3","len3","ptr4","len4","ptr5","len5","ptr6","len6","ptr7","len7","ptr8","len8","ptr9","len9","ptr10","len10","ptr11","len11","ptr12","len12","ptr13","passArray32ToWasm0","len13","biome_parameters","ParameterList","__wrap","t_first","t_amplitudes","h_first","h_amplitudes","c_first","c_amplitudes","e_first","e_amplitudes","w_first","w_amplitudes","s_first","s_amplitudes","low0","high0","climate_sampler","Sampler","instance","klass","x_from","x_to","x_step","y_from","y_to","y_step","z_from","z_to","z_step","retptr","__wbindgen_add_to_stack_pointer","multi_noise","r0","getInt32Memory0","r1","v0","__wbindgen_free","climate_noise","getFloat64Memory0","__destroy_into_raw","__wbg_parameterlist_free","__wbg_sampler_free","async","URL","import_meta","imports","wbg","__wbindgen_throw","arg0","arg1","getStringFromWasm0","Request","fetch","module","Response","WebAssembly","instantiateStreaming","headers","arrayBuffer","instantiate","Instance","load","__wbindgen_wasm_module","Collections","register","core_12","StringNode2","Reference2","ObjectNode","Opt","forceRange","bounds","allowBinomial","choiceContext","minecraft:alternative","terms","minecraft:block_state_property","block","minecraft:damage_source_properties","predicate","minecraft:entity_properties","entity","minecraft:entity_scores","scores","Range","minecraft:inverted","term","minecraft:killed_by_player","inverse","minecraft:location_check","offsetX","offsetY","offsetZ","minecraft:match_tool","minecraft:random_chance","chance","minecraft:random_chance_with_looting","looting_multiplier","minecraft:reference","minecraft:table_bonus","enchantment","chances","minecraft:time_check","period","minecraft:weather_check","raining","thundering","Common_12","StateChoice","item","tag","durability","potion","nbt","enchantments","levels","fluid","position","feature","dimension","light","LocationFields","stat","minecraft:mined","minecraft:crafted","minecraft:used","minecraft:broken","minecraft:picked_up","minecraft:dropped","minecraft:killed","minecraft:killed_by","minecraft:custom","gamemode","advancements","recipes","stats","amplifier","duration","ambient","visible","absolute","horizontal","team","is_on_fire","is_sneaking","is_sprinting","is_swimming","is_baby","equipment","player","effects","is_explosion","is_fire","is_magic","is_projectile","is_lightning","bypasses_armor","bypasses_invulnerability","bypasses_magic","source_entity","direct_entity","dealt","taken","blocked","Advancement","core_1","Common_1","Predicates_1","display","icon","title","description","background","frame","show_toast","announce_to_chat","hidden","parent","criteria","requirements","rewards","function","loot","experience","requirement","trigger","conditions","minecraft:bee_nest_destroyed","num_bees_inside","minecraft:bred_animals","partner","child","minecraft:brewed_potion","minecraft:changed_dimension","minecraft:channeled_lightning","victims","minecraft:construct_beacon","minecraft:consume_item","minecraft:cured_zombie_villager","villager","zombie","minecraft:effects_changed","minecraft:enter_block","minecraft:enchanted_item","minecraft:entity_hurt_player","damage","minecraft:entity_killed_player","killing_blow","minecraft:filled_bucket","minecraft:fishing_rod_hooked","minecraft:hero_of_the_village","minecraft:inventory_changed","slots","empty","occupied","full","items","minecraft:item_durability_changed","delta","minecraft:killed_by_crossbow","unique_entity_types","minecraft:levitation","minecraft:location","minecraft:nether_travel","entered","exited","minecraft:placed_block","minecraft:player_hurt_entity","minecraft:player_killed_entity","minecraft:recipe_unlocked","recipe","minecraft:safely_harvest_honey","minecraft:slept_in_bed","minecraft:slide_down_block","minecraft:shot_crossbow","minecraft:summoned_entity","minecraft:tame_animal","minecraft:used_ender_eye","minecraft:used_totem","minecraft:villager_trade","minecraft:voluntary_exile","Condition","ObjectOrList","condition","ConditionCases","LootContext","requires","allows","LootTable","LootContext_1","functionsAndConditions","functions","contextMap","collectionID","getNode","getAvailableOptions","providedContext","tableType","LootTableTypes","conditionSwtichNode","compileSwitchNode","LootConditions","functionSwtichNode","LootFunctions","entitySourceSwtichNode","LootEntitySources","copySourceSwtichNode","LootCopySources","pools","rolls","bonus_rolls","weightMod","weight","quality","minecraft:alternatives","minecraft:dynamic","minecraft:group","minecraft:item","minecraft:loot_table","minecraft:sequence","minecraft:tag","expand","minecraft:apply_bonus","formula","bonusMultiplier","probability","minecraft:copy_name","minecraft:copy_nbt","ops","getter","minecraft:copy_state","minecraft:enchant_randomly","minecraft:enchant_with_levels","treasure","minecraft:exploration_map","destination","decoration","zoom","search_radius","skip_existing_chunks","minecraft:fill_player_head","minecraft:limit_count","minecraft:looting_enchant","minecraft:set_attributes","modifiers","minecraft:set_contents","minecraft:set_count","minecraft:set_damage","minecraft:set_loot_table","minecraft:set_lore","lore","minecraft:set_name","minecraft:set_nbt","minecraft:set_stew_effect","attribute","amount","operation","slot","StringOrList","PackMcmeta","pack","pack_format","Recipe","minecraft:crafting_shaped","group","pattern","minecraft:crafting_shapeless","ingredients","minecraft:smelting","ingredient","cookingtime","minecraft:blasting","minecraft:smoking","minecraft:campfire_cooking","minecraft:stonecutting","minecraft:smithing","addition","Tags","TagBase","required","TextComponent","getSimpleString","parseFloat","isFinite","CommonFields","bold","italic","underlined","strikethrough","obfuscated","insertion","clickEvent","action","change_page","copy_to_clipboard","open_file","open_url","run_command","leadingSlash","allowPartial","suggest_command","hoverEvent","show_text","show_item","show_entity","translate","with","score","isScoreHolder","objective","selector","keybind","interpret","schemas","Advancement_1","Condition_1","LootTable_1","PackMcmeta_1","Recipe_1","Tags_1","TextComponent_1","initCommonSchemas","initPredicatesSchemas","initAdvancementSchemas","initConditionSchemas","initLootTableSchemas","initPackMcmetaSchemas","initRecipeSchemas","initTagsSchemas","initTextComponentSchemas","__setModuleDefault","__importStar","mod","__esModule","lib","Collections_1","schemas_1","CollectionRegistry","initCollections","getSchemas_1","SchemaRegistry","initSchemas","ultrawarm","natural","piglin_safe","respawn_anchor_works","bed_works","has_raids","has_skylight","has_ceiling","coordinate_scale","ambient_light","logical_height","infiniburn","maxSpread","ObjectOrPreset","minecraft:overworld","DefaultDimensionType","minecraft:the_nether","shrunk","fixed_time","minecraft:the_end","DefaultNoiseSettings","minecraft:nether","minecraft:end","minecraft:amplified","minecraft:caves","minecraft:floating_islands","EntityPredicate","minecraft:item_used_on_block","minecraft:player_generates_container_loot","loot_table","minecraft:player_interacted_with_entity","minecraft:target_hit","projectile","shooter","signal_strength","minecraft:thrown_item_picked_up_by_entity","Dimension","NoPreset","DimensionTypePresets","generator","minecraft:noise","NoiseSettingsPresets","biome_source","minecraft:fixed","minecraft:multi_noise","preset","altitude_noise","temperature_noise","humidity_noise","weirdness_noise","biomes","minecraft:checkerboard","scale","minecraft:vanilla_layered","large_biomes","legacy_biome_init_layer","minecraft:flat","lakes","features","layers","altitude","DimensionType","Predicates","smokey","vehicle","targeted_entity","fishing_hook","in_open_water","font","contents","Biome","surface_builder","downfall","precipitation","temperature_modifier","player_spawn_friendly","creature_spawn_probability","sky_color","fog_color","water_color","water_fog_color","grass_color","foliage_color","grass_color_modifier","ambient_sound","mood_sound","sound","tick_delay","block_search_extent","additions_sound","tick_chance","music","min_delay","max_delay","replace_current_music","particle","starts","spawners","minCount","maxCount","spawn_costs","energy_budget","charge","carvers","Carver","Decorator","RangeConfig","maximum","bottom_offset","top_offset","ChanceConfig","CountConfig","UniformInt","minecraft:carving_mask","step","minecraft:chance","minecraft:count","minecraft:count_extra","extra_count","extra_chance","minecraft:count_multilayer","minecraft:count_noise","noise_level","below_noise","above_noise","minecraft:count_noise_biased","noise_to_count_ratio","noise_factor","noise_offset","minecraft:decorated","outer","inner","minecraft:depth_average","baseline","minecraft:fire","minecraft:glowstone","minecraft:lava_lake","minecraft:range","minecraft:range_biased","minecraft:range_very_biased","minecraft:water_lake","ProcessorList","processors","processor_type","rules","location_predicate","predicate_type","input_predicate","minecraft:block_age","mossiness","minecraft:block_ignore","blocks","minecraft:block_rot","integrity","minecraft:gravity","heightmap","minecraft:rule","position_predicate","output_state","output_nbt","posTestFields","min_dist","max_dist","min_chance","max_chance","minecraft:axis_aligned_linear_pos","axis","minecraft:linear_pos","minecraft:block_match","minecraft:blockstate_match","block_state","minecraft:random_block_match","minecraft:random_blockstate_match","minecraft:tag_match","Feature","RandomPatchConfig","can_replace","project","need_water","xspread","yspread","zspread","tries","state_provider","block_placer","whitelist","blacklist","DiskConfig","radius","half_height","targets","HugeMushroomConfig","cap_provider","stem_provider","foliage_radius","OreConfig","Feature2","minecraft:bamboo","minecraft:basalt_columns","reach","minecraft:block_pile","decorator","minecraft:delta_feature","rim","rim_size","minecraft:disk","minecraft:emerald_ore","minecraft:end_gateway","exit","minecraft:end_spike","crystal_invulnerable","crystal_beam_target","spikes","centerX","centerZ","guarded","minecraft:fill_layer","minecraft:flower","minecraft:forest_rock","minecraft:huge_brown_mushroom","minecraft:huge_fungus","hat_state","decor_state","stem_state","valid_base_block","planted","minecraft:huge_red_mushroom","minecraft:ice_patch","minecraft:iceberg","minecraft:lake","minecraft:nether_forest_vegetation","minecraft:netherrack_replace_blobs","minecraft:no_bonemeal_flower","minecraft:no_surface_ore","minecraft:ore","minecraft:random_patch","minecraft:random_boolean_selector","feature_false","feature_true","minecraft:random_selector","minecraft:sea_pickle","minecraft:seagrass","minecraft:simple_block","to_place","place_on","place_in","place_under","minecraft:simple_random_selector","minecraft:spring_feature","rock_count","hole_count","requires_block_below","valid_blocks","minecraft:tree","max_water_depth","ignore_vines","minimum_size","trunk_provider","leaves_provider","trunk_placer","base_height","height_rand_a","height_rand_b","foliage_placer","minecraft:blob_foliage_placer","minecraft:bush_foliage_placer","minecraft:fancy_foliage_placer","minecraft:jungle_foliage_placer","minecraft:mega_pine_foliage_placer","crown_height","minecraft:pine_foliage_placer","minecraft:spruce_foliage_placer","trunk_height","decorators","minecraft:alter_ground","provider","minecraft:beehive","minecraft:cocoa","min_clipped_height","minecraft:two_layers_feature_size","lower_size","upper_size","minecraft:three_layers_feature_size","upper_limit","middle_size","minecraft:rotated_block_provider","minecraft:simple_state_provider","minecraft:weighted_state_provider","minecraft:column_placer","min_size","extra_size","NoiseSettings","StructureFeature","templatePoolConfig","start_pool","minecraft:bastion_remnant","minecraft:buried_treasure","minecraft:mineshaft","minecraft:ocean_ruin","biome_temp","large_probability","cluster_probability","minecraft:pillager_outpost","minecraft:ruined_portal","portal_type","minecraft:shipwreck","is_beached","minecraft:village","SurfaceBuilder","top_material","under_material","underwater_material","snowy","TemplatePool","Processors","elements","element_type","projection","minecraft:feature_pool_element","minecraft:legacy_single_pool_element","minecraft:list_pool_element","minecraft:single_pool_element","worldgen","Biome_1","Carver_1","Decorator_1","Feature_1","NoiseSettings_1","ProcessorList_1","StructureFeature_1","SurfaceBuilder_1","TemplatePool_1","initBiomeSchemas","initCarverSchemas","initDecoratorSchemas","initFeatureSchemas","initNoiseSettingsSchemas","initProcessorListSchemas","initStructureFeatureSchemas","initSurfaceBuilderSchemas","initTemplatePoolSchemas","WorldSettings","generate_features","bonus_chest","dimensions","Dimension_1","DimensionType_1","worldgen_1","WorldSettings_1","initDimensionTypeSchemas","initDimensionSchemas","initWorldgenSchemas","initWorldSettingsSchemas","minecraft:lightning_strike","lightning","bystander","minecraft:using_item","Bounds","ObjectWithType","directType","directPath","directDefault","objectDefault","defaultCase","minecraft:constant","minecraft:uniform","minecraft:binomial","minecraft:score","minecraft:context","minecraft:storage","min_inclusive","max_exclusive","minecraft:clamped_normal","mean","deviation","minecraft:trapezoid","plateau","FloatProvider","max_inclusive","minecraft:biased_to_bottom","minecraft:clamped","IntProvider","above_bottom","below_top","minecraft:very_biased_to_bottom","entitySourceNode","minecraft:value_check","range","copySourceNode","minecraft:set_banner_pattern","patterns","append","minecraft:set_enchantments","ItemModifier","FunctionCases","conditionIDSwtichNode","functionIDSwtichNode","_p","looking_at","stepping_on","passenger","lightning_bolt","blocks_set_on_fire","entity_struck","separator","CanyonConfig","vertical_rotation","shape","distance_factor","thickness","width_smoothness","horizontal_radius_factor","vertical_radius_default_factor","vertical_radius_center_factor","CaveConfig","horizontal_radius_multiplier","vertical_radius_multiplier","floor_level","lava_level","debug_settings","debug_mode","air_state","water_state","lava_state","barrier_state","minecraft:canyon","minecraft:cave","minecraft:nether_cave","minecraft:cave_surface","surface","floor_to_ceiling_search_range","minecraft:heightmap","minecraft:heightmap_spread_double","minecraft:water_depth_threshold","minecraft:protected_blocks","TargetBlockState","discard_chance_on_air_exposure","VegetationPatchConfig","vertical_range","extra_bottom_block_chance","extra_edge_column_chance","vegetation_chance","xz_radius","replaceable","ground_state","vegetation_feature","minecraft:decorated_flower","minecraft:dripstone_cluster","max_stalagmite_stalactite_height_diff","height_deviation","dripstone_block_layer_thickness","density","wetness","chance_of_dripstone_column_at_max_distance_from_center","max_distance_from_edge_affecting_chance_of_dripstone_column","max_distance_from_center_affecting_height_bias","minecraft:fossil","max_empty_corners_allowed","fossil_structures","overlay_structures","fossil_processors","overlay_processors","minecraft:geode","filling_provider","inner_layer_provider","alternate_inner_layer_provider","middle_layer_provider","outer_layer_provider","inner_placements","cannot_replace","invalid_blocks","filling","inner_layer","middle_layer","outer_layer","crack","generate_crack_chance","base_crack_size","crack_point_offset","noise_multiplier","use_potential_placements_chance","use_alternate_layer0_chance","placements_require_layer0_alternate","outer_wall_distance","distribution_points","point_offset","min_gen_offset","max_gen_offset","invalid_blocks_threshold","minecraft:glow_lichen","search_range","chance_of_spreading","can_place_on_floor","can_place_on_ceiling","can_place_on_wall","can_be_placed_on","minecraft:growing_plant","direction","allow_water","height_distribution","body_provider","head_provider","minecraft:large_dripstone","column_radius","height_scale","max_column_radius_to_cave_height_ratio","stalactite_bluntness","stalagmite_bluntness","wind_speed","min_radius_for_wind","min_bluntness_for_wind","minecraft:replace_single_block","minecraft:root_system","required_vertical_space_for_tree","root_radius","root_placement_attempts","root_column_max_height","hanging_root_radius","hanging_roots_vertical_span","hanging_root_placement_attempts","allowed_vertical_water_for_tree","root_replaceable","root_state_provider","hanging_root_state_provider","minecraft:scattered_ore","minecraft:small_dripstone","max_placements","empty_space_search_radius","max_offset_from_origin","chance_of_taller_dripstone","force_dirt","dirt_provider","sapling_provider","foliage_provider","minecraft:bending_trunk_placer","bend_length","min_height_for_leaves","minecraft:random_spread_foliage_placer","foliage_height","leaf_placement_attempts","minecraft:underwater_magma","floor_search_range","placement_radius_around_floor","placement_probability_per_valid_position","minecraft:vegetation_patch","minecraft:waterlogged_vegetation_patch","minecraft:randomized_int_state_provider","property","min_surface_level","minecraft:nether_fossil","ItemModifier_1","initItemModifierSchemas","minecraft:fall_from_height","start_position","minecraft:ride_entity_in_lava","DefaultStructureSettings","minecraft:igloo","minecraft:mansion","minecraft:jungle_pyramid","minecraft:stronghold","minecraft:desert_pyramid","minecraft:fortress","minecraft:endcity","minecraft:swamp_hut","minecraft:monument","surface_rule","sequence","minecraft:weighted_list","distribution","minecraft:set_potion","ClimateParameter","minecraft:block_filter","minecraft:environment_scan","direction_of_search","max_steps","target_condition","minecraft:scatter","xz_spread","y_spread","minecraft:surface_relative_threshold","minecraft:block_column","allowed_placement","prioritize_tip","minecraft:pointed_dripstone","chance_of_directional_spread","chance_of_spread_radius2","chance_of_spread_radius3","NoiseProvider","MIN_VALUE","minecraft:dual_noise_provider","variety","InclusiveRange","slow_noise","slow_scale","states","minecraft:noise_threshold_provider","threshold","high_chance","default_state","low_states","high_states","minecraft:noise_provider","minecraft:all_of","predicates","minecraft:any_of","minecraft:matching_blocks","minecraft:matching_fluids","fluids","minecraft:not","minecraft:would_survive","SurfaceRule","minecraft:block","result_state","minecraft:condition","if_true","then_run","minecraft:biome","biome_is","minecraft:noise_threshold","min_threshold","max_threshold","invert","minecraft:stone_depth","surface_type","add_run_depth","minecraft:water","run_depth_multiplier","add_stone_depth","minecraft:y_above","anchor","is_biome","SurfaceRule_1","initSurfaceRuleSchemas","rfdc_1","circles","refs","refsNew","proto","Date","cloneArray","cloneProto","o22","cur","ArrayBuffer","isView","copyBuffer","clone","a22","rfdcCircles","Buffer","byteOffset","displayName","isReactComponent","__f","isPureReactComponent","__u","__R","n4","__O","delete","revealOrder","F","reverse","for","configurable","writable","cancelBubble","defaultPrevented","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","class","multiple","selected","defaultValue","className","$$typeof","performance","now","HowlerGlobal2","init","self2","Howler2","_counter","_html5AudioPool","html5PoolSize","_codecs","_howls","_muted","_volume","_canPlayEvent","_navigator","navigator","masterGain","noAudio","usingWebAudio","autoSuspend","ctx","autoUnlock","_setup","volume","vol","gain","setValueAtTime","currentTime","_webAudio","ids","_getSoundIds","_soundById","_node","mute","muted","stop","unload","close","codecs","ext","_autoSuspend","Audio","oncanplaythrough","_setupCodecs","audioTest","err2","canPlayType","mpegTest","ua","userAgent","checkOpera","isOldOpera","checkSafari","safariVersion","isOldSafari","mp3","mpeg","opus","ogg","oga","wav","aac","caf","m4a","m4b","mp4","weba","webm","dolby","flac","_unlockAudio","_audioUnlocked","_mobileUnloaded","sampleRate","_scratchBuffer","createBuffer","unlock","audioNode","_unlocked","_releaseHtml5Audio","_autoResume","createBufferSource","connect","noteOn","resume","onended","disconnect","_emit","_obtainHtml5Audio","testPlay","play","catch","audio","suspend","_sounds","_paused","_suspendTimer","handleSuspension","_resumeAfterSuspend","Howl2","_autoplay","autoplay","_format","format","_html5","html5","_loop","loop","_pool","_preload","preload","_rate","rate","_sprite","sprite","_src","_xhr","xhr","withCredentials","_duration","_state","_endTimers","_queue","_playLock","_onend","onend","_onfade","onfade","_onload","onload","_onloaderror","onloaderror","_onplayerror","onplayerror","_onpause","onpause","_onplay","onplay","_onstop","onstop","_onmute","onmute","_onvolume","onvolume","_onrate","onrate","_onseek","onseek","_onunlock","onunlock","_onresume","protocol","Sound2","internal","num","_ended","_id","_inactiveSound","soundId","_loadQueue","seek","_seek","timeout","setParams","_start","_stop","playWebAudio","_refreshBuffer","_playStart","bufferSource","noteGrainOn","once","_clearTimer","playHtml5","playbackRate","paused","loadedNoReadyState","ejecta","readyState","isCocoonJS","pause","_rateSeek","_stopFade","noteOff","_cleanBuffer","_clearSound","_interval","fade","linearRampToValueAtTime","_startFadeInterval","isGroup","diff","steps","stepLen","lastTick","_fadeTo","setInterval","tick","round","cancelScheduledValues","loopStart","loopEnd","playing","realTime","rateSeek","seekAndEmit","emitSeek","sounds","_errorFn","_loadFn","_endFn","remCache","cache","on","events","off","isId","task","_drain","cnt","_panner","isIOS","vendor","howl","_parent","createGain","createGainNode","_errorListener","_loadListener","_endListener","ceil","__default","loadBuffer","atob","dataView","XMLHttpRequest","open","responseType","setRequestHeader","response","onerror","safeXhrSend","send","decodeAudioData","arraybuffer","success","loadSound","setupAudioContext","AudioContext","webkitAudioContext","iOS","platform","appVersion","version","safari","global","HowlerGlobal","Howler","Howl","Sound","_super","_pos","_orientation","stereo","pan","z2","positionX","setTargetAtTime","positionY","positionZ","setPosition","orientation","xUp","yUp","zUp","or","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","_stereo","_pannerAttr","coneInnerAngle","coneOuterAngle","coneOuterGain","distanceModel","maxDistance","panningModel","refDistance","rolloffFactor","_onstereo","onstereo","_onpos","onpos","_onorientation","onorientation","pannerType","createStereoPanner","orientationX","orientationY","orientationZ","pannerAttr","_coneInnerAngle","_coneOuterAngle","_coneOuterGain","_distanceModel","_maxDistance","_refDistance","_rolloffFactor","_panningModel","pa","panner","setupPanner","createPanner","esmEntry$1","defaults$5","baseUrl","breaks","extensions","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","smartLists","smartypants","tokenizer","walkTokens","xhtml","defaults","getDefaults","getDefaults$1","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","&","<",">","\"","'","getEscapeReplacement","ch","unescapeTest","html","substring","caret","nonWordAndColonTest","originIndependentUrl","baseUrls","justDomain","domain","rtrim$1","relativeBase","suffLen","currChar","helpers","unescape$1","edit","regex","getRegex","RegExp","cleanUrl","prot","resolveUrl","encodeURI","noopTest","merge","splitCells","tableRow","cells","escaped","trim","rtrim","findClosingBracket","checkSanitizeDeprecation","repeatString","defaults$4","escape$2","cap","link","lexer","inLink","token","tokens","inlineTokens","Tokenizer_1$1","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","indentCodeCompensation","lang","heading","trimmed","inline","hr","blockquote","blockTokens","istask","ischecked","indent","blankLine","endsWithBlankLine","line","lines","itemContents","bull","isordered","ordered","itemRegex","trimLeft","nextBulletRegex","trimRight","top","pre","def","align","rows","row","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","outputLink","_escapes","links","reflink","nolink","maskedSrc","prevChar","emStrong","lDelim","nextChar","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","text2","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","mangle2","autolink","prevCapZero","_backpedal","smartypants2","merge$1","block$1","noopTest2","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","inline$1","reflinkSearch","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Tokenizer$2","defaults$3","Lexer_1$1","inlineQueue","rules2","Lexer","lex","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startBlock","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","lastIndexOf","codespan","startInline","inlineText","defaults$2","escape$1","Renderer_1$1","infostring","quote","slugger","slug","body","content","TextRenderer_1$1","Slugger_1$1","seen","originalSlug","isDryRun","occurenceAccumulator","serialize","getNextSafeSlug","dryrun","Renderer$2","TextRenderer$2","Slugger$2","defaults$1","Parser_1$1","textRenderer","Parser","parseInline","cell","itemBody","checkbox","l4","renderers","parser","tablecell","tablerow","unshift","listitem","image","Lexer$1","Parser$1","Tokenizer$1","Renderer$1","TextRenderer$1","Slugger$1","callback","marked$1","setOptions","use","childTokens","hasExtensions","prevRenderer","args2","prop","prevTokenizer","lexInline","Renderer","TextRenderer","Tokenizer","Slugger","marked","Lexer2","Parser2","Tokenizer2","Renderer2","TextRenderer2","Slugger2","esmEntry"],"mappings":"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ACA,sBACA,qBACA,uBACA,wBACA,4BACA,gCAEQA,SAAS,YAAa,CAC9B,oBACA,sBACA,8BACA,wBACA,uBACA,gBACA,yBACA,sBACA,eACA,qBACA,0BACA,sBACA,iCAEQA,SAAS,oBAAqB,CACtC,mBACA,YACA,UACA,iBACA,iBACA,QACA,YACA,YACA,aACA,WACA,aACA,WACA,UACA,kBACA,cAEQA,SAAS,YAAa,CAC9B,sBACA,uBACA,wBAEQA,SAAS,UAAW,CAC5B,mBACA,aACA,WACA,WACA,cACA,WACA,cACA,iBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,gBACA,WACA,WACA,2BACA,eACA,iBACA,YACA,2BACA,iBACA,mBACA,YACA,wBACA,aACA,kBACA,wBACA,cAEQA,SAAS,OAAQ,CACzB,WACA,UACA,OACA,QACA,OACA,WAEQA,SAAS,WAAY,CAC7B,WACA,WACA,YACA,gBAEQA,SAAS,gBAAiB,CAClC,OACA,gBACA,SACA,oBAEQA,SAAS,cAAe,CAChC,eACA,OACA,SACA,oBAEQA,SAAS,iCAAkC,CACnD,gCACA,sCACA,0BAEQA,SAAS,iBAAkB,CACnC,UACA,WACA,SACA,QACA,aACA,cACA,WACA,eACA,iBACA,oBACA,QACA,eACA,gBACA,iBACA,oBACA,gBACA,cACA,cACA,cACA,oBACA,cACA,gBACA,cACA,eACA,eACA,aACA,mBAEQA,SAAS,eAAgB,CACjC,MACA,iBACA,aACA,gBACA,YACA,qBACA,WACA,cACA,OACA,cACA,iBACA,oBACA,SACA,gBACA,cACA,qBACA,eACA,SACA,kBACA,wBACA,OACA,YACA,aACA,WACA,UACA,kBACA,gBACA,aACA,WACA,cACA,aACA,SACA,OACA,OACA,QACA,WACA,YACA,SACA,sBAEQA,SAAS,oBAAqB,CACtC,kBACA,kBACA,oBACA,qBACA,oBACA,mBACA,iBACA,mBACA,+BACA,+BACA,oBACA,+DCtRD/rC,iBAAwB,aAAc,CAAEhM,OAAO,wBAC1B4R,QAAgBA,sBAAyB,QAC/DomC,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AANltD,GAAmBoK,OAAO+P,eAAelW,KAAKipD,EAAKltD,OAAoBguB,EAAQk/B,EAAKltD,aACzGguB,EAAQk/B,GACpBl/B,GAEX5jB,OAAOuC,eAAeygD,GAAS,aAAc,CAAEzsD,OAAO,IACtD,4CAA8C,EAC9C,MAAMo+C,GAASjvC,GACTu9C,GAAgBt9C,GAChBu9C,GAAYr9C,GAClB,sBAAsBg9C,GAAax2C,IAMnC,yBALA,iBACUsC,EAAc,IAAIgmC,GAAOwO,6BACjBC,gBAAgBz0C,GACvBA,GAsBX00C,iBALA,SAAoB10C,SACVP,EAAU,IAAIumC,GAAO2O,yBACjBC,YAAYn1C,EAASO,GACxBP,iMChDXpO,OAAOuC,eAAe8rC,GAAS,aAAc,CAAE93C,OAAO,4BAC5B,qBAC1B,SAAyBoY,KACT2/B,SAAS,sBAAuB,CACxC,+BACA,yBACA,0BACA,8BACA,gCACA,6BACA,yBACA,kCACA,4BACA,2BACA,wBACA,+BACA,iCACA,0BACA,+BACA,gCACA,uBACA,8BACA,oCACA,+BACA,+BACA,uBACA,qBACA,0BACA,yBACA,4CACA,+BACA,0CACA,iCACA,4BACA,0BACA,yBACA,6BACA,4BACA,wBACA,uBACA,iBACA,4CACA,2BACA,uBACA,2BACA,gCAEQA,SAAS,YAAa,CAC9B,sBACA,uBACA,wBAEQA,SAAS,iBAAkB,CACnC,sBACA,uBACA,wBAEQA,SAAS,UAAW,CAC5B,mBACA,aACA,WACA,WACA,cACA,WACA,cACA,iBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,gBACA,WACA,WACA,2BACA,eACA,iBACA,YACA,2BACA,iBACA,mBACA,YACA,wBACA,aACA,kBACA,wBACA,cAEQA,SAAS,OAAQ,CACzB,WACA,UACA,OACA,QACA,OACA,WAEQA,SAAS,WAAY,CAC7B,WACA,WACA,YACA,gBAEQA,SAAS,0BAA2B,CAC5C,sBACA,mBACA,gBACA,sBACA,kBACA,iCAEQA,SAAS,gBAAiB,CAClC,OACA,gBACA,SACA,oBAEQA,SAAS,cAAe,CAChC,eACA,OACA,SACA,oBAEQA,SAAS,iCAAkC,CACnD,gCACA,sCACA,0BAEQA,SAAS,iBAAkB,CACnC,UACA,WACA,SACA,QACA,aACA,cACA,WACA,eACA,iBACA,oBACA,QACA,eACA,gBACA,iBACA,oBACA,gBACA,cACA,cACA,cACA,oBACA,cACA,gBACA,cACA,eACA,eACA,aACA,mBAEQA,SAAS,cAAe,CAChC,kBACA,kBACA,iBACA,UACA,WACA,QACA,iBACA,UACA,YACA,WACA,gBACA,aACA,mBACA,gBACA,YACA,aACA,YACA,cAEQA,SAAS,eAAgB,CACjC,MACA,iBACA,aACA,gBACA,YACA,qBACA,WACA,cACA,OACA,cACA,iBACA,oBACA,SACA,gBACA,cACA,qBACA,eACA,SACA,kBACA,wBACA,OACA,YACA,aACA,WACA,UACA,kBACA,gBACA,aACA,WACA,cACA,aACA,SACA,OACA,OACA,QACA,WACA,YACA,SACA,sBAEQA,SAAS,8BAA+B,CAChD,mBACA,yBACA,8BACA,mBACA,yBACA,0BACA,4BACA,2BACA,2BACA,wBACA,uBACA,kBACA,6BACA,qBACA,wBACA,iCACA,kCACA,kCACA,iCACA,iCACA,yBACA,sCACA,kCACA,0BACA,yCACA,uCACA,qBACA,kBACA,wBACA,sBACA,wBACA,sBACA,gCACA,wBACA,iCACA,uBACA,sBACA,gCACA,+BACA,+BACA,sBACA,2BACA,0BACA,mCACA,yBACA,yBACA,wBACA,gCACA,4CACA,qCACA,wBACA,mBACA,6BACA,4BACA,sBACA,gCACA,8BACA,sBACA,sBACA,yBACA,2BACA,wBACA,gCACA,wBACA,sBACA,sBACA,sBACA,uBACA,iCACA,6BACA,sBACA,wBACA,yBACA,sCACA,2BACA,yBACA,0BACA,yBACA,yBACA,gBACA,yBACA,2BACA,qBACA,6BACA,6BACA,wBACA,wBACA,qBACA,wBACA,4BACA,2BACA,4BACA,qBACA,wBACA,8BACA,uBACA,yBACA,qBACA,sBACA,sBACA,8BACA,8BACA,yBACA,0BACA,6BACA,kCACA,+BACA,iCACA,mCACA,gCACA,yBACA,gCACA,8BACA,qCACA,4BACA,uBACA,iCACA,+BACA,+BACA,+BACA,8BACA,gCACA,gCACA,8BACA,6BACA,wBACA,0BACA,+BACA,4BACA,sCACA,oCACA,mCACA,6BACA,4BACA,8BACA,+BACA,6BACA,6BACA,qBACA,qBACA,uBACA,yBACA,sBACA,iBACA,6BACA,+BACA,gCACA,gCACA,+BACA,+BACA,uBACA,0BACA,+BACA,+BACA,0BACA,4BACA,2BACA,4BACA,2BACA,0BACA,iCACA,iCACA,0BACA,yBACA,+BACA,wBACA,wBACA,yBACA,yBACA,mBACA,kCACA,uBACA,6BACA,wBACA,+BACA,wBACA,8BACA,yBACA,gCACA,2BACA,0BACA,oCACA,wBACA,2BACA,kBACA,gCACA,kCACA,qCACA,iCACA,yBACA,8BAEQA,SAAS,wCAAyC,CAC1D,4BACA,4BACA,2BACA,qBACA,qBACA,kBACA,2BACA,oBACA,2BACA,sBACA,qBACA,0BACA,4BACA,4BACA,6BACA,iCACA,iCACA,mCACA,iCACA,gCACA,gCACA,0BACA,8BACA,sBACA,uBACA,sBACA,2BACA,2BACA,4BACA,0BACA,8BAEQA,SAAS,sCAAuC,CACxD,qBACA,0BACA,2BACA,mBACA,gBACA,4BACA,yBACA,sBACA,6BACA,kBACA,8BACA,uBACA,qBACA,qBACA,mBACA,iBACA,uBACA,8BACA,6BACA,kBACA,kBACA,0BACA,gCAEQA,SAAS,iBAAkB,CACnC,QACA,SACA,gBACA,SACA,MACA,SACA,OACA,WACA,SACA,OACA,QACA,SACA,QACA,UACA,QACA,QACA,cAEQA,SAAS,iBAAkB,CACnC,kBACA,4BACA,cACA,iBACA,gBACA,uBAEQA,SAAS,kBAAmB,CACpC,MACA,aAEQA,SAAS,oBAAqB,CACtC,kBACA,kBACA,oBACA,qBACA,oBACA,mBACA,iBACA,mBACA,+BACA,+BACA,oBACA,+DCngBD/rC,iBAAwB,aAAc,CAAEhM,OAAO,wBAC1B4R,aAAqBA,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MAAOqB,KAC9D,SAAShF,EAAGgF,aACEA,IAEfirD,GAAgB1uD,IAAQA,GAAK0uD,cAAiB,SAAUC,MACpDA,GAAOA,EAAIC,kBAAmBD,MAC9Bl/B,EAAS,MACF,MAAPk/B,UAAsBltD,KAAKktD,EAAe,YAANltD,GAAmBoK,OAAO+P,eAAelW,KAAKipD,EAAKltD,OAAoBguB,EAAQk/B,EAAKltD,aACzGguB,EAAQk/B,GACpBl/B,GAEX5jB,OAAOuC,eAAeygD,GAAS,aAAc,CAAEzsD,OAAO,IACtD,4CAA8C,EAC9C,MAAMo+C,GAASjvC,GACTu9C,GAAgBt9C,GAChBu9C,GAAYr9C,GAClB,sBAAsBg9C,GAAax2C,IAMnC,yBALA,iBACUsC,EAAc,IAAIgmC,GAAOwO,6BACjBC,gBAAgBz0C,GACvBA,GAsBX00C,iBALA,SAAoB10C,SACVP,EAAU,IAAIumC,GAAO2O,yBACjBC,YAAYn1C,EAASO,GACxBP,iMChDXpO,OAAOuC,eAAe8rC,GAAS,aAAc,CAAE93C,OAAO,4BAC5B,qBAC1B,SAAyBoY,KACT2/B,SAAS,sBAAuB,CACxC,+BACA,yBACA,0BACA,8BACA,gCACA,6BACA,yBACA,kCACA,4BACA,2BACA,wBACA,+BACA,iCACA,0BACA,+BACA,gCACA,uBACA,8BACA,oCACA,+BACA,+BACA,uBACA,6BACA,qBACA,0BACA,yBACA,4CACA,+BACA,0CACA,iCACA,4BACA,0BACA,yBACA,6BACA,2BACA,4BACA,wBACA,uBACA,iBACA,4CACA,2BACA,uBACA,uBACA,2BACA,gCAEQA,SAAS,YAAa,CAC9B,sBACA,uBACA,wBAEQA,SAAS,iBAAkB,CACnC,sBACA,uBACA,wBAEQA,SAAS,UAAW,CAC5B,mBACA,aACA,WACA,WACA,cACA,WACA,cACA,iBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,gBACA,WACA,WACA,2BACA,eACA,iBACA,YACA,2BACA,iBACA,mBACA,YACA,wBACA,aACA,kBACA,wBACA,cAEQA,SAAS,OAAQ,CACzB,WACA,UACA,OACA,QACA,OACA,WAEQA,SAAS,WAAY,CAC7B,WACA,WACA,YACA,gBAEQA,SAAS,0BAA2B,CAC5C,sBACA,mBACA,gBACA,sBACA,kBACA,iCAEQA,SAAS,gBAAiB,CAClC,OACA,SACA,gBACA,oBAEQA,SAAS,cAAe,CAChC,eACA,OACA,SACA,oBAEQA,SAAS,iCAAkC,CACnD,gCACA,sCACA,0BAEQA,SAAS,iBAAkB,CACnC,UACA,WACA,SACA,QACA,aACA,cACA,WACA,eACA,iBACA,oBACA,QACA,eACA,gBACA,iBACA,oBACA,gBACA,cACA,cACA,cACA,oBACA,cACA,gBACA,cACA,eACA,eACA,aACA,mBAEQA,SAAS,cAAe,CAChC,kBACA,kBACA,iBACA,UACA,WACA,QACA,iBACA,UACA,YACA,WACA,gBACA,aACA,mBACA,gBACA,YACA,aACA,YACA,cAEQA,SAAS,eAAgB,CACjC,MACA,iBACA,aACA,gBACA,YACA,qBACA,WACA,cACA,OACA,cACA,iBACA,oBACA,SACA,gBACA,cACA,qBACA,eACA,SACA,kBACA,wBACA,OACA,YACA,aACA,WACA,UACA,kBACA,gBACA,aACA,WACA,cACA,aACA,SACA,OACA,OACA,QACA,WACA,YACA,SACA,sBAEQA,SAAS,8BAA+B,CAChD,mBACA,yBACA,8BACA,mBACA,yBACA,0BACA,4BACA,2BACA,2BACA,wBACA,uBACA,kBACA,6BACA,qBACA,wBACA,iCACA,kCACA,kCACA,iCACA,iCACA,yBACA,sCACA,kCACA,0BACA,yCACA,uCACA,qBACA,kBACA,wBACA,sBACA,wBACA,sBACA,gCACA,wBACA,iCACA,uBACA,sBACA,gCACA,+BACA,+BACA,sBACA,2BACA,0BACA,mCACA,yBACA,yBACA,wBACA,gCACA,4CACA,qCACA,wBACA,mBACA,6BACA,4BACA,sBACA,gCACA,8BACA,sBACA,sBACA,yBACA,2BACA,wBACA,gCACA,wBACA,sBACA,sBACA,sBACA,uBACA,iCACA,6BACA,sBACA,wBACA,yBACA,sCACA,2BACA,yBACA,0BACA,yBACA,yBACA,gBACA,yBACA,2BACA,qBACA,6BACA,6BACA,wBACA,wBACA,qBACA,wBACA,4BACA,2BACA,4BACA,qBACA,wBACA,8BACA,uBACA,yBACA,qBACA,sBACA,sBACA,8BACA,8BACA,yBACA,0BACA,6BACA,kCACA,+BACA,iCACA,mCACA,gCACA,yBACA,gCACA,8BACA,qCACA,4BACA,uBACA,iCACA,+BACA,+BACA,+BACA,8BACA,gCACA,gCACA,8BACA,6BACA,wBACA,0BACA,+BACA,4BACA,sCACA,oCACA,mCACA,6BACA,4BACA,8BACA,+BACA,6BACA,6BACA,qBACA,qBACA,uBACA,yBACA,sBACA,iBACA,6BACA,+BACA,gCACA,gCACA,+BACA,+BACA,uBACA,0BACA,+BACA,+BACA,0BACA,4BACA,2BACA,4BACA,2BACA,0BACA,iCACA,iCACA,0BACA,yBACA,+BACA,wBACA,wBACA,yBACA,yBACA,mBACA,kCACA,uBACA,6BACA,wBACA,+BACA,wBACA,8BACA,yBACA,gCACA,2BACA,0BACA,oCACA,wBACA,2BACA,kBACA,gCACA,kCACA,qCACA,iCACA,yBACA,8BAEQA,SAAS,wCAAyC,CAC1D,4BACA,4BACA,2BACA,qBACA,qBACA,kBACA,2BACA,oBACA,2BACA,sBACA,qBACA,0BACA,4BACA,4BACA,6BACA,iCACA,iCACA,mCACA,iCACA,gCACA,gCACA,0BACA,8BACA,sBACA,uBACA,sBACA,2BACA,2BACA,4BACA,0BACA,8BAEQA,SAAS,sCAAuC,CACxD,qBACA,0BACA,2BACA,mBACA,gBACA,4BACA,yBACA,sBACA,6BACA,kBACA,8BACA,uBACA,qBACA,qBACA,mBACA,iBACA,uBACA,8BACA,6BACA,kBACA,kBACA,0BACA,gCAEQA,SAAS,iBAAkB,CACnC,QACA,SACA,gBACA,SACA,MACA,SACA,OACA,WACA,SACA,OACA,QACA,SACA,QACA,UACA,QACA,QACA,UACA,kBAEQA,SAAS,iBAAkB,CACnC,kBACA,4BACA,cACA,iBACA,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BzuD,IAAQA,GAAKyuD,4BAA+B3iD,OAAU,SAASrN,EAAGgF,UACjF2K,eAAe3P,EAAG,UAAW,CAAEgd,YAAY,EAAMrZ,MAAOqB,KAC9D,SAAShF,EAAGgF,aACEA,IAEfirD,GAAgB1uD,IAAQA,GAAK0uD,cAAiB,SAAUC,MACpDA,GAAOA,EAAIC,kBAAmBD,MAC9Bl/B,EAAS,MACF,MAAPk/B,UAAsBltD,KAAKktD,EAAe,YAANltD,GAAmBoK,OAAO+P,eAAelW,KAAKipD,EAAKltD,OAAoBguB,EAAQk/B,EAAKltD,aACzGguB,EAAQk/B,GACpBl/B,GAEX5jB,OAAOuC,eAAeygD,GAAS,aAAc,CAAEzsD,OAAO,IACtD,4CAA8C,EAC9C,MAAMo+C,GAASjvC,GACTu9C,GAAgBt9C,GAChBu9C,GAAYr9C,GAClB,sBAAsBg9C,GAAax2C,IAMnC,yBALA,iBACUsC,EAAc,IAAIgmC,GAAOwO,6BACjBC,gBAAgBz0C,GACvBA,GAsBX00C,iBALA,SAAoB10C,SACVP,EAAU,IAAIumC,GAAO2O,yBACjBC,YAAYn1C,EAASO,GACxBP,iMChDXpO,OAAOuC,eAAe8rC,GAAS,aAAc,CAAE93C,OAAO,4BAC5B,qBAC1B,SAAyBoY,KACT2/B,SAAS,sBAAuB,CACxC,+BACA,yBACA,0BACA,8BACA,gCACA,6BACA,yBACA,kCACA,4BACA,2BACA,wBACA,+BACA,iCACA,6BACA,0BACA,+BACA,gCACA,uBACA,8BACA,oCACA,+BACA,+BACA,uBACA,6BACA,qBACA,0BACA,yBACA,4CACA,+BACA,0CACA,iCACA,4BACA,gCACA,0BACA,yBACA,6BACA,2BACA,4BACA,wBACA,uBACA,iBACA,4CACA,2BACA,uBACA,uBACA,2BACA,gCAEQA,SAAS,UAAW,CAC5B,mBACA,aACA,WACA,WACA,cACA,WACA,cACA,iBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,gBACA,WACA,WACA,2BACA,eACA,iBACA,YACA,2BACA,iBACA,mBACA,YACA,wBACA,aACA,kBACA,wBACA,cAEQA,SAAS,OAAQ,CACzB,WACA,UACA,OACA,QACA,OACA,WAEQA,SAAS,WAAY,CAC7B,WACA,WACA,YACA,gBAEQA,SAAS,gBAAiB,CAClC,OACA,SACA,gBACA,oBAEQA,SAAS,cAAe,CAChC,eACA,OACA,SACA,oBAEQA,SAAS,iCAAkC,CACnD,gCACA,sCACA,0BAEQA,SAAS,iBAAkB,CACnC,UACA,WACA,SACA,QACA,aACA,cACA,WACA,eACA,iBACA,oBACA,QACA,eACA,gBACA,iBACA,oBACA,gBACA,cACA,cACA,cACA,oBACA,cACA,gBACA,cACA,eACA,eACA,aACA,mBAEQA,SAAS,cAAe,CAChC,kBACA,kBACA,iBACA,UACA,WACA,QACA,iBACA,UACA,YACA,WACA,gBACA,aACA,mBACA,gBACA,YACA,aACA,YACA,cAEQA,SAAS,eAAgB,CACjC,MACA,iBACA,aACA,gBACA,YACA,qBACA,WACA,cACA,OACA,cACA,iBACA,oBACA,SACA,gBACA,cACA,qBACA,eACA,SACA,kBACA,wBACA,OACA,YACA,aACA,WACA,UACA,kBACA,gBACA,aACA,WACA,cACA,aACA,SACA,OACA,OACA,QACA,WACA,YACA,SACA,sBAEQA,SAAS,iBAAkB,CACnC,QACA,SACA,gBACA,SACA,MACA,SACA,OACA,WACA,WACA,SACA,OACA,QACA,SACA,QACA,UACA,QACA,QACA,UACA,kBAEQA,SAAS,iBAAkB,CACnC,kBACA,4BACA,cACA,iBACA,gBACA,uBAEQA,SAAS,kBAAmB,CACpC,MACA,aAEQA,SAAS,oBAAqB,CACtC,kBACA,kBACA,oBACA,qBACA,oBACA,mBACA,iBACA,mBACA,+BACA,+BACA,oBACA,sBAEQA,SAAS,iBAAkB,CACnC,OACA,qBACA,sBACA,kBACA,mBACA,gBACA,aACA,cACA,eACA,gBACA,gBACA,mBACA,kBACA,gBACA,QACA,iBACA,kBACA,eACA,mBACA,gBACA,gBACA,oBACA,mBACA,iBACA,SACA,UACA,gBACA,kBACA,sBACA,yBACA,SACA,eACA,WACA,cACA,SA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"} \ No newline at end of file diff --git a/changelog/index.html b/changelog/index.html new file mode 100644 index 00000000..26a6aaa4 --- /dev/null +++ b/changelog/index.html @@ -0,0 +1,31 @@ + + + + + + + Technical Changelog Minecraft 1.16, 1.17, 1.18 + + + + + + + +
    + + + diff --git a/dimension-type/index.html b/dimension-type/index.html index 4c2e615f..33fc4747 100644 --- a/dimension-type/index.html +++ b/dimension-type/index.html @@ -20,9 +20,9 @@ Dimension Type Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/dimension/index.html b/dimension/index.html index 6e1e07f6..69236c55 100644 --- a/dimension/index.html +++ b/dimension/index.html @@ -20,9 +20,9 @@ Dimension Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/index.html b/index.html index f778afb1..6a4f9b65 100644 --- a/index.html +++ b/index.html @@ -20,9 +20,9 @@ Data Pack Generators Minecraft 1.15, 1.16, 1.17 - - - + + +
    diff --git a/item-modifier/index.html b/item-modifier/index.html index 74187066..2a37ad43 100644 --- a/item-modifier/index.html +++ b/item-modifier/index.html @@ -20,9 +20,9 @@ Item Modifier Generator Minecraft 1.17, 1.18 - - - + + +
    diff --git a/loot-table/index.html b/loot-table/index.html index 955bc862..bc280198 100644 --- a/loot-table/index.html +++ b/loot-table/index.html @@ -20,9 +20,9 @@ Loot Table Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/predicate/index.html b/predicate/index.html index b6409ee0..d68cc825 100644 --- a/predicate/index.html +++ b/predicate/index.html @@ -20,9 +20,9 @@ Predicate Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/recipe/index.html b/recipe/index.html index 3b2c2a84..b6d9783b 100644 --- a/recipe/index.html +++ b/recipe/index.html @@ -20,9 +20,9 @@ Recipe Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/sounds/index.html b/sounds/index.html index aea78839..fb3de7bd 100644 --- a/sounds/index.html +++ b/sounds/index.html @@ -20,9 +20,9 @@ Sound Explorer Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/world/index.html b/world/index.html index a9154890..1eaf9d43 100644 --- a/world/index.html +++ b/world/index.html @@ -20,9 +20,9 @@ World Settings Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/worldgen/biome/index.html b/worldgen/biome/index.html index ea9311f4..0b9cba8c 100644 --- a/worldgen/biome/index.html +++ b/worldgen/biome/index.html @@ -20,9 +20,9 @@ Biome Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/worldgen/carver/index.html b/worldgen/carver/index.html index a590eefa..ca9d1164 100644 --- a/worldgen/carver/index.html +++ b/worldgen/carver/index.html @@ -20,9 +20,9 @@ Carver Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/worldgen/feature/index.html b/worldgen/feature/index.html index 5d124b4c..cf6c9b83 100644 --- a/worldgen/feature/index.html +++ b/worldgen/feature/index.html @@ -20,9 +20,9 @@ Feature Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/worldgen/noise-settings/index.html b/worldgen/noise-settings/index.html index d78cc7e5..a46ae436 100644 --- a/worldgen/noise-settings/index.html +++ b/worldgen/noise-settings/index.html @@ -20,9 +20,9 @@ Noise Settings Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/worldgen/noise/index.html b/worldgen/noise/index.html index a4c5c6df..54ba85fd 100644 --- a/worldgen/noise/index.html +++ b/worldgen/noise/index.html @@ -20,9 +20,9 @@ Noise Generator Minecraft 1.18 - - - + + +
    diff --git a/worldgen/processor-list/index.html b/worldgen/processor-list/index.html index ba3a9276..72076671 100644 --- a/worldgen/processor-list/index.html +++ b/worldgen/processor-list/index.html @@ -20,9 +20,9 @@ Processor List Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/worldgen/structure-feature/index.html b/worldgen/structure-feature/index.html index 905a6578..2376b0d5 100644 --- a/worldgen/structure-feature/index.html +++ b/worldgen/structure-feature/index.html @@ -20,9 +20,9 @@ Structure Feature Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/worldgen/surface-builder/index.html b/worldgen/surface-builder/index.html index 149c38a8..95dbc120 100644 --- a/worldgen/surface-builder/index.html +++ b/worldgen/surface-builder/index.html @@ -20,9 +20,9 @@ Surface Builder Generator Minecraft 1.16, 1.17, 1.18 - - - + + +
    diff --git a/worldgen/template-pool/index.html b/worldgen/template-pool/index.html index ea8535c9..c5910c89 100644 --- a/worldgen/template-pool/index.html +++ b/worldgen/template-pool/index.html @@ -20,9 +20,9 @@ Template Pool Generator Minecraft 1.16, 1.17, 1.18 - - - + + +