js-sdsl
Version:
javascript standard data structure library which benchmark against C++ STL
9 lines (8 loc) • 33 kB
JavaScript
/*!
* js-sdsl v4.4.2
* https://github.com/js-sdsl/js-sdsl
* (c) 2021-present ZLY201 <zilongyao1366@gmail.com>
* MIT license
*/
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self).sdsl={})}(this,function(t){"use strict";var L=function(t,i){return(L=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(t,i){t.__proto__=i}:function(t,i){for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(t[r]=i[r])}))(t,i)};function i(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=t}L(t,i),t.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}function s(e,n){var s,o,h,u={label:0,sent:function(){if(1&h[0])throw h[1];return h[1]},trys:[],ops:[]},f={next:t(0),throw:t(1),return:t(2)};return"function"==typeof Symbol&&(f[Symbol.iterator]=function(){return this}),f;function t(r){return function(t){var i=[r,t];if(s)throw new TypeError("Generator is already executing.");for(;u=f&&i[f=0]?0:u;)try{if(s=1,o&&(h=2&i[0]?o.return:i[0]?o.throw||((h=o.return)&&h.call(o),0):o.next)&&!(h=h.call(o,i[1])).done)return h;switch(o=0,(i=h?[2&i[0],h.value]:i)[0]){case 0:case 1:h=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,o=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(h=0<(h=u.trys).length&&h[h.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!h||i[1]>h[0]&&i[1]<h[3]))u.label=i[1];else if(6===i[0]&&u.label<h[1])u.label=h[1],h=i;else{if(!(h&&u.label<h[2])){h[2]&&u.ops.pop(),u.trys.pop();continue}u.label=h[2],u.ops.push(i)}}i=n.call(e,u)}catch(t){i=[6,t],o=0}finally{s=h=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}}function h(t,i){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var e,n,s=r.call(t),o=[];try{for(;(void 0===i||0<i--)&&!(e=s.next()).done;)o.push(e.value)}catch(t){n={error:t}}finally{try{e&&!e.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return o}function u(t,i,r){if(r||2===arguments.length)for(var e,n=0,s=i.length;n<s;n++)!e&&n in i||((e=e||Array.prototype.slice.call(i,0,n))[n]=i[n]);return t.concat(e||Array.prototype.slice.call(i))}C.prototype.equals=function(t){return this.t===t.t};var r=C;function C(t){this.iteratorType=t=void 0===t?0:t}Object.defineProperty(j.prototype,"length",{get:function(){return this.i},enumerable:!1,configurable:!0}),j.prototype.size=function(){return this.i},j.prototype.empty=function(){return 0===this.i};var e=j;function j(){this.i=0}i(q,D=e);var D,V=q;function q(){return null!==D&&D.apply(this,arguments)||this}i(n,R=e),n.prototype.clear=function(){this.i=0,this.h=[]},n.prototype.push=function(t){return this.h.push(t),this.i+=1,this.i},n.prototype.pop=function(){if(0!==this.i)return--this.i,this.h.pop()},n.prototype.top=function(){return this.h[this.i-1]};var R,_=n;function n(t){void 0===t&&(t=[]);var i=R.call(this)||this,r=(i.h=[],i);return t.forEach(function(t){r.push(t)}),i}i(o,M=e),o.prototype.clear=function(){this.o=[],this.i=this.u=0},o.prototype.push=function(t){var i=this.o.length;if(.5<this.u/i&&this.u+this.i>=i&&4096<i){for(var r=this.i,e=0;e<r;++e)this.o[e]=this.o[this.u+e];this.u=0,this.o[this.i]=t}else this.o[this.u+this.i]=t;return++this.i},o.prototype.pop=function(){var t;if(0!==this.i)return t=this.o[this.u++],--this.i,t},o.prototype.front=function(){if(0!==this.i)return this.o[this.u]};var M,K=o;function o(t){void 0===t&&(t=[]);var i=M.call(this)||this,r=(i.u=0,i.o=[],i);return t.forEach(function(t){r.push(t)}),i}i(f,U=e),f.prototype.p=function(t){for(var i=this.l[t];0<t;){var r=t-1>>1,e=this.l[r];if(this.v(e,i)<=0)break;this.l[t]=e,t=r}this.l[t]=i},f.prototype._=function(t,i){for(var r=this.l[t];t<i;){var e=t<<1|1,n=e+1,s=this.l[e];if(n<this.i&&0<this.v(s,this.l[n])&&(s=this.l[e=n]),0<=this.v(s,r))break;this.l[t]=s,t=e}this.l[t]=r},f.prototype.clear=function(){this.i=0,this.l.length=0},f.prototype.push=function(t){this.l.push(t),this.p(this.i),this.i+=1},f.prototype.pop=function(){var t,i;if(0!==this.i)return t=this.l[0],i=this.l.pop(),--this.i,this.i&&(this.l[0]=i,this._(0,this.i>>1)),t},f.prototype.top=function(){return this.l[0]},f.prototype.find=function(t){return 0<=this.l.indexOf(t)},f.prototype.remove=function(t){t=this.l.indexOf(t);return!(t<0||(0===t?this.pop():t===this.i-1?(this.l.pop(),--this.i):(this.l.splice(t,1,this.l.pop()),--this.i,this.p(t),this._(t,this.i>>1)),0))},f.prototype.updateItem=function(t){t=this.l.indexOf(t);return!(t<0||(this.p(t),this._(t,this.i>>1),0))},f.prototype.toArray=function(){return u([],h(this.l),!1)};var U,e=f;function f(t,i,r){void 0===t&&(t=[]),void 0===i&&(i=function(t,i){return i<t?-1:t<i?1:0}),void 0===r&&(r=!0);for(var e,n=U.call(this)||this,s=(n.v=i,Array.isArray(t)?n.l=r?u([],h(t),!1):t:(n.l=[],e=n,t.forEach(function(t){e.l.push(t)})),n.i=n.l.length,n.i>>1),o=n.i-1>>1;0<=o;--o)n._(o,s);return n}i(z,J=V);var J,p=z;function z(){return null!==J&&J.apply(this,arguments)||this}function c(){throw new RangeError("Iterator access denied!")}i(Z,W=r),Object.defineProperty(Z.prototype,"pointer",{get:function(){return this.container.getElementByPos(this.t)},set:function(t){this.container.setElementByPos(this.t,t)},enumerable:!1,configurable:!0}),Z.prototype.isAccessible=function(){return this.t!==this.container.size()};var W,Y=Z;function Z(t,i){i=W.call(this,i)||this;return i.t=t,0===i.iteratorType?(i.pre=function(){return 0===this.t&&c(),--this.t,this},i.next=function(){return this.t===this.container.size()&&c(),this.t+=1,this}):(i.pre=function(){return this.t===this.container.size()-1&&c(),this.t+=1,this},i.next=function(){return-1===this.t&&c(),--this.t,this}),i}i(Q,$=Y),Q.prototype.copy=function(){return new Q(this.t,this.container,this.iteratorType)};var $,a=Q;function Q(t,i,r){t=$.call(this,t,r)||this;return t.container=i,t}i(l,tt=p),l.prototype.clear=function(){this.i=0,this.I.length=0},l.prototype.begin=function(){return new a(0,this)},l.prototype.end=function(){return new a(this.i,this)},l.prototype.rBegin=function(){return new a(this.i-1,this,1)},l.prototype.rEnd=function(){return new a(-1,this,1)},l.prototype.front=function(){return this.I[0]},l.prototype.back=function(){return this.I[this.i-1]},l.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;return this.I[t]},l.prototype.eraseElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;return this.I.splice(t,1),--this.i,this.i},l.prototype.eraseElementByValue=function(t){for(var i=0,r=0;r<this.i;++r)this.I[r]!==t&&(this.I[i++]=this.I[r]);return this.i=this.I.length=i,this.i},l.prototype.eraseElementByIterator=function(t){var i=t.t;return t=t.next(),this.eraseElementByPos(i),t},l.prototype.pushBack=function(t){return this.I.push(t),this.i+=1,this.i},l.prototype.popBack=function(){if(0!==this.i)return--this.i,this.I.pop()},l.prototype.setElementByPos=function(t,i){if(t<0||t>this.i-1)throw new RangeError;this.I[t]=i},l.prototype.insert=function(t,i,r){var e;if(void 0===r&&(r=1),t<0||t>this.i)throw new RangeError;return(e=this.I).splice.apply(e,u([t,0],h(new Array(r).fill(i)),!1)),this.i+=r,this.i},l.prototype.find=function(t){for(var i=0;i<this.i;++i)if(this.I[i]===t)return new a(i,this);return this.end()},l.prototype.reverse=function(){return this.I.reverse(),this},l.prototype.unique=function(){for(var t=1,i=1;i<this.i;++i)this.I[i]!==this.I[i-1]&&(this.I[t++]=this.I[i]);return this.i=this.I.length=t,this.i},l.prototype.sort=function(t){return this.I.sort(t),this},l.prototype.forEach=function(t){for(var i=0;i<this.i;++i)t(this.I[i],i,this)},l.prototype[Symbol.iterator]=function(){return s(this,function(t){switch(t.label){case 0:return[5,function(t){var i="function"==typeof Symbol&&Symbol.iterator,r=i&&t[i],e=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return{value:(t=t&&e>=t.length?void 0:t)&&t[e++],done:!t}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")}(this.I)];case 1:return t.sent(),[2]}})};var tt,it=l;function l(t,i){void 0===t&&(t=[]),void 0===i&&(i=!0);var r,e=tt.call(this)||this;return Array.isArray(t)?(e.I=i?u([],h(t),!1):t,e.i=t.length):(e.I=[],r=e,t.forEach(function(t){r.pushBack(t)})),e}i(v,rt=r),Object.defineProperty(v.prototype,"pointer",{get:function(){return this.t===this.S&&c(),this.t.k},set:function(t){this.t===this.S&&c(),this.t.k=t},enumerable:!1,configurable:!0}),v.prototype.copy=function(){return new v(this.t,this.S,this.container,this.iteratorType)},v.prototype.isAccessible=function(){return this.t!==this.S};var rt,y=v;function v(t,i,r,e){e=rt.call(this,e)||this;return e.t=t,e.S=i,e.container=r,0===e.iteratorType?(e.pre=function(){return this.t.L===this.S&&c(),this.t=this.t.L,this},e.next=function(){return this.t===this.S&&c(),this.t=this.t.O,this}):(e.pre=function(){return this.t.O===this.S&&c(),this.t=this.t.O,this},e.next=function(){return this.t===this.S&&c(),this.t=this.t.L,this}),e}i(S,et=p),S.prototype.M=function(t){var i=t.L,r=t.O;(i.O=r).L=i,t===this.H&&(this.H=r),t===this.g&&(this.g=i),--this.i},S.prototype.A=function(t,i){var r=i.O,t={k:t,L:i,O:r};i.O=t,r.L=t,i===this.S&&(this.H=t),r===this.S&&(this.g=t),this.i+=1},S.prototype.clear=function(){this.i=0,this.H=this.g=this.S.L=this.S.O=this.S},S.prototype.begin=function(){return new y(this.H,this.S,this)},S.prototype.end=function(){return new y(this.S,this.S,this)},S.prototype.rBegin=function(){return new y(this.g,this.S,this,1)},S.prototype.rEnd=function(){return new y(this.S,this.S,this,1)},S.prototype.front=function(){return this.H.k},S.prototype.back=function(){return this.g.k},S.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return i.k},S.prototype.eraseElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return this.M(i),this.i},S.prototype.eraseElementByValue=function(t){for(var i=this.H;i!==this.S;)i.k===t&&this.M(i),i=i.O;return this.i},S.prototype.eraseElementByIterator=function(t){var i=t.t;return i===this.S&&c(),t=t.next(),this.M(i),t},S.prototype.pushBack=function(t){return this.A(t,this.g),this.i},S.prototype.popBack=function(){var t;if(0!==this.i)return t=this.g.k,this.M(this.g),t},S.prototype.pushFront=function(t){return this.A(t,this.S),this.i},S.prototype.popFront=function(){var t;if(0!==this.i)return t=this.H.k,this.M(this.H),t},S.prototype.setElementByPos=function(t,i){if(t<0||t>this.i-1)throw new RangeError;for(var r=this.H;t--;)r=r.O;r.k=i},S.prototype.insert=function(t,i,r){if(void 0===r&&(r=1),t<0||t>this.i)throw new RangeError;if(!(r<=0))if(0===t)for(;r--;)this.pushFront(i);else if(t===this.i)for(;r--;)this.pushBack(i);else{for(var e=this.H,n=1;n<t;++n)e=e.O;var s=e.O;for(this.i+=r;r--;)e.O={k:i,L:e},e=(e.O.L=e).O;(e.O=s).L=e}return this.i},S.prototype.find=function(t){for(var i=this.H;i!==this.S;){if(i.k===t)return new y(i,this.S,this);i=i.O}return this.end()},S.prototype.reverse=function(){if(!(this.i<=1))for(var t=this.H,i=this.g,r=0;r<<1<this.i;){var e=t.k;t.k=i.k,i.k=e,t=t.O,i=i.L,r+=1}return this},S.prototype.unique=function(){if(!(this.i<=1))for(var t=this.H;t!==this.S;){for(var i=t;i.O!==this.S&&i.k===i.O.k;)i=i.O,--this.i;t.O=i.O,t=(t.O.L=t).O}return this.i},S.prototype.sort=function(t){var i,r;return this.i<=1||(i=[],this.forEach(function(t){i.push(t)}),i.sort(t),r=this.H,i.forEach(function(t){r.k=t,r=r.O})),this},S.prototype.merge=function(t){var i,r=this;return 0===this.i?t.forEach(function(t){r.pushBack(t)}):(i=this.H,t.forEach(function(t){for(;i!==r.S&&i.k<=t;)i=i.O;r.A(t,i.L)})),this.i},S.prototype.forEach=function(t){for(var i=this.H,r=0;i!==this.S;)t(i.k,r++,this),i=i.O},S.prototype[Symbol.iterator]=function(){var i;return s(this,function(t){switch(t.label){case 0:if(0===this.i)return[2];i=this.H,t.label=1;case 1:return i===this.S?[3,3]:[4,i.k];case 2:return t.sent(),i=i.O,[3,1];case 3:return[2]}})};var et,nt=S;function S(t){void 0===t&&(t=[]);var i=et.call(this)||this,r=(i.S={},i.H=i.g=i.S.L=i.S.O=i.S,i);return t.forEach(function(t){r.pushBack(t)}),i}function st(t,i){return Math.floor((t+i-1)/i)}var ot,ht=Math.floor,d=(i(ut,ot=Y),ut.prototype.copy=function(){return new ut(this.t,this.container,this.iteratorType)},ut);function ut(t,i,r){t=ot.call(this,t,r)||this;return t.container=i,t}i(P,ft=p),P.prototype.R=function(t){for(var i=[],r=t||this.m>>1||1,e=0;e<r;++e)i[e]=new Array(this.V);for(e=this.u;e<this.m;++e)i[i.length]=this.D[e];for(e=0;e<this.C;++e)i[i.length]=this.D[e];i[i.length]=u([],h(this.D[this.C]),!1),this.u=r,this.C=i.length-1;for(e=0;e<r;++e)i[i.length]=new Array(this.V);this.D=i,this.m=i.length},P.prototype.j=function(t){var t=this.T+t,i=this.u+ht(t/this.V);return i>=this.m&&(i-=this.m),{curNodeBucketIndex:i,curNodePointerIndex:i=(i=(t+1)%this.V-1)<0?this.V-1:i}},P.prototype.clear=function(){this.D=[new Array(this.V)],this.m=1,this.u=this.C=this.i=0,this.T=this.q=this.V>>1},P.prototype.begin=function(){return new d(0,this)},P.prototype.end=function(){return new d(this.i,this)},P.prototype.rBegin=function(){return new d(this.i-1,this,1)},P.prototype.rEnd=function(){return new d(-1,this,1)},P.prototype.front=function(){if(0!==this.i)return this.D[this.u][this.T]},P.prototype.back=function(){if(0!==this.i)return this.D[this.C][this.q]},P.prototype.pushBack=function(t){return this.i&&(this.q<this.V-1?this.q+=1:(this.C<this.m-1?this.C+=1:this.C=0,this.q=0),this.C===this.u)&&this.q===this.T&&this.R(),this.i+=1,this.D[this.C][this.q]=t,this.i},P.prototype.popBack=function(){var t;if(0!==this.i)return t=this.D[this.C][this.q],1!==this.i&&(0<this.q?--this.q:(0<this.C?--this.C:this.C=this.m-1,this.q=this.V-1)),--this.i,t},P.prototype.pushFront=function(t){return this.i&&(0<this.T?--this.T:(0<this.u?--this.u:this.u=this.m-1,this.T=this.V-1),this.u===this.C)&&this.T===this.q&&this.R(),this.i+=1,this.D[this.u][this.T]=t,this.i},P.prototype.popFront=function(){var t;if(0!==this.i)return t=this.D[this.u][this.T],1!==this.i&&(this.T<this.V-1?this.T+=1:(this.u<this.m-1?this.u+=1:this.u=0,this.T=0)),--this.i,t},P.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;var t=this.j(t),i=t.curNodeBucketIndex,t=t.curNodePointerIndex;return this.D[i][t]},P.prototype.setElementByPos=function(t,i){if(t<0||t>this.i-1)throw new RangeError;var t=this.j(t),r=t.curNodeBucketIndex,t=t.curNodePointerIndex;this.D[r][t]=i},P.prototype.insert=function(t,i,r){void 0===r&&(r=1);var e=this.i;if(t<0||e<t)throw new RangeError;if(0===t)for(;r--;)this.pushFront(i);else if(t===this.i)for(;r--;)this.pushBack(i);else{for(var n=[],s=t;s<this.i;++s)n.push(this.getElementByPos(s));this.cut(t-1);for(s=0;s<r;++s)this.pushBack(i);for(s=0;s<n.length;++s)this.pushBack(n[s])}return this.i},P.prototype.cut=function(t){var i,r;return t<0?(this.clear(),0):(i=(r=this.j(t)).curNodeBucketIndex,r=r.curNodePointerIndex,this.C=i,this.q=r,this.i=t+1,this.i)},P.prototype.eraseElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;if(0===t)this.popFront();else{if(t!==this.i-1)for(var i=this.i-1,r=this.j(t),e=r.curNodeBucketIndex,n=r.curNodePointerIndex,s=t;s<i;++s){var o=this.j(t+1),h=o.curNodeBucketIndex,o=o.curNodePointerIndex;this.D[e][n]=this.D[h][o],e=h,n=o}this.popBack()}return this.i},P.prototype.eraseElementByValue=function(t){var i=this.i;if(0===i)return 0;for(var r=0,e=0;r<i;){var n=this.getElementByPos(r);n!==t&&(this.setElementByPos(e,n),e+=1),r+=1}return this.cut(e-1),this.i},P.prototype.eraseElementByIterator=function(t){var i=t.t;return this.eraseElementByPos(i),t=t.next()},P.prototype.find=function(t){for(var i=0;i<this.i;++i)if(this.getElementByPos(i)===t)return new d(i,this);return this.end()},P.prototype.reverse=function(){this.D.reverse().forEach(function(t){t.reverse()});var t=this.u,i=this.C,r=this.T,e=this.q;return this.u=this.m-i-1,this.C=this.m-t-1,this.T=this.V-e-1,this.q=this.V-r-1,this},P.prototype.unique=function(){if(!(this.i<=1)){for(var t=1,i=this.getElementByPos(0),r=1;r<this.i;++r){var e=this.getElementByPos(r);e!==i&&this.setElementByPos(t++,i=e)}this.cut(t-1)}return this.i},P.prototype.sort=function(t){for(var i=[],r=0;r<this.i;++r)i.push(this.getElementByPos(r));i.sort(t);for(r=0;r<this.i;++r)this.setElementByPos(r,i[r]);return this},P.prototype.shrinkToFit=function(){if(0!==this.i){var t=[];if(this.u!==this.C){if(this.u<this.C)for(var i=this.u;i<=this.C;++i)t.push(this.D[i]);else{for(i=this.u;i<this.m;++i)t.push(this.D[i]);for(i=0;i<=this.C;++i)t.push(this.D[i])}this.u=0,this.C=t.length-1,this.D=t}}},P.prototype.forEach=function(t){for(var i=0;i<this.i;++i)t(this.getElementByPos(i),i,this)},P.prototype[Symbol.iterator]=function(){var i;return s(this,function(t){switch(t.label){case 0:i=0,t.label=1;case 1:return i<this.i?[4,this.getElementByPos(i)]:[3,4];case 2:t.sent(),t.label=3;case 3:return++i,[3,1];case 4:return[2]}})};var ft,Y=P;function P(t,i){void 0===t&&(t=[]),void 0===i&&(i=4096);var r=ft.call(this)||this,e=(r.u=0,r.T=0,r.C=0,r.q=0,r.m=0,r.D=[],function(){if("number"==typeof t.length)return t.length;if("number"==typeof t.size)return t.size;if("function"==typeof t.size)return t.size();throw new TypeError("Cannot get the length or size of the container")}());r.V=i,r.m=st(e,r.V)||1;for(var n=0;n<r.m;++n)r.D.push(new Array(r.V));var i=st(e,r.V),s=(r.u=r.C=(r.m>>1)-(i>>1),r.T=r.q=r.V-e%r.V>>1,r);return t.forEach(function(t){s.pushBack(t)}),r}w.prototype.L=function(){var t=this,i=t.B.B===t;if(i&&1===t.F)t=t.N;else if(t.P)for(t=t.P;t.N;)t=t.N;else{if(i)return t.B;for(var r=t.B;r.P===t;)r=(t=r).B;t=r}return t},w.prototype.O=function(){var t=this;if(t.N){for(t=t.N;t.P;)t=t.P;return t}for(var i=t.B;i.N===t;)i=(t=i).B;return t.N!==i?i:t},w.prototype.J=function(){var t=this.B,i=this.N,r=i.P;return t.B===this?t.B=i:t.P===this?t.P=i:t.N=i,i.B=t,(i.P=this).B=i,(this.N=r)&&(r.B=this),i},w.prototype.K=function(){var t=this.B,i=this.P,r=i.N;return t.B===this?t.B=i:t.P===this?t.P=i:t.N=i,i.B=t,(i.N=this).B=i,(this.P=r)&&(r.B=this),i};var pt=w;function w(t,i,r){void 0===r&&(r=1),this.P=void 0,this.N=void 0,this.B=void 0,this.G=t,this.k=i,this.F=r}i(g,B=pt),g.prototype.J=function(){var t=B.prototype.J.call(this);return this.W(),t.W(),t},g.prototype.K=function(){var t=B.prototype.K.call(this);return this.W(),t.W(),t},g.prototype.W=function(){this.U=1,this.P&&(this.U+=this.P.U),this.N&&(this.U+=this.N.U)};var B,ct=g;function g(){var t=null!==B&&B.apply(this,arguments)||this;return t.U=1,t}i(b,at=V),b.prototype.Z=function(t,i){for(var r=this.S;t;){var e=this.v(t.G,i);if(e<0)t=t.N;else{if(!(0<e))return t;t=(r=t).P}}return r},b.prototype.$=function(t,i){for(var r=this.S;t;)t=this.v(t.G,i)<=0?t.N:(r=t).P;return r},b.prototype.tt=function(t,i){for(var r=this.S;t;){var e=this.v(t.G,i);if(e<0)t=(r=t).N;else{if(!(0<e))return t;t=t.P}}return r},b.prototype.it=function(t,i){for(var r=this.S;t;)t=this.v(t.G,i)<0?(r=t).N:t.P;return r},b.prototype.rt=function(t){for(;;){var i,r=t.B;if(r===this.S)return;if(1===t.F)return void(t.F=0);if(t===r.P)if(1===(i=r.N).F)i.F=0,r.F=1,r===this.X?this.X=r.J():r.J();else{if(i.N&&1===i.N.F)return i.F=r.F,r.F=0,i.N.F=0,void(r===this.X?this.X=r.J():r.J());i.P&&1===i.P.F?(i.F=1,i.P.F=0,i.K()):(i.F=1,t=r)}else if(1===(i=r.P).F)i.F=0,r.F=1,r===this.X?this.X=r.K():r.K();else{if(i.P&&1===i.P.F)return i.F=r.F,r.F=0,i.P.F=0,void(r===this.X?this.X=r.K():r.K());i.N&&1===i.N.F?(i.F=1,i.N.F=0,i.J()):(i.F=1,t=r)}}},b.prototype.M=function(t){if(1===this.i)this.clear();else{for(var i=t;i.P||i.N;){if(i.N)for(i=i.N;i.P;)i=i.P;else i=i.P;var r=t.G,r=(t.G=i.G,i.G=r,t.k);t.k=i.k,i.k=r,t=i}this.S.P===i?this.S.P=i.B:this.S.N===i&&(this.S.N=i.B),this.rt(i);var e=i.B;if(i===e.P?e.P=void 0:e.N=void 0,--this.i,this.X.F=0,this.enableIndex)for(;e!==this.S;)--e.U,e=e.B}},b.prototype.et=function(t){for(var i="number"==typeof t?t:void 0,r="function"==typeof t?t:void 0,e=void 0===t?[]:void 0,n=0,s=this.X,o=[];o.length||s;)if(s)o.push(s),s=s.P;else{if(s=o.pop(),n===i)return s;e&&e.push(s),r&&r(s,n,this),n+=1,s=s.N}return e},b.prototype.nt=function(t){for(;;){var i=t.B;if(0===i.F)return;var r,e,n=i.B;if(i===n.P){if((r=n.N)&&1===r.F){if(r.F=i.F=0,n===this.X)return;n.F=1,t=n;continue}if(t!==i.N)return i.F=0,n===this.X?this.X=n.K():n.K(),void(n.F=1);t.F=0,t.P&&(t.P.B=i),t.N&&(t.N.B=n),i.N=t.P,n.P=t.N,t.P=i,(t.N=n)===this.X?(this.X=t,this.S.B=t):(e=n.B).P===n?e.P=t:e.N=t}else{if((r=n.P)&&1===r.F){if(r.F=i.F=0,n===this.X)return;n.F=1,t=n;continue}if(t!==i.P)return i.F=0,n===this.X?this.X=n.J():n.J(),void(n.F=1);t.F=0,t.P&&(t.P.B=n),t.N&&(t.N.B=i),n.N=t.P,i.P=t.N,t.P=n,t.N=i,n===this.X?(this.X=t,this.S.B=t):(e=n.B).P===n?e.P=t:e.N=t}return t.B=n.B,i.B=t,n.B=t,n.F=1,void(this.enableIndex&&(i.W(),n.W(),t.W()))}},b.prototype.st=function(t,i,r){if(void 0===this.X)this.i+=1,this.X=new this.Y(t,i,0),this.X.B=this.S,this.S.B=this.S.P=this.S.N=this.X;else{var e,n=this.S.P,s=this.v(n.G,t);if(0===s)n.k=i;else{if(0<s)n.P=new this.Y(t,i),e=(n.P.B=n).P,this.S.P=e;else{s=this.S.N,n=this.v(s.G,t);if(0===n)return s.k=i,this.i;if(n<0)s.N=new this.Y(t,i),e=(s.N.B=s).N,this.S.N=e;else{if(void 0!==r){n=r.t;if(n!==this.S){s=this.v(n.G,t);if(0===s)return n.k=i,this.i;if(0<s){r=n.L(),s=this.v(r.G,t);if(0===s)return r.k=i,this.i;s<0&&(e=new this.Y(t,i),void 0===r.N?(r.N=e).B=r:(n.P=e).B=n)}}}if(void 0===e)for(e=this.X;;){var o=this.v(e.G,t);if(0<o){if(void 0===e.P){e.P=new this.Y(t,i),e=(e.P.B=e).P;break}e=e.P}else{if(!(o<0))return e.k=i,this.i;if(void 0===e.N){e.N=new this.Y(t,i),e=(e.N.B=e).N;break}e=e.N}}}}if(this.enableIndex)for(var h=e.B;h!==this.S;)h.U+=1,h=h.B;this.nt(e),this.i+=1}}return this.i},b.prototype.ht=function(t,i){for(;t;){var r=this.v(t.G,i);if(r<0)t=t.N;else{if(!(0<r))return t;t=t.P}}return t||this.S},b.prototype.clear=function(){this.i=0,this.X=void 0,this.S.B=void 0,this.S.P=this.S.N=void 0},b.prototype.updateKeyByIterator=function(t,i){t=t.t;if(t===this.S&&c(),1!==this.i){var r=t.O().G;if(t===this.S.P)return 0<this.v(r,i)&&(t.G=i,!0);var e=t.L().G;if(t===this.S.N)return this.v(e,i)<0&&(t.G=i,!0);if(0<=this.v(e,i)||this.v(r,i)<=0)return!1}return t.G=i,!0},b.prototype.eraseElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;t=this.et(t);return this.M(t),this.i},b.prototype.eraseElementByKey=function(t){return 0!==this.i&&(t=this.ht(this.X,t))!==this.S&&(this.M(t),!0)},b.prototype.eraseElementByIterator=function(t){var i=t.t,r=(i===this.S&&c(),void 0===i.N);return 0===t.iteratorType?r&&t.next():r&&void 0!==i.P||t.next(),this.M(i),t},b.prototype.getHeight=function(){return 0===this.i?0:function t(i){return i?Math.max(t(i.P),t(i.N))+1:0}(this.X)};var at,p=b;function b(t,i){void 0===t&&(t=function(t,i){return t<i?-1:i<t?1:0}),void 0===i&&(i=!1);var r=at.call(this)||this;return r.X=void 0,r.v=t,r.enableIndex=i,r.Y=i?ct:pt,r.S=new r.Y,r}i(vt,lt=r),Object.defineProperty(vt.prototype,"index",{get:function(){var t=this.t,i=this.S.B;if(t===this.S)return i?i.U-1:0;var r=0;for(t.P&&(r+=t.P.U);t!==i;){var e=t.B;t===e.N&&(r+=1,e.P)&&(r+=e.P.U),t=e}return r},enumerable:!1,configurable:!0}),vt.prototype.isAccessible=function(){return this.t!==this.S};var lt,yt=vt;function vt(t,i,r){r=lt.call(this,r)||this;return r.t=t,r.S=i,0===r.iteratorType?(r.pre=function(){return this.t===this.S.P&&c(),this.t=this.t.L(),this},r.next=function(){return this.t===this.S&&c(),this.t=this.t.O(),this}):(r.pre=function(){return this.t===this.S.N&&c(),this.t=this.t.O(),this},r.next=function(){return this.t===this.S&&c(),this.t=this.t.L(),this}),r}i(m,St=yt),Object.defineProperty(m.prototype,"pointer",{get:function(){return this.t===this.S&&c(),this.t.G},enumerable:!1,configurable:!0}),m.prototype.copy=function(){return new m(this.t,this.S,this.container,this.iteratorType)};var St,E=m;function m(t,i,r,e){t=St.call(this,t,i,e)||this;return t.container=r,t}i(k,dt=p),k.prototype.begin=function(){return new E(this.S.P||this.S,this.S,this)},k.prototype.end=function(){return new E(this.S,this.S,this)},k.prototype.rBegin=function(){return new E(this.S.N||this.S,this.S,this,1)},k.prototype.rEnd=function(){return new E(this.S,this.S,this,1)},k.prototype.front=function(){return this.S.P?this.S.P.G:void 0},k.prototype.back=function(){return this.S.N?this.S.N.G:void 0},k.prototype.lowerBound=function(t){t=this.Z(this.X,t);return new E(t,this.S,this)},k.prototype.upperBound=function(t){t=this.$(this.X,t);return new E(t,this.S,this)},k.prototype.reverseLowerBound=function(t){t=this.tt(this.X,t);return new E(t,this.S,this)},k.prototype.reverseUpperBound=function(t){t=this.it(this.X,t);return new E(t,this.S,this)},k.prototype.forEach=function(e){this.et(function(t,i,r){e(t.G,i,r)})},k.prototype.insert=function(t,i){return this.st(t,void 0,i)},k.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;return this.et(t).G},k.prototype.find=function(t){t=this.ht(this.X,t);return new E(t,this.S,this)},k.prototype.union=function(t){var i=this;return t.forEach(function(t){i.insert(t)}),this.i},k.prototype[Symbol.iterator]=function(){var i,r,e;return s(this,function(t){switch(t.label){case 0:i=this.i,r=this.et(),e=0,t.label=1;case 1:return e<i?[4,r[e].G]:[3,4];case 2:t.sent(),t.label=3;case 3:return++e,[3,1];case 4:return[2]}})};var dt,Pt=k;function k(t,i,r){void 0===t&&(t=[]);var i=dt.call(this,i,r)||this,e=i;return t.forEach(function(t){e.insert(t)}),i}i(O,wt=yt),Object.defineProperty(O.prototype,"pointer",{get:function(){this.t===this.S&&c();var e=this;return new Proxy([],{get:function(t,i){return"0"===i?e.t.G:"1"===i?e.t.k:(t[0]=e.t.G,t[1]=e.t.k,t[i])},set:function(t,i,r){if("1"!==i)throw new TypeError("prop must be 1");return e.t.k=r,!0}})},enumerable:!1,configurable:!0}),O.prototype.copy=function(){return new O(this.t,this.S,this.container,this.iteratorType)};var wt,N=O;function O(t,i,r,e){t=wt.call(this,t,i,e)||this;return t.container=r,t}i(G,Bt=p),G.prototype.begin=function(){return new N(this.S.P||this.S,this.S,this)},G.prototype.end=function(){return new N(this.S,this.S,this)},G.prototype.rBegin=function(){return new N(this.S.N||this.S,this.S,this,1)},G.prototype.rEnd=function(){return new N(this.S,this.S,this,1)},G.prototype.front=function(){var t;if(0!==this.i)return[(t=this.S.P).G,t.k]},G.prototype.back=function(){var t;if(0!==this.i)return[(t=this.S.N).G,t.k]},G.prototype.lowerBound=function(t){t=this.Z(this.X,t);return new N(t,this.S,this)},G.prototype.upperBound=function(t){t=this.$(this.X,t);return new N(t,this.S,this)},G.prototype.reverseLowerBound=function(t){t=this.tt(this.X,t);return new N(t,this.S,this)},G.prototype.reverseUpperBound=function(t){t=this.it(this.X,t);return new N(t,this.S,this)},G.prototype.forEach=function(e){this.et(function(t,i,r){e([t.G,t.k],i,r)})},G.prototype.setElement=function(t,i,r){return this.st(t,i,r)},G.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;t=this.et(t);return[t.G,t.k]},G.prototype.find=function(t){t=this.ht(this.X,t);return new N(t,this.S,this)},G.prototype.getElementByKey=function(t){return this.ht(this.X,t).k},G.prototype.union=function(t){var i=this;return t.forEach(function(t){i.setElement(t[0],t[1])}),this.i},G.prototype[Symbol.iterator]=function(){var i,r,e,n;return s(this,function(t){switch(t.label){case 0:i=this.i,r=this.et(),e=0,t.label=1;case 1:return e<i?[4,[(n=r[e]).G,n.k]]:[3,4];case 2:t.sent(),t.label=3;case 3:return++e,[3,1];case 4:return[2]}})};var Bt,yt=G;function G(t,i,r){void 0===t&&(t=[]);var i=Bt.call(this,i,r)||this,e=i;return t.forEach(function(t){e.setElement(t[0],t[1])}),i}function gt(t){var i=typeof t;return"object"==i&&null!==t||"function"==i}i(Et,bt=r),Et.prototype.isAccessible=function(){return this.t!==this.S};var bt,p=Et;function Et(t,i,r){r=bt.call(this,r)||this;return r.t=t,r.S=i,0===r.iteratorType?(r.pre=function(){return this.t.L===this.S&&c(),this.t=this.t.L,this},r.next=function(){return this.t===this.S&&c(),this.t=this.t.O,this}):(r.pre=function(){return this.t.O===this.S&&c(),this.t=this.t.O,this},r.next=function(){return this.t===this.S&&c(),this.t=this.t.L,this}),r}i(H,mt=V),H.prototype.M=function(t){var i=t.L,r=t.O;(i.O=r).L=i,t===this.H&&(this.H=r),t===this.g&&(this.g=i),--this.i},H.prototype.st=function(t,i,r){var e;if(r=void 0===r?gt(t):r){r=t[this.HASH_TAG];if(void 0!==r)return this.ut[r].k=i,this.i;Object.defineProperty(t,this.HASH_TAG,{value:this.ut.length,configurable:!0}),e={G:t,k:i,L:this.g,O:this.S},this.ut.push(e)}else{r=this.ot[t];if(r)return r.k=i,this.i;this.ot[t]=e={G:t,k:i,L:this.g,O:this.S}}return 0===this.i?(this.H=e,this.S.O=e):this.g.O=e,this.g=e,this.S.L=e,++this.i},H.prototype.ft=function(t,i){return(i=void 0===i?gt(t):i)?void 0===(i=t[this.HASH_TAG])?this.S:this.ut[i]:this.ot[t]||this.S},H.prototype.clear=function(){var i=this.HASH_TAG;this.ut.forEach(function(t){delete t.G[i]}),this.ut=[],this.ot={},Object.setPrototypeOf(this.ot,null),this.i=0,this.H=this.g=this.S.L=this.S.O=this.S},H.prototype.eraseElementByKey=function(t,i){var r;if(i=void 0===i?gt(t):i){i=t[this.HASH_TAG];if(void 0===i)return!1;delete t[this.HASH_TAG],r=this.ut[i],delete this.ut[i]}else{if(void 0===(r=this.ot[t]))return!1;delete this.ot[t]}return this.M(r),!0},H.prototype.eraseElementByIterator=function(t){var i=t.t;return i===this.S&&c(),this.M(i),t.next()},H.prototype.eraseElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return this.M(i),this.i};var mt,r=H;function H(){var t=mt.call(this)||this;return t.ut=[],t.ot={},t.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(t.ot,null),t.S={},t.S.L=t.S.O=t.H=t.g=t.S,t}i(I,kt=p),Object.defineProperty(I.prototype,"pointer",{get:function(){return this.t===this.S&&c(),this.t.G},enumerable:!1,configurable:!0}),I.prototype.copy=function(){return new I(this.t,this.S,this.container,this.iteratorType)};var kt,F=I;function I(t,i,r,e){t=kt.call(this,t,i,e)||this;return t.container=r,t}i(T,Nt=r),T.prototype.begin=function(){return new F(this.H,this.S,this)},T.prototype.end=function(){return new F(this.S,this.S,this)},T.prototype.rBegin=function(){return new F(this.g,this.S,this,1)},T.prototype.rEnd=function(){return new F(this.S,this.S,this,1)},T.prototype.front=function(){return this.H.G},T.prototype.back=function(){return this.g.G},T.prototype.insert=function(t,i){return this.st(t,void 0,i)},T.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return i.G},T.prototype.find=function(t,i){t=this.ft(t,i);return new F(t,this.S,this)},T.prototype.forEach=function(t){for(var i=0,r=this.H;r!==this.S;)t(r.G,i++,this),r=r.O},T.prototype[Symbol.iterator]=function(){var i;return s(this,function(t){switch(t.label){case 0:i=this.H,t.label=1;case 1:return i===this.S?[3,3]:[4,i.G];case 2:return t.sent(),i=i.O,[3,1];case 3:return[2]}})};var Nt,V=T;function T(t){void 0===t&&(t=[]);var i=Nt.call(this)||this,r=i;return t.forEach(function(t){r.insert(t)}),i}i(X,Ot=p),Object.defineProperty(X.prototype,"pointer",{get:function(){this.t===this.S&&c();var e=this;return new Proxy([],{get:function(t,i){return"0"===i?e.t.G:"1"===i?e.t.k:(t[0]=e.t.G,t[1]=e.t.k,t[i])},set:function(t,i,r){if("1"!==i)throw new TypeError("prop must be 1");return e.t.k=r,!0}})},enumerable:!1,configurable:!0}),X.prototype.copy=function(){return new X(this.t,this.S,this.container,this.iteratorType)};var Ot,x=X;function X(t,i,r,e){t=Ot.call(this,t,i,e)||this;return t.container=r,t}i(A,Gt=r),A.prototype.begin=function(){return new x(this.H,this.S,this)},A.prototype.end=function(){return new x(this.S,this.S,this)},A.prototype.rBegin=function(){return new x(this.g,this.S,this,1)},A.prototype.rEnd=function(){return new x(this.S,this.S,this,1)},A.prototype.front=function(){if(0!==this.i)return[this.H.G,this.H.k]},A.prototype.back=function(){if(0!==this.i)return[this.g.G,this.g.k]},A.prototype.setElement=function(t,i,r){return this.st(t,i,r)},A.prototype.getElementByKey=function(t,i){return(i=void 0===i?gt(t):i)?void 0!==(i=t[this.HASH_TAG])?this.ut[i].k:void 0:(i=this.ot[t])?i.k:void 0},A.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return[i.G,i.k]},A.prototype.find=function(t,i){t=this.ft(t,i);return new x(t,this.S,this)},A.prototype.forEach=function(t){for(var i=0,r=this.H;r!==this.S;)t([r.G,r.k],i++,this),r=r.O},A.prototype[Symbol.iterator]=function(){var i;return s(this,function(t){switch(t.label){case 0:i=this.H,t.label=1;case 1:return i===this.S?[3,3]:[4,[i.G,i.k]];case 2:return t.sent(),i=i.O,[3,1];case 3:return[2]}})};var Gt,p=A;function A(t){void 0===t&&(t=[]);var i=Gt.call(this)||this,r=i;return t.forEach(function(t){r.setElement(t[0],t[1])}),i}t.Deque=Y,t.HashMap=p,t.HashSet=V,t.LinkList=nt,t.OrderedMap=yt,t.OrderedSet=Pt,t.PriorityQueue=e,t.Queue=K,t.Stack=_,t.Vector=it,Object.defineProperty(t,"ct",{value:!0})});
//# sourceMappingURL=js-sdsl.min.js.map