{"version":3,"sources":["jsdelivr-header.js","/npm/fastbitset@0.5.2/FastBitSet.js"],"names":[],"mappings":"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","file":"/npm/fastbitset@0.5.2/FastBitSet.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/fastbitset@0.5.2/FastBitSet.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/* FastBitSet.js : a fast bit set implementation in JavaScript.\n * (c) the authors\n * Licensed under the Apache License, Version 2.0.\n *\n * Speed-optimized BitSet implementation for modern browsers and JavaScript engines.\n *\n * A BitSet is an ideal data structure to implement a Set when values being stored are\n * reasonably small integers. It can be orders of magnitude faster than a generic set implementation.\n * The FastBitSet implementation optimizes for speed, leveraging commonly available features\n * like typed arrays.\n *\n * Simple usage :\n *  // const FastBitSet = require(\"fastbitset\");// if you use node\n *  const b = new FastBitSet();// initially empty\n *  b.add(1);// add the value \"1\"\n *  b.has(1); // check that the value is present! (will return true)\n *  b.add(2);\n *  console.log(\"\"+b);// should display {1,2}\n *  b.add(10);\n *  b.array(); // would return [1,2,10]\n *\n *  let c = new FastBitSet([1,2,3,10]); // create bitset initialized with values 1,2,3,10\n *  c.difference(b); // from c, remove elements that are in b (modifies c)\n *  c.difference2(b); // from c, remove elements that are in b (modifies b)\n *  c.change(b); // c will contain elements that are in b or in c, but not both\n *  const su = c.union_size(b);// compute the size of the union (bitsets are unchanged)\n *  c.union(b); // c will contain all elements that are in c and b\n *  const s1 = c.intersection_size(b);// compute the size of the intersection (bitsets are unchanged)\n *  c.intersection(b); // c will only contain elements that are in both c and b\n *  c = b.clone(); // create a (deep) copy of b and assign it to c.\n *  c.equals(b); // check whether c and b are equal\n *\n *   See README.md file for a more complete description.\n *\n * You can install the library under node with the command line\n *   npm install fastbitset\n */\n\n\"use strict\";\n\n// you can provide an iterable\nfunction FastBitSet(iterable) {\n  this.words = [];\n\n  if (iterable) {\n    if (Symbol && Symbol.iterator && iterable[Symbol.iterator] !== undefined) {\n      const iterator = iterable[Symbol.iterator]();\n      let current = iterator.next();\n      while (!current.done) {\n        this.add(current.value);\n        current = iterator.next();\n      }\n    } else {\n      // find max value to know how much memory we need\n      let max = 0;\n      for (let i = 0; i < iterable.length; i++) {\n        if (iterable[i] > max) max = iterable[i];\n      }\n      this.resize(max);\n      for (let i = 0; i < iterable.length; i++) {\n        this.add(iterable[i]);\n      }\n    }\n  }\n}\n\n// Creates a bitmap from words\nFastBitSet.fromWords = function (words) {\n  const bitSet = Object.create(FastBitSet.prototype);\n  bitSet.words = words;\n  return bitSet;\n};\n\n// Add the value (Set the bit at index to true)\n// If you repeatedly add values, you may want to call\n// resize(maxvalue) first to allocate the memory in one go, \n// otherwise the bitset will resize itself as needed, but this may \n// be slower (possibly quadratic) if you add many values.\nFastBitSet.prototype.add = function (index) {\n  this.resize(index);\n  this.words[index >>> 5] |= 1 << index;\n};\n\n// If the value was not in the set, add it, otherwise remove it (flip bit at index)\n// If you repeatedly flip values, you may want to call\n// resize(maxvalue) first to allocate the memory in one go, \n// otherwise the bitset will resize itself as needed, but this may \n// be slower (possibly quadratic) if you flip many values.\nFastBitSet.prototype.flip = function (index) {\n  this.resize(index);\n  this.words[index >>> 5] ^= 1 << index;\n};\n\n// Remove all values, reset memory usage\nFastBitSet.prototype.clear = function () {\n  this.words.length = 0;\n};\n\n// Remove the bit at index (set it to false)\n// This may extend the bitset (include memory usage).\nFastBitSet.prototype.remove = function (index) {\n  this.resize(index);\n  this.words[index >>> 5] &= ~(1 << index);\n};\n\n// Return true if no bit is set\nFastBitSet.prototype.isEmpty = function (index) {\n  const c = this.words.length;\n  for (let i = 0; i < c; i++) {\n    if (this.words[i] !== 0) return false;\n  }\n  return true;\n};\n\n// Is the value contained in the set? Is the bit at index true or false? Returns a boolean\nFastBitSet.prototype.has = function (index) {\n  return (this.words[index >>> 5] & (1 << index)) !== 0;\n};\n\n// Tries to add the value (Set the bit at index to true), return 1 if the\n// value was added, return 0 if the value was already present\n// If you repeatedly checkedAdd values, you may want to call\n// resize(maxvalue) first to allocate the memory in one go, \n// otherwise the bitset will resize itself as needed, but this may \n// be slower (possibly quadratic) if you checkedAdd many values.\nFastBitSet.prototype.checkedAdd = function (index) {\n  this.resize(index);\n  const word = this.words[index >>> 5];\n  const newword = word | (1 << index);\n  this.words[index >>> 5] = newword;\n  return (newword ^ word) >>> index;\n};\n\n// Reduce the memory usage to a minimum\nFastBitSet.prototype.trim = function (index) {\n  let nl = this.words.length;\n  while (nl > 0 && this.words[nl - 1] === 0) {\n    nl--;\n  }\n  this.words.length = nl;\n};\n\n// Resize the bitset so that we can write a value at index\nFastBitSet.prototype.resize = function (index) {\n  const count = (index + 32) >>> 5; // just what is needed\n  for (let i = this.words.length; i < count; i++) this.words[i] = 0;\n};\n\n// fast function to compute the Hamming weight of a 32-bit unsigned integer\nFastBitSet.prototype.hammingWeight = function (v) {\n  v -= (v >>> 1) & 0x55555555; // works with signed or unsigned shifts\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0xf0f0f0f) * 0x1010101) >>> 24;\n};\n\n// fast function to compute the Hamming weight of four 32-bit unsigned integers\nFastBitSet.prototype.hammingWeight4 = function (v1, v2, v3, v4) {\n  v1 -= (v1 >>> 1) & 0x55555555; // works with signed or unsigned shifts\n  v2 -= (v2 >>> 1) & 0x55555555; // works with signed or unsigned shifts\n  v3 -= (v3 >>> 1) & 0x55555555; // works with signed or unsigned shifts\n  v4 -= (v4 >>> 1) & 0x55555555; // works with signed or unsigned shifts\n\n  v1 = (v1 & 0x33333333) + ((v1 >>> 2) & 0x33333333);\n  v2 = (v2 & 0x33333333) + ((v2 >>> 2) & 0x33333333);\n  v3 = (v3 & 0x33333333) + ((v3 >>> 2) & 0x33333333);\n  v4 = (v4 & 0x33333333) + ((v4 >>> 2) & 0x33333333);\n\n  v1 = (v1 + (v1 >>> 4)) & 0xf0f0f0f;\n  v2 = (v2 + (v2 >>> 4)) & 0xf0f0f0f;\n  v3 = (v3 + (v3 >>> 4)) & 0xf0f0f0f;\n  v4 = (v4 + (v4 >>> 4)) & 0xf0f0f0f;\n  return ((v1 + v2 + v3 + v4) * 0x1010101) >>> 24;\n};\n\n// How many values stored in the set? How many set bits?\nFastBitSet.prototype.size = function () {\n  let answer = 0;\n  const c = this.words.length;\n  const w = this.words;\n  for (let i = 0; i < c; i++) {\n    answer += this.hammingWeight(w[i]);\n  }\n  return answer;\n};\n\n// Return an array with the set bit locations (values)\nFastBitSet.prototype.array = function () {\n  const answer = new Array(this.size());\n  let pos = 0 | 0;\n  const c = this.words.length;\n  for (let k = 0; k < c; ++k) {\n    let w = this.words[k];\n    while (w != 0) {\n      answer[pos++] = (k << 5) + (31 - Math.clz32(w & -w));;\n      w &= w - 1;\n    }\n  }\n  return answer;\n};\n\n// Return an array with the set bit locations (values)\nFastBitSet.prototype.forEach = function (fnc) {\n  const c = this.words.length;\n  for (let k = 0; k < c; ++k) {\n    let w = this.words[k];\n    while (w != 0) {\n      fnc((k << 5) + (31 - Math.clz32(w & -w)));\n      w &= w - 1;\n    }\n  }\n};\n\n// Returns an iterator of set bit locations (values)\nFastBitSet.prototype[Symbol.iterator] = function () {\n  const c = this.words.length;\n  let k = 0;\n  let w = this.words[k];\n  let hw = this.hammingWeight\n  let words = this.words\n  return {\n    [Symbol.iterator]() {\n      return this;\n    },\n    next() {\n      while (k < c) {\n        if (w !== 0) {\n          const t = w & -w;\n          const value = (k << 5) + hw((t - 1) | 0);\n          w ^= t;\n          return { done: false, value };\n        } else {\n          k++;\n          if (k < c) {\n            w = words[k];\n          }\n        }\n      }\n      return { done: true, value: undefined };\n    },\n  };\n};\n\n// Creates a copy of this bitmap\nFastBitSet.prototype.clone = function () {\n  const clone = Object.create(FastBitSet.prototype);\n  clone.words = this.words.slice();\n  return clone;\n};\n\n// Check if this bitset intersects with another one,\n// no bitmap is modified\nFastBitSet.prototype.intersects = function (otherbitmap) {\n  const newcount = Math.min(this.words.length, otherbitmap.words.length);\n  for (let k = 0 | 0; k < newcount; ++k) {\n    if ((this.words[k] & otherbitmap.words[k]) !== 0) return true;\n  }\n  return false;\n};\n\n// Computes the intersection between this bitset and another one,\n// the current bitmap is modified  (and returned by the function)\nFastBitSet.prototype.intersection = function (otherbitmap) {\n  const newcount = Math.min(this.words.length, otherbitmap.words.length);\n  let k = 0 | 0;\n  for (; k + 7 < newcount; k += 8) {\n    this.words[k] &= otherbitmap.words[k];\n    this.words[k + 1] &= otherbitmap.words[k + 1];\n    this.words[k + 2] &= otherbitmap.words[k + 2];\n    this.words[k + 3] &= otherbitmap.words[k + 3];\n    this.words[k + 4] &= otherbitmap.words[k + 4];\n    this.words[k + 5] &= otherbitmap.words[k + 5];\n    this.words[k + 6] &= otherbitmap.words[k + 6];\n    this.words[k + 7] &= otherbitmap.words[k + 7];\n  }\n  for (; k < newcount; ++k) {\n    this.words[k] &= otherbitmap.words[k];\n  }\n  const c = this.words.length;\n  for (k = newcount; k < c; ++k) {\n    this.words[k] = 0;\n  }\n  return this;\n};\n\n// Computes the size of the intersection between this bitset and another one\nFastBitSet.prototype.intersection_size = function (otherbitmap) {\n  const newcount = Math.min(this.words.length, otherbitmap.words.length);\n  let answer = 0 | 0;\n  for (let k = 0 | 0; k < newcount; ++k) {\n    answer += this.hammingWeight(this.words[k] & otherbitmap.words[k]);\n  }\n\n  return answer;\n};\n\n// Computes the intersection between this bitset and another one,\n// a new bitmap is generated\nFastBitSet.prototype.new_intersection = function (otherbitmap) {\n  const answer = Object.create(FastBitSet.prototype);\n  const count = Math.min(this.words.length, otherbitmap.words.length);\n  answer.words = new Array(count);\n  let k = 0 | 0;\n  for (; k + 7 < count; k += 8) {\n    answer.words[k] = this.words[k] & otherbitmap.words[k];\n    answer.words[k + 1] = this.words[k + 1] & otherbitmap.words[k + 1];\n    answer.words[k + 2] = this.words[k + 2] & otherbitmap.words[k + 2];\n    answer.words[k + 3] = this.words[k + 3] & otherbitmap.words[k + 3];\n    answer.words[k + 4] = this.words[k + 4] & otherbitmap.words[k + 4];\n    answer.words[k + 5] = this.words[k + 5] & otherbitmap.words[k + 5];\n    answer.words[k + 6] = this.words[k + 6] & otherbitmap.words[k + 6];\n    answer.words[k + 7] = this.words[k + 7] & otherbitmap.words[k + 7];\n  }\n  for (; k < count; ++k) {\n    answer.words[k] = this.words[k] & otherbitmap.words[k];\n  }\n  return answer;\n};\n\n// Computes the intersection between this bitset and another one,\n// the current bitmap is modified\nFastBitSet.prototype.equals = function (otherbitmap) {\n  const mcount = Math.min(this.words.length, otherbitmap.words.length);\n  for (let k = 0 | 0; k < mcount; ++k) {\n    if (this.words[k] != otherbitmap.words[k]) return false;\n  }\n  if (this.words.length < otherbitmap.words.length) {\n    const c = otherbitmap.words.length;\n    for (let k = this.words.length; k < c; ++k) {\n      if (otherbitmap.words[k] != 0) return false;\n    }\n  } else if (otherbitmap.words.length < this.words.length) {\n    const c = this.words.length;\n    for (let k = otherbitmap.words.length; k < c; ++k) {\n      if (this.words[k] != 0) return false;\n    }\n  }\n  return true;\n};\n\n// Computes the difference between this bitset and another one,\n// the current bitset is modified (and returned by the function)\n// (for this set A and other set B,\n//   this computes A = A - B  and returns A)\nFastBitSet.prototype.difference = function (otherbitmap) {\n  const newcount = Math.min(this.words.length, otherbitmap.words.length);\n  let k = 0 | 0;\n  for (; k + 7 < newcount; k += 8) {\n    this.words[k] &= ~otherbitmap.words[k];\n    this.words[k + 1] &= ~otherbitmap.words[k + 1];\n    this.words[k + 2] &= ~otherbitmap.words[k + 2];\n    this.words[k + 3] &= ~otherbitmap.words[k + 3];\n    this.words[k + 4] &= ~otherbitmap.words[k + 4];\n    this.words[k + 5] &= ~otherbitmap.words[k + 5];\n    this.words[k + 6] &= ~otherbitmap.words[k + 6];\n    this.words[k + 7] &= ~otherbitmap.words[k + 7];\n  }\n  for (; k < newcount; ++k) {\n    this.words[k] &= ~otherbitmap.words[k];\n  }\n  return this;\n};\n\n// Computes the difference between this bitset and another one,\n// a new bitmap is generated\nFastBitSet.prototype.new_difference = function (otherbitmap) {\n  return this.clone().difference(otherbitmap); // should be fast enough\n};\n\n// Computes the difference between this bitset and another one,\n// the other bitset is modified (and returned by the function)\n// (for this set A and other set B,\n//   this computes B = A - B  and returns B)\nFastBitSet.prototype.difference2 = function (otherbitmap) {\n  const mincount = Math.min(this.words.length, otherbitmap.words.length);\n  let k = 0 | 0;\n  for (; k + 7 < mincount; k += 8) {\n    otherbitmap.words[k] = this.words[k] & ~otherbitmap.words[k];\n    otherbitmap.words[k + 1] = this.words[k + 1] & ~otherbitmap.words[k + 1];\n    otherbitmap.words[k + 2] = this.words[k + 2] & ~otherbitmap.words[k + 2];\n    otherbitmap.words[k + 3] = this.words[k + 3] & ~otherbitmap.words[k + 3];\n    otherbitmap.words[k + 4] = this.words[k + 4] & ~otherbitmap.words[k + 4];\n    otherbitmap.words[k + 5] = this.words[k + 5] & ~otherbitmap.words[k + 5];\n    otherbitmap.words[k + 6] = this.words[k + 6] & ~otherbitmap.words[k + 6];\n    otherbitmap.words[k + 7] = this.words[k + 7] & ~otherbitmap.words[k + 7];\n  }\n  for (; k < mincount; ++k) {\n    otherbitmap.words[k] = this.words[k] & ~otherbitmap.words[k];\n  }\n  // remaining words are all part of difference\n  for (k = this.words.length - 1; k >= mincount; --k) {\n    otherbitmap.words[k] = this.words[k];\n  }\n  otherbitmap.words.length = this.words.length;\n  return otherbitmap;\n};\n\n// Computes the size of the difference between this bitset and another one\nFastBitSet.prototype.difference_size = function (otherbitmap) {\n  const newcount = Math.min(this.words.length, otherbitmap.words.length);\n  let answer = 0 | 0;\n  let k = 0 | 0;\n  for (; k < newcount; ++k) {\n    answer += this.hammingWeight(this.words[k] & ~otherbitmap.words[k]);\n  }\n  const c = this.words.length;\n  for (; k < c; ++k) {\n    answer += this.hammingWeight(this.words[k]);\n  }\n  return answer;\n};\n\n// Computes the changed elements (XOR) between this bitset and another one,\n// the current bitset is modified (and returned by the function)\nFastBitSet.prototype.change = function (otherbitmap) {\n  const mincount = Math.min(this.words.length, otherbitmap.words.length);\n  let k = 0 | 0;\n  for (; k + 7 < mincount; k += 8) {\n    this.words[k] ^= otherbitmap.words[k];\n    this.words[k + 1] ^= otherbitmap.words[k + 1];\n    this.words[k + 2] ^= otherbitmap.words[k + 2];\n    this.words[k + 3] ^= otherbitmap.words[k + 3];\n    this.words[k + 4] ^= otherbitmap.words[k + 4];\n    this.words[k + 5] ^= otherbitmap.words[k + 5];\n    this.words[k + 6] ^= otherbitmap.words[k + 6];\n    this.words[k + 7] ^= otherbitmap.words[k + 7];\n  }\n  for (; k < mincount; ++k) {\n    this.words[k] ^= otherbitmap.words[k];\n  }\n  // remaining words are all part of change\n  for (k = otherbitmap.words.length - 1; k >= mincount; --k) {\n    this.words[k] = otherbitmap.words[k];\n  }\n  return this;\n};\n\n// Computes the change between this bitset and another one,\n// a new bitmap is generated\nFastBitSet.prototype.new_change = function (otherbitmap) {\n  const answer = Object.create(FastBitSet.prototype);\n  const count = Math.max(this.words.length, otherbitmap.words.length);\n  answer.words = new Array(count);\n  const mcount = Math.min(this.words.length, otherbitmap.words.length);\n  let k = 0;\n  for (; k + 7 < mcount; k += 8) {\n    answer.words[k] = this.words[k] ^ otherbitmap.words[k];\n    answer.words[k + 1] = this.words[k + 1] ^ otherbitmap.words[k + 1];\n    answer.words[k + 2] = this.words[k + 2] ^ otherbitmap.words[k + 2];\n    answer.words[k + 3] = this.words[k + 3] ^ otherbitmap.words[k + 3];\n    answer.words[k + 4] = this.words[k + 4] ^ otherbitmap.words[k + 4];\n    answer.words[k + 5] = this.words[k + 5] ^ otherbitmap.words[k + 5];\n    answer.words[k + 6] = this.words[k + 6] ^ otherbitmap.words[k + 6];\n    answer.words[k + 7] = this.words[k + 7] ^ otherbitmap.words[k + 7];\n  }\n  for (; k < mcount; ++k) {\n    answer.words[k] = this.words[k] ^ otherbitmap.words[k];\n  }\n\n  const c = this.words.length;\n  for (k = mcount; k < c; ++k) {\n    answer.words[k] = this.words[k];\n  }\n  const c2 = otherbitmap.words.length;\n  for (k = mcount; k < c2; ++k) {\n    answer.words[k] = otherbitmap.words[k];\n  }\n  return answer;\n};\n\n// Computes the number of changed elements between this bitset and another one\nFastBitSet.prototype.change_size = function (otherbitmap) {\n  const mincount = Math.min(this.words.length, otherbitmap.words.length);\n  let answer = 0 | 0;\n  let k = 0 | 0;\n  for (; k < mincount; ++k) {\n    answer += this.hammingWeight(this.words[k] ^ otherbitmap.words[k]);\n  }\n  const longer =\n    this.words.length > otherbitmap.words.length ? this : otherbitmap;\n  const c = longer.words.length;\n  for (; k < c; ++k) {\n    answer += this.hammingWeight(longer.words[k]);\n  }\n  return answer;\n};\n\n// Returns a string representation\nFastBitSet.prototype.toString = function () {\n  return \"{\" + this.array().join(\",\") + \"}\";\n};\n\n// Computes the union between this bitset and another one,\n// the current bitset is modified  (and returned by the function)\nFastBitSet.prototype.union = function (otherbitmap) {\n  const mcount = Math.min(this.words.length, otherbitmap.words.length);\n  let k = 0 | 0;\n  for (; k + 7 < mcount; k += 8) {\n    this.words[k] |= otherbitmap.words[k];\n    this.words[k + 1] |= otherbitmap.words[k + 1];\n    this.words[k + 2] |= otherbitmap.words[k + 2];\n    this.words[k + 3] |= otherbitmap.words[k + 3];\n    this.words[k + 4] |= otherbitmap.words[k + 4];\n    this.words[k + 5] |= otherbitmap.words[k + 5];\n    this.words[k + 6] |= otherbitmap.words[k + 6];\n    this.words[k + 7] |= otherbitmap.words[k + 7];\n  }\n  for (; k < mcount; ++k) {\n    this.words[k] |= otherbitmap.words[k];\n  }\n  if (this.words.length < otherbitmap.words.length) {\n    this.resize((otherbitmap.words.length << 5) - 1);\n    const c = otherbitmap.words.length;\n    for (let k = mcount; k < c; ++k) {\n      this.words[k] = otherbitmap.words[k];\n    }\n  }\n  return this;\n};\n\nFastBitSet.prototype.new_union = function (otherbitmap) {\n  const answer = Object.create(FastBitSet.prototype);\n  const count = Math.max(this.words.length, otherbitmap.words.length);\n  answer.words = new Array(count);\n  const mcount = Math.min(this.words.length, otherbitmap.words.length);\n  let k = 0;\n  for (; k + 7 < mcount; k += 8) {\n    answer.words[k] = this.words[k] | otherbitmap.words[k];\n    answer.words[k + 1] = this.words[k + 1] | otherbitmap.words[k + 1];\n    answer.words[k + 2] = this.words[k + 2] | otherbitmap.words[k + 2];\n    answer.words[k + 3] = this.words[k + 3] | otherbitmap.words[k + 3];\n    answer.words[k + 4] = this.words[k + 4] | otherbitmap.words[k + 4];\n    answer.words[k + 5] = this.words[k + 5] | otherbitmap.words[k + 5];\n    answer.words[k + 6] = this.words[k + 6] | otherbitmap.words[k + 6];\n    answer.words[k + 7] = this.words[k + 7] | otherbitmap.words[k + 7];\n  }\n  for (; k < mcount; ++k) {\n    answer.words[k] = this.words[k] | otherbitmap.words[k];\n  }\n  const c = this.words.length;\n  for (k = mcount; k < c; ++k) {\n    answer.words[k] = this.words[k];\n  }\n  const c2 = otherbitmap.words.length;\n  for (k = mcount; k < c2; ++k) {\n    answer.words[k] = otherbitmap.words[k];\n  }\n  return answer;\n};\n\n// Computes the size union between this bitset and another one\nFastBitSet.prototype.union_size = function (otherbitmap) {\n  const mcount = Math.min(this.words.length, otherbitmap.words.length);\n  let answer = 0 | 0;\n  for (let k = 0 | 0; k < mcount; ++k) {\n    answer += this.hammingWeight(this.words[k] | otherbitmap.words[k]);\n  }\n  if (this.words.length < otherbitmap.words.length) {\n    const c = otherbitmap.words.length;\n    for (let k = this.words.length; k < c; ++k) {\n      answer += this.hammingWeight(otherbitmap.words[k] | 0);\n    }\n  } else {\n    const c = this.words.length;\n    for (let k = otherbitmap.words.length; k < c; ++k) {\n      answer += this.hammingWeight(this.words[k] | 0);\n    }\n  }\n  return answer;\n};\n\n///////////////\n\nmodule.exports = FastBitSet;\n"]}