OverviewFilesCommitsIssuesDocsReleasesPeers

pearbrowser-desktop / backend / sheets-bundle.cjs

45059 lines · javascript ref:
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod2) => function __require() {
  try {
    return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports;
  } catch (e) {
    throw mod2 = 0, e;
  }
};
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__getProtoOf(mod2)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod2 || !mod2.__esModule ? __defProp(target, "default", { value: mod2, enumerable: true }) : target,
  mod2
));
var __toCommonJS = (mod2) => __copyProps(__defProp({}, "__esModule", { value: true }), mod2);

// node_modules/bare-events/lib/errors.js
var require_errors = __commonJS({
  "node_modules/bare-events/lib/errors.js"(exports2, module2) {
    module2.exports = class EventEmitterError extends Error {
      constructor(msg, code, fn = EventEmitterError, opts) {
        super(`${code}: ${msg}`, opts);
        this.code = code;
        if (Error.captureStackTrace) {
          Error.captureStackTrace(this, fn);
        }
      }
      get name() {
        return "EventEmitterError";
      }
      static OPERATION_ABORTED(cause, msg = "Operation aborted") {
        return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
          cause
        });
      }
      static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
        return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
          cause
        });
      }
    };
  }
});

// node_modules/bare-events/index.js
var require_bare_events = __commonJS({
  "node_modules/bare-events/index.js"(exports2, module2) {
    var errors = require_errors();
    var EventListener = class {
      constructor() {
        this.list = [];
        this.count = 0;
      }
      append(ctx, name, fn, once) {
        this.count++;
        ctx.emit("newListener", name, fn);
        this.list.push([fn, once]);
      }
      prepend(ctx, name, fn, once) {
        this.count++;
        ctx.emit("newListener", name, fn);
        this.list.unshift([fn, once]);
      }
      remove(ctx, name, fn) {
        for (let i = 0, n = this.list.length; i < n; i++) {
          const l = this.list[i];
          if (l[0] === fn) {
            this.list.splice(i, 1);
            if (this.count === 1) delete ctx._events[name];
            ctx.emit("removeListener", name, fn);
            this.count--;
            return;
          }
        }
      }
      removeAll(ctx, name) {
        const list = [...this.list];
        this.list = [];
        if (this.count === list.length) delete ctx._events[name];
        for (let i = list.length - 1; i >= 0; i--) {
          ctx.emit("removeListener", name, list[i][0]);
        }
        this.count -= list.length;
      }
      emit(ctx, name, ...args) {
        const list = [...this.list];
        for (let i = 0, n = list.length; i < n; i++) {
          const l = list[i];
          if (l[1] === true) this.remove(ctx, name, l[0]);
          Reflect.apply(l[0], ctx, args);
        }
        return list.length > 0;
      }
    };
    function appendListener(ctx, name, fn, once) {
      if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
      const e = ctx._events[name] || (ctx._events[name] = new EventListener());
      e.append(ctx, name, fn, once);
      return ctx;
    }
    function prependListener(ctx, name, fn, once) {
      if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
      const e = ctx._events[name] || (ctx._events[name] = new EventListener());
      e.prepend(ctx, name, fn, once);
      return ctx;
    }
    function removeListener(ctx, name, fn) {
      if (ctx._events === void 0) return ctx;
      const e = ctx._events[name];
      if (e !== void 0) e.remove(ctx, name, fn);
      return ctx;
    }
    function throwUnhandledError(...args) {
      let err;
      if (args.length > 0) err = args[0];
      if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
      if (Error.captureStackTrace) {
        Error.captureStackTrace(err, exports2.prototype.emit);
      }
      queueMicrotask(() => {
        throw err;
      });
    }
    module2.exports = exports2 = class EventEmitter {
      constructor() {
        this._events = /* @__PURE__ */ Object.create(null);
      }
      addListener(name, fn) {
        return appendListener(this, name, fn, false);
      }
      addOnceListener(name, fn) {
        return appendListener(this, name, fn, true);
      }
      prependListener(name, fn) {
        return prependListener(this, name, fn, false);
      }
      prependOnceListener(name, fn) {
        return prependListener(this, name, fn, true);
      }
      removeListener(name, fn) {
        return removeListener(this, name, fn);
      }
      on(name, fn) {
        return appendListener(this, name, fn, false);
      }
      once(name, fn) {
        return appendListener(this, name, fn, true);
      }
      off(name, fn) {
        return removeListener(this, name, fn);
      }
      emit(name, ...args) {
        if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
          throwUnhandledError(...args);
        }
        if (this._events === void 0) return false;
        const e = this._events[name];
        return e === void 0 ? false : e.emit(this, name, ...args);
      }
      listeners(name) {
        if (this._events === void 0) return [];
        const e = this._events[name];
        return e === void 0 ? [] : [...e.list];
      }
      listenerCount(name) {
        if (this._events === void 0) return 0;
        const e = this._events[name];
        return e === void 0 ? 0 : e.list.length;
      }
      getMaxListeners() {
        return EventEmitter.defaultMaxListeners;
      }
      setMaxListeners(n) {
      }
      removeAllListeners(name) {
        if (arguments.length === 0) {
          for (const key of Reflect.ownKeys(this._events)) {
            if (key === "removeListener") continue;
            this.removeAllListeners(key);
          }
          this.removeAllListeners("removeListener");
        } else {
          const e = this._events[name];
          if (e !== void 0) e.removeAll(this, name);
        }
        return this;
      }
    };
    exports2.EventEmitter = exports2;
    exports2.errors = errors;
    exports2.defaultMaxListeners = 10;
    exports2.on = function on(emitter, name, opts = {}) {
      const { signal } = opts;
      if (signal && signal.aborted) {
        throw errors.OPERATION_ABORTED(signal.reason);
      }
      let error = null;
      let done = false;
      const events = [];
      const promises = [];
      if (name !== "error") emitter.on("error", onerror);
      if (signal) signal.addEventListener("abort", onabort);
      emitter.on(name, onevent);
      return {
        next() {
          if (events.length) {
            return Promise.resolve({ value: events.shift(), done: false });
          }
          if (error) {
            const err = error;
            error = null;
            return Promise.reject(err);
          }
          if (done) return onclose();
          return new Promise((resolve, reject) => promises.push({ resolve, reject }));
        },
        return() {
          return onclose();
        },
        throw(err) {
          return onerror(err);
        },
        [Symbol.asyncIterator]() {
          return this;
        }
      };
      function onevent(...args) {
        if (promises.length) {
          promises.shift().resolve({ value: args, done: false });
        } else {
          events.push(args);
        }
      }
      function onerror(err) {
        emitter.off(name, onevent).off("error", onerror);
        if (promises.length) {
          promises.shift().reject(err);
        } else {
          error = err;
        }
        return Promise.resolve({ done: true });
      }
      function onabort() {
        signal.removeEventListener("abort", onabort);
        onerror(errors.OPERATION_ABORTED(signal.reason));
      }
      function onclose() {
        emitter.off(name, onevent);
        if (name !== "error") emitter.off("error", onerror);
        if (signal) signal.removeEventListener("abort", onabort);
        done = true;
        if (promises.length) promises.shift().resolve({ done: true });
        return Promise.resolve({ done: true });
      }
    };
    exports2.once = function once(emitter, name, opts = {}) {
      const { signal } = opts;
      if (signal && signal.aborted) {
        return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
      }
      return new Promise((resolve, reject) => {
        if (name !== "error") emitter.on("error", onerror);
        if (signal) signal.addEventListener("abort", onabort);
        emitter.once(name, onevent);
        function onevent(...args) {
          if (name !== "error") emitter.off("error", onerror);
          if (signal) signal.removeEventListener("abort", onabort);
          resolve(args);
        }
        function onerror(err) {
          emitter.off(name, onevent);
          if (name !== "error") emitter.off("error", onerror);
          reject(err);
        }
        function onabort() {
          signal.removeEventListener("abort", onabort);
          onerror(errors.OPERATION_ABORTED(signal.reason));
        }
      });
    };
    exports2.forward = function forward(from, to, names, opts = {}) {
      if (typeof names === "string") names = [names];
      const { emit = to.emit.bind(to) } = opts;
      const listeners = names.map(
        (name) => function onevent(...args) {
          emit(name, ...args);
        }
      );
      to.on("newListener", (name) => {
        const i = names.indexOf(name);
        if (i !== -1 && to.listenerCount(name) === 0) {
          from.on(name, listeners[i]);
        }
      }).on("removeListener", (name) => {
        const i = names.indexOf(name);
        if (i !== -1 && to.listenerCount(name) === 0) {
          from.off(name, listeners[i]);
        }
      });
    };
    exports2.listenerCount = function listenerCount(emitter, name) {
      return emitter.listenerCount(name);
    };
    exports2.getMaxListeners = function getMaxListeners(emitter) {
      if (typeof emitter.getMaxListeners === "function") {
        return emitter.getMaxListeners();
      }
      return exports2.defaultMaxListeners;
    };
    exports2.setMaxListeners = function setMaxListeners(n, ...emitters) {
      if (emitters.length === 0) exports2.defaultMaxListeners = n;
      else {
        for (const emitter of emitters) {
          if (typeof emitter.setMaxListeners === "function") {
            emitter.setMaxListeners(n);
          }
        }
      }
    };
  }
});

// node_modules/events-universal/default.js
var require_default = __commonJS({
  "node_modules/events-universal/default.js"(exports2, module2) {
    module2.exports = require_bare_events();
  }
});

// node_modules/fast-fifo/fixed-size.js
var require_fixed_size = __commonJS({
  "node_modules/fast-fifo/fixed-size.js"(exports2, module2) {
    module2.exports = class FixedFIFO {
      constructor(hwm) {
        if (!(hwm > 0) || (hwm - 1 & hwm) !== 0) throw new Error("Max size for a FixedFIFO should be a power of two");
        this.buffer = new Array(hwm);
        this.mask = hwm - 1;
        this.top = 0;
        this.btm = 0;
        this.next = null;
      }
      clear() {
        this.top = this.btm = 0;
        this.next = null;
        this.buffer.fill(void 0);
      }
      push(data) {
        if (this.buffer[this.top] !== void 0) return false;
        this.buffer[this.top] = data;
        this.top = this.top + 1 & this.mask;
        return true;
      }
      shift() {
        const last = this.buffer[this.btm];
        if (last === void 0) return void 0;
        this.buffer[this.btm] = void 0;
        this.btm = this.btm + 1 & this.mask;
        return last;
      }
      peek() {
        return this.buffer[this.btm];
      }
      isEmpty() {
        return this.buffer[this.btm] === void 0;
      }
    };
  }
});

// node_modules/fast-fifo/index.js
var require_fast_fifo = __commonJS({
  "node_modules/fast-fifo/index.js"(exports2, module2) {
    var FixedFIFO = require_fixed_size();
    module2.exports = class FastFIFO {
      constructor(hwm) {
        this.hwm = hwm || 16;
        this.head = new FixedFIFO(this.hwm);
        this.tail = this.head;
        this.length = 0;
      }
      clear() {
        this.head = this.tail;
        this.head.clear();
        this.length = 0;
      }
      push(val) {
        this.length++;
        if (!this.head.push(val)) {
          const prev = this.head;
          this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length);
          this.head.push(val);
        }
      }
      shift() {
        if (this.length !== 0) this.length--;
        const val = this.tail.shift();
        if (val === void 0 && this.tail.next) {
          const next = this.tail.next;
          this.tail.next = null;
          this.tail = next;
          return this.tail.shift();
        }
        return val;
      }
      peek() {
        const val = this.tail.peek();
        if (val === void 0 && this.tail.next) return this.tail.next.peek();
        return val;
      }
      isEmpty() {
        return this.length === 0;
      }
    };
  }
});

// node_modules/b4a/index.js
var require_b4a = __commonJS({
  "node_modules/b4a/index.js"(exports2, module2) {
    function isBuffer(value) {
      return Buffer.isBuffer(value) || value instanceof Uint8Array;
    }
    function isEncoding(encoding) {
      return Buffer.isEncoding(encoding);
    }
    function alloc(size, fill2, encoding) {
      return Buffer.alloc(size, fill2, encoding);
    }
    function allocUnsafe(size) {
      return Buffer.allocUnsafe(size);
    }
    function allocUnsafeSlow(size) {
      return Buffer.allocUnsafeSlow(size);
    }
    function byteLength(string, encoding) {
      return Buffer.byteLength(string, encoding);
    }
    function compare(a, b) {
      return Buffer.compare(a, b);
    }
    function concat(buffers, totalLength) {
      return Buffer.concat(buffers, totalLength);
    }
    function copy(source, target, targetStart, start, end) {
      return toBuffer(source).copy(target, targetStart, start, end);
    }
    function equals(a, b) {
      return toBuffer(a).equals(b);
    }
    function fill(buffer, value, offset, end, encoding) {
      return toBuffer(buffer).fill(value, offset, end, encoding);
    }
    function from(value, encodingOrOffset, length) {
      return Buffer.from(value, encodingOrOffset, length);
    }
    function includes(buffer, value, byteOffset, encoding) {
      return toBuffer(buffer).includes(value, byteOffset, encoding);
    }
    function indexOf(buffer, value, byfeOffset, encoding) {
      return toBuffer(buffer).indexOf(value, byfeOffset, encoding);
    }
    function lastIndexOf(buffer, value, byteOffset, encoding) {
      return toBuffer(buffer).lastIndexOf(value, byteOffset, encoding);
    }
    function swap16(buffer) {
      return toBuffer(buffer).swap16();
    }
    function swap32(buffer) {
      return toBuffer(buffer).swap32();
    }
    function swap64(buffer) {
      return toBuffer(buffer).swap64();
    }
    function toBuffer(buffer) {
      if (Buffer.isBuffer(buffer)) return buffer;
      return Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength);
    }
    function toString(buffer, encoding, start, end) {
      return toBuffer(buffer).toString(encoding, start, end);
    }
    function write(buffer, string, offset, length, encoding) {
      return toBuffer(buffer).write(string, offset, length, encoding);
    }
    function readDoubleBE(buffer, offset) {
      return toBuffer(buffer).readDoubleBE(offset);
    }
    function readDoubleLE(buffer, offset) {
      return toBuffer(buffer).readDoubleLE(offset);
    }
    function readFloatBE(buffer, offset) {
      return toBuffer(buffer).readFloatBE(offset);
    }
    function readFloatLE(buffer, offset) {
      return toBuffer(buffer).readFloatLE(offset);
    }
    function readInt32BE(buffer, offset) {
      return toBuffer(buffer).readInt32BE(offset);
    }
    function readInt32LE(buffer, offset) {
      return toBuffer(buffer).readInt32LE(offset);
    }
    function readUInt32BE(buffer, offset) {
      return toBuffer(buffer).readUInt32BE(offset);
    }
    function readUInt32LE(buffer, offset) {
      return toBuffer(buffer).readUInt32LE(offset);
    }
    function writeDoubleBE(buffer, value, offset) {
      return toBuffer(buffer).writeDoubleBE(value, offset);
    }
    function writeDoubleLE(buffer, value, offset) {
      return toBuffer(buffer).writeDoubleLE(value, offset);
    }
    function writeFloatBE(buffer, value, offset) {
      return toBuffer(buffer).writeFloatBE(value, offset);
    }
    function writeFloatLE(buffer, value, offset) {
      return toBuffer(buffer).writeFloatLE(value, offset);
    }
    function writeInt32BE(buffer, value, offset) {
      return toBuffer(buffer).writeInt32BE(value, offset);
    }
    function writeInt32LE(buffer, value, offset) {
      return toBuffer(buffer).writeInt32LE(value, offset);
    }
    function writeUInt32BE(buffer, value, offset) {
      return toBuffer(buffer).writeUInt32BE(value, offset);
    }
    function writeUInt32LE(buffer, value, offset) {
      return toBuffer(buffer).writeUInt32LE(value, offset);
    }
    module2.exports = {
      isBuffer,
      isEncoding,
      alloc,
      allocUnsafe,
      allocUnsafeSlow,
      byteLength,
      compare,
      concat,
      copy,
      equals,
      fill,
      from,
      includes,
      indexOf,
      lastIndexOf,
      swap16,
      swap32,
      swap64,
      toBuffer,
      toString,
      write,
      readDoubleBE,
      readDoubleLE,
      readFloatBE,
      readFloatLE,
      readInt32BE,
      readInt32LE,
      readUInt32BE,
      readUInt32LE,
      writeDoubleBE,
      writeDoubleLE,
      writeFloatBE,
      writeFloatLE,
      writeInt32BE,
      writeInt32LE,
      writeUInt32BE,
      writeUInt32LE
    };
  }
});

// node_modules/text-decoder/lib/pass-through-decoder.js
var require_pass_through_decoder = __commonJS({
  "node_modules/text-decoder/lib/pass-through-decoder.js"(exports2, module2) {
    var b4a4 = require_b4a();
    module2.exports = class PassThroughDecoder {
      constructor(encoding) {
        this.encoding = encoding;
      }
      get remaining() {
        return 0;
      }
      decode(data) {
        return b4a4.toString(data, this.encoding);
      }
      flush() {
        return "";
      }
    };
  }
});

// node_modules/text-decoder/lib/utf8-decoder.js
var require_utf8_decoder = __commonJS({
  "node_modules/text-decoder/lib/utf8-decoder.js"(exports2, module2) {
    var b4a4 = require_b4a();
    module2.exports = class UTF8Decoder {
      constructor() {
        this._reset();
      }
      get remaining() {
        return this.bytesSeen;
      }
      decode(data) {
        if (data.byteLength === 0) return "";
        if (this.bytesNeeded === 0 && trailingIncomplete(data, 0) === 0) {
          this.bytesSeen = trailingBytesSeen(data);
          return b4a4.toString(data, "utf8");
        }
        let result = "";
        let start = 0;
        if (this.bytesNeeded > 0) {
          while (start < data.byteLength) {
            const byte = data[start];
            if (byte < this.lowerBoundary || byte > this.upperBoundary) {
              result += "\uFFFD";
              this._reset();
              break;
            }
            this.lowerBoundary = 128;
            this.upperBoundary = 191;
            this.codePoint = this.codePoint << 6 | byte & 63;
            this.bytesSeen++;
            start++;
            if (this.bytesSeen === this.bytesNeeded) {
              result += String.fromCodePoint(this.codePoint);
              this._reset();
              break;
            }
          }
          if (this.bytesNeeded > 0) return result;
        }
        const trailing = trailingIncomplete(data, start);
        const end = data.byteLength - trailing;
        if (end > start) result += b4a4.toString(data, "utf8", start, end);
        for (let i = end; i < data.byteLength; i++) {
          const byte = data[i];
          if (this.bytesNeeded === 0) {
            if (byte <= 127) {
              this.bytesSeen = 0;
              result += String.fromCharCode(byte);
            } else if (byte >= 194 && byte <= 223) {
              this.bytesNeeded = 2;
              this.bytesSeen = 1;
              this.codePoint = byte & 31;
            } else if (byte >= 224 && byte <= 239) {
              if (byte === 224) this.lowerBoundary = 160;
              else if (byte === 237) this.upperBoundary = 159;
              this.bytesNeeded = 3;
              this.bytesSeen = 1;
              this.codePoint = byte & 15;
            } else if (byte >= 240 && byte <= 244) {
              if (byte === 240) this.lowerBoundary = 144;
              else if (byte === 244) this.upperBoundary = 143;
              this.bytesNeeded = 4;
              this.bytesSeen = 1;
              this.codePoint = byte & 7;
            } else {
              this.bytesSeen = 1;
              result += "\uFFFD";
            }
            continue;
          }
          if (byte < this.lowerBoundary || byte > this.upperBoundary) {
            result += "\uFFFD";
            i--;
            this._reset();
            continue;
          }
          this.lowerBoundary = 128;
          this.upperBoundary = 191;
          this.codePoint = this.codePoint << 6 | byte & 63;
          this.bytesSeen++;
          if (this.bytesSeen === this.bytesNeeded) {
            result += String.fromCodePoint(this.codePoint);
            this._reset();
          }
        }
        return result;
      }
      flush() {
        const result = this.bytesNeeded > 0 ? "\uFFFD" : "";
        this._reset();
        return result;
      }
      _reset() {
        this.codePoint = 0;
        this.bytesNeeded = 0;
        this.bytesSeen = 0;
        this.lowerBoundary = 128;
        this.upperBoundary = 191;
      }
    };
    function trailingIncomplete(data, start) {
      const len = data.byteLength;
      if (len <= start) return 0;
      const limit = Math.max(start, len - 4);
      let i = len - 1;
      while (i > limit && (data[i] & 192) === 128) i--;
      if (i < start) return 0;
      const byte = data[i];
      let needed;
      if (byte <= 127) return 0;
      if (byte >= 194 && byte <= 223) needed = 2;
      else if (byte >= 224 && byte <= 239) needed = 3;
      else if (byte >= 240 && byte <= 244) needed = 4;
      else return 0;
      const available = len - i;
      return available < needed ? available : 0;
    }
    function trailingBytesSeen(data) {
      const len = data.byteLength;
      if (len === 0) return 0;
      const last = data[len - 1];
      if (last <= 127) return 0;
      if ((last & 192) !== 128) return 1;
      const limit = Math.max(0, len - 4);
      let i = len - 2;
      while (i >= limit && (data[i] & 192) === 128) i--;
      if (i < 0) return 1;
      const first = data[i];
      let needed;
      if (first >= 194 && first <= 223) needed = 2;
      else if (first >= 224 && first <= 239) needed = 3;
      else if (first >= 240 && first <= 244) needed = 4;
      else return 1;
      if (len - i !== needed) return 1;
      if (needed >= 3) {
        const second = data[i + 1];
        if (first === 224 && second < 160) return 1;
        if (first === 237 && second > 159) return 1;
        if (first === 240 && second < 144) return 1;
        if (first === 244 && second > 143) return 1;
      }
      return 0;
    }
  }
});

// node_modules/text-decoder/index.js
var require_text_decoder = __commonJS({
  "node_modules/text-decoder/index.js"(exports2, module2) {
    var PassThroughDecoder = require_pass_through_decoder();
    var UTF8Decoder = require_utf8_decoder();
    module2.exports = class TextDecoder {
      constructor(encoding = "utf8") {
        this.encoding = normalizeEncoding(encoding);
        switch (this.encoding) {
          case "utf8":
            this.decoder = new UTF8Decoder();
            break;
          case "utf16le":
          case "base64":
            throw new Error("Unsupported encoding: " + this.encoding);
          default:
            this.decoder = new PassThroughDecoder(this.encoding);
        }
      }
      get remaining() {
        return this.decoder.remaining;
      }
      push(data) {
        if (typeof data === "string") return data;
        return this.decoder.decode(data);
      }
      // For Node.js compatibility
      write(data) {
        return this.push(data);
      }
      end(data) {
        let result = "";
        if (data) result = this.push(data);
        result += this.decoder.flush();
        return result;
      }
    };
    function normalizeEncoding(encoding) {
      encoding = encoding.toLowerCase();
      switch (encoding) {
        case "utf8":
        case "utf-8":
          return "utf8";
        case "ucs2":
        case "ucs-2":
        case "utf16le":
        case "utf-16le":
          return "utf16le";
        case "latin1":
        case "binary":
          return "latin1";
        case "base64":
        case "ascii":
        case "hex":
          return encoding;
        default:
          throw new Error("Unknown encoding: " + encoding);
      }
    }
  }
});

// node_modules/streamx/index.js
var require_streamx = __commonJS({
  "node_modules/streamx/index.js"(exports2, module2) {
    var { EventEmitter } = require_default();
    var STREAM_DESTROYED = new Error("Stream was destroyed");
    var PREMATURE_CLOSE = new Error("Premature close");
    var FIFO = require_fast_fifo();
    var TextDecoder = require_text_decoder();
    var qmt = typeof queueMicrotask === "undefined" ? (fn) => global.process.nextTick(fn) : queueMicrotask;
    var MAX = (1 << 29) - 1;
    var OPENING = 1;
    var PREDESTROYING = 2;
    var DESTROYING = 4;
    var DESTROYED = 8;
    var NOT_OPENING = MAX ^ OPENING;
    var NOT_PREDESTROYING = MAX ^ PREDESTROYING;
    var READ_ACTIVE = 1 << 4;
    var READ_UPDATING = 2 << 4;
    var READ_PRIMARY = 4 << 4;
    var READ_QUEUED = 8 << 4;
    var READ_RESUMED = 16 << 4;
    var READ_PIPE_DRAINED = 32 << 4;
    var READ_ENDING = 64 << 4;
    var READ_EMIT_DATA = 128 << 4;
    var READ_EMIT_READABLE = 256 << 4;
    var READ_EMITTED_READABLE = 512 << 4;
    var READ_DONE = 1024 << 4;
    var READ_NEXT_TICK = 2048 << 4;
    var READ_NEEDS_PUSH = 4096 << 4;
    var READ_READ_AHEAD = 8192 << 4;
    var READ_FLOWING = READ_RESUMED | READ_PIPE_DRAINED;
    var READ_ACTIVE_AND_NEEDS_PUSH = READ_ACTIVE | READ_NEEDS_PUSH;
    var READ_PRIMARY_AND_ACTIVE = READ_PRIMARY | READ_ACTIVE;
    var READ_EMIT_READABLE_AND_QUEUED = READ_EMIT_READABLE | READ_QUEUED;
    var READ_RESUMED_READ_AHEAD = READ_RESUMED | READ_READ_AHEAD;
    var READ_NOT_ACTIVE = MAX ^ READ_ACTIVE;
    var READ_NON_PRIMARY = MAX ^ READ_PRIMARY;
    var READ_NON_PRIMARY_AND_PUSHED = MAX ^ (READ_PRIMARY | READ_NEEDS_PUSH);
    var READ_PUSHED = MAX ^ READ_NEEDS_PUSH;
    var READ_PAUSED = MAX ^ READ_RESUMED;
    var READ_NOT_QUEUED = MAX ^ (READ_QUEUED | READ_EMITTED_READABLE);
    var READ_NOT_ENDING = MAX ^ READ_ENDING;
    var READ_PIPE_NOT_DRAINED = MAX ^ READ_FLOWING;
    var READ_NOT_NEXT_TICK = MAX ^ READ_NEXT_TICK;
    var READ_NOT_UPDATING = MAX ^ READ_UPDATING;
    var READ_NO_READ_AHEAD = MAX ^ READ_READ_AHEAD;
    var READ_PAUSED_NO_READ_AHEAD = MAX ^ READ_RESUMED_READ_AHEAD;
    var WRITE_ACTIVE = 1 << 18;
    var WRITE_UPDATING = 2 << 18;
    var WRITE_PRIMARY = 4 << 18;
    var WRITE_QUEUED = 8 << 18;
    var WRITE_UNDRAINED = 16 << 18;
    var WRITE_DONE = 32 << 18;
    var WRITE_EMIT_DRAIN = 64 << 18;
    var WRITE_NEXT_TICK = 128 << 18;
    var WRITE_WRITING = 256 << 18;
    var WRITE_FINISHING = 512 << 18;
    var WRITE_CORKED = 1024 << 18;
    var WRITE_NOT_ACTIVE = MAX ^ (WRITE_ACTIVE | WRITE_WRITING);
    var WRITE_NON_PRIMARY = MAX ^ WRITE_PRIMARY;
    var WRITE_NOT_FINISHING = MAX ^ (WRITE_ACTIVE | WRITE_FINISHING);
    var WRITE_DRAINED = MAX ^ WRITE_UNDRAINED;
    var WRITE_NOT_QUEUED = MAX ^ WRITE_QUEUED;
    var WRITE_NOT_NEXT_TICK = MAX ^ WRITE_NEXT_TICK;
    var WRITE_NOT_UPDATING = MAX ^ WRITE_UPDATING;
    var WRITE_NOT_CORKED = MAX ^ WRITE_CORKED;
    var ACTIVE = READ_ACTIVE | WRITE_ACTIVE;
    var NOT_ACTIVE = MAX ^ ACTIVE;
    var DONE = READ_DONE | WRITE_DONE;
    var DESTROY_STATUS = DESTROYING | DESTROYED | PREDESTROYING;
    var OPEN_STATUS = DESTROY_STATUS | OPENING;
    var AUTO_DESTROY = DESTROY_STATUS | DONE;
    var NON_PRIMARY = WRITE_NON_PRIMARY & READ_NON_PRIMARY;
    var ACTIVE_OR_TICKING = WRITE_NEXT_TICK | READ_NEXT_TICK;
    var TICKING = ACTIVE_OR_TICKING & NOT_ACTIVE;
    var IS_OPENING = OPEN_STATUS | TICKING;
    var READ_PRIMARY_STATUS = OPEN_STATUS | READ_ENDING | READ_DONE;
    var READ_STATUS = OPEN_STATUS | READ_DONE | READ_QUEUED;
    var READ_ENDING_STATUS = OPEN_STATUS | READ_ENDING | READ_QUEUED;
    var READ_READABLE_STATUS = OPEN_STATUS | READ_EMIT_READABLE | READ_QUEUED | READ_EMITTED_READABLE;
    var SHOULD_NOT_READ = OPEN_STATUS | READ_ACTIVE | READ_ENDING | READ_DONE | READ_NEEDS_PUSH | READ_READ_AHEAD;
    var READ_BACKPRESSURE_STATUS = DESTROY_STATUS | READ_ENDING | READ_DONE;
    var READ_UPDATE_SYNC_STATUS = READ_UPDATING | OPEN_STATUS | READ_NEXT_TICK | READ_PRIMARY;
    var READ_NEXT_TICK_OR_OPENING = READ_NEXT_TICK | OPENING;
    var WRITE_PRIMARY_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_DONE;
    var WRITE_QUEUED_AND_UNDRAINED = WRITE_QUEUED | WRITE_UNDRAINED;
    var WRITE_QUEUED_AND_ACTIVE = WRITE_QUEUED | WRITE_ACTIVE;
    var WRITE_DRAIN_STATUS = WRITE_QUEUED | WRITE_UNDRAINED | OPEN_STATUS | WRITE_ACTIVE;
    var WRITE_STATUS = OPEN_STATUS | WRITE_ACTIVE | WRITE_QUEUED | WRITE_CORKED;
    var WRITE_PRIMARY_AND_ACTIVE = WRITE_PRIMARY | WRITE_ACTIVE;
    var WRITE_ACTIVE_AND_WRITING = WRITE_ACTIVE | WRITE_WRITING;
    var WRITE_FINISHING_STATUS = OPEN_STATUS | WRITE_FINISHING | WRITE_QUEUED_AND_ACTIVE | WRITE_DONE;
    var WRITE_BACKPRESSURE_STATUS = WRITE_UNDRAINED | DESTROY_STATUS | WRITE_FINISHING | WRITE_DONE;
    var WRITE_UPDATE_SYNC_STATUS = WRITE_UPDATING | OPEN_STATUS | WRITE_NEXT_TICK | WRITE_PRIMARY;
    var WRITE_DROP_DATA = WRITE_FINISHING | WRITE_DONE | DESTROY_STATUS;
    var asyncIterator = Symbol.asyncIterator || /* @__PURE__ */ Symbol("asyncIterator");
    var WritableState = class {
      constructor(stream, { highWaterMark = 16384, map = null, mapWritable, byteLength, byteLengthWritable } = {}) {
        this.stream = stream;
        this.queue = new FIFO();
        this.highWaterMark = highWaterMark;
        this.buffered = 0;
        this.error = null;
        this.pipeline = null;
        this.drains = null;
        this.byteLength = byteLengthWritable || byteLength || defaultByteLength;
        this.map = mapWritable || map;
        this.afterWrite = afterWrite.bind(this);
        this.afterUpdateNextTick = updateWriteNT.bind(this);
      }
      get ending() {
        return (this.stream._duplexState & WRITE_FINISHING) !== 0;
      }
      get ended() {
        return (this.stream._duplexState & WRITE_DONE) !== 0;
      }
      push(data) {
        if ((this.stream._duplexState & WRITE_DROP_DATA) !== 0) return false;
        if (this.map !== null) data = this.map(data);
        this.buffered += this.byteLength(data);
        this.queue.push(data);
        if (this.buffered < this.highWaterMark) {
          this.stream._duplexState |= WRITE_QUEUED;
          return true;
        }
        this.stream._duplexState |= WRITE_QUEUED_AND_UNDRAINED;
        return false;
      }
      shift() {
        const data = this.queue.shift();
        this.buffered -= this.byteLength(data);
        if (this.buffered === 0) this.stream._duplexState &= WRITE_NOT_QUEUED;
        return data;
      }
      end(data) {
        if (typeof data === "function") this.stream.once("finish", data);
        else if (data !== void 0 && data !== null) this.push(data);
        this.stream._duplexState = (this.stream._duplexState | WRITE_FINISHING) & WRITE_NON_PRIMARY;
      }
      autoBatch(data, cb) {
        const buffer = [];
        const stream = this.stream;
        buffer.push(data);
        while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED_AND_ACTIVE) {
          buffer.push(stream._writableState.shift());
        }
        if ((stream._duplexState & OPEN_STATUS) !== 0) return cb(null);
        stream._writev(buffer, cb);
      }
      update() {
        const stream = this.stream;
        stream._duplexState |= WRITE_UPDATING;
        do {
          while ((stream._duplexState & WRITE_STATUS) === WRITE_QUEUED) {
            const data = this.shift();
            stream._duplexState |= WRITE_ACTIVE_AND_WRITING;
            stream._write(data, this.afterWrite);
          }
          if ((stream._duplexState & WRITE_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary();
        } while (this.continueUpdate() === true);
        stream._duplexState &= WRITE_NOT_UPDATING;
      }
      updateNonPrimary() {
        const stream = this.stream;
        if ((stream._duplexState & WRITE_FINISHING_STATUS) === WRITE_FINISHING) {
          stream._duplexState = stream._duplexState | WRITE_ACTIVE;
          stream._final(afterFinal.bind(this));
          return;
        }
        if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {
          if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {
            stream._duplexState |= ACTIVE;
            stream._destroy(afterDestroy.bind(this));
          }
          return;
        }
        if ((stream._duplexState & IS_OPENING) === OPENING) {
          stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING;
          stream._open(afterOpen.bind(this));
        }
      }
      continueUpdate() {
        if ((this.stream._duplexState & WRITE_NEXT_TICK) === 0) return false;
        this.stream._duplexState &= WRITE_NOT_NEXT_TICK;
        return true;
      }
      updateCallback() {
        if ((this.stream._duplexState & WRITE_UPDATE_SYNC_STATUS) === WRITE_PRIMARY) this.update();
        else this.updateNextTick();
      }
      updateNextTick() {
        if ((this.stream._duplexState & WRITE_NEXT_TICK) !== 0) return;
        this.stream._duplexState |= WRITE_NEXT_TICK;
        if ((this.stream._duplexState & WRITE_UPDATING) === 0) qmt(this.afterUpdateNextTick);
      }
    };
    var ReadableState = class {
      constructor(stream, { highWaterMark = 16384, map = null, mapReadable, byteLength, byteLengthReadable } = {}) {
        this.stream = stream;
        this.queue = new FIFO();
        this.highWaterMark = highWaterMark === 0 ? 1 : highWaterMark;
        this.buffered = 0;
        this.readAhead = highWaterMark > 0;
        this.error = null;
        this.pipeline = null;
        this.byteLength = byteLengthReadable || byteLength || defaultByteLength;
        this.map = mapReadable || map;
        this.pipeTo = null;
        this.afterRead = afterRead.bind(this);
        this.afterUpdateNextTick = updateReadNT.bind(this);
      }
      get ending() {
        return (this.stream._duplexState & READ_ENDING) !== 0;
      }
      get ended() {
        return (this.stream._duplexState & READ_DONE) !== 0;
      }
      pipe(pipeTo, cb) {
        if (this.pipeTo !== null) throw new Error("Can only pipe to one destination");
        if (typeof cb !== "function") cb = null;
        this.stream._duplexState |= READ_PIPE_DRAINED;
        this.pipeTo = pipeTo;
        this.pipeline = new Pipeline(this.stream, pipeTo, cb);
        if (cb) this.stream.on("error", noop);
        if (isStreamx(pipeTo)) {
          pipeTo._writableState.pipeline = this.pipeline;
          if (cb) pipeTo.on("error", noop);
          pipeTo.on("finish", this.pipeline.finished.bind(this.pipeline));
        } else {
          const onerror = this.pipeline.done.bind(this.pipeline, pipeTo);
          const onclose = this.pipeline.done.bind(this.pipeline, pipeTo, null);
          pipeTo.on("error", onerror);
          pipeTo.on("close", onclose);
          pipeTo.on("finish", this.pipeline.finished.bind(this.pipeline));
        }
        pipeTo.on("drain", afterDrain.bind(this));
        this.stream.emit("piping", pipeTo);
        pipeTo.emit("pipe", this.stream);
      }
      push(data) {
        const stream = this.stream;
        if (data === null) {
          this.highWaterMark = 0;
          stream._duplexState = (stream._duplexState | READ_ENDING) & READ_NON_PRIMARY_AND_PUSHED;
          return false;
        }
        if (this.map !== null) {
          data = this.map(data);
          if (data === null) {
            stream._duplexState &= READ_PUSHED;
            return this.buffered < this.highWaterMark;
          }
        }
        this.buffered += this.byteLength(data);
        this.queue.push(data);
        stream._duplexState = (stream._duplexState | READ_QUEUED) & READ_PUSHED;
        return this.buffered < this.highWaterMark;
      }
      shift() {
        const data = this.queue.shift();
        this.buffered -= this.byteLength(data);
        if (this.buffered === 0) this.stream._duplexState &= READ_NOT_QUEUED;
        return data;
      }
      unshift(data) {
        const pending = [this.map !== null ? this.map(data) : data];
        while (this.buffered > 0) pending.push(this.shift());
        for (let i = 0; i < pending.length - 1; i++) {
          const data2 = pending[i];
          this.buffered += this.byteLength(data2);
          this.queue.push(data2);
        }
        this.push(pending[pending.length - 1]);
      }
      read() {
        const stream = this.stream;
        if ((stream._duplexState & READ_STATUS) === READ_QUEUED) {
          const data = this.shift();
          if (this.pipeTo !== null && this.pipeTo.write(data) === false)
            stream._duplexState &= READ_PIPE_NOT_DRAINED;
          if ((stream._duplexState & READ_EMIT_DATA) !== 0) stream.emit("data", data);
          return data;
        }
        if (this.readAhead === false) {
          stream._duplexState |= READ_READ_AHEAD;
          this.updateNextTick();
        }
        return null;
      }
      drain() {
        const stream = this.stream;
        while ((stream._duplexState & READ_STATUS) === READ_QUEUED && (stream._duplexState & READ_FLOWING) !== 0) {
          const data = this.shift();
          if (this.pipeTo !== null && this.pipeTo.write(data) === false)
            stream._duplexState &= READ_PIPE_NOT_DRAINED;
          if ((stream._duplexState & READ_EMIT_DATA) !== 0) stream.emit("data", data);
        }
      }
      update() {
        const stream = this.stream;
        stream._duplexState |= READ_UPDATING;
        do {
          this.drain();
          while (this.buffered < this.highWaterMark && (stream._duplexState & SHOULD_NOT_READ) === READ_READ_AHEAD) {
            stream._duplexState |= READ_ACTIVE_AND_NEEDS_PUSH;
            stream._read(this.afterRead);
            this.drain();
          }
          if ((stream._duplexState & READ_READABLE_STATUS) === READ_EMIT_READABLE_AND_QUEUED) {
            stream._duplexState |= READ_EMITTED_READABLE;
            stream.emit("readable");
          }
          if ((stream._duplexState & READ_PRIMARY_AND_ACTIVE) === 0) this.updateNonPrimary();
        } while (this.continueUpdate() === true);
        stream._duplexState &= READ_NOT_UPDATING;
      }
      updateNonPrimary() {
        const stream = this.stream;
        if ((stream._duplexState & READ_ENDING_STATUS) === READ_ENDING) {
          stream._duplexState = (stream._duplexState | READ_DONE) & READ_NOT_ENDING;
          stream.emit("end");
          if ((stream._duplexState & AUTO_DESTROY) === DONE) stream._duplexState |= DESTROYING;
          if (this.pipeTo !== null) this.pipeTo.end();
        }
        if ((stream._duplexState & DESTROY_STATUS) === DESTROYING) {
          if ((stream._duplexState & ACTIVE_OR_TICKING) === 0) {
            stream._duplexState |= ACTIVE;
            stream._destroy(afterDestroy.bind(this));
          }
          return;
        }
        if ((stream._duplexState & IS_OPENING) === OPENING) {
          stream._duplexState = (stream._duplexState | ACTIVE) & NOT_OPENING;
          stream._open(afterOpen.bind(this));
        }
      }
      continueUpdate() {
        if ((this.stream._duplexState & READ_NEXT_TICK) === 0) return false;
        this.stream._duplexState &= READ_NOT_NEXT_TICK;
        return true;
      }
      updateCallback() {
        if ((this.stream._duplexState & READ_UPDATE_SYNC_STATUS) === READ_PRIMARY) this.update();
        else this.updateNextTick();
      }
      updateNextTickIfOpen() {
        if ((this.stream._duplexState & READ_NEXT_TICK_OR_OPENING) !== 0) return;
        this.stream._duplexState |= READ_NEXT_TICK;
        if ((this.stream._duplexState & READ_UPDATING) === 0) qmt(this.afterUpdateNextTick);
      }
      updateNextTick() {
        if ((this.stream._duplexState & READ_NEXT_TICK) !== 0) return;
        this.stream._duplexState |= READ_NEXT_TICK;
        if ((this.stream._duplexState & READ_UPDATING) === 0) qmt(this.afterUpdateNextTick);
      }
    };
    var TransformState = class {
      constructor(stream) {
        this.data = null;
        this.afterTransform = afterTransform.bind(stream);
        this.afterFinal = null;
      }
    };
    var Pipeline = class {
      constructor(src, dst, cb) {
        this.from = src;
        this.to = dst;
        this.afterPipe = cb;
        this.error = null;
        this.pipeToFinished = false;
      }
      finished() {
        this.pipeToFinished = true;
      }
      done(stream, err) {
        if (err) this.error = err;
        if (stream === this.to) {
          this.to = null;
          if (this.from !== null) {
            if ((this.from._duplexState & READ_DONE) === 0 || !this.pipeToFinished) {
              this.from.destroy(this.error || new Error("Writable stream closed prematurely"));
            }
            return;
          }
        }
        if (stream === this.from) {
          this.from = null;
          if (this.to !== null) {
            if ((stream._duplexState & READ_DONE) === 0) {
              this.to.destroy(this.error || new Error("Readable stream closed before ending"));
            }
            return;
          }
        }
        if (this.afterPipe !== null) this.afterPipe(this.error);
        this.to = this.from = this.afterPipe = null;
      }
    };
    function afterDrain() {
      this.stream._duplexState |= READ_PIPE_DRAINED;
      this.updateCallback();
    }
    function afterFinal(err) {
      const stream = this.stream;
      if (err) stream.destroy(err);
      if ((stream._duplexState & DESTROY_STATUS) === 0) {
        stream._duplexState |= WRITE_DONE;
        stream.emit("finish");
      }
      if ((stream._duplexState & AUTO_DESTROY) === DONE) {
        stream._duplexState |= DESTROYING;
      }
      stream._duplexState &= WRITE_NOT_FINISHING;
      if ((stream._duplexState & WRITE_UPDATING) === 0) this.update();
      else this.updateNextTick();
    }
    function afterDestroy(err) {
      const stream = this.stream;
      if (!err && this.error !== STREAM_DESTROYED) err = this.error;
      if (err) stream.emit("error", err);
      stream._duplexState |= DESTROYED;
      stream.emit("close");
      const rs = stream._readableState;
      const ws = stream._writableState;
      if (rs !== null && rs.pipeline !== null) rs.pipeline.done(stream, err);
      if (ws !== null) {
        while (ws.drains !== null && ws.drains.length > 0) ws.drains.shift().resolve(false);
        if (ws.pipeline !== null) ws.pipeline.done(stream, err);
      }
    }
    function afterWrite(err) {
      const stream = this.stream;
      if (err) stream.destroy(err);
      stream._duplexState &= WRITE_NOT_ACTIVE;
      if (this.drains !== null) tickDrains(this.drains);
      if ((stream._duplexState & WRITE_DRAIN_STATUS) === WRITE_UNDRAINED) {
        stream._duplexState &= WRITE_DRAINED;
        if ((stream._duplexState & WRITE_EMIT_DRAIN) === WRITE_EMIT_DRAIN) {
          stream.emit("drain");
        }
      }
      this.updateCallback();
    }
    function afterRead(err) {
      if (err) this.stream.destroy(err);
      this.stream._duplexState &= READ_NOT_ACTIVE;
      if (this.readAhead === false && (this.stream._duplexState & READ_RESUMED) === 0)
        this.stream._duplexState &= READ_NO_READ_AHEAD;
      this.updateCallback();
    }
    function updateReadNT() {
      if ((this.stream._duplexState & READ_UPDATING) === 0) {
        this.stream._duplexState &= READ_NOT_NEXT_TICK;
        this.update();
      }
    }
    function updateWriteNT() {
      if ((this.stream._duplexState & WRITE_UPDATING) === 0) {
        this.stream._duplexState &= WRITE_NOT_NEXT_TICK;
        this.update();
      }
    }
    function tickDrains(drains) {
      for (let i = 0; i < drains.length; i++) {
        if (--drains[i].writes === 0) {
          drains.shift().resolve(true);
          i--;
        }
      }
    }
    function afterOpen(err) {
      const stream = this.stream;
      if (err) stream.destroy(err);
      if ((stream._duplexState & DESTROYING) === 0) {
        if ((stream._duplexState & READ_PRIMARY_STATUS) === 0) stream._duplexState |= READ_PRIMARY;
        if ((stream._duplexState & WRITE_PRIMARY_STATUS) === 0) stream._duplexState |= WRITE_PRIMARY;
        stream.emit("open");
      }
      stream._duplexState &= NOT_ACTIVE;
      if (stream._writableState !== null) {
        stream._writableState.updateCallback();
      }
      if (stream._readableState !== null) {
        stream._readableState.updateCallback();
      }
    }
    function afterTransform(err, data) {
      if (data !== void 0 && data !== null) this.push(data);
      this._writableState.afterWrite(err);
    }
    function newListener(name) {
      if (this._readableState !== null) {
        if (name === "data") {
          this._duplexState |= READ_EMIT_DATA | READ_RESUMED_READ_AHEAD;
          this._readableState.updateNextTick();
        }
        if (name === "readable") {
          this._duplexState |= READ_EMIT_READABLE;
          this._readableState.updateNextTick();
        }
      }
      if (this._writableState !== null) {
        if (name === "drain") {
          this._duplexState |= WRITE_EMIT_DRAIN;
          this._writableState.updateNextTick();
        }
      }
    }
    var Stream = class extends EventEmitter {
      constructor(opts) {
        super();
        this._duplexState = 0;
        this._readableState = null;
        this._writableState = null;
        if (opts) {
          if (opts.open) this._open = opts.open;
          if (opts.destroy) this._destroy = opts.destroy;
          if (opts.predestroy) this._predestroy = opts.predestroy;
          if (opts.signal) {
            opts.signal.addEventListener("abort", abort.bind(this));
          }
        }
        this.on("newListener", newListener);
      }
      _open(cb) {
        cb(null);
      }
      _destroy(cb) {
        cb(null);
      }
      _predestroy() {
      }
      get readable() {
        return this._readableState !== null ? true : void 0;
      }
      get writable() {
        return this._writableState !== null ? true : void 0;
      }
      get destroyed() {
        return (this._duplexState & DESTROYED) !== 0;
      }
      get destroying() {
        return (this._duplexState & DESTROY_STATUS) !== 0;
      }
      destroy(err) {
        if ((this._duplexState & DESTROY_STATUS) === 0) {
          if (!err) err = STREAM_DESTROYED;
          this._duplexState = (this._duplexState | DESTROYING) & NON_PRIMARY;
          if (this._readableState !== null) {
            this._readableState.highWaterMark = 0;
            this._readableState.error = err;
          }
          if (this._writableState !== null) {
            this._writableState.highWaterMark = 0;
            this._writableState.error = err;
          }
          this._duplexState |= PREDESTROYING;
          this._predestroy();
          this._duplexState &= NOT_PREDESTROYING;
          if (this._readableState !== null) this._readableState.updateNextTick();
          if (this._writableState !== null) this._writableState.updateNextTick();
        }
      }
    };
    var Readable = class _Readable extends Stream {
      constructor(opts) {
        super(opts);
        this._duplexState |= OPENING | WRITE_DONE | READ_READ_AHEAD;
        this._readableState = new ReadableState(this, opts);
        if (opts) {
          if (this._readableState.readAhead === false) this._duplexState &= READ_NO_READ_AHEAD;
          if (opts.read) this._read = opts.read;
          if (opts.eagerOpen) this._readableState.updateNextTick();
          if (opts.encoding) this.setEncoding(opts.encoding);
        }
      }
      setEncoding(encoding) {
        const dec = new TextDecoder(encoding);
        const map = this._readableState.map || echo;
        this._readableState.map = mapOrSkip;
        return this;
        function mapOrSkip(data) {
          const next = dec.push(data);
          return next === "" && (data.byteLength !== 0 || dec.remaining > 0) ? null : map(next);
        }
      }
      _read(cb) {
        cb(null);
      }
      pipe(dest, cb) {
        this._readableState.updateNextTick();
        this._readableState.pipe(dest, cb);
        return dest;
      }
      read() {
        this._readableState.updateNextTick();
        return this._readableState.read();
      }
      push(data) {
        this._readableState.updateNextTickIfOpen();
        return this._readableState.push(data);
      }
      unshift(data) {
        this._readableState.updateNextTickIfOpen();
        return this._readableState.unshift(data);
      }
      resume() {
        this._duplexState |= READ_RESUMED_READ_AHEAD;
        this._readableState.updateNextTick();
        return this;
      }
      pause() {
        this._duplexState &= this._readableState.readAhead === false ? READ_PAUSED_NO_READ_AHEAD : READ_PAUSED;
        return this;
      }
      static _fromAsyncIterator(ite, opts) {
        let destroy;
        const rs = new _Readable({
          ...opts,
          read(cb) {
            ite.next().then(push).then(cb.bind(null, null)).catch(cb);
          },
          predestroy() {
            destroy = ite.return();
          },
          destroy(cb) {
            if (!destroy) return cb(null);
            destroy.then(cb.bind(null, null)).catch(cb);
          }
        });
        return rs;
        function push(data) {
          if (data.done) rs.push(null);
          else rs.push(data.value);
        }
      }
      static from(data, opts) {
        if (isReadStreamx(data)) return data;
        if (data[asyncIterator]) return this._fromAsyncIterator(data[asyncIterator](), opts);
        if (!Array.isArray(data)) data = data === void 0 ? [] : [data];
        let i = 0;
        return new _Readable({
          ...opts,
          read(cb) {
            this.push(i === data.length ? null : data[i++]);
            cb(null);
          }
        });
      }
      static isBackpressured(rs) {
        return (rs._duplexState & READ_BACKPRESSURE_STATUS) !== 0 || rs._readableState.buffered >= rs._readableState.highWaterMark;
      }
      static isPaused(rs) {
        return (rs._duplexState & READ_RESUMED) === 0;
      }
      [asyncIterator]() {
        const stream = this;
        let error = null;
        let promiseResolve = null;
        let promiseReject = null;
        this.on("error", (err) => {
          error = err;
        });
        this.on("readable", onreadable);
        this.on("close", onclose);
        return {
          [asyncIterator]() {
            return this;
          },
          next() {
            return new Promise(function(resolve, reject) {
              promiseResolve = resolve;
              promiseReject = reject;
              const data = stream.read();
              if (data !== null) ondata(data);
              else if ((stream._duplexState & DESTROYED) !== 0) ondata(null);
            });
          },
          return() {
            return destroy(null);
          },
          throw(err) {
            return destroy(err);
          }
        };
        function onreadable() {
          if (promiseResolve !== null) ondata(stream.read());
        }
        function onclose() {
          if (promiseResolve !== null) ondata(null);
        }
        function ondata(data) {
          if (promiseReject === null) return;
          if (error) promiseReject(error);
          else if (data === null && (stream._duplexState & READ_DONE) === 0)
            promiseReject(STREAM_DESTROYED);
          else promiseResolve({ value: data, done: data === null });
          promiseReject = promiseResolve = null;
        }
        function destroy(err) {
          stream.destroy(err);
          return new Promise((resolve, reject) => {
            if (stream._duplexState & DESTROYED) return resolve({ value: void 0, done: true });
            stream.once("close", function() {
              if (err) reject(err);
              else resolve({ value: void 0, done: true });
            });
          });
        }
      }
    };
    var Writable = class extends Stream {
      constructor(opts) {
        super(opts);
        this._duplexState |= OPENING | READ_DONE;
        this._writableState = new WritableState(this, opts);
        if (opts) {
          if (opts.writev) this._writev = opts.writev;
          if (opts.write) this._write = opts.write;
          if (opts.final) this._final = opts.final;
          if (opts.eagerOpen) this._writableState.updateNextTick();
        }
      }
      cork() {
        this._duplexState |= WRITE_CORKED;
      }
      uncork() {
        this._duplexState &= WRITE_NOT_CORKED;
        this._writableState.updateNextTick();
      }
      _writev(batch, cb) {
        cb(null);
      }
      _write(data, cb) {
        this._writableState.autoBatch(data, cb);
      }
      _final(cb) {
        cb(null);
      }
      static isBackpressured(ws) {
        return (ws._duplexState & WRITE_BACKPRESSURE_STATUS) !== 0;
      }
      static drained(ws) {
        if (ws.destroyed) return Promise.resolve(false);
        const state = ws._writableState;
        const pending = isWritev(ws) ? Math.min(1, state.queue.length) : state.queue.length;
        const writes = pending + (ws._duplexState & WRITE_WRITING ? 1 : 0);
        if (writes === 0) return Promise.resolve(true);
        if (state.drains === null) state.drains = [];
        return new Promise((resolve) => {
          state.drains.push({ writes, resolve });
        });
      }
      write(data) {
        this._writableState.updateNextTick();
        return this._writableState.push(data);
      }
      end(data) {
        this._writableState.updateNextTick();
        this._writableState.end(data);
        return this;
      }
    };
    var Duplex = class extends Readable {
      // and Writable
      constructor(opts) {
        super(opts);
        this._duplexState = OPENING | this._duplexState & READ_READ_AHEAD;
        this._writableState = new WritableState(this, opts);
        if (opts) {
          if (opts.writev) this._writev = opts.writev;
          if (opts.write) this._write = opts.write;
          if (opts.final) this._final = opts.final;
        }
      }
      cork() {
        this._duplexState |= WRITE_CORKED;
      }
      uncork() {
        this._duplexState &= WRITE_NOT_CORKED;
        this._writableState.updateNextTick();
      }
      _writev(batch, cb) {
        cb(null);
      }
      _write(data, cb) {
        this._writableState.autoBatch(data, cb);
      }
      _final(cb) {
        cb(null);
      }
      write(data) {
        this._writableState.updateNextTick();
        return this._writableState.push(data);
      }
      end(data) {
        this._writableState.updateNextTick();
        this._writableState.end(data);
        return this;
      }
    };
    var Transform = class extends Duplex {
      constructor(opts) {
        super(opts);
        this._transformState = new TransformState(this);
        if (opts) {
          if (opts.transform) this._transform = opts.transform;
          if (opts.flush) this._flush = opts.flush;
        }
      }
      _write(data, cb) {
        if (this._readableState.buffered >= this._readableState.highWaterMark) {
          this._transformState.data = data;
        } else {
          this._transform(data, this._transformState.afterTransform);
        }
      }
      _read(cb) {
        if (this._transformState.data !== null) {
          const data = this._transformState.data;
          this._transformState.data = null;
          cb(null);
          this._transform(data, this._transformState.afterTransform);
        } else {
          cb(null);
        }
      }
      destroy(err) {
        super.destroy(err);
        if (this._transformState.data !== null) {
          this._transformState.data = null;
          this._transformState.afterTransform();
        }
      }
      _transform(data, cb) {
        cb(null, data);
      }
      _flush(cb) {
        cb(null);
      }
      _final(cb) {
        this._transformState.afterFinal = cb;
        this._flush(transformAfterFlush.bind(this));
      }
    };
    var PassThrough = class extends Transform {
    };
    function transformAfterFlush(err, data) {
      const cb = this._transformState.afterFinal;
      if (err) return cb(err);
      if (data !== null && data !== void 0) this.push(data);
      this.push(null);
      cb(null);
    }
    function pipelinePromise(...streams) {
      return new Promise((resolve, reject) => {
        return pipeline(...streams, (err) => {
          if (err) return reject(err);
          resolve();
        });
      });
    }
    function pipeline(stream, ...streams) {
      const all = Array.isArray(stream) ? [...stream, ...streams] : [stream, ...streams];
      const done = all.length && typeof all[all.length - 1] === "function" ? all.pop() : null;
      if (all.length < 2) throw new Error("Pipeline requires at least 2 streams");
      let src = all[0];
      let dest = null;
      let error = null;
      for (let i = 1; i < all.length; i++) {
        dest = all[i];
        if (isStreamx(src)) {
          src.pipe(dest, onerror);
        } else {
          errorHandle(src, true, i > 1, onerror);
          src.pipe(dest);
        }
        src = dest;
      }
      if (done) {
        let fin = false;
        const autoDestroy = isStreamx(dest) || !!(dest._writableState && dest._writableState.autoDestroy);
        dest.on("error", (err) => {
          if (error === null) error = err;
        });
        dest.on("finish", () => {
          fin = true;
          if (!autoDestroy) done(error);
        });
        if (autoDestroy) {
          dest.on("close", () => done(error || (fin ? null : PREMATURE_CLOSE)));
        }
      }
      return dest;
      function errorHandle(s, rd, wr, onerror2) {
        s.on("error", onerror2);
        s.on("close", onclose);
        function onclose() {
          if (rd && s._readableState && !s._readableState.ended) return onerror2(PREMATURE_CLOSE);
          if (wr && s._writableState && !s._writableState.ended) return onerror2(PREMATURE_CLOSE);
        }
      }
      function onerror(err) {
        if (!err || error) return;
        error = err;
        for (const s of all) {
          s.destroy(err);
        }
      }
    }
    function echo(s) {
      return s;
    }
    function isStream(stream) {
      return !!stream._readableState || !!stream._writableState;
    }
    function isStreamx(stream) {
      return typeof stream._duplexState === "number" && isStream(stream);
    }
    function isEnding(stream) {
      return !!stream._readableState && stream._readableState.ending;
    }
    function isEnded(stream) {
      return !!stream._readableState && stream._readableState.ended;
    }
    function isFinishing(stream) {
      return !!stream._writableState && stream._writableState.ending;
    }
    function isFinished(stream) {
      return !!stream._writableState && stream._writableState.ended;
    }
    function getStreamError(stream, opts = {}) {
      const err = stream._readableState && stream._readableState.error || stream._writableState && stream._writableState.error;
      return !opts.all && err === STREAM_DESTROYED ? null : err;
    }
    function isReadStreamx(stream) {
      return isStreamx(stream) && stream.readable;
    }
    function isDisturbed(stream) {
      return (stream._duplexState & OPENING) !== OPENING || (stream._duplexState & DESTROYING) === DESTROYING || (stream._duplexState & ACTIVE_OR_TICKING) !== 0;
    }
    function isTypedArray(data) {
      return typeof data === "object" && data !== null && typeof data.byteLength === "number";
    }
    function defaultByteLength(data) {
      return isTypedArray(data) ? data.byteLength : 1024;
    }
    function noop() {
    }
    function abort() {
      this.destroy(new Error("Stream aborted."));
    }
    function isWritev(s) {
      return s._writev !== Writable.prototype._writev && s._writev !== Duplex.prototype._writev;
    }
    module2.exports = {
      pipeline,
      pipelinePromise,
      isStream,
      isStreamx,
      isEnding,
      isEnded,
      isFinishing,
      isFinished,
      isDisturbed,
      getStreamError,
      Stream,
      Writable,
      Readable,
      Duplex,
      Transform,
      // Export PassThrough for compatibility with Node.js core's stream module
      PassThrough
    };
  }
});

// node_modules/hyperdb/lib/stream.js
var require_stream = __commonJS({
  "node_modules/hyperdb/lib/stream.js"(exports2, module2) {
    var { Readable, isEnded, getStreamError } = require_streamx();
    var b4a4 = require_b4a();
    module2.exports = class IndexStream extends Readable {
      constructor(db, range, {
        index = null,
        collection = index.collection,
        reverse = false,
        limit = -1,
        overlay = [],
        checkout = 0
      }) {
        super();
        this.versions = db.versions;
        this.engine = db.engine;
        this.snapshot = db.engineSnapshot;
        this.activeRequests = db.activeRequests;
        this.traceable = db.traceable;
        this.collection = collection;
        this.index = index;
        this.stream = this.snapshot.createReadStream(range, {
          reverse,
          limit,
          checkout,
          activeRequests: this.activeRequests
        });
        this.streamClosed = false;
        this.overlay = overlay;
        this.overlayIndex = 0;
        this.continueDestroy = null;
        this.limit = limit;
        this.reverse = reverse;
        this.mapping = false;
        this.ending = false;
        this.checkout = checkout;
        this.snapshot.ref();
      }
      _open(cb) {
        const destroy = this.destroy.bind(this);
        const drain = this._drain.bind(this);
        const onclose = this._onclose.bind(this);
        this.stream.on("readable", drain);
        this.stream.on("end", drain);
        this.stream.on("error", destroy);
        this.stream.on("close", onclose);
        cb(null);
      }
      _onclose() {
        this.streamClosed = true;
        if (isEnded(this.stream) === false) this.destroy();
        this._continueDestroyMaybe();
      }
      _continueDestroyMaybe() {
        if (this.mapping === true) return;
        if (this.streamClosed === false) return;
        if (this.continueDestroy === null) return;
        const cb = this.continueDestroy;
        this.continueDestroy = null;
        this.snapshot.unref();
        cb(null);
      }
      _push(value) {
        if (value === null) return;
        if (this.limit > 0) this.limit--;
        this.push(
          this.engine.finalize(
            this.collection,
            this.versions,
            this.checkout,
            this.traceable,
            value[0],
            value[1]
          )
        );
      }
      _process(batch, ended) {
        for (let i = 0; i < batch.length && this.limit !== 0; i++) {
          const data = batch[i];
          while (this.limit !== 0) {
            if (this.overlayIndex >= this.overlay.length) {
              this._push(data.value);
              break;
            }
            const cmp = b4a4.compare(data.key, this.overlay[this.overlayIndex].key);
            if (this.reverse === true ? cmp > 0 : cmp < 0) {
              this._push(data.value);
              break;
            }
            this._push(this.overlay[this.overlayIndex++].value);
            if (cmp === 0) break;
          }
        }
        if (ended === true) {
          while (this.overlayIndex < this.overlay.length && this.limit !== 0) {
            this._push(this.overlay[this.overlayIndex++].value);
          }
          this.push(null);
          this.ending = true;
        }
      }
      async _processAsap(promises, ended) {
        for (let i = 1; i < promises.length; i++) promises[i].catch(noop);
        for (let i = 0; i < promises.length; i++) {
          const batch = [await promises[i]];
          if (this.destroying === true) return;
          this._process(batch, i === promises.length - 1 && ended);
        }
      }
      async _mapAndProcess() {
        this.mapping = true;
        while (!Readable.isBackpressured(this) && this.destroying === false) {
          const entries = fullyDrain(this.stream);
          const promises = entries.length === 0 ? entries : this.snapshot.getIndirectRange(
            this.index.reconstruct,
            entries,
            this.checkout,
            this.activeRequests
          );
          const ended = isEnded(this.stream);
          if (promises.length === 0 && ended === false) break;
          try {
            if (this.engine.asap === true && promises.length > 1) {
              await this._processAsap(promises, ended);
            } else {
              const batch = await Promise.all(promises);
              if (this.destroying === false) this._process(batch, ended);
            }
          } catch (err) {
            await Promise.allSettled(promises);
            this.destroy(err);
          }
        }
        this.mapping = false;
        this._continueDestroyMaybe();
      }
      _drain() {
        if (Readable.isBackpressured(this)) return;
        if (this.index === null) {
          this._process(fullyDrainMapped(this.stream), isEnded(this.stream));
        } else if (this.mapping === false) {
          this._mapAndProcess();
        }
      }
      _read(cb) {
        this._drain();
        cb(null);
      }
      _predestroy() {
        this.stream.destroy();
      }
      _destroy(cb) {
        this.stream.destroy();
        this.continueDestroy = cb;
        this._continueDestroyMaybe();
      }
      one() {
        const stream = this;
        let last = null;
        return new Promise(function(resolve, reject) {
          stream.on("error", noop);
          stream.on("readable", onreadable);
          stream.on("close", onclose);
          function onreadable() {
            while (true) {
              const data = stream.read();
              if (data === null) return;
              last = data;
            }
          }
          function onclose() {
            if (isEnded(stream)) resolve(last);
            else reject(getStreamError(stream, { all: true }));
          }
        });
      }
      async toArray() {
        const stream = this;
        const list = [];
        return new Promise(function(resolve, reject) {
          stream.on("error", noop);
          stream.on("readable", onreadable);
          stream.on("close", onclose);
          function onreadable() {
            while (true) {
              const data = stream.read();
              if (data === null) return;
              list.push(data);
            }
          }
          function onclose() {
            if (isEnded(stream)) resolve(list);
            else reject(getStreamError(stream, { all: true }));
          }
        });
      }
    };
    function fullyDrainMapped(stream) {
      const batch = [];
      while (true) {
        const data = stream.read();
        if (data === null) return batch;
        batch.push({ key: data.key, value: [data.key, data.value] });
      }
    }
    function fullyDrain(stream) {
      const batch = [];
      while (true) {
        const data = stream.read();
        if (data === null) return batch;
        batch.push(data);
      }
    }
    function noop() {
    }
  }
});

// node_modules/hyperdb/lib/definition.js
var require_definition = __commonJS({
  "node_modules/hyperdb/lib/definition.js"(exports2) {
    exports2.isDefinition = isDefinition;
    exports2.compat = makeCompat;
    function makeCompat(definition) {
      if (definition.versions) return definition;
      for (const c4 of definition.collections) {
        if (typeof c4.version === "number") continue;
        const { encodeValue } = c4;
        c4.encodeValue = function(schemaVersion, collectionVersion, record) {
          return encodeValue(schemaVersion, record);
        };
        c4.version = 0;
        c4.decodedVersion = 0;
      }
      for (const i of definition.indexes) {
        if (typeof i.version === "number") continue;
        i.version = 0;
      }
      return {
        versions: { schema: definition.version, db: 0 },
        collections: definition.collections,
        indexes: definition.indexes,
        resolveCollection: definition.resolveCollection,
        resolveIndex: definition.resolveIndex
      };
    }
    function isDefinition(definition) {
      return !!(definition && typeof definition.resolveCollection === "function");
    }
  }
});

// node_modules/scope-lock/index.js
var require_scope_lock = __commonJS({
  "node_modules/scope-lock/index.js"(exports2, module2) {
    var tmpResolve = null;
    module2.exports = class ScopeLock {
      constructor({ debounce = false } = {}) {
        this.debounce = debounce;
        this.waiting = [];
        this.locked = false;
        this.skip = 0;
        this.destroyed = false;
      }
      flush() {
        if (this.locked === false && this.waiting.length === 0) return Promise.resolve(this.destroyed === false);
        const promise = new Promise(setTmpResolve);
        const resolve = tmpResolve;
        tmpResolve = null;
        this.waiting.push({ lock: false, resolve });
        return promise;
      }
      destroy() {
        this.destroyed = true;
      }
      lock() {
        const promise = new Promise(setTmpResolve);
        const resolve = tmpResolve;
        tmpResolve = null;
        if (this.locked === true) {
          this.waiting.push({ lock: true, resolve });
          return promise;
        }
        if (this.destroyed === true) {
          resolve(false);
          return promise;
        }
        this.locked = true;
        resolve(true);
        return promise;
      }
      unlock() {
        if (this.destroyed === true) {
          for (let i = 0; i < this.waiting.length; i++) {
            this.waiting[i].resolve(false);
          }
          this.waiting = [];
          this.skip = 0;
          this.locked = false;
          return;
        }
        if (this.skip !== 0) {
          for (let i = 0; i < this.skip; i++) {
            const { lock, resolve: resolve2 } = this.waiting[i];
            resolve2(lock === false);
          }
          this.waiting = this.waiting.slice(this.skip);
          this.skip = 0;
        }
        while (this.waiting.length > 0 && this.waiting[0].lock === false) {
          this.waiting.shift().resolve(true);
        }
        if (this.waiting.length === 0) {
          this.locked = false;
          return;
        }
        const { resolve } = this.waiting.shift();
        if (this.debounce === true) this.skip = this.waiting.length;
        resolve(true);
      }
    };
    function setTmpResolve(resolve) {
      tmpResolve = resolve;
    }
  }
});

// node_modules/hyperdb/lib/sessions.js
var require_sessions = __commonJS({
  "node_modules/hyperdb/lib/sessions.js"(exports2, module2) {
    module2.exports = class SessionTracker {
      constructor() {
        this.sessions = [];
      }
      get size() {
        return this.sessions.length;
      }
      has(s) {
        return s.index < this.sessions.length && this.sessions[s.index] === s;
      }
      add(s) {
        if (this.has(s)) return;
        s.index = this.sessions.push(s) - 1;
      }
      remove(s) {
        if (!this.has(s)) return;
        const head = this.sessions.pop();
        if (head === s) return;
        this.sessions[head.index = s.index] = head;
      }
      close(skip) {
        const closing = [];
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          const s = this.sessions[i];
          if (s === skip) continue;
          closing.push(s.close());
        }
        return Promise.all(closing);
      }
    };
  }
});

// node_modules/hyperdb/lib/engine/rocks.js
var require_rocks = __commonJS({
  "node_modules/hyperdb/lib/engine/rocks.js"(exports2, module2) {
    var RocksDB = require("rocksdb-native");
    var ScopeLock = require_scope_lock();
    var Sessions = require_sessions();
    var RocksSnapshot = class {
      constructor(snap, clock) {
        this.clock = clock;
        this.corks = 0;
        this.refs = 1;
        this.snapshot = snap;
        this.opened = true;
        this.batch = null;
        this.batches = [];
      }
      ready() {
        return this.snapshot.ready();
      }
      ref() {
        this.refs++;
        return this;
      }
      unref() {
        if (--this.refs === 0) {
          this.snapshot.close().catch(noop);
          for (const b of this.batches) b.destroy();
        }
      }
      cork() {
        this.corks++;
        if (this.batch === null) this.batch = this.snapshot.read();
      }
      uncork() {
        if (--this.corks !== 0) return;
        if (this.batch !== null) this._flushBackground(this.batch);
        this.batch = null;
      }
      // checkout, reqs is just here for completeness, not supported in rocks
      getIndirectRange(reconstruct, entries, checkout, reqs) {
        if (this.snapshot._state.closing) return rejectAll(entries);
        const read = this.batches.length > 0 ? this.batches.pop() : this.snapshot.read();
        const promises = new Array(entries.length);
        for (let i = 0; i < promises.length; i++) {
          const { key, value } = entries[i];
          promises[i] = getWrapped(read, key, reconstruct(key, value));
        }
        this._flushBackground(read);
        return promises;
      }
      // checkout is just here for completeness, not supported in rocks
      getBatch(keys, checkout, reqs) {
        const read = this.batches.length > 0 ? this.batches.pop() : this.snapshot.read();
        const promises = new Array(keys.length);
        for (let i = 0; i < promises.length; i++) {
          promises[i] = read.get(keys[i]);
        }
        this._flushBackground(read);
        return Promise.all(promises);
      }
      // checkout is just here for completeness, not supported in rocks
      get(key, checkout, reqs) {
        return this.batch === null ? this.snapshot.get(key) : this.batch.get(key);
      }
      createReadStream(range, options) {
        return this.snapshot.iterator({ ...range, ...options });
      }
      async _flushBackground(batch) {
        try {
          await batch.flush();
          this.batches.push(batch);
        } catch (err) {
          batch.destroy();
        }
      }
    };
    module2.exports = class RocksEngine {
      constructor(storage, options = {}) {
        this.asap = false;
        this.clock = 0;
        this.sessions = new Sessions();
        this.trace = options.trace || null;
        this.core = null;
        this.db = typeof storage === "object" ? storage : new RocksDB(storage, options);
        this.db.ready().catch(noop);
        this.write = null;
        this.tx = null;
        this.lock = new ScopeLock();
      }
      get closed() {
        return this.db.closed;
      }
      enter() {
        return this.lock.lock();
      }
      exit() {
        this.tx = null;
        this.lock.unlock();
      }
      ready() {
        return this.db.ready();
      }
      close() {
        if (this.write !== null) this.write.destroy();
        return this.db.close();
      }
      finalize(collection, versions, checkout, tracing, key, value) {
        if (value === null) return null;
        const reconstructed = collection.reconstruct(versions.schema, key, value);
        if (this.trace && tracing) this.trace(collection.name, reconstructed, checkout);
        return reconstructed;
      }
      changes() {
        throw new Error("Not supported in Rocks engine");
      }
      snapshot() {
        return new RocksSnapshot(this.db.snapshot(), this.clock);
      }
      outdated(snap) {
        return snap === null || snap.clock !== this.clock;
      }
      async commit(updates) {
        this.clock++;
        if (this.write === null) this.write = this.db.write();
        const entries = updates.batch();
        for (let i = 0; i < entries.length; i++) {
          const [key, value] = entries[i];
          if (value !== null) this.write.tryPut(key, value);
          else this.write.tryDelete(key);
        }
        await this.write.flush();
      }
      clearRequests(reqs) {
      }
    };
    async function getWrapped(read, key, value) {
      return { key, value: [value, await read.get(value)] };
    }
    function noop() {
    }
    function rejectAll(entries) {
      const promises = new Array(entries.length);
      for (let i = 0; i < entries.length; i++) {
        promises[i] = Promise.reject(new Error("Database is closed"));
      }
      return promises;
    }
  }
});

// node_modules/codecs/index.js
var require_codecs = __commonJS({
  "node_modules/codecs/index.js"(exports2, module2) {
    var b4a4 = require_b4a();
    module2.exports = codecs;
    codecs.ascii = createString("ascii");
    codecs.utf8 = createString("utf-8");
    codecs.hex = createString("hex");
    codecs.base64 = createString("base64");
    codecs.ucs2 = createString("ucs2");
    codecs.utf16le = createString("utf16le");
    codecs.ndjson = createJSON(true);
    codecs.json = createJSON(false);
    codecs.binary = {
      name: "binary",
      encode: function encodeBinary(obj) {
        return typeof obj === "string" ? b4a4.from(obj, "utf-8") : b4a4.toBuffer(obj);
      },
      decode: function decodeBinary(buf) {
        return b4a4.toBuffer(buf);
      }
    };
    function isCompactEncoding(c4) {
      return !!(c4.encode && c4.decode && c4.preencode);
    }
    function fromCompactEncoding(c4) {
      return {
        name: "compact-encoding",
        encode: function encodeWithCompact(value) {
          const state = { start: 0, end: 0, buffer: null, cache: null };
          c4.preencode(state, value);
          state.buffer = b4a4.allocUnsafe(state.end);
          c4.encode(state, value);
          return state.buffer;
        },
        decode: function decodeWithCompact(buffer) {
          return c4.decode({ start: 0, end: buffer.byteLength, buffer, cache: null });
        }
      };
    }
    function codecs(fmt, fallback) {
      if (typeof fmt === "object" && fmt) {
        return isCompactEncoding(fmt) ? fromCompactEncoding(fmt) : fmt;
      }
      switch (fmt) {
        case "ndjson":
          return codecs.ndjson;
        case "json":
          return codecs.json;
        case "ascii":
          return codecs.ascii;
        case "utf-8":
        case "utf8":
          return codecs.utf8;
        case "hex":
          return codecs.hex;
        case "base64":
          return codecs.base64;
        case "ucs-2":
        case "ucs2":
          return codecs.ucs2;
        case "utf16-le":
        case "utf16le":
          return codecs.utf16le;
      }
      return fallback !== void 0 ? fallback : codecs.binary;
    }
    function createJSON(newline) {
      return {
        name: newline ? "ndjson" : "json",
        encode: newline ? encodeNDJSON : encodeJSON,
        decode: function decodeJSON(buf) {
          return JSON.parse(b4a4.toString(buf));
        }
      };
      function encodeJSON(val) {
        return b4a4.from(JSON.stringify(val));
      }
      function encodeNDJSON(val) {
        return b4a4.from(JSON.stringify(val) + "\n");
      }
    }
    function createString(type) {
      return {
        name: type,
        encode: function encodeString(val) {
          if (typeof val !== "string") val = val.toString();
          return b4a4.from(val, type);
        },
        decode: function decodeString(buf) {
          return b4a4.toString(buf, type);
        }
      };
    }
  }
});

// node_modules/queue-tick/queue-microtask.js
var require_queue_microtask = __commonJS({
  "node_modules/queue-tick/queue-microtask.js"(exports2, module2) {
    module2.exports = typeof queueMicrotask === "function" ? queueMicrotask : (fn) => Promise.resolve().then(fn);
  }
});

// node_modules/queue-tick/process-next-tick.js
var require_process_next_tick = __commonJS({
  "node_modules/queue-tick/process-next-tick.js"(exports2, module2) {
    module2.exports = typeof process !== "undefined" && typeof process.nextTick === "function" ? process.nextTick.bind(process) : require_queue_microtask();
  }
});

// node_modules/mutexify/index.js
var require_mutexify = __commonJS({
  "node_modules/mutexify/index.js"(exports2, module2) {
    var queueTick = require_process_next_tick();
    var mutexify = function() {
      var queue = [];
      var used = null;
      var call = function() {
        used(release);
      };
      var acquire = function(fn) {
        if (used) return queue.push(fn);
        used = fn;
        acquire.locked = true;
        queueTick(call);
        return 0;
      };
      acquire.locked = false;
      var release = function(fn, err, value) {
        used = null;
        acquire.locked = false;
        if (queue.length) acquire(queue.shift());
        if (fn) fn(err, value);
      };
      return acquire;
    };
    module2.exports = mutexify;
  }
});

// node_modules/mutexify/promise.js
var require_promise = __commonJS({
  "node_modules/mutexify/promise.js"(exports2, module2) {
    var mutexify = require_mutexify();
    var mutexifyPromise = function() {
      var lock = mutexify();
      var acquire = function() {
        return new Promise(lock);
      };
      Object.defineProperty(acquire, "locked", {
        get: function() {
          return lock.locked;
        },
        enumerable: true
      });
      return acquire;
    };
    module2.exports = mutexifyPromise;
  }
});

// node_modules/safety-catch/index.js
var require_safety_catch = __commonJS({
  "node_modules/safety-catch/index.js"(exports2, module2) {
    module2.exports = safetyCatch;
    function isActuallyUncaught(err) {
      if (!err) return false;
      return err instanceof TypeError || err instanceof SyntaxError || err instanceof ReferenceError || err instanceof EvalError || err instanceof RangeError || err instanceof URIError || err.code === "ERR_ASSERTION" || err.name === "AssertionError";
    }
    function throwErrorNT(err) {
      queueMicrotask(() => {
        throw err;
      });
    }
    function safetyCatch(err) {
      if (isActuallyUncaught(err)) {
        throwErrorNT(err);
        throw err;
      }
    }
  }
});

// node_modules/ready-resource/index.js
var require_ready_resource = __commonJS({
  "node_modules/ready-resource/index.js"(exports2, module2) {
    var EventEmitter = require_bare_events();
    module2.exports = class ReadyResource extends EventEmitter {
      constructor() {
        super();
        this.opening = null;
        this.closing = null;
        this.opened = false;
        this.closed = false;
      }
      ready() {
        if (this.opening !== null) return this.opening;
        this.opening = open(this);
        return this.opening;
      }
      close() {
        if (this.closing !== null) return this.closing;
        this.closing = close(this);
        return this.closing;
      }
      async _open() {
      }
      async _close() {
      }
    };
    async function open(self) {
      if (self.closing !== null) return;
      try {
        await self._open();
      } catch (err) {
        self.close();
        throw err;
      }
      self.opened = true;
      self.emit("ready");
    }
    async function close(self) {
      try {
        if (self.opened === false && self.opening !== null) await self.opening;
      } catch {
      }
      if (self.opened === true || self.opening === null) await self._close();
      self.closed = true;
      self.emit("close");
    }
  }
});

// node_modules/debounceify/index.js
var require_debounceify = __commonJS({
  "node_modules/debounceify/index.js"(exports2, module2) {
    module2.exports = function debounce(worker, context = null) {
      debounced.running = null;
      return debounced;
      async function debounced() {
        if (debounced.running !== null) {
          try {
            await debounced.running;
          } catch (_) {
          }
        }
        if (debounced.running !== null) return debounced.running;
        debounced.running = worker.call(context);
        try {
          return await debounced.running;
        } finally {
          debounced.running = null;
        }
      }
    };
  }
});

// node_modules/rache/index.js
var require_rache = __commonJS({
  "node_modules/rache/index.js"(exports2, module2) {
    var CacheEntry = class {
      constructor(key, index, map) {
        this.key = key;
        this.index = index;
        this.map = map;
      }
    };
    var CacheValue = class {
      constructor(entry, value) {
        this.entry = entry;
        this.value = value;
      }
    };
    var Rache = class _Rache {
      constructor({ maxSize = 65536, parent = null } = {}) {
        this.maxSize = parent?.maxSize || maxSize;
        this._array = parent?._array || [];
        this._map = /* @__PURE__ */ new Map();
      }
      static from(cache) {
        return cache ? new this({ parent: cache }) : new this();
      }
      get globalSize() {
        return this._array.length;
      }
      get size() {
        return this._map.size;
      }
      sub() {
        return new _Rache({ parent: this });
      }
      set(key, value) {
        const existing = this._map.get(key);
        if (existing !== void 0) {
          existing.value = value;
          return;
        }
        if (this._array.length >= this.maxSize) this._gc();
        const entry = new CacheEntry(key, this._array.length, this._map);
        this._array.push(entry);
        const cacheValue = new CacheValue(entry, value);
        this._map.set(key, cacheValue);
      }
      delete(key) {
        const existing = this._map.get(key);
        if (existing === void 0) return false;
        this._delete(existing.entry.index);
        return true;
      }
      get(key) {
        const existing = this._map.get(key);
        return existing === void 0 ? void 0 : existing.value;
      }
      *[Symbol.iterator]() {
        for (const [key, { value }] of this._map) {
          yield [key, value];
        }
      }
      keys() {
        return this._map.keys();
      }
      *values() {
        for (const { value } of this._map.values()) {
          yield value;
        }
      }
      clear() {
        this._map.clear();
        this._map = /* @__PURE__ */ new Map();
      }
      destroy() {
        this._map = null;
        this._array = null;
      }
      _gc() {
        this._delete(Math.floor(Math.random() * this._array.length));
      }
      _delete(index) {
        if (index >= this._array.length) throw new Error("Cannot delete unused index (logic bug?)");
        const head = this._array.pop();
        let removed = head;
        if (index < this._array.length) {
          removed = this._array[index];
          head.index = index;
          this._array[index] = head;
        }
        removed.map.delete(removed.key);
      }
    };
    module2.exports = Rache;
  }
});

// node_modules/resolve-reject-promise/index.js
var require_resolve_reject_promise = __commonJS({
  "node_modules/resolve-reject-promise/index.js"(exports2, module2) {
    var tmpResolve = null;
    var tmpReject = null;
    if (Promise.withResolvers) {
      module2.exports = Promise.withResolvers.bind(Promise);
    } else {
      module2.exports = function resolveRejectPromise() {
        const promise = new Promise(setTmp);
        const result = { promise, resolve: tmpResolve, reject: tmpReject };
        tmpResolve = tmpReject = null;
        return result;
      };
    }
    function setTmp(resolve, reject) {
      tmpResolve = resolve;
      tmpReject = reject;
    }
  }
});

// node_modules/unslab/index.js
var require_unslab = __commonJS({
  "node_modules/unslab/index.js"(exports2, module2) {
    var b4a4 = require_b4a();
    unslab.all = all;
    unslab.is = is;
    module2.exports = unslab;
    function unslab(buf) {
      if (buf === null || buf.buffer.byteLength === buf.byteLength) return buf;
      const copy = b4a4.allocUnsafeSlow(buf.byteLength);
      copy.set(buf, 0);
      return copy;
    }
    function is(buf) {
      return buf.buffer.byteLength !== buf.byteLength;
    }
    function all(list) {
      let size = 0;
      for (let i = 0; i < list.length; i++) {
        const buf = list[i];
        size += buf === null || buf.buffer.byteLength === buf.byteLength ? 0 : buf.byteLength;
      }
      const copy = b4a4.allocUnsafeSlow(size);
      const result = new Array(list.length);
      let offset = 0;
      for (let i = 0; i < list.length; i++) {
        let buf = list[i];
        if (buf !== null && buf.buffer.byteLength !== buf.byteLength) {
          copy.set(buf, offset);
          buf = copy.subarray(offset, offset += buf.byteLength);
        }
        result[i] = buf;
      }
      return result;
    }
  }
});

// node_modules/hyperbee/iterators/range.js
var require_range = __commonJS({
  "node_modules/hyperbee/iterators/range.js"(exports2, module2) {
    var b4a4 = require_b4a();
    module2.exports = class RangeIterator {
      constructor(batch, encoding, opts = {}) {
        this.batch = batch;
        this.stack = [];
        this.opened = false;
        this.encoding = encoding || batch.encoding;
        this._limit = typeof opts.limit === "number" ? opts.limit : -1;
        this._gIncl = !opts.gt;
        this._gKey = opts.gt || opts.gte || null;
        this._lIncl = !opts.lt;
        this._lKey = opts.lt || opts.lte || null;
        this._reverse = !!opts.reverse;
        this._version = 0;
        this._checkpoint = opts.checkpoint && opts.checkpoint.length ? opts.checkpoint : null;
        this._nexting = false;
        this._closed = false;
      }
      snapshot(version3 = this.batch.version) {
        const checkpoint = [];
        for (const s of this.stack) {
          let { node, i } = s;
          if (this._nexting && s === this.stack[this.stack.length - 1]) {
            i = this._reverse ? i + 1 : i - 1;
          }
          if (!node.block) continue;
          if (i < 0) continue;
          checkpoint.push(node.block.seq, node.offset, i);
        }
        return {
          version: version3,
          gte: this._gIncl ? this._gKey : null,
          gt: this._gIncl ? null : this._gKey,
          lte: this._lIncl ? this._lKey : null,
          lt: this._lIncl ? null : this._lKey,
          limit: this._limit,
          reverse: this._reverse,
          ended: this.opened && !checkpoint.length,
          checkpoint: this.opened ? checkpoint : []
        };
      }
      async open() {
        await this._open();
        this.opened = true;
      }
      async _open() {
        if (this._checkpoint) {
          for (let j = 0; j < this._checkpoint.length; j += 3) {
            const seq = this._checkpoint[j];
            const offset = this._checkpoint[j + 1];
            const i = this._checkpoint[j + 2];
            this.stack.push({
              node: (await this.batch.getBlock(seq)).getTreeNode(offset),
              i
            });
          }
          return;
        }
        this._nexting = true;
        let node = await this.batch.getRoot(false);
        if (!node) {
          this._nexting = false;
          return;
        }
        const incl = this._reverse ? this._lIncl : this._gIncl;
        const start = this._reverse ? this._lKey : this._gKey;
        if (!start) {
          this.stack.push({ node, i: this._reverse ? node.keys.length << 1 : 0 });
          this._nexting = false;
          this._preloadQuery();
          return;
        }
        while (true) {
          const entry = { node, i: this._reverse ? node.keys.length << 1 : 0 };
          let s = 0;
          let e = node.keys.length;
          let c4;
          while (s < e) {
            const mid = s + e >> 1;
            c4 = b4a4.compare(start, await node.getKey(mid));
            if (c4 === 0) {
              if (incl) entry.i = mid * 2 + 1;
              else entry.i = mid * 2 + (this._reverse ? 0 : 2);
              this.stack.push(entry);
              this._nexting = false;
              this._preloadQuery();
              return;
            }
            if (c4 < 0) e = mid;
            else s = mid + 1;
          }
          const i = c4 < 0 ? e : s;
          entry.i = 2 * i + (this._reverse ? -1 : 1);
          if (entry.i >= 0 && entry.i <= node.keys.length << 1) this.stack.push(entry);
          if (!node.children.length) {
            this._nexting = false;
            this._preloadQuery();
            return;
          }
          node = await node.getChildNode(i);
        }
      }
      _preloadQuery() {
        const max = { nodes: 0, max: 2048 };
        if (this._limit === -1 && !this._reverse && this.stack.length) {
          for (const s of this.stack) {
            const k = (s.i - (s.i & 1)) / 2;
            this._preload(s.node, k + 1, this._lKey, max).catch(noop);
          }
        }
      }
      async _preload(node, i, end, max) {
        for (; i < node.keys.length; i++) {
          const key = node.keys[i];
          const block = await this.batch.getBlock(key.seq);
          if (this._closed) return;
          const c4 = end ? b4a4.compare(block.key, end) : -1;
          if (c4 >= 0 || max.nodes >= max.max || i >= node.children.length) return;
          max.nodes++;
          const next = await node.getChildNode(i);
          if (this._closed) return;
          this._preload(next, 0, end, max).catch(noop);
        }
        if (node.children.length && max.nodes < max.max) {
          const next = await node.getChildNode(node.children.length - 1);
          if (this._closed) return;
          this._preload(next, 0, end, max).catch(noop);
        }
      }
      async next() {
        this._nexting = true;
        const end = this._reverse ? this._gKey : this._lKey;
        const incl = this._reverse ? this._gIncl : this._lIncl;
        while (this.stack.length && (this._limit === -1 || this._limit > 0)) {
          const top = this.stack[this.stack.length - 1];
          const isKey = (top.i & 1) === 1;
          const n = this._reverse ? top.i < 0 ? top.node.keys.length : top.i-- >> 1 : top.i++ >> 1;
          if (!isKey) {
            if (!top.node.children.length) continue;
            const node = await top.node.getChildNode(n);
            if (top.node.block.seq < this.batch.core.length) {
              top.node.children[n].value = null;
            }
            this.stack.push({ i: this._reverse ? node.keys.length << 1 : 0, node });
            continue;
          }
          if (n >= top.node.keys.length) {
            this.stack.pop();
            continue;
          }
          const key = top.node.keys[n];
          const block = await this.batch.getBlock(key.seq);
          if (end) {
            const c4 = b4a4.compare(block.key, end);
            if (c4 === 0 ? !incl : this._reverse ? c4 < 0 : c4 > 0) {
              this._limit = 0;
              break;
            }
          }
          if (this._limit > 0) this._limit--;
          this._nexting = false;
          return block.final(this.encoding);
        }
        this._nexting = false;
        return null;
      }
      close() {
        this._closed = true;
        return this.batch._closeSnapshot();
      }
    };
    function noop() {
    }
  }
});

// node_modules/hyperbee/iterators/history.js
var require_history = __commonJS({
  "node_modules/hyperbee/iterators/history.js"(exports2, module2) {
    module2.exports = class HistoryIterator {
      constructor(batch, opts = {}) {
        this.batch = batch;
        this.options = opts;
        this.live = !!opts.live;
        this.gte = 0;
        this.lt = 0;
        this.reverse = !!opts.reverse;
        this.limit = typeof opts.limit === "number" ? opts.limit : -1;
        this.encoding = opts.encoding || batch.encoding;
        if (this.live && this.reverse) {
          throw new Error("Cannot have both live and reverse enabled");
        }
      }
      async open() {
        await this.batch.getRoot(false);
        this.gte = gte(this.options, this.batch.version);
        this.lt = this.live ? Infinity : lt(this.options, this.batch.version);
      }
      async next() {
        if (this.limit === 0) return null;
        if (this.limit > 0) this.limit--;
        if (this.gte >= this.lt) return null;
        if (this.reverse) {
          if (this.lt <= 1) return null;
          return final(await this.batch.getBlock(--this.lt), this.encoding);
        }
        return final(await this.batch.getBlock(this.gte++), this.encoding);
      }
      close() {
        return this.batch._closeSnapshot();
      }
    };
    function final(node, encoding) {
      const type = node.isDeletion() ? "del" : "put";
      return { type, ...node.final(encoding) };
    }
    function gte(opts, version3) {
      if (opts.gt) return (opts.gt < 0 ? opts.gt + version3 : opts.gt) + 1;
      const gte2 = opts.gte || opts.since || 1;
      return gte2 < 0 ? gte2 + version3 : gte2;
    }
    function lt(opts, version3) {
      if (opts.lte === 0 || opts.lt === 0 || opts.end === 0) return 0;
      if (opts.lte) return (opts.lte < 0 ? opts.lte + version3 : opts.lte) + 1;
      const lt2 = opts.lt || opts.end || version3;
      return lt2 < 0 ? lt2 + version3 : lt2;
    }
  }
});

// node_modules/hyperbee/iterators/diff.js
var require_diff = __commonJS({
  "node_modules/hyperbee/iterators/diff.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var SubTree = class {
      constructor(node, parent) {
        this.node = node;
        this.parent = parent;
        this.isKey = node.children.length === 0;
        this.i = this.isKey ? 1 : 0;
        this.n = 0;
        const child = this.isKey ? null : this.node.children[0];
        this.seq = child !== null ? child.seq : this.node.keys[0].seq;
        this.offset = child !== null ? child.offset : 0;
      }
      next() {
        this.i++;
        this.isKey = (this.i & 1) === 1;
        if (!this.isKey && !this.node.children.length) this.i++;
        return this.update();
      }
      async bisect(key, incl) {
        let s = 0;
        let e = this.node.keys.length;
        let c4;
        while (s < e) {
          const mid = s + e >> 1;
          c4 = cmp(key, await this.node.getKey(mid));
          if (c4 === 0) {
            if (incl) this.i = mid * 2 + 1;
            else this.i = mid * 2 + (this.node.children.length ? 2 : 3);
            return true;
          }
          if (c4 < 0) e = mid;
          else s = mid + 1;
        }
        const i = c4 < 0 ? e : s;
        this.i = 2 * i + (this.node.children.length ? 0 : 1);
        return this.node.children.length === 0;
      }
      update() {
        this.isKey = (this.i & 1) === 1;
        this.n = this.i >> 1;
        if (this.n >= (this.isKey ? this.node.keys.length : this.node.children.length)) return false;
        const child = this.isKey ? null : this.node.children[this.n];
        this.seq = child !== null ? child.seq : this.node.keys[this.n].seq;
        this.offset = child !== null ? child.offset : 0;
        return true;
      }
      async key() {
        return this.n < this.node.keys.length ? this.node.getKey(this.n) : this.parent && this.parent.key();
      }
      async compare(tree) {
        const [a, b] = await Promise.all([this.key(), tree.key()]);
        return cmp(a, b);
      }
    };
    var TreeIterator = class {
      constructor(batch, opts) {
        this.batch = batch;
        this.stack = [];
        this.lt = opts.lt || opts.lte || null;
        this.lte = !!opts.lte;
        this.gt = opts.gt || opts.gte || null;
        this.gte = !!opts.gte;
        this.seeking = !!this.gt;
        this.encoding = opts.encoding || batch.encoding;
      }
      async open() {
        const node = await this.batch.getRoot(false);
        if (!node || !node.keys.length) return;
        const tree = new SubTree(node, null);
        if (this.seeking && !await this._seek(tree)) return;
        this.stack.push(tree);
      }
      async _seek(tree) {
        const done = await tree.bisect(this.gt, this.gte);
        const oob = !tree.update();
        if (done || oob) {
          this.seeking = false;
          if (oob) return false;
        }
        return true;
      }
      peek() {
        if (!this.stack.length) return null;
        return this.stack[this.stack.length - 1];
      }
      skip() {
        if (!this.stack.length) return;
        if (!this.stack[this.stack.length - 1].next()) this.stack.pop();
      }
      async nextKey() {
        let n = null;
        while (this.stack.length && n === null) n = await this.next();
        if (n === null) return null;
        if (!this.lt) return n.final(this.encoding);
        const c4 = cmp(n.key, this.lt);
        if (this.lte ? c4 <= 0 : c4 < 0) return n.final(this.encoding);
        this.stack = [];
        return null;
      }
      async next() {
        if (!this.stack.length) return null;
        const top = this.stack[this.stack.length - 1];
        const { isKey, n, seq } = top;
        if (!top.next()) {
          this.stack.pop();
        }
        if (isKey) {
          this.seeking = false;
          return this.batch.getBlock(seq);
        }
        const child = await top.node.getChildNode(n);
        top.node.children[n] = null;
        const tree = new SubTree(child, top);
        if (this.seeking && !await this._seek(tree)) return null;
        this.stack.push(tree);
        return null;
      }
      close() {
        return this.batch._closeSnapshot();
      }
    };
    module2.exports = class DiffIterator {
      constructor(left, right, opts = {}) {
        this.left = new TreeIterator(left, opts);
        this.right = new TreeIterator(right, opts);
        this.limit = typeof opts.limit === "number" ? opts.limit : -1;
      }
      async open() {
        await Promise.all([this.left.open(), this.right.open()]);
      }
      async next() {
        if (this.limit === 0) return null;
        const res = await this._next();
        if (!res || res.left === null && res.right === null) return null;
        this.limit--;
        return res;
      }
      async _next() {
        const a = this.left;
        const b = this.right;
        while (true) {
          const [l, r] = await Promise.all([a.peek(), b.peek()]);
          if (!l && !r) return null;
          if (!l) return { left: null, right: await b.nextKey() };
          if (!r) return { left: await a.nextKey(), right: null };
          if (l.seq === r.seq && l.isKey === r.isKey && l.offset === r.offset) {
            a.skip();
            b.skip();
            continue;
          }
          const c4 = await l.compare(r);
          if (l.isKey && !r.isKey) {
            await b.next();
            continue;
          }
          if (!l.isKey && r.isKey) {
            await a.next();
            continue;
          }
          if (l.isKey && r.isKey) {
            if (c4 === 0) return { left: await a.nextKey(), right: await b.nextKey() };
            if (c4 < 0) return { left: await a.nextKey(), right: null };
            return { left: null, right: await b.nextKey() };
          }
          if (c4 === 0) await Promise.all([a.next(), b.next()]);
          else if (c4 < 0) await b.next();
          else await a.next();
        }
      }
      async close() {
        await Promise.all([this.left.close(), this.right.close()]);
      }
    };
    function cmp(a, b) {
      if (!a) return b ? 1 : 0;
      if (!b) return a ? -1 : 0;
      return b4a4.compare(a, b);
    }
  }
});

// node_modules/hyperbee/iterators/local.js
var require_local = __commonJS({
  "node_modules/hyperbee/iterators/local.js"(exports2, module2) {
    module2.exports = class LocalBlocksIterator {
      constructor(batch, opts = {}) {
        this.batch = batch;
        this.options = opts;
        this.gte = 0;
        this.lt = 0;
        this.limit = typeof opts.limit === "number" ? opts.limit : -1;
      }
      async open() {
        await this.batch.getRoot(false);
        this.gte = gte(this.options, this.batch.version);
        this.lt = lt(this.options, this.batch.version);
      }
      async next() {
        if (this.limit === 0) return null;
        if (this.limit > 0) this.limit--;
        while (this.gte < this.lt) {
          try {
            return await this.batch.getBlock(this.gte++);
          } catch {
            continue;
          }
        }
        return null;
      }
      close() {
        return this.batch._closeSnapshot();
      }
    };
    function gte(opts, version3) {
      if (opts.gt) return (opts.gt < 0 ? opts.gt + version3 : opts.gt) + 1;
      const gte2 = opts.gte || opts.since || 1;
      return gte2 < 0 ? gte2 + version3 : gte2;
    }
    function lt(opts, version3) {
      if (opts.lte === 0 || opts.lt === 0 || opts.end === 0) return 0;
      if (opts.lte) return (opts.lte < 0 ? opts.lte + version3 : opts.lte) + 1;
      const lt2 = opts.lt || opts.end || version3;
      return lt2 < 0 ? lt2 + version3 : lt2;
    }
  }
});

// node_modules/varint/encode.js
var require_encode = __commonJS({
  "node_modules/varint/encode.js"(exports2, module2) {
    module2.exports = encode2;
    var MSB = 128;
    var REST = 127;
    var MSBALL = ~REST;
    var INT = Math.pow(2, 31);
    function encode2(num, out, offset) {
      out = out || [];
      offset = offset || 0;
      var oldOffset = offset;
      while (num >= INT) {
        out[offset++] = num & 255 | MSB;
        num /= 128;
      }
      while (num & MSBALL) {
        out[offset++] = num & 255 | MSB;
        num >>>= 7;
      }
      out[offset] = num | 0;
      encode2.bytes = offset - oldOffset + 1;
      return out;
    }
  }
});

// node_modules/varint/decode.js
var require_decode = __commonJS({
  "node_modules/varint/decode.js"(exports2, module2) {
    module2.exports = read;
    var MSB = 128;
    var REST = 127;
    function read(buf, offset) {
      var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;
      do {
        if (counter >= l) {
          read.bytes = 0;
          throw new RangeError("Could not decode varint");
        }
        b = buf[counter++];
        res += shift < 28 ? (b & REST) << shift : (b & REST) * Math.pow(2, shift);
        shift += 7;
      } while (b >= MSB);
      read.bytes = counter - offset;
      return res;
    }
  }
});

// node_modules/varint/length.js
var require_length = __commonJS({
  "node_modules/varint/length.js"(exports2, module2) {
    var N1 = Math.pow(2, 7);
    var N2 = Math.pow(2, 14);
    var N3 = Math.pow(2, 21);
    var N4 = Math.pow(2, 28);
    var N5 = Math.pow(2, 35);
    var N6 = Math.pow(2, 42);
    var N7 = Math.pow(2, 49);
    var N8 = Math.pow(2, 56);
    var N9 = Math.pow(2, 63);
    module2.exports = function(value) {
      return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;
    };
  }
});

// node_modules/varint/index.js
var require_varint = __commonJS({
  "node_modules/varint/index.js"(exports2, module2) {
    module2.exports = {
      encode: require_encode(),
      decode: require_decode(),
      encodingLength: require_length()
    };
  }
});

// node_modules/signed-varint/index.js
var require_signed_varint = __commonJS({
  "node_modules/signed-varint/index.js"(exports2) {
    var varint = require_varint();
    exports2.encode = function encode2(v, b, o) {
      v = v >= 0 ? v * 2 : v * -2 - 1;
      var r = varint.encode(v, b, o);
      encode2.bytes = varint.encode.bytes;
      return r;
    };
    exports2.decode = function decode2(b, o) {
      var v = varint.decode(b, o);
      decode2.bytes = varint.decode.bytes;
      return v & 1 ? (v + 1) / -2 : v / 2;
    };
    exports2.encodingLength = function(v) {
      return varint.encodingLength(v >= 0 ? v * 2 : v * -2 - 1);
    };
  }
});

// node_modules/protocol-buffers-encodings/index.js
var require_protocol_buffers_encodings = __commonJS({
  "node_modules/protocol-buffers-encodings/index.js"(exports2) {
    var varint = require_varint();
    var svarint = require_signed_varint();
    var b4a4 = require_b4a();
    exports2.make = encoder;
    exports2.name = function(enc) {
      var keys = Object.keys(exports2);
      for (var i = 0; i < keys.length; i++) {
        if (exports2[keys[i]] === enc) return keys[i];
      }
      return null;
    };
    exports2.skip = function(type, buffer, offset) {
      switch (type) {
        case 0:
          varint.decode(buffer, offset);
          return offset + varint.decode.bytes;
        case 1:
          return offset + 8;
        case 2:
          var len = varint.decode(buffer, offset);
          return offset + varint.decode.bytes + len;
        case 3:
        case 4:
          throw new Error("Groups are not supported");
        case 5:
          return offset + 4;
      }
      throw new Error("Unknown wire type: " + type);
    };
    exports2.bytes = encoder(
      2,
      function encode2(val, buffer, offset) {
        var oldOffset = offset;
        var len = bufferLength(val);
        varint.encode(len, buffer, offset);
        offset += varint.encode.bytes;
        if (b4a4.isBuffer(val)) b4a4.copy(val, buffer, offset);
        else b4a4.write(buffer, val, offset, len);
        offset += len;
        encode2.bytes = offset - oldOffset;
        return buffer;
      },
      function decode2(buffer, offset) {
        var oldOffset = offset;
        var len = varint.decode(buffer, offset);
        offset += varint.decode.bytes;
        var val = buffer.subarray(offset, offset + len);
        offset += val.length;
        decode2.bytes = offset - oldOffset;
        return val;
      },
      function encodingLength(val) {
        var len = bufferLength(val);
        return varint.encodingLength(len) + len;
      }
    );
    exports2.string = encoder(
      2,
      function encode2(val, buffer, offset) {
        var oldOffset = offset;
        var len = b4a4.byteLength(val);
        varint.encode(len, buffer, offset, "utf-8");
        offset += varint.encode.bytes;
        b4a4.write(buffer, val, offset, len);
        offset += len;
        encode2.bytes = offset - oldOffset;
        return buffer;
      },
      function decode2(buffer, offset) {
        var oldOffset = offset;
        var len = varint.decode(buffer, offset);
        offset += varint.decode.bytes;
        var val = b4a4.toString(buffer, "utf-8", offset, offset + len);
        offset += len;
        decode2.bytes = offset - oldOffset;
        return val;
      },
      function encodingLength(val) {
        var len = b4a4.byteLength(val);
        return varint.encodingLength(len) + len;
      }
    );
    exports2.bool = encoder(
      0,
      function encode2(val, buffer, offset) {
        buffer[offset] = val ? 1 : 0;
        encode2.bytes = 1;
        return buffer;
      },
      function decode2(buffer, offset) {
        var bool = buffer[offset] > 0;
        decode2.bytes = 1;
        return bool;
      },
      function encodingLength() {
        return 1;
      }
    );
    exports2.int32 = encoder(
      0,
      function encode2(val, buffer, offset) {
        varint.encode(val < 0 ? val + 4294967296 : val, buffer, offset);
        encode2.bytes = varint.encode.bytes;
        return buffer;
      },
      function decode2(buffer, offset) {
        var val = varint.decode(buffer, offset);
        decode2.bytes = varint.decode.bytes;
        return val > 2147483647 ? val - 4294967296 : val;
      },
      function encodingLength(val) {
        return varint.encodingLength(val < 0 ? val + 4294967296 : val);
      }
    );
    exports2.int64 = encoder(
      0,
      function encode2(val, buffer, offset) {
        if (val < 0) {
          var last = offset + 9;
          varint.encode(val * -1, buffer, offset);
          offset += varint.encode.bytes - 1;
          buffer[offset] = buffer[offset] | 128;
          while (offset < last - 1) {
            offset++;
            buffer[offset] = 255;
          }
          buffer[last] = 1;
          encode2.bytes = 10;
        } else {
          varint.encode(val, buffer, offset);
          encode2.bytes = varint.encode.bytes;
        }
        return buffer;
      },
      function decode2(buffer, offset) {
        var val = varint.decode(buffer, offset);
        if (val >= Math.pow(2, 63)) {
          var limit = 9;
          while (buffer[offset + limit - 1] === 255) limit--;
          limit = limit || 9;
          var subset = b4a4.allocUnsafe(limit);
          b4a4.copy(buffer, subset, 0, offset, offset + limit);
          subset[limit - 1] = subset[limit - 1] & 127;
          val = -1 * varint.decode(subset, 0);
          decode2.bytes = 10;
        } else {
          decode2.bytes = varint.decode.bytes;
        }
        return val;
      },
      function encodingLength(val) {
        return val < 0 ? 10 : varint.encodingLength(val);
      }
    );
    exports2.sint32 = exports2.sint64 = encoder(
      0,
      svarint.encode,
      svarint.decode,
      svarint.encodingLength
    );
    exports2.uint32 = exports2.uint64 = exports2.enum = exports2.varint = encoder(
      0,
      varint.encode,
      varint.decode,
      varint.encodingLength
    );
    exports2.fixed64 = exports2.sfixed64 = encoder(
      1,
      function encode2(val, buffer, offset) {
        b4a4.copy(val, buffer, offset);
        encode2.bytes = 8;
        return buffer;
      },
      function decode2(buffer, offset) {
        var val = buffer.subarray(offset, offset + 8);
        decode2.bytes = 8;
        return val;
      },
      function encodingLength() {
        return 8;
      }
    );
    exports2.double = encoder(
      1,
      function encode2(val, buffer, offset) {
        b4a4.writeDoubleLE(buffer, val, offset);
        encode2.bytes = 8;
        return buffer;
      },
      function decode2(buffer, offset) {
        var val = b4a4.readDoubleLE(buffer, offset);
        decode2.bytes = 8;
        return val;
      },
      function encodingLength() {
        return 8;
      }
    );
    exports2.fixed32 = encoder(
      5,
      function encode2(val, buffer, offset) {
        b4a4.writeUInt32LE(buffer, val, offset);
        encode2.bytes = 4;
        return buffer;
      },
      function decode2(buffer, offset) {
        var val = b4a4.readUInt32LE(buffer, offset);
        decode2.bytes = 4;
        return val;
      },
      function encodingLength() {
        return 4;
      }
    );
    exports2.sfixed32 = encoder(
      5,
      function encode2(val, buffer, offset) {
        b4a4.writeInt32LE(buffer, val, offset);
        encode2.bytes = 4;
        return buffer;
      },
      function decode2(buffer, offset) {
        var val = b4a4.readInt32LE(buffer, offset);
        decode2.bytes = 4;
        return val;
      },
      function encodingLength() {
        return 4;
      }
    );
    exports2.float = encoder(
      5,
      function encode2(val, buffer, offset) {
        b4a4.writeFloatLE(buffer, val, offset);
        encode2.bytes = 4;
        return buffer;
      },
      function decode2(buffer, offset) {
        var val = b4a4.readFloatLE(buffer, offset);
        decode2.bytes = 4;
        return val;
      },
      function encodingLength() {
        return 4;
      }
    );
    function encoder(type, encode2, decode2, encodingLength) {
      encode2.bytes = decode2.bytes = 0;
      return {
        type,
        encode: encode2,
        decode: decode2,
        encodingLength
      };
    }
    function bufferLength(val) {
      return b4a4.isBuffer(val) ? val.length : b4a4.byteLength(val);
    }
  }
});

// node_modules/hyperbee/lib/messages.js
var require_messages = __commonJS({
  "node_modules/hyperbee/lib/messages.js"(exports2) {
    var encodings = require_protocol_buffers_encodings();
    var b4a4 = require_b4a();
    var varint = encodings.varint;
    var skip = encodings.skip;
    var YoloIndex = exports2.YoloIndex = {
      buffer: true,
      encodingLength: null,
      encode: null,
      decode: null
    };
    var Header = exports2.Header = {
      buffer: true,
      encodingLength: null,
      encode: null,
      decode: null
    };
    var Node = exports2.Node = {
      buffer: true,
      encodingLength: null,
      encode: null,
      decode: null
    };
    var Extension = exports2.Extension = {
      buffer: true,
      encodingLength: null,
      encode: null,
      decode: null
    };
    defineYoloIndex();
    defineHeader();
    defineNode();
    defineExtension();
    function defineYoloIndex() {
      var Level = YoloIndex.Level = {
        buffer: true,
        encodingLength: null,
        encode: null,
        decode: null
      };
      defineLevel();
      function defineLevel() {
        Level.encodingLength = encodingLength2;
        Level.encode = encode3;
        Level.decode = decode3;
        function encodingLength2(obj) {
          var length = 0;
          if (defined(obj.keys)) {
            var packedLen = 0;
            for (var i = 0; i < obj.keys.length; i++) {
              if (!defined(obj.keys[i])) continue;
              var len = encodings.varint.encodingLength(obj.keys[i]);
              packedLen += len;
            }
            if (packedLen) {
              length += 1 + packedLen + varint.encodingLength(packedLen);
            }
          }
          if (defined(obj.children)) {
            var packedLen = 0;
            for (var i = 0; i < obj.children.length; i++) {
              if (!defined(obj.children[i])) continue;
              var len = encodings.varint.encodingLength(obj.children[i]);
              packedLen += len;
            }
            if (packedLen) {
              length += 1 + packedLen + varint.encodingLength(packedLen);
            }
          }
          return length;
        }
        function encode3(obj, buf, offset) {
          if (!offset) offset = 0;
          if (!buf) buf = b4a4.allocUnsafe(encodingLength2(obj));
          var oldOffset = offset;
          if (defined(obj.keys)) {
            var packedLen = 0;
            for (var i = 0; i < obj.keys.length; i++) {
              if (!defined(obj.keys[i])) continue;
              packedLen += encodings.varint.encodingLength(obj.keys[i]);
            }
            if (packedLen) {
              buf[offset++] = 10;
              varint.encode(packedLen, buf, offset);
              offset += varint.encode.bytes;
            }
            for (var i = 0; i < obj.keys.length; i++) {
              if (!defined(obj.keys[i])) continue;
              encodings.varint.encode(obj.keys[i], buf, offset);
              offset += encodings.varint.encode.bytes;
            }
          }
          if (defined(obj.children)) {
            var packedLen = 0;
            for (var i = 0; i < obj.children.length; i++) {
              if (!defined(obj.children[i])) continue;
              packedLen += encodings.varint.encodingLength(obj.children[i]);
            }
            if (packedLen) {
              buf[offset++] = 18;
              varint.encode(packedLen, buf, offset);
              offset += varint.encode.bytes;
            }
            for (var i = 0; i < obj.children.length; i++) {
              if (!defined(obj.children[i])) continue;
              encodings.varint.encode(obj.children[i], buf, offset);
              offset += encodings.varint.encode.bytes;
            }
          }
          encode3.bytes = offset - oldOffset;
          return buf;
        }
        function decode3(buf, offset, end) {
          if (!offset) offset = 0;
          if (!end) end = buf.length;
          if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid");
          var oldOffset = offset;
          var obj = {
            keys: [],
            children: []
          };
          while (true) {
            if (end <= offset) {
              decode3.bytes = offset - oldOffset;
              return obj;
            }
            var prefix = varint.decode(buf, offset);
            offset += varint.decode.bytes;
            var tag = prefix >> 3;
            switch (tag) {
              case 1:
                var packedEnd = varint.decode(buf, offset);
                offset += varint.decode.bytes;
                packedEnd += offset;
                while (offset < packedEnd) {
                  obj.keys.push(encodings.varint.decode(buf, offset));
                  offset += encodings.varint.decode.bytes;
                }
                break;
              case 2:
                var packedEnd = varint.decode(buf, offset);
                offset += varint.decode.bytes;
                packedEnd += offset;
                while (offset < packedEnd) {
                  obj.children.push(encodings.varint.decode(buf, offset));
                  offset += encodings.varint.decode.bytes;
                }
                break;
              default:
                offset = skip(prefix & 7, buf, offset);
            }
          }
        }
      }
      YoloIndex.encodingLength = encodingLength;
      YoloIndex.encode = encode2;
      YoloIndex.decode = decode2;
      function encodingLength(obj) {
        var length = 0;
        if (defined(obj.levels)) {
          for (var i = 0; i < obj.levels.length; i++) {
            if (!defined(obj.levels[i])) continue;
            var len = Level.encodingLength(obj.levels[i]);
            length += varint.encodingLength(len);
            length += 1 + len;
          }
        }
        return length;
      }
      function encode2(obj, buf, offset) {
        if (!offset) offset = 0;
        if (!buf) buf = b4a4.allocUnsafe(encodingLength(obj));
        var oldOffset = offset;
        if (defined(obj.levels)) {
          for (var i = 0; i < obj.levels.length; i++) {
            if (!defined(obj.levels[i])) continue;
            buf[offset++] = 10;
            varint.encode(Level.encodingLength(obj.levels[i]), buf, offset);
            offset += varint.encode.bytes;
            Level.encode(obj.levels[i], buf, offset);
            offset += Level.encode.bytes;
          }
        }
        encode2.bytes = offset - oldOffset;
        return buf;
      }
      function decode2(buf, offset, end) {
        if (!offset) offset = 0;
        if (!end) end = buf.length;
        if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid");
        var oldOffset = offset;
        var obj = {
          levels: []
        };
        while (true) {
          if (end <= offset) {
            decode2.bytes = offset - oldOffset;
            return obj;
          }
          var prefix = varint.decode(buf, offset);
          offset += varint.decode.bytes;
          var tag = prefix >> 3;
          switch (tag) {
            case 1:
              var len = varint.decode(buf, offset);
              offset += varint.decode.bytes;
              obj.levels.push(Level.decode(buf, offset, offset + len));
              offset += Level.decode.bytes;
              break;
            default:
              offset = skip(prefix & 7, buf, offset);
          }
        }
      }
    }
    function defineHeader() {
      var Metadata = Header.Metadata = {
        buffer: true,
        encodingLength: null,
        encode: null,
        decode: null
      };
      defineMetadata();
      function defineMetadata() {
        Metadata.encodingLength = encodingLength2;
        Metadata.encode = encode3;
        Metadata.decode = decode3;
        function encodingLength2(obj) {
          var length = 0;
          if (defined(obj.contentFeed)) {
            var len = encodings.bytes.encodingLength(obj.contentFeed);
            length += 1 + len;
          }
          if (defined(obj.userData)) {
            var len = encodings.bytes.encodingLength(obj.userData);
            length += 1 + len;
          }
          return length;
        }
        function encode3(obj, buf, offset) {
          if (!offset) offset = 0;
          if (!buf) buf = b4a4.allocUnsafe(encodingLength2(obj));
          var oldOffset = offset;
          if (defined(obj.contentFeed)) {
            buf[offset++] = 10;
            encodings.bytes.encode(obj.contentFeed, buf, offset);
            offset += encodings.bytes.encode.bytes;
          }
          if (defined(obj.userData)) {
            buf[offset++] = 18;
            encodings.bytes.encode(obj.userData, buf, offset);
            offset += encodings.bytes.encode.bytes;
          }
          encode3.bytes = offset - oldOffset;
          return buf;
        }
        function decode3(buf, offset, end) {
          if (!offset) offset = 0;
          if (!end) end = buf.length;
          if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid");
          var oldOffset = offset;
          var obj = {
            contentFeed: null,
            userData: null
          };
          while (true) {
            if (end <= offset) {
              decode3.bytes = offset - oldOffset;
              return obj;
            }
            var prefix = varint.decode(buf, offset);
            offset += varint.decode.bytes;
            var tag = prefix >> 3;
            switch (tag) {
              case 1:
                obj.contentFeed = encodings.bytes.decode(buf, offset);
                offset += encodings.bytes.decode.bytes;
                break;
              case 2:
                obj.userData = encodings.bytes.decode(buf, offset);
                offset += encodings.bytes.decode.bytes;
                break;
              default:
                offset = skip(prefix & 7, buf, offset);
            }
          }
        }
      }
      Header.encodingLength = encodingLength;
      Header.encode = encode2;
      Header.decode = decode2;
      function encodingLength(obj) {
        var length = 0;
        if (!defined(obj.protocol)) throw new Error("protocol is required");
        var len = encodings.string.encodingLength(obj.protocol);
        length += 1 + len;
        if (defined(obj.metadata)) {
          var len = Metadata.encodingLength(obj.metadata);
          length += varint.encodingLength(len);
          length += 1 + len;
        }
        return length;
      }
      function encode2(obj, buf, offset) {
        if (!offset) offset = 0;
        if (!buf) buf = b4a4.allocUnsafe(encodingLength(obj));
        var oldOffset = offset;
        if (!defined(obj.protocol)) throw new Error("protocol is required");
        buf[offset++] = 10;
        encodings.string.encode(obj.protocol, buf, offset);
        offset += encodings.string.encode.bytes;
        if (defined(obj.metadata)) {
          buf[offset++] = 18;
          varint.encode(Metadata.encodingLength(obj.metadata), buf, offset);
          offset += varint.encode.bytes;
          Metadata.encode(obj.metadata, buf, offset);
          offset += Metadata.encode.bytes;
        }
        encode2.bytes = offset - oldOffset;
        return buf;
      }
      function decode2(buf, offset, end) {
        if (!offset) offset = 0;
        if (!end) end = buf.length;
        if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid");
        var oldOffset = offset;
        var obj = {
          protocol: "",
          metadata: null
        };
        var found0 = false;
        while (true) {
          if (end <= offset) {
            if (!found0) throw new Error("Decoded message is not valid");
            decode2.bytes = offset - oldOffset;
            return obj;
          }
          var prefix = varint.decode(buf, offset);
          offset += varint.decode.bytes;
          var tag = prefix >> 3;
          switch (tag) {
            case 1:
              obj.protocol = encodings.string.decode(buf, offset);
              offset += encodings.string.decode.bytes;
              found0 = true;
              break;
            case 2:
              var len = varint.decode(buf, offset);
              offset += varint.decode.bytes;
              obj.metadata = Metadata.decode(buf, offset, offset + len);
              offset += Metadata.decode.bytes;
              break;
            default:
              offset = skip(prefix & 7, buf, offset);
          }
        }
      }
    }
    function defineNode() {
      Node.encodingLength = encodingLength;
      Node.encode = encode2;
      Node.decode = decode2;
      function encodingLength(obj) {
        var length = 0;
        if (!defined(obj.index)) throw new Error("index is required");
        var len = encodings.bytes.encodingLength(obj.index);
        length += 1 + len;
        if (!defined(obj.key)) throw new Error("key is required");
        var len = encodings.bytes.encodingLength(obj.key);
        length += 1 + len;
        if (defined(obj.value)) {
          var len = encodings.bytes.encodingLength(obj.value);
          length += 1 + len;
        }
        return length;
      }
      function encode2(obj, buf, offset) {
        if (!offset) offset = 0;
        if (!buf) buf = b4a4.allocUnsafe(encodingLength(obj));
        var oldOffset = offset;
        if (!defined(obj.index)) throw new Error("index is required");
        buf[offset++] = 10;
        encodings.bytes.encode(obj.index, buf, offset);
        offset += encodings.bytes.encode.bytes;
        if (!defined(obj.key)) throw new Error("key is required");
        buf[offset++] = 18;
        encodings.bytes.encode(obj.key, buf, offset);
        offset += encodings.bytes.encode.bytes;
        if (defined(obj.value)) {
          buf[offset++] = 26;
          encodings.bytes.encode(obj.value, buf, offset);
          offset += encodings.bytes.encode.bytes;
        }
        encode2.bytes = offset - oldOffset;
        return buf;
      }
      function decode2(buf, offset, end) {
        if (!offset) offset = 0;
        if (!end) end = buf.length;
        if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid");
        var oldOffset = offset;
        var obj = {
          index: null,
          key: null,
          value: null
        };
        var found0 = false;
        var found1 = false;
        while (true) {
          if (end <= offset) {
            if (!found0 || !found1) throw new Error("Decoded message is not valid");
            decode2.bytes = offset - oldOffset;
            return obj;
          }
          var prefix = varint.decode(buf, offset);
          offset += varint.decode.bytes;
          var tag = prefix >> 3;
          switch (tag) {
            case 1:
              obj.index = encodings.bytes.decode(buf, offset);
              offset += encodings.bytes.decode.bytes;
              found0 = true;
              break;
            case 2:
              obj.key = encodings.bytes.decode(buf, offset);
              offset += encodings.bytes.decode.bytes;
              found1 = true;
              break;
            case 3:
              obj.value = encodings.bytes.decode(buf, offset);
              offset += encodings.bytes.decode.bytes;
              break;
            default:
              offset = skip(prefix & 7, buf, offset);
          }
        }
      }
    }
    function defineExtension() {
      var Get = Extension.Get = {
        buffer: true,
        encodingLength: null,
        encode: null,
        decode: null
      };
      var Iterator = Extension.Iterator = {
        buffer: true,
        encodingLength: null,
        encode: null,
        decode: null
      };
      var Cache = Extension.Cache = {
        buffer: true,
        encodingLength: null,
        encode: null,
        decode: null
      };
      defineGet();
      defineIterator();
      defineCache();
      function defineGet() {
        Get.encodingLength = encodingLength2;
        Get.encode = encode3;
        Get.decode = decode3;
        function encodingLength2(obj) {
          var length = 0;
          if (defined(obj.version)) {
            var len = encodings.varint.encodingLength(obj.version);
            length += 1 + len;
          }
          if (defined(obj.key)) {
            var len = encodings.bytes.encodingLength(obj.key);
            length += 1 + len;
          }
          return length;
        }
        function encode3(obj, buf, offset) {
          if (!offset) offset = 0;
          if (!buf) buf = b4a4.allocUnsafe(encodingLength2(obj));
          var oldOffset = offset;
          if (defined(obj.version)) {
            buf[offset++] = 8;
            encodings.varint.encode(obj.version, buf, offset);
            offset += encodings.varint.encode.bytes;
          }
          if (defined(obj.key)) {
            buf[offset++] = 18;
            encodings.bytes.encode(obj.key, buf, offset);
            offset += encodings.bytes.encode.bytes;
          }
          encode3.bytes = offset - oldOffset;
          return buf;
        }
        function decode3(buf, offset, end) {
          if (!offset) offset = 0;
          if (!end) end = buf.length;
          if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid");
          var oldOffset = offset;
          var obj = {
            version: 0,
            key: null
          };
          while (true) {
            if (end <= offset) {
              decode3.bytes = offset - oldOffset;
              return obj;
            }
            var prefix = varint.decode(buf, offset);
            offset += varint.decode.bytes;
            var tag = prefix >> 3;
            switch (tag) {
              case 1:
                obj.version = encodings.varint.decode(buf, offset);
                offset += encodings.varint.decode.bytes;
                break;
              case 2:
                obj.key = encodings.bytes.decode(buf, offset);
                offset += encodings.bytes.decode.bytes;
                break;
              default:
                offset = skip(prefix & 7, buf, offset);
            }
          }
        }
      }
      function defineIterator() {
        Iterator.encodingLength = encodingLength2;
        Iterator.encode = encode3;
        Iterator.decode = decode3;
        function encodingLength2(obj) {
          var length = 0;
          if (defined(obj.version)) {
            var len = encodings.varint.encodingLength(obj.version);
            length += 1 + len;
          }
          if (defined(obj.gte)) {
            var len = encodings.bytes.encodingLength(obj.gte);
            length += 1 + len;
          }
          if (defined(obj.gt)) {
            var len = encodings.bytes.encodingLength(obj.gt);
            length += 1 + len;
          }
          if (defined(obj.lte)) {
            var len = encodings.bytes.encodingLength(obj.lte);
            length += 1 + len;
          }
          if (defined(obj.lt)) {
            var len = encodings.bytes.encodingLength(obj.lt);
            length += 1 + len;
          }
          if (defined(obj.limit)) {
            var len = encodings.varint.encodingLength(obj.limit);
            length += 1 + len;
          }
          if (defined(obj.reverse)) {
            var len = encodings.bool.encodingLength(obj.reverse);
            length += 1 + len;
          }
          if (defined(obj.checkpoint)) {
            var packedLen = 0;
            for (var i = 0; i < obj.checkpoint.length; i++) {
              if (!defined(obj.checkpoint[i])) continue;
              var len = encodings.varint.encodingLength(obj.checkpoint[i]);
              packedLen += len;
            }
            if (packedLen) {
              length += 1 + packedLen + varint.encodingLength(packedLen);
            }
          }
          return length;
        }
        function encode3(obj, buf, offset) {
          if (!offset) offset = 0;
          if (!buf) buf = b4a4.allocUnsafe(encodingLength2(obj));
          var oldOffset = offset;
          if (defined(obj.version)) {
            buf[offset++] = 8;
            encodings.varint.encode(obj.version, buf, offset);
            offset += encodings.varint.encode.bytes;
          }
          if (defined(obj.gte)) {
            buf[offset++] = 18;
            encodings.bytes.encode(obj.gte, buf, offset);
            offset += encodings.bytes.encode.bytes;
          }
          if (defined(obj.gt)) {
            buf[offset++] = 26;
            encodings.bytes.encode(obj.gt, buf, offset);
            offset += encodings.bytes.encode.bytes;
          }
          if (defined(obj.lte)) {
            buf[offset++] = 34;
            encodings.bytes.encode(obj.lte, buf, offset);
            offset += encodings.bytes.encode.bytes;
          }
          if (defined(obj.lt)) {
            buf[offset++] = 42;
            encodings.bytes.encode(obj.lt, buf, offset);
            offset += encodings.bytes.encode.bytes;
          }
          if (defined(obj.limit)) {
            buf[offset++] = 48;
            encodings.varint.encode(obj.limit, buf, offset);
            offset += encodings.varint.encode.bytes;
          }
          if (defined(obj.reverse)) {
            buf[offset++] = 56;
            encodings.bool.encode(obj.reverse, buf, offset);
            offset += encodings.bool.encode.bytes;
          }
          if (defined(obj.checkpoint)) {
            var packedLen = 0;
            for (var i = 0; i < obj.checkpoint.length; i++) {
              if (!defined(obj.checkpoint[i])) continue;
              packedLen += encodings.varint.encodingLength(obj.checkpoint[i]);
            }
            if (packedLen) {
              buf[offset++] = 66;
              varint.encode(packedLen, buf, offset);
              offset += varint.encode.bytes;
            }
            for (var i = 0; i < obj.checkpoint.length; i++) {
              if (!defined(obj.checkpoint[i])) continue;
              encodings.varint.encode(obj.checkpoint[i], buf, offset);
              offset += encodings.varint.encode.bytes;
            }
          }
          encode3.bytes = offset - oldOffset;
          return buf;
        }
        function decode3(buf, offset, end) {
          if (!offset) offset = 0;
          if (!end) end = buf.length;
          if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid");
          var oldOffset = offset;
          var obj = {
            version: 0,
            gte: null,
            gt: null,
            lte: null,
            lt: null,
            limit: 0,
            reverse: false,
            checkpoint: []
          };
          while (true) {
            if (end <= offset) {
              decode3.bytes = offset - oldOffset;
              return obj;
            }
            var prefix = varint.decode(buf, offset);
            offset += varint.decode.bytes;
            var tag = prefix >> 3;
            switch (tag) {
              case 1:
                obj.version = encodings.varint.decode(buf, offset);
                offset += encodings.varint.decode.bytes;
                break;
              case 2:
                obj.gte = encodings.bytes.decode(buf, offset);
                offset += encodings.bytes.decode.bytes;
                break;
              case 3:
                obj.gt = encodings.bytes.decode(buf, offset);
                offset += encodings.bytes.decode.bytes;
                break;
              case 4:
                obj.lte = encodings.bytes.decode(buf, offset);
                offset += encodings.bytes.decode.bytes;
                break;
              case 5:
                obj.lt = encodings.bytes.decode(buf, offset);
                offset += encodings.bytes.decode.bytes;
                break;
              case 6:
                obj.limit = encodings.varint.decode(buf, offset);
                offset += encodings.varint.decode.bytes;
                break;
              case 7:
                obj.reverse = encodings.bool.decode(buf, offset);
                offset += encodings.bool.decode.bytes;
                break;
              case 8:
                var packedEnd = varint.decode(buf, offset);
                offset += varint.decode.bytes;
                packedEnd += offset;
                while (offset < packedEnd) {
                  obj.checkpoint.push(encodings.varint.decode(buf, offset));
                  offset += encodings.varint.decode.bytes;
                }
                break;
              default:
                offset = skip(prefix & 7, buf, offset);
            }
          }
        }
      }
      function defineCache() {
        Cache.encodingLength = encodingLength2;
        Cache.encode = encode3;
        Cache.decode = decode3;
        function encodingLength2(obj) {
          var length = 0;
          if (!defined(obj.start)) throw new Error("start is required");
          var len = encodings.varint.encodingLength(obj.start);
          length += 1 + len;
          if (!defined(obj.end)) throw new Error("end is required");
          var len = encodings.varint.encodingLength(obj.end);
          length += 1 + len;
          if (defined(obj.blocks)) {
            var packedLen = 0;
            for (var i = 0; i < obj.blocks.length; i++) {
              if (!defined(obj.blocks[i])) continue;
              var len = encodings.varint.encodingLength(obj.blocks[i]);
              packedLen += len;
            }
            if (packedLen) {
              length += 1 + packedLen + varint.encodingLength(packedLen);
            }
          }
          return length;
        }
        function encode3(obj, buf, offset) {
          if (!offset) offset = 0;
          if (!buf) buf = b4a4.allocUnsafe(encodingLength2(obj));
          var oldOffset = offset;
          if (!defined(obj.start)) throw new Error("start is required");
          buf[offset++] = 8;
          encodings.varint.encode(obj.start, buf, offset);
          offset += encodings.varint.encode.bytes;
          if (!defined(obj.end)) throw new Error("end is required");
          buf[offset++] = 16;
          encodings.varint.encode(obj.end, buf, offset);
          offset += encodings.varint.encode.bytes;
          if (defined(obj.blocks)) {
            var packedLen = 0;
            for (var i = 0; i < obj.blocks.length; i++) {
              if (!defined(obj.blocks[i])) continue;
              packedLen += encodings.varint.encodingLength(obj.blocks[i]);
            }
            if (packedLen) {
              buf[offset++] = 26;
              varint.encode(packedLen, buf, offset);
              offset += varint.encode.bytes;
            }
            for (var i = 0; i < obj.blocks.length; i++) {
              if (!defined(obj.blocks[i])) continue;
              encodings.varint.encode(obj.blocks[i], buf, offset);
              offset += encodings.varint.encode.bytes;
            }
          }
          encode3.bytes = offset - oldOffset;
          return buf;
        }
        function decode3(buf, offset, end) {
          if (!offset) offset = 0;
          if (!end) end = buf.length;
          if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid");
          var oldOffset = offset;
          var obj = {
            start: 0,
            end: 0,
            blocks: []
          };
          var found0 = false;
          var found1 = false;
          while (true) {
            if (end <= offset) {
              if (!found0 || !found1) throw new Error("Decoded message is not valid");
              decode3.bytes = offset - oldOffset;
              return obj;
            }
            var prefix = varint.decode(buf, offset);
            offset += varint.decode.bytes;
            var tag = prefix >> 3;
            switch (tag) {
              case 1:
                obj.start = encodings.varint.decode(buf, offset);
                offset += encodings.varint.decode.bytes;
                found0 = true;
                break;
              case 2:
                obj.end = encodings.varint.decode(buf, offset);
                offset += encodings.varint.decode.bytes;
                found1 = true;
                break;
              case 3:
                var packedEnd = varint.decode(buf, offset);
                offset += varint.decode.bytes;
                packedEnd += offset;
                while (offset < packedEnd) {
                  obj.blocks.push(encodings.varint.decode(buf, offset));
                  offset += encodings.varint.decode.bytes;
                }
                break;
              default:
                offset = skip(prefix & 7, buf, offset);
            }
          }
        }
      }
      Extension.encodingLength = encodingLength;
      Extension.encode = encode2;
      Extension.decode = decode2;
      function encodingLength(obj) {
        var length = 0;
        if (defined(obj.cache)) {
          var len = Cache.encodingLength(obj.cache);
          length += varint.encodingLength(len);
          length += 1 + len;
        }
        if (defined(obj.get)) {
          var len = Get.encodingLength(obj.get);
          length += varint.encodingLength(len);
          length += 1 + len;
        }
        if (defined(obj.iterator)) {
          var len = Iterator.encodingLength(obj.iterator);
          length += varint.encodingLength(len);
          length += 1 + len;
        }
        return length;
      }
      function encode2(obj, buf, offset) {
        if (!offset) offset = 0;
        if (!buf) buf = b4a4.allocUnsafe(encodingLength(obj));
        var oldOffset = offset;
        if (defined(obj.cache)) {
          buf[offset++] = 10;
          varint.encode(Cache.encodingLength(obj.cache), buf, offset);
          offset += varint.encode.bytes;
          Cache.encode(obj.cache, buf, offset);
          offset += Cache.encode.bytes;
        }
        if (defined(obj.get)) {
          buf[offset++] = 18;
          varint.encode(Get.encodingLength(obj.get), buf, offset);
          offset += varint.encode.bytes;
          Get.encode(obj.get, buf, offset);
          offset += Get.encode.bytes;
        }
        if (defined(obj.iterator)) {
          buf[offset++] = 26;
          varint.encode(Iterator.encodingLength(obj.iterator), buf, offset);
          offset += varint.encode.bytes;
          Iterator.encode(obj.iterator, buf, offset);
          offset += Iterator.encode.bytes;
        }
        encode2.bytes = offset - oldOffset;
        return buf;
      }
      function decode2(buf, offset, end) {
        if (!offset) offset = 0;
        if (!end) end = buf.length;
        if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid");
        var oldOffset = offset;
        var obj = {
          cache: null,
          get: null,
          iterator: null
        };
        while (true) {
          if (end <= offset) {
            decode2.bytes = offset - oldOffset;
            return obj;
          }
          var prefix = varint.decode(buf, offset);
          offset += varint.decode.bytes;
          var tag = prefix >> 3;
          switch (tag) {
            case 1:
              var len = varint.decode(buf, offset);
              offset += varint.decode.bytes;
              obj.cache = Cache.decode(buf, offset, offset + len);
              offset += Cache.decode.bytes;
              break;
            case 2:
              var len = varint.decode(buf, offset);
              offset += varint.decode.bytes;
              obj.get = Get.decode(buf, offset, offset + len);
              offset += Get.decode.bytes;
              break;
            case 3:
              var len = varint.decode(buf, offset);
              offset += varint.decode.bytes;
              obj.iterator = Iterator.decode(buf, offset, offset + len);
              offset += Iterator.decode.bytes;
              break;
            default:
              offset = skip(prefix & 7, buf, offset);
          }
        }
      }
    }
    function defined(val) {
      return val !== null && val !== void 0 && (typeof val !== "number" || !isNaN(val));
    }
  }
});

// node_modules/hyperbee/lib/extension.js
var require_extension = __commonJS({
  "node_modules/hyperbee/lib/extension.js"(exports2, module2) {
    var { Extension } = require_messages();
    var FLUSH_BATCH = 128;
    var MAX_PASSIVE_BATCH = 2048;
    var MAX_ACTIVE_BATCH = MAX_PASSIVE_BATCH + FLUSH_BATCH;
    var Batch = class {
      constructor(outgoing, from) {
        this.blocks = [];
        this.start = 0;
        this.end = 0;
        this.outgoing = outgoing;
        this.from = from;
      }
      push(seq) {
        const len = this.blocks.push(seq);
        if (len === 1 || seq < this.start) this.start = seq;
        if (len === 1 || seq >= this.end) this.end = seq + 1;
        if (len >= FLUSH_BATCH) {
          this.send();
          this.clear();
        }
      }
      send() {
        if (!this.blocks.length) return;
        this.outgoing.send(
          Extension.encode({
            cache: { blocks: this.blocks, start: this.start, end: this.end }
          }),
          this.from
        );
      }
      clear() {
        this.start = this.end = 0;
        this.blocks = [];
      }
    };
    var HyperbeeExtension = class {
      constructor(db) {
        this.encoding = null;
        this.outgoing = null;
        this.db = db;
        this.active = 0;
      }
      get(version3, key) {
        this.outgoing.broadcast(Extension.encode({ get: { version: version3, key } }));
      }
      iterator(snapshot) {
        if (snapshot.ended) return;
        if (snapshot.limit === 0) return;
        if (snapshot.limit === -1) snapshot.limit = 0;
        this.outgoing.broadcast(Extension.encode({ iterator: snapshot }));
      }
      onmessage(buf, from) {
        const message = decode2(buf);
        if (!message) return;
        if (message.cache) this.oncache(message.cache, from);
        if (message.get) this.onget(message.get, from);
        if (message.iterator) this.oniterator(message.iterator, from);
      }
      oncache(message, from) {
        if (!message.blocks.length) return;
        this.db.core.download(message);
      }
      onget(message, from) {
        if (!message.version || message.version > this.db.version) return;
        const b = new Batch(this.outgoing, from);
        const db = this.db.checkout(message.version);
        db.get(message.key, {
          extension: false,
          wait: false,
          update: false,
          onseq
        }).then(done, done);
        function done() {
          db.close().catch(noop);
          b.send();
        }
        function onseq(seq) {
          b.push(seq);
        }
      }
      async oniterator(message, from) {
        if (!message.version || message.version > this.db.version) return;
        const b = new Batch(this.outgoing, from);
        const seqs = /* @__PURE__ */ new Set();
        let skip = message.checkpoint.length;
        let work = 0;
        const db = this.db.checkout(message.version);
        const ite = db.createRangeIterator({
          ...message,
          wait: false,
          extension: false,
          update: false,
          limit: message.limit === 0 ? -1 : message.limit,
          onseq(seq) {
            if (skip && skip--) return;
            if (seqs.has(seq)) return;
            work++;
            seqs.add(seq);
            b.push(seq);
          }
        });
        try {
          await ite.open();
          while (work < MAX_ACTIVE_BATCH) {
            if (!await ite.next()) break;
          }
        } catch (_) {
        } finally {
          ite.close().catch(noop);
          db.close().catch(noop);
          b.send();
        }
      }
      static register(db) {
        const e = new this(db);
        e.outgoing = db.core.registerExtension("hyperbee", e);
        return e;
      }
    };
    HyperbeeExtension.BATCH_SIZE = MAX_PASSIVE_BATCH;
    module2.exports = HyperbeeExtension;
    function decode2(buf) {
      try {
        return Extension.decode(buf);
      } catch (err) {
        return null;
      }
    }
    function noop() {
    }
  }
});

// node_modules/z32/index.js
var require_z32 = __commonJS({
  "node_modules/z32/index.js"(exports2) {
    var b4a4 = require_b4a();
    var ALPHABET = "ybndrfg8ejkmcpqxot1uwisza345h769";
    var MIN = 49;
    var MAX = 122;
    var REVERSE = new Int8Array(1 + MAX - MIN);
    REVERSE.fill(-1);
    for (let i = 0; i < ALPHABET.length; i++) {
      const v = ALPHABET.charCodeAt(i) - MIN;
      REVERSE[v] = i;
    }
    exports2.encode = encode2;
    exports2.decode = decode2;
    exports2.ALPHABET = ALPHABET;
    function decode2(s, out) {
      let pb = 0;
      let ps = 0;
      const r = s.length & 7;
      const q = (s.length - r) / 8;
      if (!out) out = b4a4.allocUnsafe(Math.ceil(s.length * 5 / 8));
      for (let i = 0; i < q; i++) {
        const a2 = quintet(s, ps++);
        const b2 = quintet(s, ps++);
        const c5 = quintet(s, ps++);
        const d2 = quintet(s, ps++);
        const e2 = quintet(s, ps++);
        const f2 = quintet(s, ps++);
        const g2 = quintet(s, ps++);
        const h2 = quintet(s, ps++);
        out[pb++] = a2 << 3 | b2 >>> 2;
        out[pb++] = (b2 & 3) << 6 | c5 << 1 | d2 >>> 4;
        out[pb++] = (d2 & 15) << 4 | e2 >>> 1;
        out[pb++] = (e2 & 1) << 7 | f2 << 2 | g2 >>> 3;
        out[pb++] = (g2 & 7) << 5 | h2;
      }
      if (r === 0) return out.subarray(0, pb);
      const a = quintet(s, ps++);
      const b = quintet(s, ps++);
      out[pb++] = a << 3 | b >>> 2;
      if (r <= 2) return out.subarray(0, pb);
      const c4 = quintet(s, ps++);
      const d = quintet(s, ps++);
      out[pb++] = (b & 3) << 6 | c4 << 1 | d >>> 4;
      if (r <= 4) return out.subarray(0, pb);
      const e = quintet(s, ps++);
      out[pb++] = (d & 15) << 4 | e >>> 1;
      if (r <= 5) return out.subarray(0, pb);
      const f = quintet(s, ps++);
      const g = quintet(s, ps++);
      out[pb++] = (e & 1) << 7 | f << 2 | g >>> 3;
      if (r <= 7) return out.subarray(0, pb);
      const h = quintet(s, ps++);
      out[pb++] = (g & 7) << 5 | h;
      return out.subarray(0, pb);
    }
    function encode2(buf) {
      if (typeof buf === "string") buf = b4a4.from(buf);
      const max = buf.byteLength * 8;
      let s = "";
      for (let p = 0; p < max; p += 5) {
        const i = p >>> 3;
        const j = p & 7;
        if (j <= 3) {
          s += ALPHABET[buf[i] >>> 3 - j & 31];
          continue;
        }
        const of = j - 3;
        const h = buf[i] << of & 31;
        const l = (i >= buf.byteLength ? 0 : buf[i + 1]) >>> 8 - of;
        s += ALPHABET[h | l];
      }
      return s;
    }
    function quintet(s, i) {
      if (i > s.length) {
        return 0;
      }
      const v = s.charCodeAt(i);
      if (v < MIN || v > MAX) {
        throw Error('Invalid character in base32 input: "' + s[i] + '" at position ' + i);
      }
      const bits = REVERSE[v - MIN];
      if (bits === -1) {
        throw Error('Invalid character in base32 input: "' + s[i] + '" at position ' + i);
      }
      return bits;
    }
  }
});

// node_modules/hypercore-id-encoding/index.js
var require_hypercore_id_encoding = __commonJS({
  "node_modules/hypercore-id-encoding/index.js"(exports2, module2) {
    var z322 = require_z32();
    var b4a4 = require_b4a();
    module2.exports = {
      encode: encode2,
      decode: decode2,
      normalize,
      isValid
    };
    function encode2(key) {
      if (!b4a4.isBuffer(key)) throw new Error("Key must be a Buffer");
      if (key.byteLength !== 32) throw new Error("Key must be 32-bytes long");
      return z322.encode(key);
    }
    function decode2(id) {
      if (b4a4.isBuffer(id)) {
        if (id.byteLength !== 32) throw new Error("ID must be 32-bytes long");
        return id;
      }
      if (typeof id === "string") {
        if (id.startsWith("pear://")) id = id.slice(7).split("/")[0];
        if (id.length === 52) return z322.decode(id);
        if (id.length === 64) {
          const buf = b4a4.from(id, "hex");
          if (buf.byteLength === 32) return buf;
        }
      }
      throw new Error("Invalid Hypercore key");
    }
    function normalize(any) {
      return encode2(decode2(any));
    }
    function isValid(any) {
      try {
        decode2(any);
        return true;
      } catch {
        return false;
      }
    }
  }
});

// node_modules/hypercore-errors/index.js
var require_hypercore_errors = __commonJS({
  "node_modules/hypercore-errors/index.js"(exports2, module2) {
    var IdEnc = require_hypercore_id_encoding();
    module2.exports = class HypercoreError extends Error {
      constructor(msg, code, fn = HypercoreError, discoveryKey = null) {
        if (discoveryKey) msg = `${msg} (discovery key: ${IdEnc.normalize(discoveryKey)})`;
        super(`${code}: ${msg}`);
        this.code = code;
        this.discoveryKey = discoveryKey;
        if (Error.captureStackTrace) {
          Error.captureStackTrace(this, fn);
        }
      }
      get name() {
        return "HypercoreError";
      }
      static ASSERTION(msg, discoveryKey = null) {
        return new HypercoreError(msg, "ERR_ASSERTION", HypercoreError.ASSERT, discoveryKey);
      }
      static BAD_ARGUMENT(msg, discoveryKey = null) {
        return new HypercoreError(msg, "BAD_ARGUMENT", HypercoreError.BAD_ARGUMENT, discoveryKey);
      }
      static STORAGE_EMPTY(msg, discoveryKey = null) {
        return new HypercoreError(msg, "STORAGE_EMPTY", HypercoreError.STORAGE_EMPTY, discoveryKey);
      }
      static STORAGE_CONFLICT(msg, discoveryKey = null) {
        return new HypercoreError(msg, "STORAGE_CONFLICT", HypercoreError.STORAGE_CONFLICT, discoveryKey);
      }
      static INVALID_SIGNATURE(msg, discoveryKey = null) {
        return new HypercoreError(msg, "INVALID_SIGNATURE", HypercoreError.INVALID_SIGNATURE, discoveryKey);
      }
      static INVALID_CAPABILITY(msg, discoveryKey = null) {
        return new HypercoreError(msg, "INVALID_CAPABILITY", HypercoreError.INVALID_CAPABILITY, discoveryKey);
      }
      static INVALID_CHECKSUM(msg = "Invalid checksum", discoveryKey = null) {
        return new HypercoreError(msg, "INVALID_CHECKSUM", HypercoreError.INVALID_CHECKSUM, discoveryKey);
      }
      static INVALID_OPERATION(msg, discoveryKey = null) {
        return new HypercoreError(msg, "INVALID_OPERATION", HypercoreError.INVALID_OPERATION, discoveryKey);
      }
      static INVALID_PROOF(msg = "Proof not verifiable", discoveryKey = null) {
        return new HypercoreError(msg, "INVALID_PROOF", HypercoreError.INVALID_PROOF, discoveryKey);
      }
      static BLOCK_NOT_AVAILABLE(msg = "Block is not available", discoveryKey = null) {
        return new HypercoreError(msg, "BLOCK_NOT_AVAILABLE", HypercoreError.BLOCK_NOT_AVAILABLE, discoveryKey);
      }
      static SNAPSHOT_NOT_AVAILABLE(msg = "Snapshot is not available", discoveryKey = null) {
        return new HypercoreError(msg, "SNAPSHOT_NOT_AVAILABLE", HypercoreError.SNAPSHOT_NOT_AVAILABLE, discoveryKey);
      }
      static REQUEST_CANCELLED(msg = "Request was cancelled", discoveryKey = null) {
        return new HypercoreError(msg, "REQUEST_CANCELLED", HypercoreError.REQUEST_CANCELLED, discoveryKey);
      }
      static REQUEST_TIMEOUT(msg = "Request timed out", discoveryKey = null) {
        return new HypercoreError(msg, "REQUEST_TIMEOUT", HypercoreError.REQUEST_TIMEOUT, discoveryKey);
      }
      static SESSION_NOT_WRITABLE(msg = "Session is not writable", discoveryKey = null) {
        return new HypercoreError(msg, "SESSION_NOT_WRITABLE", HypercoreError.SESSION_NOT_WRITABLE, discoveryKey);
      }
      static SESSION_CLOSED(msg = "Session is closed", discoveryKey = null) {
        return new HypercoreError(msg, "SESSION_CLOSED", HypercoreError.SESSION_CLOSED, discoveryKey);
      }
      static BATCH_UNFLUSHED(msg = "Batch not yet flushed", discoveryKey = null) {
        return new HypercoreError(msg, "BATCH_UNFLUSHED", HypercoreError.BATCH_UNFLUSHED, discoveryKey);
      }
      static BATCH_ALREADY_EXISTS(msg = "Batch already exists", discoveryKey = null) {
        return new HypercoreError(msg, "BATCH_ALREADY_EXISTS", HypercoreError.BATCH_ALREADY_EXISTS, discoveryKey);
      }
      static BATCH_ALREADY_FLUSHED(msg = "Batch has already been flushed", discoveryKey = null) {
        return new HypercoreError(msg, "BATCH_ALREADY_FLUSHED", HypercoreError.BATCH_ALREADY_FLUSHED, discoveryKey);
      }
      static OPLOG_CORRUPT(msg = "Oplog file appears corrupt or out of date", discoveryKey = null) {
        return new HypercoreError(msg, "OPLOG_CORRUPT", HypercoreError.OPLOG_CORRUPT, discoveryKey);
      }
      static OPLOG_HEADER_OVERFLOW(msg = "Oplog header exceeds page size", discoveryKey = null) {
        return new HypercoreError(msg, "OPLOG_HEADER_OVERFLOW", HypercoreError.OPLOG_HEADER_OVERFLOW, discoveryKey);
      }
      static INVALID_OPLOG_VERSION(msg = "Invalid header version", discoveryKey = null) {
        return new HypercoreError(msg, "INVALID_OPLOG_VERSION", HypercoreError.INVALID_OPLOG_VERSION, discoveryKey);
      }
      static WRITE_FAILED(msg = "Write to storage failed", discoveryKey = null) {
        return new HypercoreError(msg, "WRITE_FAILED", HypercoreError.WRITE_FAILED, discoveryKey);
      }
      static DECODING_ERROR(msg = "Decoding error", discoveryKey = null) {
        return new HypercoreError(msg, "DECODING_ERROR", HypercoreError.DECODING_ERROR, discoveryKey);
      }
      static SESSION_MOVED(msg = "Session moved", discoveryKey = null) {
        return new HypercoreError(msg, "SESSION_MOVED", HypercoreError.SESSION_MOVED, discoveryKey);
      }
    };
  }
});

// node_modules/hyperbee/index.js
var require_hyperbee = __commonJS({
  "node_modules/hyperbee/index.js"(exports2, module2) {
    var codecs = require_codecs();
    var { Readable } = require_streamx();
    var mutexify = require_promise();
    var b4a4 = require_b4a();
    var safetyCatch = require_safety_catch();
    var ReadyResource = require_ready_resource();
    var debounce = require_debounceify();
    var Rache = require_rache();
    var rrp = require_resolve_reject_promise();
    var { all: unslabAll } = require_unslab();
    var RangeIterator = require_range();
    var HistoryIterator = require_history();
    var DiffIterator = require_diff();
    var LocalBlockIterator = require_local();
    var Extension = require_extension();
    var { YoloIndex, Node, Header } = require_messages();
    var { BLOCK_NOT_AVAILABLE, DECODING_ERROR } = require_hypercore_errors();
    var T = 5;
    var MIN_KEYS = T - 1;
    var MAX_CHILDREN = MIN_KEYS * 2 + 1;
    var SEP = b4a4.alloc(1);
    var EMPTY = b4a4.alloc(0);
    var Key = class {
      constructor(seq, value) {
        this.seq = seq;
        this.value = value;
      }
    };
    var Child = class {
      constructor(seq, offset, value) {
        this.seq = seq;
        this.offset = offset;
        this.value = value;
      }
    };
    var Cache = class {
      constructor(rache) {
        this.keys = rache;
        this.length = 0;
      }
      get(seq) {
        return this.keys.get(seq) || null;
      }
      set(seq, key) {
        this.keys.set(seq, key);
        if (seq >= this.length) this.length = seq + 1;
      }
      gc(length) {
        if (this.length - length > 128) {
          this.keys.clear();
        } else {
          for (let i = length; i < this.length; i++) {
            this.keys.delete(i);
          }
        }
        this.length = length;
      }
      clear() {
        this.keys.clear();
      }
    };
    var Pointers = class {
      constructor(decoded) {
        this.levels = decoded.levels.map((l) => {
          const children = [];
          const keys = [];
          for (let i = 0; i < l.keys.length; i++) {
            keys.push(new Key(l.keys[i], null));
          }
          for (let i = 0; i < l.children.length; i += 2) {
            children.push(new Child(l.children[i], l.children[i + 1], null));
          }
          return { keys, children };
        });
      }
      get(i) {
        return this.levels[i];
      }
      hasKey(seq) {
        for (const lvl of this.levels) {
          for (const key of lvl.keys) {
            if (key.seq === seq) return true;
          }
        }
        return false;
      }
    };
    function inflate(entry) {
      if (entry.inflated === null) {
        entry.inflated = YoloIndex.decode(entry.index);
        entry.index = null;
      }
      return new Pointers(entry.inflated);
    }
    function deflate(index) {
      const levels = index.map((l) => {
        const keys = [];
        const children = [];
        for (let i = 0; i < l.value.keys.length; i++) {
          keys.push(l.value.keys[i].seq);
        }
        for (let i = 0; i < l.value.children.length; i++) {
          children.push(l.value.children[i].seq, l.value.children[i].offset);
        }
        return { keys, children };
      });
      return YoloIndex.encode({ levels });
    }
    var TreeNode = class _TreeNode {
      constructor(block, keys, children, offset) {
        this.block = block;
        this.offset = offset;
        this.keys = keys;
        this.children = children;
        this.changed = false;
        this.preload();
      }
      preload() {
        if (this.block === null) return;
        const core = getBackingCore(this.block.tree.core);
        if (!core) return;
        const bitfield = core.core.bitfield;
        const blocks = [];
        for (let i = 0; i < this.keys.length; i++) {
          const k = this.keys[i];
          if (k.value) continue;
          if (k.seq >= core.signedLength || bitfield && bitfield.get(k.seq)) continue;
          blocks.push(k.seq);
        }
        for (let i = 0; i < this.children.length; i++) {
          const c4 = this.children[i];
          if (c4.value) continue;
          if (c4.seq >= core.signedLength || bitfield && bitfield.get(c4.seq)) continue;
          blocks.push(c4.seq);
        }
        if (blocks.length) core.download({ blocks });
      }
      async insertKey(key, value, child, node, encoding, cas) {
        let s = 0;
        let e = this.keys.length;
        let c4;
        while (s < e) {
          const mid = s + e >> 1;
          c4 = b4a4.compare(key.value, await this.getKey(mid));
          if (c4 === 0) {
            if (cas) {
              const prev = await this.getKeyNode(mid);
              if (!await cas(prev.final(encoding), node)) return true;
            }
            if (!this.block.tree.tree.alwaysDuplicate) {
              const prev = await this.getKeyNode(mid);
              if (sameValue(prev.value, value)) return true;
            }
            this.changed = true;
            this.keys[mid] = key;
            return true;
          }
          if (c4 < 0) e = mid;
          else s = mid + 1;
        }
        const i = c4 < 0 ? e : s;
        this.keys.splice(i, 0, key);
        if (child) this.children.splice(i + 1, 0, new Child(0, 0, child));
        this.changed = true;
        return this.keys.length < MAX_CHILDREN;
      }
      removeKey(index) {
        this.keys.splice(index, 1);
        if (this.children.length) {
          this.children[index + 1].seq = 0;
          this.children.splice(index + 1, 1);
        }
        this.changed = true;
      }
      async siblings(parent) {
        for (let i = 0; i < parent.children.length; i++) {
          if (parent.children[i].value === this) {
            const [left, right] = await Promise.all([
              i ? parent.getChildNode(i - 1) : null,
              i < parent.children.length - 1 ? parent.getChildNode(i + 1) : null
            ]);
            return { left, index: i, right };
          }
        }
        throw new Error("Bad parent");
      }
      merge(node, median) {
        this.changed = true;
        this.keys.push(median);
        for (let i = 0; i < node.keys.length; i++) this.keys.push(node.keys[i]);
        for (let i = 0; i < node.children.length; i++) this.children.push(node.children[i]);
      }
      async split() {
        const len = this.keys.length >> 1;
        const right = _TreeNode.create(this.block);
        while (right.keys.length < len) right.keys.push(this.keys.pop());
        right.keys.reverse();
        await this.getKey(this.keys.length - 1);
        const median = this.keys.pop();
        if (this.children.length) {
          while (right.children.length < len + 1) right.children.push(this.children.pop());
          right.children.reverse();
        }
        this.changed = true;
        return {
          left: this,
          median,
          right
        };
      }
      getKeyNode(index) {
        return this.block.tree.getBlock(this.keys[index].seq);
      }
      async getChildNode(index) {
        const child = this.children[index];
        if (child.value) return child.value;
        const block = child.seq === this.block.seq ? this.block : await this.block.tree.getBlock(child.seq);
        return child.value = block.getTreeNode(child.offset);
      }
      setKey(index, key) {
        this.keys[index] = key;
        this.changed = true;
      }
      async getKey(index) {
        const key = this.keys[index];
        if (key.value) return key.value;
        const k = key.seq === this.block.seq ? this.block.key : await this.block.tree.getKey(key.seq);
        return key.value = k;
      }
      indexChanges(index, seq) {
        const offset = index.push(null) - 1;
        this.changed = false;
        for (const child of this.children) {
          if (!child.value || !child.value.changed) continue;
          child.seq = seq;
          child.offset = child.value.indexChanges(index, seq);
          index[child.offset] = child;
        }
        return offset;
      }
      updateChildren(seq, block) {
        for (const child of this.children) {
          if (!child.value || child.seq !== seq) continue;
          child.value.block = block;
          child.value.updateChildren(seq, block);
        }
      }
      static create(block) {
        const node = new _TreeNode(block, [], [], 0);
        node.changed = true;
        return node;
      }
    };
    var BlockEntry = class {
      constructor(seq, tree, entry) {
        this.seq = seq;
        this.tree = tree;
        this.index = null;
        this.entry = entry;
        this.key = entry.key;
        this.value = entry.value;
      }
      isTarget(key) {
        return b4a4.equals(this.key, key);
      }
      inflate() {
        if (this.index === null) {
          this.index = inflate(this.entry);
        }
      }
      isDeletion() {
        if (this.value !== null) return false;
        if (this.index === null) {
          this.index = inflate(this.entry);
        }
        return !this.index.hasKey(this.seq);
      }
      final(encoding) {
        return {
          seq: this.seq,
          key: encoding.key ? encoding.key.decode(this.key) : this.key,
          value: this.value && (encoding.value ? encoding.value.decode(this.value) : this.value)
        };
      }
      getTreeNode(offset) {
        if (this.index === null) {
          this.index = inflate(this.entry);
        }
        const entry = this.index.get(offset);
        return new TreeNode(this, entry.keys, entry.children, offset);
      }
    };
    var CacheLock = class {
      constructor() {
        this.map = /* @__PURE__ */ new Map();
      }
      enter(seq) {
        const pending = this.map.get(seq);
        if (!pending) {
          this.map.set(seq, []);
          return Promise.resolve();
        }
        const { resolve, promise } = rrp();
        pending.push(resolve);
        return promise;
      }
      exit(seq) {
        const pending = this.map.get(seq);
        if (!pending.length) {
          this.map.delete(seq);
          return;
        }
        pending.pop()();
      }
    };
    var BatchEntry = class extends BlockEntry {
      constructor(seq, tree, key, value, index) {
        super(seq, tree, { key, value, index: null, inflated: null });
        this.pendingIndex = index;
      }
      isTarget(key) {
        return false;
      }
      getTreeNode(offset) {
        return this.pendingIndex[offset].value;
      }
    };
    var Hyperbee = class _Hyperbee extends ReadyResource {
      constructor(core, opts = {}) {
        super();
        this.feed = core;
        this.core = core;
        this.keyEncoding = opts.keyEncoding ? codecs(opts.keyEncoding) : null;
        this.valueEncoding = opts.valueEncoding ? codecs(opts.valueEncoding) : null;
        this.extension = opts.extension !== false ? getExtension(this, opts) : null;
        this.metadata = opts.metadata || null;
        this.lock = opts.lock || mutexify();
        this.sep = opts.sep || SEP;
        this.readonly = !!opts.readonly;
        this.prefix = opts.prefix || null;
        this.alwaysDuplicate = opts.alwaysDuplicate !== false;
        this._unprefixedKeyEncoding = this.keyEncoding;
        this._sub = !!this.prefix;
        this._checkout = opts.checkout || 0;
        this._view = !!opts._view;
        this._onappendBound = this._view ? null : this._onappend.bind(this);
        this._ontruncateBound = this._view ? null : this._ontruncate.bind(this);
        this._watchers = this._onappendBound ? [] : null;
        this._entryWatchers = this._onappendBound ? [] : null;
        this._sessions = opts.sessions !== false;
        this._keyCache = null;
        this._nodeCache = null;
        this._cacheLock = new CacheLock();
        this._batches = [];
        if (this._watchers) {
          this.core.on("append", this._onappendBound);
          this.core.on("truncate", this._ontruncateBound);
        }
        if (this.prefix && opts._sub) {
          this.keyEncoding = prefixEncoding(this.prefix, this.keyEncoding);
        }
        this.ready().catch(safetyCatch);
      }
      async _open() {
        if (this.core.opened === false) await this.core.ready();
        if (this._watchers && this.core.replicator.setInflightRange) {
          this.core.replicator.setInflightRange(256, 512);
        }
        if (this._checkout === -1) this._checkout = Math.max(1, this.core.length);
        const baseCache = Rache.from(this.core.globalCache);
        this._keyCache = new Cache(baseCache);
        this._nodeCache = new Cache(Rache.from(baseCache));
      }
      get version() {
        return Math.max(1, this._checkout || this.core.length);
      }
      get id() {
        return this.core.id;
      }
      get key() {
        return this.core.key;
      }
      get discoveryKey() {
        return this.core.discoveryKey;
      }
      get writable() {
        return this.core.writable;
      }
      get readable() {
        return this.core.readable;
      }
      replicate(isInitiator, opts) {
        return this.core.replicate(isInitiator, opts);
      }
      update(opts) {
        return this.core.update(opts);
      }
      peek(range, opts) {
        return iteratorPeek(this.createRangeIterator(range, { ...opts, limit: 1 }));
      }
      createRangeIterator(range, opts = {}) {
        opts = opts ? { ...opts, ...range } : range;
        const extension = opts.extension === false && opts.limit !== 0 ? null : this.extension;
        const keyEncoding = opts.keyEncoding ? codecs(opts.keyEncoding) : this.keyEncoding;
        if (extension) {
          const { onseq, onwait } = opts;
          let version3 = 0;
          let next = 0;
          opts = encRange(keyEncoding, {
            ...opts,
            sub: this._sub,
            onseq(seq) {
              if (!version3) version3 = seq + 1;
              if (next) next--;
              if (onseq) onseq(seq);
            },
            onwait(seq) {
              if (!next) {
                next = Extension.BATCH_SIZE;
                extension.iterator(ite.snapshot(version3));
              }
              if (onwait) onwait(seq);
            }
          });
        } else {
          opts = encRange(keyEncoding, { ...opts, sub: this._sub });
        }
        const ite = new RangeIterator(
          new Batch(this, this._makeSnapshot(), null, false, opts),
          null,
          opts
        );
        return ite;
      }
      createReadStream(range, opts) {
        const signal = opts && opts.signal || null;
        return iteratorToStream(this.createRangeIterator(range, opts), signal);
      }
      createHistoryStream(opts) {
        const session = opts && opts.live ? this.core.session() : this._makeSnapshot();
        const signal = opts && opts.signal || null;
        return iteratorToStream(
          new HistoryIterator(new Batch(this, session, null, false, opts), opts),
          signal
        );
      }
      createDiffStream(right, range, opts) {
        if (typeof right === "number") right = this.checkout(Math.max(1, right), { reuseSession: true });
        opts = opts ? { ...opts, ...range } : range;
        const signal = opts && opts.signal || null;
        const keyEncoding = opts && opts.keyEncoding ? codecs(opts.keyEncoding) : this.keyEncoding;
        if (keyEncoding) opts = encRange(keyEncoding, { ...opts, sub: this._sub });
        let done;
        let closing;
        let ite;
        const left = this;
        const rs = new Readable({
          signal,
          eagerOpen: true,
          async open(cb) {
            try {
              if (right.opened === false) await right.ready();
              if (left.opened === false) await left.ready();
            } catch (err) {
              cb(err);
              return;
            }
            if (closing) {
              cb(null);
              return;
            }
            if (left.core.closing || right.core.closing) {
              cb(new Error("Bee closed"));
              return;
            }
            const snapshot = right.version > left.version ? right._makeSnapshot() : left._makeSnapshot();
            done = cb;
            ite = new DiffIterator(
              new Batch(left, snapshot, null, false, opts),
              new Batch(right, snapshot, null, false, opts),
              opts
            );
            ite.open().then(fin, fin);
          },
          read(cb) {
            done = cb;
            ite.next().then(push, fin);
          },
          predestroy() {
            if (!ite) {
              closing = Promise.resolve();
            } else {
              closing = ite.close();
              closing.catch(noop);
            }
          },
          destroy(cb) {
            done = cb;
            if (!closing) closing = ite.close();
            closing.then(fin, fin);
          }
        });
        return rs;
        function fin(err) {
          done(err);
        }
        function push(val) {
          rs.push(val);
          done(null);
        }
      }
      get(key, opts) {
        const b = new Batch(this, this._makeSnapshot(), null, true, opts);
        return b.get(key);
      }
      getBySeq(seq, opts) {
        const b = new Batch(this, this._makeSnapshot(), null, true, opts);
        return b.getBySeq(seq);
      }
      put(key, value, opts) {
        const b = new Batch(this, this.core, null, true, opts);
        return b.put(key, value, opts);
      }
      batch(opts) {
        return new Batch(this, this.core, mutexify(), true, opts);
      }
      del(key, opts) {
        const b = new Batch(this, this.core, null, true, opts);
        return b.del(key, opts);
      }
      watch(range, opts) {
        if (!this._watchers) throw new Error("Can only watch the main bee instance");
        return new Watcher(this, range, opts);
      }
      async getAndWatch(key, opts) {
        if (!this._watchers) throw new Error("Can only watch the main bee instance");
        const watcher = new EntryWatcher(this, key, opts);
        await watcher._debouncedUpdate();
        if (this.closing) {
          await watcher.close();
          throw new Error("Bee closed");
        }
        return watcher;
      }
      _onappend() {
        for (const watcher of this._watchers) {
          watcher._onappend();
        }
        for (const watcher of this._entryWatchers) {
          watcher._onappend();
        }
      }
      _ontruncate(length) {
        for (const watcher of this._watchers) {
          watcher._ontruncate();
        }
        for (const watcher of this._entryWatchers) {
          watcher._ontruncate();
        }
        this._nodeCache.gc(length);
        this._keyCache.gc(length);
      }
      _makeSnapshot() {
        if (this._sessions === false) return this.core;
        return this._checkout <= this.core.length || this._checkout <= 1 ? this.core.snapshot() : this.core.session({ snapshot: false });
      }
      async clearUnlinked(options = {}) {
        await this.ready();
        const { gte = 0, lt = this.version - 1, batchSize = 4096, wait = true } = options;
        const checkout = this.version;
        let prev = this.batch({ wait: false, checkout: gte });
        let b = this.batch({ wait, checkout });
        const iteBatch = this.batch({ wait: false, checkout });
        const ite = new LocalBlockIterator(iteBatch, { gte, lt });
        await ite.open();
        let ticks = 0;
        while (true) {
          const data = await ite.next();
          if (!data) break;
          if (!await isLinked(b, data)) {
            if (b.core.closing || this.core.closing || this.closing) break;
            await this.core.clear(data.seq);
          }
          const prevNode = await prev.get(data.key, { finalize: false }).catch(toNull);
          if (prevNode && !await isLinked(b, prevNode)) {
            if (b.core.closing || this.core.closing || this.closing) break;
            await this.core.clear(prevNode.seq);
          }
          if (ticks++ >= batchSize) {
            ticks = 0;
            await prev.close();
            await b.close();
            prev = this.batch({ wait: false, checkout: gte });
            b = this.batch({ wait, checkout });
          }
        }
        if (b.core.closing || this.core.closing || this.closing) throw new Error("Core is closed");
        await b.close();
        await prev.close();
        await ite.close();
        await iteBatch.close();
        return lt;
      }
      checkout(version3, opts = {}) {
        if (version3 === 0) version3 = 1;
        const snap = opts.reuseSession || this._sessions === false ? this.core : version3 <= this.core.length || version3 <= 1 ? this.core.snapshot() : this.core.session({ snapshot: false });
        return new _Hyperbee(snap, {
          _view: true,
          _sub: false,
          prefix: this.prefix,
          sep: this.sep,
          lock: this.lock,
          checkout: version3,
          keyEncoding: opts.keyEncoding || this.keyEncoding,
          valueEncoding: opts.valueEncoding || this.valueEncoding,
          extension: this.extension !== null ? this.extension : false
        });
      }
      snapshot(opts) {
        return this.checkout(
          this.core.opened === false || this._checkout <= 0 ? -1 : Math.max(1, this.version),
          opts
        );
      }
      sub(prefix, opts = {}) {
        let sep = opts.sep || this.sep;
        if (!b4a4.isBuffer(sep)) sep = b4a4.from(sep);
        prefix = b4a4.concat([this.prefix || EMPTY, b4a4.from(prefix), sep]);
        const valueEncoding = codecs(opts.valueEncoding || this.valueEncoding);
        const keyEncoding = codecs(opts.keyEncoding || this._unprefixedKeyEncoding);
        return new _Hyperbee(this.core, {
          _view: true,
          _sub: true,
          prefix,
          sep: this.sep,
          lock: this.lock,
          checkout: this._checkout,
          valueEncoding,
          keyEncoding,
          extension: this.extension !== null ? this.extension : false,
          metadata: this.metadata
        });
      }
      async getHeader(opts) {
        const blk = await this.core.get(0, opts);
        try {
          return blk && Header.decode(blk);
        } catch {
          throw DECODING_ERROR();
        }
      }
      async _close() {
        if (!this._view) {
          if (this._keyCache) this._keyCache.clear();
          if (this._nodeCache) this._nodeCache.clear();
        }
        if (this._watchers) {
          this.core.off("append", this._onappendBound);
          this.core.off("truncate", this._ontruncateBound);
          while (this._watchers.length) {
            await this._watchers[this._watchers.length - 1].close();
          }
        }
        if (this._entryWatchers) {
          while (this._entryWatchers.length) {
            await this._entryWatchers[this._entryWatchers.length - 1].close();
          }
        }
        while (this._batches.length) {
          await this._batches[this._batches.length - 1].close();
        }
        return this.core.close();
      }
      static async isHyperbee(core, opts) {
        await core.ready();
        const blk0 = await core.get(0, opts);
        if (blk0 === null) throw BLOCK_NOT_AVAILABLE();
        try {
          return Header.decode(blk0).protocol === "hyperbee";
        } catch (err) {
          return false;
        }
      }
    };
    var Batch = class {
      constructor(tree, core, batchLock, cache, options = {}) {
        this.tree = tree;
        this.feed = core;
        this.core = core;
        this.index = tree._batches.push(this) - 1;
        this.blocks = cache ? /* @__PURE__ */ new Map() : null;
        this.autoFlush = !batchLock;
        this.maxBlocksCached = options.maxBlocksCached || 128;
        this.rootSeq = 0;
        this.root = null;
        this.length = 0;
        this.checkout = options.checkout === void 0 ? -1 : options.checkout;
        this.options = options;
        this.locked = null;
        this.batchLock = batchLock;
        this.onseq = this.options.onseq || noop;
        this.appending = null;
        this.isSnapshot = this.core !== this.tree.core;
        this.shouldUpdate = this.options.update !== false;
        this.updating = null;
        this.encoding = {
          key: options.keyEncoding ? codecs(options.keyEncoding) : tree.keyEncoding,
          value: options.valueEncoding ? codecs(options.valueEncoding) : tree.valueEncoding
        };
      }
      async ready() {
        if (this.core.opened === false) await this.core.ready();
        if (this.tree.opened === false) await this.tree.ready();
      }
      async lock() {
        if (this.tree.readonly) throw new Error("Hyperbee is marked as read-only");
        if (this.locked === null) this.locked = await this.tree.lock();
      }
      get version() {
        if (this.checkout !== -1) return Math.max(1, this.checkout);
        return Math.max(1, this.tree._checkout || this.core.length + this.length);
      }
      async getRoot(ensureHeader) {
        await this.ready();
        if (ensureHeader) {
          if (this.core.length === 0 && this.core.writable && !this.tree.readonly) {
            await this.core.append(
              Header.encode({
                protocol: "hyperbee",
                metadata: this.tree.metadata
              })
            );
          }
        }
        if (this.tree._checkout === 0 && this.checkout === -1 && this.shouldUpdate) {
          if (this.updating === null) this.updating = this.core.update();
          await this.updating;
        }
        if (this.version < 2) return null;
        return (await this.getBlock(this.version - 1)).getTreeNode(0);
      }
      async getKey(seq) {
        await this.tree._cacheLock.enter(seq);
        try {
          const k = this.core.fork === this.tree.core.fork ? this.tree._keyCache.get(seq) : null;
          if (k !== null) return k;
          const key = (await this._getBlock(seq)).key;
          if (this.core.fork === this.tree.core.fork) this.tree._keyCache.set(seq, key);
          return key;
        } finally {
          this.tree._cacheLock.exit(seq);
        }
      }
      async _getNode(seq) {
        const cached = this.tree._nodeCache !== null && this.core.fork === this.tree.core.fork ? this.tree._nodeCache.get(seq) : null;
        if (cached !== null) return cached;
        const entry = await this.core.get(seq, {
          ...this.options,
          valueEncoding: Node
        });
        if (entry === null) throw BLOCK_NOT_AVAILABLE();
        const wrap = copyEntry(entry);
        if (this.core.fork === this.tree.core.fork && this.tree._nodeCache !== null) {
          this.tree._nodeCache.set(seq, wrap);
        }
        return wrap;
      }
      async getBlock(seq) {
        if (this.rootSeq === 0) this.rootSeq = seq;
        await this.tree._cacheLock.enter(seq);
        try {
          return await this._getBlock(seq);
        } finally {
          this.tree._cacheLock.exit(seq);
        }
      }
      async _getBlock(seq) {
        let b = this.blocks && this.blocks.get(seq);
        if (b) return b;
        this.onseq(seq);
        const entry = await this._getNode(seq);
        b = this.blocks && this.blocks.get(seq);
        if (b) return b;
        b = new BlockEntry(seq, this, entry);
        if (this.blocks && this.blocks.size - this.length < this.maxBlocksCached) {
          this.blocks.set(seq, b);
        }
        return b;
      }
      _onwait(key) {
        this.options.onwait = null;
        this.tree.extension.get(this.rootSeq + 1, key);
      }
      _getEncoding(opts) {
        if (!opts) return this.encoding;
        return {
          key: opts.keyEncoding ? codecs(opts.keyEncoding) : this.encoding.key,
          value: opts.valueEncoding ? codecs(opts.valueEncoding) : this.encoding.value
        };
      }
      peek(range, opts) {
        return iteratorPeek(this.createRangeIterator(range, { ...opts, limit: 1 }));
      }
      createRangeIterator(range, opts = {}) {
        opts = opts ? { ...opts, ...range } : range;
        const encoding = this._getEncoding(opts);
        return new RangeIterator(
          this,
          encoding,
          encRange(encoding.key, { ...opts, sub: this.tree._sub })
        );
      }
      createReadStream(range, opts) {
        const signal = opts && opts.signal || null;
        return iteratorToStream(this.createRangeIterator(range, opts), signal);
      }
      async getBySeq(seq, opts) {
        const encoding = this._getEncoding(opts);
        try {
          const block = (await this.getBlock(seq)).final(encoding);
          return { key: block.key, value: block.value };
        } finally {
          await this._closeSnapshot();
        }
      }
      async get(key, opts) {
        const encoding = this._getEncoding(opts);
        const finalize = opts ? opts.finalize !== false : true;
        try {
          return await this._get(key, encoding, finalize);
        } finally {
          await this._closeSnapshot();
        }
      }
      async _get(key, encoding, finalize) {
        key = enc(encoding.key, key);
        if (this.tree.extension !== null && this.options.extension !== false) {
          this.options.onwait = this._onwait.bind(this, key);
        }
        let node = await this.getRoot(false);
        if (!node) return null;
        while (true) {
          if (node.block.isTarget(key)) {
            return node.block.isDeletion() ? null : finalize ? node.block.final(encoding) : node.block;
          }
          let s = 0;
          let e = node.keys.length;
          let c4;
          while (s < e) {
            const mid = s + e >> 1;
            c4 = b4a4.compare(key, await node.getKey(mid));
            if (c4 === 0) {
              const block = await this.getBlock(node.keys[mid].seq);
              return finalize ? block.final(encoding) : block;
            }
            if (c4 < 0) e = mid;
            else s = mid + 1;
          }
          if (!node.children.length) return null;
          const i = c4 < 0 ? e : s;
          node = await node.getChildNode(i);
        }
      }
      async links(key, seq) {
        let node = await this.getRoot(false);
        if (!node) return false;
        if (node.block.seq === seq) return true;
        while (true) {
          if (node.block.isTarget(key)) return false;
          let s = 0;
          let e = node.keys.length;
          let c4;
          while (s < e) {
            const mid = s + e >> 1;
            if (node.keys[mid].seq === seq) return true;
            c4 = b4a4.compare(key, await node.getKey(mid));
            if (c4 === 0) return false;
            if (c4 < 0) e = mid;
            else s = mid + 1;
          }
          if (!node.children.length) return false;
          const i = c4 < 0 ? e : s;
          node = await node.getChildNode(i);
          if (node.block.seq === seq) return true;
        }
      }
      async put(key, value, opts) {
        const release = this.batchLock ? await this.batchLock() : null;
        const cas = opts && opts.cas || null;
        const encoding = this._getEncoding(opts);
        if (!this.locked) await this.lock();
        if (!release) return this._put(key, value, encoding, cas);
        try {
          return await this._put(key, value, encoding, cas);
        } finally {
          release();
        }
      }
      async _put(key, value, encoding, cas) {
        const newNode = {
          seq: 0,
          key,
          value
        };
        key = enc(encoding.key, key);
        value = enc(encoding.value, value);
        const stack = [];
        let root;
        let node = root = await this.getRoot(true);
        if (!node) node = root = TreeNode.create(null);
        const seq = newNode.seq = this.core.length + this.length;
        const target = new Key(seq, key);
        while (node.children.length) {
          stack.push(node);
          node.changed = true;
          let s = 0;
          let e = node.keys.length;
          let c4;
          while (s < e) {
            const mid = s + e >> 1;
            c4 = b4a4.compare(target.value, await node.getKey(mid));
            if (c4 === 0) {
              if (cas) {
                const prev = await node.getKeyNode(mid);
                if (!await cas(prev.final(encoding), newNode)) return this._unlockMaybe();
              }
              if (!this.tree.alwaysDuplicate) {
                const prev = await node.getKeyNode(mid);
                if (sameValue(prev.value, value)) return this._unlockMaybe();
              }
              node.setKey(mid, target);
              return this._append(root, seq, key, value);
            }
            if (c4 < 0) e = mid;
            else s = mid + 1;
          }
          const i = c4 < 0 ? e : s;
          node = await node.getChildNode(i);
        }
        let needsSplit = !await node.insertKey(target, value, null, newNode, encoding, cas);
        if (!node.changed) return this._unlockMaybe();
        while (needsSplit) {
          const parent = stack.pop();
          const { median, right } = await node.split();
          if (parent) {
            needsSplit = !await parent.insertKey(median, value, right, null, encoding, null);
            node = parent;
          } else {
            root = TreeNode.create(node.block);
            root.changed = true;
            root.keys.push(median);
            root.children.push(new Child(0, 0, node), new Child(0, 0, right));
            needsSplit = false;
          }
        }
        return this._append(root, seq, key, value);
      }
      async del(key, opts) {
        const release = this.batchLock ? await this.batchLock() : null;
        const cas = opts && opts.cas || null;
        const encoding = this._getEncoding(opts);
        if (!this.locked) await this.lock();
        if (!release) return this._del(key, encoding, cas);
        try {
          return await this._del(key, encoding, cas);
        } finally {
          release();
        }
      }
      async _del(key, encoding, cas) {
        const delNode = {
          seq: 0,
          key,
          value: null
        };
        key = enc(encoding.key, key);
        const stack = [];
        let node = await this.getRoot(true);
        if (!node) return this._unlockMaybe();
        const seq = delNode.seq = this.core.length + this.length;
        while (true) {
          stack.push(node);
          let s = 0;
          let e = node.keys.length;
          let c4;
          while (s < e) {
            const mid = s + e >> 1;
            c4 = b4a4.compare(key, await node.getKey(mid));
            if (c4 === 0) {
              if (cas) {
                const prev = await node.getKeyNode(mid);
                if (!await cas(prev.final(encoding), delNode)) return this._unlockMaybe();
              }
              if (node.children.length) await setKeyToNearestLeaf(node, mid, stack);
              else node.removeKey(mid);
              for (const node2 of stack) node2.changed = true;
              return this._append(await rebalance(stack), seq, key, null);
            }
            if (c4 < 0) e = mid;
            else s = mid + 1;
          }
          if (!node.children.length) return this._unlockMaybe();
          const i = c4 < 0 ? e : s;
          node = await node.getChildNode(i);
        }
      }
      async _closeSnapshot() {
        if (this.isSnapshot) {
          await this.core.close();
          this._finalize();
        }
      }
      async close() {
        if (this.isSnapshot) return this._closeSnapshot();
        this.root = null;
        if (this.blocks) this.blocks.clear();
        this.length = 0;
        this._unlock();
      }
      destroy() {
        this.close().catch(noop);
      }
      toBlocks() {
        if (this.appending) return this.appending;
        const batch = new Array(this.length);
        for (let i = 0; i < this.length; i++) {
          const seq = this.core.length + i;
          const { pendingIndex, key, value } = this.blocks.get(seq);
          if (i < this.length - 1) {
            pendingIndex[0] = null;
            let j = 0;
            while (j < pendingIndex.length) {
              const idx = pendingIndex[j];
              if (idx !== null && idx.seq === seq) {
                idx.offset = j++;
                continue;
              }
              if (j === pendingIndex.length - 1) pendingIndex.pop();
              else pendingIndex[j] = pendingIndex.pop();
            }
          }
          batch[i] = Node.encode({
            key,
            value,
            index: deflate(pendingIndex)
          });
        }
        this.appending = batch;
        return batch;
      }
      flush() {
        if (!this.length) return this.close();
        const batch = this.toBlocks();
        this.root = null;
        this.blocks.clear();
        this.length = 0;
        return this._appendBatch(batch);
      }
      _unlockMaybe() {
        if (this.autoFlush) this._unlock();
      }
      _unlock() {
        const locked = this.locked;
        this.locked = null;
        if (locked !== null) locked();
        this._finalize();
      }
      _finalize() {
        if (this.index >= this.tree._batches.length || this.tree._batches[this.index] !== this) return;
        const top = this.tree._batches.pop();
        if (top === this) return;
        top.index = this.index;
        this.tree._batches[top.index] = top;
      }
      _append(root, seq, key, value) {
        const index = [];
        root.indexChanges(index, seq);
        index[0] = new Child(seq, 0, root);
        if (!this.autoFlush) {
          const block = new BatchEntry(seq, this, key, value, index);
          root.block = block;
          this.root = root;
          this.length++;
          this.blocks.set(seq, block);
          root.updateChildren(seq, block);
          return;
        }
        return this._appendBatch(
          Node.encode({
            key,
            value,
            index: deflate(index)
          })
        );
      }
      async _appendBatch(raw) {
        try {
          await this.core.append(raw);
        } finally {
          this._unlock();
        }
      }
    };
    var EntryWatcher = class extends ReadyResource {
      constructor(bee, key, opts = {}) {
        super();
        this.keyEncoding = opts.keyEncoding || bee.keyEncoding;
        this.valueEncoding = opts.valueEncoding || bee.valueEncoding;
        this.index = bee._entryWatchers.push(this) - 1;
        this.bee = bee;
        this.key = key;
        this.node = null;
        this._forceUpdate = false;
        this._debouncedUpdate = debounce(this._processUpdate.bind(this));
      }
      _close() {
        const top = this.bee._entryWatchers.pop();
        if (top !== this) {
          top.index = this.index;
          this.bee._entryWatchers[top.index] = top;
        }
      }
      _onappend() {
        this._debouncedUpdate();
      }
      _ontruncate() {
        this._forceUpdate = true;
        this._debouncedUpdate();
      }
      async _processUpdate() {
        const force = this._forceUpdate;
        this._forceUpdate = false;
        let newNode;
        try {
          newNode = await this.bee.get(this.key, {
            keyEncoding: this.keyEncoding,
            valueEncoding: this.valueEncoding
          });
        } catch (e) {
          if (e.code === "SNAPSHOT_NOT_AVAILABLE") {
            return;
          } else if (this.bee.closing) {
            this.close().catch(safetyCatch);
            return;
          }
          this.emit("error", e);
          return;
        }
        if (force || newNode?.seq !== this.node?.seq) {
          this.node = newNode;
          this.emit("update");
        }
      }
    };
    var Watcher = class extends ReadyResource {
      constructor(bee, range, opts = {}) {
        super();
        this.keyEncoding = opts.keyEncoding || bee.keyEncoding;
        this.valueEncoding = opts.valueEncoding || bee.valueEncoding;
        this.index = bee._watchers.push(this) - 1;
        this.bee = bee;
        this.core = bee.core;
        this.latestDiff = 0;
        this.range = range;
        this.map = opts.map || defaultWatchMap;
        this.current = null;
        this.previous = null;
        this.currentMapped = null;
        this.previousMapped = null;
        this.stream = null;
        this._lock = mutexify();
        this._flowing = false;
        this._resolveOnChange = null;
        this._differ = opts.differ || defaultDiffer;
        this._eager = !!opts.eager;
        this._onchange = opts.onchange || null;
        this.on("newListener", autoFlowOnUpdate);
        this.ready().catch(safetyCatch);
      }
      async _consume() {
        if (this._flowing) return;
        try {
          for await (const _ of this) {
          }
        } catch {
        }
      }
      async _open() {
        await this.bee.ready();
        const opts = {
          keyEncoding: this.keyEncoding,
          valueEncoding: this.valueEncoding
        };
        this.current = this._eager ? this.bee.checkout(1, opts) : this.bee.snapshot(opts);
        await this.current.ready();
        if (this._onchange) {
          if (this._eager) await this._onchange();
          this._consume();
        }
      }
      [Symbol.asyncIterator]() {
        this._flowing = true;
        return this;
      }
      _ontruncate() {
        this._onappend();
      }
      _onappend() {
        const resolve = this._resolveOnChange;
        this._resolveOnChange = null;
        if (resolve) resolve();
      }
      async _waitForChanges() {
        if (this.current.version < this.bee.version || this.closing) return;
        await new Promise((resolve) => {
          this._resolveOnChange = resolve;
        });
      }
      async next() {
        try {
          return await this._next();
        } catch (err) {
          if (this.closing) return { value: void 0, done: true };
          await this.close();
          throw err;
        }
      }
      async _next() {
        const release = await this._lock();
        try {
          if (this.closing) return { value: void 0, done: true };
          if (!this.opened) await this.ready();
          while (true) {
            await this._waitForChanges();
            if (this.closing) return { value: void 0, done: true };
            await this._closePrevious();
            this.previous = this.current.snapshot();
            await this._closeCurrent();
            this.current = this.bee.snapshot({
              keyEncoding: this.keyEncoding,
              valueEncoding: this.valueEncoding
            });
            await this.current.ready();
            await this.previous.ready();
            if (this.current.core.fork !== this.previous.core.fork) {
              return await this._yield();
            }
            this.stream = this._differ(this.current, this.previous, this.range);
            try {
              for await (const data of this.stream) {
                return await this._yield();
              }
            } finally {
              this.stream = null;
            }
          }
        } finally {
          release();
        }
      }
      async _yield() {
        this.currentMapped = this.map(this.current);
        this.previousMapped = this.map(this.previous);
        if (this._onchange) {
          try {
            await this._onchange();
          } catch (err) {
            safetyCatch(err);
          }
        }
        this.emit("update");
        return { done: false, value: [this.currentMapped, this.previousMapped] };
      }
      async return() {
        await this.close();
        return { done: true };
      }
      async _close() {
        const top = this.bee._watchers.pop();
        if (top !== this) {
          top.index = this.index;
          this.bee._watchers[top.index] = top;
        }
        if (this.stream && !this.stream.destroying) {
          this.stream.destroy();
        }
        this._onappend();
        await this._closeCurrent().catch(safetyCatch);
        await this._closePrevious().catch(safetyCatch);
        const release = await this._lock();
        release();
      }
      destroy() {
        return this.close();
      }
      async _closeCurrent() {
        if (this.currentMapped) await this.currentMapped.close();
        if (this.current) await this.current.close();
        this.current = this.currentMapped = null;
      }
      async _closePrevious() {
        if (this.previousMapped) await this.previousMapped.close();
        if (this.previous) await this.previous.close();
        this.previous = this.previousMapped = null;
      }
    };
    function autoFlowOnUpdate(name) {
      if (name === "update") this._consume();
    }
    function defaultWatchMap(snapshot) {
      return snapshot;
    }
    async function leafSize(node, goLeft) {
      while (node.children.length) node = await node.getChildNode(goLeft ? 0 : node.children.length - 1);
      return node.keys.length;
    }
    async function setKeyToNearestLeaf(node, index, stack) {
      let [left, right] = await Promise.all([node.getChildNode(index), node.getChildNode(index + 1)]);
      const [ls, rs] = await Promise.all([leafSize(left, false), leafSize(right, true)]);
      if (ls < rs) {
        stack.push(right);
        while (right.children.length) stack.push(right = right.children[0].value);
        node.keys[index] = right.keys.shift();
      } else {
        stack.push(left);
        while (left.children.length) stack.push(left = left.children[left.children.length - 1].value);
        node.keys[index] = left.keys.pop();
      }
    }
    async function rebalance(stack) {
      const root = stack[0];
      while (stack.length > 1) {
        const node = stack.pop();
        const parent = stack[stack.length - 1];
        if (node.keys.length >= MIN_KEYS) return root;
        let { left, index, right } = await node.siblings(parent);
        if (left && left.keys.length > MIN_KEYS) {
          left.changed = true;
          node.keys.unshift(parent.keys[index - 1]);
          if (left.children.length) node.children.unshift(left.children.pop());
          parent.keys[index - 1] = left.keys.pop();
          return root;
        }
        if (right && right.keys.length > MIN_KEYS) {
          right.changed = true;
          node.keys.push(parent.keys[index]);
          if (right.children.length) node.children.push(right.children.shift());
          parent.keys[index] = right.keys.shift();
          return root;
        }
        if (left) {
          index--;
          right = node;
        } else {
          left = node;
        }
        left.merge(right, parent.keys[index]);
        parent.removeKey(index);
      }
      if (!root.keys.length && root.children.length) return root.getChildNode(0);
      return root;
    }
    function iteratorToStream(ite, signal) {
      let done;
      let closing;
      const rs = new Readable({
        signal,
        open(cb) {
          done = cb;
          ite.open().then(fin, fin);
        },
        read(cb) {
          done = cb;
          ite.next().then(push, fin);
        },
        predestroy() {
          closing = ite.close();
          closing.catch(noop);
        },
        destroy(cb) {
          done = cb;
          if (!closing) closing = ite.close();
          closing.then(fin, fin);
        }
      });
      return rs;
      function fin(err) {
        done(err);
      }
      function push(val) {
        rs.push(val);
        done(null);
      }
    }
    async function iteratorPeek(ite) {
      try {
        await ite.open();
        return await ite.next();
      } finally {
        await ite.close();
      }
    }
    function encRange(e, opts) {
      if (!e) return opts;
      if (e.encodeRange) {
        const r = e.encodeRange({
          gt: opts.gt,
          gte: opts.gte,
          lt: opts.lt,
          lte: opts.lte
        });
        opts.gt = r.gt;
        opts.gte = r.gte;
        opts.lt = r.lt;
        opts.lte = r.lte;
        return opts;
      }
      if (opts.gt !== void 0) opts.gt = enc(e, opts.gt);
      if (opts.gte !== void 0) opts.gte = enc(e, opts.gte);
      if (opts.lt !== void 0) opts.lt = enc(e, opts.lt);
      if (opts.lte !== void 0) opts.lte = enc(e, opts.lte);
      if (opts.sub && !opts.gt && !opts.gte) opts.gt = enc(e, SEP);
      if (opts.sub && !opts.lt && !opts.lte) opts.lt = bump(enc(e, EMPTY));
      return opts;
    }
    function bump(key) {
      key[key.length - 1]++;
      return key;
    }
    function enc(e, v) {
      if (v === void 0 || v === null) return null;
      if (e !== null) return e.encode(v);
      if (typeof v === "string") return b4a4.from(v);
      return v;
    }
    function prefixEncoding(prefix, keyEncoding) {
      return {
        encode(key) {
          return b4a4.concat([prefix, b4a4.isBuffer(key) ? key : enc(keyEncoding, key)]);
        },
        decode(key) {
          const sliced = key.slice(prefix.length, key.length);
          return keyEncoding ? keyEncoding.decode(sliced) : sliced;
        }
      };
    }
    function copyEntry(entry) {
      let key = entry.key;
      let value = entry.value;
      let index = entry.index;
      const size = key.byteLength + (value === null ? 0 : value.byteLength) + (index === null ? 0 : index.byteLength);
      if (2 * size < key.buffer.byteLength) {
        const [newKey, newValue, newIndex] = unslabAll([entry.key, entry.value, entry.index]);
        key = newKey;
        value = newValue;
        index = newIndex;
      }
      return {
        key,
        value,
        index,
        inflated: null
      };
    }
    function defaultDiffer(currentSnap, previousSnap, opts) {
      return currentSnap.createDiffStream(previousSnap, opts);
    }
    function toNull() {
      return null;
    }
    function getBackingCore(core) {
      if (core.core) return core;
      if (core.getBackingCore) return core.getBackingCore().session;
      return null;
    }
    function sameValue(a, b) {
      return a === b || a !== null && b !== null && b4a4.equals(a, b);
    }
    function noop() {
    }
    function getExtension(db, opts) {
      if (opts.extension === false) return null;
      if (opts.extension && opts.extension !== true) return opts.extension;
      return Extension.register(db);
    }
    async function isLinked(batch, block) {
      const seq = block.seq;
      block.inflate();
      const keys = [block.key];
      const wait = batch.options.wait;
      for (const l of block.index.levels) {
        if (!l.keys.length) continue;
        batch.options.wait = false;
        try {
          keys.push(await batch.getKey(l.keys[0].seq));
        } catch {
        }
        batch.options.wait = wait;
      }
      for (const k of keys) {
        if (await batch.links(k, seq)) return true;
      }
      if (batch.core.closing) throw new Error("Core is closed");
      return false;
    }
    module2.exports = Hyperbee;
  }
});

// node_modules/compact-encoding/endian.js
var require_endian = __commonJS({
  "node_modules/compact-encoding/endian.js"(exports2) {
    var LE = exports2.LE = new Uint8Array(new Uint16Array([255]).buffer)[0] === 255;
    exports2.BE = !LE;
  }
});

// node_modules/compact-encoding/raw.js
var require_raw = __commonJS({
  "node_modules/compact-encoding/raw.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var { BE } = require_endian();
    exports2 = module2.exports = {
      preencode(state, b) {
        state.end += b.byteLength;
      },
      encode(state, b) {
        state.buffer.set(b, state.start);
        state.start += b.byteLength;
      },
      decode(state) {
        const b = state.buffer.subarray(state.start, state.end);
        state.start = state.end;
        return b;
      }
    };
    var buffer = exports2.buffer = {
      preencode(state, b) {
        if (b) uint8array.preencode(state, b);
        else state.end++;
      },
      encode(state, b) {
        if (b) uint8array.encode(state, b);
        else state.buffer[state.start++] = 0;
      },
      decode(state) {
        const b = state.buffer.subarray(state.start);
        if (b.byteLength === 0) return null;
        state.start = state.end;
        return b;
      }
    };
    exports2.binary = {
      ...buffer,
      preencode(state, b) {
        if (typeof b === "string") utf8.preencode(state, b);
        else buffer.preencode(state, b);
      },
      encode(state, b) {
        if (typeof b === "string") utf8.encode(state, b);
        else buffer.encode(state, b);
      }
    };
    exports2.arraybuffer = {
      preencode(state, b) {
        state.end += b.byteLength;
      },
      encode(state, b) {
        const view = new Uint8Array(b);
        state.buffer.set(view, state.start);
        state.start += b.byteLength;
      },
      decode(state) {
        const b = new ArrayBuffer(state.end - state.start);
        const view = new Uint8Array(b);
        view.set(state.buffer.subarray(state.start));
        state.start = state.end;
        return b;
      }
    };
    function typedarray(TypedArray, swap) {
      const n = TypedArray.BYTES_PER_ELEMENT;
      return {
        preencode(state, b) {
          state.end += b.byteLength;
        },
        encode(state, b) {
          const view = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
          if (BE && swap) swap(view);
          state.buffer.set(view, state.start);
          state.start += b.byteLength;
        },
        decode(state) {
          let b = state.buffer.subarray(state.start);
          if (b.byteOffset % n !== 0) b = new Uint8Array(b);
          if (BE && swap) swap(b);
          state.start = state.end;
          return new TypedArray(b.buffer, b.byteOffset, b.byteLength / n);
        }
      };
    }
    var uint8array = exports2.uint8array = typedarray(Uint8Array);
    exports2.uint16array = typedarray(Uint16Array, b4a4.swap16);
    exports2.uint32array = typedarray(Uint32Array, b4a4.swap32);
    exports2.int8array = typedarray(Int8Array);
    exports2.int16array = typedarray(Int16Array, b4a4.swap16);
    exports2.int32array = typedarray(Int32Array, b4a4.swap32);
    exports2.biguint64array = typedarray(BigUint64Array, b4a4.swap64);
    exports2.bigint64array = typedarray(BigInt64Array, b4a4.swap64);
    exports2.float32array = typedarray(Float32Array, b4a4.swap32);
    exports2.float64array = typedarray(Float64Array, b4a4.swap64);
    function string(encoding) {
      return {
        preencode(state, s) {
          state.end += b4a4.byteLength(s, encoding);
        },
        encode(state, s) {
          state.start += b4a4.write(state.buffer, s, state.start, encoding);
        },
        decode(state) {
          const s = b4a4.toString(state.buffer, encoding, state.start);
          state.start = state.end;
          return s;
        }
      };
    }
    var utf8 = exports2.string = exports2.utf8 = string("utf-8");
    exports2.ascii = string("ascii");
    exports2.hex = string("hex");
    exports2.base64 = string("base64");
    exports2.ucs2 = exports2.utf16le = string("utf16le");
    exports2.array = function array(enc) {
      return {
        preencode(state, list) {
          for (const value of list) enc.preencode(state, value);
        },
        encode(state, list) {
          for (const value of list) enc.encode(state, value);
        },
        decode(state) {
          const arr = [];
          while (state.start < state.end) arr.push(enc.decode(state));
          return arr;
        }
      };
    };
    exports2.json = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v));
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v));
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
    exports2.ndjson = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v) + "\n");
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v) + "\n");
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
  }
});

// node_modules/compact-encoding/lexint.js
var require_lexint = __commonJS({
  "node_modules/compact-encoding/lexint.js"(exports2, module2) {
    module2.exports = {
      preencode,
      encode: encode2,
      decode: decode2
    };
    function preencode(state, num) {
      if (num < 251) {
        state.end++;
      } else if (num < 256) {
        state.end += 2;
      } else if (num < 65536) {
        state.end += 3;
      } else if (num < 16777216) {
        state.end += 4;
      } else if (num < 4294967296) {
        state.end += 5;
      } else {
        state.end++;
        const exp = Math.floor(Math.log(num) / Math.log(2)) - 32;
        preencode(state, exp);
        state.end += 6;
      }
    }
    function encode2(state, num) {
      const max = 251;
      const x = num - max;
      if (num < max) {
        state.buffer[state.start++] = num;
      } else if (num < 256) {
        state.buffer[state.start++] = max;
        state.buffer[state.start++] = x;
      } else if (num < 65536) {
        state.buffer[state.start++] = max + 1;
        state.buffer[state.start++] = x >> 8 & 255;
        state.buffer[state.start++] = x & 255;
      } else if (num < 16777216) {
        state.buffer[state.start++] = max + 2;
        state.buffer[state.start++] = x >> 16;
        state.buffer[state.start++] = x >> 8 & 255;
        state.buffer[state.start++] = x & 255;
      } else if (num < 4294967296) {
        state.buffer[state.start++] = max + 3;
        state.buffer[state.start++] = x >> 24;
        state.buffer[state.start++] = x >> 16 & 255;
        state.buffer[state.start++] = x >> 8 & 255;
        state.buffer[state.start++] = x & 255;
      } else {
        const exp = Math.floor(Math.log(x) / Math.log(2)) - 32;
        state.buffer[state.start++] = 255;
        encode2(state, exp);
        const rem = x / Math.pow(2, exp - 11);
        for (let i = 5; i >= 0; i--) {
          state.buffer[state.start++] = rem / Math.pow(2, 8 * i) & 255;
        }
      }
    }
    function decode2(state) {
      const max = 251;
      if (state.end - state.start < 1) throw new Error("Out of bounds");
      const flag = state.buffer[state.start++];
      if (flag < max) return flag;
      if (state.end - state.start < flag - max + 1) {
        throw new Error("Out of bounds.");
      }
      if (flag < 252) {
        return state.buffer[state.start++] + max;
      }
      if (flag < 253) {
        return (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max;
      }
      if (flag < 254) {
        return (state.buffer[state.start++] << 16) + (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max;
      }
      if (flag < 255) {
        return state.buffer[state.start++] * 16777216 + (state.buffer[state.start++] << 16) + (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max;
      }
      const exp = decode2(state);
      if (state.end - state.start < 6) throw new Error("Out of bounds");
      let rem = 0;
      for (let i = 5; i >= 0; i--) {
        rem += state.buffer[state.start++] * Math.pow(2, 8 * i);
      }
      return rem * Math.pow(2, exp - 11) + max;
    }
  }
});

// node_modules/compact-encoding/index.js
var require_compact_encoding = __commonJS({
  "node_modules/compact-encoding/index.js"(exports2) {
    var b4a4 = require_b4a();
    var { BE } = require_endian();
    exports2.state = function(start = 0, end = 0, buffer2 = null) {
      return { start, end, buffer: buffer2 };
    };
    var raw = exports2.raw = require_raw();
    var uint = exports2.uint = {
      preencode(state, n) {
        state.end += n <= 252 ? 1 : n <= 65535 ? 3 : n <= 4294967295 ? 5 : 9;
      },
      encode(state, n) {
        if (n <= 252) uint8.encode(state, n);
        else if (n <= 65535) {
          state.buffer[state.start++] = 253;
          uint16.encode(state, n);
        } else if (n <= 4294967295) {
          state.buffer[state.start++] = 254;
          uint32.encode(state, n);
        } else {
          state.buffer[state.start++] = 255;
          uint64.encode(state, n);
        }
      },
      decode(state) {
        const a = uint8.decode(state);
        if (a <= 252) return a;
        if (a === 253) return uint16.decode(state);
        if (a === 254) return uint32.decode(state);
        return uint64.decode(state);
      }
    };
    var uint8 = exports2.uint8 = {
      preencode(state, n) {
        state.end += 1;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
      },
      decode(state) {
        if (state.start >= state.end) throw new Error("Out of bounds");
        return state.buffer[state.start++];
      }
    };
    var uint16 = exports2.uint16 = {
      preencode(state, n) {
        state.end += 2;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
        state.buffer[state.start++] = n >>> 8;
      },
      decode(state) {
        if (state.end - state.start < 2) throw new Error("Out of bounds");
        return state.buffer[state.start++] + state.buffer[state.start++] * 256;
      }
    };
    var uint24 = exports2.uint24 = {
      preencode(state, n) {
        state.end += 3;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n >>> 16;
      },
      decode(state) {
        if (state.end - state.start < 3) throw new Error("Out of bounds");
        return state.buffer[state.start++] + state.buffer[state.start++] * 256 + state.buffer[state.start++] * 65536;
      }
    };
    var uint32 = exports2.uint32 = {
      preencode(state, n) {
        state.end += 4;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n >>> 16;
        state.buffer[state.start++] = n >>> 24;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        return state.buffer[state.start++] + state.buffer[state.start++] * 256 + state.buffer[state.start++] * 65536 + state.buffer[state.start++] * 16777216;
      }
    };
    var uint40 = exports2.uint40 = {
      preencode(state, n) {
        state.end += 5;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 256);
        uint8.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 5) throw new Error("Out of bounds");
        return uint8.decode(state) + 256 * uint32.decode(state);
      }
    };
    var uint48 = exports2.uint48 = {
      preencode(state, n) {
        state.end += 6;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 65536);
        uint16.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 6) throw new Error("Out of bounds");
        return uint16.decode(state) + 65536 * uint32.decode(state);
      }
    };
    var uint56 = exports2.uint56 = {
      preencode(state, n) {
        state.end += 7;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 16777216);
        uint24.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 7) throw new Error("Out of bounds");
        return uint24.decode(state) + 16777216 * uint32.decode(state);
      }
    };
    var uint64 = exports2.uint64 = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 4294967296);
        uint32.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        return uint32.decode(state) + 4294967296 * uint32.decode(state);
      }
    };
    var int = exports2.int = zigZagInt(uint);
    exports2.int8 = zigZagInt(uint8);
    exports2.int16 = zigZagInt(uint16);
    exports2.int24 = zigZagInt(uint24);
    exports2.int32 = zigZagInt(uint32);
    exports2.int40 = zigZagInt(uint40);
    exports2.int48 = zigZagInt(uint48);
    exports2.int56 = zigZagInt(uint56);
    exports2.int64 = zigZagInt(uint64);
    var biguint64 = exports2.biguint64 = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        view.setBigUint64(0, n, true);
        state.start += 8;
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        const n = view.getBigUint64(0, true);
        state.start += 8;
        return n;
      }
    };
    exports2.bigint64 = zigZagBigInt(biguint64);
    var biguint = exports2.biguint = {
      preencode(state, n) {
        let len = 0;
        for (let m = n; m; m = m >> 64n) len++;
        uint.preencode(state, len);
        state.end += 8 * len;
      },
      encode(state, n) {
        let len = 0;
        for (let m = n; m; m = m >> 64n) len++;
        uint.encode(state, len);
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8 * len
        );
        for (let m = n, i = 0; m; m = m >> 64n, i += 8) {
          view.setBigUint64(i, BigInt.asUintN(64, m), true);
        }
        state.start += 8 * len;
      },
      decode(state) {
        const len = uint.decode(state);
        if (state.end - state.start < 8 * len) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8 * len
        );
        let n = 0n;
        for (let i = len - 1; i >= 0; i--)
          n = (n << 64n) + view.getBigUint64(i * 8, true);
        state.start += 8 * len;
        return n;
      }
    };
    exports2.bigint = zigZagBigInt(biguint);
    exports2.lexint = require_lexint();
    exports2.float32 = {
      preencode(state, n) {
        state.end += 4;
      },
      encode(state, n) {
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          4
        );
        view.setFloat32(0, n, true);
        state.start += 4;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          4
        );
        const float = view.getFloat32(0, true);
        state.start += 4;
        return float;
      }
    };
    exports2.float64 = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        view.setFloat64(0, n, true);
        state.start += 8;
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        const float = view.getFloat64(0, true);
        state.start += 8;
        return float;
      }
    };
    var buffer = exports2.buffer = {
      preencode(state, b) {
        if (b) uint8array.preencode(state, b);
        else state.end++;
      },
      encode(state, b) {
        if (b) uint8array.encode(state, b);
        else state.buffer[state.start++] = 0;
      },
      decode(state) {
        const len = uint.decode(state);
        if (len === 0) return null;
        if (state.end - state.start < len) throw new Error("Out of bounds");
        return state.buffer.subarray(state.start, state.start += len);
      }
    };
    exports2.binary = {
      ...buffer,
      preencode(state, b) {
        if (typeof b === "string") utf8.preencode(state, b);
        else buffer.preencode(state, b);
      },
      encode(state, b) {
        if (typeof b === "string") utf8.encode(state, b);
        else buffer.encode(state, b);
      }
    };
    exports2.arraybuffer = {
      preencode(state, b) {
        uint.preencode(state, b.byteLength);
        state.end += b.byteLength;
      },
      encode(state, b) {
        uint.encode(state, b.byteLength);
        const view = new Uint8Array(b);
        state.buffer.set(view, state.start);
        state.start += b.byteLength;
      },
      decode(state) {
        const len = uint.decode(state);
        const b = new ArrayBuffer(len);
        const view = new Uint8Array(b);
        view.set(state.buffer.subarray(state.start, state.start += len));
        return b;
      }
    };
    function typedarray(TypedArray, swap) {
      const n = TypedArray.BYTES_PER_ELEMENT;
      return {
        preencode(state, b) {
          uint.preencode(state, b.length);
          state.end += b.byteLength;
        },
        encode(state, b) {
          uint.encode(state, b.length);
          const view = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
          if (BE && swap) swap(view);
          state.buffer.set(view, state.start);
          state.start += b.byteLength;
        },
        decode(state) {
          const len = uint.decode(state);
          let b = state.buffer.subarray(state.start, state.start += len * n);
          if (b.byteLength !== len * n) throw new Error("Out of bounds");
          if (b.byteOffset % n !== 0) b = new Uint8Array(b);
          if (BE && swap) swap(b);
          return new TypedArray(b.buffer, b.byteOffset, b.byteLength / n);
        }
      };
    }
    var uint8array = exports2.uint8array = typedarray(Uint8Array);
    exports2.uint16array = typedarray(Uint16Array, b4a4.swap16);
    exports2.uint32array = typedarray(Uint32Array, b4a4.swap32);
    exports2.int8array = typedarray(Int8Array);
    exports2.int16array = typedarray(Int16Array, b4a4.swap16);
    exports2.int32array = typedarray(Int32Array, b4a4.swap32);
    exports2.biguint64array = typedarray(BigUint64Array, b4a4.swap64);
    exports2.bigint64array = typedarray(BigInt64Array, b4a4.swap64);
    exports2.float32array = typedarray(Float32Array, b4a4.swap32);
    exports2.float64array = typedarray(Float64Array, b4a4.swap64);
    function string(encoding) {
      return {
        preencode(state, s) {
          const len = b4a4.byteLength(s, encoding);
          uint.preencode(state, len);
          state.end += len;
        },
        encode(state, s) {
          const len = b4a4.byteLength(s, encoding);
          uint.encode(state, len);
          b4a4.write(state.buffer, s, state.start, encoding);
          state.start += len;
        },
        decode(state) {
          const len = uint.decode(state);
          if (state.end - state.start < len) throw new Error("Out of bounds");
          return b4a4.toString(
            state.buffer,
            encoding,
            state.start,
            state.start += len
          );
        },
        fixed(n) {
          return {
            preencode(state) {
              state.end += n;
            },
            encode(state, s) {
              b4a4.write(state.buffer, s, state.start, n, encoding);
              state.start += n;
            },
            decode(state) {
              if (state.end - state.start < n) throw new Error("Out of bounds");
              return b4a4.toString(
                state.buffer,
                encoding,
                state.start,
                state.start += n
              );
            }
          };
        }
      };
    }
    var utf8 = exports2.string = exports2.utf8 = string("utf-8");
    exports2.ascii = string("ascii");
    exports2.hex = string("hex");
    exports2.base64 = string("base64");
    exports2.ucs2 = exports2.utf16le = string("utf16le");
    exports2.bool = {
      preencode(state, b) {
        state.end++;
      },
      encode(state, b) {
        state.buffer[state.start++] = b ? 1 : 0;
      },
      decode(state) {
        if (state.start >= state.end) throw Error("Out of bounds");
        return state.buffer[state.start++] === 1;
      }
    };
    var fixed = exports2.fixed = function fixed2(n) {
      return {
        preencode(state, s) {
          if (s.byteLength !== n) throw new Error("Incorrect buffer size");
          state.end += n;
        },
        encode(state, s) {
          state.buffer.set(s, state.start);
          state.start += n;
        },
        decode(state) {
          if (state.end - state.start < n) throw new Error("Out of bounds");
          return state.buffer.subarray(state.start, state.start += n);
        }
      };
    };
    exports2.fixed32 = fixed(32);
    exports2.fixed64 = fixed(64);
    exports2.array = function array(enc) {
      return {
        preencode(state, list) {
          uint.preencode(state, list.length);
          for (let i = 0; i < list.length; i++) enc.preencode(state, list[i]);
        },
        encode(state, list) {
          uint.encode(state, list.length);
          for (let i = 0; i < list.length; i++) enc.encode(state, list[i]);
        },
        decode(state) {
          const len = uint.decode(state);
          if (len > 1048576) throw new Error("Array is too big");
          const arr = new Array(len);
          for (let i = 0; i < len; i++) arr[i] = enc.decode(state);
          return arr;
        }
      };
    };
    exports2.frame = function frame(enc) {
      const dummy = exports2.state();
      return {
        preencode(state, m) {
          const end = state.end;
          enc.preencode(state, m);
          uint.preencode(state, state.end - end);
        },
        encode(state, m) {
          dummy.end = 0;
          enc.preencode(dummy, m);
          uint.encode(state, dummy.end);
          enc.encode(state, m);
        },
        decode(state) {
          const end = state.end;
          const len = uint.decode(state);
          state.end = state.start + len;
          const m = enc.decode(state);
          state.start = state.end;
          state.end = end;
          return m;
        }
      };
    };
    exports2.date = {
      preencode(state, d) {
        int.preencode(state, d.getTime());
      },
      encode(state, d) {
        int.encode(state, d.getTime());
      },
      decode(state, d) {
        return new Date(int.decode(state));
      }
    };
    exports2.json = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v));
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v));
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
    exports2.ndjson = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v) + "\n");
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v) + "\n");
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
    exports2.none = {
      preencode(state, n) {
      },
      encode(state, n) {
      },
      decode(state) {
        return null;
      }
    };
    var anyArray = {
      preencode(state, arr) {
        uint.preencode(state, arr.length);
        for (let i = 0; i < arr.length; i++) {
          any.preencode(state, arr[i]);
        }
      },
      encode(state, arr) {
        uint.encode(state, arr.length);
        for (let i = 0; i < arr.length; i++) {
          any.encode(state, arr[i]);
        }
      },
      decode(state) {
        const arr = [];
        let len = uint.decode(state);
        while (len-- > 0) {
          arr.push(any.decode(state));
        }
        return arr;
      }
    };
    var anyObject = {
      preencode(state, o) {
        const keys = Object.keys(o);
        uint.preencode(state, keys.length);
        for (const key of keys) {
          utf8.preencode(state, key);
          any.preencode(state, o[key]);
        }
      },
      encode(state, o) {
        const keys = Object.keys(o);
        uint.encode(state, keys.length);
        for (const key of keys) {
          utf8.encode(state, key);
          any.encode(state, o[key]);
        }
      },
      decode(state) {
        let len = uint.decode(state);
        const o = {};
        while (len-- > 0) {
          const key = utf8.decode(state);
          o[key] = any.decode(state);
        }
        return o;
      }
    };
    var anyTypes = [
      exports2.none,
      exports2.bool,
      exports2.string,
      exports2.buffer,
      exports2.uint,
      exports2.int,
      exports2.float64,
      anyArray,
      anyObject,
      exports2.date
    ];
    var any = exports2.any = {
      preencode(state, o) {
        const t = getType(o);
        uint.preencode(state, t);
        anyTypes[t].preencode(state, o);
      },
      encode(state, o) {
        const t = getType(o);
        uint.encode(state, t);
        anyTypes[t].encode(state, o);
      },
      decode(state) {
        const t = uint.decode(state);
        if (t >= anyTypes.length) throw new Error("Unknown type: " + t);
        return anyTypes[t].decode(state);
      }
    };
    var port = exports2.port = uint16;
    var address = (host, family) => {
      return {
        preencode(state, m) {
          host.preencode(state, m.host);
          port.preencode(state, m.port);
        },
        encode(state, m) {
          host.encode(state, m.host);
          port.encode(state, m.port);
        },
        decode(state) {
          return {
            host: host.decode(state),
            family,
            port: port.decode(state)
          };
        }
      };
    };
    var ipv4 = exports2.ipv4 = {
      preencode(state) {
        state.end += 4;
      },
      encode(state, string2) {
        const start = state.start;
        const end = start + 4;
        let i = 0;
        while (i < string2.length) {
          let n = 0;
          let c4;
          while (i < string2.length && (c4 = string2.charCodeAt(i++)) !== /* . */
          46) {
            n = n * 10 + (c4 - /* 0 */
            48);
          }
          state.buffer[state.start++] = n;
        }
        state.start = end;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        return state.buffer[state.start++] + "." + state.buffer[state.start++] + "." + state.buffer[state.start++] + "." + state.buffer[state.start++];
      }
    };
    exports2.ipv4Address = address(ipv4, 4);
    var ipv6 = exports2.ipv6 = {
      preencode(state) {
        state.end += 16;
      },
      encode(state, string2) {
        const start = state.start;
        const end = start + 16;
        let i = 0;
        let split2 = null;
        while (i < string2.length) {
          let n = 0;
          let c4;
          while (i < string2.length && (c4 = string2.charCodeAt(i++)) !== /* : */
          58) {
            if (c4 >= 48 && c4 <= 57) n = n * 16 + (c4 - /* 0 */
            48);
            else if (c4 >= 65 && c4 <= 70) n = n * 16 + (c4 - /* A */
            65 + 10);
            else if (c4 >= 97 && c4 <= 102) n = n * 16 + (c4 - /* a */
            97 + 10);
          }
          state.buffer[state.start++] = n >>> 8;
          state.buffer[state.start++] = n;
          if (i < string2.length && string2.charCodeAt(i) === /* : */
          58) {
            i++;
            split2 = state.start;
          }
        }
        if (split2 !== null) {
          const offset = end - state.start;
          state.buffer.copyWithin(split2 + offset, split2).fill(0, split2, split2 + offset);
        }
        state.start = end;
      },
      decode(state) {
        if (state.end - state.start < 16) throw new Error("Out of bounds");
        return (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16);
      }
    };
    exports2.ipv6Address = address(ipv6, 6);
    var ip = exports2.ip = {
      preencode(state, string2) {
        const family = string2.includes(":") ? 6 : 4;
        uint8.preencode(state, family);
        if (family === 4) ipv4.preencode(state);
        else ipv6.preencode(state);
      },
      encode(state, string2) {
        const family = string2.includes(":") ? 6 : 4;
        uint8.encode(state, family);
        if (family === 4) ipv4.encode(state, string2);
        else ipv6.encode(state, string2);
      },
      decode(state) {
        const family = uint8.decode(state);
        if (family === 4) return ipv4.decode(state);
        else return ipv6.decode(state);
      }
    };
    exports2.ipAddress = {
      preencode(state, m) {
        ip.preencode(state, m.host);
        port.preencode(state, m.port);
      },
      encode(state, m) {
        ip.encode(state, m.host);
        port.encode(state, m.port);
      },
      decode(state) {
        const family = uint8.decode(state);
        return {
          host: family === 4 ? ipv4.decode(state) : ipv6.decode(state),
          family,
          port: port.decode(state)
        };
      }
    };
    var record = exports2.record = function(keyEncoding, valueEncoding) {
      return {
        preencode(state, v) {
          const keys = Object.keys(v);
          uint.preencode(state, keys.length);
          for (const k of keys) {
            keyEncoding.preencode(state, k);
            valueEncoding.preencode(state, v[k]);
          }
        },
        encode(state, v) {
          const keys = Object.keys(v);
          uint.encode(state, keys.length);
          for (const k of keys) {
            keyEncoding.encode(state, k);
            valueEncoding.encode(state, v[k]);
          }
        },
        decode(state) {
          const out = /* @__PURE__ */ Object.create(null);
          const keys = uint.decode(state);
          for (let i = 0; i < keys; i++) {
            out[keyEncoding.decode(state)] = valueEncoding.decode(state);
          }
          return out;
        }
      };
    };
    exports2.stringRecord = record(utf8, utf8);
    function getType(o) {
      if (o === null || o === void 0) return 0;
      if (typeof o === "boolean") return 1;
      if (typeof o === "string") return 2;
      if (b4a4.isBuffer(o)) return 3;
      if (typeof o === "number") {
        if (Number.isInteger(o)) return o >= 0 ? 4 : 5;
        return 6;
      }
      if (Array.isArray(o)) return 7;
      if (o instanceof Date) return 9;
      if (typeof o === "object") return 8;
      throw new Error("Unsupported type for " + o);
    }
    exports2.from = function from(enc) {
      if (typeof enc === "string") return fromNamed(enc);
      if (enc.preencode) return enc;
      if (enc.encodingLength) return fromAbstractEncoder(enc);
      return fromCodec(enc);
    };
    function fromNamed(enc) {
      switch (enc) {
        case "ascii":
          return raw.ascii;
        case "utf-8":
        case "utf8":
          return raw.utf8;
        case "hex":
          return raw.hex;
        case "base64":
          return raw.base64;
        case "utf16-le":
        case "utf16le":
        case "ucs-2":
        case "ucs2":
          return raw.ucs2;
        case "ndjson":
          return raw.ndjson;
        case "json":
          return raw.json;
        case "binary":
        default:
          return raw.binary;
      }
    }
    function fromCodec(enc) {
      let tmpM = null;
      let tmpBuf = null;
      return {
        preencode(state, m) {
          tmpM = m;
          tmpBuf = enc.encode(m);
          state.end += tmpBuf.byteLength;
        },
        encode(state, m) {
          raw.encode(state, m === tmpM ? tmpBuf : enc.encode(m));
          tmpM = tmpBuf = null;
        },
        decode(state) {
          return enc.decode(raw.decode(state));
        }
      };
    }
    function fromAbstractEncoder(enc) {
      return {
        preencode(state, m) {
          state.end += enc.encodingLength(m);
        },
        encode(state, m) {
          enc.encode(m, state.buffer, state.start);
          state.start += enc.encode.bytes;
        },
        decode(state) {
          const m = enc.decode(state.buffer, state.start, state.end);
          state.start += enc.decode.bytes;
          return m;
        }
      };
    }
    exports2.encode = function encode2(enc, m) {
      const state = exports2.state();
      enc.preencode(state, m);
      state.buffer = b4a4.allocUnsafe(state.end);
      enc.encode(state, m);
      return state.buffer;
    };
    exports2.decode = function decode2(enc, buffer2) {
      return enc.decode(exports2.state(0, buffer2.byteLength, buffer2));
    };
    function zigZagInt(enc) {
      return {
        preencode(state, n) {
          enc.preencode(state, zigZagEncodeInt(n));
        },
        encode(state, n) {
          enc.encode(state, zigZagEncodeInt(n));
        },
        decode(state) {
          return zigZagDecodeInt(enc.decode(state));
        }
      };
    }
    function zigZagDecodeInt(n) {
      return n === 0 ? n : (n & 1) === 0 ? n / 2 : -(n + 1) / 2;
    }
    function zigZagEncodeInt(n) {
      return n < 0 ? 2 * -n - 1 : n === 0 ? 0 : 2 * n;
    }
    function zigZagBigInt(enc) {
      return {
        preencode(state, n) {
          enc.preencode(state, zigZagEncodeBigInt(n));
        },
        encode(state, n) {
          enc.encode(state, zigZagEncodeBigInt(n));
        },
        decode(state) {
          return zigZagDecodeBigInt(enc.decode(state));
        }
      };
    }
    function zigZagDecodeBigInt(n) {
      return n === 0n ? n : (n & 1n) === 0n ? n / 2n : -(n + 1n) / 2n;
    }
    function zigZagEncodeBigInt(n) {
      return n < 0n ? 2n * -n - 1n : n === 0n ? 0n : 2n * n;
    }
    function validateUint(n) {
      if (n >= 0 === false)
        throw new Error("uint must be positive");
    }
  }
});

// node_modules/refcounter/index.js
var require_refcounter = __commonJS({
  "node_modules/refcounter/index.js"(exports2, module2) {
    module2.exports = class RefCounter {
      constructor() {
        this.count = 0;
        this._onidle = null;
        this._idle = null;
      }
      isIdle() {
        return this.count === 0;
      }
      idle() {
        if (this.count === 0) return Promise.resolve();
        if (this._idle !== null) return this._idle;
        this._idle = new Promise((resolve) => {
          this._onidle = resolve;
        });
        return this._idle;
      }
      inc() {
        this.count++;
      }
      dec() {
        if (--this.count > 0) return;
        if (this._onidle !== null) {
          const resolve = this._onidle;
          this._idle = null;
          this._onidle = null;
          resolve();
        }
      }
    };
  }
});

// node_modules/hyperdb/lib/engine/bee.js
var require_bee = __commonJS({
  "node_modules/hyperdb/lib/engine/bee.js"(exports2, module2) {
    var HyperBee = require_hyperbee();
    var ScopeLock = require_scope_lock();
    var { Readable, getStreamError } = require_streamx();
    var c4 = require_compact_encoding();
    var RefCounter = require_refcounter();
    var Sessions = require_sessions();
    var BeeSnapshot = class {
      constructor(snap, onfree) {
        this.refs = 1;
        this.snapshot = snap;
        this.opened = false;
        this.onfree = onfree;
      }
      async ready() {
        await this.snapshot.ready();
        this.opened = true;
      }
      ref() {
        this.refs++;
        return this;
      }
      unref() {
        if (--this.refs === 0) {
          this.snapshot.close().then(this.onfree, this.onfree);
          this.snapshot = null;
        }
      }
      cork() {
      }
      uncork() {
      }
      getIndirectRange(reconstruct, entries, checkout, reqs) {
        const promises = new Array(entries.length);
        for (let i = 0; i < promises.length; i++) {
          const { key, value } = entries[i];
          promises[i] = getWrapped(this.snapshot, key, reconstruct(key, value), checkout, reqs);
        }
        return promises;
      }
      getBatch(keys, checkout, reqs) {
        const promises = new Array(keys.length);
        for (let i = 0; i < keys.length; i++) {
          promises[i] = getValue(this.snapshot, keys[i], checkout, reqs);
        }
        return Promise.all(promises);
      }
      get(key, checkout, reqs) {
        return getValue(this.snapshot, key, checkout, reqs);
      }
      createReadStream(range, options) {
        return this.snapshot.createReadStream(range, options);
      }
    };
    var ChangesStream = class extends Readable {
      constructor(db, versions, definition, range) {
        super();
        this.db = db;
        this.versions = versions;
        this.definition = definition;
        this.stream = null;
        this.collectionsById = /* @__PURE__ */ new Map();
        this.range = range;
        for (const c5 of this.definition.collections) this.collectionsById.set(c5.id, c5);
      }
      _open(cb) {
        this.stream = this.db.createHistoryStream(this.range);
        this.stream.on("readable", this._ondrain.bind(this));
        this.stream.on("error", noop);
        this.stream.on("close", this._onclose.bind(this));
        cb(null);
      }
      _ondrain() {
        while (Readable.isBackpressured(this) === false) {
          const data = this.stream.read();
          if (data === null) break;
          const id = c4.uint.decode({ start: 0, end: data.key.byteLength, buffer: data.key });
          const coll = this.collectionsById.get(id);
          if (coll === void 0) continue;
          if (data.type === "put") {
            const doc = coll.reconstruct(this.versions.schema, data.key, data.value);
            this.push({ type: "insert", seq: data.seq, collection: coll.name, value: doc });
          } else {
            const key = coll.reconstructKey(data.key);
            this.push({ type: "delete", seq: data.seq, collection: coll.name, value: key });
          }
        }
      }
      _onclose() {
        const err = getStreamError(this.stream, { all: true });
        if (err === null) this.push(null);
        else this.destroy(err);
      }
      _read(cb) {
        this._ondrain();
        cb(null);
      }
      _destroy(cb) {
        this.stream.destroy();
        cb(null);
      }
    };
    module2.exports = class BeeEngine {
      constructor(core, { extension, trace } = {}) {
        this.asap = true;
        this.clock = 0;
        this.core = core;
        this.sessions = new Sessions();
        this.trace = trace;
        this.snaps = new RefCounter();
        this.db = new HyperBee(core, {
          extension,
          keyEncoding: "binary",
          valueEncoding: "binary"
        });
        this.tx = null;
        this.lock = new ScopeLock();
        this._freeSnapBound = this.snaps.dec.bind(this.snaps);
      }
      get closed() {
        return this.db.closed;
      }
      ready() {
        return this.db.ready();
      }
      async close() {
        while (!this.snaps.isIdle()) await this.snaps.idle();
        await this.db.close();
      }
      enter() {
        return this.lock.lock();
      }
      exit() {
        this.tx = null;
        this.lock.unlock();
      }
      finalize(collection, versions, checkout, tracing, key, value) {
        if (value === null) return null;
        const reconstructed = collection.reconstruct(versions.schema, key, value);
        if (this.trace && tracing) this.trace(collection.name, reconstructed, checkout);
        return reconstructed;
      }
      changes(snapshot, versions, definition, range) {
        const db = snapshot === null ? this.db : snapshot.snapshot;
        return new ChangesStream(db, versions, definition, range);
      }
      snapshot() {
        this.snaps.inc();
        return new BeeSnapshot(this.db.snapshot(), this._freeSnapBound);
      }
      outdated(snap) {
        return snap === null || this.core.length !== snap.snapshot.core.length || this.core.fork !== snap.snapshot.core.fork;
      }
      async commit(updates) {
        this.clock++;
        let i = 0;
        const entries = updates.batch();
        const batch = this.db.batch({ maxBlocksCached: entries.length * 2 });
        for (; i < entries.length; i++) {
          const [key, value] = entries[i];
          if (value !== null) await batch.put(key, value);
          else await batch.del(key);
        }
        await batch.flush();
      }
      clearRequests(reqs) {
        if (!reqs.length) return;
        this.core.core.replicator.clearRequests(reqs, null);
      }
    };
    async function getWrapped(db, key, value, checkout, reqs) {
      return { key, value: [value, await getValue(db, value, checkout, reqs)] };
    }
    async function getValue(db, key, checkout, activeRequests) {
      const node = await db.get(key, { checkout, activeRequests });
      return node === null ? null : node.value;
    }
    function noop() {
    }
  }
});

// node_modules/hyperdb/index.js
var require_hyperdb = __commonJS({
  "node_modules/hyperdb/index.js"(exports2, module2) {
    var IndexStream = require_stream();
    var def = require_definition();
    var b4a4 = require_b4a();
    var RocksEngine = require_rocks();
    var BeeEngine = require_bee();
    var compareHasDups = false;
    var Updates = class _Updates {
      constructor(tick, entries) {
        this.refs = 1;
        this.mutating = 0;
        this.tick = tick;
        this.map = new Map(entries);
        this.locks = /* @__PURE__ */ new Map();
      }
      get size() {
        return this.map.size;
      }
      nextTick() {
        return this.tick++;
      }
      enter(collection) {
        if (collection.trigger !== null) {
          if (this.locks.has(collection.id)) return false;
          this.locks.set(collection.id, { resolve: null, promise: null });
        }
        this.mutating++;
        return true;
      }
      exit(collection) {
        this.mutating--;
        if (collection.trigger === null) return;
        const { resolve } = this.locks.get(collection.id);
        this.locks.delete(collection.id);
        if (resolve) resolve();
      }
      wait(collection) {
        const state = this.locks.get(collection.id);
        if (state.promise) return state.promise;
        state.promise = new Promise((resolve) => {
          state.resolve = resolve;
        });
        return state.promise;
      }
      ref() {
        this.refs++;
        return this;
      }
      unref() {
        this.refs--;
      }
      detach() {
        const entries = new Array(this.map.size);
        if (entries.length > 0) {
          let i = 0;
          for (const [key, u] of this.map) {
            const clone = {
              created: u.created,
              tick: u.tick,
              collection: u.collection,
              key: u.key,
              value: u.value,
              indexes: u.indexes.slice(0)
            };
            entries[i++] = [key, clone];
          }
        }
        this.refs--;
        return new _Updates(this.tick, entries);
      }
      get(key) {
        const u = this.map.get(b4a4.toString(key, "hex"));
        return u === void 0 ? null : u;
      }
      getIndex(index, key) {
        if (this.map.size === 0 || index.offset === -1) return null;
        const matches = [];
        for (const u of this.map.values()) {
          if (u.collection.id !== index.collection.id) continue;
          const ups = u.indexes[index.offset];
          for (let i = 0; i < ups.length; i++) {
            if (b4a4.equals(key, ups[i].key)) matches.push(u);
          }
        }
        if (!matches.length) return null;
        let latest = matches[0];
        for (let i = 1; i < matches.length; i++) {
          const m = matches[i];
          if (m.tick > latest.tick) latest = m;
        }
        return latest;
      }
      flush() {
        this.map.clear();
      }
      update(collection, tick, key, value) {
        const u = {
          created: false,
          tick,
          collection,
          key,
          value,
          indexes: []
        };
        this.map.set(b4a4.toString(key, "hex"), u);
        return u;
      }
      delete(key) {
        this.map.delete(b4a4.toString(key, "hex"));
      }
      batch() {
        const ordered = new Array(this.map.size);
        let sort = false;
        let i = 0;
        for (const u of this.map.values()) {
          if (i > 0 && u.tick < ordered[i - 1].tick) sort = true;
          ordered[i++] = u;
        }
        if (sort) ordered.sort(sortUpdates);
        const dedup = ordered.length > 1 ? /* @__PURE__ */ new Set() : null;
        const batch = [];
        for (let i2 = ordered.length - 1; i2 >= 0; i2--) {
          const u = ordered[i2];
          for (let j = 0; j < u.indexes.length; j++) {
            const idx = u.indexes[j];
            for (let k = 0; k < idx.length; k++) {
              const { key, value } = idx[k];
              if (dedup !== null) {
                const id = b4a4.toString(key, "hex");
                if (dedup.has(id)) continue;
                dedup.add(id);
              }
              batch.push([key, value]);
            }
          }
          batch.push([u.key, u.value]);
        }
        return batch;
      }
      collectionOverlay(collection, range, reverse) {
        const overlay = [];
        if (this.map.size === 0) return overlay;
        for (const u of this.map.values()) {
          if (u.collection.id !== collection.id) continue;
          if (withinRange(range, u.key)) {
            overlay.push({
              tick: u.tick,
              key: u.key,
              value: u.value === null ? null : [u.key, u.value]
            });
          }
        }
        return sortOverlay(overlay, reverse);
      }
      indexOverlay(index, range, reverse) {
        const overlay = [];
        if (this.map.size === 0 || index.offset === -1) return overlay;
        const collection = index.collection;
        for (const u of this.map.values()) {
          if (u.collection.id !== collection.id) continue;
          for (const { key, value } of u.indexes[index.offset]) {
            if (withinRange(range, key)) {
              overlay.push({
                tick: u.tick,
                key,
                value: value === null ? null : [u.key, u.value]
              });
            }
          }
        }
        return sortOverlay(overlay, reverse);
      }
    };
    var HyperDB2 = class _HyperDB {
      constructor(engine, definition, {
        versions = definition.versions,
        snapshot = engine.snapshot(),
        updates = new Updates(0, []),
        rootInstance = null,
        writable = true,
        context = null
      } = {}) {
        this.versions = versions;
        this.context = context;
        this.index = 0;
        this.engine = engine;
        this.engineSnapshot = snapshot;
        this.definition = definition;
        this.updates = updates;
        this.rootInstance = writable === true ? rootInstance || this : null;
        this.watchers = null;
        this.closing = null;
        this.activeRequests = [];
        this.engine.sessions.add(this);
      }
      static isDefinition(definition) {
        return def.isDefinition(definition);
      }
      static rocks(storage, definition, options = {}) {
        const readOnly = options.readOnly === true || options.readonly === true;
        const trace = options.trace || null;
        const engine = new RocksEngine(storage, { readOnly, trace });
        return new _HyperDB(engine, def.compat(definition), options);
      }
      static bee(core, definition, options = {}) {
        const extension = options.extension;
        const autoUpdate = !!options.autoUpdate;
        const trace = options.trace || null;
        const engine = new BeeEngine(core, { extension, trace });
        const db = new _HyperDB(engine, def.compat(definition), options);
        if (autoUpdate) {
          const update = db.update.bind(db);
          core.on("append", update);
          core.on("truncate", update);
        }
        return db;
      }
      get core() {
        return this.engine.core;
      }
      get db() {
        return this.engine.db;
      }
      get closed() {
        return this.engine === null;
      }
      get writable() {
        return this.rootInstance !== null;
      }
      get traceable() {
        return this.rootInstance === this || this.rootInstance === null;
      }
      get readable() {
        return this.closing !== null;
      }
      get autoClose() {
        return this.rootInstance !== null && this.rootInstance !== this;
      }
      setVersions(versions) {
        this.versions = versions;
      }
      setDefinition(definition) {
        definition = def.compat(definition);
        this.versions = definition.versions;
        this.definition = definition;
      }
      cork() {
        if (this.engineSnapshot !== null) this.engineSnapshot.cork();
      }
      uncork() {
        if (this.engineSnapshot !== null) this.engineSnapshot.uncork();
      }
      ready() {
        return this.engineSnapshot === null ? Promise.resolve() : this.engineSnapshot.ready();
      }
      close() {
        if (this.closing === null) this.closing = this._close();
        return this.closing;
      }
      changes(range = {}) {
        maybeClosed(this);
        const snap = range.live ? null : this.engineSnapshot;
        return this.engine.changes(snap, this.versions, this.definition, range);
      }
      watch(fn) {
        if (this.watchers === null) this.watchers = /* @__PURE__ */ new Set();
        this.watchers.add(fn);
      }
      unwatch(fn) {
        if (this.watchers === null) return;
        this.watchers.delete(fn);
      }
      async _close() {
        this.engine.clearRequests(this.activeRequests);
        this.updates.unref();
        this.updates = null;
        this.engineSnapshot.unref();
        this.engineSnapshot = null;
        if (this.rootInstance === this) {
          await this.engine.sessions.close(this);
        }
        this.engine.sessions.remove(this);
        if (this.engine.tx === this) this.engine.exit();
        if (this.engine.sessions.size === 0) await this.engine.close();
        this.engine = null;
      }
      _createSnapshot(rootInstance, writable, context) {
        const snapshot = this.engineSnapshot.ref();
        return new _HyperDB(this.engine, this.definition, {
          versions: this.versions,
          snapshot,
          updates: this.updates.ref(),
          rootInstance,
          writable,
          context
        });
      }
      snapshot(options) {
        maybeClosed(this);
        const context = options && options.context || this.context;
        return this._createSnapshot(this, false, context);
      }
      // in future major, lets move transaction to be exclusive (aka sync) always
      async exclusiveTransaction(options) {
        await this.engine.enter();
        if (this.closing) {
          this.engine.exit();
          maybeClosed(this);
        }
        this.engine.tx = this.transaction(options);
        return this.engine.tx;
      }
      transaction(options) {
        maybeClosed(this);
        if (this.rootInstance !== this) {
          throw new Error("Can only make transactions on main instance");
        }
        const context = options && options.context || this.context;
        const tx = this._createSnapshot(this, true, context);
        tx.update();
        return tx;
      }
      find(indexName, query = {}, options) {
        if (options) query = { ...query, ...options };
        maybeClosed(this);
        const index = this.definition.resolveIndex(indexName);
        const collection = index === null ? this.definition.resolveCollection(indexName) : index.collection;
        if (collection === null) throw new Error("Unknown index: " + indexName);
        const { checkout = -1, limit, reverse = false } = query;
        const range = index === null ? collection.encodeKeyRange(query) : index.encodeKeyRange(query);
        const overlay = checkout !== -1 ? [] : index === null ? this.updates.collectionOverlay(collection, range, reverse) : this.updates.indexOverlay(index, range, reverse);
        return new IndexStream(this, range, {
          index,
          collection,
          reverse,
          limit,
          overlay,
          checkout
        });
      }
      async findOne(indexName, query, options) {
        return this.find(indexName, query, { ...options, limit: 1 }).one();
      }
      updated(collectionName, record) {
        if (this.updates === null) return false;
        if (!collectionName) return this.updates.size > 0;
        const collection = this.definition.resolveCollection(collectionName);
        if (collection === null) return false;
        const key = b4a4.isBuffer(record) ? record : collection.encodeKey(record);
        const u = this.updates.get(key);
        return u !== null;
      }
      getAll(batch) {
        const promises = [];
        for (const b of batch) {
          if (Array.isArray(b)) promises.push(this.get(...b));
          else promises.push(b);
        }
        return Promise.all(promises);
      }
      async get(collectionName, record, { checkout = -1 } = {}) {
        maybeClosed(this);
        const snap = this.engineSnapshot.ref();
        try {
          const collection = this.definition.resolveCollection(collectionName);
          if (collection !== null) return await this._getCollection(collection, snap, record, checkout);
          const index = this.definition.resolveIndex(collectionName);
          if (index === null) throw new Error("Unknown index or collection: " + collectionName);
          const key = index.encodeKey(record, this.context);
          if (key === null) return null;
          const u = this.updates.getIndex(index, key);
          if (u !== null && checkout === -1) {
            return u.value === null ? null : index.collection.reconstruct(this.versions.schema, u.key, u.value);
          }
          const value = await snap.get(key, checkout, this.activeRequests);
          if (value === null) return null;
          return this._getCollection(index.collection, snap, index.reconstruct(key, value), checkout);
        } finally {
          if (snap !== null) snap.unref();
        }
      }
      async _getCollection(collection, snap, record, checkout) {
        maybeClosed(this);
        const key = b4a4.isBuffer(record) ? record : collection.encodeKey(record);
        const u = this.updates.get(key);
        const value = u !== null && checkout === -1 ? u.value : await snap.get(key, checkout, this.activeRequests);
        maybeClosed(this);
        return this.engine.finalize(collection, this.versions, checkout, this.traceable, key, value);
      }
      // TODO: needs to wait for pending inserts/deletes and then lock all future ones whilst it runs
      _runTrigger(collection, key, record) {
        return collection.trigger(this, key, record, this.context);
      }
      async delete(collectionName, record) {
        maybeClosed(this);
        if (this.updates.refs > 1) this.updates = this.updates.detach();
        const collection = this.definition.resolveCollection(collectionName);
        if (collection === null) return;
        const tick = this.updates.nextTick();
        while (this.updates.enter(collection) === false) await this.updates.wait(collection);
        const snap = this.engineSnapshot.ref();
        const key = collection.encodeKey(record);
        let prevValue = null;
        try {
          prevValue = await this.engineSnapshot.get(key, -1, this.activeRequests);
          if (collection.trigger !== null) await this._runTrigger(collection, record, null);
          if (prevValue === null) {
            this.updates.delete(key);
            return;
          }
          const prevDoc = collection.reconstruct(this.versions.schema, key, prevValue);
          const prevVersion = collection.decodedVersion;
          const u = this.updates.update(collection, tick, key, null);
          for (let i = 0; i < collection.indexes.length; i++) {
            const idx = collection.indexes[i];
            if (idx.version > prevVersion) continue;
            const del = idx.encodeIndexKeys(prevDoc, this.context);
            const ups = [];
            u.indexes.push(ups);
            for (let j = 0; j < del.length; j++) ups.push({ key: del[j], value: null });
          }
        } finally {
          snap.unref();
          this.updates.exit(collection);
        }
      }
      async insert(collectionName, record) {
        maybeClosed(this);
        if (this.updates.refs > 1) this.updates = this.updates.detach();
        const collection = this.definition.resolveCollection(collectionName);
        if (collection === null) throw new Error("Unknown collection: " + collectionName);
        const tick = this.updates.nextTick();
        while (this.updates.enter(collection) === false) await this.updates.wait(collection);
        const snap = this.engineSnapshot.ref();
        const key = collection.encodeKey(record);
        const collectionVersion = Math.min(this.versions.db, collection.version);
        const value = collection.encodeValue(this.versions.schema, collectionVersion, record);
        let prevValue = null;
        try {
          prevValue = await this.engineSnapshot.get(key, -1, this.activeRequests);
          if (collection.trigger !== null) await this._runTrigger(collection, record, record);
          const prevDoc = prevValue === null ? null : collection.reconstruct(this.versions.schema, key, prevValue);
          const prevVersion = prevDoc ? collection.decodedVersion : -1;
          if (prevValue !== null && prevVersion === collectionVersion && b4a4.equals(value, prevValue)) {
            this.updates.delete(key);
            return;
          }
          const u = this.updates.update(collection, tick, key, value);
          u.created = prevValue === null;
          for (let i = 0; i < collection.indexes.length; i++) {
            const idx = collection.indexes[i];
            const prevKeys = idx.version <= prevVersion ? idx.encodeIndexKeys(prevDoc, this.context) : [];
            const nextKeys = idx.encodeIndexKeys(record, this.context);
            const ups = [];
            u.indexes.push(ups);
            const [del, put] = diffKeys(prevKeys, nextKeys);
            const value2 = put.length === 0 ? null : idx.encodeValue(record);
            for (let j = 0; j < del.length; j++) ups.push({ key: del[j], value: null });
            for (let j = 0; j < put.length; j++) ups.push({ key: put[j], value: value2 });
          }
        } finally {
          snap.unref();
          this.updates.exit(collection);
        }
      }
      async insertAll(batch) {
        const promises = [];
        for (const [collection, record, opts] of batch) {
          if (opts && opts.type === "delete") {
            promises.push(this.delete(collection, record));
          } else {
            promises.push(this.insert(collection, record));
          }
        }
        await Promise.all(promises);
      }
      update() {
        maybeClosed(this);
        if (!this.engine.outdated(this.engineSnapshot)) return;
        if (this.updates.refs > 1) this.updates = this.updates.detach();
        this.updates.flush();
        this.engineSnapshot.unref();
        this.engineSnapshot = this.engine.snapshot();
        if (this.watchers !== null) {
          for (const fn of this.watchers) fn();
        }
      }
      async _flush() {
        if (this.engine.outdated(this.engineSnapshot)) {
          throw new Error("Database has changed, refusing to commit");
        }
        if (this.updates.refs > 1) this.updates = this.updates.detach();
        await this.engine.commit(this.updates);
        this.update();
        if (this.rootInstance !== this && this.rootInstance.updates.size === 0) {
          this.rootInstance.update();
        }
      }
      async flush() {
        maybeClosed(this);
        if (this.engineSnapshot.opened === false) await this.engineSnapshot.ready();
        if (this.updating > 0) throw new Error("Insert/delete in progress, refusing to commit");
        if (this.rootInstance === null) throw new Error("Instance is not writable, refusing to commit");
        if (this.updates.size > 0) await this._flush();
        if (this.autoClose === true) await this.close();
      }
    };
    function maybeClosed(db) {
      if (db.closing !== null) throw new Error("Hyperdb is closed");
    }
    function withinRange(range, key) {
      if (range.gte && b4a4.compare(range.gte, key) > 0) return false;
      if (range.gt && b4a4.compare(range.gt, key) >= 0) return false;
      if (range.lte && b4a4.compare(range.lte, key) < 0) return false;
      if (range.lt && b4a4.compare(range.lt, key) <= 0) return false;
      return true;
    }
    function sortKeys(a, b) {
      return b4a4.compare(a, b);
    }
    function sortUpdates(a, b) {
      return a.tick - b.tick;
    }
    function compareOverlay(a, b) {
      const c4 = b4a4.compare(a.key, b.key);
      if (c4 !== 0) return c4;
      compareHasDups = true;
      return b.tick - a.tick;
    }
    function reverseCompareOverlay(a, b) {
      const c4 = b4a4.compare(b.key, a.key);
      if (c4 !== 0) return c4;
      compareHasDups = true;
      return b.tick - a.tick;
    }
    function diffKeys(a, b) {
      if (a.length === 0 || b.length === 0) return [a, b];
      if (a.length === 1 && b.length === 1) {
        return b4a4.equals(a[0], b[0]) ? [[], []] : [a, b];
      }
      a.sort(sortKeys);
      b.sort(sortKeys);
      const res = [[], []];
      let ai = 0;
      let bi = 0;
      while (true) {
        if (ai < a.length && bi < b.length) {
          const cmp = b4a4.compare(a[ai], b[bi]);
          if (cmp === 0) {
            ai++;
            bi++;
          } else if (cmp < 0) {
            res[0].push(a[ai++]);
          } else {
            res[1].push(b[bi++]);
          }
          continue;
        }
        if (ai < a.length) res[0].push(a[ai++]);
        else if (bi < b.length) res[1].push(b[bi++]);
        else break;
      }
      return res;
    }
    function stripDups(overlay) {
      let j = 0;
      for (let i = 0; i < overlay.length; i++) {
        const a = overlay[i];
        overlay[j++] = a;
        while (i + 1 < overlay.length && b4a4.equals(a.key, overlay[i + 1].key)) i++;
      }
      overlay.length = j;
    }
    function sortOverlay(overlay, reverse) {
      compareHasDups = false;
      overlay.sort(reverse ? reverseCompareOverlay : compareOverlay);
      if (compareHasDups === true) stripDups(overlay);
      return overlay;
    }
    module2.exports = HyperDB2;
  }
});

// node_modules/nanoassert/index.js
var require_nanoassert = __commonJS({
  "node_modules/nanoassert/index.js"(exports2, module2) {
    module2.exports = assert2;
    var AssertionError = class extends Error {
    };
    AssertionError.prototype.name = "AssertionError";
    function assert2(t, m) {
      if (!t) {
        var err = new AssertionError(m);
        if (Error.captureStackTrace) Error.captureStackTrace(err, assert2);
        throw err;
      }
    }
  }
});

// node_modules/signal-promise/index.js
var require_signal_promise = __commonJS({
  "node_modules/signal-promise/index.js"(exports2, module2) {
    module2.exports = class Signal {
      constructor() {
        this._resolve = null;
        this._reject = null;
        this._promise = null;
        this._bind = bind.bind(this);
        this._onerror = clear.bind(this);
        this._onsuccess = clear.bind(this, null);
        this._timers = /* @__PURE__ */ new Set();
      }
      wait(max) {
        if (!this._promise) {
          this._promise = new Promise(this._bind);
          this._promise.then(this._onsuccess).catch(this._onerror);
        }
        if (max) return this._sleep(max);
        return this._promise;
      }
      _sleep(max) {
        const s = new Promise((resolve, reject) => {
          const done = () => {
            this._timers.delete(state);
            resolve(true);
          };
          const id = setTimeout(done, max);
          const state = { id, resolve, reject };
          this._timers.add(state);
        });
        return s;
      }
      notify(err) {
        if (!this._promise) return;
        const resolve = this._resolve;
        const reject = this._reject;
        this._promise = null;
        if (err) reject(err);
        else resolve(true);
      }
    };
    function clear(err) {
      for (const { id, resolve, reject } of this._timers) {
        clearTimeout(id);
        if (err) reject(err);
        else resolve(true);
      }
      this._timers.clear();
    }
    function bind(resolve, reject) {
      this._resolve = resolve;
      this._reject = reject;
    }
  }
});

// node_modules/core-coupler/index.js
var require_core_coupler = __commonJS({
  "node_modules/core-coupler/index.js"(exports2, module2) {
    var safetyCatch = require_safety_catch();
    module2.exports = class CoreCoupler {
      constructor(target, wakeup) {
        this.target = target;
        this.wakeup = wakeup;
        this.coupled = /* @__PURE__ */ new Set();
        this._onpeeraddBound = this._onpeeradd.bind(this);
        this.target.on("peer-add", this._onpeeraddBound);
      }
      add(core) {
        const added = this.coupled.size;
        this.coupled.add(core);
        if (added !== this.coupled.size) this._couple(core);
      }
      remove(core) {
        this.coupled.delete(core);
      }
      destroy() {
        this.target.off("peer-add", this._onpeeraddBound);
      }
      async update(stream) {
        const muxer = stream.userData;
        if (!muxer) return;
        try {
          if (!await this._hasMuxer(this.target, muxer)) return;
          let wakeup = null;
          for (const core of this.coupled) {
            if (await this._hasMuxer(core, muxer)) continue;
            if (wakeup === null) wakeup = [];
            wakeup.push(core);
          }
          if (wakeup !== null) {
            this.wakeup(stream, wakeup);
          }
        } catch (err) {
          safetyCatch(err);
        }
      }
      async _couple(core) {
        try {
          let wakeup = null;
          for (const peer of this.target.peers) {
            if (await this._hasPeer(core, peer)) continue;
            if (wakeup === null) wakeup = [];
            wakeup.push(peer);
          }
          if (wakeup !== null && this.coupled.has(core)) {
            for (const peer of wakeup) this.wakeup(peer.stream, [core]);
          }
        } catch (err) {
          safetyCatch(err);
        }
      }
      async _onpeeradd(peer) {
        try {
          let wakeup = null;
          for (const core of this.coupled) {
            if (await this._hasPeer(core, peer)) continue;
            if (wakeup === null) wakeup = [];
            wakeup.push(core);
          }
          if (wakeup !== null) {
            this.wakeup(peer.stream, wakeup);
          }
        } catch (err) {
          safetyCatch(err);
        }
      }
      _hasMuxer(core, muxer) {
        const ch = muxer.getLastChannel({ protocol: "hypercore", id: core.discoveryKey });
        if (ch) return ch.fullyOpened();
        const cha = muxer.getLastChannel({ protocol: "hypercore/alpha", id: core.discoveryKey });
        if (cha) return cha.fullyOpened();
        return Promise.resolve(false);
      }
      _hasPeer(core, peer) {
        return this._hasMuxer(core, peer.protomux);
      }
    };
  }
});

// node_modules/sodium-universal/index.js
var require_sodium_universal = __commonJS({
  "node_modules/sodium-universal/index.js"(exports2, module2) {
    module2.exports = require("sodium-native");
  }
});

// node_modules/hypercore-crypto/index.js
var require_hypercore_crypto = __commonJS({
  "node_modules/hypercore-crypto/index.js"(exports2) {
    var sodium = require_sodium_universal();
    var c4 = require_compact_encoding();
    var b4a4 = require_b4a();
    var LEAF_TYPE = b4a4.from([0]);
    var PARENT_TYPE = b4a4.from([1]);
    var ROOT_TYPE = b4a4.from([2]);
    var HYPERCORE = b4a4.from("hypercore");
    exports2.keyPair = function(seed) {
      const slab = b4a4.allocUnsafeSlow(sodium.crypto_sign_PUBLICKEYBYTES + sodium.crypto_sign_SECRETKEYBYTES);
      const publicKey = slab.subarray(0, sodium.crypto_sign_PUBLICKEYBYTES);
      const secretKey = slab.subarray(sodium.crypto_sign_PUBLICKEYBYTES);
      if (seed) sodium.crypto_sign_seed_keypair(publicKey, secretKey, seed);
      else sodium.crypto_sign_keypair(publicKey, secretKey);
      return {
        publicKey,
        secretKey
      };
    };
    exports2.validateKeyPair = function(keyPair) {
      const pk = b4a4.allocUnsafe(sodium.crypto_sign_PUBLICKEYBYTES);
      sodium.crypto_sign_ed25519_sk_to_pk(pk, keyPair.secretKey);
      return b4a4.equals(pk, keyPair.publicKey);
    };
    exports2.sign = function(message, secretKey) {
      const signature = b4a4.allocUnsafeSlow(sodium.crypto_sign_BYTES);
      sodium.crypto_sign_detached(signature, message, secretKey);
      return signature;
    };
    exports2.verify = function(message, signature, publicKey) {
      if (signature.byteLength !== sodium.crypto_sign_BYTES) return false;
      if (publicKey.byteLength !== sodium.crypto_sign_PUBLICKEYBYTES) return false;
      return sodium.crypto_sign_verify_detached(signature, message, publicKey);
    };
    exports2.encrypt = function(message, publicKey) {
      const ciphertext = b4a4.alloc(message.byteLength + sodium.crypto_box_SEALBYTES);
      sodium.crypto_box_seal(ciphertext, message, publicKey);
      return ciphertext;
    };
    exports2.decrypt = function(ciphertext, keyPair) {
      if (ciphertext.byteLength < sodium.crypto_box_SEALBYTES) return null;
      const plaintext = b4a4.alloc(ciphertext.byteLength - sodium.crypto_box_SEALBYTES);
      if (!sodium.crypto_box_seal_open(plaintext, ciphertext, keyPair.publicKey, keyPair.secretKey)) {
        return null;
      }
      return plaintext;
    };
    exports2.encryptionKeyPair = function(seed) {
      const publicKey = b4a4.alloc(sodium.crypto_box_PUBLICKEYBYTES);
      const secretKey = b4a4.alloc(sodium.crypto_box_SECRETKEYBYTES);
      if (seed) {
        sodium.crypto_box_seed_keypair(publicKey, secretKey, seed);
      } else {
        sodium.crypto_box_keypair(publicKey, secretKey);
      }
      return {
        publicKey,
        secretKey
      };
    };
    exports2.data = function(data) {
      const out = b4a4.allocUnsafe(32);
      sodium.crypto_generichash_batch(out, [
        LEAF_TYPE,
        c4.encode(c4.uint64, data.byteLength),
        data
      ]);
      return out;
    };
    exports2.parent = function(a, b) {
      if (a.index > b.index) {
        const tmp = a;
        a = b;
        b = tmp;
      }
      const out = b4a4.allocUnsafe(32);
      sodium.crypto_generichash_batch(out, [
        PARENT_TYPE,
        c4.encode(c4.uint64, a.size + b.size),
        a.hash,
        b.hash
      ]);
      return out;
    };
    exports2.tree = function(roots, out) {
      const buffers = new Array(3 * roots.length + 1);
      let j = 0;
      buffers[j++] = ROOT_TYPE;
      for (let i = 0; i < roots.length; i++) {
        const r = roots[i];
        buffers[j++] = r.hash;
        buffers[j++] = c4.encode(c4.uint64, r.index);
        buffers[j++] = c4.encode(c4.uint64, r.size);
      }
      if (!out) out = b4a4.allocUnsafe(32);
      sodium.crypto_generichash_batch(out, buffers);
      return out;
    };
    exports2.hash = function(data, out) {
      if (!out) out = b4a4.allocUnsafe(32);
      if (!Array.isArray(data)) data = [data];
      sodium.crypto_generichash_batch(out, data);
      return out;
    };
    exports2.randomBytes = function(n) {
      const buf = b4a4.allocUnsafe(n);
      sodium.randombytes_buf(buf);
      return buf;
    };
    exports2.discoveryKey = function(key) {
      if (!key || key.byteLength !== 32) throw new Error("Must pass a 32 byte buffer");
      const digest = b4a4.allocUnsafeSlow(32);
      sodium.crypto_generichash(digest, HYPERCORE, key);
      return digest;
    };
    if (sodium.sodium_free) {
      exports2.free = function(secureBuf) {
        if (secureBuf.secure) sodium.sodium_free(secureBuf);
      };
    } else {
      exports2.free = function() {
      };
    }
    exports2.namespace = function(name, count) {
      const ids = typeof count === "number" ? range(count) : count;
      const buf = b4a4.allocUnsafeSlow(32 * ids.length);
      const list = new Array(ids.length);
      const ns = b4a4.allocUnsafe(33);
      sodium.crypto_generichash(ns.subarray(0, 32), typeof name === "string" ? b4a4.from(name) : name);
      for (let i = 0; i < list.length; i++) {
        list[i] = buf.subarray(32 * i, 32 * i + 32);
        ns[32] = ids[i];
        sodium.crypto_generichash(list[i], ns);
      }
      return list;
    };
    function range(count) {
      const arr = new Array(count);
      for (let i = 0; i < count; i++) arr[i] = i;
      return arr;
    }
  }
});

// node_modules/protomux/index.js
var require_protomux = __commonJS({
  "node_modules/protomux/index.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var c4 = require_compact_encoding();
    var queueTick = require_process_next_tick();
    var safetyCatch = require_safety_catch();
    var unslab = require_unslab();
    var MAX_BUFFERED = 32768;
    var MAX_BACKLOG = Infinity;
    var MAX_BATCH = 8 * 1024 * 1024;
    var Channel = class {
      constructor(mux, info, userData, protocol, aliases, id, handshake, messages, onopen, onclose, ondestroy, ondrain) {
        this.userData = userData;
        this.protocol = protocol;
        this.aliases = aliases;
        this.id = id;
        this.handshake = null;
        this.messages = [];
        this.opened = false;
        this.closed = false;
        this.destroyed = false;
        this.onopen = onopen;
        this.onclose = onclose;
        this.ondestroy = ondestroy;
        this.ondrain = ondrain;
        this._handshake = handshake;
        this._mux = mux;
        this._info = info;
        this._localId = 0;
        this._remoteId = 0;
        this._active = 0;
        this._extensions = null;
        this._decBound = this._dec.bind(this);
        this._decAndDestroyBound = this._decAndDestroy.bind(this);
        this._openedPromise = null;
        this._openedResolve = null;
        this._destroyedPromise = null;
        this._destroyedResolve = null;
        for (const m of messages) this.addMessage(m);
      }
      get drained() {
        return this._mux.drained;
      }
      fullyOpened() {
        if (this.opened) return Promise.resolve(true);
        if (this.closed) return Promise.resolve(false);
        if (this._openedPromise) return this._openedPromise;
        this._openedPromise = new Promise((resolve) => {
          this._openedResolve = resolve;
        });
        return this._openedPromise;
      }
      fullyClosed() {
        if (this.destroyed) return Promise.resolve();
        if (this._destroyedPromise) return this._destroyedPromise;
        this._destroyedPromise = new Promise((resolve) => {
          this._destroyedResolve = resolve;
        });
        return this._destroyedPromise;
      }
      open(handshake) {
        const id = this._mux._free.length > 0 ? this._mux._free.pop() : this._mux._local.push(null) - 1;
        this._info.opened++;
        this._info.lastChannel = this;
        this._localId = id + 1;
        this._mux._local[id] = this;
        if (this._remoteId === 0) {
          this._info.outgoing.push(this._localId);
        }
        const state = { buffer: null, start: 2, end: 2 };
        c4.uint.preencode(state, this._localId);
        c4.string.preencode(state, this.protocol);
        c4.buffer.preencode(state, this.id);
        if (this._handshake) this._handshake.preencode(state, handshake);
        state.buffer = this._mux._alloc(state.end);
        state.buffer[0] = 0;
        state.buffer[1] = 1;
        c4.uint.encode(state, this._localId);
        c4.string.encode(state, this.protocol);
        c4.buffer.encode(state, this.id);
        if (this._handshake) this._handshake.encode(state, handshake);
        this._mux._write0(state.buffer);
      }
      _dec() {
        if (--this._active === 0 && this.closed === true) this._destroy();
      }
      _decAndDestroy(err) {
        this._dec();
        this._mux._safeDestroy(err);
      }
      _fullyOpenSoon() {
        this._mux._remote[this._remoteId - 1].session = this;
        queueTick(this._fullyOpen.bind(this));
      }
      _fullyOpen() {
        if (this.opened === true || this.closed === true) return;
        const remote = this._mux._remote[this._remoteId - 1];
        this.opened = true;
        this.handshake = this._handshake ? this._handshake.decode(remote.state) : null;
        this._track(this.onopen(this.handshake, this));
        remote.session = this;
        remote.state = null;
        if (remote.pending !== null) this._drain(remote);
        this._resolveOpen(true);
      }
      _resolveOpen(opened) {
        if (this._openedResolve !== null) {
          this._openedResolve(opened);
          this._openedResolve = this._openedPromise = null;
        }
      }
      _resolveDestroyed() {
        if (this._destroyedResolve !== null) {
          this._destroyedResolve();
          this._destroyedResolve = this._destroyedPromise = null;
        }
      }
      _drain(remote) {
        for (let i = 0; i < remote.pending.length; i++) {
          const p = remote.pending[i];
          this._mux._buffered -= byteSize(p.state);
          this._recv(p.type, p.state);
        }
        remote.pending = null;
        this._mux._resumeMaybe();
      }
      _track(p) {
        if (isPromise(p) === true) {
          this._active++;
          return p.then(this._decBound, this._decAndDestroyBound);
        }
        return null;
      }
      _close(isRemote) {
        if (this.closed === true) return;
        this.closed = true;
        this._info.opened--;
        if (this._info.lastChannel === this) this._info.lastChannel = null;
        if (this._remoteId > 0) {
          this._mux._remote[this._remoteId - 1] = null;
          this._remoteId = 0;
          this._mux._free.push(this._localId - 1);
        }
        this._mux._local[this._localId - 1] = null;
        this._localId = 0;
        this._mux._gc(this._info);
        this._track(this.onclose(isRemote, this));
        if (this._active === 0) this._destroy();
        this._resolveOpen(false);
      }
      _destroy() {
        if (this.destroyed === true) return;
        this.destroyed = true;
        this._track(this.ondestroy(this));
        this._resolveDestroyed();
      }
      _recv(type, state) {
        if (type < this.messages.length) {
          const m = this.messages[type];
          const p = m.recv(state, this);
          if (m.autoBatch === true) return p;
        }
        return null;
      }
      cork() {
        this._mux.cork();
      }
      uncork() {
        this._mux.uncork();
      }
      close() {
        if (this.closed === true) return;
        const state = { buffer: null, start: 2, end: 2 };
        c4.uint.preencode(state, this._localId);
        state.buffer = this._mux._alloc(state.end);
        state.buffer[0] = 0;
        state.buffer[1] = 3;
        c4.uint.encode(state, this._localId);
        this._close(false);
        this._mux._write0(state.buffer);
      }
      addMessage(opts) {
        if (!opts) return this._skipMessage();
        const type = this.messages.length;
        const autoBatch = opts.autoBatch !== false;
        const encoding = opts.encoding || c4.raw;
        const onmessage = opts.onmessage || noop;
        const s = this;
        const typeLen = encodingLength(c4.uint, type);
        const m = {
          type,
          autoBatch,
          encoding,
          onmessage,
          recv(state, session) {
            return session._track(m.onmessage(encoding.decode(state), session));
          },
          send(m2, session = s) {
            if (session.closed === true) return false;
            const mux = session._mux;
            const state = { buffer: null, start: 0, end: typeLen };
            if (mux._batch !== null) {
              encoding.preencode(state, m2);
              state.buffer = mux._alloc(state.end);
              c4.uint.encode(state, type);
              encoding.encode(state, m2);
              mux._pushBatch(session._localId, state.buffer);
              return true;
            }
            c4.uint.preencode(state, session._localId);
            encoding.preencode(state, m2);
            state.buffer = mux._alloc(state.end);
            c4.uint.encode(state, session._localId);
            c4.uint.encode(state, type);
            encoding.encode(state, m2);
            mux.drained = mux.stream.write(state.buffer);
            return mux.drained;
          }
        };
        this.messages.push(m);
        return m;
      }
      _skipMessage() {
        const type = this.messages.length;
        const m = {
          type,
          encoding: c4.raw,
          onmessage: noop,
          recv(state, session) {
          },
          send(m2, session) {
          }
        };
        this.messages.push(m);
        return m;
      }
    };
    module2.exports = class Protomux {
      constructor(stream, { alloc } = {}) {
        if (stream.userData === null) stream.userData = this;
        this.isProtomux = true;
        this.stream = stream;
        this.corked = 0;
        this.drained = true;
        this._alloc = alloc || (typeof stream.alloc === "function" ? stream.alloc.bind(stream) : b4a4.allocUnsafe);
        this._safeDestroyBound = this._safeDestroy.bind(this);
        this._uncorkBound = this.uncork.bind(this);
        this._remoteBacklog = 0;
        this._buffered = 0;
        this._paused = false;
        this._remote = [];
        this._local = [];
        this._free = [];
        this._batch = null;
        this._batchState = null;
        this._infos = /* @__PURE__ */ new Map();
        this._notify = /* @__PURE__ */ new Map();
        this.stream.on("data", this._ondata.bind(this));
        this.stream.on("drain", this._ondrain.bind(this));
        this.stream.on("end", this._onend.bind(this));
        this.stream.on("error", noop);
        this.stream.on("close", this._shutdown.bind(this));
      }
      static from(stream, opts) {
        if (stream.userData && stream.userData.isProtomux) return stream.userData;
        if (stream.isProtomux) return stream;
        return new this(stream, opts);
      }
      static isProtomux(mux) {
        return typeof mux === "object" && mux.isProtomux === true;
      }
      *[Symbol.iterator]() {
        for (const session of this._local) {
          if (session !== null) yield session;
        }
      }
      isIdle() {
        return this._local.length === this._free.length;
      }
      cork() {
        if (++this.corked === 1) {
          this._batch = [];
          this._batchState = { buffer: null, start: 0, end: 1 };
        }
      }
      uncork() {
        if (--this.corked === 0) {
          this._sendBatch(this._batch, this._batchState);
          this._batch = null;
          this._batchState = null;
        }
      }
      getLastChannel({ protocol, id = null }) {
        const key = toKey(protocol, id);
        const info = this._infos.get(key);
        if (info) return info.lastChannel;
        return null;
      }
      pair({ protocol, id = null }, notify) {
        this._notify.set(toKey(protocol, id), notify);
      }
      unpair({ protocol, id = null }) {
        this._notify.delete(toKey(protocol, id));
      }
      opened({ protocol, id = null }) {
        const key = toKey(protocol, id);
        const info = this._infos.get(key);
        return info ? info.opened > 0 : false;
      }
      createChannel({ userData = null, protocol, aliases = [], id = null, unique = true, handshake = null, messages = [], onopen = noop, onclose = noop, ondestroy = noop, ondrain = noop }) {
        if (this.stream.destroyed) return null;
        const info = this._get(protocol, id, aliases);
        if (unique && info.opened > 0) return null;
        if (info.incoming.length === 0) {
          return new Channel(this, info, userData, protocol, aliases, id, handshake, messages, onopen, onclose, ondestroy, ondrain);
        }
        this._remoteBacklog--;
        const remoteId = info.incoming.shift();
        const r = this._remote[remoteId - 1];
        if (r === null) return null;
        const session = new Channel(this, info, userData, protocol, aliases, id, handshake, messages, onopen, onclose, ondestroy, ondrain);
        session._remoteId = remoteId;
        session._fullyOpenSoon();
        return session;
      }
      _pushBatch(localId, buffer) {
        if (this._batchState.end >= MAX_BATCH) {
          this._sendBatch(this._batch, this._batchState);
          this._batch = [];
          this._batchState = { buffer: null, start: 0, end: 1 };
        }
        if (this._batch.length === 0 || this._batch[this._batch.length - 1].localId !== localId) {
          this._batchState.end++;
          c4.uint.preencode(this._batchState, localId);
        }
        c4.buffer.preencode(this._batchState, buffer);
        this._batch.push({ localId, buffer });
      }
      _sendBatch(batch, state) {
        if (batch.length === 0) return;
        let prev = batch[0].localId;
        state.buffer = this._alloc(state.end);
        state.buffer[state.start++] = 0;
        state.buffer[state.start++] = 0;
        c4.uint.encode(state, prev);
        for (let i = 0; i < batch.length; i++) {
          const b = batch[i];
          if (prev !== b.localId) {
            state.buffer[state.start++] = 0;
            c4.uint.encode(state, prev = b.localId);
          }
          c4.buffer.encode(state, b.buffer);
        }
        this.drained = this.stream.write(state.buffer);
      }
      _get(protocol, id, aliases = []) {
        const key = toKey(protocol, id);
        let info = this._infos.get(key);
        if (info) return info;
        info = { key, protocol, aliases: [], id, pairing: 0, opened: 0, incoming: [], outgoing: [], lastChannel: null };
        this._infos.set(key, info);
        for (const alias of aliases) {
          const key2 = toKey(alias, id);
          info.aliases.push(key2);
          this._infos.set(key2, info);
        }
        return info;
      }
      _gc(info) {
        if (info.opened === 0 && info.outgoing.length === 0 && info.incoming.length === 0) {
          this._infos.delete(info.key);
          for (const alias of info.aliases) this._infos.delete(alias);
        }
      }
      _ondata(buffer) {
        if (buffer.byteLength === 0) return;
        try {
          const state = { buffer, start: 0, end: buffer.byteLength };
          this._decode(c4.uint.decode(state), state);
        } catch (err) {
          this._safeDestroy(err);
        }
      }
      _ondrain() {
        this.drained = true;
        for (const s of this._local) {
          if (s !== null) s._track(s.ondrain(s));
        }
      }
      _onend() {
        this.stream.end();
      }
      _decode(remoteId, state) {
        const type = c4.uint.decode(state);
        if (remoteId === 0) {
          return this._oncontrolsession(type, state);
        }
        const r = remoteId <= this._remote.length ? this._remote[remoteId - 1] : null;
        if (r === null) return null;
        if (r.pending !== null) {
          this._bufferMessage(r, type, state);
          return null;
        }
        return r.session._recv(type, state);
      }
      _oncontrolsession(type, state) {
        switch (type) {
          case 0:
            this._onbatch(state);
            break;
          case 1:
            return this._onopensession(state);
          case 2:
            this._onrejectsession(state);
            break;
          case 3:
            this._onclosesession(state);
            break;
        }
        return null;
      }
      _bufferMessage(r, type, { buffer, start, end }) {
        const state = { buffer, start, end };
        r.pending.push({ type, state });
        this._buffered += byteSize(state);
        this._pauseMaybe();
      }
      _pauseMaybe() {
        if (this._paused === true || this._buffered <= MAX_BUFFERED) return;
        this._paused = true;
        this.stream.pause();
      }
      _resumeMaybe() {
        if (this._paused === false || this._buffered > MAX_BUFFERED) return;
        this._paused = false;
        this.stream.resume();
      }
      _onbatch(state) {
        const end = state.end;
        let remoteId = c4.uint.decode(state);
        let waiting = null;
        while (state.end > state.start) {
          const len = c4.uint.decode(state);
          if (len === 0) {
            remoteId = c4.uint.decode(state);
            continue;
          }
          state.end = state.start + len;
          if (end !== state.end && waiting === null) {
            waiting = [];
            this.cork();
          }
          const p = this._decode(remoteId, state);
          if (waiting !== null && p !== null) waiting.push(p);
          state.start = state.end;
          state.end = end;
        }
        if (waiting !== null) {
          Promise.all(waiting).then(this._uncorkBound, this._safeDestroyBound);
        }
      }
      _onopensession(state) {
        const remoteId = c4.uint.decode(state);
        const protocol = c4.string.decode(state);
        const id = unslab(c4.buffer.decode(state));
        if (remoteId === 0) {
          this._rejectSession(0);
          return null;
        }
        const rid = remoteId - 1;
        const info = this._get(protocol, id);
        if (this._remote.length === rid) {
          this._remote.push(null);
        }
        if (rid >= this._remote.length || this._remote[rid] !== null) {
          throw new Error("Invalid open message");
        }
        if (info.outgoing.length > 0) {
          const localId = info.outgoing.shift();
          const session = this._local[localId - 1];
          if (session === null) {
            this._free.push(localId - 1);
            return null;
          }
          this._remote[rid] = { state, pending: null, session: null };
          session._remoteId = remoteId;
          session._fullyOpen();
          return null;
        }
        const copyState = { buffer: state.buffer, start: state.start, end: state.end };
        this._remote[rid] = { state: copyState, pending: [], session: null };
        if (++this._remoteBacklog > MAX_BACKLOG) {
          throw new Error("Remote exceeded backlog");
        }
        info.pairing++;
        info.incoming.push(remoteId);
        return this._requestSession(protocol, id, info).catch(this._safeDestroyBound);
      }
      _onrejectsession(state) {
        const localId = c4.uint.decode(state);
        for (const info of this._infos.values()) {
          const i = info.outgoing.indexOf(localId);
          if (i === -1) continue;
          info.outgoing.splice(i, 1);
          const session = this._local[localId - 1];
          this._free.push(localId - 1);
          if (session !== null) session._close(true);
          this._gc(info);
          return;
        }
        throw new Error("Invalid reject message");
      }
      _onclosesession(state) {
        const remoteId = c4.uint.decode(state);
        if (remoteId === 0) return;
        const rid = remoteId - 1;
        const r = rid < this._remote.length ? this._remote[rid] : null;
        if (r === null) return;
        if (r.session !== null) r.session._close(true);
      }
      async _requestSession(protocol, id, info) {
        const notify = this._notify.get(toKey(protocol, id)) || this._notify.get(toKey(protocol, null));
        if (notify) await notify(id);
        if (--info.pairing > 0) return;
        while (info.incoming.length > 0) {
          this._rejectSession(info, info.incoming.shift());
        }
        this._gc(info);
      }
      _rejectSession(info, remoteId) {
        if (remoteId > 0) {
          const r = this._remote[remoteId - 1];
          if (r.pending !== null) {
            for (let i = 0; i < r.pending.length; i++) {
              this._buffered -= byteSize(r.pending[i].state);
            }
          }
          this._remote[remoteId - 1] = null;
          this._resumeMaybe();
        }
        const state = { buffer: null, start: 2, end: 2 };
        c4.uint.preencode(state, remoteId);
        state.buffer = this._alloc(state.end);
        state.buffer[0] = 0;
        state.buffer[1] = 2;
        c4.uint.encode(state, remoteId);
        this._write0(state.buffer);
      }
      _write0(buffer) {
        if (this._batch !== null) {
          this._pushBatch(0, buffer.subarray(1));
          return;
        }
        this.drained = this.stream.write(buffer);
      }
      destroy(err) {
        this.stream.destroy(err);
      }
      _safeDestroy(err) {
        safetyCatch(err);
        this.stream.destroy(err);
      }
      _shutdown() {
        for (const s of this._local) {
          if (s !== null) s._close(true);
        }
      }
    };
    function noop() {
    }
    function toKey(protocol, id) {
      return protocol + "##" + (id ? b4a4.toString(id, "hex") : "");
    }
    function byteSize(state) {
      return 512 + (state.end - state.start);
    }
    function isPromise(p) {
      return !!(p && typeof p.then === "function");
    }
    function encodingLength(enc, val) {
      const state = { buffer: null, start: 0, end: 0 };
      enc.preencode(state, val);
      return state.end;
    }
  }
});

// node_modules/hyperschema/runtime.cjs
var require_runtime = __commonJS({
  "node_modules/hyperschema/runtime.cjs"(exports2, module2) {
    module2.exports = {
      c: require_compact_encoding()
    };
  }
});

// node_modules/protomux-wakeup/spec/hyperschema/index.js
var require_hyperschema = __commonJS({
  "node_modules/protomux-wakeup/spec/hyperschema/index.js"(exports2, module2) {
    var VERSION3 = 1;
    var { c: c4 } = require_runtime();
    var version3 = VERSION3;
    var encoding03 = {
      preencode(state, m) {
        state.end++;
      },
      encode(state, m) {
        const flags = m.active ? 1 : 0;
        c4.uint.encode(state, flags);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          active: (flags & 1) !== 0
        };
      }
    };
    var encoding110 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.version);
        c4.fixed32.preencode(state, m.capability);
        state.end++;
      },
      encode(state, m) {
        const flags = m.active ? 1 : 0;
        c4.uint.encode(state, m.version);
        c4.fixed32.encode(state, m.capability);
        c4.uint.encode(state, flags);
      },
      decode(state) {
        const r0 = c4.uint.decode(state);
        const r1 = c4.fixed32.decode(state);
        const flags = c4.uint.decode(state);
        return {
          version: r0,
          capability: r1,
          active: (flags & 1) !== 0
        };
      }
    };
    var encoding23 = {
      preencode(state, m) {
        c4.fixed32.preencode(state, m.key);
        c4.uint.preencode(state, m.length);
      },
      encode(state, m) {
        c4.fixed32.encode(state, m.key);
        c4.uint.encode(state, m.length);
      },
      decode(state) {
        const r0 = c4.fixed32.decode(state);
        const r1 = c4.uint.decode(state);
        return {
          key: r0,
          length: r1
        };
      }
    };
    var encoding33 = c4.array(encoding23);
    var encoding43 = {
      preencode(state, m) {
        state.end++;
        if (m.hash) c4.fixed32.preencode(state, m.hash);
      },
      encode(state, m) {
        const flags = m.hash ? 1 : 0;
        c4.uint.encode(state, flags);
        if (m.hash) c4.fixed32.encode(state, m.hash);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          hash: (flags & 1) !== 0 ? c4.fixed32.decode(state) : null
        };
      }
    };
    function setVersion3(v) {
      version3 = v;
    }
    function encode2(name, value, v = VERSION3) {
      version3 = v;
      return c4.encode(getEncoding3(name), value);
    }
    function decode2(name, buffer, v = VERSION3) {
      version3 = v;
      return c4.decode(getEncoding3(name), buffer);
    }
    function getEnum(name) {
      switch (name) {
        default:
          throw new Error("Enum not found " + name);
      }
    }
    function getEncoding3(name) {
      switch (name) {
        case "@wakeup/info":
          return encoding03;
        case "@wakeup/handshake":
          return encoding110;
        case "@wakeup/writer":
          return encoding23;
        case "@wakeup/announce":
          return encoding33;
        case "@wakeup/lookup":
          return encoding43;
        default:
          throw new Error("Encoder not found " + name);
      }
    }
    function getStruct(name, v = VERSION3) {
      const enc = getEncoding3(name);
      return {
        preencode(state, m) {
          version3 = v;
          enc.preencode(state, m);
        },
        encode(state, m) {
          version3 = v;
          enc.encode(state, m);
        },
        decode(state) {
          version3 = v;
          return enc.decode(state);
        }
      };
    }
    var resolveStruct = getStruct;
    module2.exports = {
      resolveStruct,
      getStruct,
      getEnum,
      getEncoding: getEncoding3,
      encode: encode2,
      decode: decode2,
      setVersion: setVersion3,
      version: version3
    };
  }
});

// node_modules/protomux-wakeup/index.js
var require_protomux_wakeup = __commonJS({
  "node_modules/protomux-wakeup/index.js"(exports2, module2) {
    var crypto = require_hypercore_crypto();
    var Protomux = require_protomux();
    var b4a4 = require_b4a();
    var schema = require_hyperschema();
    var [NS_INITATOR, NS_RESPONDER] = crypto.namespace("wakeup", 2);
    var Handshake = schema.getEncoding("@wakeup/handshake");
    var Announce = schema.getEncoding("@wakeup/announce");
    var Lookup = schema.getEncoding("@wakeup/lookup");
    var Info = schema.getEncoding("@wakeup/info");
    module2.exports = class WakeupSwarm {
      constructor(onwakeup = noop, { gcTickTime = 2e3 } = {}) {
        this.gcTickTime = gcTickTime;
        this.topics = /* @__PURE__ */ new Map();
        this.topicsGC = /* @__PURE__ */ new Set();
        this.muxers = /* @__PURE__ */ new Set();
        this.stats = {
          sessionsOpened: 0,
          sessionsClosed: 0,
          topicsAdded: 0,
          topicsGcd: 0,
          peersAdded: 0,
          peersRemoved: 0,
          wireAnnounce: { rx: 0, tx: 0 },
          wireLookup: { rx: 0, tx: 0 },
          wireInfo: { rx: 0, tx: 0 }
        };
        this.onwakeup = onwakeup;
        this._gcInterval = null;
        this._gcBound = this._gc.bind(this);
      }
      session(capability, handlers = {}) {
        const id = handlers.discoveryKey || crypto.discoveryKey(capability);
        const active = handlers.active !== false;
        const hex = b4a4.toString(id, "hex");
        let w = this.topics.get(hex);
        if (w) return w.addSession(handlers);
        w = new WakeupTopic(this, id, capability, active);
        this.topics.set(hex, w);
        for (const muxer of this.muxers) {
          w._onopen(muxer, true);
        }
        return w.addSession(handlers);
      }
      getSessions(capability, handlers = {}) {
        const id = handlers.discoveryKey || crypto.discoveryKey(capability);
        const hex = b4a4.toString(id, "hex");
        const w = this.topics.get(hex);
        return w ? w.sessions : [];
      }
      hasStream(stream, capability, handlers = {}) {
        if (!capability) {
          const noiseStream = stream.noiseStream || stream;
          return this.muxers.has(getMuxer(noiseStream));
        }
        const id = handlers.discoveryKey || crypto.discoveryKey(capability);
        const hex = b4a4.toString(id, "hex");
        const t = this.topics.get(hex);
        return t ? t.peersByStream.has(stream) : false;
      }
      addStream(stream) {
        const noiseStream = stream.noiseStream || stream;
        if (!noiseStream.connected) {
          noiseStream.once("open", this.addStream.bind(this, noiseStream));
          return;
        }
        const muxer = getMuxer(noiseStream);
        muxer.pair({ protocol: "wakeup" }, (id) => this._onpair(id, muxer));
        this.muxers.add(muxer);
        noiseStream.on("close", () => this.muxers.delete(muxer));
        for (const w of this.topics.values()) {
          if (!w.isActive) continue;
          w._onopen(muxer, true);
        }
      }
      _onActive(w) {
        for (const m of this.muxers) {
          w._onopen(m, false);
        }
      }
      _addGC(topic) {
        if (topic.destroyed) return;
        this.topicsGC.add(topic);
        if (this._gcInterval === null) {
          this._gcInterval = setInterval(this._gcBound, this.gcTickTime);
        }
      }
      _removeGC(topic) {
        this.topicsGC.delete(topic);
        if (this.topicsGC.size === 0 && this._gcInterval) {
          clearInterval(this._gcInterval);
          this._gcInterval = null;
        }
      }
      _gc() {
        const destroy = [];
        for (const w of this.topicsGC) {
          w.idleTicks++;
          if (w.idleTicks >= 5) destroy.push(w);
        }
        for (const w of destroy) w.teardown();
      }
      destroy() {
        if (this._gcInterval) clearInterval(this._gcInterval);
        this._gcInterval = null;
        for (const w of this.topics.values()) w.teardown();
      }
      async _onpair(id, stream) {
        const hex = b4a4.toString(id, "hex");
        const w = this.topics.get(hex);
        if (!w || !w.sessions.length) return this.onwakeup(id, stream);
        w._onopen(getMuxer(stream), false);
      }
      registerMetrics(promClient) {
        const self = this;
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_sessions_opened",
          help: "The amount of sessions opened by protomux wakeup",
          collect() {
            this.set(self.stats.sessionsOpened);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_sessions_closed",
          help: "The amount of sessions closed by protomux wakeup",
          collect() {
            this.set(self.stats.sessionsClosed);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_topics_added",
          help: "The amount of topics added to protomux wakeup",
          collect() {
            this.set(self.stats.topicsAdded);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_topics_gcd",
          help: "The amount of topics that got garbage collected by protomux wakeup",
          collect() {
            this.set(self.stats.topicsGcd);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_peers_added",
          help: "The amount of peers added by protomux wakeup, across all topics",
          collect() {
            this.set(self.stats.peersAdded);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_peers_removed",
          help: "The amount of peers removed by protomux wakeup, across all topics",
          collect() {
            this.set(self.stats.peersRemoved);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_wire_announce_rx",
          help: "The amount of wire announce messages received by protomux wakeup",
          collect() {
            this.set(self.stats.wireAnnounce.rx);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_wire_announce_tx",
          help: "The amount of wire announce messages transmitted by protomux wakeup",
          collect() {
            this.set(self.stats.wireAnnounce.tx);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_wire_lookup_rx",
          help: "The amount of wire lookup messages received by protomux wakeup",
          collect() {
            this.set(self.stats.wireLookup.rx);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_wire_lookup_tx",
          help: "The amount of wire lookup messages transmitted by protomux wakeup",
          collect() {
            this.set(self.stats.wireLookup.tx);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_wire_info_rx",
          help: "The amount of wire info messages received by protomux wakeup",
          collect() {
            this.set(self.stats.wireInfo.rx);
          }
        });
        new promClient.Gauge({
          // eslint-disable-line no-new
          name: "protomux_wakeup_wire_info_tx",
          help: "The amount of wire info messages transmitted by protomux wakeup",
          collect() {
            this.set(self.stats.wireInfo.rx);
          }
        });
      }
    };
    var WakeupPeer = class {
      constructor(topic) {
        this.index = 0;
        this.userData = null;
        this.clock = 0;
        this.pending = true;
        this.removed = false;
        this.topic = topic;
        this.channel = null;
        this.stream = null;
        this.wireLookup = null;
        this.wireAnnounce = null;
        this.wireInfo = null;
        this.active = false;
      }
      unlink(list) {
        const head = list.pop();
        if (head === this) return;
        head.index = this.index;
        list[head.index] = head;
      }
    };
    var WakeupSession = class {
      constructor(topic, handlers) {
        this.index = 0;
        this.topic = topic;
        this.handlers = handlers;
        this.isActive = handlers.active !== false;
        this.destroyed = false;
      }
      get peers() {
        return this.topic.peers;
      }
      hasStream(stream) {
        return !!this.getPeer(stream);
      }
      addStream(stream) {
        this.topic.addStream(stream);
      }
      getPeer(stream) {
        return this.topic.peersByStream.get(stream) || null;
      }
      broadcastLookup(req) {
        for (const peer of this.topic.pendingPeers) {
          this.lookup(peer, req);
        }
        for (const peer of this.topic.peers) {
          this.lookup(peer, req);
        }
      }
      lookupByStream(stream, req) {
        const peer = this.topic.peersByStream.get(stream);
        if (peer) this.lookup(peer, req);
      }
      lookup(peer, req) {
        peer.topic.state.stats.wireLookup.tx++;
        peer.wireLookup.send(req || { hash: null });
      }
      announceByStream(stream, wakeup) {
        const peer = this.topic.peersByStream.get(stream);
        if (peer && !peer.pending) this.announce(peer, wakeup);
      }
      announce(peer, wakeup) {
        peer.topic.state.stats.wireAnnounce.tx++;
        peer.wireAnnounce.send(wakeup);
      }
      active() {
        this.isActive = true;
        this.topic._bumpActivity();
      }
      inactive() {
        this.isActive = false;
        this.topic._bumpActivity();
      }
      destroy() {
        if (this.destroyed) return;
        this.destroyed = true;
        this.topic.removeSession(this);
      }
    };
    var WakeupTopic = class {
      constructor(state, id, capability, active) {
        this.state = state;
        this.sessions = [];
        this.id = id;
        this.capability = capability;
        this.peers = [];
        this.pendingPeers = [];
        this.peersByStream = /* @__PURE__ */ new Map();
        this.activePeers = 0;
        this.isActive = active;
        this.idleTicks = 0;
        this.gcing = false;
        this.destroyed = false;
        this.state.stats.topicsAdded++;
      }
      addSession(handlers) {
        this.state.stats.sessionsOpened++;
        const session = new WakeupSession(this, handlers);
        session.index = this.sessions.length;
        this.sessions.push(session);
        this._bumpActivity();
        this._checkGC();
        return session;
      }
      removeSession(session) {
        if (this.sessions.length <= session.index) return;
        if (this.sessions[session.index] !== session) return;
        this.state.stats.sessionsClosed++;
        const head = this.sessions.pop();
        if (head !== session) {
          head.index = session.index;
          this.sessions[head.index] = head;
        }
        this._bumpActivity();
        this._checkGC();
      }
      _bumpActivity() {
        let isActive = false;
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          if (this.sessions[i].isActive) {
            isActive = true;
            break;
          }
        }
        if (isActive) this.active();
        else this.inactive();
      }
      active() {
        if (this.isActive) return;
        this.idleTicks = 0;
        this.isActive = true;
        this._updateActive(true);
      }
      inactive() {
        if (!this.isActive) return;
        this.isActive = false;
        this._updateActive(false);
      }
      _updateActive(active) {
        const info = { active };
        for (const peer of this.pendingPeers) {
          peer.topic.state.stats.wireInfo.tx++;
          peer.wireInfo.send(info);
        }
        for (const peer of this.peers) {
          peer.topic.state.stats.wireInfo.tx++;
          peer.wireInfo.send(info);
        }
        this._checkGC();
        if (active) this.state._onActive(this);
      }
      teardown() {
        if (this.destroyed) return;
        this.destroyed = true;
        this.state.stats.topicsGcd++;
        for (let i = this.peers.length - 1; i >= 0; i--) {
          this.peers[i].channel.close();
        }
        for (let i = this.pendingPeers.length - 1; i >= 0; i--) {
          this.pendingPeers[i].channel.close();
        }
        const hex = b4a4.toString(this.id, "hex");
        this.gcing = false;
        this.state.topics.delete(hex);
        this.state._removeGC(this);
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          this.state.stats.sessionsClosed++;
          const session = this.sessions[i];
          if (session.handlers.ondestroy) session.handlers.ondestroy(session);
        }
      }
      addStream(stream) {
        this._onopen(getMuxer(stream), false);
      }
      _proveCapabilityTo(stream) {
        return this._makeCapability(stream.isInitiator, stream.handshakeHash);
      }
      _makeCapability(isInitiator, handshakeHash) {
        return crypto.hash([isInitiator ? NS_INITATOR : NS_RESPONDER, this.capability, handshakeHash]);
      }
      _addPeer(peer, open) {
        if (!b4a4.equals(
          open.capability,
          this._makeCapability(!peer.stream.isInitiator, peer.stream.handshakeHash)
        )) {
          peer.channel.close();
          return;
        }
        if (peer.pending) {
          peer.unlink(this.pendingPeers);
        }
        peer.active = open.active;
        peer.pending = false;
        peer.index = this.peers.push(peer) - 1;
        if (peer.active) {
          this.activePeers++;
          this._checkGC();
        }
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          const session = this.sessions[i];
          const handlers = session.handlers;
          if (handlers.onpeeradd) handlers.onpeeradd(peer, session);
          if (peer.active && handlers.onpeeractive) handlers.onpeeractive(peer, session);
        }
      }
      _checkGC() {
        const shouldGC = this.activePeers === 0 && this.sessions.length === 0;
        if (shouldGC) {
          if (!this.gcing) {
            this.gcing = true;
            this.state._addGC(this);
          }
        } else {
          if (this.gcing) {
            this.gcing = false;
            this.state._removeGC(this);
          }
        }
      }
      _removePeer(peer) {
        this.state.stats.peersRemoved++;
        peer.removed = true;
        this.peersByStream.delete(peer.stream);
        if (peer.pending) {
          peer.unlink(this.pendingPeers);
          return;
        }
        const active = peer.active;
        if (active) {
          peer.active = false;
          this.activePeers--;
          this._checkGC();
        }
        peer.unlink(this.peers);
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          const session = this.sessions[i];
          const handlers = session.handlers;
          if (active && handlers.onpeerinactive) handlers.onpeerinactive(peer, session);
          if (handlers.onpeerremove) handlers.onpeerremove(peer, session);
        }
      }
      _onannounce(wakeup, peer) {
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          const session = this.sessions[i];
          const handlers = session.handlers;
          if (handlers.onannounce) handlers.onannounce(wakeup, peer, session);
        }
      }
      _onlookup(req, peer) {
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          const session = this.sessions[i];
          const handlers = session.handlers;
          if (handlers.onlookup) handlers.onlookup(req, peer, session);
        }
      }
      _oninfo(info, peer) {
        if (info.active) {
          if (!peer.active) {
            peer.active = true;
            this.activePeers++;
            this._checkGC();
            for (let i = this.sessions.length - 1; i >= 0; i--) {
              const session = this.sessions[i];
              const handlers = session.handlers;
              if (handlers.onpeeractive) handlers.onpeeractive(peer, session);
            }
          }
        } else {
          if (peer.active) {
            peer.active = false;
            this.activePeers--;
            this._checkGC();
            for (let i = this.sessions.length - 1; i >= 0; i--) {
              const session = this.sessions[i];
              const handlers = session.handlers;
              if (handlers.onpeerinactive) handlers.onpeerinactive(peer, session);
            }
          }
        }
      }
      _onopen(muxer, unique) {
        if (!unique && this.peersByStream.has(muxer.stream)) return;
        const peer = new WakeupPeer(this);
        const ch = muxer.createChannel({
          userData: peer,
          protocol: "wakeup",
          id: this.id,
          handshake: Handshake,
          messages: [
            { encoding: Lookup, onmessage: onlookup },
            { encoding: Announce, onmessage: onannounce },
            { encoding: Info, onmessage: onchannelinfo }
          ],
          onopen: onchannelopen,
          onclose: onchannelclose
        });
        if (!ch) return;
        this.state.stats.peersAdded++;
        peer.channel = ch;
        peer.stream = muxer.stream;
        peer.wireLookup = ch.messages[0];
        peer.wireAnnounce = ch.messages[1];
        peer.wireInfo = ch.messages[2];
        peer.index = this.pendingPeers.push(peer) - 1;
        this.peersByStream.set(muxer.stream, peer);
        ch.open({
          version: 0,
          capability: this._proveCapabilityTo(muxer.stream),
          active: this.isActive
        });
      }
    };
    function onchannelopen(open, channel) {
      const peer = channel.userData;
      peer.topic._addPeer(peer, open);
    }
    function onchannelclose(close, channel) {
      const peer = channel.userData;
      peer.topic._removePeer(peer);
    }
    function onlookup(req, channel) {
      const peer = channel.userData;
      peer.topic.state.stats.wireLookup.rx++;
      peer.topic._onlookup(req, peer);
    }
    function onannounce(wakeup, channel) {
      const peer = channel.userData;
      peer.topic.state.stats.wireAnnounce.rx++;
      peer.topic._onannounce(wakeup, peer);
    }
    function onchannelinfo(info, channel) {
      const peer = channel.userData;
      peer.topic.state.stats.wireInfo.rx++;
      peer.topic._oninfo(info, peer);
    }
    function getMuxer(stream) {
      if (Protomux.isProtomux(stream)) return stream;
      if (stream.noiseStream.userData) return stream.noiseStream.userData;
      const mux = Protomux.from(stream.noiseStream);
      stream.noiseStream.userData = mux;
      return mux;
    }
    function noop() {
    }
  }
});

// node_modules/is-options/index.js
var require_is_options = __commonJS({
  "node_modules/is-options/index.js"(exports2, module2) {
    var b4a4 = require_b4a();
    module2.exports = function isOptions(opts) {
      return typeof opts === "object" && opts && !b4a4.isBuffer(opts);
    };
  }
});

// node_modules/sodium-secretstream/index.js
var require_sodium_secretstream = __commonJS({
  "node_modules/sodium-secretstream/index.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    var b4a4 = require_b4a();
    var ABYTES = sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
    var TAG_MESSAGE = sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;
    var TAG_FINAL = sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL;
    var STATEBYTES = sodium.crypto_secretstream_xchacha20poly1305_STATEBYTES;
    var HEADERBYTES = sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES;
    var KEYBYTES = sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES;
    var TAG_FINAL_BYTE = b4a4.isBuffer(TAG_FINAL) ? TAG_FINAL[0] : TAG_FINAL;
    var EMPTY = b4a4.alloc(0);
    var TAG = b4a4.alloc(1);
    var Push = class {
      constructor(key, state = b4a4.allocUnsafeSlow(STATEBYTES), header = b4a4.allocUnsafeSlow(HEADERBYTES)) {
        if (!TAG_FINAL) throw new Error("JavaScript sodium version needs to support crypto_secretstream_xchacha20poly");
        this.key = key;
        this.state = state;
        this.header = header;
        sodium.crypto_secretstream_xchacha20poly1305_init_push(this.state, this.header, this.key);
      }
      next(message, cipher = b4a4.allocUnsafe(message.byteLength + ABYTES)) {
        sodium.crypto_secretstream_xchacha20poly1305_push(this.state, cipher, message, null, TAG_MESSAGE);
        return cipher;
      }
      final(message = EMPTY, cipher = b4a4.allocUnsafe(ABYTES)) {
        sodium.crypto_secretstream_xchacha20poly1305_push(this.state, cipher, message, null, TAG_FINAL);
        return cipher;
      }
    };
    var Pull = class {
      constructor(key, state = b4a4.allocUnsafeSlow(STATEBYTES)) {
        if (!TAG_FINAL) throw new Error("JavaScript sodium version needs to support crypto_secretstream_xchacha20poly");
        this.key = key;
        this.state = state;
        this.final = false;
      }
      init(header) {
        sodium.crypto_secretstream_xchacha20poly1305_init_pull(this.state, header, this.key);
      }
      next(cipher, message = b4a4.allocUnsafe(cipher.byteLength - ABYTES)) {
        sodium.crypto_secretstream_xchacha20poly1305_pull(this.state, message, TAG, cipher, null);
        this.final = TAG[0] === TAG_FINAL_BYTE;
        return message;
      }
    };
    function keygen(buf = b4a4.alloc(KEYBYTES)) {
      sodium.crypto_secretstream_xchacha20poly1305_keygen(buf);
      return buf;
    }
    module2.exports = {
      keygen,
      KEYBYTES,
      ABYTES,
      STATEBYTES,
      HEADERBYTES,
      Push,
      Pull
    };
  }
});

// node_modules/timeout-refresh/node.js
var require_node = __commonJS({
  "node_modules/timeout-refresh/node.js"(exports2, module2) {
    module2.exports = class Timer {
      constructor(ms, fn, ctx = null, interval = false) {
        this.ms = ms;
        this.ontimeout = fn;
        this.context = ctx;
        this.interval = interval;
        this.done = false;
        this._timer = interval ? setInterval(callInterval, ms, this) : setTimeout(callTimeout, ms, this);
      }
      unref() {
        this._timer.unref();
      }
      ref() {
        this._timer.ref();
      }
      refresh() {
        if (this.done !== true) this._timer.refresh();
      }
      destroy() {
        this.done = true;
        this.ontimeout = null;
        if (this.interval) clearInterval(this._timer);
        else clearTimeout(this._timer);
      }
      static once(ms, fn, ctx) {
        return new this(ms, fn, ctx, false);
      }
      static on(ms, fn, ctx) {
        return new this(ms, fn, ctx, true);
      }
    };
    function callTimeout(self) {
      self.done = true;
      self.ontimeout.call(self.context);
    }
    function callInterval(self) {
      self.ontimeout.call(self.context);
    }
  }
});

// node_modules/timeout-refresh/browser.js
var require_browser = __commonJS({
  "node_modules/timeout-refresh/browser.js"(exports2, module2) {
    module2.exports = class TimerBrowser {
      constructor(ms, fn, ctx = null, interval = false) {
        this.ms = ms;
        this.ontimeout = fn;
        this.context = ctx || null;
        this.interval = interval;
        this.done = false;
        this._timer = interval ? setInterval(callInterval, ms, this) : setTimeout(callTimeout, ms, this);
      }
      unref() {
      }
      ref() {
      }
      refresh() {
        if (this.done) return;
        if (this.interval) {
          clearInterval(this._timer);
          this._timer = setInterval(callInterval, this.ms, this);
        } else {
          clearTimeout(this._timer);
          this._timer = setTimeout(callTimeout, this.ms, this);
        }
      }
      destroy() {
        this.done = true;
        this.ontimeout = null;
        if (this.interval) clearInterval(this._timer);
        else clearTimeout(this._timer);
      }
      static once(ms, fn, ctx) {
        return new this(ms, fn, ctx, false);
      }
      static on(ms, fn, ctx) {
        return new this(ms, fn, ctx, true);
      }
    };
    function callTimeout(self) {
      self.done = true;
      self.ontimeout.call(self.context);
    }
    function callInterval(self) {
      self.ontimeout.call(self.context);
    }
  }
});

// node_modules/timeout-refresh/index.js
var require_timeout_refresh = __commonJS({
  "node_modules/timeout-refresh/index.js"(exports2, module2) {
    module2.exports = isNode() ? require_node() : require_browser();
    function isNode() {
      const to = setTimeout(function() {
      }, 1e3);
      clearTimeout(to);
      return !!to.refresh;
    }
  }
});

// node_modules/@hyperswarm/secret-stream/lib/bridge.js
var require_bridge = __commonJS({
  "node_modules/@hyperswarm/secret-stream/lib/bridge.js"(exports2, module2) {
    var { Duplex, Writable } = require_streamx();
    var ReversePassThrough = class extends Duplex {
      constructor(s) {
        super();
        this._stream = s;
        this._ondrain = null;
      }
      _write(data, cb) {
        if (this._stream.push(data) === false) {
          this._stream._ondrain = cb;
        } else {
          cb(null);
        }
      }
      _final(cb) {
        this._stream.push(null);
        cb(null);
      }
      _read(cb) {
        const ondrain = this._ondrain;
        this._ondrain = null;
        if (ondrain) ondrain();
        cb(null);
      }
    };
    module2.exports = class Bridge extends Duplex {
      constructor(noiseStream) {
        super();
        this.noiseStream = noiseStream;
        this._ondrain = null;
        this.reverse = new ReversePassThrough(this);
      }
      get publicKey() {
        return this.noiseStream.publicKey;
      }
      get remotePublicKey() {
        return this.noiseStream.remotePublicKey;
      }
      get handshakeHash() {
        return this.noiseStream.handshakeHash;
      }
      flush() {
        return Writable.drained(this);
      }
      _read(cb) {
        const ondrain = this._ondrain;
        this._ondrain = null;
        if (ondrain) ondrain();
        cb(null);
      }
      _write(data, cb) {
        if (this.reverse.push(data) === false) {
          this.reverse._ondrain = cb;
        } else {
          cb(null);
        }
      }
      _final(cb) {
        this.reverse.push(null);
        cb(null);
      }
    };
  }
});

// node_modules/noise-curve-ed/index.js
var require_noise_curve_ed = __commonJS({
  "node_modules/noise-curve-ed/index.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    var assert2 = require_nanoassert();
    var b4a4 = require_b4a();
    var DHLEN = sodium.crypto_scalarmult_ed25519_BYTES;
    var PKLEN = sodium.crypto_scalarmult_ed25519_BYTES;
    var SCALARLEN = sodium.crypto_scalarmult_ed25519_BYTES;
    var SKLEN = sodium.crypto_sign_SECRETKEYBYTES;
    var ALG = "Ed25519";
    module2.exports = {
      DHLEN,
      PKLEN,
      SCALARLEN,
      SKLEN,
      ALG,
      name: ALG,
      generateKeyPair,
      dh
    };
    function generateKeyPair(privKey) {
      if (privKey) return generateSeedKeyPair(privKey.subarray(0, 32));
      const keyPair = {};
      keyPair.secretKey = b4a4.alloc(SKLEN);
      keyPair.publicKey = b4a4.alloc(PKLEN);
      sodium.crypto_sign_keypair(keyPair.publicKey, keyPair.secretKey);
      return keyPair;
    }
    function generateSeedKeyPair(seed) {
      const keyPair = {};
      keyPair.secretKey = b4a4.alloc(SKLEN);
      keyPair.publicKey = b4a4.alloc(PKLEN);
      sodium.crypto_sign_seed_keypair(keyPair.publicKey, keyPair.secretKey, seed);
      return keyPair;
    }
    function dh(publicKey, { scalar, secretKey }) {
      if (!scalar) {
        assert2(secretKey.byteLength === SKLEN);
        const sk = b4a4.alloc(64);
        sodium.crypto_hash_sha512(sk, secretKey.subarray(0, 32));
        sk[0] &= 248;
        sk[31] &= 127;
        sk[31] |= 64;
        scalar = sk.subarray(0, 32);
      }
      assert2(scalar.byteLength === SCALARLEN);
      assert2(publicKey.byteLength === PKLEN);
      const output = b4a4.alloc(DHLEN);
      sodium.crypto_scalarmult_ed25519_noclamp(
        output,
        scalar,
        publicKey
      );
      return output;
    }
  }
});

// node_modules/noise-handshake/cipher.js
var require_cipher = __commonJS({
  "node_modules/noise-handshake/cipher.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    var b4a4 = require_b4a();
    module2.exports = class CipherState {
      constructor(key) {
        this.key = key || null;
        this.nonce = 0;
        this.CIPHER_ALG = "ChaChaPoly";
      }
      initialiseKey(key) {
        this.key = key;
        this.nonce = 0;
      }
      setNonce(nonce) {
        this.nonce = nonce;
      }
      encrypt(plaintext, ad) {
        if (!this.hasKey) return plaintext;
        if (!ad) ad = b4a4.alloc(0);
        const ciphertext = encryptWithAD(this.key, this.nonce, ad, plaintext);
        if (ciphertext.length > 65535) throw new Error(`ciphertext length of ${ciphertext.length} exceeds maximum Noise message length of 65535`);
        this.nonce++;
        return ciphertext;
      }
      decrypt(ciphertext, ad) {
        if (!this.hasKey) return ciphertext;
        if (!ad) ad = b4a4.alloc(0);
        if (ciphertext.length > 65535) throw new Error(`ciphertext length of ${ciphertext.length} exceeds maximum Noise message length of 65535`);
        const plaintext = decryptWithAD(this.key, this.nonce, ad, ciphertext);
        this.nonce++;
        return plaintext;
      }
      get hasKey() {
        return this.key !== null;
      }
      _clear() {
        sodium.sodium_memzero(this.key);
        this.key = null;
        this.nonce = null;
      }
      static get MACBYTES() {
        return 16;
      }
      static get NONCEBYTES() {
        return 8;
      }
      static get KEYBYTES() {
        return 32;
      }
    };
    function encryptWithAD(key, counter, additionalData, plaintext) {
      if (!b4a4.isBuffer(additionalData)) additionalData = b4a4.from(additionalData, "hex");
      if (!b4a4.isBuffer(plaintext)) plaintext = b4a4.from(plaintext, "hex");
      const nonce = b4a4.alloc(sodium.crypto_aead_chacha20poly1305_ietf_NPUBBYTES);
      const view = new DataView(nonce.buffer, nonce.byteOffset, nonce.byteLength);
      view.setUint32(4, counter, true);
      const ciphertext = b4a4.alloc(plaintext.byteLength + sodium.crypto_aead_chacha20poly1305_ietf_ABYTES);
      sodium.crypto_aead_chacha20poly1305_ietf_encrypt(ciphertext, plaintext, additionalData, null, nonce, key);
      return ciphertext;
    }
    function decryptWithAD(key, counter, additionalData, ciphertext) {
      if (!b4a4.isBuffer(additionalData)) additionalData = b4a4.from(additionalData, "hex");
      if (!b4a4.isBuffer(ciphertext)) ciphertext = b4a4.from(ciphertext, "hex");
      const nonce = b4a4.alloc(sodium.crypto_aead_chacha20poly1305_ietf_NPUBBYTES);
      const view = new DataView(nonce.buffer, nonce.byteOffset, nonce.byteLength);
      view.setUint32(4, counter, true);
      const plaintext = b4a4.alloc(ciphertext.byteLength - sodium.crypto_aead_chacha20poly1305_ietf_ABYTES);
      sodium.crypto_aead_chacha20poly1305_ietf_decrypt(plaintext, null, ciphertext, additionalData, nonce, key);
      return plaintext;
    }
  }
});

// node_modules/noise-handshake/dh.js
var require_dh = __commonJS({
  "node_modules/noise-handshake/dh.js"(exports2, module2) {
    var {
      crypto_kx_SEEDBYTES,
      crypto_kx_keypair,
      crypto_kx_seed_keypair,
      crypto_scalarmult_BYTES,
      crypto_scalarmult_SCALARBYTES,
      crypto_scalarmult,
      crypto_scalarmult_base
    } = require_sodium_universal();
    var assert2 = require_nanoassert();
    var b4a4 = require_b4a();
    var DHLEN = crypto_scalarmult_BYTES;
    var PKLEN = crypto_scalarmult_BYTES;
    var SKLEN = crypto_scalarmult_SCALARBYTES;
    var SEEDLEN = crypto_kx_SEEDBYTES;
    var ALG = "25519";
    module2.exports = {
      DHLEN,
      PKLEN,
      SKLEN,
      SEEDLEN,
      ALG,
      generateKeyPair,
      generateSeedKeyPair,
      dh
    };
    function generateKeyPair(privKey) {
      const keyPair = {};
      keyPair.secretKey = privKey || b4a4.alloc(SKLEN);
      keyPair.publicKey = b4a4.alloc(PKLEN);
      if (privKey) {
        crypto_scalarmult_base(keyPair.publicKey, keyPair.secretKey);
      } else {
        crypto_kx_keypair(keyPair.publicKey, keyPair.secretKey);
      }
      return keyPair;
    }
    function generateSeedKeyPair(seed) {
      assert2(seed.byteLength === SKLEN);
      const keyPair = {};
      keyPair.secretKey = b4a4.alloc(SKLEN);
      keyPair.publicKey = b4a4.alloc(PKLEN);
      crypto_kx_seed_keypair(keyPair.publicKey, keyPair.secretKey, seed);
      return keyPair;
    }
    function dh(publicKey, { secretKey }) {
      assert2(secretKey.byteLength === SKLEN);
      assert2(publicKey.byteLength === PKLEN);
      const output = b4a4.alloc(DHLEN);
      crypto_scalarmult(
        output,
        secretKey,
        publicKey
      );
      return output;
    }
  }
});

// node_modules/noise-handshake/hmac.js
var require_hmac = __commonJS({
  "node_modules/noise-handshake/hmac.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var { sodium_memzero, crypto_generichash, crypto_generichash_batch } = require_sodium_universal();
    var HASHLEN = 64;
    var BLOCKLEN = 128;
    var scratch = b4a4.alloc(BLOCKLEN * 3);
    var HMACKey = scratch.subarray(BLOCKLEN * 0, BLOCKLEN * 1);
    var OuterKeyPad = scratch.subarray(BLOCKLEN * 1, BLOCKLEN * 2);
    var InnerKeyPad = scratch.subarray(BLOCKLEN * 2, BLOCKLEN * 3);
    module2.exports = function hmac(out, batch, key) {
      if (key.byteLength > BLOCKLEN) {
        crypto_generichash(HMACKey.subarray(0, HASHLEN), key);
        sodium_memzero(HMACKey.subarray(HASHLEN));
      } else {
        HMACKey.set(key);
        sodium_memzero(HMACKey.subarray(key.byteLength));
      }
      for (let i = 0; i < HMACKey.byteLength; i++) {
        OuterKeyPad[i] = 92 ^ HMACKey[i];
        InnerKeyPad[i] = 54 ^ HMACKey[i];
      }
      sodium_memzero(HMACKey);
      crypto_generichash_batch(out, [InnerKeyPad].concat(batch));
      sodium_memzero(InnerKeyPad);
      crypto_generichash_batch(out, [OuterKeyPad, out]);
      sodium_memzero(OuterKeyPad);
    };
    module2.exports.BYTES = HASHLEN;
    module2.exports.KEYBYTES = BLOCKLEN;
  }
});

// node_modules/noise-handshake/hkdf.js
var require_hkdf = __commonJS({
  "node_modules/noise-handshake/hkdf.js"(exports2, module2) {
    var hmacBlake2b = require_hmac();
    var b4a4 = require_b4a();
    var HASHLEN = 64;
    module2.exports = {
      hkdf,
      HASHLEN
    };
    function hkdf(salt, inputKeyMaterial, info = "", length = 2 * HASHLEN) {
      const pseudoRandomKey = hkdfExtract(salt, inputKeyMaterial);
      return hkdfExpand(pseudoRandomKey, info, length);
    }
    function hkdfExtract(salt, inputKeyMaterial) {
      const hmac = b4a4.alloc(HASHLEN);
      return hmacDigest(hmac, salt, inputKeyMaterial);
    }
    function hkdfExpand(key, info, length) {
      const buffer = b4a4.allocUnsafeSlow(length);
      const infoBuf = b4a4.from(info);
      let prev = infoBuf;
      const result = [];
      for (let i = 0; i < length; i += HASHLEN) {
        const pos = b4a4.from([i / HASHLEN + 1]);
        const out = buffer.subarray(i, i + HASHLEN);
        result.push(out);
        prev = hmacDigest(out, key, [prev, infoBuf, pos]);
      }
      return result;
    }
    function hmacDigest(out, key, input) {
      hmacBlake2b(out, input, key);
      return out;
    }
  }
});

// node_modules/noise-handshake/symmetric-state.js
var require_symmetric_state = __commonJS({
  "node_modules/noise-handshake/symmetric-state.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    var assert2 = require_nanoassert();
    var b4a4 = require_b4a();
    var CipherState = require_cipher();
    var curve = require_dh();
    var { HASHLEN, hkdf } = require_hkdf();
    module2.exports = class SymmetricState extends CipherState {
      constructor(opts = {}) {
        super();
        this.curve = opts.curve || curve;
        this.digest = b4a4.alloc(HASHLEN);
        this.chainingKey = null;
        this.offset = 0;
        this.DH_ALG = this.curve.ALG;
      }
      mixHash(data) {
        accumulateDigest(this.digest, data);
      }
      mixKeyAndHash(key) {
        const [ck, tempH, tempK] = hkdf(this.chainingKey, key, "", 3 * HASHLEN);
        this.chainingKey = ck;
        this.mixHash(tempH);
        this.initialiseKey(tempK.subarray(0, 32));
      }
      mixKeyNormal(key) {
        const [ck, tempK] = hkdf(this.chainingKey, key);
        this.chainingKey = ck;
        this.initialiseKey(tempK.subarray(0, 32));
      }
      mixKey(remoteKey, localKey) {
        const dh = this.curve.dh(remoteKey, localKey);
        const hkdfResult = hkdf(this.chainingKey, dh);
        this.chainingKey = hkdfResult[0];
        this.initialiseKey(hkdfResult[1].subarray(0, 32));
      }
      encryptAndHash(plaintext) {
        const ciphertext = this.encrypt(plaintext, this.digest);
        accumulateDigest(this.digest, ciphertext);
        return ciphertext;
      }
      decryptAndHash(ciphertext) {
        const plaintext = this.decrypt(ciphertext, this.digest);
        accumulateDigest(this.digest, ciphertext);
        return plaintext;
      }
      getHandshakeHash(out) {
        if (!out) return this.getHandshakeHash(b4a4.alloc(HASHLEN));
        assert2(out.byteLength === HASHLEN, `output must be ${HASHLEN} bytes`);
        out.set(this.digest);
        return out;
      }
      split() {
        const res = hkdf(this.chainingKey, b4a4.alloc(0));
        return res.map((k) => k.subarray(0, 32));
      }
      _clear() {
        super._clear();
        sodium.sodium_memzero(this.digest);
        sodium.sodium_memzero(this.chainingKey);
        this.digest = null;
        this.chainingKey = null;
        this.offset = null;
        this.curve = null;
      }
      static get alg() {
        return CipherState.alg + "_BLAKE2b";
      }
    };
    function accumulateDigest(digest, input) {
      const toHash = b4a4.concat([digest, input]);
      sodium.crypto_generichash(digest, toHash);
    }
  }
});

// node_modules/noise-handshake/noise.js
var require_noise = __commonJS({
  "node_modules/noise-handshake/noise.js"(exports2, module2) {
    var assert2 = require_nanoassert();
    var b4a4 = require_b4a();
    var SymmetricState = require_symmetric_state();
    var { HASHLEN } = require_hkdf();
    var PRESHARE_IS = /* @__PURE__ */ Symbol("initiator static key preshared");
    var PRESHARE_RS = /* @__PURE__ */ Symbol("responder static key preshared");
    var TOK_PSK = /* @__PURE__ */ Symbol("psk");
    var TOK_S = /* @__PURE__ */ Symbol("s");
    var TOK_E = /* @__PURE__ */ Symbol("e");
    var TOK_ES = /* @__PURE__ */ Symbol("es");
    var TOK_SE = /* @__PURE__ */ Symbol("se");
    var TOK_EE = /* @__PURE__ */ Symbol("ee");
    var TOK_SS = /* @__PURE__ */ Symbol("ss");
    var HANDSHAKES = Object.freeze({
      NN: [
        [TOK_E],
        [TOK_E, TOK_EE]
      ],
      NNpsk0: [
        [TOK_PSK, TOK_E],
        [TOK_E, TOK_EE]
      ],
      XX: [
        [TOK_E],
        [TOK_E, TOK_EE, TOK_S, TOK_ES],
        [TOK_S, TOK_SE]
      ],
      XXpsk0: [
        [TOK_PSK, TOK_E],
        [TOK_E, TOK_EE, TOK_S, TOK_ES],
        [TOK_S, TOK_SE]
      ],
      IK: [
        PRESHARE_RS,
        [TOK_E, TOK_ES, TOK_S, TOK_SS],
        [TOK_E, TOK_EE, TOK_SE]
      ],
      XK: [
        PRESHARE_RS,
        [TOK_E, TOK_ES],
        [TOK_E, TOK_EE],
        [TOK_S, TOK_SE]
      ]
    });
    var Writer = class {
      constructor() {
        this.size = 0;
        this.buffers = [];
      }
      push(b) {
        this.size += b.byteLength;
        this.buffers.push(b);
      }
      end() {
        const all = b4a4.alloc(this.size);
        let offset = 0;
        for (const b of this.buffers) {
          all.set(b, offset);
          offset += b.byteLength;
        }
        return all;
      }
    };
    var Reader = class {
      constructor(buf) {
        this.offset = 0;
        this.buffer = buf;
      }
      shift(n) {
        const start = this.offset;
        const end = this.offset += n;
        if (end > this.buffer.byteLength) throw new Error("Insufficient bytes");
        return this.buffer.subarray(start, end);
      }
      end() {
        return this.shift(this.buffer.byteLength - this.offset);
      }
    };
    module2.exports = class NoiseState extends SymmetricState {
      constructor(pattern, initiator, staticKeypair, opts = {}) {
        super(opts);
        this.s = staticKeypair || this.curve.generateKeyPair();
        this.e = null;
        this.psk = null;
        if (opts && opts.psk) this.psk = opts.psk;
        this.re = null;
        this.rs = null;
        this.pattern = pattern;
        this.handshake = HANDSHAKES[this.pattern].slice();
        this.isPskHandshake = !!this.psk && hasPskToken(this.handshake);
        this.protocol = b4a4.from([
          "Noise",
          this.pattern,
          this.DH_ALG,
          this.CIPHER_ALG,
          "BLAKE2b"
        ].join("_"));
        this.initiator = initiator;
        this.complete = false;
        this.rx = null;
        this.tx = null;
        this.hash = null;
      }
      initialise(prologue, remoteStatic) {
        if (this.protocol.byteLength <= HASHLEN) this.digest.set(this.protocol);
        else this.mixHash(this.protocol);
        this.chainingKey = b4a4.from(this.digest);
        this.mixHash(prologue);
        while (!Array.isArray(this.handshake[0])) {
          const message = this.handshake.shift();
          assert2(
            message === PRESHARE_RS || message === PRESHARE_IS,
            "Unexpected pattern"
          );
          const takeRemoteKey = this.initiator ? message === PRESHARE_RS : message === PRESHARE_IS;
          if (takeRemoteKey) this.rs = remoteStatic;
          const key = takeRemoteKey ? this.rs : this.s.publicKey;
          assert2(key != null, "Remote pubkey required");
          this.mixHash(key);
        }
      }
      final() {
        const [k1, k2] = this.split();
        this.tx = this.initiator ? k1 : k2;
        this.rx = this.initiator ? k2 : k1;
        this.complete = true;
        this.hash = this.getHandshakeHash();
        this._clear();
      }
      recv(buf) {
        const r = new Reader(buf);
        for (const pattern of this.handshake.shift()) {
          switch (pattern) {
            case TOK_PSK:
              this.mixKeyAndHash(this.psk);
              break;
            case TOK_E:
              this.re = r.shift(this.curve.PKLEN);
              this.mixHash(this.re);
              if (this.isPskHandshake) this.mixKeyNormal(this.re);
              break;
            case TOK_S: {
              const klen = this.hasKey ? this.curve.PKLEN + 16 : this.curve.PKLEN;
              this.rs = this.decryptAndHash(r.shift(klen));
              break;
            }
            case TOK_EE:
            case TOK_ES:
            case TOK_SE:
            case TOK_SS: {
              const useStatic = keyPattern(pattern, this.initiator);
              const localKey = useStatic.local ? this.s : this.e;
              const remoteKey = useStatic.remote ? this.rs : this.re;
              this.mixKey(remoteKey, localKey);
              break;
            }
            default:
              throw new Error("Unexpected message");
          }
        }
        const payload = this.decryptAndHash(r.end());
        if (!this.handshake.length) this.final();
        return payload;
      }
      send(payload = b4a4.alloc(0)) {
        const w = new Writer();
        for (const pattern of this.handshake.shift()) {
          switch (pattern) {
            case TOK_PSK:
              this.mixKeyAndHash(this.psk);
              break;
            case TOK_E:
              if (this.e === null) this.e = this.curve.generateKeyPair();
              this.mixHash(this.e.publicKey);
              if (this.isPskHandshake) this.mixKeyNormal(this.e.publicKey);
              w.push(this.e.publicKey);
              break;
            case TOK_S:
              w.push(this.encryptAndHash(this.s.publicKey));
              break;
            case TOK_ES:
            case TOK_SE:
            case TOK_EE:
            case TOK_SS: {
              const useStatic = keyPattern(pattern, this.initiator);
              const localKey = useStatic.local ? this.s : this.e;
              const remoteKey = useStatic.remote ? this.rs : this.re;
              this.mixKey(remoteKey, localKey);
              break;
            }
            default:
              throw new Error("Unexpected message");
          }
        }
        w.push(this.encryptAndHash(payload));
        const response = w.end();
        if (!this.handshake.length) this.final();
        return response;
      }
      _clear() {
        super._clear();
        this.e.secretKey.fill(0);
        this.e.publicKey.fill(0);
        this.re.fill(0);
        this.e = null;
        this.re = null;
      }
    };
    function keyPattern(pattern, initiator) {
      const ret = {
        local: false,
        remote: false
      };
      switch (pattern) {
        case TOK_EE:
          return ret;
        case TOK_ES:
          ret.local ^= !initiator;
          ret.remote ^= initiator;
          return ret;
        case TOK_SE:
          ret.local ^= initiator;
          ret.remote ^= !initiator;
          return ret;
        case TOK_SS:
          ret.local ^= 1;
          ret.remote ^= 1;
          return ret;
      }
    }
    function hasPskToken(handshake) {
      return handshake.some((x) => {
        return Array.isArray(x) && x.indexOf(TOK_PSK) !== -1;
      });
    }
  }
});

// node_modules/@hyperswarm/secret-stream/lib/handshake.js
var require_handshake = __commonJS({
  "node_modules/@hyperswarm/secret-stream/lib/handshake.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    var curve = require_noise_curve_ed();
    var Noise = require_noise();
    var b4a4 = require_b4a();
    var EMPTY = b4a4.alloc(0);
    module2.exports = class Handshake {
      constructor(isInitiator, keyPair, remotePublicKey, pattern) {
        this.isInitiator = isInitiator;
        this.keyPair = keyPair;
        this.noise = new Noise(pattern, isInitiator, keyPair, { curve });
        this.noise.initialise(EMPTY, remotePublicKey);
        this.destroyed = false;
      }
      static keyPair(seed) {
        const publicKey = b4a4.alloc(32);
        const secretKey = b4a4.alloc(64);
        if (seed) sodium.crypto_sign_seed_keypair(publicKey, secretKey, seed);
        else sodium.crypto_sign_keypair(publicKey, secretKey);
        return { publicKey, secretKey };
      }
      recv(data) {
        try {
          this.noise.recv(data);
          if (this.noise.complete) return this._return(null);
          return this.send();
        } catch {
          this.destroy();
          return null;
        }
      }
      // note that the data returned here is framed so we don't have to do an extra copy
      // when sending it...
      send() {
        try {
          const data = this.noise.send();
          const wrap = b4a4.allocUnsafe(data.byteLength + 3);
          writeUint24le(data.byteLength, wrap);
          wrap.set(data, 3);
          return this._return(wrap);
        } catch {
          this.destroy();
          return null;
        }
      }
      destroy() {
        if (this.destroyed) return;
        this.destroyed = true;
      }
      _return(data) {
        const tx = this.noise.complete ? b4a4.toBuffer(this.noise.tx) : null;
        const rx = this.noise.complete ? b4a4.toBuffer(this.noise.rx) : null;
        const hash = this.noise.complete ? b4a4.toBuffer(this.noise.hash) : null;
        const remotePublicKey = this.noise.complete ? b4a4.toBuffer(this.noise.rs) : null;
        return {
          data,
          remotePublicKey,
          hash,
          tx,
          rx
        };
      }
    };
    function writeUint24le(n, buf) {
      buf[0] = n & 255;
      buf[1] = n >>> 8 & 255;
      buf[2] = n >>> 16 & 255;
    }
  }
});

// node_modules/@hyperswarm/secret-stream/index.js
var require_secret_stream = __commonJS({
  "node_modules/@hyperswarm/secret-stream/index.js"(exports2, module2) {
    var { Pull, Push, HEADERBYTES, KEYBYTES, ABYTES } = require_sodium_secretstream();
    var sodium = require_sodium_universal();
    var crypto = require_hypercore_crypto();
    var { Duplex, Writable, getStreamError } = require_streamx();
    var b4a4 = require_b4a();
    var Timeout = require_timeout_refresh();
    var unslab = require_unslab();
    var Bridge = require_bridge();
    var Handshake = require_handshake();
    var IDHEADERBYTES = HEADERBYTES + 32;
    var [NS_INITIATOR, NS_RESPONDER, NS_SEND] = crypto.namespace("hyperswarm/secret-stream", 3);
    var MAX_ATOMIC_WRITE = 256 * 256 * 256 - 1;
    module2.exports = class NoiseSecretStream extends Duplex {
      constructor(isInitiator, rawStream, opts = {}) {
        super({ mapWritable: toBuffer });
        if (typeof isInitiator !== "boolean") {
          throw new Error("isInitiator should be a boolean");
        }
        this.noiseStream = this;
        this.isInitiator = isInitiator;
        this.rawStream = null;
        this.publicKey = opts.publicKey || null;
        this.remotePublicKey = opts.remotePublicKey || null;
        this.handshakeHash = null;
        this.connected = false;
        this.keepAlive = opts.keepAlive || 0;
        this.timeout = 0;
        this.enableSend = opts.enableSend !== false;
        this.userData = null;
        let openedDone = null;
        this.opened = new Promise((resolve) => {
          openedDone = resolve;
        });
        this.rawBytesWritten = 0;
        this.rawBytesRead = 0;
        this.relay = null;
        this.puncher = null;
        this._rawStream = null;
        this._handshake = null;
        this._handshakePattern = opts.pattern || null;
        this._handshakeDone = null;
        this._state = 0;
        this._len = 0;
        this._tmp = 1;
        this._message = null;
        this._openedDone = openedDone;
        this._startDone = null;
        this._drainDone = null;
        this._outgoingPlain = null;
        this._outgoingWrapped = null;
        this._utp = null;
        this._setup = true;
        this._ended = 2;
        this._encrypt = null;
        this._decrypt = null;
        this._timeoutTimer = null;
        this._keepAliveTimer = null;
        this._sendState = null;
        if (opts.autoStart !== false) this.start(rawStream, opts);
        this.resume();
        this.pause();
      }
      static keyPair(seed) {
        return Handshake.keyPair(seed);
      }
      static id(handshakeHash, isInitiator, id) {
        return streamId(handshakeHash, isInitiator, id);
      }
      setTimeout(ms) {
        if (!ms) ms = 0;
        this._clearTimeout();
        this.timeout = ms;
        if (!ms || this.rawStream === null) return;
        this._timeoutTimer = Timeout.once(ms, destroyTimeout, this);
        this._timeoutTimer.unref();
      }
      setKeepAlive(ms) {
        if (!ms) ms = 0;
        this._clearKeepAlive();
        this.keepAlive = ms;
        if (!ms || this.rawStream === null) return;
        this._keepAliveTimer = Timeout.on(ms, sendKeepAlive, this);
        this._keepAliveTimer.unref();
      }
      sendKeepAlive() {
        const empty = this.alloc(0);
        this.write(empty);
      }
      start(rawStream, opts = {}) {
        if (rawStream) {
          this.rawStream = rawStream;
          this._rawStream = rawStream;
          if (typeof this.rawStream.setContentSize === "function") {
            this._utp = rawStream;
          }
        } else {
          this.rawStream = new Bridge(this);
          this._rawStream = this.rawStream.reverse;
        }
        this.rawStream.on("error", this._onrawerror.bind(this));
        this.rawStream.on("close", this._onrawclose.bind(this));
        this._startHandshake(opts.handshake, opts.keyPair || null);
        this._continueOpen(null);
        if (this.destroying) return;
        if (opts.data) this._onrawdata(opts.data);
        if (opts.ended) this._onrawend();
        if (this.keepAlive > 0 && this._keepAliveTimer === null) {
          this.setKeepAlive(this.keepAlive);
        }
        if (this.timeout > 0 && this._timeoutTimer === null) {
          this.setTimeout(this.timeout);
        }
      }
      async flush() {
        if (await this.opened === false) return false;
        if (await Writable.drained(this) === false) return false;
        if (this.destroying) return false;
        if (this.rawStream !== null && this.rawStream.flush) {
          return await this.rawStream.flush();
        }
        return true;
      }
      _continueOpen(err) {
        if (err) this.destroy(err);
        if (this._startDone === null) return;
        const done = this._startDone;
        this._startDone = null;
        this._open(done);
      }
      _onkeypairpromise(p) {
        const self = this;
        const cont = this._continueOpen.bind(this);
        p.then(onkeypair, cont);
        function onkeypair(kp) {
          self._onkeypair(kp);
          cont(null);
        }
      }
      _onkeypair(keyPair) {
        const pattern = this._handshakePattern || "XX";
        const remotePublicKey = this.remotePublicKey;
        this._handshake = new Handshake(this.isInitiator, keyPair, remotePublicKey, pattern);
        this.publicKey = this._handshake.keyPair.publicKey;
      }
      _startHandshake(handshake, keyPair) {
        if (handshake) {
          const { tx, rx, hash, publicKey, remotePublicKey } = handshake;
          this._setupSecretStream(tx, rx, hash, publicKey, remotePublicKey);
          return;
        }
        if (!keyPair) keyPair = Handshake.keyPair();
        if (typeof keyPair.then === "function") {
          this._onkeypairpromise(keyPair);
        } else {
          this._onkeypair(keyPair);
        }
      }
      _onrawerror(err) {
        this.destroy(err);
      }
      _onrawclose() {
        if (this._ended !== 0) this.destroy();
      }
      _onrawdata(data) {
        let offset = 0;
        if (this._timeoutTimer !== null) {
          this._timeoutTimer.refresh();
        }
        do {
          switch (this._state) {
            case 0: {
              while (this._tmp !== 16777216 && offset < data.byteLength) {
                const v = data[offset++];
                this._len += this._tmp * v;
                this._tmp *= 256;
              }
              if (this._tmp === 16777216) {
                this._tmp = 0;
                this._state = 1;
                const unprocessed = data.byteLength - offset;
                if (unprocessed < this._len && this._utp !== null)
                  this._utp.setContentSize(this._len - unprocessed);
              }
              break;
            }
            case 1: {
              const missing = this._len - this._tmp;
              const end = missing + offset;
              if (this._message === null && end <= data.byteLength) {
                this._message = data.subarray(offset, end);
                offset += missing;
                this._incoming();
                break;
              }
              const unprocessed = data.byteLength - offset;
              if (this._message === null) {
                this._message = b4a4.allocUnsafe(this._len);
              }
              b4a4.copy(data, this._message, this._tmp, offset);
              this._tmp += unprocessed;
              if (end <= data.byteLength) {
                offset += missing;
                this._incoming();
              } else {
                offset += unprocessed;
              }
              break;
            }
          }
        } while (offset < data.byteLength && !this.destroying);
      }
      _onrawend() {
        this._ended--;
        this.push(null);
      }
      _onrawdrain() {
        const drain = this._drainDone;
        if (drain === null) return;
        this._drainDone = null;
        drain();
      }
      _read(cb) {
        this.rawStream.resume();
        cb(null);
      }
      _incoming() {
        const message = this._message;
        this._state = 0;
        this._len = 0;
        this._tmp = 1;
        this._message = null;
        if (this._setup === true) {
          if (this._handshake) {
            this._onhandshakert(this._handshake.recv(message));
          } else {
            if (message.byteLength !== IDHEADERBYTES) {
              this.destroy(new Error("Invalid header message received"));
              return;
            }
            const remoteId = message.subarray(0, 32);
            const expectedId = streamId(this.handshakeHash, !this.isInitiator);
            const header = message.subarray(32);
            if (!b4a4.equals(expectedId, remoteId)) {
              this.destroy(new Error("Invalid header received"));
              return;
            }
            this._decrypt.init(header);
            this._setup = false;
          }
          return;
        }
        if (message.byteLength < ABYTES) {
          this.destroy(new Error("Invalid message received"));
          return;
        }
        this.rawBytesRead += message.byteLength;
        const plain = message.subarray(1, message.byteLength - ABYTES + 1);
        try {
          this._decrypt.next(message, plain);
        } catch (err) {
          this.destroy(err);
          return;
        }
        if (plain.byteLength === 0 && this.keepAlive !== 0) return;
        if (this.push(plain) === false) {
          this.rawStream.pause();
        }
      }
      _onhandshakert(h) {
        if (this._handshakeDone === null) return;
        if (h !== null) {
          if (h.data) this._rawStream.write(h.data);
          if (!h.tx) return;
        }
        const done = this._handshakeDone;
        const publicKey = this._handshake.keyPair.publicKey;
        this._handshakeDone = null;
        this._handshake = null;
        if (h === null) return done(new Error("Noise handshake failed"));
        this._setupSecretStream(h.tx, h.rx, h.hash, publicKey, h.remotePublicKey);
        this._resolveOpened(true);
        done(null);
      }
      _setupSecretStream(tx, rx, handshakeHash, publicKey, remotePublicKey) {
        const buf = b4a4.allocUnsafeSlow(3 + IDHEADERBYTES);
        writeUint24le(IDHEADERBYTES, buf);
        this._encrypt = new Push(unslab(tx.subarray(0, KEYBYTES)), void 0, buf.subarray(3 + 32));
        this._decrypt = new Pull(unslab(rx.subarray(0, KEYBYTES)));
        this.publicKey = publicKey;
        this.remotePublicKey = remotePublicKey;
        this.handshakeHash = handshakeHash;
        const id = buf.subarray(3, 3 + 32);
        streamId(handshakeHash, this.isInitiator, id);
        this._setupSecretSend(handshakeHash);
        this.emit("handshake");
        if (this.rawStream !== this._rawStream) this.rawStream.emit("handshake");
        if (this.destroying) return;
        this._rawStream.write(buf);
      }
      _setupSecretSend(handshakeHash) {
        this._sendState = b4a4.allocUnsafeSlow(32 + 32 + 8 + 8);
        const encrypt = this._sendState.subarray(0, 32);
        const decrypt = this._sendState.subarray(32, 64);
        const counter = this._sendState.subarray(64, 72);
        const initial = this._sendState.subarray(72);
        const inputs = this.isInitiator ? [
          [NS_INITIATOR, NS_SEND],
          [NS_RESPONDER, NS_SEND]
        ] : [
          [NS_RESPONDER, NS_SEND],
          [NS_INITIATOR, NS_SEND]
        ];
        sodium.crypto_generichash_batch(encrypt, inputs[0], handshakeHash);
        sodium.crypto_generichash_batch(decrypt, inputs[1], handshakeHash);
        sodium.randombytes_buf(initial);
        counter.set(initial);
      }
      _open(cb) {
        if (this._rawStream === null || this._handshake === null && this._encrypt === null) {
          this._startDone = cb;
          return;
        }
        this._rawStream.on("data", this._onrawdata.bind(this));
        this._rawStream.on("end", this._onrawend.bind(this));
        this._rawStream.on("drain", this._onrawdrain.bind(this));
        if (this.enableSend) this._rawStream.on("message", this._onmessage.bind(this));
        if (this._encrypt !== null) {
          this._resolveOpened(true);
          return cb(null);
        }
        this._handshakeDone = cb;
        if (this.isInitiator) this._onhandshakert(this._handshake.send());
      }
      _predestroy() {
        if (this.rawStream) {
          const error = getStreamError(this);
          this.rawStream.destroy(error);
        }
        if (this._startDone !== null) {
          const done = this._startDone;
          this._startDone = null;
          done(new Error("Stream destroyed"));
        }
        if (this._handshakeDone !== null) {
          const done = this._handshakeDone;
          this._handshakeDone = null;
          done(new Error("Stream destroyed"));
        }
        if (this._drainDone !== null) {
          const done = this._drainDone;
          this._drainDone = null;
          done(new Error("Stream destroyed"));
        }
      }
      _write(data, cb) {
        let wrapped = this._outgoingWrapped;
        if (data !== this._outgoingPlain) {
          wrapped = b4a4.allocUnsafe(data.byteLength + 3 + ABYTES);
          wrapped.set(data, 4);
        } else {
          this._outgoingWrapped = this._outgoingPlain = null;
        }
        if (wrapped.byteLength - 3 > MAX_ATOMIC_WRITE) {
          return cb(
            new Error(
              "Message is too large for an atomic write. Max size is " + MAX_ATOMIC_WRITE + " bytes."
            )
          );
        }
        this.rawBytesWritten += wrapped.byteLength;
        writeUint24le(wrapped.byteLength - 3, wrapped);
        this._encrypt.next(wrapped.subarray(4, 4 + data.byteLength), wrapped.subarray(3));
        if (this._keepAliveTimer !== null) this._keepAliveTimer.refresh();
        if (this._rawStream.write(wrapped) === false) {
          this._drainDone = cb;
        } else {
          cb(null);
        }
      }
      _final(cb) {
        this._clearKeepAlive();
        this._ended--;
        this._rawStream.end();
        cb(null);
      }
      _resolveOpened(val) {
        if (this._openedDone === null) return;
        const opened = this._openedDone;
        this._openedDone = null;
        opened(val);
        if (!val) return;
        this.connected = true;
        this.emit("connect");
      }
      _clearTimeout() {
        if (this._timeoutTimer === null) return;
        this._timeoutTimer.destroy();
        this._timeoutTimer = null;
        this.timeout = 0;
      }
      _clearKeepAlive() {
        if (this._keepAliveTimer === null) return;
        this._keepAliveTimer.destroy();
        this._keepAliveTimer = null;
        this.keepAlive = 0;
      }
      _destroy(cb) {
        this._clearKeepAlive();
        this._clearTimeout();
        this._resolveOpened(false);
        cb(null);
      }
      _boxMessage(buffer) {
        const MB = sodium.crypto_secretbox_MACBYTES;
        const NB = sodium.crypto_secretbox_NONCEBYTES;
        const counter = this._sendState.subarray(64, 72);
        sodium.sodium_increment(counter);
        if (b4a4.equals(counter, this._sendState.subarray(72))) {
          this.destroy(new Error("udp send nonce exchausted"));
          return;
        }
        const secret = this._sendState.subarray(0, 32);
        const envelope = b4a4.allocUnsafe(8 + MB + buffer.byteLength);
        const nonce = envelope.subarray(0, NB);
        const ciphertext = envelope.subarray(8);
        b4a4.fill(nonce, 0);
        nonce.set(counter);
        sodium.crypto_secretbox_easy(ciphertext, buffer, nonce, secret);
        return envelope;
      }
      send(buffer) {
        if (!this._sendState) return;
        if (!this.rawStream?.send) return;
        const message = this._boxMessage(buffer);
        return this.rawStream.send(message);
      }
      trySend(buffer) {
        if (!this._sendState) return;
        if (!this.rawStream?.trySend) return;
        const message = this._boxMessage(buffer);
        this.rawStream.trySend(message);
      }
      _onmessage(buffer) {
        if (!this._sendState) return;
        const MB = sodium.crypto_secretbox_MACBYTES;
        const NB = sodium.crypto_secretbox_NONCEBYTES;
        if (buffer.byteLength < NB) return;
        const nonce = b4a4.allocUnsafe(NB);
        b4a4.fill(nonce, 0);
        nonce.set(buffer.subarray(0, 8));
        const secret = this._sendState.subarray(32, 64);
        const ciphertext = buffer.subarray(8);
        const plain = buffer.subarray(8, buffer.byteLength - MB);
        if (ciphertext.byteLength < MB) return;
        const success = sodium.crypto_secretbox_open_easy(plain, ciphertext, nonce, secret);
        if (success) this.emit("message", plain);
      }
      alloc(len) {
        const buf = b4a4.allocUnsafe(len + 3 + ABYTES);
        this._outgoingWrapped = buf;
        this._outgoingPlain = buf.subarray(4, buf.byteLength - ABYTES + 1);
        return this._outgoingPlain;
      }
      toJSON() {
        return {
          isInitiator: this.isInitiator,
          publicKey: this.publicKey && b4a4.toString(this.publicKey, "hex"),
          remotePublicKey: this.remotePublicKey && b4a4.toString(this.remotePublicKey, "hex"),
          connected: this.connected,
          destroying: this.destroying,
          destroyed: this.destroyed,
          rawStream: this.rawStream && this.rawStream.toJSON ? this.rawStream.toJSON() : null
        };
      }
    };
    function writeUint24le(n, buf) {
      buf[0] = n & 255;
      buf[1] = n >>> 8 & 255;
      buf[2] = n >>> 16 & 255;
    }
    function streamId(handshakeHash, isInitiator, out = b4a4.allocUnsafe(32)) {
      sodium.crypto_generichash(out, isInitiator ? NS_INITIATOR : NS_RESPONDER, handshakeHash);
      return out;
    }
    function toBuffer(data) {
      return typeof data === "string" ? b4a4.from(data) : data;
    }
    function destroyTimeout() {
      this.destroy(new Error("Stream timed out"));
    }
    function sendKeepAlive() {
      const empty = this.alloc(0);
      this.write(empty);
    }
  }
});

// node_modules/flat-tree/index.js
var require_flat_tree = __commonJS({
  "node_modules/flat-tree/index.js"(exports2) {
    exports2.fullRoots = function(index, result) {
      if (index & 1) throw new Error("You can only look up roots for depth(0) blocks");
      if (!result) result = [];
      index /= 2;
      let offset = 0;
      let factor = 1;
      while (true) {
        if (!index) return result;
        while (factor * 2 <= index) factor *= 2;
        result.push(offset + factor - 1);
        offset = offset + 2 * factor;
        index -= factor;
        factor = 1;
      }
    };
    exports2.futureRoots = function(index, result) {
      if (index & 1) throw new Error("You can only look up future roots for depth(0) blocks");
      if (!result) result = [];
      let factor = 1;
      while (factor * 2 <= index) factor *= 2;
      if (factor * 2 - 2 === index) return result;
      let pos = factor / 2 - 1;
      while (pos + factor / 2 - 1 !== index) {
        pos += factor;
        while (pos + factor / 2 - 1 > index) {
          factor /= 2;
          pos -= factor / 2;
        }
        result.push(pos - factor / 2);
      }
      return result;
    };
    exports2.patch = function(from, to) {
      if (from === 0 || from >= to) return [];
      const roots = exports2.fullRoots(from);
      const target = exports2.fullRoots(to);
      let i = 0;
      for (; i < target.length; i++) {
        if (i >= roots.length || roots[i] !== target[i]) break;
      }
      const patch = [];
      if (i < roots.length) {
        let prev = roots.length - 1;
        const ite = exports2.iterator(roots[prev--]);
        while (ite.index !== target[i]) {
          ite.sibling();
          if (prev >= 0 && ite.index === roots[prev]) {
            prev--;
          } else {
            patch.push(ite.index);
          }
          patch.push(ite.parent());
        }
        i++;
      }
      for (; i < target.length; i++) patch.push(target[i]);
      return patch;
    };
    exports2.depth = function(index) {
      let depth = 0;
      index += 1;
      while (!(index & 1)) {
        depth++;
        index = rightShift(index);
      }
      return depth;
    };
    exports2.sibling = function(index, depth) {
      if (!depth) depth = exports2.depth(index);
      const offset = exports2.offset(index, depth);
      return exports2.index(depth, offset & 1 ? offset - 1 : offset + 1);
    };
    exports2.parent = function(index, depth) {
      if (!depth) depth = exports2.depth(index);
      const offset = exports2.offset(index, depth);
      return exports2.index(depth + 1, rightShift(offset));
    };
    exports2.leftChild = function(index, depth) {
      if (!(index & 1)) return -1;
      if (!depth) depth = exports2.depth(index);
      return exports2.index(depth - 1, exports2.offset(index, depth) * 2);
    };
    exports2.rightChild = function(index, depth) {
      if (!(index & 1)) return -1;
      if (!depth) depth = exports2.depth(index);
      return exports2.index(depth - 1, 1 + exports2.offset(index, depth) * 2);
    };
    exports2.children = function(index, depth) {
      if (!(index & 1)) return null;
      if (!depth) depth = exports2.depth(index);
      const offset = exports2.offset(index, depth) * 2;
      return [
        exports2.index(depth - 1, offset),
        exports2.index(depth - 1, offset + 1)
      ];
    };
    exports2.leftSpan = function(index, depth) {
      if (!(index & 1)) return index;
      if (!depth) depth = exports2.depth(index);
      return exports2.offset(index, depth) * twoPow(depth + 1);
    };
    exports2.rightSpan = function(index, depth) {
      if (!(index & 1)) return index;
      if (!depth) depth = exports2.depth(index);
      return (exports2.offset(index, depth) + 1) * twoPow(depth + 1) - 2;
    };
    exports2.nextLeaf = function(index) {
      let factor = 1;
      let r = index;
      while ((r & 1) === 1) {
        r = (r - 1) / 2;
        factor *= 2;
      }
      return index + factor + 1;
    };
    exports2.count = function(index, depth) {
      if (!(index & 1)) return 1;
      if (!depth) depth = exports2.depth(index);
      return twoPow(depth + 1) - 1;
    };
    exports2.countLeaves = function(index) {
      return (exports2.count(index) + 1) / 2;
    };
    exports2.spans = function(index, depth) {
      if (!(index & 1)) return [index, index];
      if (!depth) depth = exports2.depth(index);
      const offset = exports2.offset(index, depth);
      const width = twoPow(depth + 1);
      return [offset * width, (offset + 1) * width - 2];
    };
    exports2.index = function(depth, offset) {
      return (1 + 2 * offset) * twoPow(depth) - 1;
    };
    exports2.offset = function(index, depth) {
      if (!(index & 1)) return index / 2;
      if (!depth) depth = exports2.depth(index);
      return ((index + 1) / twoPow(depth) - 1) / 2;
    };
    exports2.iterator = function(index) {
      const ite = new Iterator();
      ite.seek(index || 0);
      return ite;
    };
    function twoPow(n) {
      return n < 31 ? 1 << n : (1 << 30) * (1 << n - 30);
    }
    function rightShift(n) {
      return (n - (n & 1)) / 2;
    }
    function Iterator() {
      this.index = 0;
      this.offset = 0;
      this.factor = 0;
    }
    Iterator.prototype.seek = function(index) {
      this.index = index;
      if (this.index & 1) {
        this.offset = exports2.offset(index);
        this.factor = twoPow(exports2.depth(index) + 1);
      } else {
        this.offset = index / 2;
        this.factor = 2;
      }
    };
    Iterator.prototype.isLeft = function() {
      return (this.offset & 1) === 0;
    };
    Iterator.prototype.isRight = function() {
      return (this.offset & 1) === 1;
    };
    Iterator.prototype.isRoot = function(length) {
      const currentLength = 1 + (this.index + this.factor / 2 - 1) / 2;
      if (length < currentLength) return false;
      const factor = this.factor * 2;
      const index = this.offset & 1 ? this.index - this.factor / 2 : this.index + this.factor / 2;
      const parentLength = 1 + (index + factor / 2 - 1) / 2;
      return parentLength > length;
    };
    Iterator.prototype.contains = function(index) {
      return index > this.index ? index < this.index + this.factor / 2 : index < this.index ? index > this.index - this.factor / 2 : true;
    };
    Iterator.prototype.prev = function() {
      if (!this.offset) return this.index;
      this.offset--;
      this.index -= this.factor;
      return this.index;
    };
    Iterator.prototype.next = function() {
      this.offset++;
      this.index += this.factor;
      return this.index;
    };
    Iterator.prototype.count = function() {
      if (!(this.index & 1)) return 1;
      return this.factor - 1;
    };
    Iterator.prototype.countLeaves = function() {
      return (this.count() + 1) / 2;
    };
    Iterator.prototype.sibling = function() {
      return this.isLeft() ? this.next() : this.prev();
    };
    Iterator.prototype.parent = function() {
      if (this.offset & 1) {
        this.index -= this.factor / 2;
        this.offset = (this.offset - 1) / 2;
      } else {
        this.index += this.factor / 2;
        this.offset /= 2;
      }
      this.factor *= 2;
      return this.index;
    };
    Iterator.prototype.leftSpan = function() {
      this.index = this.index - this.factor / 2 + 1;
      this.offset = this.index / 2;
      this.factor = 2;
      return this.index;
    };
    Iterator.prototype.peekLeftSpan = function() {
      return this.index - this.factor / 2 + 1;
    };
    Iterator.prototype.rightSpan = function() {
      this.index = this.index + this.factor / 2 - 1;
      this.offset = this.index / 2;
      this.factor = 2;
      return this.index;
    };
    Iterator.prototype.peekRightSpan = function() {
      return this.index + this.factor / 2 - 1;
    };
    Iterator.prototype.leftChild = function() {
      if (this.factor === 2) return this.index;
      this.factor /= 2;
      this.index -= this.factor / 2;
      this.offset *= 2;
      return this.index;
    };
    Iterator.prototype.rightChild = function() {
      if (this.factor === 2) return this.index;
      this.factor /= 2;
      this.index += this.factor / 2;
      this.offset = 2 * this.offset + 1;
      return this.index;
    };
    Iterator.prototype.nextTree = function() {
      this.index = this.index + this.factor / 2 + 1;
      this.offset = this.index / 2;
      this.factor = 2;
      return this.index;
    };
    Iterator.prototype.prevTree = function() {
      if (!this.offset) {
        this.index = 0;
        this.factor = 2;
      } else {
        this.index = this.index - this.factor / 2 - 1;
        this.offset = this.index / 2;
        this.factor = 2;
      }
      return this.index;
    };
    Iterator.prototype.fullRoot = function(index) {
      if (index <= this.index || (this.index & 1) > 0) return false;
      while (index > this.index + this.factor + this.factor / 2) {
        this.index += this.factor / 2;
        this.factor *= 2;
        this.offset /= 2;
      }
      return true;
    };
  }
});

// node_modules/hypercore/lib/feature-flags.js
var require_feature_flags = __commonJS({
  "node_modules/hypercore/lib/feature-flags.js"(exports2, module2) {
    module2.exports = {
      SMALL_WANTS: 1
    };
  }
});

// node_modules/hypercore/lib/wants.js
var require_wants = __commonJS({
  "node_modules/hypercore/lib/wants.js"(exports2) {
    var COMPAT = true;
    var BATCH_UINTS = COMPAT ? 65536 : 128;
    var BATCH_BYTES = BATCH_UINTS * 4;
    var BATCH = BATCH_BYTES * 8;
    var MAX_REMOTE_BATCHES = 4;
    var MAX_RANGE = 8 * 256 * 1024;
    var MIN_RANGE = 32;
    var MAX = 512;
    var MAX_ANY = 16;
    var LocalWants = class {
      constructor(peer) {
        this.destroyed = false;
        this.peer = peer;
        this.wants = /* @__PURE__ */ new Map();
        this.free = /* @__PURE__ */ new Set();
        this.any = null;
      }
      add(index, handle) {
        const b = (index - (index & BATCH - 1)) / BATCH;
        return this.addBatch(b, handle);
      }
      addAnyRange(start, length, handle) {
        if (this.destroyed) return null;
        if (this.any === null) this.any = [];
        if (COMPAT) {
          let r = start & BATCH - 1;
          start -= r;
          length += r;
          r = length & BATCH - 1;
          if (r) length = length - r + BATCH;
        }
        for (let i = 0; i < this.any.length; i++) {
          const w2 = this.any[i];
          if (w2.start === start && w2.length === length) {
            w2.handles.add(handle);
            handle.addWant(w2);
            return null;
          }
        }
        const w = { wants: this, start, length, any: true, handles: /* @__PURE__ */ new Set([handle]) };
        this.any.push(w);
        handle.addWant(w);
        return { start, length, any: !COMPAT };
      }
      removeAnyRange(start, length, handle) {
        if (this.any === null) return null;
        for (let i = 0; i < this.any.length; i++) {
          const w = this.any[i];
          if (w.start !== start || w.length !== length) continue;
          w.handles.delete(handle);
          handle.removeWant(w);
          if (w.handles.size > 0) return null;
          const head = this.any.pop();
          if (head !== w) this.any[i] = head;
          return { start, length, any: !COMPAT };
        }
        return null;
      }
      addBatch(index, handle) {
        if (this.destroyed) return null;
        let w = this.wants.get(index);
        if (w) {
          const size = w.handles.size;
          w.handles.add(handle);
          if (w.handles.size !== size) {
            handle.addWant(w);
          }
          return null;
        }
        w = { wants: this, start: index, length: 0, any: false, handles: /* @__PURE__ */ new Set([handle]) };
        if (this.free.has(index)) {
          this.free.delete(index);
          this.wants.set(index, w);
          handle.addWant(w);
          return null;
        }
        let unwant = null;
        if (this.wants.size + this.free.size === MAX) {
          if (this.free.size === 0) {
            return null;
          }
          unwant = this._unwant();
        }
        this.wants.set(index, w);
        handle.addWant(w);
        return {
          want: { start: index * BATCH, length: BATCH, any: false },
          unwant
        };
      }
      remove(index, handle) {
        const b = (index - (index & BATCH - 1)) / BATCH;
        return this.removeBatch(b, handle);
      }
      removeBatch(index, handle) {
        if (this.destroyed) return false;
        const w = this.wants.get(index);
        if (!w) {
          return false;
        }
        w.handles.delete(handle);
        handle.removeWant(w);
        if (w.handles.size === 0) {
          this.free.add(index);
          this.wants.delete(index);
          return this.free.size === 1 && this.wants.size === MAX - 1;
        }
        return false;
      }
      destroy() {
        if (this.destroyed) return;
        this.destroyed = true;
        for (const w of this.wants.values()) {
          for (const handle of w.handles) {
            handle.removeWant(w);
          }
        }
        this.wants.clear();
      }
      _unwant() {
        for (const index of this.free) {
          this.free.delete(index);
          return { start: index * BATCH, length: BATCH, any: false };
        }
        return null;
      }
    };
    var RemoteWants = class {
      constructor() {
        this.any = null;
        this.all = false;
        this.size = 0;
        this.batches = [];
      }
      hasAny(start, length) {
        for (let i = 0; i < this.any.length; i++) {
          const a = this.any[i];
          const e = start + length;
          const end = a.start + a.length;
          if (a.start <= start && start < end) return true;
          if (a.start < e && e <= end) return true;
        }
        return this.all;
      }
      hasRange(start, length) {
        if (this.any !== null && this.hasAny(start, length)) return true;
        if (length === 1) return this.has(start);
        let smallest = -1;
        for (let i = 0; i < this.batches.length; i++) {
          const b = this.batches[i];
          if (b.length < smallest || smallest === -1) smallest = b.length;
        }
        if (smallest === -1) return this.all;
        const r = start & smallest - 1;
        const end = start + length;
        let max = 3;
        for (let i = start - r; i < end; i += smallest) {
          if (max-- === 0) return true;
          if (this.has(i)) return true;
        }
        return this.all;
      }
      has(index) {
        for (let i = 0; i < this.batches.length; i++) {
          const b = this.batches[i];
          const block = (index - (index & b.length - 1)) / b.length;
          if (b.ranges.has(block)) return true;
        }
        return this.all;
      }
      add(range) {
        if (range.any) {
          if (this.any === null) this.any = [];
          if (this.any.length < MAX_ANY) this.any.push(range);
          else this.all = true;
          return true;
        }
        if (range.length > MAX_RANGE) return false;
        if (!validateBatchRange(range)) {
          this.all = true;
          return true;
        }
        if (this.size >= MAX) {
          this.all = true;
          return true;
        }
        for (let i = 0; i < this.batches.length; i++) {
          const b = this.batches[i];
          if (b.length === range.length) {
            b.ranges.add(range.start / range.length);
            this.size++;
            return true;
          }
        }
        if (this.batches.length >= MAX_REMOTE_BATCHES) {
          this.all = true;
          return true;
        }
        this.batches.push({
          length: range.length,
          ranges: /* @__PURE__ */ new Set([range.start / range.length])
        });
        this.size++;
        return true;
      }
      remove(range) {
        if (range.any) {
          if (this.any === null) return false;
          for (let i = 0; i < this.any.length; i++) {
            const a = this.any[i];
            if (a.start === range.start && a.length === range.length) {
              const head = this.any.pop();
              if (head !== a) this.any[i] = head;
              return true;
            }
          }
          return false;
        }
        if (!validateBatchRange(range)) return false;
        for (let i = 0; i < this.batches.length; i++) {
          const b = this.batches[i];
          if (b.length !== range.length) continue;
          const size = b.ranges.size;
          b.ranges.delete(range.start / range.length);
          if (b.ranges.size !== size) this.size--;
          if (b.ranges.size === 0) {
            const head = this.batches.pop();
            if (head !== b) this.batches[i] = head;
          }
          return true;
        }
        return false;
      }
    };
    function UPDATE_COMPAT(isCompat) {
      COMPAT = isCompat;
      BATCH_UINTS = COMPAT ? 65536 : 128;
      BATCH_BYTES = BATCH_UINTS * 4;
      BATCH = BATCH_BYTES * 8;
      exports2.WANT_BATCH = BATCH;
    }
    exports2.LocalWants = LocalWants;
    exports2.RemoteWants = RemoteWants;
    exports2.WANT_BATCH = BATCH;
    exports2.UPDATE_COMPAT = UPDATE_COMPAT;
    function validateBatchRange(range) {
      if (range.length > MAX_RANGE || range.length < MIN_RANGE) {
        return false;
      }
      if ((range.length & range.length - 1) !== 0) {
        return false;
      }
      if (range.start & range.length - 1) {
        return false;
      }
      return true;
    }
  }
});

// node_modules/big-sparse-array/index.js
var require_big_sparse_array = __commonJS({
  "node_modules/big-sparse-array/index.js"(exports2, module2) {
    var FACTOR = new Uint16Array(8);
    function factor4096(i, n) {
      while (n > 0) {
        const f = i & 4095;
        FACTOR[--n] = f;
        i = (i - f) / 4096;
      }
      return FACTOR;
    }
    module2.exports = class BigSparseArray {
      constructor() {
        this.tiny = new TinyArray();
        this.maxLength = 4096;
        this.factor = 1;
      }
      set(index, val) {
        if (val !== void 0) {
          while (index >= this.maxLength) {
            this.maxLength *= 4096;
            this.factor++;
            if (!this.tiny.isEmptyish()) {
              const t = new TinyArray();
              t.set(0, this.tiny);
              this.tiny = t;
            }
          }
        }
        const f = factor4096(index, this.factor);
        const last = this.factor - 1;
        let tiny = this.tiny;
        for (let i = 0; i < last; i++) {
          const next = tiny.get(f[i]);
          if (next === void 0) {
            if (val === void 0) return;
            tiny = tiny.set(f[i], new TinyArray());
          } else {
            tiny = next;
          }
        }
        return tiny.set(f[last], val);
      }
      get(index) {
        if (index >= this.maxLength) return;
        const f = factor4096(index, this.factor);
        const last = this.factor - 1;
        let tiny = this.tiny;
        for (let i = 0; i < last; i++) {
          tiny = tiny.get(f[i]);
          if (tiny === void 0) return;
        }
        return tiny.get(f[last]);
      }
    };
    var TinyArray = class {
      constructor() {
        this.s = 0;
        this.b = new Array(1);
        this.f = new Uint16Array(1);
      }
      isEmptyish() {
        return this.b.length === 1 && this.b[0] === void 0;
      }
      get(i) {
        if (this.s === 12) return this.b[i];
        const f = i >>> this.s;
        const r = i & this.b.length - 1;
        return this.f[r] === f ? this.b[r] : void 0;
      }
      set(i, v) {
        while (this.s !== 12) {
          const f = i >>> this.s;
          const r = i & this.b.length - 1;
          const o = this.b[r];
          if (o === void 0 || f === this.f[r]) {
            this.b[r] = v;
            this.f[r] = f;
            return v;
          }
          this.grow();
        }
        this.b[i] = v;
        return v;
      }
      grow() {
        const os = this.s;
        const ob = this.b;
        const of = this.f;
        this.s += 4;
        this.b = new Array(this.b.length << 4);
        this.f = this.s === 12 ? null : new Uint8Array(this.b.length);
        const m = this.b.length - 1;
        for (let or = 0; or < ob.length; or++) {
          if (ob[or] === void 0) continue;
          const i = of[or] << os | or;
          const f = i >>> this.s;
          const r = i & m;
          this.b[r] = ob[or];
          if (this.s !== 12) this.f[r] = f;
        }
      }
    };
  }
});

// node_modules/simdle-universal/scalar.js
var require_scalar = __commonJS({
  "node_modules/simdle-universal/scalar.js"(exports2) {
    var clz = exports2.clz = function clz2(n) {
      return Math.clz32(n);
    };
    exports2.clo = function clo(n) {
      return clz(~n);
    };
    var ctz = exports2.ctz = function ctz2(n) {
      return 32 - (n === 0 ? 0 : clz(n & -n) + 1);
    };
    exports2.cto = function cto(n) {
      return ctz(~n);
    };
    exports2.cnt = function cnt(n) {
      n = n - (n >>> 1 & 1431655765);
      n = (n & 858993459) + (n >>> 2 & 858993459);
      n = n + (n >>> 4) & 252645135;
      n = n * 16843009 >>> 24;
      return n;
    };
  }
});

// node_modules/simdle-universal/fallback.js
var require_fallback = __commonJS({
  "node_modules/simdle-universal/fallback.js"(exports2) {
    var b4a4 = require_b4a();
    var scalar = require_scalar();
    function view(buf, n) {
      if (n === buf.BYTES_PER_ELEMENT) return buf;
      let TypedArray;
      if (n === 1) TypedArray = Uint8Array;
      else if (n === 2) TypedArray = Uint16Array;
      else TypedArray = Uint32Array;
      return new TypedArray(buf.buffer, buf.byteOffset, buf.byteLength / n);
    }
    function unary(u8, u16 = u8, u32 = u16) {
      return function unary2(buf, result = b4a4.allocUnsafe(buf.byteLength)) {
        if (buf.byteLength % 16 !== 0) {
          throw new Error("Buffer length must be a multiple of 16");
        }
        if (buf.byteLength !== result.byteLength) {
          throw new Error("Length of result buffer is insufficient");
        }
        const n = buf.BYTES_PER_ELEMENT;
        if (n === 1) u8(buf, view(result, n));
        else if (n === 2) u16(buf, view(result, n));
        else u32(buf, view(result, n));
        return result;
      };
    }
    function binary(u8, u16 = u8, u32 = u16) {
      return function binary2(a, b, result = b4a4.allocUnsafe(a.byteLength)) {
        if (a.byteLength % 16 !== 0) {
          throw new Error("Buffer length must be a multiple of 16");
        }
        if (a.byteLength !== b.byteLength || a.byteLength !== result.byteLength) {
          throw new Error("Buffers must be the same length");
        }
        const n = a.BYTES_PER_ELEMENT;
        if (n === 1) u8(a, b, view(result, n));
        else if (n === 2) u16(a, b, view(result, n));
        else u32(a, b, view(result, n));
        return result;
      };
    }
    function reduce(u8, u16 = u8, u32 = u16) {
      return function reduce2(buf) {
        if (buf.byteLength % 16 !== 0) {
          throw new Error("Buffer length must be a multiple of 16");
        }
        const n = buf.BYTES_PER_ELEMENT;
        if (n === 1) return u8(buf);
        if (n === 2) return u16(buf);
        return u32(buf);
      };
    }
    exports2.allo = function allo(buf) {
      if (buf.byteLength % 16 !== 0) {
        throw new Error("Buffer length must be a multiple of 16");
      }
      const m = 2 ** (buf.BYTES_PER_ELEMENT * 8) - 1;
      for (let i = 0, n = buf.length; i < n; i++) {
        if (buf[i] !== m) return false;
      }
      return true;
    };
    exports2.allz = function allz(buf) {
      if (buf.byteLength % 16 !== 0) {
        throw new Error("Buffer length must be a multiple of 16");
      }
      for (let i = 0, n = buf.length; i < n; i++) {
        if (buf[i] !== 0) return false;
      }
      return true;
    };
    exports2.and = binary(
      (a, b, result) => {
        for (let i = 0, n = result.length; i < n; i++) {
          result[i] = a[i] & b[i];
        }
      }
    );
    exports2.clear = binary(
      (a, b, result) => {
        for (let i = 0, n = result.length; i < n; i++) {
          result[i] = a[i] & ~b[i];
        }
      }
    );
    exports2.clo = unary(
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = 24 - scalar.clo(buf[i]);
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = 16 - scalar.clo(buf[i]);
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = scalar.clo(buf[i]);
        }
      }
    );
    exports2.clz = unary(
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = 24 - scalar.clz(buf[i]);
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = 16 - scalar.clz(buf[i]);
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = scalar.clz(buf[i]);
        }
      }
    );
    exports2.cnt = unary(
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = scalar.cnt(buf[i]) & 255;
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = scalar.cnt(buf[i]) & 65535;
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = scalar.cnt(buf[i]);
        }
      }
    );
    exports2.cto = unary(
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = Math.min(scalar.cto(buf[i]), 8);
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = Math.min(scalar.cto(buf[i]), 16);
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = scalar.cto(buf[i]);
        }
      }
    );
    exports2.ctz = unary(
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = Math.min(scalar.ctz(buf[i]), 8);
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = Math.min(scalar.ctz(buf[i]), 16);
        }
      },
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = scalar.ctz(buf[i]);
        }
      }
    );
    exports2.not = unary(
      (buf, result) => {
        for (let i = 0, n = buf.length; i < n; i++) {
          result[i] = ~buf[i];
        }
      }
    );
    exports2.or = binary(
      (a, b, result) => {
        for (let i = 0, n = result.length; i < n; i++) {
          result[i] = a[i] | b[i];
        }
      }
    );
    exports2.sum = reduce(
      (buf) => {
        let result = 0n;
        for (let i = 0, n = buf.length; i < n; i++) {
          result += BigInt(buf[i]);
        }
        return result;
      }
    );
    exports2.xor = binary(
      (a, b, result) => {
        for (let i = 0, n = result.length; i < n; i++) {
          result[i] = a[i] ^ b[i];
        }
      }
    );
  }
});

// node_modules/simdle-universal/index.js
var require_simdle_universal = __commonJS({
  "node_modules/simdle-universal/index.js"(exports2, module2) {
    try {
      module2.exports = require("simdle-native");
    } catch {
      module2.exports = require_fallback();
    }
  }
});

// node_modules/quickbit-universal/fallback.js
var require_fallback2 = __commonJS({
  "node_modules/quickbit-universal/fallback.js"(exports2) {
    var simdle = require_simdle_universal();
    var INDEX_LEN = (16 + 128 * 16) * 2;
    var get = exports2.get = function get2(field, bit) {
      const n = field.byteLength * 8;
      if (bit < 0) bit += n;
      if (bit < 0 || bit >= n) return false;
      const m = field.BYTES_PER_ELEMENT * 8;
      const offset = bit & m - 1;
      const i = (bit - offset) / m;
      return (field[i] & 1 << offset) !== 0;
    };
    var set = exports2.set = function set2(field, bit, value = true) {
      const n = field.byteLength * 8;
      if (bit < 0) bit += n;
      if (bit < 0 || bit >= n) return false;
      const m = field.BYTES_PER_ELEMENT * 8;
      const offset = bit & m - 1;
      const i = (bit - offset) / m;
      const mask = 1 << offset;
      if (value) {
        if ((field[i] & mask) !== 0) return false;
      } else {
        if ((field[i] & mask) === 0) return false;
      }
      field[i] ^= mask;
      return true;
    };
    exports2.fill = function fill(field, value, start = 0, end = field.byteLength * 8) {
      const n = field.byteLength * 8;
      if (start < 0) start += n;
      if (end < 0) end += n;
      if (start < 0 || start >= field.byteLength * 8 || start >= end) return field;
      const m = field.BYTES_PER_ELEMENT * 8;
      let i, j;
      {
        const offset = start & m - 1;
        i = (start - offset) / m;
        if (offset !== 0) {
          let shift = m - offset;
          if (end - start < shift) shift = end - start;
          const mask = (1 << shift) - 1 << offset;
          if (value) field[i] |= mask;
          else field[i] &= ~mask;
          i++;
        }
      }
      {
        const offset = end & m - 1;
        j = (end - offset) / m;
        if (offset !== 0 && j >= i) {
          const mask = (1 << offset) - 1;
          if (value) field[j] |= mask;
          else field[j] &= ~mask;
        }
      }
      if (i < j) field.fill(value ? 2 ** m - 1 : 0, i, j);
      return field;
    };
    exports2.clear = function clear(field, ...chunks) {
      const n = field.byteLength;
      for (const chunk of chunks) {
        if (chunk.offset >= n) continue;
        const m = chunk.field.byteLength;
        let i = chunk.offset;
        let j = 0;
        while (((i & 15) !== 0 || (j & 15) !== 0) && i < n && j < m) {
          field[i] = field[i] & ~chunk.field[j];
          i++;
          j++;
        }
        if (i + 15 < n && j + 15 < m) {
          const len = Math.min(n - (n & 15) - i, m - (m & 15) - j);
          simdle.clear(field.subarray(i, i + len), chunk.field.subarray(j, j + len), field.subarray(i, i + len));
        }
        while (i < n && j < m) {
          field[i] = field[i] & ~chunk.field[j];
          i++;
          j++;
        }
      }
    };
    function bitOffset(bit, offset) {
      return !bit ? offset : INDEX_LEN * 8 / 2 + offset;
    }
    function byteOffset(bit, offset) {
      return !bit ? offset : INDEX_LEN / 2 + offset;
    }
    exports2.findFirst = function findFirst2(field, value, position = 0) {
      const n = field.byteLength * 8;
      if (position < 0) position += n;
      if (position < 0) position = 0;
      if (position >= n) return -1;
      value = !!value;
      for (let i = position; i < n; i++) {
        if (get(field, i) === value) return i;
      }
      return -1;
    };
    exports2.findLast = function findLast2(field, value, position = field.byteLength * 8 - 1) {
      const n = field.byteLength * 8;
      if (position < 0) position += n;
      if (position < 0) return -1;
      if (position >= n) position = n - 1;
      value = !!value;
      for (let i = position; i >= 0; i--) {
        if (get(field, i) === value) return i;
      }
      return -1;
    };
    var Index = exports2.Index = class Index {
      static from(fieldOrChunks, byteLength = -1) {
        if (Array.isArray(fieldOrChunks)) {
          return new SparseIndex(fieldOrChunks, byteLength);
        } else {
          return new DenseIndex(fieldOrChunks, byteLength);
        }
      }
      constructor(byteLength) {
        this._byteLength = byteLength;
        this.handle = new Uint32Array(INDEX_LEN / 4);
      }
      get byteLength() {
        return this._byteLength;
      }
      skipFirst(value, position = 0) {
        const n = this.byteLength * 8;
        if (position < 0) position += n;
        if (position < 0) position = 0;
        if (position >= n) return n - 1;
        let i = Math.floor(position / 16384);
        if (i > 127) return position;
        while (i <= 127 && get(this.handle, bitOffset(value, i))) {
          i++;
        }
        if (i === 128) return n - 1;
        let k = i * 16384;
        let j = 0;
        if (position > k) j = Math.floor((position - k) / 128);
        while (j <= 127 && get(this.handle, bitOffset(value, i * 128 + j + 128))) {
          j++;
          k += 128;
        }
        if (j === 128 && i !== 127) return this.skipFirst(value, (i + 1) * 16384);
        if (k > position) position = k;
        return position < n ? position : n - 1;
      }
      skipLast(value, position = this.byteLength * 8 - 1) {
        const n = this.byteLength * 8;
        if (position < 0) position += n;
        if (position < 0) return 0;
        if (position >= n) position = n - 1;
        let i = Math.floor(position / 16384);
        if (i > 127) return position;
        while (i >= 0 && get(this.handle, bitOffset(value, i))) {
          i--;
        }
        if (i === -1) return 0;
        let k = (i + 1) * 16384 - 1;
        let j = 127;
        if (position < k) j = 128 - Math.ceil((k - position) / 128);
        while (j >= 0 && get(this.handle, bitOffset(value, i * 128 + j + 128))) {
          j--;
          k -= 128;
        }
        if (j === -1 && i !== 0) return this.skipLast(value, i * 16384 - 1);
        if (k < position) position = k;
        return position;
      }
    };
    var DenseIndex = class extends Index {
      constructor(field, byteLength) {
        super(byteLength);
        this.field = field;
        const m = field.BYTES_PER_ELEMENT;
        for (let i = 0; i < 128; i++) {
          for (let j = 0; j < 128; j++) {
            const offset = (i * 128 + j) * 16;
            let allz = true;
            let allo = false;
            if (offset + 16 <= this.field.byteLength) {
              const vec = this.field.subarray(offset / m, (offset + 16) / m);
              allz = simdle.allz(vec);
              allo = simdle.allo(vec);
            }
            const k = i * 128 + 128 + j;
            set(this.handle, bitOffset(false, k), allz);
            set(this.handle, bitOffset(true, k), allo);
          }
          {
            const offset = byteOffset(false, i * 16 + 16) / 4;
            const allo = simdle.allo(this.handle.subarray(offset, offset + 4));
            set(this.handle, bitOffset(false, i), allo);
          }
          {
            const offset = byteOffset(true, i * 16 + 16) / 4;
            const allo = simdle.allo(this.handle.subarray(offset, offset + 4));
            set(this.handle, bitOffset(true, i), allo);
          }
        }
      }
      get byteLength() {
        if (this._byteLength !== -1) return this._byteLength;
        return this.field.byteLength;
      }
      update(bit) {
        const n = this.byteLength * 8;
        if (bit < 0) bit += n;
        if (bit < 0 || bit >= n) return false;
        const m = this.field.BYTES_PER_ELEMENT;
        const i = Math.floor(bit / 16384);
        const j = Math.floor(bit / 128);
        const offset = j * 16 / m;
        const vec = this.field.subarray(offset, offset + 16 / m);
        const allz = simdle.allz(vec);
        const allo = simdle.allo(vec);
        let changed = false;
        if (set(this.handle, bitOffset(false, 128 + j), allz)) {
          changed = true;
          const offset2 = byteOffset(false, i * 16 + 16) / 4;
          const allo2 = simdle.allo(this.handle.subarray(offset2, offset2 + 4));
          set(this.handle, bitOffset(false, i), allo2);
        }
        if (set(this.handle, bitOffset(true, 128 + j), allo)) {
          changed = true;
          const offset2 = byteOffset(true, i * 16 + 16) / 4;
          const allo2 = simdle.allo(this.handle.subarray(offset2, offset2 + 4));
          set(this.handle, bitOffset(true, i), allo2);
        }
        return changed;
      }
    };
    function selectChunk(chunks, offset) {
      for (let i = 0; i < chunks.length; i++) {
        const next = chunks[i];
        const start = next.offset;
        const end = next.offset + next.field.byteLength;
        if (offset >= start && offset + 16 <= end) {
          return next;
        }
      }
      return null;
    }
    var SparseIndex = class extends Index {
      constructor(chunks, byteLength) {
        super(byteLength);
        this.chunks = chunks;
        for (let i = 0; i < 128; i++) {
          for (let j = 0; j < 128; j++) {
            const offset = (i * 128 + j) * 16;
            let allz = true;
            let allo = false;
            const chunk = selectChunk(this.chunks, offset);
            if (chunk !== null) {
              const m = chunk.field.BYTES_PER_ELEMENT;
              const vec = chunk.field.subarray((offset - chunk.offset) / m, (offset - chunk.offset + 16) / m);
              allz = simdle.allz(vec);
              allo = simdle.allo(vec);
            }
            const k = i * 128 + 128 + j;
            set(this.handle, bitOffset(false, k), allz);
            set(this.handle, bitOffset(true, k), allo);
          }
          {
            const offset = byteOffset(false, i * 16 + 16) / 4;
            const allo = simdle.allo(this.handle.subarray(offset, offset + 4));
            set(this.handle, bitOffset(false, i), allo);
          }
          {
            const offset = byteOffset(true, i * 16 + 16) / 4;
            const allo = simdle.allo(this.handle.subarray(offset, offset + 4));
            set(this.handle, bitOffset(true, i), allo);
          }
        }
      }
      get byteLength() {
        if (this._byteLength !== -1) return this._byteLength;
        const last = this.chunks[this.chunks.length - 1];
        return last ? last.offset + last.field.byteLength : 0;
      }
      update(bit) {
        const n = this.byteLength * 8;
        if (bit < 0) bit += n;
        if (bit < 0 || bit >= n) return false;
        const i = Math.floor(bit / 16384);
        const j = Math.floor(bit / 128);
        const offset = j * 16;
        const chunk = selectChunk(this.chunks, offset);
        if (chunk === null) return false;
        const m = chunk.field.BYTES_PER_ELEMENT;
        const vec = chunk.field.subarray((offset - chunk.offset) / m, (offset - chunk.offset + 16) / m);
        const allz = simdle.allz(vec);
        const allo = simdle.allo(vec);
        let changed = false;
        if (set(this.handle, bitOffset(false, 128 + j), allz)) {
          changed = true;
          const offset2 = byteOffset(false, i * 16 + 16) / 4;
          const allo2 = simdle.allo(this.handle.subarray(offset2, offset2 + 4));
          set(this.handle, bitOffset(false, i), allo2);
        }
        if (set(this.handle, bitOffset(true, 128 + j), allo)) {
          changed = true;
          const offset2 = byteOffset(true, i * 16 + 16) / 4;
          const allo2 = simdle.allo(this.handle.subarray(offset2, offset2 + 4));
          set(this.handle, bitOffset(true, i), allo2);
        }
        return changed;
      }
    };
  }
});

// node_modules/quickbit-universal/index.js
var require_quickbit_universal = __commonJS({
  "node_modules/quickbit-universal/index.js"(exports2, module2) {
    var fallback = require_fallback2();
    try {
      const native = require("quickbit-native");
      exports2.get = fallback.get;
      exports2.set = fallback.set;
      exports2.fill = fallback.fill;
      exports2.clear = native.clear;
      exports2.findFirst = native.findFirst;
      exports2.findLast = native.findLast;
      exports2.Index = native.Index;
    } catch {
      module2.exports = fallback;
    }
  }
});

// node_modules/hypercore/lib/compat.js
var require_compat = __commonJS({
  "node_modules/hypercore/lib/compat.js"(exports2) {
    var quickbit = require_quickbit_universal();
    if (typeof quickbit.findFirst !== "function" || typeof quickbit.findLast !== "function" || typeof quickbit.clear !== "function") {
      quickbit = require_fallback2();
    }
    exports2.quickbit = quickbit;
  }
});

// node_modules/hypercore/lib/mark-bitfield.js
var require_mark_bitfield = __commonJS({
  "node_modules/hypercore/lib/mark-bitfield.js"(exports2, module2) {
    var BigSparseArray = require_big_sparse_array();
    var { Transform } = require_streamx();
    var quickbit = require_compat().quickbit;
    var b4a4 = require_b4a();
    var BITS_PER_PAGE = 32768;
    var BYTES_PER_PAGE = BITS_PER_PAGE / 8;
    var MarkPage = class {
      constructor() {
        this.bitfield = null;
        this.loaded = new Promise((resolve) => {
          this.load = resolve;
        });
      }
      setBitfield(bitfield) {
        this.bitfield = bitfield;
        this.load();
      }
      get(index) {
        return quickbit.get(this.bitfield, index);
      }
      set(index, val) {
        quickbit.set(this.bitfield, index, val);
      }
    };
    module2.exports = class MarkBitfield {
      static BITS_PER_PAGE = BITS_PER_PAGE;
      static BYTES_PER_PAGE = BYTES_PER_PAGE;
      constructor(storage) {
        this.storage = storage;
        this._pages = new BigSparseArray();
      }
      async loadPage(pageIndex) {
        const p = this._pages.set(pageIndex, new MarkPage());
        const rx = this.storage.read();
        const pageBuf = rx.getMark(pageIndex);
        rx.tryFlush();
        const bitfield = await pageBuf ?? b4a4.alloc(BYTES_PER_PAGE);
        await p.setBitfield(bitfield);
        return p;
      }
      async get(index) {
        const j = index & BITS_PER_PAGE - 1;
        const i = (index - j) / BITS_PER_PAGE;
        let p = this._pages.get(i);
        if (!p) p = await this.loadPage(i);
        return p.get(j);
      }
      async set(index, val) {
        const j = index & BITS_PER_PAGE - 1;
        const i = (index - j) / BITS_PER_PAGE;
        let p = this._pages.get(i);
        if (!p && val) p = await this.loadPage(i);
        if (p) {
          await p.loaded;
          p.set(j, val);
          const tx = this.storage.write();
          tx.putMark(i, p.bitfield);
          await tx.flush();
        }
      }
      async clear() {
        const tx = this.storage.write();
        tx.deleteMarkRange(0, -1);
        await tx.flush();
        this._pages = new BigSparseArray();
      }
      createMarkStream({ reverse = false } = {}) {
        return this.storage.createMarkStream({ reverse }).pipe(
          new Transform({
            transform({ index, page }, cb) {
              let bitIndex = reverse ? quickbit.findLast(page, true, BITS_PER_PAGE) : quickbit.findFirst(page, true, 0);
              while (bitIndex !== -1) {
                const blockIndex = index * BITS_PER_PAGE + bitIndex;
                this.push(blockIndex);
                if (bitIndex === 0 && reverse) break;
                bitIndex = reverse ? quickbit.findLast(page, true, bitIndex - 1) : quickbit.findFirst(page, true, bitIndex + 1);
              }
              cb(null);
            }
          })
        );
      }
    };
  }
});

// node_modules/hypercore/lib/inspect.js
var require_inspect = __commonJS({
  "node_modules/hypercore/lib/inspect.js"(exports2, module2) {
    var b4a4 = require_b4a();
    module2.exports = function(core, depth, opts) {
      let indent = "";
      if (typeof opts.indentationLvl === "number") {
        while (indent.length < opts.indentationLvl) indent += " ";
      }
      let peers = "";
      const min = Math.min(core.peers.length, 5);
      for (let i = 0; i < min; i++) {
        const peer = core.peers[i];
        peers += `${indent}    Peer(
`;
        peers += `${indent}      remotePublicKey: ${opts.stylize(toHex(peer.remotePublicKey), "string")}
`;
        peers += `${indent}      remoteLength: ${opts.stylize(peer.remoteLength, "number")}
`;
        peers += `${indent}      remoteFork: ${opts.stylize(peer.remoteFork, "number")}
`;
        peers += `${indent}      remoteCanUpgrade: ${opts.stylize(peer.remoteCanUpgrade, "boolean")}
`;
        peers += `${indent}    )
`;
      }
      if (core.peers.length > 5) {
        peers += `${indent}  ... and ${core.peers.length - 5} more
`;
      }
      if (peers) peers = `[
${peers}${indent}  ]`;
      else peers = `[ ${opts.stylize(0, "number")} ]`;
      return `${core.constructor.name}(
${indent}  id: ${opts.stylize(core.id, "string")}
${indent}  key: ${opts.stylize(toHex(core.key), "string")}
${indent}  discoveryKey: ${opts.stylize(toHex(core.discoveryKey), "string")}
${indent}  opened: ${opts.stylize(core.opened, "boolean")}
${indent}  closed: ${opts.stylize(core.closed, "boolean")}
${indent}  snapshotted: ${opts.stylize(core.snapshotted, "boolean")}
${indent}  writable: ${opts.stylize(core.writable, "boolean")}
${indent}  length: ${opts.stylize(core.length, "number")}
${indent}  fork: ${opts.stylize(core.fork, "number")}
${indent}  sessions: [ ${opts.stylize(core.sessions.length, "number")} ]
${indent}  activeRequests: [ ${opts.stylize(core.activeRequests.length, "number")} ]
${indent}  peers: ${peers}
${indent})`;
    };
    function toHex(buf) {
      return buf && b4a4.toString(buf, "hex");
    }
  }
});

// node_modules/hypercore/lib/mutex.js
var require_mutex = __commonJS({
  "node_modules/hypercore/lib/mutex.js"(exports2, module2) {
    module2.exports = class Mutex {
      constructor() {
        this.locked = false;
        this.destroyed = false;
        this._destroying = null;
        this._destroyError = null;
        this._queue = [];
        this._enqueue = (resolve, reject) => this._queue.push([resolve, reject]);
      }
      idle() {
        return this._queue.length === 0 && this.locked === false;
      }
      lock() {
        if (this.destroyed) {
          return Promise.reject(this._destroyError || new Error("Mutex has been destroyed"));
        }
        if (this.locked) return new Promise(this._enqueue);
        this.locked = true;
        return Promise.resolve();
      }
      unlock() {
        if (!this._queue.length) {
          this.locked = false;
          return;
        }
        this._queue.shift()[0]();
      }
      destroy(err) {
        if (!this._destroying) {
          this._destroying = this.locked ? this.lock().catch(() => {
          }) : Promise.resolve();
        }
        this.destroyed = true;
        if (err) this._destroyError = err;
        if (err) {
          while (this._queue.length) this._queue.shift()[1](err);
        }
        return this._destroying;
      }
    };
  }
});

// node_modules/hypercore/lib/caps.js
var require_caps = __commonJS({
  "node_modules/hypercore/lib/caps.js"(exports2) {
    var crypto = require_hypercore_crypto();
    var sodium = require_sodium_universal();
    var b4a4 = require_b4a();
    var c4 = require_compact_encoding();
    var [
      TREE,
      REPLICATE_INITIATOR,
      REPLICATE_RESPONDER,
      MANIFEST,
      DEFAULT_NAMESPACE,
      DEFAULT_ENCRYPTION
    ] = crypto.namespace("hypercore", 6);
    exports2.MANIFEST = MANIFEST;
    exports2.DEFAULT_NAMESPACE = DEFAULT_NAMESPACE;
    exports2.DEFAULT_ENCRYPTION = DEFAULT_ENCRYPTION;
    exports2.replicate = function(isInitiator, key, handshakeHash) {
      const out = b4a4.allocUnsafe(32);
      sodium.crypto_generichash_batch(
        out,
        [isInitiator ? REPLICATE_INITIATOR : REPLICATE_RESPONDER, key],
        handshakeHash
      );
      return out;
    };
    exports2.treeSignable = function(manifestHash, treeHash, length, fork) {
      const state = { start: 0, end: 112, buffer: b4a4.allocUnsafe(112) };
      c4.fixed32.encode(state, TREE);
      c4.fixed32.encode(state, manifestHash);
      c4.fixed32.encode(state, treeHash);
      c4.uint64.encode(state, length);
      c4.uint64.encode(state, fork);
      return state.buffer;
    };
    exports2.treeSignableCompat = function(hash, length, fork, noHeader) {
      const end = noHeader ? 48 : 80;
      const state = { start: 0, end, buffer: b4a4.allocUnsafe(end) };
      if (!noHeader) c4.fixed32.encode(state, TREE);
      c4.fixed32.encode(state, hash);
      c4.uint64.encode(state, length);
      c4.uint64.encode(state, fork);
      return state.buffer;
    };
  }
});

// node_modules/hypercore/lib/merkle-tree.js
var require_merkle_tree = __commonJS({
  "node_modules/hypercore/lib/merkle-tree.js"(exports2, module2) {
    var flat = require_flat_tree();
    var crypto = require_hypercore_crypto();
    var b4a4 = require_b4a();
    var unslab = require_unslab();
    var caps = require_caps();
    var {
      INVALID_PROOF,
      INVALID_CHECKSUM,
      INVALID_OPERATION,
      BAD_ARGUMENT,
      ASSERTION
    } = require_hypercore_errors();
    var NodeQueue = class {
      constructor(nodes, extra = null) {
        this.i = 0;
        this.nodes = nodes;
        this.extra = extra;
        this.length = nodes.length + (this.extra === null ? 0 : 1);
      }
      shift(index) {
        if (this.extra !== null && this.extra.index === index) {
          const node2 = this.extra;
          this.extra = null;
          this.length--;
          return node2;
        }
        if (this.i >= this.nodes.length) {
          throw INVALID_OPERATION("Expected node " + index + ", got (nil)");
        }
        const node = this.nodes[this.i++];
        if (node.index !== index) {
          throw INVALID_OPERATION("Expected node " + index + ", got node " + node.index);
        }
        this.length--;
        return node;
      }
    };
    var MerkleTreeBatch = class _MerkleTreeBatch {
      constructor(session) {
        this.fork = session.fork;
        this.roots = [...session.roots];
        this.length = session.length;
        this.signature = session.signature;
        this.ancestors = session.length;
        this.byteLength = session.byteLength;
        this.prologue = session.prologue;
        this.hashCached = null;
        this.committed = false;
        this.truncated = false;
        this.treeLength = session.length;
        this.treeFork = session.fork;
        this.storage = session.storage;
        this.session = session;
        this.nodes = [];
        this.upgraded = false;
      }
      checkout(length, additionalRoots) {
        const roots = [];
        let r = 0;
        const head = 2 * length - 2;
        const gaps = /* @__PURE__ */ new Set();
        const all = /* @__PURE__ */ new Map();
        if (additionalRoots) {
          for (const node of additionalRoots) all.set(node.index, node);
        }
        for (const node of this.nodes) all.set(node.index, node);
        for (const index of flat.fullRoots(head + 2)) {
          const left = flat.leftSpan(index);
          if (left !== 0) gaps.add(left - 1);
          if (r < this.roots.length && this.roots[r].index === index) {
            roots.push(this.roots[r++]);
            continue;
          }
          const node = all.get(index);
          if (!node) throw new BAD_ARGUMENT("root missing for given length");
          roots.push(node);
        }
        this.roots = roots;
        this.length = length;
        this.byteLength = totalSize(roots);
        this.hashCached = null;
        this.signature = null;
        for (let i = 0; i < this.nodes.length; i++) {
          const index = this.nodes[i].index;
          if (index <= head && !gaps.has(index)) continue;
          const last = this.nodes.pop();
          if (i < this.nodes.length) this.nodes[i--] = last;
        }
      }
      prune(length) {
        if (length === 0) return;
        const head = 2 * length - 2;
        const gaps = /* @__PURE__ */ new Set();
        for (const index of flat.fullRoots(head + 2)) {
          const left = flat.leftSpan(index);
          if (left !== 0) gaps.add(left - 1);
        }
        for (let i = 0; i < this.nodes.length; i++) {
          const index = this.nodes[i].index;
          if (index > head || gaps.has(index)) continue;
          const last = this.nodes.pop();
          if (i < this.nodes.length) this.nodes[i--] = last;
        }
      }
      clone() {
        const b = new _MerkleTreeBatch(this.session);
        b.fork = this.fork;
        b.roots = [...this.roots];
        b.length = this.length;
        b.byteLength = this.byteLength;
        b.signature = this.signature;
        b.treeLength = this.treeLength;
        b.treeFork = this.treeFork;
        b.tree = this.tree;
        b.nodes = [...this.nodes];
        b.upgraded = this.upgraded;
        return b;
      }
      hash() {
        if (this.hashCached === null) this.hashCached = unslab(crypto.tree(this.roots));
        return this.hashCached;
      }
      signable(manifestHash) {
        return caps.treeSignable(manifestHash, this.hash(), this.length, this.fork);
      }
      signableCompat(noHeader) {
        return caps.treeSignableCompat(this.hash(), this.length, this.fork, noHeader);
      }
      get(index) {
        if (index >= this.length * 2) {
          return null;
        }
        for (const n of this.nodes) {
          if (n.index === index) return n;
        }
        return getTreeNodeFromStorage(this.session.storage, index);
      }
      // deprecated, use sssion proof instead
      proof(batch, { block, hash, seek, upgrade }) {
        return generateProof(this.session, batch, block, hash, seek, upgrade);
      }
      verifyUpgrade(proof) {
        const unverified = verifyTree(proof, this.nodes);
        if (!proof.upgrade) throw INVALID_OPERATION("Expected upgrade proof");
        return verifyUpgrade(proof, unverified, this);
      }
      addNodesUnsafe(nodes) {
        for (let i = 0; i < nodes.length; i++) {
          this.nodes.push(nodes[i]);
        }
      }
      append(buf) {
        const head = this.length * 2;
        const ite = flat.iterator(head);
        const node = blockNode(head, buf);
        this.appendRoot(node, ite);
      }
      appendRoot(node, ite) {
        node = unslabNode(node);
        this.hashCached = null;
        this.upgraded = true;
        this.length += ite.factor / 2;
        this.byteLength += node.size;
        this.roots.push(node);
        this.nodes.push(node);
        while (this.roots.length > 1) {
          const a = this.roots[this.roots.length - 1];
          const b = this.roots[this.roots.length - 2];
          if (ite.sibling() !== b.index) {
            ite.sibling();
            break;
          }
          const node2 = unslabNode(parentNode(ite.parent(), a, b));
          this.nodes.push(node2);
          this.roots.pop();
          this.roots.pop();
          this.roots.push(node2);
        }
      }
      commitable() {
        return this.treeFork === this.session.fork && (this.upgraded ? this.treeLength === this.session.length : this.treeLength <= this.session.length);
      }
      commit(tx) {
        if (tx === void 0) throw INVALID_OPERATION("No database batch was passed");
        if (this.session.core._repairMode) {
          throw ASSERTION("Cannot commit while repair mode is on");
        }
        if (!this.commitable()) {
          throw INVALID_OPERATION("Tree was modified during batch, refusing to commit");
        }
        if (this.upgraded) this._commitUpgrade(tx);
        for (let i = 0; i < this.nodes.length; i++) {
          const node = this.nodes[i];
          tx.putTreeNode(node);
        }
        this.committed = true;
        return this;
      }
      _commitUpgrade(tx) {
        if (this.ancestors < this.treeLength) {
          tx.deleteTreeNodeRange(this.ancestors * 2, this.treeLength * 2);
          if (this.ancestors > 0) {
            const head = this.ancestors * 2;
            const ite = flat.iterator(head - 2);
            while (true) {
              if (ite.contains(head) && ite.index < head) {
                tx.deleteTreeNode(ite.index);
              }
              if (ite.offset === 0) break;
              ite.parent();
            }
            this.truncated = true;
          }
        }
      }
      seek(bytes, padding) {
        return new ByteSeeker(this, this, bytes, padding);
      }
      byteRange(index) {
        const rx = this.storage.read();
        const range = getByteRange(this, index, rx);
        rx.tryFlush();
        return range;
      }
      byteOffset(index) {
        if (index === 2 * this.length) return this.byteLength;
        const rx = this.storage.read();
        const offset = getByteOffset(this, index, rx);
        rx.tryFlush();
        return offset;
      }
      async downgrade() {
        if (!this.upgraded) return true;
        const rx = this.storage.read();
        const nodePromises = [];
        for (const r of this.roots) {
          nodePromises.push(rx.getTreeNode(r.index));
        }
        rx.tryFlush();
        const nodes = await Promise.all(nodePromises);
        for (let i = 0; i < this.roots.length; i++) {
          const root = this.roots[i];
          const node = nodes[i];
          if (!node) return false;
          if (!b4a4.equals(node.hash, root.hash)) return false;
        }
        this.upgraded = false;
        return true;
      }
      async restore(length) {
        if (length === this.length) return this;
        const roots = unslabNodes(await MerkleTree.getRootsFromStorage(this.storage, length));
        this.roots = roots;
        this.length = length;
        this.byteLength = totalSize(roots);
        this.ancestors = length;
        for (const node of roots) this.byteLength += node.size;
        return this;
      }
    };
    var ReorgBatch = class extends MerkleTreeBatch {
      constructor(session) {
        super(session);
        this.roots = [];
        this.length = 0;
        this.byteLength = 0;
        this.diff = null;
        this.ancestors = 0;
        this.upgraded = true;
        this.want = {
          nodes: 0,
          start: 0,
          end: 0
        };
      }
      get finished() {
        return this.want === null;
      }
      update(proof) {
        if (this.want === null) return true;
        const nodes = [];
        const root = verifyTree(proof, nodes);
        if (root === null || !b4a4.equals(root.hash, this.diff.hash)) return false;
        this.nodes.push(...nodes);
        return this._update(nodes);
      }
      async _update(nodes) {
        const n = /* @__PURE__ */ new Map();
        for (const node of nodes) n.set(node.index, node);
        let diff = null;
        const ite = flat.iterator(this.diff.index);
        const startingDiff = this.diff;
        while ((ite.index & 1) !== 0) {
          const left = n.get(ite.leftChild());
          if (!left) break;
          const existing = await getTreeNodeFromStorage(this.session.storage, left.index);
          if (!existing || !b4a4.equals(existing.hash, left.hash)) {
            diff = left;
          } else {
            diff = n.get(ite.sibling());
          }
        }
        if ((this.diff.index & 1) === 0) return true;
        if (diff === null) return false;
        if (startingDiff !== this.diff) return false;
        return this._updateDiffRoot(diff);
      }
      _updateDiffRoot(diff) {
        if (this.want === null) return true;
        const spans = flat.spans(diff.index);
        const start = spans[0] / 2;
        const end = Math.min(this.treeLength, spans[1] / 2 + 1);
        const len = end - start;
        this.ancestors = start;
        this.diff = diff;
        if ((diff.index & 1) === 0 || this.want.start >= this.treeLength || len <= 0) {
          this.want = null;
          return true;
        }
        this.want.start = start;
        this.want.end = end;
        this.want.nodes = log2(spans[1] - spans[0] + 2) - 1;
        return false;
      }
    };
    var ByteSeeker = class {
      constructor(session, bytes, padding = 0) {
        this.session = session;
        this.bytes = bytes;
        this.padding = padding;
        const size = session.byteLength - session.length * padding;
        this.start = bytes >= size ? session.length : 0;
        this.end = bytes < size ? session.length : 0;
      }
      async _seek(bytes) {
        if (!bytes) return [0, 0];
        for (const node of this.session.roots) {
          const size = getUnpaddedSize(node, this.padding, null);
          if (bytes === size) return [flat.rightSpan(node.index) + 2, 0];
          if (bytes > size) {
            bytes -= size;
            continue;
          }
          const ite = flat.iterator(node.index);
          while ((ite.index & 1) !== 0) {
            const l = await getTreeNodeFromStorage(this.session.storage, ite.leftChild());
            if (l) {
              const size2 = getUnpaddedSize(l, this.padding, ite);
              if (size2 === bytes) return [ite.rightSpan() + 2, 0];
              if (size2 > bytes) continue;
              bytes -= size2;
              ite.sibling();
            } else {
              ite.parent();
              return [ite.index, bytes];
            }
          }
          return [ite.index, bytes];
        }
        return null;
      }
      async update() {
        const res = await this._seek(this.bytes);
        if (!res) return null;
        if ((res[0] & 1) === 0) return [res[0] / 2, res[1]];
        const span = flat.spans(res[0]);
        this.start = span[0] / 2;
        this.end = span[1] / 2 + 1;
        return null;
      }
    };
    var TreeProof = class {
      constructor(session, block, hash, seek, upgrade) {
        this.fork = session.fork;
        this.signature = session.signature;
        this.block = block;
        this.hash = hash;
        this.seek = seek;
        this.upgrade = upgrade;
        this.pending = {
          node: null,
          seek: null,
          upgrade: null,
          additionalUpgrade: null
        };
      }
      async settle() {
        const result = {
          fork: this.fork,
          block: null,
          hash: null,
          seek: null,
          upgrade: null,
          manifest: null
        };
        const [pNode, pSeek, pUpgrade, pAdditional] = await settleProof(this.pending);
        if (this.block) {
          if (pNode === null) throw INVALID_OPERATION("Invalid block request");
          result.block = {
            index: this.block.index,
            value: null,
            // populated upstream, alloc it here for simplicity
            nodes: pNode
          };
        } else if (this.hash) {
          if (pNode === null) throw INVALID_OPERATION("Invalid block request");
          result.hash = {
            index: this.hash.index,
            nodes: pNode
          };
        }
        if (this.seek && pSeek !== null) {
          result.seek = {
            bytes: this.seek.bytes,
            nodes: pSeek
          };
        }
        if (this.upgrade) {
          result.upgrade = {
            start: this.upgrade.start,
            length: this.upgrade.length,
            nodes: pUpgrade,
            additionalNodes: pAdditional || [],
            signature: this.signature
          };
        }
        return result;
      }
    };
    var MerkleTree = class _MerkleTree {
      static hash(s) {
        return unslab(crypto.tree(s.roots));
      }
      static signable(s, namespace) {
        return caps.treeSignable(namespace, _MerkleTree.hash(s), s.length, s.fork);
      }
      static size(roots) {
        return totalSize(roots);
      }
      static span(roots) {
        return totalSpan(roots);
      }
      static getRoots(session, length) {
        return _MerkleTree.getRootsFromStorage(session.storage, length);
      }
      static getRootsFromStorage(storage, length) {
        const indexes2 = flat.fullRoots(2 * length);
        const roots = new Array(indexes2.length);
        const rx = storage.read();
        for (let i = 0; i < indexes2.length; i++) {
          roots[i] = getTreeNodeOrError(rx, indexes2[i]);
        }
        rx.tryFlush();
        return Promise.all(roots);
      }
      static async upgradeable(session, length) {
        const indexes2 = flat.fullRoots(2 * length);
        const roots = new Array(indexes2.length);
        const rx = session.storage.read();
        for (let i = 0; i < indexes2.length; i++) {
          roots[i] = rx.getTreeNode(indexes2[i]);
        }
        rx.tryFlush();
        for (const node of await Promise.all(roots)) {
          if (node === null) return false;
        }
        return true;
      }
      static seek(session, bytes, padding) {
        return new ByteSeeker(session, bytes, padding);
      }
      static get(session, index) {
        return getTreeNodeFromStorage(session.storage, index);
      }
      static async truncate(session, length, batch, fork = batch.fork) {
        const head = length * 2;
        const fullRoots = flat.fullRoots(head);
        for (let i = 0; i < fullRoots.length; i++) {
          const root = fullRoots[i];
          if (i < batch.roots.length && batch.roots[i].index === root) continue;
          while (batch.roots.length > i) batch.roots.pop();
          batch.roots.push(unslabNode(await getTreeNodeFromStorageOrError(session.storage, root)));
        }
        while (batch.roots.length > fullRoots.length) {
          batch.roots.pop();
        }
        batch.fork = fork;
        batch.length = length;
        batch.ancestors = length;
        batch.byteLength = totalSize(batch.roots);
        batch.upgraded = true;
        return batch;
      }
      static async reorg(session, proof, batch) {
        let unverified = null;
        if (proof.block || proof.hash || proof.seek) {
          unverified = verifyTree(proof, batch.nodes);
        }
        if (!verifyUpgrade(proof, unverified, batch)) {
          throw INVALID_PROOF("Fork proof not verifiable");
        }
        for (const root of batch.roots) {
          const existing = await getTreeNodeFromStorage(session.storage, root.index);
          if (existing && b4a4.equals(existing.hash, root.hash)) continue;
          batch._updateDiffRoot(root);
          break;
        }
        if (batch.diff !== null) {
          await batch._update(batch.nodes);
        } else {
          batch.want = null;
          batch.ancestors = batch.length;
        }
        return batch;
      }
      static verifyFullyRemote(session, proof) {
        const batch = new MerkleTreeBatch(session);
        batch.fork = proof.fork;
        batch.roots = [];
        batch.length = 0;
        batch.ancestors = 0;
        batch.byteLength = 0;
        let unverified = verifyTree(proof, batch.nodes);
        if (proof.upgrade) {
          if (verifyUpgrade(proof, unverified, batch)) {
            unverified = null;
          }
        }
        return batch;
      }
      static async verify(session, proof) {
        const batch = new MerkleTreeBatch(session);
        let unverified = verifyTree(proof, batch.nodes);
        if (proof.upgrade) {
          if (verifyUpgrade(proof, unverified, batch)) {
            unverified = null;
          }
        }
        if (unverified) {
          const verified = await getTreeNodeFromStorageOrError(session.storage, unverified.index);
          if (!b4a4.equals(verified.hash, unverified.hash)) {
            throw INVALID_CHECKSUM("Invalid checksum at node " + unverified.index);
          }
        }
        return batch;
      }
      static proof(session, rx, { block, hash, seek, upgrade }) {
        return generateProof(session, rx, block, hash, seek, upgrade);
      }
      static maxMissingNodes(index, length) {
        const head = 2 * length;
        const ite = flat.iterator(index);
        const iteRightSpan = ite.index + ite.factor / 2 - 1;
        if (iteRightSpan >= head) return 0;
        for (const r of flat.fullRoots(head)) {
          if (r === index) return 0;
        }
        ite.parent();
        let cnt = 0;
        while (!ite.contains(head)) {
          cnt++;
          ite.parent();
        }
        return cnt;
      }
      static async missingNodes(session, index, length) {
        const head = 2 * length;
        const ite = flat.iterator(index);
        const iteRightSpan = ite.index + ite.factor / 2 - 1;
        if (iteRightSpan >= head) return 0;
        let cnt = 0;
        while (!ite.contains(head) && !await hasTreeNode(session.storage, ite.index)) {
          cnt++;
          if (cnt >= 1024) {
            throw ASSERTION("Bad arguments to missingNodes index=" + index + " at length=" + length);
          }
          ite.parent();
        }
        return cnt;
      }
      static byteOffset(session, index) {
        return getByteOffsetSession(session, index, null);
      }
      static byteRange(session, index) {
        const rx = session.storage.read();
        const offset = getByteOffsetSession(session, index, rx);
        const size = getNodeSize(index, rx);
        rx.tryFlush();
        return Promise.all([offset, size]);
      }
      static upgradeLength(proof) {
        const extra = proof.additionalNodes;
        if (extra.length) {
          const last = extra[extra.length - 1];
          const index = flat.rightSpan(last.index);
          return index / 2 + 1;
        }
        return proof.start + proof.length;
      }
    };
    module2.exports = {
      MerkleTreeBatch,
      ReorgBatch,
      MerkleTree
    };
    async function getNodeSize(index, rx) {
      return (await getTreeNodeOrError(rx, index)).size;
    }
    async function getByteOffsetSession(session, index, rx) {
      if (index === 2 * session.length) return session.byteLength;
      const treeNodes = rx === null ? await getByteOffsetBatchFlush(session.roots, index, session.storage.read()) : await getByteOffsetBatch(session.roots, index, rx);
      let offset = 0;
      for (const node of treeNodes) offset += node.size;
      return offset;
    }
    async function getByteOffset(tree, index, rx) {
      if (index === 2 * tree.length) return tree.byteLength;
      const treeNodes = await getByteOffsetBatch(tree.roots, index, rx);
      let offset = 0;
      for (const node of treeNodes) offset += node.size;
      return offset;
    }
    function getByteOffsetBatchFlush(roots, index, rx) {
      const treeNodes = getByteOffsetBatch(roots, index, rx);
      rx.tryFlush();
      return treeNodes;
    }
    function getByteOffsetBatch(roots, index, rx) {
      if ((index & 1) === 1) index = flat.leftSpan(index);
      let head = 0;
      let cnt = 0;
      const promises = [];
      for (const node of roots) {
        head += 2 * (node.index - head + 1);
        if (index >= head) {
          promises.push(node.size);
          continue;
        }
        const ite = flat.iterator(node.index);
        while (ite.index !== index) {
          if (++cnt >= 1024) throw ASSERTION("Bad getByteOffsetSession index=" + index);
          if (index < ite.index) {
            ite.leftChild();
          } else {
            promises.push(getTreeNodeOrError(rx, ite.leftChild()));
            ite.sibling();
          }
        }
        return Promise.all(promises);
      }
      throw ASSERTION("Failed to find offset");
    }
    function getByteRange(tree, index, rx) {
      const head = 2 * tree.length;
      if (((index & 1) === 0 ? index : flat.rightSpan(index)) >= head) {
        throw BAD_ARGUMENT("Index is out of bounds");
      }
      const offset = getByteOffset(tree, index, rx);
      const size = getNodeSize(index, rx);
      return Promise.all([offset, size]);
    }
    function verifyTree({ block, hash, seek }, nodes) {
      const untrustedNode = block ? { index: 2 * block.index, value: block.value, nodes: block.nodes } : hash ? { index: hash.index, value: null, nodes: hash.nodes } : null;
      if (untrustedNode === null && (!seek || !seek.nodes.length)) return null;
      let root = null;
      if (seek && seek.nodes.length) {
        const ite2 = flat.iterator(seek.nodes[0].index);
        const q2 = new NodeQueue(seek.nodes);
        root = q2.shift(ite2.index);
        nodes.push(root);
        while (q2.length > 0) {
          const node = q2.shift(ite2.sibling());
          root = parentNode(ite2.parent(), root, node);
          nodes.push(node);
          nodes.push(root);
        }
      }
      if (untrustedNode === null) return root;
      const ite = flat.iterator(untrustedNode.index);
      const blockHash = untrustedNode.value && blockNode(ite.index, untrustedNode.value);
      const q = new NodeQueue(untrustedNode.nodes, root);
      root = blockHash || q.shift(ite.index);
      nodes.push(root);
      while (q.length > 0) {
        const node = q.shift(ite.sibling());
        root = parentNode(ite.parent(), root, node);
        nodes.push(node);
        nodes.push(root);
      }
      return root;
    }
    function verifyUpgrade({ fork, upgrade }, blockRoot, batch) {
      const prologue = batch.prologue;
      if (prologue) {
        const { start, length } = upgrade;
        if (start < prologue.length && (start !== 0 || length < prologue.length)) {
          throw INVALID_PROOF("Upgrade does not satisfy prologue");
        }
      }
      const q = new NodeQueue(upgrade.nodes, blockRoot);
      let grow = batch.roots.length > 0;
      let i = 0;
      const to = 2 * (upgrade.start + upgrade.length);
      const ite = flat.iterator(0);
      for (; ite.fullRoot(to); ite.nextTree()) {
        if (i < batch.roots.length && batch.roots[i].index === ite.index) {
          i++;
          continue;
        }
        if (grow) {
          grow = false;
          const root = ite.index;
          if (i < batch.roots.length) {
            ite.seek(batch.roots[batch.roots.length - 1].index);
            while (ite.index !== root) {
              batch.appendRoot(q.shift(ite.sibling()), ite);
            }
            continue;
          }
        }
        batch.appendRoot(q.shift(ite.index), ite);
      }
      if (prologue && batch.length === prologue.length) {
        if (!b4a4.equals(prologue.hash, batch.hash())) {
          throw INVALID_PROOF("Invalid hash");
        }
      }
      const extra = upgrade.additionalNodes;
      ite.seek(batch.roots[batch.roots.length - 1].index);
      i = 0;
      while (i < extra.length && extra[i].index === ite.sibling()) {
        batch.appendRoot(extra[i++], ite);
      }
      while (i < extra.length) {
        const node = extra[i++];
        while (node.index !== ite.index) {
          if (ite.factor === 2) throw INVALID_OPERATION("Unexpected node: " + node.index);
          ite.leftChild();
        }
        batch.appendRoot(node, ite);
        ite.sibling();
      }
      batch.signature = unslab(upgrade.signature);
      batch.fork = fork;
      return q.extra === null;
    }
    async function seekFromHead(session, head, bytes, padding) {
      const roots = flat.fullRoots(head);
      for (let i = 0; i < roots.length; i++) {
        const root = roots[i];
        const node = await getTreeNodeFromStorage(session.storage, root);
        const size = getUnpaddedSize(node, padding, null);
        if (bytes === size) return root;
        if (bytes > size) {
          bytes -= size;
          continue;
        }
        return seekTrustedTree(session, root, bytes, padding);
      }
      return head;
    }
    async function seekTrustedTree(session, root, bytes, padding) {
      if (!bytes) return root;
      const ite = flat.iterator(root);
      let cnt = 0;
      while ((ite.index & 1) !== 0) {
        if (++cnt >= 1024) throw ASSERTION("Bad seekTrusted bytes=" + bytes + ", paddding=" + padding);
        const l = await getTreeNodeFromStorage(session.storage, ite.leftChild());
        if (l) {
          const size = getUnpaddedSize(l, padding, ite);
          if (size === bytes) return ite.index;
          if (size > bytes) continue;
          bytes -= size;
          ite.sibling();
        } else {
          ite.parent();
          return ite.index;
        }
      }
      return ite.index;
    }
    async function seekUntrustedTree(session, root, bytes, padding) {
      const offset = await getByteOffsetSession(session, root, null) - (padding ? padding * flat.leftSpan(root) / 2 : 0);
      if (offset > bytes) throw INVALID_OPERATION("Invalid seek");
      if (offset === bytes) return root;
      bytes -= offset;
      const node = await getTreeNodeFromStorageOrError(session.storage, root);
      if (getUnpaddedSize(node, padding, null) <= bytes) throw INVALID_OPERATION("Invalid seek");
      return seekTrustedTree(session, root, bytes, padding);
    }
    function seekProof(session, rx, seekRoot, root, p) {
      const ite = flat.iterator(seekRoot);
      let cnt = 0;
      p.seek = [];
      p.seek.push(getTreeNodeOrError(rx, ite.index));
      while (ite.index !== root) {
        if (++cnt >= 1024) throw ASSERTION("Bad seekProof seekRoot=" + seekRoot + ", root=" + root);
        ite.sibling();
        p.seek.push(getTreeNodeOrError(rx, ite.index));
        ite.parent();
      }
    }
    function blockAndSeekProof(session, rx, node, seek, seekRoot, root, p) {
      if (!node) return seekProof(session, rx, seekRoot, root, p);
      const ite = flat.iterator(node.index);
      let cnt = 0;
      p.node = [];
      if (!node.value) p.node.push(getTreeNodeOrError(rx, ite.index));
      while (ite.index !== root) {
        if (++cnt >= 1024) {
          throw ASSERTION("Bad blockAndSeekProof seekRoot=" + seekRoot + ", root=" + root);
        }
        ite.sibling();
        if (seek && ite.contains(seekRoot) && ite.index !== seekRoot) {
          seekProof(session, rx, seekRoot, ite.index, p);
        } else {
          p.node.push(getTreeNodeOrError(rx, ite.index));
        }
        ite.parent();
      }
    }
    function upgradeProof(session, rx, node, seek, from, to, subTree, p) {
      if (from === 0) p.upgrade = [];
      for (const ite = flat.iterator(0); ite.fullRoot(to); ite.nextTree()) {
        if (ite.index + ite.factor / 2 < from) continue;
        if (p.upgrade === null && ite.contains(from - 2)) {
          p.upgrade = [];
          const root = ite.index;
          const target = from - 2;
          let cnt = 0;
          ite.seek(target);
          while (ite.index !== root) {
            if (++cnt >= 1024) throw ASSERTION("Bad upgradeProof target=" + target + ", root=" + root);
            ite.sibling();
            if (ite.index > target) {
              if (p.node === null && p.seek === null && ite.contains(subTree)) {
                blockAndSeekProof(session, rx, node, seek, subTree, ite.index, p);
              } else {
                p.upgrade.push(getTreeNodeOrError(rx, ite.index));
              }
            }
            ite.parent();
          }
          continue;
        }
        if (p.upgrade === null) {
          p.upgrade = [];
        }
        if (p.node === null && p.seek === null && ite.contains(subTree)) {
          blockAndSeekProof(session, rx, node, seek, subTree, ite.index, p);
          continue;
        }
        p.upgrade.push(getTreeNodeOrError(rx, ite.index));
      }
    }
    function additionalUpgradeProof(session, rx, from, to, p) {
      if (from === 0) p.additionalUpgrade = [];
      for (const ite = flat.iterator(0); ite.fullRoot(to); ite.nextTree()) {
        if (ite.index + ite.factor / 2 < from) continue;
        if (p.additionalUpgrade === null && ite.contains(from - 2)) {
          p.additionalUpgrade = [];
          const root = ite.index;
          const target = from - 2;
          let cnt = 0;
          ite.seek(target);
          while (ite.index !== root) {
            if (++cnt >= 1024) {
              throw ASSERTION(
                "Bad arguments to additionalUpgradeProof root=" + root + " target=" + target
              );
            }
            ite.sibling();
            if (ite.index > target) {
              p.additionalUpgrade.push(getTreeNodeOrError(rx, ite.index));
            }
            ite.parent();
          }
          continue;
        }
        if (p.additionalUpgrade === null) {
          p.additionalUpgrade = [];
        }
        p.additionalUpgrade.push(getTreeNodeOrError(rx, ite.index));
      }
    }
    function nodesToRoot(index, nodes, head) {
      const ite = flat.iterator(index);
      for (let i = 0; i < nodes; i++) {
        ite.parent();
        if (ite.contains(head)) throw INVALID_OPERATION("Nodes is out of bounds");
      }
      return ite.index;
    }
    function totalSize(nodes) {
      let s = 0;
      for (const node of nodes) s += node.size;
      return s;
    }
    function totalSpan(nodes) {
      let s = 0;
      for (const node of nodes) s += 2 * (node.index - s + 1);
      return s;
    }
    function blockNode(index, value) {
      return { index, size: value.byteLength, hash: crypto.data(value) };
    }
    function parentNode(index, a, b) {
      return { index, size: a.size + b.size, hash: crypto.parent(a, b) };
    }
    function log2(n) {
      let res = 1;
      while (n > 2) {
        n /= 2;
        res++;
      }
      return res;
    }
    function normalizeIndexed(block, hash) {
      if (block) {
        return {
          value: true,
          index: block.index * 2,
          nodes: block.nodes,
          lastIndex: block.index
        };
      }
      if (hash) {
        return {
          value: false,
          index: hash.index,
          nodes: hash.nodes,
          lastIndex: flat.rightSpan(hash.index) / 2
        };
      }
      return null;
    }
    async function getTreeNodeOrError(rx, index) {
      const node = await rx.getTreeNode(index);
      if (node === null) {
        throw INVALID_OPERATION("Expected tree node " + index + " from storage, got (nil)");
      }
      return node;
    }
    function getTreeNodeFromStorageOrError(storage, index) {
      const rx = storage.read();
      const p = getTreeNodeOrError(rx, index);
      rx.tryFlush();
      return p;
    }
    function getTreeNodeFromStorage(storage, index) {
      const rx = storage.read();
      const node = rx.getTreeNode(index);
      rx.tryFlush();
      return node;
    }
    function hasTreeNode(storage, index) {
      const rx = storage.read();
      const has = rx.hasTreeNode(index);
      rx.tryFlush();
      return has;
    }
    async function settleProof(p) {
      const result = [
        p.node && Promise.all(p.node),
        p.seek && Promise.all(p.seek),
        p.upgrade && Promise.all(p.upgrade),
        p.additionalUpgrade && Promise.all(p.additionalUpgrade)
      ];
      try {
        return await Promise.all(result);
      } catch (err) {
        if (p.node) await Promise.allSettled(p.node);
        if (p.seek) await Promise.allSettled(p.seek);
        if (p.upgrade) await Promise.allSettled(p.upgrade);
        if (p.additionalUpgrade) await Promise.allSettled(p.additionalUpgrade);
        throw err;
      }
    }
    async function generateProof(session, rx, block, hash, seek, upgrade) {
      if (session.prologue && upgrade) {
        upgrade.start = upgrade.start < session.prologue.length ? 0 : upgrade.start;
        upgrade.length = upgrade.start < session.prologue.length ? session.prologue.length : upgrade.length;
      }
      const head = 2 * session.length;
      const from = upgrade ? upgrade.start * 2 : 0;
      const to = upgrade ? from + upgrade.length * 2 : head;
      const node = normalizeIndexed(block, hash);
      if (head === 0) return new TreeProof(session, null, null, null, null);
      if (from >= to || to > head) {
        throw INVALID_OPERATION("Invalid upgrade");
      }
      if (seek && upgrade && node !== null && node.index >= from) {
        throw INVALID_OPERATION("Cannot both do a seek and block/hash request when upgrading");
      }
      let subTree = head;
      const p = new TreeProof(session, block, hash, seek, upgrade);
      if (node !== null && (!upgrade || node.lastIndex < upgrade.start)) {
        subTree = nodesToRoot(node.index, node.nodes, to);
        const seekRoot = seek ? await seekUntrustedTree(session, subTree, seek.bytes, seek.padding) : head;
        blockAndSeekProof(session, rx, node, seek, seekRoot, subTree, p.pending);
      } else if ((node || seek) && upgrade) {
        subTree = seek ? await seekFromHead(session, to, seek.bytes, seek.padding) : node.index;
      }
      if (upgrade) {
        upgradeProof(session, rx, node, seek, from, to, subTree, p.pending);
        if (head > to) additionalUpgradeProof(session, rx, to, head, p.pending);
      }
      return p;
    }
    function getUnpaddedSize(node, padding, ite) {
      return padding === 0 ? node.size : node.size - padding * (ite ? ite.countLeaves() : flat.countLeaves(node.index));
    }
    function unslabNodes(nodes) {
      for (const node of nodes) unslabNode(node);
      return nodes;
    }
    function unslabNode(node) {
      if (node === null) return node;
      node.hash = unslab(node.hash);
      return node;
    }
  }
});

// node_modules/hypercore/lib/bit-interlude.js
var require_bit_interlude = __commonJS({
  "node_modules/hypercore/lib/bit-interlude.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var quickbit = require_compat().quickbit;
    module2.exports = class BitInterlude {
      constructor() {
        this.ranges = [];
      }
      contiguousLength(from) {
        for (const r of this.ranges) {
          if (r.start > from) break;
          if (!r.value && r.start <= from) return r.start;
        }
        while (this.get(from) === true) from++;
        return from;
      }
      get(index) {
        let start = 0;
        let end = this.ranges.length;
        while (start < end) {
          const mid = start + end >> 1;
          const r = this.ranges[mid];
          if (index < r.start) {
            end = mid;
            continue;
          }
          if (index >= r.end) {
            if (mid === start) break;
            start = mid;
            continue;
          }
          return r.value;
        }
        return false;
      }
      setRange(start, end, value) {
        if (start === end) return;
        let r = null;
        for (let i = 0; i < this.ranges.length; i++) {
          r = this.ranges[i];
          if (r.start <= start && end <= r.end) {
            if (value === r.value) return;
            const ranges = mergeRanges(r, { start, end, value });
            this.ranges.splice(i, 1, ...ranges);
            return;
          }
          if (start > r.end) {
            continue;
          }
          if (end >= r.start && end <= r.end) {
            r.start = r.value === value ? start : end;
            if (r.value !== value) this.ranges.splice(i, 0, { start, end, value });
            return;
          }
          if (start >= r.start && start <= r.end) {
            if (r.value !== value) {
              r.end = start;
              if (this.ranges.length - 1 > i) {
                const next = this.ranges[i + 1];
                if (next.value === value) continue;
                if (next.start < end) next.start = end;
              }
              this.ranges.splice(++i, 0, { start, end, value });
              return;
            }
            start = r.start;
          }
          let remove = 0;
          for (let j = i; j < this.ranges.length; j++) {
            const n = this.ranges[j];
            if (n.start > end || n.value !== value) break;
            if (n.start <= end && n.end > end) end = n.end;
            remove++;
          }
          this.ranges.splice(i, remove, { start, end, value });
          return;
        }
        if (r !== null) {
          if (start <= r.end && end > r.end) {
            r.end = end;
            return;
          }
          if (r.end > start) return;
        }
        this.ranges.push({ start, end, value });
      }
      flush(tx, bitfield) {
        if (!this.ranges.length) return [];
        let index = this.ranges[0].start;
        const final = this.ranges[this.ranges.length - 1].end;
        let i = 0;
        while (index < final) {
          const page = bitfield.getBitfield(index);
          const pageIndex = page ? page.index : bitfield.getPageIndex(index);
          const buf = b4a4.allocUnsafe(bitfield.getPageByteLength());
          if (page) {
            const src = page.bitfield;
            buf.set(b4a4.from(src.buffer, src.byteOffset, src.byteLength), 0);
          } else {
            b4a4.fill(buf, 0);
          }
          const last = (pageIndex + 1) * (buf.byteLength << 3);
          const offset = pageIndex * (buf.byteLength << 3);
          let hasValue = false;
          while (i < this.ranges.length) {
            const { start, end, value } = this.ranges[i];
            if (!hasValue && value) hasValue = true;
            const from = start < index ? index : start;
            const to = end < last ? end : last;
            quickbit.fill(buf, value, from - offset, to - offset);
            index = to;
            if (to === last) break;
            i++;
          }
          if (page || hasValue) tx.putBitfieldPage(pageIndex, buf);
        }
        return this.ranges;
      }
    };
    function mergeRanges(a, b) {
      const ranges = [];
      if (a.start < b.start) ranges.push({ start: a.start, end: b.start, value: a.value });
      ranges.push({ start: b.start, end: b.end, value: b.value });
      if (b.end < a.end) ranges.push({ start: b.end, end: a.end, value: a.value });
      return ranges;
    }
  }
});

// node_modules/hypercore/lib/bitfield.js
var require_bitfield = __commonJS({
  "node_modules/hypercore/lib/bitfield.js"(exports2, module2) {
    var BigSparseArray = require_big_sparse_array();
    var b4a4 = require_b4a();
    var quickbit = require_compat().quickbit;
    var BITS_PER_PAGE = 32768;
    var BYTES_PER_PAGE = BITS_PER_PAGE / 8;
    var WORDS_PER_PAGE = BYTES_PER_PAGE / 4;
    var BITS_PER_SEGMENT = 2097152;
    var BYTES_PER_SEGMENT = BITS_PER_SEGMENT / 8;
    var WORDS_PER_SEGMENT = BYTES_PER_SEGMENT / 4;
    var INITIAL_WORDS_PER_SEGMENT = 1024;
    var PAGES_PER_SEGMENT = BITS_PER_SEGMENT / BITS_PER_PAGE;
    var SEGMENT_GROWTH_FACTOR = 4;
    var BitfieldPage = class {
      constructor(index, segment) {
        this.index = index;
        this.offset = index * BYTES_PER_PAGE - segment.offset;
        this.bitfield = null;
        this.segment = segment;
        segment.add(this);
      }
      get tree() {
        return this.segment.tree;
      }
      get(index, dirty) {
        return quickbit.get(this.bitfield, index);
      }
      set(index, val) {
        if (quickbit.set(this.bitfield, index, val)) {
          this.tree.update(this.offset * 8 + index);
        }
      }
      setRange(start, end, val) {
        quickbit.fill(this.bitfield, val, start, end);
        let i = Math.floor(start / 128);
        const n = i + Math.ceil((end - start) / 128);
        while (i <= n) this.tree.update(this.offset * 8 + i++ * 128);
      }
      findFirst(val, position) {
        return quickbit.findFirst(this.bitfield, val, position);
      }
      findLast(val, position) {
        return quickbit.findLast(this.bitfield, val, position);
      }
      count(start, length, val) {
        const end = start + length;
        let i = start;
        let c4 = 0;
        while (length > 0) {
          const l = this.findFirst(val, i);
          if (l === -1 || l >= end) return c4;
          const h = this.findFirst(!val, l + 1);
          if (h === -1 || h >= end) return c4 + end - l;
          c4 += h - l;
          length -= h - i;
          i = h;
        }
        return c4;
      }
    };
    var BitfieldSegment = class {
      constructor(index, bitfield) {
        this.index = index;
        this.offset = index * BYTES_PER_SEGMENT;
        this.tree = quickbit.Index.from(bitfield, BYTES_PER_SEGMENT);
        this.pages = new Array(PAGES_PER_SEGMENT);
      }
      get bitfield() {
        return this.tree.field;
      }
      add(page) {
        const i = page.index - this.index * PAGES_PER_SEGMENT;
        this.pages[i] = page;
        const start = i * WORDS_PER_PAGE;
        const end = start + WORDS_PER_PAGE;
        if (end >= this.bitfield.length) this.reallocate(end);
        page.bitfield = this.bitfield.subarray(start, end);
      }
      reallocate(length) {
        let target = this.bitfield.length;
        while (target < length) target *= SEGMENT_GROWTH_FACTOR;
        const bitfield = new Uint32Array(target);
        bitfield.set(this.bitfield);
        this.tree = quickbit.Index.from(bitfield, BYTES_PER_SEGMENT);
        for (let i = 0; i < this.pages.length; i++) {
          const page = this.pages[i];
          if (!page) continue;
          const start = i * WORDS_PER_PAGE;
          const end = start + WORDS_PER_PAGE;
          page.bitfield = bitfield.subarray(start, end);
        }
      }
      findFirst(val, position) {
        position = this.tree.skipFirst(!val, position);
        let j = position & BITS_PER_PAGE - 1;
        let i = (position - j) / BITS_PER_PAGE;
        if (i >= PAGES_PER_SEGMENT) return -1;
        while (i < this.pages.length) {
          const p = this.pages[i];
          let index = -1;
          if (p) index = p.findFirst(val, j);
          else if (!val) index = j;
          if (index !== -1) return i * BITS_PER_PAGE + index;
          j = 0;
          i++;
        }
        return -1;
      }
      findLast(val, position) {
        position = this.tree.skipLast(!val, position);
        let j = position & BITS_PER_PAGE - 1;
        let i = (position - j) / BITS_PER_PAGE;
        if (i >= PAGES_PER_SEGMENT) return -1;
        while (i >= 0) {
          const p = this.pages[i];
          let index = -1;
          if (p) index = p.findLast(val, j);
          else if (!val) index = j;
          if (index !== -1) return i * BITS_PER_PAGE + index;
          j = BITS_PER_PAGE - 1;
          i--;
        }
        return -1;
      }
    };
    module2.exports = class Bitfield {
      static BITS_PER_PAGE = BITS_PER_PAGE;
      static BYTES_PER_PAGE = BYTES_PER_PAGE;
      constructor(buffer) {
        this.resumed = !!(buffer && buffer.byteLength >= 0);
        this._pages = new BigSparseArray();
        this._segments = new BigSparseArray();
        const view = this.resumed ? new Uint32Array(buffer.buffer, buffer.byteOffset, Math.floor(buffer.byteLength / 4)) : new Uint32Array(INITIAL_WORDS_PER_SEGMENT);
        for (let i = 0; i < view.length; i += WORDS_PER_SEGMENT) {
          let bitfield = view.subarray(i, i + WORDS_PER_SEGMENT);
          let length = WORDS_PER_SEGMENT;
          if (i === 0) {
            length = INITIAL_WORDS_PER_SEGMENT;
            while (length < bitfield.length) length *= SEGMENT_GROWTH_FACTOR;
          }
          if (bitfield.length !== length) {
            const copy = new Uint32Array(length);
            copy.set(bitfield, 0);
            bitfield = copy;
          }
          const segment = new BitfieldSegment(i / WORDS_PER_SEGMENT, bitfield);
          this._segments.set(segment.index, segment);
          for (let j = 0; j < bitfield.length; j += WORDS_PER_PAGE) {
            const page = new BitfieldPage((i + j) / WORDS_PER_PAGE, segment);
            this._pages.set(page.index, page);
          }
        }
      }
      static from(bitfield) {
        return new Bitfield(bitfield.toBuffer(bitfield._pages.maxLength * BITS_PER_PAGE));
      }
      toBuffer(length) {
        const pages = Math.ceil(length / BITS_PER_PAGE);
        const buffer = b4a4.allocUnsafe(pages * BYTES_PER_PAGE);
        for (let i = 0; i < pages; i++) {
          const page = this._pages.get(i);
          const offset = i * BYTES_PER_PAGE;
          if (page) {
            const buf = b4a4.from(
              page.bitfield.buffer,
              page.bitfield.byteOffset,
              page.bitfield.byteLength
            );
            buffer.set(buf, offset);
          } else {
            buffer.fill(0, offset, offset + BYTES_PER_PAGE);
          }
        }
        return buffer;
      }
      getBitfield(index) {
        const i = this.getPageIndex(index);
        const p = this._pages.get(i);
        return p || null;
      }
      merge(bitfield, length) {
        let i = 0;
        while (i < length) {
          const start = bitfield.firstSet(i);
          if (start === -1) break;
          i = bitfield.firstUnset(start);
          if (i === -1 || i > length) i = length;
          this.setRange(start, i, true);
          if (i >= length) break;
        }
      }
      get(index) {
        const j = index & BITS_PER_PAGE - 1;
        const i = (index - j) / BITS_PER_PAGE;
        const p = this._pages.get(i);
        return p ? p.get(j) : false;
      }
      getPageByteLength() {
        return BYTES_PER_PAGE;
      }
      getPageIndex(index) {
        const j = index & BITS_PER_PAGE - 1;
        return (index - j) / BITS_PER_PAGE;
      }
      getPage(index, create) {
        const i = this.getPageIndex(index);
        let p = this._pages.get(i);
        if (p) return p;
        if (!create) return null;
        const k = Math.floor(i / PAGES_PER_SEGMENT);
        const s = this._segments.get(k) || this._segments.set(
          k,
          new BitfieldSegment(
            k,
            new Uint32Array(k === 0 ? INITIAL_WORDS_PER_SEGMENT : WORDS_PER_SEGMENT)
          )
        );
        p = this._pages.set(i, new BitfieldPage(i, s));
        return p;
      }
      set(index, val) {
        const j = index & BITS_PER_PAGE - 1;
        const i = (index - j) / BITS_PER_PAGE;
        let p = this._pages.get(i);
        if (!p && val) {
          const k = Math.floor(i / PAGES_PER_SEGMENT);
          const s = this._segments.get(k) || this._segments.set(
            k,
            new BitfieldSegment(
              k,
              new Uint32Array(k === 0 ? INITIAL_WORDS_PER_SEGMENT : WORDS_PER_SEGMENT)
            )
          );
          p = this._pages.set(i, new BitfieldPage(i, s));
        }
        if (p) p.set(j, val);
      }
      setRange(start, end, val) {
        let j = start & BITS_PER_PAGE - 1;
        let i = (start - j) / BITS_PER_PAGE;
        while (start < end) {
          let p = this._pages.get(i);
          if (!p && val) {
            const k = Math.floor(i / PAGES_PER_SEGMENT);
            const s = this._segments.get(k) || this._segments.set(
              k,
              new BitfieldSegment(
                k,
                new Uint32Array(k === 0 ? INITIAL_WORDS_PER_SEGMENT : WORDS_PER_SEGMENT)
              )
            );
            p = this._pages.set(i, new BitfieldPage(i, s));
          }
          const offset = i * BITS_PER_PAGE;
          const last = Math.min(end - offset, BITS_PER_PAGE);
          const range = last - j;
          if (p) p.setRange(j, last, val);
          j = 0;
          i++;
          start += range;
        }
      }
      findFirst(val, position) {
        let j = position & BITS_PER_SEGMENT - 1;
        let i = (position - j) / BITS_PER_SEGMENT;
        while (i < this._segments.maxLength) {
          const s = this._segments.get(i);
          let index = -1;
          if (s) index = s.findFirst(val, j);
          else if (!val) index = j;
          if (index !== -1) return i * BITS_PER_SEGMENT + index;
          j = 0;
          i++;
        }
        return val ? -1 : this._segments.maxLength * BITS_PER_SEGMENT;
      }
      firstSet(position) {
        return this.findFirst(true, position);
      }
      firstUnset(position) {
        return this.findFirst(false, position);
      }
      findLast(val, position) {
        let j = position & BITS_PER_SEGMENT - 1;
        let i = (position - j) / BITS_PER_SEGMENT;
        while (i >= 0) {
          const s = this._segments.get(i);
          let index = -1;
          if (s) index = s.findLast(val, j);
          else if (!val) index = j;
          if (index !== -1) return i * BITS_PER_SEGMENT + index;
          j = BITS_PER_SEGMENT - 1;
          i--;
        }
        return -1;
      }
      lastSet(position) {
        return this.findLast(true, position);
      }
      lastUnset(position) {
        return this.findLast(false, position);
      }
      hasUnset(start, length) {
        const end = start + length;
        let j = start & BITS_PER_SEGMENT - 1;
        let i = (start - j) / BITS_PER_SEGMENT;
        while (i < this._segments.maxLength) {
          const s = this._segments.get(i);
          const index = s ? s.findFirst(false, j) : j;
          if (index !== -1) return i * BITS_PER_SEGMENT + index < end;
          j = 0;
          i++;
          if (i * BITS_PER_SEGMENT >= end) return false;
        }
        return true;
      }
      hasSet(start, length) {
        const end = start + length;
        let j = start & BITS_PER_SEGMENT - 1;
        let i = (start - j) / BITS_PER_SEGMENT;
        while (i < this._segments.maxLength) {
          const s = this._segments.get(i);
          let index = -1;
          if (s) index = s.findFirst(true, j);
          if (index !== -1) return i * BITS_PER_SEGMENT + index < end;
          j = 0;
          i++;
          if (i * BITS_PER_SEGMENT >= end) return false;
        }
        return false;
      }
      count(start, length, val) {
        let j = start & BITS_PER_PAGE - 1;
        let i = (start - j) / BITS_PER_PAGE;
        let c4 = 0;
        while (length > 0) {
          const p = this._pages.get(i);
          const end = Math.min(j + length, BITS_PER_PAGE);
          const range = end - j;
          if (p) c4 += p.count(j, range, val);
          else if (!val) c4 += range;
          j = 0;
          i++;
          length -= range;
        }
        return c4;
      }
      countSet(start, length) {
        return this.count(start, length, true);
      }
      countUnset(start, length) {
        return this.count(start, length, false);
      }
      *want(start, length) {
        if (start & 31) {
          const d = start & 31;
          start -= d;
          length += d;
        }
        let j = start & BITS_PER_SEGMENT - 1;
        let i = (start - j) / BITS_PER_SEGMENT;
        while (length > 0) {
          const s = this._segments.get(i);
          if (s) {
            let end = Math.min(j + length, BITS_PER_SEGMENT);
            if (end & 31) end += 32 - (end & 31);
            yield {
              start: i * BITS_PER_SEGMENT + j,
              bitfield: s.bitfield.subarray(j / 32, end / 32)
            };
          }
          j = 0;
          i++;
          length -= BITS_PER_SEGMENT;
        }
      }
      clear(tx) {
        return tx.deleteBitfieldPageRange(0, -1);
      }
      onupdate(ranges) {
        for (const { start, end, value } of ranges) {
          this.setRange(start, end, value);
        }
      }
      static async open(storage, length) {
        if (length === 0) return new Bitfield(storage, null);
        const pages = Math.ceil(length / BITS_PER_PAGE);
        const buffer = b4a4.alloc(pages * BYTES_PER_PAGE);
        const stream = storage.createBitfieldStream({ lt: pages });
        for await (const { index, page } of stream) {
          buffer.set(page, index * BYTES_PER_PAGE);
        }
        return new Bitfield(buffer);
      }
    };
  }
});

// node_modules/hypercore/lib/remote-bitfield.js
var require_remote_bitfield = __commonJS({
  "node_modules/hypercore/lib/remote-bitfield.js"(exports2, module2) {
    var BigSparseArray = require_big_sparse_array();
    var quickbit = require_compat().quickbit;
    var BITS_PER_PAGE = 32768;
    var BYTES_PER_PAGE = BITS_PER_PAGE / 8;
    var WORDS_PER_PAGE = BYTES_PER_PAGE / 4;
    var BITS_PER_SEGMENT = 2097152;
    var BYTES_PER_SEGMENT = BITS_PER_SEGMENT / 8;
    var PAGES_PER_SEGMENT = BITS_PER_SEGMENT / BITS_PER_PAGE;
    var RemoteBitfieldPage = class {
      constructor(index, bitfield, segment) {
        this.index = index;
        this.offset = index * BYTES_PER_PAGE - segment.offset;
        this.bitfield = bitfield;
        this.segment = segment;
        segment.add(this);
      }
      get tree() {
        return this.segment.tree;
      }
      get(index) {
        return quickbit.get(this.bitfield, index);
      }
      set(index, val) {
        if (quickbit.set(this.bitfield, index, val)) {
          this.tree.update(this.offset * 8 + index);
        }
      }
      setRange(start, end, val) {
        quickbit.fill(this.bitfield, val, start, end);
        let i = Math.floor(start / 128);
        const n = i + Math.ceil((end - start) / 128);
        while (i <= n) this.tree.update(this.offset * 8 + i++ * 128);
      }
      findFirst(val, position) {
        return quickbit.findFirst(this.bitfield, val, position);
      }
      findLast(val, position) {
        return quickbit.findLast(this.bitfield, val, position);
      }
      insert(start, bitfield) {
        this.bitfield.set(bitfield, start / 32);
        this.segment.refresh();
      }
      clear(start, bitfield) {
        quickbit.clear(this.bitfield, { field: bitfield, offset: start });
      }
    };
    var RemoteBitfieldSegment = class {
      constructor(index) {
        this.index = index;
        this.offset = index * BYTES_PER_SEGMENT;
        this.tree = quickbit.Index.from([], BYTES_PER_SEGMENT);
        this.pages = new Array(PAGES_PER_SEGMENT);
        this.pagesLength = 0;
      }
      get chunks() {
        return this.tree.chunks;
      }
      refresh() {
        this.tree = quickbit.Index.from(this.tree.chunks, BYTES_PER_SEGMENT);
      }
      add(page) {
        const pageIndex = page.index - this.index * PAGES_PER_SEGMENT;
        if (pageIndex >= this.pagesLength) this.pagesLength = pageIndex + 1;
        this.pages[pageIndex] = page;
        const chunk = { field: page.bitfield, offset: page.offset };
        this.chunks.push(chunk);
        for (let i = this.chunks.length - 2; i >= 0; i--) {
          const prev = this.chunks[i];
          if (prev.offset <= chunk.offset) break;
          this.chunks[i] = chunk;
          this.chunks[i + 1] = prev;
        }
      }
      findFirst(val, position) {
        position = this.tree.skipFirst(!val, position);
        let j = position & BITS_PER_PAGE - 1;
        let i = (position - j) / BITS_PER_PAGE;
        if (i >= PAGES_PER_SEGMENT) return -1;
        while (i < this.pagesLength) {
          const p = this.pages[i];
          let index = -1;
          if (p) index = p.findFirst(val, j);
          else if (!val) index = j;
          if (index !== -1) return i * BITS_PER_PAGE + index;
          j = 0;
          i++;
        }
        return val || this.pagesLength === PAGES_PER_SEGMENT ? -1 : this.pagesLength * BITS_PER_PAGE;
      }
      findLast(val, position) {
        position = this.tree.skipLast(!val, position);
        let j = position & BITS_PER_PAGE - 1;
        let i = (position - j) / BITS_PER_PAGE;
        if (i >= PAGES_PER_SEGMENT) return -1;
        while (i >= 0) {
          const p = this.pages[i];
          let index = -1;
          if (p) index = p.findLast(val, j);
          else if (!val) index = j;
          if (index !== -1) return i * BITS_PER_PAGE + index;
          j = BITS_PER_PAGE - 1;
          i--;
        }
        return -1;
      }
    };
    module2.exports = class RemoteBitfield {
      static BITS_PER_PAGE = BITS_PER_PAGE;
      static BITS_PER_SEGMENT = BITS_PER_SEGMENT;
      constructor() {
        this._pages = new BigSparseArray();
        this._segments = new BigSparseArray();
        this._maxSegments = 0;
      }
      getBitfield(index) {
        const j = index & BITS_PER_PAGE - 1;
        const i = (index - j) / BITS_PER_PAGE;
        const p = this._pages.get(i);
        return p || null;
      }
      get(index) {
        const j = index & BITS_PER_PAGE - 1;
        const i = (index - j) / BITS_PER_PAGE;
        const p = this._pages.get(i);
        return p ? p.get(j) : false;
      }
      set(index, val) {
        const j = index & BITS_PER_PAGE - 1;
        const i = (index - j) / BITS_PER_PAGE;
        let p = this._pages.get(i);
        if (!p && val) {
          const k = Math.floor(i / PAGES_PER_SEGMENT);
          const s = this._segments.get(k) || this._segments.set(k, new RemoteBitfieldSegment(k));
          if (this._maxSegments <= k) this._maxSegments = k + 1;
          p = this._pages.set(i, new RemoteBitfieldPage(i, new Uint32Array(WORDS_PER_PAGE), s));
        }
        if (p) p.set(j, val);
      }
      setRange(start, end, val) {
        let j = start & BITS_PER_PAGE - 1;
        let i = (start - j) / BITS_PER_PAGE;
        while (start < end) {
          let p = this._pages.get(i);
          if (!p && val) {
            const k = Math.floor(i / PAGES_PER_SEGMENT);
            const s = this._segments.get(k) || this._segments.set(k, new RemoteBitfieldSegment(k));
            if (this._maxSegments <= k) this._maxSegments = k + 1;
            p = this._pages.set(i, new RemoteBitfieldPage(i, new Uint32Array(WORDS_PER_PAGE), s));
          }
          const offset = i * BITS_PER_PAGE;
          const last = Math.min(end - offset, BITS_PER_PAGE);
          const range = last - j;
          if (p) p.setRange(j, last, val);
          j = 0;
          i++;
          start += range;
        }
      }
      findFirst(val, position) {
        let j = position & BITS_PER_SEGMENT - 1;
        let i = (position - j) / BITS_PER_SEGMENT;
        while (i < this._maxSegments) {
          const s = this._segments.get(i);
          let index = -1;
          if (s) index = s.findFirst(val, j);
          else if (!val) index = j;
          if (index !== -1) return i * BITS_PER_SEGMENT + index;
          j = 0;
          i++;
        }
        return val ? -1 : Math.max(position, this._maxSegments * BITS_PER_SEGMENT);
      }
      firstSet(position) {
        return this.findFirst(true, position);
      }
      firstUnset(position) {
        return this.findFirst(false, position);
      }
      findLast(val, position) {
        let j = position & BITS_PER_SEGMENT - 1;
        let i = (position - j) / BITS_PER_SEGMENT;
        while (i >= 0) {
          const s = this._segments.get(i);
          let index = -1;
          if (s) index = s.findLast(val, j);
          else if (!val) index = j;
          if (index !== -1) return i * BITS_PER_SEGMENT + index;
          j = BITS_PER_SEGMENT - 1;
          i--;
        }
        return -1;
      }
      lastSet(position) {
        return this.findLast(true, position);
      }
      lastUnset(position) {
        return this.findLast(false, position);
      }
      insert(start, bitfield) {
        if (start % 32 !== 0) return false;
        let length = bitfield.byteLength * 8;
        let j = start & BITS_PER_PAGE - 1;
        let i = (start - j) / BITS_PER_PAGE;
        while (length > 0) {
          let p = this._pages.get(i);
          if (!p) {
            const k = Math.floor(i / PAGES_PER_SEGMENT);
            const s = this._segments.get(k) || this._segments.set(k, new RemoteBitfieldSegment(k));
            if (this._maxSegments <= k) this._maxSegments = k + 1;
            p = this._pages.set(i, new RemoteBitfieldPage(i, new Uint32Array(WORDS_PER_PAGE), s));
          }
          const end = Math.min(j + length, BITS_PER_PAGE);
          const range = end - j;
          p.insert(j, bitfield.subarray(0, range / 32));
          bitfield = bitfield.subarray(range / 32);
          j = 0;
          i++;
          length -= range;
        }
        return true;
      }
      clear(start, bitfield) {
        if (start % 32 !== 0) return false;
        let length = bitfield.byteLength * 8;
        let j = start & BITS_PER_PAGE - 1;
        let i = (start - j) / BITS_PER_PAGE;
        while (length > 0) {
          let p = this._pages.get(i);
          if (!p) {
            const k = Math.floor(i / PAGES_PER_SEGMENT);
            const s = this._segments.get(k) || this._segments.set(k, new RemoteBitfieldSegment(k));
            if (this._maxSegments <= k) this._maxSegments = k + 1;
            p = this._pages.set(i, new RemoteBitfieldPage(i, new Uint32Array(WORDS_PER_PAGE), s));
          }
          const end = Math.min(j + length, BITS_PER_PAGE);
          const range = end - j;
          p.clear(j, bitfield.subarray(0, range / 32));
          bitfield = bitfield.subarray(range / 32);
          j = 0;
          i++;
          length -= range;
        }
        return true;
      }
    };
  }
});

// node_modules/hypercore/lib/messages.js
var require_messages2 = __commonJS({
  "node_modules/hypercore/lib/messages.js"(exports2) {
    var c4 = require_compact_encoding();
    var b4a4 = require_b4a();
    var { DEFAULT_NAMESPACE } = require_caps();
    var { INVALID_OPLOG_VERSION } = require_hypercore_errors();
    var unslab = require_unslab();
    var EMPTY = b4a4.alloc(0);
    var MANIFEST_PATCH = 1;
    var MANIFEST_PROLOGUE = 2;
    var MANIFEST_LINKED = 4;
    var MANIFEST_USER_DATA = 8;
    var hashes = {
      preencode(state, m) {
        state.end++;
      },
      encode(state, m) {
        if (m === "blake2b") {
          c4.uint.encode(state, 0);
          return;
        }
        throw new Error("Unknown hash: " + m);
      },
      decode(state) {
        const n = c4.uint.decode(state);
        if (n === 0) return "blake2b";
        throw new Error("Unknown hash id: " + n);
      }
    };
    var signatures = {
      preencode(state, m) {
        state.end++;
      },
      encode(state, m) {
        if (m === "ed25519") {
          c4.uint.encode(state, 0);
          return;
        }
        throw new Error("Unknown signature: " + m);
      },
      decode(state) {
        const n = c4.uint.decode(state);
        if (n === 0) return "ed25519";
        throw new Error("Unknown signature id: " + n);
      }
    };
    var signer = {
      preencode(state, m) {
        signatures.preencode(state, m.signature);
        c4.fixed32.preencode(state, m.namespace);
        c4.fixed32.preencode(state, m.publicKey);
      },
      encode(state, m) {
        signatures.encode(state, m.signature);
        c4.fixed32.encode(state, m.namespace);
        c4.fixed32.encode(state, m.publicKey);
      },
      decode(state) {
        return {
          signature: signatures.decode(state),
          namespace: c4.fixed32.decode(state),
          publicKey: c4.fixed32.decode(state)
        };
      }
    };
    var signerArray = c4.array(signer);
    var prologue = {
      preencode(state, p) {
        c4.fixed32.preencode(state, p.hash);
        c4.uint.preencode(state, p.length);
      },
      encode(state, p) {
        c4.fixed32.encode(state, p.hash);
        c4.uint.encode(state, p.length);
      },
      decode(state) {
        return {
          hash: c4.fixed32.decode(state),
          length: c4.uint.decode(state)
        };
      }
    };
    var manifestv0 = {
      preencode(state, m) {
        hashes.preencode(state, m.hash);
        state.end++;
        if (m.prologue && m.signers.length === 0) {
          c4.fixed32.preencode(state, m.prologue.hash);
          return;
        }
        if (m.quorum === 1 && m.signers.length === 1 && !m.allowPatch) {
          signer.preencode(state, m.signers[0]);
        } else {
          state.end++;
          c4.uint.preencode(state, m.quorum);
          signerArray.preencode(state, m.signers);
        }
      },
      encode(state, m) {
        hashes.encode(state, m.hash);
        if (m.prologue && m.signers.length === 0) {
          c4.uint.encode(state, 0);
          c4.fixed32.encode(state, m.prologue.hash);
          return;
        }
        if (m.quorum === 1 && m.signers.length === 1 && !m.allowPatch) {
          c4.uint.encode(state, 1);
          signer.encode(state, m.signers[0]);
        } else {
          c4.uint.encode(state, 2);
          c4.uint.encode(state, m.allowPatch ? 1 : 0);
          c4.uint.encode(state, m.quorum);
          signerArray.encode(state, m.signers);
        }
      },
      decode(state) {
        const hash = hashes.decode(state);
        const type = c4.uint.decode(state);
        if (type > 2) throw new Error("Unknown type: " + type);
        if (type === 0) {
          return {
            version: 0,
            hash,
            allowPatch: false,
            quorum: 0,
            signers: [],
            prologue: {
              hash: c4.fixed32.decode(state),
              length: 0
            },
            linked: null,
            userData: null
          };
        }
        if (type === 1) {
          return {
            version: 0,
            hash,
            allowPatch: false,
            quorum: 1,
            signers: [signer.decode(state)],
            prologue: null,
            linked: null,
            userData: null
          };
        }
        const flags = c4.uint.decode(state);
        return {
          version: 0,
          hash,
          allowPatch: (flags & 1) !== 0,
          quorum: c4.uint.decode(state),
          signers: signerArray.decode(state),
          prologue: null,
          linked: null,
          userData: null
        };
      }
    };
    var fixed32Array = c4.array(c4.fixed32);
    var manifest = exports2.manifest = {
      preencode(state, m) {
        state.end++;
        if (m.version === 0) return manifestv0.preencode(state, m);
        state.end++;
        hashes.preencode(state, m.hash);
        c4.uint.preencode(state, m.quorum);
        signerArray.preencode(state, m.signers);
        if (m.prologue) prologue.preencode(state, m.prologue);
        if (m.linked) fixed32Array.preencode(state, m.linked);
        if (m.userData) c4.buffer.preencode(state, m.userData);
      },
      encode(state, m) {
        c4.uint.encode(state, m.version);
        if (m.version === 0) return manifestv0.encode(state, m);
        let flags = 0;
        if (m.allowPatch) flags |= MANIFEST_PATCH;
        if (m.prologue) flags |= MANIFEST_PROLOGUE;
        if (m.linked) flags |= MANIFEST_LINKED;
        if (m.userData) flags |= MANIFEST_USER_DATA;
        c4.uint.encode(state, flags);
        hashes.encode(state, m.hash);
        c4.uint.encode(state, m.quorum);
        signerArray.encode(state, m.signers);
        if (m.prologue) prologue.encode(state, m.prologue);
        if (m.linked) fixed32Array.encode(state, m.linked);
        if (m.userData) c4.buffer.encode(state, m.userData);
      },
      decode(state) {
        const version3 = c4.uint.decode(state);
        if (version3 === 0) return manifestv0.decode(state);
        if (version3 > 2) throw new Error("Unknown version: " + version3);
        const flags = c4.uint.decode(state);
        const hash = hashes.decode(state);
        const quorum = c4.uint.decode(state);
        const signers = signerArray.decode(state);
        const hasPatch = (flags & MANIFEST_PATCH) !== 0;
        const hasPrologue = (flags & MANIFEST_PROLOGUE) !== 0;
        const hasLinked = (flags & MANIFEST_LINKED) !== 0;
        const hasUserData = (flags & MANIFEST_USER_DATA) !== 0;
        return {
          version: version3,
          hash,
          allowPatch: hasPatch,
          quorum,
          signers,
          prologue: hasPrologue ? prologue.decode(state) : null,
          linked: hasLinked ? fixed32Array.decode(state) : null,
          userData: hasUserData ? c4.buffer.decode(state) : null
        };
      }
    };
    var node = {
      preencode(state, n) {
        c4.uint.preencode(state, n.index);
        c4.uint.preencode(state, n.size);
        c4.fixed32.preencode(state, n.hash);
      },
      encode(state, n) {
        c4.uint.encode(state, n.index);
        c4.uint.encode(state, n.size);
        c4.fixed32.encode(state, n.hash);
      },
      decode(state) {
        return {
          index: c4.uint.decode(state),
          size: c4.uint.decode(state),
          hash: c4.fixed32.decode(state)
        };
      }
    };
    var nodeArray = c4.array(node);
    var wire = exports2.wire = {};
    wire.handshake = {
      preencode(state, m) {
        c4.uint.preencode(state, 1);
        c4.fixed32.preencode(state, m.capability);
      },
      encode(state, m) {
        c4.uint.encode(state, m.seeks ? 1 : 0);
        c4.fixed32.encode(state, m.capability);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          seeks: (flags & 1) !== 0,
          capability: unslab(c4.fixed32.decode(state))
        };
      }
    };
    var requestBlock = {
      preencode(state, b) {
        c4.uint.preencode(state, b.index);
        c4.uint.preencode(state, b.nodes);
      },
      encode(state, b) {
        c4.uint.encode(state, b.index);
        c4.uint.encode(state, b.nodes);
      },
      decode(state) {
        return {
          index: c4.uint.decode(state),
          nodes: c4.uint.decode(state)
        };
      }
    };
    var requestSeek = {
      preencode(state, s) {
        c4.uint.preencode(state, s.bytes);
        c4.uint.preencode(state, s.padding);
      },
      encode(state, s) {
        c4.uint.encode(state, s.bytes);
        c4.uint.encode(state, s.padding);
      },
      decode(state) {
        return {
          bytes: c4.uint.decode(state),
          padding: c4.uint.decode(state)
        };
      }
    };
    var requestUpgrade = {
      preencode(state, u) {
        c4.uint.preencode(state, u.start);
        c4.uint.preencode(state, u.length);
      },
      encode(state, u) {
        c4.uint.encode(state, u.start);
        c4.uint.encode(state, u.length);
      },
      decode(state) {
        return {
          start: c4.uint.decode(state),
          length: c4.uint.decode(state)
        };
      }
    };
    wire.request = {
      preencode(state, m) {
        state.end++;
        c4.uint.preencode(state, m.id);
        c4.uint.preencode(state, m.fork);
        if (m.block) requestBlock.preencode(state, m.block);
        if (m.hash) requestBlock.preencode(state, m.hash);
        if (m.seek) requestSeek.preencode(state, m.seek);
        if (m.upgrade) requestUpgrade.preencode(state, m.upgrade);
        if (m.priority) c4.uint.preencode(state, m.priority);
      },
      encode(state, m) {
        const flags = (m.block ? 1 : 0) | (m.hash ? 2 : 0) | (m.seek ? 4 : 0) | (m.upgrade ? 8 : 0) | (m.manifest ? 16 : 0) | (m.priority ? 32 : 0);
        c4.uint.encode(state, flags);
        c4.uint.encode(state, m.id);
        c4.uint.encode(state, m.fork);
        if (m.block) requestBlock.encode(state, m.block);
        if (m.hash) requestBlock.encode(state, m.hash);
        if (m.seek) requestSeek.encode(state, m.seek);
        if (m.upgrade) requestUpgrade.encode(state, m.upgrade);
        if (m.priority) c4.uint.encode(state, m.priority);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          id: c4.uint.decode(state),
          fork: c4.uint.decode(state),
          block: flags & 1 ? requestBlock.decode(state) : null,
          hash: flags & 2 ? requestBlock.decode(state) : null,
          seek: flags & 4 ? requestSeek.decode(state) : null,
          upgrade: flags & 8 ? requestUpgrade.decode(state) : null,
          manifest: (flags & 16) !== 0,
          priority: flags & 32 ? c4.uint.decode(state) : 0
        };
      }
    };
    wire.cancel = {
      preencode(state, m) {
        c4.uint.preencode(state, m.request);
      },
      encode(state, m) {
        c4.uint.encode(state, m.request);
      },
      decode(state, m) {
        return {
          request: c4.uint.decode(state)
        };
      }
    };
    var dataUpgrade = {
      preencode(state, u) {
        c4.uint.preencode(state, u.start);
        c4.uint.preencode(state, u.length);
        nodeArray.preencode(state, u.nodes);
        nodeArray.preencode(state, u.additionalNodes);
        c4.buffer.preencode(state, u.signature);
      },
      encode(state, u) {
        c4.uint.encode(state, u.start);
        c4.uint.encode(state, u.length);
        nodeArray.encode(state, u.nodes);
        nodeArray.encode(state, u.additionalNodes);
        c4.buffer.encode(state, u.signature);
      },
      decode(state) {
        return {
          start: c4.uint.decode(state),
          length: c4.uint.decode(state),
          nodes: nodeArray.decode(state),
          additionalNodes: nodeArray.decode(state),
          signature: c4.buffer.decode(state)
        };
      }
    };
    var dataSeek = {
      preencode(state, s) {
        c4.uint.preencode(state, s.bytes);
        nodeArray.preencode(state, s.nodes);
      },
      encode(state, s) {
        c4.uint.encode(state, s.bytes);
        nodeArray.encode(state, s.nodes);
      },
      decode(state) {
        return {
          bytes: c4.uint.decode(state),
          nodes: nodeArray.decode(state)
        };
      }
    };
    var dataBlock = {
      preencode(state, b) {
        c4.uint.preencode(state, b.index);
        c4.buffer.preencode(state, b.value);
        nodeArray.preencode(state, b.nodes);
      },
      encode(state, b) {
        c4.uint.encode(state, b.index);
        c4.buffer.encode(state, b.value);
        nodeArray.encode(state, b.nodes);
      },
      decode(state) {
        return {
          index: c4.uint.decode(state),
          value: c4.buffer.decode(state) || EMPTY,
          nodes: nodeArray.decode(state)
        };
      }
    };
    var dataHash = {
      preencode(state, b) {
        c4.uint.preencode(state, b.index);
        nodeArray.preencode(state, b.nodes);
      },
      encode(state, b) {
        c4.uint.encode(state, b.index);
        nodeArray.encode(state, b.nodes);
      },
      decode(state) {
        return {
          index: c4.uint.decode(state),
          nodes: nodeArray.decode(state)
        };
      }
    };
    wire.data = {
      preencode(state, m) {
        state.end++;
        c4.uint.preencode(state, m.request);
        c4.uint.preencode(state, m.fork);
        if (m.block) dataBlock.preencode(state, m.block);
        if (m.hash) dataHash.preencode(state, m.hash);
        if (m.seek) dataSeek.preencode(state, m.seek);
        if (m.upgrade) dataUpgrade.preencode(state, m.upgrade);
        if (m.manifest) manifest.preencode(state, m.manifest);
      },
      encode(state, m) {
        const flags = (m.block ? 1 : 0) | (m.hash ? 2 : 0) | (m.seek ? 4 : 0) | (m.upgrade ? 8 : 0) | (m.manifest ? 16 : 0);
        c4.uint.encode(state, flags);
        c4.uint.encode(state, m.request);
        c4.uint.encode(state, m.fork);
        if (m.block) dataBlock.encode(state, m.block);
        if (m.hash) dataHash.encode(state, m.hash);
        if (m.seek) dataSeek.encode(state, m.seek);
        if (m.upgrade) dataUpgrade.encode(state, m.upgrade);
        if (m.manifest) manifest.encode(state, m.manifest);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          request: c4.uint.decode(state),
          fork: c4.uint.decode(state),
          block: flags & 1 ? dataBlock.decode(state) : null,
          hash: flags & 2 ? dataHash.decode(state) : null,
          seek: flags & 4 ? dataSeek.decode(state) : null,
          upgrade: flags & 8 ? dataUpgrade.decode(state) : null,
          manifest: flags & 16 ? manifest.decode(state) : null
        };
      }
    };
    wire.noData = {
      preencode(state, m) {
        c4.uint.preencode(state, m.request);
        c4.uint.preencode(state, m.reason ? 1 : 0);
        if (m.reason) c4.uint.preencode(state, m.reason);
      },
      encode(state, m) {
        c4.uint.encode(state, m.request);
        c4.uint.encode(state, m.reason ? 1 : 0);
        if (m.reason) c4.uint.encode(state, m.reason);
      },
      decode(state, m) {
        const request = c4.uint.decode(state);
        const flags = state.start < state.end ? c4.uint.decode(state) : 0;
        return {
          request,
          reason: flags & 1 ? c4.uint.decode(state) : 0
        };
      }
    };
    wire.want = {
      preencode(state, m) {
        c4.uint.preencode(state, m.start);
        c4.uint.preencode(state, m.length);
        const flags = m.any ? 1 : 0;
        if (flags !== 0) c4.uint.preencode(state, flags);
      },
      encode(state, m) {
        c4.uint.encode(state, m.start);
        c4.uint.encode(state, m.length);
        const flags = m.any ? 1 : 0;
        if (flags !== 0) c4.uint.encode(state, flags);
      },
      decode(state) {
        const start = c4.uint.decode(state);
        const length = c4.uint.decode(state);
        const flags = state.start < state.end ? c4.uint.decode(state) : 0;
        return {
          start,
          length,
          any: (flags & 1) !== 0
        };
      }
    };
    wire.unwant = {
      preencode(state, m) {
        c4.uint.preencode(state, m.start);
        c4.uint.preencode(state, m.length);
        const flags = m.any ? 1 : 0;
        if (flags !== 0) c4.uint.preencode(state, flags);
      },
      encode(state, m) {
        c4.uint.encode(state, m.start);
        c4.uint.encode(state, m.length);
        const flags = m.any ? 1 : 0;
        if (flags !== 0) c4.uint.encode(state, flags);
      },
      decode(state, m) {
        const start = c4.uint.decode(state);
        const length = c4.uint.decode(state);
        const flags = state.start < state.end ? c4.uint.decode(state) : 0;
        return {
          start,
          length,
          any: (flags & 1) !== 0
        };
      }
    };
    wire.range = {
      preencode(state, m) {
        state.end++;
        c4.uint.preencode(state, m.start);
        if (m.length !== 1) c4.uint.preencode(state, m.length);
      },
      encode(state, m) {
        c4.uint.encode(state, (m.drop ? 1 : 0) | (m.length === 1 ? 2 : 0));
        c4.uint.encode(state, m.start);
        if (m.length !== 1) c4.uint.encode(state, m.length);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          drop: (flags & 1) !== 0,
          start: c4.uint.decode(state),
          length: (flags & 2) !== 0 ? 1 : c4.uint.decode(state)
        };
      }
    };
    wire.bitfield = {
      preencode(state, m) {
        c4.uint.preencode(state, m.start);
        c4.uint32array.preencode(state, m.bitfield);
      },
      encode(state, m) {
        c4.uint.encode(state, m.start);
        c4.uint32array.encode(state, m.bitfield);
      },
      decode(state, m) {
        return {
          start: c4.uint.decode(state),
          bitfield: c4.uint32array.decode(state)
        };
      }
    };
    wire.sync = {
      preencode(state, m) {
        state.end++;
        c4.uint.preencode(state, m.fork);
        c4.uint.preencode(state, m.length);
        c4.uint.preencode(state, m.remoteLength);
      },
      encode(state, m) {
        c4.uint.encode(
          state,
          (m.canUpgrade ? 1 : 0) | (m.uploading ? 2 : 0) | (m.downloading ? 4 : 0) | (m.hasManifest ? 8 : 0) | (m.allowPush ? 16 : 0)
        );
        c4.uint.encode(state, m.fork);
        c4.uint.encode(state, m.length);
        c4.uint.encode(state, m.remoteLength);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          fork: c4.uint.decode(state),
          length: c4.uint.decode(state),
          remoteLength: c4.uint.decode(state),
          canUpgrade: (flags & 1) !== 0,
          uploading: (flags & 2) !== 0,
          downloading: (flags & 4) !== 0,
          hasManifest: (flags & 8) !== 0,
          allowPush: (flags & 16) !== 0
        };
      }
    };
    wire.reorgHint = {
      preencode(state, m) {
        c4.uint.preencode(state, m.from);
        c4.uint.preencode(state, m.to);
        c4.uint.preencode(state, m.ancestors);
      },
      encode(state, m) {
        c4.uint.encode(state, m.from);
        c4.uint.encode(state, m.to);
        c4.uint.encode(state, m.ancestors);
      },
      decode(state) {
        return {
          from: c4.uint.encode(state),
          to: c4.uint.encode(state),
          ancestors: c4.uint.encode(state)
        };
      }
    };
    wire.extension = {
      preencode(state, m) {
        c4.string.preencode(state, m.name);
        c4.raw.preencode(state, m.message);
      },
      encode(state, m) {
        c4.string.encode(state, m.name);
        c4.raw.encode(state, m.message);
      },
      decode(state) {
        return {
          name: c4.string.decode(state),
          message: c4.raw.decode(state)
        };
      }
    };
    var keyValue = {
      preencode(state, p) {
        c4.string.preencode(state, p.key);
        c4.buffer.preencode(state, p.value);
      },
      encode(state, p) {
        c4.string.encode(state, p.key);
        c4.buffer.encode(state, p.value);
      },
      decode(state) {
        return {
          key: c4.string.decode(state),
          value: c4.buffer.decode(state)
        };
      }
    };
    var treeUpgrade = {
      preencode(state, u) {
        c4.uint.preencode(state, u.fork);
        c4.uint.preencode(state, u.ancestors);
        c4.uint.preencode(state, u.length);
        c4.buffer.preencode(state, u.signature);
      },
      encode(state, u) {
        c4.uint.encode(state, u.fork);
        c4.uint.encode(state, u.ancestors);
        c4.uint.encode(state, u.length);
        c4.buffer.encode(state, u.signature);
      },
      decode(state) {
        return {
          fork: c4.uint.decode(state),
          ancestors: c4.uint.decode(state),
          length: c4.uint.decode(state),
          signature: c4.buffer.decode(state)
        };
      }
    };
    var bitfieldUpdate = {
      // TODO: can maybe be folded into a HAVE later on with the most recent spec
      preencode(state, b) {
        state.end++;
        c4.uint.preencode(state, b.start);
        c4.uint.preencode(state, b.length);
      },
      encode(state, b) {
        state.buffer[state.start++] = b.drop ? 1 : 0;
        c4.uint.encode(state, b.start);
        c4.uint.encode(state, b.length);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          drop: (flags & 1) !== 0,
          start: c4.uint.decode(state),
          length: c4.uint.decode(state)
        };
      }
    };
    var oplog = exports2.oplog = {};
    oplog.entry = {
      preencode(state, m) {
        state.end++;
        if (m.userData) keyValue.preencode(state, m.userData);
        if (m.treeNodes) nodeArray.preencode(state, m.treeNodes);
        if (m.treeUpgrade) treeUpgrade.preencode(state, m.treeUpgrade);
        if (m.bitfield) bitfieldUpdate.preencode(state, m.bitfield);
      },
      encode(state, m) {
        const s = state.start++;
        let flags = 0;
        if (m.userData) {
          flags |= 1;
          keyValue.encode(state, m.userData);
        }
        if (m.treeNodes) {
          flags |= 2;
          nodeArray.encode(state, m.treeNodes);
        }
        if (m.treeUpgrade) {
          flags |= 4;
          treeUpgrade.encode(state, m.treeUpgrade);
        }
        if (m.bitfield) {
          flags |= 8;
          bitfieldUpdate.encode(state, m.bitfield);
        }
        state.buffer[s] = flags;
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          userData: (flags & 1) !== 0 ? keyValue.decode(state) : null,
          treeNodes: (flags & 2) !== 0 ? nodeArray.decode(state) : null,
          treeUpgrade: (flags & 4) !== 0 ? treeUpgrade.decode(state) : null,
          bitfield: (flags & 8) !== 0 ? bitfieldUpdate.decode(state) : null
        };
      }
    };
    var keyPair = {
      preencode(state, kp) {
        c4.buffer.preencode(state, kp.publicKey);
        c4.buffer.preencode(state, kp.secretKey);
      },
      encode(state, kp) {
        c4.buffer.encode(state, kp.publicKey);
        c4.buffer.encode(state, kp.secretKey);
      },
      decode(state) {
        return {
          publicKey: c4.buffer.decode(state),
          secretKey: c4.buffer.decode(state)
        };
      }
    };
    var reorgHint = {
      preencode(state, r) {
        c4.uint.preencode(state, r.from);
        c4.uint.preencode(state, r.to);
        c4.uint.preencode(state, r.ancestors);
      },
      encode(state, r) {
        c4.uint.encode(state, r.from);
        c4.uint.encode(state, r.to);
        c4.uint.encode(state, r.ancestors);
      },
      decode(state) {
        return {
          from: c4.uint.decode(state),
          to: c4.uint.decode(state),
          ancestors: c4.uint.decode(state)
        };
      }
    };
    var reorgHintArray = c4.array(reorgHint);
    var hints = {
      preencode(state, h) {
        reorgHintArray.preencode(state, h.reorgs);
        c4.uint.preencode(state, h.contiguousLength);
      },
      encode(state, h) {
        reorgHintArray.encode(state, h.reorgs);
        c4.uint.encode(state, h.contiguousLength);
      },
      decode(state) {
        return {
          reorgs: reorgHintArray.decode(state),
          contiguousLength: state.start < state.end ? c4.uint.decode(state) : 0
        };
      }
    };
    var treeHeader = {
      preencode(state, t) {
        c4.uint.preencode(state, t.fork);
        c4.uint.preencode(state, t.length);
        c4.buffer.preencode(state, t.rootHash);
        c4.buffer.preencode(state, t.signature);
      },
      encode(state, t) {
        c4.uint.encode(state, t.fork);
        c4.uint.encode(state, t.length);
        c4.buffer.encode(state, t.rootHash);
        c4.buffer.encode(state, t.signature);
      },
      decode(state) {
        return {
          fork: c4.uint.decode(state),
          length: c4.uint.decode(state),
          rootHash: c4.buffer.decode(state),
          signature: c4.buffer.decode(state)
        };
      }
    };
    var types = {
      preencode(state, t) {
        c4.string.preencode(state, t.tree);
        c4.string.preencode(state, t.bitfield);
        c4.string.preencode(state, t.signer);
      },
      encode(state, t) {
        c4.string.encode(state, t.tree);
        c4.string.encode(state, t.bitfield);
        c4.string.encode(state, t.signer);
      },
      decode(state) {
        return {
          tree: c4.string.decode(state),
          bitfield: c4.string.decode(state),
          signer: c4.string.decode(state)
        };
      }
    };
    var externalHeader = {
      preencode(state, m) {
        c4.uint.preencode(state, m.start);
        c4.uint.preencode(state, m.length);
      },
      encode(state, m) {
        c4.uint.encode(state, m.start);
        c4.uint.encode(state, m.length);
      },
      decode(state) {
        return {
          start: c4.uint.decode(state),
          length: c4.uint.decode(state)
        };
      }
    };
    var keyValueArray = c4.array(keyValue);
    oplog.header = {
      preencode(state, h) {
        state.end += 2;
        if (h.external) {
          externalHeader.preencode(state, h.external);
          return;
        }
        c4.fixed32.preencode(state, h.key);
        if (h.manifest) manifest.preencode(state, h.manifest);
        if (h.keyPair) keyPair.preencode(state, h.keyPair);
        keyValueArray.preencode(state, h.userData);
        treeHeader.preencode(state, h.tree);
        hints.preencode(state, h.hints);
      },
      encode(state, h) {
        c4.uint.encode(state, 1);
        if (h.external) {
          c4.uint.encode(state, 1);
          externalHeader.encode(state, h.external);
          return;
        }
        c4.uint.encode(state, (h.manifest ? 2 : 0) | (h.keyPair ? 4 : 0));
        c4.fixed32.encode(state, h.key);
        if (h.manifest) manifest.encode(state, h.manifest);
        if (h.keyPair) keyPair.encode(state, h.keyPair);
        keyValueArray.encode(state, h.userData);
        treeHeader.encode(state, h.tree);
        hints.encode(state, h.hints);
      },
      decode(state) {
        const version3 = c4.uint.decode(state);
        if (version3 > 1) {
          throw INVALID_OPLOG_VERSION("Invalid header version. Expected <= 1, got " + version3);
        }
        if (version3 === 0) {
          const old = {
            types: types.decode(state),
            userData: keyValueArray.decode(state),
            tree: treeHeader.decode(state),
            signer: keyPair.decode(state),
            hints: hints.decode(state)
          };
          return {
            external: null,
            key: old.signer.publicKey,
            manifest: {
              version: 0,
              hash: old.types.tree,
              allowPatch: false,
              quorum: 1,
              signers: [
                {
                  signature: old.types.signer,
                  namespace: DEFAULT_NAMESPACE,
                  publicKey: old.signer.publicKey
                }
              ],
              prologue: null,
              linked: null,
              userData: null
            },
            keyPair: old.signer.secretKey ? old.signer : null,
            userData: old.userData,
            tree: old.tree,
            hints: old.hints
          };
        }
        const flags = c4.uint.decode(state);
        if (flags & 1) {
          return {
            external: externalHeader.decode(state),
            key: null,
            manifest: null,
            keyPair: null,
            userData: null,
            tree: null,
            hints: null
          };
        }
        return {
          external: null,
          key: c4.fixed32.decode(state),
          manifest: (flags & 2) !== 0 ? manifest.decode(state) : null,
          keyPair: (flags & 4) !== 0 ? keyPair.decode(state) : null,
          userData: keyValueArray.decode(state),
          tree: treeHeader.decode(state),
          hints: hints.decode(state)
        };
      }
    };
    var uintArray = c4.array(c4.uint);
    var multisigInput = {
      preencode(state, inp) {
        c4.uint.preencode(state, inp.signer);
        c4.fixed64.preencode(state, inp.signature);
        c4.uint.preencode(state, inp.patch);
      },
      encode(state, inp) {
        c4.uint.encode(state, inp.signer);
        c4.fixed64.encode(state, inp.signature);
        c4.uint.encode(state, inp.patch);
      },
      decode(state) {
        return {
          signer: c4.uint.decode(state),
          signature: c4.fixed64.decode(state),
          patch: c4.uint.decode(state)
        };
      }
    };
    var patchEncodingv0 = {
      preencode(state, n) {
        c4.uint.preencode(state, n.start);
        c4.uint.preencode(state, n.length);
        uintArray.preencode(state, n.nodes);
      },
      encode(state, n) {
        c4.uint.encode(state, n.start);
        c4.uint.encode(state, n.length);
        uintArray.encode(state, n.nodes);
      },
      decode(state) {
        return {
          start: c4.uint.decode(state),
          length: c4.uint.decode(state),
          nodes: uintArray.decode(state)
        };
      }
    };
    var multisigInputv0 = {
      preencode(state, n) {
        state.end++;
        c4.uint.preencode(state, n.signer);
        c4.fixed64.preencode(state, n.signature);
        if (n.patch) patchEncodingv0.preencode(state, n.patch);
      },
      encode(state, n) {
        c4.uint.encode(state, n.patch ? 1 : 0);
        c4.uint.encode(state, n.signer);
        c4.fixed64.encode(state, n.signature);
        if (n.patch) patchEncodingv0.encode(state, n.patch);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          signer: c4.uint.decode(state),
          signature: c4.fixed64.decode(state),
          patch: flags & 1 ? patchEncodingv0.decode(state) : null
        };
      }
    };
    var multisigInputArrayv0 = c4.array(multisigInputv0);
    var multisigInputArray = c4.array(multisigInput);
    var compactNode = {
      preencode(state, n) {
        c4.uint.preencode(state, n.index);
        c4.uint.preencode(state, n.size);
        c4.fixed32.preencode(state, n.hash);
      },
      encode(state, n) {
        c4.uint.encode(state, n.index);
        c4.uint.encode(state, n.size);
        c4.fixed32.encode(state, n.hash);
      },
      decode(state) {
        return {
          index: c4.uint.decode(state),
          size: c4.uint.decode(state),
          hash: c4.fixed32.decode(state)
        };
      }
    };
    var compactNodeArray = c4.array(compactNode);
    exports2.multiSignaturev0 = {
      preencode(state, s) {
        multisigInputArrayv0.preencode(state, s.proofs);
        compactNodeArray.preencode(state, s.patch);
      },
      encode(state, s) {
        multisigInputArrayv0.encode(state, s.proofs);
        compactNodeArray.encode(state, s.patch);
      },
      decode(state) {
        return {
          proofs: multisigInputArrayv0.decode(state),
          patch: compactNodeArray.decode(state)
        };
      }
    };
    exports2.multiSignature = {
      preencode(state, s) {
        multisigInputArray.preencode(state, s.proofs);
        compactNodeArray.preencode(state, s.patch);
      },
      encode(state, s) {
        multisigInputArray.encode(state, s.proofs);
        compactNodeArray.encode(state, s.patch);
      },
      decode(state) {
        return {
          proofs: multisigInputArray.decode(state),
          patch: compactNodeArray.decode(state)
        };
      }
    };
  }
});

// node_modules/hypercore/lib/multisig.js
var require_multisig = __commonJS({
  "node_modules/hypercore/lib/multisig.js"(exports2, module2) {
    var c4 = require_compact_encoding();
    var b4a4 = require_b4a();
    var flat = require_flat_tree();
    var { MerkleTree } = require_merkle_tree();
    var { multiSignature, multiSignaturev0 } = require_messages2();
    module2.exports = {
      assemblev0,
      assemble,
      inflatev0,
      inflate,
      partialSignature,
      signableLength
    };
    function inflatev0(data) {
      return c4.decode(multiSignaturev0, data);
    }
    function inflate(data) {
      return c4.decode(multiSignature, data);
    }
    async function partialSignature(core, signer, from, to = core.state.length, signature = core.state.signature) {
      if (from > core.state.length) return null;
      const nodes = to <= from ? null : await upgradeNodes(core, from, to);
      if (signature.byteLength !== 64) {
        signature = c4.decode(multiSignature, signature).proofs[0].signature;
      }
      return {
        signer,
        signature,
        patch: nodes ? to - from : 0,
        nodes
      };
    }
    async function upgradeNodes(core, from, to) {
      const rx = core.state.storage.read();
      let p = null;
      try {
        p = await MerkleTree.proof(core.state, rx, { upgrade: { start: from, length: to - from } });
      } catch (err) {
        rx.destroy();
        throw err;
      }
      rx.tryFlush();
      return (await p.settle()).upgrade.nodes;
    }
    function signableLength(lengths, quorum) {
      if (quorum <= 0) quorum = 1;
      if (quorum > lengths.length) return 0;
      return lengths.sort(cmp)[quorum - 1];
    }
    function cmp(a, b) {
      return b - a;
    }
    function assemblev0(inputs) {
      const proofs = [];
      const patch = [];
      for (const u of inputs) {
        proofs.push(compressProof(u, patch));
      }
      return c4.encode(multiSignaturev0, { proofs, patch });
    }
    function assemble(inputs) {
      const proofs = [];
      const patch = [];
      const seen = /* @__PURE__ */ new Set();
      for (const u of inputs) {
        if (u.nodes) {
          for (const node of u.nodes) {
            if (seen.has(node.index)) continue;
            seen.add(node.index);
            patch.push(node);
          }
        }
        proofs.push({
          signer: u.signer,
          signature: u.signature,
          patch: u.patch
        });
      }
      return c4.encode(multiSignature, { proofs, patch });
    }
    function compareNode(a, b) {
      if (a.index !== b.index) return false;
      if (a.size !== b.size) return false;
      return b4a4.equals(a.hash, b.hash);
    }
    function compressProof(proof, nodes) {
      return {
        signer: proof.signer,
        signature: proof.signature,
        patch: proof.patch ? compressUpgrade(proof, nodes) : null
      };
    }
    function compressUpgrade(p, nodes) {
      const u = {
        start: flat.rightSpan(p.nodes[p.nodes.length - 1].index) / 2 + 1,
        length: p.patch,
        nodes: []
      };
      for (const node of p.nodes) {
        let present = false;
        for (let i = 0; i < nodes.length; i++) {
          if (!compareNode(nodes[i], node)) continue;
          u.nodes.push(i);
          present = true;
          break;
        }
        if (present) continue;
        u.nodes.push(nodes.push(node) - 1);
      }
      return u;
    }
  }
});

// node_modules/hypercore/lib/verifier.js
var require_verifier = __commonJS({
  "node_modules/hypercore/lib/verifier.js"(exports2, module2) {
    var crypto = require_hypercore_crypto();
    var b4a4 = require_b4a();
    var c4 = require_compact_encoding();
    var flat = require_flat_tree();
    var { BAD_ARGUMENT } = require_hypercore_errors();
    var unslab = require_unslab();
    var m = require_messages2();
    var multisig = require_multisig();
    var caps = require_caps();
    var Signer = class {
      constructor(manifestHash2, version3, index, { signature = "ed25519", publicKey, namespace = caps.DEFAULT_NAMESPACE } = {}) {
        if (!publicKey) throw BAD_ARGUMENT("public key is required for a signer");
        if (signature !== "ed25519") throw BAD_ARGUMENT("Only Ed25519 signatures are supported");
        this.manifestHash = manifestHash2;
        this.version = version3;
        this.signer = index;
        this.signature = signature;
        this.publicKey = publicKey;
        this.namespace = namespace;
      }
      _ctx() {
        return this.version === 0 ? this.namespace : this.manifestHash;
      }
      verify(batch, signature) {
        return crypto.verify(batch.signable(this._ctx()), signature, this.publicKey);
      }
      sign(batch, keyPair) {
        return crypto.sign(batch.signable(this._ctx()), keyPair.secretKey);
      }
    };
    var CompatSigner = class extends Signer {
      constructor(index, signer, legacy) {
        super(null, 0, index, signer);
        this.legacy = legacy;
      }
      verify(batch, signature) {
        return crypto.verify(batch.signableCompat(this.legacy), signature, this.publicKey);
      }
      sign(batch, keyPair) {
        return crypto.sign(batch.signableCompat(this.legacy), keyPair.secretKey);
      }
    };
    module2.exports = class Verifier {
      constructor(manifestHash2, manifest, { compat = isCompat(manifestHash2, manifest), legacy = false } = {}) {
        const self = this;
        this.manifestHash = manifestHash2;
        this.compat = compat || manifest === null;
        this.version = this.compat ? 0 : typeof manifest.version === "number" ? manifest.version : 1;
        this.hash = manifest.hash || "blake2b";
        this.allowPatch = !this.compat && !!manifest.allowPatch;
        this.quorum = this.compat ? 1 : defaultQuorum(manifest);
        this.signers = manifest.signers ? manifest.signers.map(createSigner) : [];
        this.prologue = this.compat ? null : manifest.prologue || null;
        function createSigner(signer, index) {
          return self.compat ? new CompatSigner(index, signer, legacy) : new Signer(manifestHash2, self.version, index, signer);
        }
      }
      _verifyCompat(batch, signature) {
        if (!signature) return false;
        if (this.compat || !this.allowPatch && this.signers.length === 1) {
          return !!signature && this.signers[0].verify(batch, signature);
        }
        return this._verifyMulti(batch, signature);
      }
      _inflate(signature) {
        if (this.version >= 1) return multisig.inflate(signature);
        const { proofs, patch } = multisig.inflatev0(signature);
        return {
          proofs: proofs.map(proofToVersion1),
          patch
        };
      }
      _verifyMulti(batch, signature) {
        if (!signature || this.quorum === 0) return false;
        const { proofs, patch } = this._inflate(signature);
        if (proofs.length < this.quorum) return false;
        const tried = new Uint8Array(this.signers.length);
        const nodes = this.allowPatch && patch.length ? toMap(patch) : null;
        for (let i = 0; i < this.quorum; i++) {
          const inp = proofs[i];
          let tree = batch;
          if (inp.patch && this.allowPatch) {
            tree = batch.clone();
            const upgrade = generateUpgrade(nodes, batch.length, inp.patch);
            const proof = {
              fork: tree.fork,
              block: null,
              hash: null,
              seek: null,
              upgrade,
              manifest: null
            };
            try {
              if (!tree.verifyUpgrade(proof)) return false;
            } catch {
              return false;
            }
          }
          if (inp.signer >= this.signers.length || tried[inp.signer]) return false;
          tried[inp.signer] = 1;
          const s = this.signers[inp.signer];
          if (!s.verify(tree, inp.signature)) return false;
        }
        return true;
      }
      verify(batch, signature) {
        if (this.version === 0) {
          return this._verifyCompat(batch, signature);
        }
        if (this.prologue !== null && batch.length <= this.prologue.length) {
          return batch.length === this.prologue.length && b4a4.equals(batch.hash(), this.prologue.hash);
        }
        return this._verifyMulti(batch, signature);
      }
      // TODO: better api for this that is more ... multisig-ey
      sign(batch, keyPair) {
        if (!keyPair || !keyPair.secretKey) throw BAD_ARGUMENT("No key pair was passed");
        for (const s of this.signers) {
          if (b4a4.equals(s.publicKey, keyPair.publicKey)) {
            const signature = s.sign(batch, keyPair);
            if (this.signers.length !== 1 || this.version === 0) return signature;
            return this.assemble([{ signer: 0, signature, patch: 0, nodes: null }]);
          }
        }
        throw BAD_ARGUMENT("Public key is not a declared signer");
      }
      assemble(inputs) {
        return this.version === 0 ? multisig.assemblev0(inputs) : multisig.assemble(inputs);
      }
      static manifestHash(manifest) {
        return manifestHash(manifest);
      }
      static encodeManifest(manifest) {
        return c4.encode(m.manifest, manifest);
      }
      static decodeManifest(manifest) {
        return c4.decode(m.manifest, manifest);
      }
      static defaultSignerManifest(publicKey) {
        return {
          version: 1,
          hash: "blake2b",
          allowPatch: false,
          quorum: 1,
          signers: [
            {
              signature: "ed25519",
              namespace: caps.DEFAULT_NAMESPACE,
              publicKey
            }
          ],
          prologue: null,
          linked: null,
          userData: null
        };
      }
      static fromManifest(manifest, opts) {
        const m2 = this.createManifest(manifest);
        return new this(manifestHash(m2), m2, opts);
      }
      static createManifest(inp) {
        if (!inp) return null;
        const manifest = {
          version: getManifestVersion(inp),
          // defaults to v1
          hash: "blake2b",
          allowPatch: !!inp.allowPatch,
          quorum: defaultQuorum(inp),
          signers: inp.signers ? inp.signers.map(parseSigner) : [],
          prologue: null,
          linked: null,
          userData: inp.userData || null
        };
        if (inp.hash && inp.hash !== "blake2b") throw BAD_ARGUMENT("Only Blake2b hashes are supported");
        if (inp.prologue) {
          if (!(b4a4.isBuffer(inp.prologue.hash) && inp.prologue.hash.byteLength === 32) || !(inp.prologue.length >= 0)) {
            throw BAD_ARGUMENT("Invalid prologue");
          }
          manifest.prologue = inp.prologue;
          manifest.prologue.hash = unslab(manifest.prologue.hash);
        }
        if (manifest.userData !== null && manifest.version < 2) {
          throw BAD_ARGUMENT("Invalid field: userData");
        }
        if (inp.linked && inp.linked.length) {
          if (manifest.version < 2) throw BAD_ARGUMENT("Invalid field: linked");
          for (const key of inp.linked) {
            if (!(b4a4.isBuffer(key) && key.byteLength === 32)) {
              throw BAD_ARGUMENT("Invalid key");
            }
          }
          manifest.linked = inp.linked;
        }
        return manifest;
      }
      static isValidManifest(key, manifest) {
        return b4a4.equals(key, manifestHash(manifest));
      }
      static isCompat(key, manifest) {
        return isCompat(key, manifest);
      }
      static sign(manifest, batch, keyPair, opts) {
        return Verifier.fromManifest(manifest, opts).sign(batch, keyPair);
      }
    };
    function toMap(nodes) {
      const m2 = /* @__PURE__ */ new Map();
      for (const node of nodes) m2.set(node.index, node);
      return m2;
    }
    function isCompat(key, manifest) {
      return !!(manifest && manifest.signers.length === 1 && b4a4.equals(key, manifest.signers[0].publicKey));
    }
    function defaultQuorum(man) {
      if (typeof man.quorum === "number") return man.quorum;
      if (!man.signers || !man.signers.length) return 0;
      return (man.signers.length >> 1) + 1;
    }
    function generateUpgrade(patch, start, length) {
      const upgrade = { start, length, nodes: null, additionalNodes: [], signature: null };
      const from = start * 2;
      const to = from + length * 2;
      for (const ite = flat.iterator(0); ite.fullRoot(to); ite.nextTree()) {
        if (ite.index + ite.factor / 2 < from) continue;
        if (upgrade.nodes === null && ite.contains(from - 2)) {
          upgrade.nodes = [];
          const root = ite.index;
          const target = from - 2;
          ite.seek(target);
          while (ite.index !== root) {
            ite.sibling();
            if (ite.index > target) upgrade.nodes.push(patch.get(ite.index));
            ite.parent();
          }
          continue;
        }
        if (upgrade.nodes === null) upgrade.nodes = [];
        upgrade.nodes.push(patch.get(ite.index));
      }
      if (upgrade.nodes === null) upgrade.nodes = [];
      return upgrade;
    }
    function parseSigner(signer) {
      validateSigner(signer);
      return {
        signature: "ed25519",
        namespace: unslab(signer.namespace || caps.DEFAULT_NAMESPACE),
        publicKey: unslab(signer.publicKey)
      };
    }
    function validateSigner(signer) {
      if (!signer || !signer.publicKey) throw BAD_ARGUMENT("Signer missing public key");
      if (signer.signature && signer.signature !== "ed25519") {
        throw BAD_ARGUMENT("Only Ed25519 signatures are supported");
      }
    }
    function manifestHash(manifest) {
      const state = { start: 0, end: 32, buffer: null };
      m.manifest.preencode(state, manifest);
      state.buffer = b4a4.allocUnsafe(state.end);
      c4.raw.encode(state, caps.MANIFEST);
      m.manifest.encode(state, manifest);
      return crypto.hash(state.buffer);
    }
    function proofToVersion1(proof) {
      return {
        signer: proof.signer,
        signature: proof.signature,
        patch: proof.patch ? proof.patch.length : 0
      };
    }
    function getManifestVersion(inp) {
      if (typeof inp.version === "number") return inp.version;
      if (inp.linked && inp.linked.length) return 2;
      if (inp.userData) return 2;
      return 1;
    }
  }
});

// node_modules/hypercore/lib/audit.js
var require_audit = __commonJS({
  "node_modules/hypercore/lib/audit.js"(exports2, module2) {
    var crypto = require_hypercore_crypto();
    var flat = require_flat_tree();
    var b4a4 = require_b4a();
    var { MerkleTree } = require_merkle_tree();
    module2.exports = async function auditCore(core, { tree = true, blocks = true, bitfield = true, dryRun = false } = {}) {
      const length = core.state.length;
      const stats = {
        treeNodes: 0,
        blocks: 0,
        bits: 0,
        droppedTreeNodes: 0,
        droppedBlocks: 0,
        droppedBits: 0,
        corrupt: false
      };
      if (tree) {
        let tx = null;
        const roots = await MerkleTree.getRootsFromStorage(core.state.storage, length);
        const stack = [];
        for (const r of roots) {
          if (r === null) {
            if (!dryRun) {
              const storage = core.state.storage;
              await storage.store.deleteCore(storage.core);
              return null;
            }
            stats.corrupt = true;
          }
          stack.push(r);
        }
        stats.treeNodes += roots.length;
        while (stack.length > 0) {
          const node = stack.pop();
          if ((node.index & 1) === 0) continue;
          const [left, right] = flat.children(node.index);
          const rx = core.state.storage.read();
          const leftNodePromise = rx.getTreeNode(left);
          const rightNodePromise = rx.getTreeNode(right);
          rx.tryFlush();
          const [leftNode, rightNode] = await Promise.all([leftNodePromise, rightNodePromise]);
          if (isBadTree(node, leftNode, rightNode)) {
            if (!tx && !stats.corrupt) tx = core.state.storage.write();
            const [l, r] = flat.spans(node.index);
            tx.deleteTreeNodeRange(l, r + 1);
            stats.droppedTreeNodes++;
            continue;
          }
          if (!leftNode) continue;
          stats.treeNodes += 2;
          stack.push(leftNode, rightNode);
        }
        if (tx && !dryRun) await tx.flush();
      }
      if (blocks) {
        let tx = null;
        for await (const block of core.state.storage.createBlockStream()) {
          if (!core.bitfield.get(block.index)) {
            if (!tx && !stats.corrupt) tx = core.state.storage.write();
            tx.deleteBlock(block.index);
            stats.droppedBlocks++;
          }
          const rx = core.state.storage.read();
          const treeNodePromise = rx.getTreeNode(2 * block.index);
          rx.tryFlush();
          const treeNode = await treeNodePromise;
          if (isBadBlock(treeNode, block.value)) {
            if (!tx && !stats.corrupt) tx = core.state.storage.write();
            tx.deleteBlock(block.index);
            stats.droppedBlocks++;
            continue;
          }
          stats.blocks++;
        }
        if (tx && !dryRun) await tx.flush();
      }
      if (bitfield) {
        let tx = null;
        for (const index of allBits(core.bitfield)) {
          const rx = core.state.storage.read();
          const blockPromise = rx.getBlock(index);
          rx.tryFlush();
          const block = await blockPromise;
          if (!block) {
            stats.droppedBits++;
            if (dryRun) continue;
            if (!tx && !stats.corrupt) tx = core.state.storage.write();
            core.bitfield.set(index, false);
            const page = core.bitfield.getBitfield(index);
            if (page.bitfield) tx.putBitfieldPage(page.index, page.bitfield);
            else tx.deleteBitfieldPage(page.index);
            continue;
          }
          stats.bits++;
        }
        if (tx && !dryRun) await tx.flush();
      }
      return stats;
    };
    function isBadBlock(node, block) {
      if (!node) return true;
      const hash = crypto.data(block);
      return !b4a4.equals(hash, node.hash) || node.size !== block.byteLength;
    }
    function isBadTree(parent, left, right) {
      if (!left && !right) return false;
      if (!left || !right) return true;
      const hash = crypto.parent(left, right);
      return !b4a4.equals(hash, parent.hash) || parent.size !== left.size + right.size;
    }
    function* allBits(bitfield) {
      let i = 0;
      if (bitfield.get(0)) yield 0;
      while (true) {
        i = bitfield.findFirst(true, i + 1);
        if (i === -1) break;
        yield i;
      }
    }
  }
});

// node_modules/hypercore/lib/copy-prologue.js
var require_copy_prologue = __commonJS({
  "node_modules/hypercore/lib/copy-prologue.js"(exports2, module2) {
    var crypto = require_hypercore_crypto();
    var flat = require_flat_tree();
    var b4a4 = require_b4a();
    var quickbit = require_quickbit_universal();
    var Bitfield = require_bitfield();
    var MAX_BATCH_USED = 4 * 1024 * 1024;
    var MIN_BATCH_USED = 512 * 1024;
    module2.exports = copyPrologue;
    async function copyPrologue(src, dst) {
      const prologue = dst.header.manifest.prologue;
      if (src.length < prologue.length || prologue.length === 0) return;
      const stack = [];
      const roots = flat.fullRoots(prologue.length * 2);
      const batch = { roots, first: true, last: false, contig: 0, used: 0, tree: [], blocks: [] };
      for (let i = 0; i < roots.length; i++) {
        const node = roots[i];
        batch.tree.push(node);
        stack.push(node);
      }
      let lastPage = -1;
      let lastBlock = -1;
      for await (const data of src.storage.createBlockStream({
        gte: 0,
        lt: prologue.length,
        reverse: true
      })) {
        if (walkTree(stack, data.index * 2, batch) === false) {
          throw new Error("Missing block or tree node for " + data.index);
        }
        batch.contig = data.index + 1 === lastBlock ? batch.contig + 1 : 1;
        lastBlock = data.index;
        const page = getBitfieldPage(data.index);
        batch.blocks.push(data);
        if (lastPage !== page) batch.used += 4096;
        batch.used += Math.max(data.value.byteLength, 128);
        if (batch.used >= MIN_BATCH_USED && page !== lastPage || batch.used >= MAX_BATCH_USED) {
          await flushBatch(prologue, src, dst, batch);
        }
        lastPage = page;
      }
      if (lastBlock !== 0) batch.contig = 0;
      batch.last = true;
      await flushBatch(prologue, src, dst, batch);
    }
    async function flushBatch(prologue, src, dst, batch) {
      const nodePromises = [];
      const srcReader = src.storage.read();
      for (const index of batch.tree) {
        nodePromises.push(srcReader.getTreeNode(index));
      }
      srcReader.tryFlush();
      const nodes = await Promise.all(nodePromises);
      const pagePromises = [];
      const dstReader = dst.storage.read();
      const headPromise = batch.first ? dstReader.getHead() : null;
      if (headPromise) headPromise.catch(noop);
      let lastPage = -1;
      for (const { index } of batch.blocks) {
        const page = getBitfieldPage(index);
        if (page === lastPage) continue;
        lastPage = page;
        pagePromises.push(dstReader.getBitfieldPage(page));
      }
      dstReader.tryFlush();
      const pages = await Promise.all(pagePromises);
      const head = headPromise === null ? null : await headPromise;
      const userData = [];
      if (batch.first) {
        const roots = nodes.slice(0, batch.roots.length);
        for (const node of roots) {
          if (!node) throw new Error("Missing nodes for prologue hash");
        }
        const treeHash = crypto.tree(roots);
        if (!b4a4.equals(treeHash, prologue.hash)) throw new Error("Prologue does not match source");
      }
      if (batch.first) {
        for await (const data of src.storage.createUserDataStream()) userData.push(data);
      }
      for (let i = 0; i < pages.length; i++) {
        if (!pages[i]) pages[i] = b4a4.alloc(4096);
      }
      const tx = dst.storage.write();
      for (const node of nodes) tx.putTreeNode(node);
      lastPage = -1;
      let pageIndex = -1;
      for (const { index, value } of batch.blocks) {
        const page = getBitfieldPage(index);
        if (page !== lastPage) {
          lastPage = page;
          pageIndex++;
          tx.putBitfieldPage(pageIndex, pages[pageIndex]);
        }
        const pageBuffer = pages[pageIndex];
        quickbit.set(pageBuffer, getBitfieldOffset(index), true);
        tx.putBlock(index, value);
      }
      for (const { key, value } of userData) {
        tx.putUserData(key, value);
      }
      let upgraded = batch.first && !head;
      if (upgraded) {
        tx.setHead(prologueToTree(prologue));
      }
      await tx.flush();
      if (upgraded) {
        const roots = nodes.slice(0, batch.roots.length);
        dst.state.setRoots(roots);
        dst.header.tree = prologueToTree(prologue);
      }
      if (userData.length > 0) {
        dst.header.userData = userData.concat(dst.header.userData);
      }
      if (batch.contig) {
        dst.header.hints.contiguousLength = batch.contig;
      }
      let start = 0;
      let length = 0;
      for (const { index } of batch.blocks) {
        if (start === 0 || start - 1 === index) {
          length++;
        } else {
          if (length > 0) signalReplicator(dst, upgraded, start, length);
          upgraded = false;
          length = 1;
        }
        start = index;
        dst.bitfield.set(index, true);
      }
      if (length > 0) signalReplicator(dst, upgraded, start, length);
      batch.tree = [];
      batch.blocks = [];
      batch.first = false;
      batch.used = 0;
    }
    function signalReplicator(core, upgraded, start, length) {
      if (upgraded) {
        core.replicator.cork();
        core.replicator.onhave(start, length, false);
        core.replicator.onupgrade();
        core.replicator.uncork();
      } else {
        core.replicator.onhave(start, length, false);
      }
    }
    function prologueToTree(prologue) {
      return {
        fork: 0,
        length: prologue.length,
        rootHash: prologue.hash,
        signature: null
      };
    }
    function getBitfieldPage(index) {
      return Math.floor(index / Bitfield.BITS_PER_PAGE);
    }
    function getBitfieldOffset(index) {
      return index & Bitfield.BITS_PER_PAGE - 1;
    }
    function walkTree(stack, target, batch) {
      while (stack.length > 0) {
        const node = stack.pop();
        if ((node & 1) === 0) {
          if (node === target) return true;
          continue;
        }
        const ite = flat.iterator(node);
        if (!ite.contains(target)) continue;
        while ((ite.index & 1) !== 0) {
          const left = ite.leftChild();
          const right = ite.sibling();
          batch.tree.push(left, right);
          if (ite.contains(target)) stack.push(left);
          else ite.sibling();
        }
        if (ite.index === target) return true;
      }
      return false;
    }
    function noop() {
    }
  }
});

// node_modules/hypercore/lib/session-state.js
var require_session_state = __commonJS({
  "node_modules/hypercore/lib/session-state.js"(exports2, module2) {
    var crypto = require_hypercore_crypto();
    var b4a4 = require_b4a();
    var assert2 = require_nanoassert();
    var flat = require_flat_tree();
    var quickbit = require_quickbit_universal();
    var HypercoreStorage = require("hypercore-storage");
    var {
      INVALID_OPERATION,
      INVALID_SIGNATURE,
      ASSERTION,
      SESSION_CLOSED,
      SESSION_NOT_WRITABLE
    } = require_hypercore_errors();
    var Mutex = require_mutex();
    var Bitfield = require_bitfield();
    var { MerkleTree, MerkleTreeBatch } = require_merkle_tree();
    var SessionState = class _SessionState {
      constructor(core, parent, storage, treeInfo, name) {
        this.core = core;
        this.index = this.core.sessionStates.push(this) - 1;
        this.storage = storage;
        this.name = name;
        this.sessions = [];
        this.lingers = null;
        this.parent = parent;
        this.atomized = null;
        this.mutex = new Mutex();
        this.roots = treeInfo.roots.length ? treeInfo.roots : [];
        this.fork = treeInfo.fork || 0;
        this.length = this.roots.length ? MerkleTree.span(this.roots) / 2 : treeInfo.length;
        this.byteLength = MerkleTree.size(this.roots);
        this.prologue = treeInfo.prologue || null;
        this.signature = treeInfo.signature || null;
        this.snapshotCompatLength = this.isSnapshot() ? Math.min(this.length, this.core.state.length) : -1;
        this.lastTruncation = null;
        this.active = 0;
        this._activeTx = null;
        this._pendingBitfield = null;
        this.ref();
      }
      static RECOVERY_PEERS = null;
      isSnapshot() {
        return this.storage.snapshotted;
      }
      isDefault() {
        return this.core.state === this || this.isAtomicDefault();
      }
      isAtomicDefault() {
        return !!this.storage.atom && !!this.parent && this.parent.isDefault();
      }
      createTreeBatch() {
        return new MerkleTreeBatch(this);
      }
      addSession(s) {
        if (s._stateIndex !== -1) return;
        s._stateIndex = this.sessions.push(s) - 1;
        if (s.weak === false) this.core.activeSessions++;
      }
      removeSession(s) {
        if (s._stateIndex === -1) return;
        const head = this.sessions.pop();
        if (head !== s) this.sessions[head._stateIndex = s._stateIndex] = head;
        s._stateIndex = -1;
        if (s.weak === false) this.core.activeSessions--;
        this.core.checkIfIdle();
      }
      flushedLength() {
        if (this.isDefault() || this.isSnapshot()) return this.length;
        const deps = this.storage.dependencies;
        if (deps.length) return deps[deps.length - 1].length;
        return 0;
      }
      signedLength() {
        const l = Math.min(this.flushedLength(), this.core.state.length);
        return this.isSnapshot() && l > this.snapshotCompatLength ? this.snapshotCompatLength : l;
      }
      unref() {
        if (--this.active > 0) return;
        this.close().catch(noop);
      }
      ref() {
        this.active++;
        return this;
      }
      hash() {
        return MerkleTree.hash(this);
      }
      setRoots(roots) {
        this.roots = roots;
        this.length = MerkleTree.span(roots) / 2;
        this.byteLength = MerkleTree.size(roots);
      }
      get encryptionFork() {
        return this.core.header.tree.fork;
      }
      async _updateSnapshotStorage(storage) {
        if (!this.atomized || !this.atomized.flushing) return this.treeInfo();
        while (this.atomized.flushing) await this.atomized.flushed();
        let rx = storage.read();
        const headPromise = rx.getHead();
        const authPromise = rx.getAuth();
        const depPromise = rx.getDependency();
        rx.tryFlush();
        const [head, auth, dep] = await Promise.all([headPromise, authPromise, depPromise]);
        storage.setDependencyHead(dep);
        const fork = head ? head.fork : 0;
        const length = head ? head.length : 0;
        rx = storage.read();
        const rootPromises = [];
        for (const r of flat.fullRoots(length * 2)) {
          rootPromises.push(rx.getTreeNode(r));
        }
        rx.tryFlush();
        const roots = await Promise.all(rootPromises);
        for (const root of roots) {
          if (root === null) {
            throw new Error(
              "Bad snapshot from atomized session, id = " + this.core.id + " length = " + length + " fork = " + fork
            );
          }
        }
        return {
          fork,
          roots,
          length,
          prologue: auth.manifest && auth.manifest.prologue,
          signature: head && head.signature
        };
      }
      treeInfo() {
        return {
          fork: this.fork,
          roots: this.roots.slice(),
          length: this.length,
          prologue: this.prologue,
          signature: this.signature
        };
      }
      async close() {
        if (this.index === -1) return;
        this.active = 0;
        this.mutex.destroy(new Error("Closed")).catch(noop);
        if (this.parent && this.parent.atomized) this.parent.atomized = null;
        const closing = this.storage.close();
        const head = this.core.sessionStates.pop();
        if (head !== this) this.core.sessionStates[head.index = this.index] = head;
        this.index = -1;
        this.core.checkIfIdle();
        if (this.lingers !== null) {
          for (const storage of this.lingers) await storage.close();
        }
        return closing;
      }
      async snapshot() {
        const storage = this.storage.snapshot();
        const treeInfo = await this._updateSnapshotStorage(storage);
        return new _SessionState(this.core, null, storage, treeInfo, this.name);
      }
      updateDependency(tx, length) {
        const dependency = updateDependency(this, length, false);
        if (dependency) tx.setDependency(dependency);
        return dependency;
      }
      _clearActiveBatch() {
        this._activeTx = null;
      }
      createWriteBatch() {
        assert2(!this._activeTx && !this.storage.snapshotted);
        this._activeTx = this.storage.write();
        return this._activeTx;
      }
      _unlock() {
        this._clearActiveBatch();
        this.mutex.unlock();
        this.core.checkIfIdle();
      }
      async flush() {
        const tx = this._activeTx;
        this._activeTx = null;
        try {
          if (!await tx.flush()) return false;
        } finally {
          this._clearActiveBatch();
        }
        this.lastTruncation = null;
        return true;
      }
      _precommit(state) {
        assert2(
          state.parent === this && state.storage.core.dataPointer === this.storage.core.dataPointer,
          "Atomic state must flush to parent"
        );
      }
      async _commit() {
        await this.mutex.lock();
        try {
          const bitfield = this._pendingBitfield;
          this._pendingBitfield = null;
          this.lastTruncation = null;
          await this.parent._oncommit(this, bitfield);
        } finally {
          this.mutex.unlock();
        }
      }
      async _oncommit(src, bitfield) {
        await this.mutex.lock();
        try {
          const currLength = this.length;
          const rx = this.storage.read();
          const dependencyPromise = rx.getDependency();
          rx.tryFlush();
          const dependency = await dependencyPromise;
          this.fork = src.fork;
          this.length = src.length;
          this.byteLength = src.byteLength;
          this.roots = src.roots.slice();
          this.signature = src.signature;
          const tree = {
            fork: this.fork,
            length: this.length,
            rootHash: this.hash(),
            signature: this.signature
          };
          if (dependency) this.storage.setDependencyHead(dependency);
          const b = bitfield;
          if (b && b.truncated && b.start < currLength) {
            this.ontruncate(tree, b.start, currLength, true);
            if (!b || b.appends === 0) return;
          }
          const append = b ? { start: b.start, length: b.appends, drop: false } : null;
          this.onappend(tree, append, true);
          if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints();
        } finally {
          this._unlock();
        }
      }
      async setUserData(key, value) {
        await this.mutex.lock();
        try {
          const tx = this.createWriteBatch();
          tx.putUserData(key, value);
          return await this.flush();
        } finally {
          this._unlock();
        }
      }
      async _verifyBlock(batch, bitfield, value, manifest, from) {
        await this.mutex.lock();
        try {
          if (batch.upgraded && batch.length <= this.length) {
            await batch.downgrade();
          }
          if (!batch.commitable()) {
            return false;
          }
          if (this.core.preupdate !== null) {
            await this.core.preupdate(batch, this.core.header.key);
          }
          const tx = this.createWriteBatch();
          if (bitfield) {
            tx.putBlock(bitfield.start, value);
          }
          if (bitfield && this.isDefault()) {
            await storeBitfieldRange(this.storage, tx, bitfield.start, bitfield.start + 1, true);
          }
          if (manifest) this.core._setManifest(tx, manifest, null);
          assert2(batch.commitable(), "Should still be commitable");
          batch.commit(tx);
          const head = {
            fork: batch.fork,
            length: batch.length,
            rootHash: batch.hash(),
            signature: batch.signature
          };
          if (batch.upgraded) tx.setHead(head);
          const flushed = await this.flush();
          if (batch.upgraded) {
            this.roots = batch.roots;
            this.length = batch.length;
            this.byteLength = batch.byteLength;
            this.fork = batch.fork;
            this.signature = batch.signature;
            this.onappend(head, bitfield, flushed);
          }
          if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints();
        } finally {
          this._unlock();
        }
        return true;
      }
      async truncate(length, fork, { signature, keyPair } = {}) {
        if (!keyPair && this.isDefault()) keyPair = this.core.header.keyPair;
        await this.mutex.lock();
        try {
          if (this.prologue && length < this.prologue.length) {
            throw INVALID_OPERATION("Truncation breaks prologue", this.core.discoveryKey);
          }
          if (length > this.length) {
            throw INVALID_OPERATION(
              "Not a truncation, " + length + " must be less or equal to " + this.length,
              this.core.discoveryKey
            );
          }
          const batch = this.createTreeBatch();
          await MerkleTree.truncate(this, length, batch, fork);
          if (!signature && keyPair && length > 0) signature = this.core.verifier.sign(batch, keyPair);
          if (signature) batch.signature = signature;
          const tx = this.createWriteBatch();
          if (this.core.verifier === null && keyPair) this.core._setManifest(tx, null, keyPair);
          const { dependency, tree, roots } = await this._truncate(tx, batch);
          for (const sessionState of this.core.sessionStates) {
            if (sessionState.isSnapshot() && sessionState.name === this.name && length < sessionState.snapshotCompatLength) {
              sessionState.snapshotCompatLength = length;
            }
          }
          const flushed = await this.flush();
          this.fork = tree.fork;
          this.length = tree.length;
          this.byteLength = MerkleTree.size(roots);
          this.roots = roots;
          this.signature = tree.signature;
          if (dependency) this.storage.setDependencyHead(dependency);
          this.ontruncate(tree, tree.length, batch.treeLength, flushed);
          if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints();
        } finally {
          this._unlock();
        }
      }
      async reorg(batch) {
        await this.mutex.lock();
        const storage = this.createWriteBatch();
        try {
          if (!batch.commitable()) return false;
          const { dependency, tree } = await this._truncate(storage, batch);
          const flushed = await this.flush();
          this.fork = batch.fork;
          this.length = batch.length;
          this.byteLength = batch.byteLength;
          this.roots = batch.roots;
          this.signature = batch.signature;
          if (dependency) this.storage.setDependencyHead(dependency);
          this.ontruncate(tree, batch.ancestors, batch.treeLength, flushed);
          if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints();
        } finally {
          this._unlock();
        }
      }
      async _truncate(storage, batch) {
        storage.deleteBlockRange(batch.ancestors, batch.treeLength);
        assert2(batch.commitable(), "Batch must be commitable");
        const tree = {
          fork: batch.fork,
          length: batch.length,
          rootHash: batch.hash(),
          signature: batch.signature
        };
        storage.setHead(tree);
        batch.commit(storage);
        const truncated = batch.length < this.flushedLength();
        const dependency = truncated ? updateDependency(this, batch.length, true) : null;
        if (dependency) storage.setDependency(dependency);
        if (this.isDefault()) {
          await storeBitfieldRange(this.storage, storage, batch.ancestors, batch.treeLength, false);
          if (batch.ancestors < this.core.header.hints.contiguousLength) {
            this.core.header.hints.remoteContiguousLength = Math.min(
              batch.length,
              this.core.header.hints.remoteContiguousLength
            );
            storage.setHints({
              contiguousLength: batch.ancestors,
              remoteContiguousLength: this.core.header.hints.remoteContiguousLength
            });
          }
        }
        return { dependency, tree, roots: batch.roots };
      }
      async clear(start, end, cleared) {
        await this.mutex.lock();
        try {
          const tx = this.createWriteBatch();
          const ite = flat.iterator(start * 2);
          while (!isRootIndex(ite.index, this.roots)) {
            const a = ite.index;
            const b = ite.sibling();
            ite.parent();
            const [left, right] = flat.spans(b);
            const s = left / 2;
            const e = right / 2 + 1;
            const has = s <= start && e <= end ? false : this.core.bitfield.hasSet(s, e - s);
            if (has) break;
            tx.deleteTreeNode(a);
            tx.deleteTreeNode(b);
          }
          if (this.isDefault()) {
            await storeBitfieldRange(this.storage, tx, start, end, false);
            if (start < this.core.header.hints.contiguousLength) {
              tx.setHints({
                contiguousLength: start,
                remoteContiguousLength: this.core.header.hints.remoteContiguousLength
              });
            }
          }
          if (end - start === 1) tx.deleteBlock(start);
          else tx.deleteBlockRange(start, end);
          const dependency = start < this.flushedLength() ? updateDependency(this, start, true) : null;
          const flushed = await this.flush();
          if (dependency) this.storage.setDependencyHead(dependency);
          if (this.isDefault() && flushed) {
            const length = end - start;
            this.core.updateContiguousLength({ start, length, drop: true });
            this.core._setBitfieldRanges(start, end, false);
            this.core.replicator.onhave(start, length, true);
            if (this.core.hintsChanged) await this.core.flushHints();
          }
        } finally {
          this._unlock();
        }
      }
      // simple tool to wait for other peers to catch us up
      async waitForRecovery() {
        const length = this.length;
        const replicator = this.core.replicator;
        while (!this.closing) {
          let peers = getRecoveryPeers(replicator.peers);
          if (peers.length < 1) {
            await new Promise((resolve) => setTimeout(resolve, 5e3));
            continue;
          }
          let restart = false;
          for (let i = 0; i < 32; i++) {
            await new Promise((resolve) => setTimeout(resolve, 250));
            peers = getRecoveryPeers(replicator.peers);
            if (this.closing || !validateRecoveryPeers(peers, this.length)) {
              restart = true;
              break;
            }
          }
          if (restart) continue;
          if (this.length !== length) {
            throw SESSION_NOT_WRITABLE("core recovered during append");
          }
          this.core.header.hints.recovering = 0;
          this.core.hintsChanged = true;
          await this.mutex.lock();
          try {
            await this.core.flushHints();
            return;
          } finally {
            this.mutex.unlock();
          }
        }
        throw SESSION_CLOSED("Cannot recover a closed session", this.discoveryKey);
      }
      async append(values, { signature, keyPair, preappend, postappend, maxLength = -1 } = {}) {
        if (!keyPair && this.isDefault()) keyPair = this.core.header.keyPair;
        if (this.isDefault() && this.core.header.hints.recovering) await this.waitForRecovery();
        await this.mutex.lock();
        try {
          if (maxLength >= 0 && this.length + values.length > maxLength) {
            return { length: this.length, byteLength: this.byteLength };
          }
          const tx = this.createWriteBatch();
          if (this.core.verifier === null && keyPair) this.core._setManifest(tx, null, keyPair);
          if (preappend) await preappend(values);
          if (!values.length) {
            await this.flush();
            return { length: this.length, byteLength: this.byteLength };
          }
          const batch = this.createTreeBatch();
          for (const val of values) batch.append(val);
          if (this.prologue && batch.length < this.prologue.length) {
            throw INVALID_OPERATION("Append is not consistent with prologue", this.core.discoveryKey);
          }
          if (!signature && keyPair) signature = this.core.verifier.sign(batch, keyPair);
          if (signature) batch.signature = signature;
          batch.commit(tx);
          const tree = {
            fork: batch.fork,
            length: batch.length,
            rootHash: batch.hash(),
            signature: batch.signature
          };
          tx.setHead(tree);
          if (this.isDefault()) {
            await storeBitfieldRange(this.storage, tx, batch.ancestors, batch.length, true);
            if (this.length === this.core.header.hints.contiguousLength) {
              tx.setHints({
                contiguousLength: this.length + values.length,
                remoteContiguousLength: this.core.header.hints.remoteContiguousLength
              });
            }
          }
          for (let i = 0; i < values.length; i++) {
            tx.putBlock(this.length + i, values[i]);
          }
          const bitfield = {
            drop: false,
            start: batch.ancestors,
            length: values.length
          };
          const flushed = await this.flush();
          this.fork = batch.fork;
          this.roots = batch.roots;
          this.length = batch.length;
          this.byteLength = batch.byteLength;
          this.signature = batch.signature;
          if (postappend) await postappend(values);
          this.onappend(tree, bitfield, flushed);
          if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints();
          return { length: this.length, byteLength: this.byteLength };
        } finally {
          this._unlock();
        }
      }
      onappend(tree, bitfield, flushed) {
        if (!flushed) this._updateBitfield(bitfield);
        else if (this.isDefault()) this.core.onappend(tree, bitfield);
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          this.sessions[i].emit("append");
        }
      }
      ontruncate(tree, to, from, flushed) {
        const bitfield = { start: to, length: from - to, drop: true };
        this.lastTruncation = { from, to };
        if (!flushed) this._updateBitfield(bitfield);
        else if (this.isDefault()) this.core.ontruncate(tree, bitfield);
        for (const sessionState of this.core.sessionStates) {
          if (sessionState.isSnapshot() && sessionState.name === this.name && to < sessionState.snapshotCompatLength) {
            sessionState.snapshotCompatLength = to;
          }
        }
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          this.sessions[i].emit("truncate", to, tree.fork);
        }
      }
      _updateBitfield(bitfield, flushed) {
        if (!bitfield) return;
        const p = this._pendingBitfield;
        const b = bitfield;
        if (b.drop) {
          if (p && b.start + b.length !== p.start + p.appends) {
            throw INVALID_OPERATION("Atomic truncations must be contiguous", this.core.discoveryKey);
          }
          if (p === null || b.start < p.start) {
            this._pendingBitfield = { truncated: true, start: b.start, appends: 0 };
            return;
          }
          p.appends = b.start - p.start;
          if (p.appends === 0) this._pendingBitfield = null;
          return;
        }
        if (p === null) {
          this._pendingBitfield = { truncated: false, start: b.start, appends: b.length };
          return;
        }
        if (b.start !== p.start + p.appends) {
          throw INVALID_OPERATION("Atomic operations must be contiguous", this.core.discoveryKey);
        }
        p.appends += b.length;
      }
      async catchup(length) {
        assert2(!this.isDefault(), "Cannot catchup signed state");
        await this.mutex.lock();
        try {
          const origLength = this.length;
          let sharedLength = 0;
          for (let i = this.storage.dependencies.length - 1; i >= 0; i--) {
            const dep2 = this.storage.dependencies[i];
            if (dep2.dataPointer === this.core.state.storage.core.dataPointer) {
              sharedLength = dep2.length;
              break;
            }
          }
          const tx = this.createWriteBatch();
          const rx = this.core.state.storage.read();
          const rootPromises = [];
          for (const root of flat.fullRoots(length * 2)) {
            rootPromises.push(rx.getTreeNode(root));
          }
          rx.tryFlush();
          const roots = await Promise.all(rootPromises);
          const truncating = sharedLength < origLength;
          for (const node of roots) {
            if (node === null) {
              throw INVALID_OPERATION(
                "Invalid catchup length, tree nodes not available",
                this.core.discoveryKey
              );
            }
          }
          const fork = truncating ? this.fork + 1 : this.fork;
          tx.deleteBlockRange(0, -1);
          tx.deleteTreeNodeRange(0, -1);
          tx.deleteBitfieldPageRange(0, -1);
          const tree = {
            fork,
            length,
            rootHash: crypto.tree(roots),
            signature: null
          };
          tx.setHead(tree);
          const dep = updateDependency(this, sharedLength, true);
          dep.length = length;
          tx.setDependency(dep);
          const flushed = await this.flush();
          this.storage.setDependencyHead(dep);
          this.fork = tree.fork;
          this.roots = roots;
          this.length = tree.length;
          this.byteLength = MerkleTree.size(roots);
          if (truncating) this.ontruncate(tree, sharedLength, origLength, flushed);
          if (sharedLength < length) this.onappend(tree, null, flushed);
          if (this.core.hintsChanged && this.isDefault()) await this.core.flushHints();
        } finally {
          this._unlock();
        }
      }
      async _overwrite(source, fork, length, treeLength, signature) {
        const blockPromises = [];
        const treePromises = [];
        const rootPromises = [];
        const rx = source.storage.read();
        for (const root of flat.fullRoots(length * 2)) {
          rootPromises.push(rx.getTreeNode(root));
        }
        for (const index of flat.patch(treeLength * 2, length * 2)) {
          treePromises.push(rx.getTreeNode(index));
        }
        for (let i = treeLength; i < length; i++) {
          treePromises.push(rx.getTreeNode(i * 2));
          treePromises.push(rx.getTreeNode(i * 2 + 1));
          blockPromises.push(rx.getBlock(i));
        }
        rx.tryFlush();
        const blocks = await Promise.all(blockPromises);
        const nodes = await Promise.all(treePromises);
        const roots = await Promise.all(rootPromises);
        if (this.core.destroyed) throw new Error("Core destroyed");
        if (signature) {
          const batch = this.createTreeBatch();
          batch.roots = roots;
          batch.length = length;
          if (!this.core.verifier.verify(batch, signature)) {
            throw INVALID_SIGNATURE(
              "Signature is not valid over committed tree",
              this.core.discoveryKey
            );
          }
        }
        const tx = this.createWriteBatch();
        if (treeLength < this.length) {
          tx.deleteBlockRange(treeLength, this.length);
        }
        for (const root of roots) tx.putTreeNode(root);
        for (const node of nodes) {
          if (node !== null) tx.putTreeNode(node);
        }
        for (let i = 0; i < blocks.length; i++) {
          assert2(blocks[i] !== null, "has block");
          tx.putBlock(i + treeLength, blocks[i]);
        }
        const totalLength = Math.max(length, this.length);
        if (totalLength > treeLength) {
          const firstPage = getBitfieldPage(treeLength);
          const lastPage = getBitfieldPage(totalLength - 1);
          const srx = this.storage.read();
          const bitfieldPagePromise = srx.getBitfieldPage(firstPage);
          srx.tryFlush();
          const bitfieldPage = await bitfieldPagePromise;
          let index = treeLength;
          for (let i = firstPage; i <= lastPage; i++) {
            const page = b4a4.alloc(Bitfield.BYTES_PER_PAGE);
            tx.putBitfieldPage(i, page);
            if (i === firstPage && bitfieldPage) page.set(bitfieldPage);
            if (index < length) {
              index = fillBitfieldPage(page, index, length, i, true);
              if (index < length) continue;
            }
            if (index < this.length) {
              index = fillBitfieldPage(page, index, this.length, i, false);
            }
          }
        }
        const tree = {
          fork,
          length,
          rootHash: crypto.tree(roots),
          signature
        };
        const upgraded = treeLength < this.length || this.length < length || tree.fork !== this.fork;
        if (upgraded) tx.setHead(tree);
        const flushed = await this.flush();
        this.fork = tree.fork;
        this.roots = roots;
        this.length = length;
        this.byteLength = MerkleTree.size(roots);
        this.signature = signature;
        return { tree, flushed };
      }
      static isParent(state, parent) {
        if (state.parent && state.parent === parent) return true;
        return HypercoreStorage.isParentStorage(state.storage, parent.storage);
      }
      async commit(state, { signature, keyPair, length = state.length, treeLength = -1 } = {}) {
        assert2(
          this.isDefault() || this.parent && this.parent.isDefault(),
          "Can only commit into default state"
        );
        assert2(_SessionState.isParent(state, this), "Cannot commit across cores");
        if (this.core._repairMode) {
          throw ASSERTION("Cannot commit while repair mode is on");
        }
        if (this.core.header.hints.recovering) await this.waitForRecovery();
        let srcLocked = false;
        await this.mutex.lock();
        try {
          await state.mutex.lock();
          srcLocked = true;
          if (treeLength === -1) treeLength = state.flushedLength();
          if (!await this.core._validateCommit(state, treeLength)) return null;
          if (this.length > length) return null;
          if (this.length < length && !signature) {
            if (!keyPair) keyPair = this.core.header.keyPair;
            const batch = state.createTreeBatch();
            if (length !== batch.length) await batch.restore(length);
            signature = this.core.verifier.sign(batch, keyPair);
          }
          const { tree, flushed } = await this._overwrite(
            state,
            this.fork,
            length,
            treeLength,
            signature
          );
          if (treeLength < length) {
            const tx = state.createWriteBatch();
            tx.deleteBlockRange(treeLength, length);
            const dependency = state.updateDependency(tx, length);
            await state.flush(tx);
            if (dependency) state.storage.setDependencyHead(dependency);
          }
          const bitfield = { start: treeLength, length: length - treeLength, drop: false };
          this.onappend(tree, bitfield, flushed);
          return {
            length: this.length,
            byteLength: this.byteLength
          };
        } finally {
          if (srcLocked) state._unlock();
          this._unlock();
        }
      }
      async _getTreeHeadAt(length) {
        if (length === null) return this.treeInfo();
        const head = getDefaultTree();
        head.length = length;
        const roots = await MerkleTree.getRootsFromStorage(this.storage, length);
        const rootHash = crypto.tree(roots);
        head.fork = this.fork;
        head.rootHash = rootHash;
        if (length === this.length) head.signature = this.signature;
        return head;
      }
      _moveToCore(core, truncated, appended) {
        const head = this.core.sessionStates.pop();
        if (head !== this) this.core.sessionStates[head.index = this.index] = head;
        this.core = core;
        this.index = this.core.sessionStates.push(this) - 1;
        for (let i = this.sessions.length - 1; i >= 0; i--) {
          const s = this.sessions[i];
          const manifest = s.manifest;
          s.transferSession(this.core);
          if (!manifest && s.manifest) s.emit("manifest");
          if (truncated) s.emit("truncate", truncated.to, truncated.fork);
          if (appended) s.emit("append");
        }
      }
      async moveTo(core, length) {
        const state = core.state;
        await this.mutex.lock();
        try {
          const treeLength = this.length;
          let truncated = null;
          let appended = false;
          if (!this.isSnapshot()) {
            if (this.lingers === null) this.lingers = [];
            this.lingers.push(this.storage);
            const resumed = await state.storage.resumeSession(this.name);
            const truncation = length < this.length ? await truncateAndFlush(this, length) : null;
            const treeInfo = truncation ? truncation.tree : resumed ? null : await state._getTreeHeadAt(this.length);
            const fork = truncation ? this.fork + 1 : this.fork;
            let storage = null;
            if (resumed) {
              storage = resumed;
            } else {
              treeInfo.fork = fork;
              storage = await state.storage.createSession(this.name, treeInfo);
            }
            const roots = await MerkleTree.getRootsFromStorage(storage, length);
            this.storage = storage;
            this.prologue = state.prologue;
            this.fork = fork;
            this.length = length;
            this.byteLength = MerkleTree.size(roots);
            this.roots = roots;
            if (truncation) {
              const { dependency } = truncation;
              if (dependency) this.storage.setDependencyHead(dependency);
              truncated = { to: treeLength, fork };
            }
            if (this.length > treeLength) {
              appended = true;
            }
          }
          for (let i = this.core.sessionStates.length - 1; i >= 0; i--) {
            const state2 = this.core.sessionStates[i];
            if (state2 === this) continue;
            if (state2.name === this.name) state2._moveToCore(core.core);
          }
          this._moveToCore(core.core, truncated, appended);
        } finally {
          this._unlock();
        }
      }
      async createSession(name, overwrite, atom) {
        await this.mutex.lock();
        try {
          let storage = null;
          let treeInfo = null;
          if (!atom && !overwrite && this.storage) {
            storage = await this.storage.resumeSession(name);
            if (storage !== null) treeInfo = await getCoreHead(storage) || getDefaultTree();
          }
          const length = treeInfo ? treeInfo.length : this.length;
          if (storage === null) {
            treeInfo = await this._getTreeHeadAt(length);
            if (atom) {
              storage = await this.storage.createAtomicSession(atom, treeInfo);
            } else {
              storage = await this.storage.createSession(name, treeInfo);
            }
          }
          if (this.atomized && atom) {
            throw new Error("Session already atomized");
          }
          const head = {
            fork: this.fork,
            roots: length === this.length ? this.roots.slice() : await MerkleTree.getRootsFromStorage(storage, length),
            length,
            prologue: this.prologue,
            signature: length === this.length ? this.signature : null
          };
          const state = new _SessionState(
            this.core,
            atom ? this : null,
            storage,
            head,
            atom ? this.name : name
          );
          if (atom) {
            this.atomized = atom;
            atom.preflush(this._precommit.bind(this, state));
            atom.onflush(state._commit.bind(state));
          }
          return state;
        } finally {
          this._unlock();
        }
      }
    };
    module2.exports = SessionState;
    function noop() {
    }
    function getBitfieldPage(index) {
      return Math.floor(index / Bitfield.BITS_PER_PAGE);
    }
    function fillBitfieldPage(page, start, end, pageIndex, value) {
      const offset = pageIndex * Bitfield.BITS_PER_PAGE;
      const max = offset + Bitfield.BITS_PER_PAGE;
      const index = max < end ? max : end;
      const from = start - offset;
      const to = index - offset;
      quickbit.fill(page, value, from, to);
      return index;
    }
    async function storeBitfieldRange(storage, tx, from, to, value) {
      if (from >= to) return;
      const firstPage = getBitfieldPage(from);
      const lastPage = getBitfieldPage(to - 1);
      let index = from;
      const rx = storage.read();
      const promises = [];
      for (let i = firstPage; i <= lastPage; i++) {
        promises.push(rx.getBitfieldPage(i));
      }
      rx.tryFlush();
      const pages = await Promise.all(promises);
      const cnt = lastPage - firstPage + 1;
      for (let i = 0; i < cnt; i++) {
        const pageIndex = i + firstPage;
        if (!pages[i]) pages[i] = b4a4.alloc(Bitfield.BYTES_PER_PAGE);
        index = fillBitfieldPage(pages[i], index, to, pageIndex, value);
        tx.putBitfieldPage(pageIndex, pages[i]);
      }
    }
    async function truncateAndFlush(s, length) {
      const batch = s.createTreeBatch();
      await MerkleTree.truncate(s, length, batch, s.fork);
      const tx = s.createWriteBatch();
      const info = await s._truncate(tx, batch);
      const flushed = await s.flush();
      return {
        tree: info.tree,
        roots: info.roots,
        dependency: info.dependency,
        flushed
      };
    }
    function updateDependency(state, length, truncated) {
      const i = state.storage.findDependencyIndex(length, truncated);
      if (i === -1) return null;
      return {
        dataPointer: state.storage.dependencies[i].dataPointer,
        length
      };
    }
    function getDefaultTree() {
      return {
        fork: 0,
        length: 0,
        rootHash: null,
        signature: null
      };
    }
    function getCoreHead(storage) {
      const b = storage.read();
      const p = b.getHead();
      b.tryFlush();
      return p;
    }
    function isRootIndex(index, roots) {
      for (const node of roots) {
        if (node.index === index) return true;
      }
      return false;
    }
    function getRecoveryPeers(peers) {
      if (!SessionState.RECOVERY_PEERS) return peers;
      const actual = [];
      for (const p of peers) {
        for (const r of SessionState.RECOVERY_PEERS) {
          if (b4a4.equals(p.remotePublicKey, r)) {
            actual.push(p);
            break;
          }
        }
      }
      return actual;
    }
    function validateRecoveryPeers(peers, length) {
      if (peers.length < 1) return false;
      for (const p of peers) {
        if (p.remoteLength > length) return false;
        if (p.remoteLength === 0 && !p.remoteSynced) return false;
      }
      return true;
    }
  }
});

// node_modules/random-array-iterator/index.js
var require_random_array_iterator = __commonJS({
  "node_modules/random-array-iterator/index.js"(exports2, module2) {
    module2.exports = class RandomArrayIterator {
      constructor(values) {
        this.values = values;
        this.start = 0;
        this.length = this.values.length;
      }
      next() {
        if (this.length === 0) {
          if (this.start === 0) return { done: true, value: void 0 };
          this.length = this.start;
          this.start = 0;
        }
        const i = this.start + (Math.random() * this.length | 0);
        const j = this.start + --this.length;
        const value = this.values[i];
        this.values[i] = this.values[j];
        this.values[j] = value;
        return { done: false, value };
      }
      dequeue() {
        this.values[this.start + this.length] = this.values[this.values.length - 1];
        this.values.pop();
      }
      requeue() {
        const i = this.start + this.length;
        const value = this.values[i];
        this.values[i] = this.values[this.start];
        this.values[this.start++] = value;
      }
      restart() {
        this.start = 0;
        this.length = this.values.length;
        return this;
      }
      [Symbol.iterator]() {
        return this;
      }
    };
  }
});

// node_modules/hypercore/lib/receiver-queue.js
var require_receiver_queue = __commonJS({
  "node_modules/hypercore/lib/receiver-queue.js"(exports2, module2) {
    var FIFO = require_fast_fifo();
    module2.exports = class ReceiverQueue {
      constructor() {
        this.queue = new FIFO();
        this.priority = [];
        this.requests = /* @__PURE__ */ new Map();
        this.length = 0;
      }
      push(req) {
        if (req.priority > 0) this.priority.push(req);
        else this.queue.push(req);
        this.requests.set(req.id, req);
        this.length++;
      }
      shift() {
        while (this.priority.length > 0) {
          const msg = this.priority.pop();
          const req = this._processRequest(msg);
          if (req !== null) return req;
        }
        while (this.queue.length > 0) {
          const msg = this.queue.shift();
          const req = this._processRequest(msg);
          if (req !== null) return req;
        }
        return null;
      }
      _processRequest(req) {
        if (req.block || req.hash || req.seek || req.upgrade || req.manifest) {
          this.requests.delete(req.id);
          this.length--;
          return req;
        }
        return null;
      }
      clear() {
        this.queue.clear();
        this.priority = [];
        this.length = 0;
        this.requests.clear();
      }
      delete(id) {
        const req = this.requests.get(id);
        if (!req) return;
        req.block = null;
        req.hash = null;
        req.seek = null;
        req.upgrade = null;
        req.manifest = false;
        this.requests.delete(id);
        this.length--;
        if (this.length === 0) {
          this.queue.clear();
          this.priority = [];
        }
      }
    };
  }
});

// node_modules/hypercore/lib/hotswap-queue.js
var require_hotswap_queue = __commonJS({
  "node_modules/hypercore/lib/hotswap-queue.js"(exports2, module2) {
    var TICKS = 16;
    module2.exports = class HotswapQueue {
      constructor() {
        this.priorities = [[], [], []];
      }
      *pick(peer) {
        for (let i = 0; i < this.priorities.length; i++) {
          let ticks = (this.priorities.length - i) * TICKS;
          const queue = this.priorities[i];
          for (let j = 0; j < queue.length; j++) {
            const r = j + Math.floor(Math.random() * queue.length - j);
            const a = queue[j];
            const b = queue[r];
            if (r !== j) {
              queue[b.hotswap.index = j] = b;
              queue[a.hotswap.index = r] = a;
            }
            if (hasInflight(b, peer)) continue;
            yield b;
            if (--ticks <= 0) break;
          }
        }
      }
      add(block) {
        if (block.hotswap !== null) this.remove(block);
        if (block.inflight.length === 0 || block.inflight.length >= 3) return;
        const queue = this.priorities[block.inflight.length - 1];
        const index = queue.push(block) - 1;
        block.hotswap = { ref: this, queue, index };
      }
      remove(block) {
        const hotswap = block.hotswap;
        if (hotswap === null) return;
        block.hotswap = null;
        const head = hotswap.queue.pop();
        if (head === block) return;
        hotswap.queue[head.hotswap.index = hotswap.index] = head;
      }
    };
    function hasInflight(block, peer) {
      for (let j = 0; j < block.inflight.length; j++) {
        if (block.inflight[j].peer === peer) return true;
      }
      return false;
    }
  }
});

// node_modules/hypercore/lib/replicator.js
var require_replicator = __commonJS({
  "node_modules/hypercore/lib/replicator.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var safetyCatch = require_safety_catch();
    var RandomIterator = require_random_array_iterator();
    var flatTree = require_flat_tree();
    var Mutex = require_mutex();
    var ReceiverQueue = require_receiver_queue();
    var HotswapQueue = require_hotswap_queue();
    var RemoteBitfield = require_remote_bitfield();
    var { MerkleTree } = require_merkle_tree();
    var w = require_wants();
    var { LocalWants, RemoteWants } = w;
    var {
      REQUEST_CANCELLED,
      REQUEST_TIMEOUT,
      INVALID_CAPABILITY,
      SNAPSHOT_NOT_AVAILABLE,
      ASSERTION
    } = require_hypercore_errors();
    var m = require_messages2();
    var caps = require_caps();
    var DEFAULT_MAX_INFLIGHT = [16, 512];
    var SCALE_LATENCY = 50;
    var NOT_DOWNLOADING_SLACK = 2e4 + Math.random() * 2e4 | 0;
    var MAX_PEERS_UPGRADE = 3;
    var LAST_BLOCKS = 256;
    var MAX_RANGES = 64;
    var NOT_AVAILABLE = 1;
    var INVALID_REQUEST = 2;
    var MAX_INVALID_REQUESTS = 64;
    var MAX_BACKOFFS = MAX_INVALID_REQUESTS / 2;
    var PRIORITY = {
      NORMAL: 0,
      HIGH: 1,
      VERY_HIGH: 2,
      CANCELLED: 255
      // reserved to mark cancellation
    };
    var Attachable = class {
      constructor(replicator) {
        this.replicator = replicator;
        this.resolved = false;
        this.processing = false;
        this.refs = [];
        this.wants = null;
      }
      addWant(w2) {
        if (this.wants === null) this.wants = /* @__PURE__ */ new Set();
        this.wants.add(w2);
      }
      removeWant(w2) {
        if (this.wants === null) return;
        this.wants.delete(w2);
      }
      attach(session) {
        const r = {
          context: this,
          session,
          sindex: 0,
          rindex: 0,
          snapshot: true,
          resolve: null,
          reject: null,
          promise: null,
          timeout: null
        };
        r.sindex = session.push(r) - 1;
        r.rindex = this.refs.push(r) - 1;
        r.promise = new Promise((resolve, reject) => {
          r.resolve = resolve;
          r.reject = reject;
        });
        return r;
      }
      detach(r, err = null) {
        if (r.context !== this) return false;
        this._detach(r);
        this._cancel(r, err);
        this.gc();
        return true;
      }
      _detach(r) {
        const rh = this.refs.pop();
        const sh = r.session.pop();
        if (r.rindex < this.refs.length) this.refs[rh.rindex = r.rindex] = rh;
        if (r.sindex < r.session.length) r.session[sh.sindex = r.sindex] = sh;
        destroyRequestTimeout(r);
        r.context = null;
        return r;
      }
      gc() {
        if (this.refs.length > 0 || this.processing) return;
        this._unref();
        if (this.wants === null) return;
        const wants = this.wants;
        this.wants = null;
        let update = null;
        for (const w2 of wants) {
          if (w2.any) {
            const removed = w2.wants.removeAnyRange(w2.start, w2.length, this);
            if (!removed) continue;
            if (update === null) update = /* @__PURE__ */ new Set();
            update.add(w2.wants.peer);
            w2.wants.peer.wireUnwant.send(removed);
            continue;
          }
          if (w2.wants.removeBatch(w2.start, this)) {
            if (update === null) update = /* @__PURE__ */ new Set();
            update.add(w2.wants.peer);
          }
        }
        if (update === null) return;
        for (const peer of update) {
          this.replicator.updatePeer(peer);
        }
      }
      processed() {
        this.processing = false;
        this.gc();
      }
      _cancel(r, err) {
        r.reject(err || REQUEST_CANCELLED());
      }
      _unref() {
      }
      resolve(val) {
        this.resolved = true;
        while (this.refs.length > 0) {
          this._detach(this.refs[this.refs.length - 1]).resolve(val);
        }
        this.gc();
      }
      reject(err) {
        this.resolved = true;
        while (this.refs.length > 0) {
          this._detach(this.refs[this.refs.length - 1]).reject(err);
        }
        this.gc();
      }
      setTimeout(r, ms) {
        destroyRequestTimeout(r);
        r.timeout = setTimeout(onrequesttimeout, ms, r);
      }
    };
    var BlockRequest = class extends Attachable {
      constructor(replicator, tracker, index, priority, force) {
        super(replicator);
        this.index = index;
        this.priority = priority;
        this.inflight = [];
        this.queued = false;
        this.hotswap = null;
        this.tracker = tracker;
        this.force = force;
      }
      _unref() {
        if (this.resolved) return;
        this.queued = false;
        for (const req of this.inflight) {
          req.peer._cancelRequest(req);
        }
        this.tracker.remove(this.index);
        removeHotswap(this);
      }
    };
    var RangeBatchRequest = class extends Attachable {
      constructor(replicator, batch) {
        super(replicator);
        this.batch = batch;
        this.index = 0;
      }
    };
    var RangeRequest = class extends Attachable {
      constructor(replicator, ranges, start, end, linear, ifAvailable, blocks) {
        super(replicator);
        this.start = start;
        this.end = end;
        this.linear = linear;
        this.ifAvailable = ifAvailable;
        this.blocks = blocks;
        this.ranges = ranges;
        this.batches = [];
        ranges.push(this);
        if (this.end === -1) {
          this.replicator._alwaysLatestBlock++;
        }
        this.userStart = start;
        this.userEnd = end;
      }
      addBatch(batch) {
        for (let i = 0; i < this.batches.length; i++) {
          const b2 = this.batches[i];
          if (b2.batch === batch) return false;
        }
        const b = new RangeBatchRequest(this.replicator, batch);
        b.index = this.batches.length;
        this.batches.push(b);
        return true;
      }
      removeBatch(batch) {
        const head = this.batches.pop();
        if (head !== batch) {
          head.index = batch.index;
          this.batches[head.index] = head;
        }
        batch.gc();
      }
      _unref() {
        const rangeIndex = this.ranges.indexOf(this);
        if (rangeIndex === -1) return;
        const h = this.ranges.pop();
        if (h !== this) {
          this.ranges[rangeIndex] = h;
        }
        if (this.end === -1) {
          this.replicator._alwaysLatestBlock--;
        }
        while (this.batches.length) {
          this.batches.pop().gc();
        }
      }
      _cancel(r) {
        r.resolve(false);
      }
    };
    var UpgradeRequest = class extends Attachable {
      constructor(replicator, fork, length) {
        super(replicator);
        this.fork = fork;
        this.length = length;
        this.inflight = [];
      }
      _unref() {
        if (this.resolved) return;
        if (this.replicator.eagerUpgrade === true || this.inflight.length > 0) return;
        this.replicator._upgrade = null;
      }
      _cancel(r) {
        r.resolve(false);
      }
    };
    var SeekRequest = class extends Attachable {
      constructor(replicator, seeks, seeker) {
        super(replicator);
        this.seeker = seeker;
        this.inflight = [];
        this.seeks = seeks;
      }
      _unref() {
        if (this.resolved) return;
        if (this.inflight.length > 0) return;
        const i = this.seeks.indexOf(this);
        if (i === -1) return;
        const h = this.seeks.pop();
        if (i < this.seeks.length) this.seeks[i] = h;
      }
    };
    var ForkRequest = class extends Attachable {
      constructor(replicator, fork) {
        super(replicator);
        this.fork = fork;
        this.inflight = [];
        this.batch = null;
      }
    };
    var InflightTracker = class {
      constructor() {
        this._requests = [];
        this._free = [];
        this._active = 0;
      }
      get idle() {
        return this._active === 0;
      }
      *[Symbol.iterator]() {
        for (const req of this._requests) {
          if (req !== null) yield req;
        }
      }
      add(req) {
        const id = this._free.length ? this._free.pop() : this._requests.push(null);
        req.id = id;
        this._requests[id - 1] = req;
        this._active++;
        return req;
      }
      get(id) {
        return id <= this._requests.length ? this._requests[id - 1] : null;
      }
      remove(id, roundtrip) {
        if (id > this._requests.length) return;
        if (this._requests[id - 1]) this._active--;
        this._requests[id - 1] = null;
        if (roundtrip === true) this._free.push(id);
      }
      reusable(id) {
        this._free.push(id);
      }
    };
    var BlockTracker = class {
      constructor(replicator) {
        this._replicator = replicator;
        this._map = /* @__PURE__ */ new Map();
      }
      [Symbol.iterator]() {
        return this._map.values();
      }
      isEmpty() {
        return this._map.size === 0;
      }
      has(index) {
        return this._map.has(index);
      }
      get(index) {
        return this._map.get(index) || null;
      }
      add(index, priority, force) {
        let b = this._map.get(index);
        if (b) return b;
        b = new BlockRequest(this._replicator, this, index, priority, force);
        this._map.set(index, b);
        return b;
      }
      remove(index) {
        const b = this.get(index);
        this._map.delete(index);
        return b;
      }
    };
    var RoundtripQueue = class {
      constructor() {
        this.queue = [];
        this.tick = 0;
      }
      clear() {
        const ids = new Array(this.queue.length);
        for (let i = 0; i < ids.length; i++) {
          ids[i] = this.queue[i][1];
        }
        this.queue = [];
        return ids;
      }
      add(id) {
        this.queue.push([++this.tick, id]);
      }
      flush(tick) {
        let flushed = null;
        for (let i = 0; i < this.queue.length; i++) {
          if (this.queue[i][0] > tick) break;
          if (flushed === null) flushed = [];
          flushed.push(this.queue[i][1]);
        }
        if (flushed !== null) this.queue.splice(0, flushed.length);
        return flushed;
      }
    };
    var ProofRequest = class {
      constructor(msg, proof, block, manifest) {
        this.msg = msg;
        this.proof = proof;
        this.block = block;
        this.manifest = manifest;
      }
      async fulfill() {
        if (this.proof === null) return null;
        const [proof, block] = await Promise.all([this.proof.settle(), this.block]);
        if (this.manifest) proof.manifest = this.manifest;
        if (!block && proof.block) return null;
        if (block) proof.block.value = block;
        return proof;
      }
    };
    var Peer = class {
      constructor(replicator, protomux, channel, inflightRange) {
        this.core = replicator.core;
        this.replicator = replicator;
        this.stream = protomux.stream;
        this.protomux = protomux;
        this.remotePublicKey = this.stream.remotePublicKey;
        this.remoteSupportsSeeks = false;
        this.inflightRange = inflightRange;
        this.fullyDownloadedSignaled = 0;
        this.paused = false;
        this.removed = false;
        this.channel = channel;
        this.channel.userData = this;
        this.wireSync = this.channel.messages[0];
        this.wireRequest = this.channel.messages[1];
        this.wireCancel = this.channel.messages[2];
        this.wireData = this.channel.messages[3];
        this.wireNoData = this.channel.messages[4];
        this.wireWant = this.channel.messages[5];
        this.wireUnwant = this.channel.messages[6];
        this.wireBitfield = this.channel.messages[7];
        this.wireRange = this.channel.messages[8];
        this.wireExtension = this.channel.messages[9];
        this.stats = {
          wireSync: { tx: 0, rx: 0 },
          wireRequest: { tx: 0, rx: 0 },
          wireCancel: { tx: 0, rx: 0 },
          wireData: { tx: 0, rx: 0 },
          wireWant: { tx: 0, rx: 0 },
          wireUnwant: { tx: 0, rx: 0 },
          wireBitfield: { tx: 0, rx: 0 },
          wireRange: { tx: 0, rx: 0 },
          wireExtension: { tx: 0, rx: 0 },
          hotswaps: 0,
          invalidData: 0,
          invalidRequests: 0,
          backoffs: 0,
          notAvailableBackoffs: 0
        };
        this.receiverQueue = new ReceiverQueue();
        this.receiverBusy = false;
        this.roundtripQueue = null;
        this.inflight = 0;
        this.dataProcessing = 0;
        this.canUpgrade = true;
        this.needsSync = false;
        this.syncsProcessing = 0;
        this.lastUpgradableLength = 0;
        this.lastUpgradableFork = 0;
        this._remoteContiguousLength = 0;
        this.remoteOpened = false;
        this.remoteBitfield = new RemoteBitfield();
        this.missingBlocks = new RemoteBitfield();
        this.pushedLength = 0;
        this.remoteFork = 0;
        this.remoteLength = 0;
        this.remoteCanUpgrade = false;
        this.remoteUploading = true;
        this.remoteDownloading = true;
        this.remoteSynced = false;
        this.remoteHasManifest = false;
        this.remoteAllowPush = false;
        this.remoteRequests = /* @__PURE__ */ new Map();
        this.segmentsWanted = /* @__PURE__ */ new Set();
        this.broadcastedNonSparse = false;
        this.wants = new LocalWants(this);
        this.remoteWants = new RemoteWants(this);
        this.lengthAcked = 0;
        this.extensions = /* @__PURE__ */ new Map();
        this.lastExtensionSent = "";
        this.lastExtensionRecv = "";
        replicator._ifAvailable++;
        replicator._active++;
      }
      get remoteContiguousLength() {
        return this.remoteBitfield.findFirst(false, this._remoteContiguousLength);
      }
      getMaxInflight() {
        const stream = this.stream.rawStream;
        if (!stream.udx) return Math.min(this.inflightRange[1], this.inflightRange[0] * 3);
        const scale = stream.rtt <= SCALE_LATENCY ? 1 : stream.rtt / SCALE_LATENCY * Math.min(1, 2 / this.replicator.peers.length);
        return Math.max(
          this.inflightRange[0],
          Math.round(Math.min(this.inflightRange[1], this.inflightRange[0] * scale))
        );
      }
      getMaxHotswapInflight() {
        const inf = this.getMaxInflight();
        return Math.max(16, inf / 2);
      }
      signalUpgrade() {
        if (this._shouldUpdateCanUpgrade() === true) this._updateCanUpgradeAndSync();
        else this.sendSync();
      }
      _markInflight(index) {
        this.missingBlocks.set(index, false);
      }
      broadcastRange(start, length, drop) {
        if (!this.isActive()) return;
        if (drop) this._unclearLocalRange(start, length);
        else this._clearLocalRange(start, length);
        const fullyContig = this.core.header.hints.contiguousLength === this.core.state.length;
        if (start + LAST_BLOCKS < this.core.state.length && !drop && !fullyContig) {
          if (!this.remoteWants.hasRange(start, length)) return;
        }
        let force = false;
        if (fullyContig && !drop) {
          start = 0;
          length = this.core.state.length;
          if (this.fullyDownloadedSignaled < length) {
            this.fullyDownloadedSignaled = length;
            force = true;
          }
        }
        if (!force && !drop) {
          if (this._remoteContiguousLength >= start + length) return;
          if (length === 1) {
            if (this.remoteBitfield.get(start)) return;
          } else {
            if (this.remoteBitfield.firstUnset(start) >= start + length) return;
          }
        }
        this.wireRange.send({
          drop,
          start,
          length
        });
        incrementTx(this.stats.wireRange, this.replicator.stats.wireRange);
      }
      extension(name, message) {
        this.wireExtension.send({ name: name === this.lastExtensionSent ? "" : name, message });
        incrementTx(this.stats.wireExtension, this.replicator.stats.wireExtension);
        this.lastExtensionSent = name;
      }
      onextension(message) {
        const name = message.name || this.lastExtensionRecv;
        this.lastExtensionRecv = name;
        const ext = this.extensions.get(name);
        if (ext) {
          ext._onmessage({ start: 0, end: message.message.byteLength, buffer: message.message }, this);
        }
      }
      sendSync() {
        if (this.core._repairMode) return;
        if (this.syncsProcessing !== 0) {
          this.needsSync = true;
          return;
        }
        if (this.core.state.fork !== this.remoteFork) {
          this.canUpgrade = false;
        }
        this.needsSync = false;
        this.wireSync.send({
          fork: this.core.state.fork,
          length: this.core.state.length,
          remoteLength: this.core.state.fork === this.remoteFork ? this.remoteLength : 0,
          canUpgrade: this.canUpgrade,
          uploading: true,
          downloading: this.replicator.isDownloading(),
          hasManifest: !!this.core.header.manifest && this.core.compat === false,
          allowPush: this.replicator.isAllowingPush()
        });
        incrementTx(this.stats.wireSync, this.replicator.stats.wireSync);
      }
      onopen({ seeks, capability }) {
        const expected = caps.replicate(
          this.stream.isInitiator === false,
          this.core.key,
          this.stream.handshakeHash
        );
        if (b4a4.equals(capability, expected) !== true) {
          throw INVALID_CAPABILITY("Remote sent an invalid replication capability");
        }
        if (this.remoteOpened === true) return;
        this.remoteOpened = true;
        this.remoteSupportsSeeks = seeks;
        this.protomux.cork();
        this.sendSync();
        const contig = Math.min(this.core.state.length, this.core.header.hints.contiguousLength);
        if (contig > 0) {
          this.broadcastRange(0, contig, false);
          if (contig === this.core.state.length) {
            this.broadcastedNonSparse = true;
          }
        }
        this.replicator._ifAvailable--;
        this.replicator._addPeer(this);
        this.protomux.uncork();
        this.core.checkIfIdle();
      }
      onclose(isRemote) {
        const reopen = isRemote === true && this.remoteOpened === true && this.remoteDownloading === false && this.remoteUploading === true && this.replicator.downloading === true;
        if (this.remoteOpened === false) {
          this.replicator._ifAvailable--;
          this.replicator.updateAll();
          return;
        }
        this.remoteOpened = false;
        this.removed = true;
        this.remoteRequests.clear();
        this.receiverQueue.clear();
        if (this.roundtripQueue !== null) {
          for (const id of this.roundtripQueue.clear()) this.replicator._inflight.reusable(id);
        }
        this.replicator._removePeer(this);
        if (reopen) {
          this.replicator._makePeer(this.protomux);
        }
      }
      closeIfIdle() {
        if (this.remoteDownloading === false && this.replicator.isDownloading() === false) {
          this.channel.close();
          return true;
        }
        return false;
      }
      async onsync(msg) {
        const {
          fork,
          length,
          remoteLength,
          canUpgrade,
          uploading,
          downloading,
          hasManifest,
          allowPush
        } = msg;
        const lengthChanged = length !== this.remoteLength;
        const sameFork = fork === this.core.state.fork;
        this.remoteSynced = true;
        this.remoteFork = fork;
        this.remoteLength = length;
        this.remoteCanUpgrade = canUpgrade;
        this.remoteUploading = uploading;
        this.remoteDownloading = downloading;
        this.remoteHasManifest = hasManifest;
        this.remoteAllowPush = allowPush;
        if (this.closeIfIdle()) return;
        this.lengthAcked = sameFork ? remoteLength : 0;
        this.syncsProcessing++;
        this.replicator._updateFork(this);
        if (this.remoteLength > this.core.state.length && this.lengthAcked === this.core.state.length) {
          if (this.replicator._addUpgradeMaybe() !== null) this._update();
        }
        const upgrade = lengthChanged === false || sameFork === false ? this.canUpgrade && sameFork : await this._canUpgrade(length, fork);
        if (length === this.remoteLength && fork === this.core.state.fork) {
          this.canUpgrade = upgrade;
          if (upgrade) {
            this.lastUpgradableFork = fork;
            this.lastUpgradableLength = length;
          }
        }
        if (--this.syncsProcessing !== 0) return;
        if (this.needsSync === true || this.core.state.fork === this.remoteFork && this.core.state.length > this.remoteLength) {
          this.signalUpgrade();
        }
        this._update();
      }
      _shouldUpdateCanUpgrade() {
        return this.core.state.fork === this.remoteFork && this.core.state.length > this.remoteLength && this.canUpgrade === false && this.syncsProcessing === 0;
      }
      async _updateCanUpgradeAndSync() {
        const { length, fork } = this.core.state;
        const remoteLength = this.remoteLength;
        const remoteFork = this.remoteFork;
        const canUpgrade = await this._canUpgrade(this.remoteLength, this.remoteFork);
        if (this.syncsProcessing > 0 || length !== this.core.state.length || fork !== this.core.state.fork) {
          return;
        }
        if (remoteLength !== this.remoteLength || remoteFork !== this.remoteFork) {
          return;
        }
        if (canUpgrade === this.canUpgrade) {
          return;
        }
        this.canUpgrade = canUpgrade;
        if (canUpgrade) {
          this.lastUpgradableLength = this.remoteLength;
          this.lastUpgradableFork = this.remoteFork;
        }
        this.sendSync();
      }
      // Safe to call in the background - never fails
      async _canUpgrade(remoteLength, remoteFork) {
        if (remoteFork !== this.core.state.fork) return false;
        if (remoteLength === 0) return true;
        if (remoteLength >= this.core.state.length) return false;
        try {
          const canUpgrade = await MerkleTree.upgradeable(this.core.state, remoteLength);
          if (remoteFork !== this.core.state.fork) return false;
          return canUpgrade;
        } catch {
          return false;
        }
      }
      async _getProof(batch, msg, pushing) {
        let block = null;
        if (msg.block) {
          const index = msg.block.index;
          if (!pushing && (msg.fork !== this.core.state.fork || !this.core.bitfield.get(index))) {
            return new ProofRequest(msg, null, null, null);
          }
          block = batch.getBlock(index);
          block.catch(noop);
        }
        const manifest = msg.manifest && !this.core.compat ? this.core.header.manifest : null;
        try {
          const proof = await MerkleTree.proof(this.core.state, batch, msg);
          return new ProofRequest(msg, proof, block, manifest);
        } catch (err) {
          batch.destroy();
          this.replicator._oninvalidrequest(err, msg, this);
          if (this.stats.invalidRequests >= MAX_INVALID_REQUESTS) throw err;
          await backoff(this.stats.invalidRequests);
          return null;
        }
      }
      async onrequest(msg) {
        const size = this.remoteRequests.size;
        this.remoteRequests.set(msg.id, msg);
        if (size === this.remoteRequests.size) {
          this._cancel(msg.id);
          this.remoteRequests.set(msg.id, msg);
        }
        if (!this.protomux.drained || this.receiverQueue.length) {
          this.receiverQueue.push(msg);
          return;
        }
        if (this.replicator.destroyed) return;
        await this._handleRequest(msg);
      }
      oncancel(msg) {
        this._cancel(msg.request);
      }
      _cancel(id) {
        this.remoteRequests.delete(id);
        this.receiverQueue.delete(id);
      }
      ondrain() {
        return this._handleRequests();
      }
      async _handleRequests() {
        if (this.receiverBusy || this.replicator.destroyed) return;
        this.receiverBusy = true;
        this.protomux.cork();
        while (this.remoteOpened && this.protomux.drained && this.receiverQueue.length > 0 && !this.removed) {
          const msg = this.receiverQueue.shift();
          await this._handleRequest(msg);
        }
        this.protomux.uncork();
        this.receiverBusy = false;
      }
      async push(index) {
        if (!this.remoteAllowPush) return;
        if (!this.remoteDownloading) return;
        if (this.core.state.length <= index) return;
        if (this.core.state.fork !== this.remoteFork) return;
        if (this.remoteBitfield.get(index)) return;
        const msg = {
          id: 0,
          fork: this.core.state.fork,
          block: null,
          hash: null,
          seek: null,
          upgrade: null,
          manifest: this.remoteLength === 0,
          priority: 0
        };
        await this.replicator._txLock.lock();
        try {
          const remoteLength = Math.max(this.remoteLength, this.pushedLength);
          msg.block = {
            index,
            nodes: MerkleTree.maxMissingNodes(2 * index, remoteLength)
          };
          if (index >= remoteLength) {
            msg.upgrade = {
              start: remoteLength,
              length: this.core.state.length - remoteLength
            };
          }
          let req = null;
          const batch = this.core.storage.read();
          try {
            req = await this._getProof(batch, msg, true);
          } catch (err) {
            this.replicator._oninvalidrequest(err, msg, this);
            return;
          }
          if (req === null) return;
          batch.tryFlush();
          await this._fulfillRequest(req, true);
        } finally {
          this.replicator._txLock.unlock();
        }
      }
      async _handleRequest(msg) {
        const locked = !!msg.upgrade && this.remoteAllowPush;
        if (locked) {
          await this.replicator._txLock.lock();
          const end = msg.upgrade.start + msg.upgrade.length;
          if (this.pushedLength < end) {
            msg.upgrade.start = this.pushedLength;
            msg.upgrade.length = end - this.pushedLength;
          }
        }
        try {
          const batch = this.core.storage.read();
          const req = msg.fork === this.core.state.fork ? await this._getProof(batch, msg, false) : new ProofRequest(msg, null, null, null);
          if (req === null) {
            this.wireNoData.send({ request: msg.id, reason: INVALID_REQUEST });
            return;
          }
          batch.tryFlush();
          await this._fulfillRequest(req, false);
        } finally {
          if (locked) this.replicator._txLock.unlock();
        }
      }
      async _fulfillRequest(req, pushing) {
        if (this.core._repairMode) {
          if (this.remoteRequests.get(req.msg.id) !== req.msg) {
            return;
          }
          this.remoteRequests.delete(req.msg.id);
          req.fulfill().catch(safetyCatch);
          return;
        }
        const proof = await req.fulfill();
        if (!pushing) {
          if (this.remoteRequests.get(req.msg.id) !== req.msg) {
            return;
          }
          this.remoteRequests.delete(req.msg.id);
        } else if (!this.remoteAllowPush) {
          return;
        }
        if (!this.isActive() && proof.block !== null) {
          return;
        }
        if (proof === null) {
          if (req.msg.manifest && this.core.header.manifest) {
            const manifest = this.core.header.manifest;
            this.wireData.send({
              request: req.msg.id,
              fork: this.core.state.fork,
              block: null,
              hash: null,
              seek: null,
              upgrade: null,
              manifest
            });
            incrementTx(this.stats.wireData, this.replicator.stats.wireData);
            return;
          }
          this.wireNoData.send({ request: req.msg.id, reason: NOT_AVAILABLE });
          return;
        }
        if (proof.block !== null) {
          this.replicator._onupload(proof.block.index, proof.block.value.byteLength, this);
        }
        if (proof.upgrade) {
          const remoteLength = MerkleTree.upgradeLength(proof.upgrade);
          if (remoteLength > this.pushedLength) this.pushedLength = remoteLength;
        }
        this.wireData.send({
          request: req.msg.id,
          fork: req.msg.fork,
          block: proof.block,
          hash: proof.hash,
          seek: proof.seek,
          upgrade: proof.upgrade,
          manifest: proof.manifest
        });
        incrementTx(this.stats.wireData, this.replicator.stats.wireData);
      }
      _cancelRequest(req) {
        if (req.priority === PRIORITY.CANCELLED) return;
        req.priority = PRIORITY.CANCELLED;
        this.inflight--;
        this.replicator._requestDone(req.id, false);
        if (isBlockRequest(req)) this.replicator._unmarkInflight(req.block.index);
        if (isUpgradeRequest(req)) this.replicator._clearInflightUpgrade(req);
        if (this.roundtripQueue === null) this.roundtripQueue = new RoundtripQueue();
        this.roundtripQueue.add(req.id);
        this.wireCancel.send({ request: req.id });
        incrementTx(this.stats.wireCancel, this.replicator.stats.wireCancel);
      }
      _checkIfConflict() {
        this.paused = true;
        const length = Math.min(this.core.state.length, this.remoteLength);
        if (length === 0) return;
        this.wireRequest.send({
          id: 0,
          // TODO: use an more explicit id for this eventually...
          fork: this.remoteFork,
          block: null,
          hash: null,
          seek: null,
          upgrade: {
            start: 0,
            length
          }
        });
        incrementTx(this.stats.wireRequest, this.replicator.stats.wireRequest);
      }
      _unmarkInflightBlockRequest(req, data) {
        if (isBlockRequest(req)) this.replicator._unmarkInflight(req.block.index);
        else if (data.block && !req) this.replicator._unmarkInflight(data.block.index);
      }
      async ondata(data) {
        if (data.request !== 0 && !data.upgrade) return this._handleData(data);
        await this.replicator._rxLock.lock();
        try {
          await this._handleData(data);
        } finally {
          this.replicator._rxLock.unlock();
        }
      }
      async _handleData(data) {
        if (data.request === 0 && data.upgrade && data.upgrade.start === 0) {
          if (await this.core.checkConflict(data, this)) return;
          this.paused = false;
        }
        const req = data.request > 0 ? this.replicator._inflight.get(data.request) : null;
        const reorg = data.fork > this.core.state.fork;
        if (req === null && reorg === false && !this.replicator.allowPush) {
          return;
        }
        if (this.core._repairMode) {
          this.replicator._onnodata(this, req, NOT_AVAILABLE);
          return;
        }
        if (req === null && reorg === false && data.block) {
          this.replicator._markInflight(data.block.index);
        }
        if (req !== null) {
          if (req.peer !== this) return;
          this._onrequestroundtrip(req);
        }
        try {
          if (reorg === true) return await this.replicator._onreorgdata(this, req, data);
        } catch (err) {
          safetyCatch(err);
          this._unmarkInflightBlockRequest(req, data);
          this.paused = true;
          this.replicator._oninvaliddata(err, req, data, this);
          return;
        }
        this.dataProcessing++;
        if (isBlockRequest(req)) this.replicator._markProcessing(req.block.index);
        try {
          if (!this.replicator._matchingRequest(req, data) || !await this.core.verify(data, this)) {
            this.replicator._onnodata(this, req, 0);
            return;
          }
        } catch (err) {
          safetyCatch(err);
          this._unmarkInflightBlockRequest(req, data);
          if (err.code === "WRITE_FAILED") {
            this.paused = true;
            return;
          }
          if (this.core.closed && !isCriticalError(err)) return;
          if (err.code !== "INVALID_OPERATION") {
            this._checkIfConflict();
          }
          if (!this.replicator.allowPush) {
            this.paused = true;
          }
          this.replicator._onnodata(this, req, 0);
          this.replicator._oninvaliddata(err, req, data, this);
          return;
        } finally {
          if (isBlockRequest(req)) this.replicator._markProcessed(req.block.index);
          this.dataProcessing--;
        }
        this.replicator._ondata(this, req, data);
        if (this._shouldUpdateCanUpgrade() === true) {
          this._updateCanUpgradeAndSync();
        }
      }
      onnodata({ request, reason }) {
        const req = request > 0 ? this.replicator._inflight.get(request) : null;
        if (req === null || req.peer !== this) {
          this.replicator.updateAll();
          return;
        }
        this._onrequestroundtrip(req);
        this.replicator._onnodata(this, req, reason);
      }
      _onrequestroundtrip(req) {
        if (req.priority === PRIORITY.CANCELLED) return;
        req.priority = PRIORITY.CANCELLED;
        this.inflight--;
        this.replicator._requestDone(req.id, true);
        if (this.roundtripQueue === null) return;
        const flushed = this.roundtripQueue.flush(req.rt);
        if (flushed === null) return;
        for (const id of flushed) this.replicator._inflight.reusable(id);
      }
      onwant(range) {
        if (!this.remoteWants.add(range)) return;
        this.replicator._onwant(this, range.start, range.length, range.any);
      }
      onunwant(range) {
        this.remoteWants.remove(range);
      }
      onbitfield({ start, bitfield }) {
        if (start < this._remoteContiguousLength) this._remoteContiguousLength = start;
        this.remoteBitfield.insert(start, bitfield);
        this.missingBlocks.insert(start, bitfield);
        this._clearLocalRange(start, bitfield.byteLength * 8);
        this._update();
      }
      _clearLocalRange(start, length) {
        const bitfield = this.core.skipBitfield === null ? this.core.bitfield : this.core.skipBitfield;
        if (length === 1) {
          this.missingBlocks.set(start, this._remoteHasBlock(start) && !bitfield.get(start));
          return;
        }
        const contig = Math.min(this.core.state.length, this.core.header.hints.contiguousLength);
        if (start + length < contig) {
          this.missingBlocks.setRange(start, contig, false);
          return;
        }
        const rem = start & 32767;
        if (rem > 0) {
          start -= rem;
          length += rem;
        }
        const end = start + Math.min(length, this.core.state.length);
        while (start < end) {
          const local = bitfield.getBitfield(start);
          if (local && local.bitfield) {
            this.missingBlocks.clear(start, local.bitfield);
          }
          start += 32768;
        }
      }
      _resetMissingBlock(index) {
        const bitfield = this.core.skipBitfield === null ? this.core.bitfield : this.core.skipBitfield;
        this.missingBlocks.set(index, this._remoteHasBlock(index) && !bitfield.get(index));
      }
      _unclearLocalRange(start, length) {
        if (length === 1) {
          this._resetMissingBlock(start);
          return;
        }
        const rem = start & RemoteBitfield.BITS_PER_SEGMENT - 1;
        if (rem > 0) {
          start -= rem;
          length += rem;
        }
        const fixedStart = start;
        const end = start + Math.min(length, this.remoteLength);
        while (start < end) {
          const remote = this.remoteBitfield.getBitfield(start);
          if (remote && remote.bitfield) {
            this.missingBlocks.insert(start, remote.bitfield);
          }
          start += RemoteBitfield.BITS_PER_SEGMENT;
        }
        this._clearLocalRange(fixedStart, length);
      }
      async onrange({ drop, start, length }) {
        const has = drop === false;
        if (drop === true && start < this._remoteContiguousLength) {
          this._remoteContiguousLength = start;
        }
        if (start === 0 && drop === false) {
          if (length > this._remoteContiguousLength) {
            this._remoteContiguousLength = length;
            if (this.remoteFork === this.core.state.fork && length > this.core.header.hints.remoteContiguousLength) {
              this.core.updateRemoteContiguousLength(length);
            }
          }
        } else if (length === 1) {
          const bitfield = this.core.skipBitfield === null ? this.core.bitfield : this.core.skipBitfield;
          this.remoteBitfield.set(start, has);
          this.missingBlocks.set(start, has && !bitfield.get(start));
        } else {
          const rangeStart = this.remoteBitfield.findFirst(!has, start);
          const rangeEnd = length + start;
          if (rangeStart !== -1 && rangeStart < rangeEnd) {
            this.remoteBitfield.setRange(rangeStart, rangeEnd, has);
            this.missingBlocks.setRange(rangeStart, rangeEnd, has);
            if (has) this._clearLocalRange(rangeStart, rangeEnd - rangeStart);
          }
        }
        if (this.core.hintsChanged) await this.core.flushHints();
        if (drop === false) this._update();
        this.core.emitRemoteContiguousLength();
      }
      onreorghint() {
      }
      _update() {
        this.replicator.updatePeer(this);
      }
      async _onconflict() {
        this.protomux.cork();
        if (this.remoteLength > 0 && this.core.state.fork === this.remoteFork) {
          await this.onrequest({
            id: 0,
            fork: this.core.state.fork,
            block: null,
            hash: null,
            seek: null,
            upgrade: {
              start: 0,
              length: Math.min(this.core.state.length, this.remoteLength)
            }
          });
        }
        this.channel.close();
        this.protomux.uncork();
      }
      _makeRequest(needsUpgrade, priority, minLength) {
        if (needsUpgrade === true && this.replicator._shouldUpgrade(this) === false) {
          return null;
        }
        if (this.remoteLength < minLength) {
          return null;
        }
        if (needsUpgrade === false && this.replicator._autoUpgrade(this) === true) {
          needsUpgrade = true;
        }
        return {
          peer: this,
          rt: this.roundtripQueue === null ? 0 : this.roundtripQueue.tick,
          id: 0,
          fork: this.remoteFork,
          block: null,
          hash: null,
          seek: null,
          upgrade: needsUpgrade === false ? null : { start: this.core.state.length, length: this.remoteLength - this.core.state.length },
          // remote manifest check can be removed eventually...
          manifest: this.core.header.manifest === null && this.remoteHasManifest === true,
          priority,
          timestamp: Date.now(),
          elapsed: 0
        };
      }
      _requestManifest() {
        const req = this._makeRequest(false, 0, 0);
        if (req === null) return;
        this._send(req);
      }
      _includeLastBlock() {
        if (this.replicator._alwaysLatestBlock === 0) return null;
        const index = this.remoteLength - 1;
        if (index < this.core.state.length) return null;
        if (!this._remoteHasBlock(index)) return null;
        if (!this._canRequest(index, false)) return null;
        const b = this.replicator._blocks.add(index, PRIORITY.NORMAL, false);
        return b;
      }
      _requestUpgrade(u) {
        if (this.replicator.pushOnly) return false;
        const req = this._makeRequest(true, 0, 0);
        if (req === null) return false;
        const b = this._includeLastBlock();
        if (b) this._sendBlockRequest(req, b);
        else this._send(req);
        return true;
      }
      _requestSeek(s) {
        if (this.replicator._updatesPending > 0) return false;
        if (this.replicator.pushOnly) return false;
        const { length, fork } = this.core.state;
        if (fork !== this.remoteFork) return false;
        if (s.seeker.start >= length) {
          const req = this._makeRequest(true, 0, 0);
          if (req === null) return false;
          req.seek = this.remoteSupportsSeeks ? { bytes: s.seeker.bytes, padding: s.seeker.padding } : null;
          s.inflight.push(req);
          this._send(req);
          return true;
        }
        const len = s.seeker.end - s.seeker.start;
        const off = s.seeker.start + Math.floor(Math.random() * len);
        for (let i = 0; i < len; i++) {
          let index = off + i;
          if (index > s.seeker.end) index -= len;
          if (this._remoteHasBlock(index) === false) continue;
          if (this.core.bitfield.get(index) === true) continue;
          if (!this._canRequest(index, false)) continue;
          const b = this.replicator._blocks.get(index);
          if (b !== null && b.inflight.length > 0) continue;
          const h = this.replicator._hashes.add(index, PRIORITY.NORMAL, false);
          if (h.inflight.length > 0) continue;
          const req = this._makeRequest(false, h.priority, index + 1);
          if (req === null) continue;
          const nodes = flatTree.depth(s.seeker.start + s.seeker.end - 1);
          req.hash = { index: 2 * index, nodes };
          req.seek = this.remoteSupportsSeeks ? { bytes: s.seeker.bytes, padding: s.seeker.padding } : null;
          s.inflight.push(req);
          h.inflight.push(req);
          this._send(req);
          return true;
        }
        this._maybeWantAnyRange(s.seeker.start, len, s);
        return false;
      }
      _canRequest(index, force) {
        if (!(index >= 0)) throw ASSERTION("bad index to _canRequest: " + index);
        if (!force && this.replicator.pushOnly) {
          return false;
        }
        if (this.remoteLength >= this.core.state.length) {
          return true;
        }
        if (index < this.lastUpgradableLength && this.lastUpgradableFork === this.core.state.fork) {
          return true;
        }
        if (this.canUpgrade && this.syncsProcessing === 0) {
          return true;
        }
        return false;
      }
      _remoteHasBlock(index) {
        return index < this._remoteContiguousLength || this.remoteBitfield.get(index) === true;
      }
      _sendBlockRequest(req, b) {
        if (this.core._repairMode) return;
        req.block = { index: b.index, nodes: 0 };
        this.replicator._markInflight(b.index);
        b.inflight.push(req);
        this.replicator.hotswaps.add(b);
        this._send(req);
      }
      _requestBlock(b) {
        const { length, fork } = this.core.state;
        if (this._remoteHasBlock(b.index) === false || fork !== this.remoteFork) {
          if (!this.core.bitfield.get(b.index)) this._maybeWant(b.index, b);
          return false;
        }
        if (!this._canRequest(b.index, b.force)) return false;
        const req = this._makeRequest(b.index >= length, b.priority, b.index + 1);
        if (req === null) return false;
        this._sendBlockRequest(req, b);
        return true;
      }
      _maybeWant(index, handle) {
        if (index < this.remoteContiguousLength) return;
        const res = this.wants.add(index, handle);
        if (!res) return;
        const batch = res.want && res.unwant;
        if (batch) this.protomux.cork();
        if (res.unwant) {
          this.wireUnwant.send(res.unwant);
          incrementTx(this.stats.wireUnwant, this.replicator.stats.wireUnwant);
        }
        if (res.want) {
          this.wireWant.send(res.want);
          incrementTx(this.stats.wireWant, this.replicator.stats.wireWant);
        }
        if (batch) this.protomux.uncork();
      }
      _maybeWantAnyRange(start, length, handle) {
        if (handle.wants) {
          for (const w2 of handle.wants) {
            if ((w2.start !== start || w2.length !== length) && w2.any) {
              const req2 = this.wants.removeAnyRange(w2.start, w2.length, handle);
              if (req2) this.wireUnwant.send(req2);
            }
          }
        }
        if (start + length <= this.remoteContiguousLength) return;
        const req = this.wants.addAnyRange(start, length, handle);
        if (req) this.wireWant.send(req);
      }
      _requestRangeBlock(index, length) {
        if (this.core.bitfield.get(index) === true || !this._canRequest(index, false)) return false;
        const b = this.replicator._blocks.add(index, PRIORITY.NORMAL, false);
        if (b.inflight.length > 0) {
          this.missingBlocks.set(index, false);
          return false;
        }
        const req = this._makeRequest(index >= length, b.priority, index + 1);
        if (req === null) {
          b.gc();
          return false;
        }
        this._sendBlockRequest(req, b);
        if (b.queued) b.queued = false;
        return true;
      }
      _findNext(i) {
        if (i < this._remoteContiguousLength) {
          if (this.core.skipBitfield === null) this.replicator._openSkipBitfield();
          i = this.core.skipBitfield.findFirst(false, i);
          if (i < this._remoteContiguousLength && i > -1) return i;
          i = this._remoteContiguousLength;
        }
        return this.missingBlocks.findFirst(true, i);
      }
      _addRangeBatch(r, offset, end) {
        const { WANT_BATCH } = w;
        while (offset < end) {
          const next = this.core.bitfield.findFirst(false, offset);
          if (next === -1 || next >= end) return false;
          const b = (next - (next & WANT_BATCH - 1)) / WANT_BATCH;
          if (r.addBatch(b)) return true;
          offset = (b + 1) * WANT_BATCH;
        }
        return false;
      }
      _populateRangeBatches(r) {
        const { WANT_BATCH } = w;
        for (let i = r.batches.length - 1; i >= 0; i--) {
          const b = r.batches[i];
          const minStart = b.batch * WANT_BATCH;
          const maxEnd = minStart + WANT_BATCH;
          const start = Math.max(r.start, minStart);
          const end = Math.min(r.end === -1 ? maxEnd : r.end, maxEnd);
          if (start < end && this.core.bitfield.hasUnset(start, end - start)) continue;
          r.removeBatch(b);
        }
        while (r.batches.length < 3) {
          const end = r.end === -1 ? this.core.state.length : r.end;
          if (end <= r.start) return;
          const len = end - r.start;
          const off = r.start + (r.linear ? 0 : Math.floor(Math.random() * len));
          if (!this._addRangeBatch(r, off, end) && !this._addRangeBatch(r, r.start, end)) break;
        }
      }
      _requestRangeBatch(start, end, length) {
        let tries = this.inflight;
        do {
          start = this._findNext(start);
          if (start === -1 || start >= end) break;
          if (this._requestRangeBlock(start, length)) return true;
          start++;
        } while (tries-- > 0);
        return false;
      }
      _getValidEnd(maxEnd) {
        const maxLocalLength = this.canUpgrade || this.remoteLength >= this.core.state.length ? this.core.state.length : this.core.state.fork === this.lastUpgradableFork ? Math.min(this.lastUpgradableLength, this.core.state.length) : 0;
        return Math.min(
          maxLocalLength,
          Math.min(maxEnd === -1 ? this.remoteLength : maxEnd, this.remoteLength)
        );
      }
      _requestRange(r) {
        const { WANT_BATCH } = w;
        if (this.syncsProcessing > 0) return false;
        const { length, fork } = this.core.state;
        if (r.blocks) {
          for (let i = r.start; i < r.end; i++) {
            const index = r.blocks[i];
            const has = index < this._remoteContiguousLength || this.missingBlocks.get(index) === true;
            if (has === true && this._requestRangeBlock(index, length)) return true;
            this._maybeWant(index, r);
          }
          return false;
        }
        this._populateRangeBatches(r);
        const end = this._getValidEnd(r.end);
        if (end <= r.start || fork !== this.remoteFork) return false;
        for (let i = 0; i < r.batches.length; i++) {
          const b = r.batches[i];
          const batchStart = Math.max(b.batch * WANT_BATCH, r.start);
          const batchEnd = Math.min((b.batch + 1) * WANT_BATCH, end);
          const len = batchEnd - batchStart;
          const off = batchStart + (r.linear ? 0 : Math.floor(Math.random() * len));
          if (this._requestRangeBatch(off, end, length) || this._requestRangeBatch(batchStart, off, length)) {
            return true;
          }
          this._maybeWant(batchStart, b);
        }
        return false;
      }
      _requestForkProof(f) {
        if (!this.remoteLength) return;
        if (this.replicator.pushOnly) return;
        const req = this._makeRequest(false, 0, 0);
        if (req === null) return;
        req.upgrade = { start: 0, length: this.remoteLength };
        req.manifest = !this.core.header.manifest;
        f.inflight.push(req);
        this._send(req);
      }
      _requestForkRange(f) {
        if (f.fork !== this.remoteFork || f.batch.want === null) return false;
        if (this.replicator.pushOnly) return false;
        const end = Math.min(f.batch.want.end, this.remoteLength);
        if (end < f.batch.want.start) return false;
        const len = end - f.batch.want.start;
        const off = f.batch.want.start + Math.floor(Math.random() * len);
        for (let i = 0; i < len; i++) {
          let index = off + i;
          if (index >= end) index -= len;
          if (this._remoteHasBlock(index) === false) continue;
          const req = this._makeRequest(false, 0, 0);
          if (req === null) return false;
          req.hash = { index: 2 * index, nodes: f.batch.want.nodes };
          f.inflight.push(req);
          this._send(req);
          return true;
        }
        this._maybeWantAnyRange(f.batch.want.start, len, f);
        return false;
      }
      isActive() {
        if (this.paused || this.removed || this.core.header.frozen) return false;
        return true;
      }
      async _send(req) {
        const fork = this.core.state.fork;
        this.inflight++;
        this.replicator._inflight.add(req);
        if (req.upgrade !== null && req.fork === fork) {
          const u = this.replicator._addUpgrade();
          u.inflight.push(req);
        }
        try {
          if (req.block !== null && req.fork === fork) {
            req.block.nodes = await MerkleTree.missingNodes(
              this.core.state,
              2 * req.block.index,
              this.core.state.length
            );
            if (req.priority === PRIORITY.CANCELLED) return;
          }
          if (req.hash !== null && req.fork === fork && req.hash.nodes === 0) {
            req.hash.nodes = await MerkleTree.missingNodes(
              this.core.state,
              req.hash.index,
              this.core.state.length
            );
            if (req.priority === PRIORITY.CANCELLED) return;
            if (req.hash.nodes === 0 && (req.hash.index & 1) === 0) {
              this.inflight--;
              this.replicator._resolveHashLocally(this, req);
              return;
            }
          }
        } catch (err) {
          this.stream.destroy(err);
          return;
        }
        this.wireRequest.send(req);
        incrementTx(this.stats.wireRequest, this.replicator.stats.wireRequest);
      }
    };
    module2.exports = class Replicator {
      static Peer = Peer;
      // hack to be able to access Peer from outside this module
      constructor(core, {
        notDownloadingLinger = NOT_DOWNLOADING_SLACK,
        eagerUpgrade = true,
        allowFork = true,
        allowPush = false,
        alwaysLatestBlock = false,
        inflightRange = null
      } = {}) {
        this.core = core;
        this.eagerUpgrade = eagerUpgrade;
        this.allowFork = allowFork;
        this.allowPush = allowPush;
        this.ondownloading = null;
        this.peers = [];
        this.findingPeers = 0;
        this.destroyed = false;
        this.downloading = false;
        this.pushOnly = false;
        this.activeSessions = 0;
        this.hotswaps = new HotswapQueue();
        this.inflightRange = inflightRange || DEFAULT_MAX_INFLIGHT;
        this.stats = {
          wireSync: { tx: 0, rx: 0 },
          wireRequest: { tx: 0, rx: 0 },
          wireCancel: { tx: 0, rx: 0 },
          wireData: { tx: 0, rx: 0 },
          wireWant: { tx: 0, rx: 0 },
          wireUnwant: { tx: 0, rx: 0 },
          wireBitfield: { tx: 0, rx: 0 },
          wireRange: { tx: 0, rx: 0 },
          wireExtension: { tx: 0, rx: 0 },
          hotswaps: 0,
          invalidData: 0,
          invalidRequests: 0,
          backoffs: 0,
          notAvailableBackoffs: 0
        };
        this._attached = /* @__PURE__ */ new Set();
        this._inflight = new InflightTracker();
        this._blocks = new BlockTracker(this);
        this._hashes = new BlockTracker(this);
        this._alwaysLatestBlock = alwaysLatestBlock ? 1 : 0;
        this._queued = [];
        this._seeks = [];
        this._upgrade = null;
        this._reorgs = [];
        this._ranges = [];
        this._rxLock = new Mutex();
        this._txLock = new Mutex();
        this._hadPeers = false;
        this._active = 0;
        this._ifAvailable = 0;
        this._updatesPending = 0;
        this._applyingReorg = null;
        this._manifestPeer = null;
        this._notDownloadingLinger = notDownloadingLinger;
        this._notDownloadingTimer = null;
        const self = this;
        this._onstreamclose = onstreamclose;
        function onstreamclose() {
          self.detachFrom(this.userData);
        }
      }
      setInflightRange(min, max) {
        const def = this.inflightRange;
        this.inflightRange = [min, max];
        for (const peer of this.peers) {
          if (peer.inflightRange !== def) continue;
          peer.inflightRange = this.inflightRange;
        }
      }
      updateActivity(inc, session) {
        this.activeSessions += inc;
        this.setDownloading(this.activeSessions !== 0, session);
      }
      isDownloading() {
        return this.downloading || !this._inflight.idle;
      }
      async push(index) {
        const all = [];
        for (const peer of this.peers) {
          all.push(peer.push(index));
        }
        await Promise.all(all);
      }
      setAllowPush(allowPush) {
        if (allowPush === this.allowPush) return;
        this.allowPush = allowPush;
        for (const peer of this.peers) peer.sendSync();
      }
      isAllowingPush() {
        if (!this.allowPush) return false;
        if (this._notDownloadingTimer) return false;
        return this.downloading;
      }
      setPushOnly(pushOnly) {
        if (pushOnly === this.pushOnly) return;
        this.pushOnly = pushOnly;
      }
      setDownloading(downloading) {
        const allowPush = this.isAllowingPush();
        const linger = this._notDownloadingLinger;
        if (this._notDownloadingTimer) {
          clearTimeout(this._notDownloadingTimer);
          this._notDownloadingTimer = null;
        }
        if (this.destroyed) return;
        if (downloading || linger === 0) {
          if (!this._setDownloadingNow(downloading)) this.signalAllowPush(allowPush);
          return;
        }
        this._notDownloadingTimer = setTimeout(setNotDownloadingLater, linger, this);
        if (this._notDownloadingTimer.unref) this._notDownloadingTimer.unref();
        this.signalAllowPush(allowPush);
      }
      signalAllowPush(allowPush) {
        if (allowPush === this.isAllowingPush()) return;
        for (const peer of this.peers) peer.signalUpgrade();
      }
      _setDownloadingNow(downloading) {
        this._notDownloadingTimer = null;
        if (this.downloading === downloading) return false;
        this.downloading = downloading;
        if (!downloading && this.isDownloading()) return false;
        for (const peer of this.peers) peer.signalUpgrade();
        if (downloading) {
          for (const protomux of this._attached) {
            if (!protomux.stream.handshakeHash) continue;
            if (protomux.opened({ protocol: "hypercore/alpha", id: this.core.discoveryKey })) continue;
            this._makePeer(protomux, true);
          }
        } else {
          for (const peer of this.peers) peer.closeIfIdle();
        }
        if (this.ondownloading !== null && downloading) this.ondownloading();
        return true;
      }
      cork() {
        for (const peer of this.peers) peer.protomux.cork();
      }
      uncork() {
        for (const peer of this.peers) peer.protomux.uncork();
      }
      // Called externally when a range of new blocks has been processed/removed
      onhave(start, length, drop = false) {
        for (const peer of this.peers) peer.broadcastRange(start, length, drop);
      }
      // Called externally when a truncation upgrade has been processed
      ontruncate(newLength, truncated) {
        const notify = [];
        for (const blk of this._blocks) {
          if (blk.index < newLength) continue;
          notify.push(blk);
        }
        for (const blk of notify) {
          for (const r of blk.refs) {
            if (r.snapshot === false) continue;
            blk.detach(r, SNAPSHOT_NOT_AVAILABLE());
          }
        }
        for (const peer of this.peers) {
          peer.fullyDownloadedSignaled = Math.min(newLength, peer.fullyDownloadedSignaled);
          peer._unclearLocalRange(newLength, truncated);
        }
      }
      // Called externally when a upgrade has been processed
      onupgrade() {
        for (const peer of this.peers) peer.signalUpgrade();
        if (this._blocks.isEmpty() === false) this._resolveBlocksLocally();
        if (this._upgrade !== null) this._resolveUpgradeRequest(null);
        if (!this._blocks.isEmpty() || this._ranges.length !== 0 || this._seeks.length !== 0) {
          this._updateNonPrimary(true);
        }
      }
      // Called externally when a conflict has been detected and verified
      async onconflict() {
        const all = [];
        for (const peer of this.peers) {
          all.push(peer._onconflict());
        }
        await Promise.allSettled(all);
      }
      async applyPendingReorg() {
        if (this._applyingReorg !== null) {
          await this._applyingReorg;
          return true;
        }
        for (let i = this._reorgs.length - 1; i >= 0; i--) {
          const f = this._reorgs[i];
          if (f.batch !== null && f.batch.finished) {
            await this._applyReorg(f);
            return true;
          }
        }
        return false;
      }
      addUpgrade(session) {
        if (this._upgrade !== null) {
          const ref2 = this._upgrade.attach(session);
          this._checkUpgradeIfAvailable();
          return ref2;
        }
        const ref = this._addUpgrade().attach(session);
        this.updateAll();
        return ref;
      }
      addBlock(session, index, force) {
        const b = this._blocks.add(index, PRIORITY.HIGH, force);
        const ref = b.attach(session);
        this._queueBlock(b);
        this.updateAll();
        return ref;
      }
      addSeek(session, seeker) {
        const s = new SeekRequest(this, this._seeks, seeker);
        const ref = s.attach(session);
        this._seeks.push(s);
        this.updateAll();
        return ref;
      }
      addRange(session, {
        start = 0,
        end = -1,
        length = toLength(start, end),
        blocks = null,
        linear = false,
        ifAvailable = false
      } = {}) {
        if (blocks !== null) {
          start = 0;
          end = length = blocks.length;
        }
        const r = new RangeRequest(
          this,
          this._ranges,
          start,
          length === -1 ? -1 : start + length,
          linear,
          ifAvailable,
          blocks
        );
        const ref = r.attach(session);
        clampRange(this.core, r);
        if (r.end !== -1 && r.start >= r.end) {
          this._resolveRangeRequest(r);
          return ref;
        }
        this.updateAll();
        return ref;
      }
      cancel(ref) {
        ref.context.detach(ref, null);
      }
      static clearRequests(session, err) {
        if (session.length === 0) return;
        const updated = /* @__PURE__ */ new Set();
        while (session.length > 0) {
          const ref = session[session.length - 1];
          updated.add(ref.context.replicator);
          ref.context.detach(ref, err);
        }
        for (const replicator of updated) {
          replicator.updateAll();
        }
      }
      clearRequests(session, err = null) {
        let cleared = false;
        while (session.length > 0) {
          const ref = session[session.length - 1];
          ref.context.detach(ref, err);
          cleared = true;
        }
        if (cleared) this.updateAll();
      }
      _matchingRequest(req, data) {
        if (this.allowPush) {
          return true;
        }
        if (data.block !== null && (req.block === null || req.block.index !== data.block.index)) {
          return false;
        }
        if (data.hash !== null && (req.hash === null || req.hash.index !== data.hash.index)) {
          return false;
        }
        if (data.seek !== null && (req.seek === null || req.seek.bytes !== data.seek.bytes)) {
          return false;
        }
        if (data.upgrade !== null && req.upgrade === null) {
          return false;
        }
        return req.fork === data.fork;
      }
      _addUpgradeMaybe() {
        return this.eagerUpgrade === true ? this._addUpgrade() : this._upgrade;
      }
      // TODO: this function is OVER called atm, at each updatePeer/updateAll
      // instead its more efficient to only call it when the conditions in here change - ie on sync/add/remove peer
      // Do this when we have more tests.
      _checkUpgradeIfAvailable() {
        if (this._ifAvailable > 0 && this.peers.length < MAX_PEERS_UPGRADE) return;
        if (this._upgrade === null || this._upgrade.refs.length === 0) return;
        if (this._hadPeers === false && this.findingPeers > 0) return;
        const maxPeers = Math.min(this.peers.length, MAX_PEERS_UPGRADE);
        for (let i = 0; i < maxPeers; i++) {
          const peer = this.peers[i];
          if (peer.remoteSynced === false) return;
          if (this.core.state.length === 0 && peer.remoteLength > 0) return;
          if (peer.remoteLength <= this._upgrade.length || peer.remoteFork !== this._upgrade.fork) {
            continue;
          }
          if (peer.syncsProcessing > 0) return;
          if (peer.lengthAcked !== this.core.state.length && peer.remoteFork === this.core.state.fork) {
            return;
          }
          if (peer.remoteCanUpgrade === true) return;
        }
        if (this._applyingReorg !== null) return;
        for (let i = 0; i < this._reorgs.length; i++) {
          const r = this._reorgs[i];
          if (r.inflight.length > 0) return;
        }
        if (this._upgrade.inflight.length > 0) return;
        const u = this._upgrade;
        this._upgrade = null;
        u.resolve(false);
      }
      _addUpgrade() {
        if (this._upgrade !== null) return this._upgrade;
        this._upgrade = new UpgradeRequest(this, this.core.state.fork, this.core.state.length);
        return this._upgrade;
      }
      _addReorg(fork, peer) {
        if (this.allowFork === false) return null;
        for (const f2 of this._reorgs) {
          if (f2.fork > fork && f2.batch !== null) return null;
          if (f2.fork === fork) return f2;
        }
        const f = new ForkRequest(this, fork);
        this._reorgs.push(f);
        let i = this._reorgs.length - 1;
        while (i > 0 && this._reorgs[i - 1].fork > fork) {
          this._reorgs[i] = this._reorgs[i - 1];
          this._reorgs[--i] = f;
        }
        return f;
      }
      _shouldUpgrade(peer) {
        if (this._upgrade !== null && this._upgrade.inflight.length > 0) return false;
        return peer.remoteCanUpgrade === true && peer.remoteLength > this.core.state.length && peer.lengthAcked === this.core.state.length;
      }
      _autoUpgrade(peer) {
        return this._upgrade !== null && peer.remoteFork === this.core.state.fork && this._shouldUpgrade(peer);
      }
      _addPeer(peer) {
        this._hadPeers = true;
        this.peers.push(peer);
        this.updatePeer(peer);
        this._onpeerupdate(true, peer);
      }
      _requestDone(id, roundtrip) {
        this._inflight.remove(id, roundtrip);
        if (this.isDownloading() === true) return;
        for (const peer of this.peers) peer.signalUpgrade();
      }
      _removePeer(peer) {
        this.peers.splice(this.peers.indexOf(peer), 1);
        peer.wants.destroy();
        if (this._manifestPeer === peer) this._manifestPeer = null;
        for (const req of this._inflight) {
          if (req.peer !== peer) continue;
          this._inflight.remove(req.id, true);
          this._clearRequest(peer, req);
        }
        this._onpeerupdate(false, peer);
        this.updateAll();
      }
      _queueBlock(b) {
        if (b.inflight.length > 0 || b.queued === true) return;
        b.queued = true;
        this._queued.push(b);
      }
      _resolveHashLocally(peer, req) {
        this._requestDone(req.id, false);
        this._resolveBlockRequest(this._hashes, req.hash.index / 2, null, req);
        this.updatePeer(peer);
      }
      // Runs in the background - not allowed to throw
      async _resolveBlocksLocally() {
        const clear = [];
        const blocks = [];
        const reader = this.core.storage.read();
        for (const b of this._blocks) {
          if (this.core.bitfield.get(b.index) === false) continue;
          blocks.push(this._resolveLocalBlock(b, reader, clear));
        }
        reader.tryFlush();
        await Promise.all(blocks);
        if (!clear.length) return;
        for (const b of clear) {
          this._blocks.remove(b.index);
          removeHotswap(b);
        }
      }
      async _resolveLocalBlock(b, reader, resolved) {
        try {
          b.resolve(await reader.getBlock(b.index));
        } catch (err) {
          b.reject(err);
          return;
        }
        resolved.push(b);
      }
      _resolveBlockRequest(tracker, index, value, req) {
        const b = tracker.remove(index);
        if (b === null) return false;
        removeInflight(b.inflight, req);
        removeHotswap(b);
        b.queued = false;
        b.resolve(value);
        if (b.inflight.length > 0) {
          for (let i = b.inflight.length - 1; i >= 0; i--) {
            const req2 = b.inflight[i];
            req2.peer._cancelRequest(req2);
          }
        }
        return true;
      }
      _resolveUpgradeRequest(req) {
        if (req !== null) removeInflight(this._upgrade.inflight, req);
        if (this.core.state.length === this._upgrade.length && this.core.state.fork === this._upgrade.fork) {
          return false;
        }
        const u = this._upgrade;
        this._upgrade = null;
        u.resolve(true);
        return true;
      }
      _resolveRangeRequest(req) {
        req.resolve(true);
        req.gc();
      }
      _clearInflightBlock(tracker, req) {
        const isBlock = tracker === this._blocks;
        const index = isBlock === true ? req.block.index : req.hash.index / 2;
        const b = tracker.get(index);
        if (b === null || removeInflight(b.inflight, req) === false) return;
        if (removeHotswap(b) === true && b.inflight.length > 0) {
          this.hotswaps.add(b);
        }
        if (b.refs.length > 0 && isBlock === true) {
          this._queueBlock(b);
          return;
        }
        b.gc();
      }
      _clearInflightUpgrade(req) {
        if (this._upgrade === null || removeInflight(this._upgrade.inflight, req) === false) return;
        this._upgrade.gc();
      }
      _clearInflightSeeks(req) {
        for (const s of this._seeks) {
          if (removeInflight(s.inflight, req) === false) continue;
          s.gc();
        }
      }
      _clearInflightReorgs(req) {
        for (const r of this._reorgs) {
          removeInflight(r.inflight, req);
        }
      }
      _clearOldReorgs(fork) {
        for (let i = 0; i < this._reorgs.length; i++) {
          const f = this._reorgs[i];
          if (f.fork >= fork) continue;
          if (i === this._reorgs.length - 1) this._reorgs.pop();
          else this._reorgs[i] = this._reorgs.pop();
          i--;
        }
      }
      // "slow" updates here - async but not allowed to ever throw
      async _updateNonPrimary(updateAll) {
        while (++this._updatesPending === 1) {
          let len = Math.min(MAX_RANGES, this._ranges.length);
          for (let i = 0; i < len; i++) {
            const r = this._ranges[i];
            clampRange(this.core, r);
            if (r.end !== -1 && r.start >= r.end) {
              this._resolveRangeRequest(r);
              i--;
              if (len > this._ranges.length) len--;
              if (this._ranges.length === MAX_RANGES) updateAll = true;
            }
          }
          for (let i = 0; i < this._seeks.length; i++) {
            const s = this._seeks[i];
            let err = null;
            let res = null;
            try {
              res = await s.seeker.update();
            } catch (error) {
              err = error;
            }
            if (!res && !err) continue;
            if (i < this._seeks.length - 1) this._seeks[i] = this._seeks.pop();
            else this._seeks.pop();
            i--;
            if (err) s.reject(err);
            else s.resolve(res);
          }
          if (--this._updatesPending === 0) break;
          this._updatesPending = 0;
        }
        if (this._inflight.idle || updateAll) this.updateAll();
      }
      _maybeResolveIfAvailableRanges() {
        if (this._ifAvailable > 0 || !this._inflight.idle || !this._ranges.length) return;
        for (let i = 0; i < this.peers.length; i++) {
          if (this.peers[i].dataProcessing > 0) return;
        }
        for (let i = 0; i < this._ranges.length; i++) {
          const r = this._ranges[i];
          if (r.ifAvailable) {
            this._resolveRangeRequest(r);
            i--;
          }
        }
      }
      _clearRequest(peer, req) {
        if (req.block !== null) {
          this._clearInflightBlock(this._blocks, req);
          this._unmarkInflight(req.block.index);
        }
        if (req.hash !== null) {
          this._clearInflightBlock(this._hashes, req);
        }
        if (req.upgrade !== null && this._upgrade !== null) {
          this._clearInflightUpgrade(req);
        }
        if (this._seeks.length > 0) {
          this._clearInflightSeeks(req);
        }
        if (this._reorgs.length > 0) {
          this._clearInflightReorgs(req);
        }
      }
      _onnodata(peer, req, reason) {
        if (reason === NOT_AVAILABLE) {
          peer.stats.notAvailableBackoffs++;
          this.stats.notAvailableBackoffs++;
          if (peer.stats.notAvailableBackoffs >= MAX_BACKOFFS) {
            peer.paused = true;
          }
        }
        if (reason === INVALID_REQUEST) {
          peer.stats.backoffs++;
          this.stats.backoffs++;
          if (peer.stats.backoffs >= MAX_BACKOFFS) {
            peer.paused = true;
          }
        }
        if (req) {
          this._clearRequest(peer, req);
        }
        this.updateAll();
      }
      _openSkipBitfield() {
        const bitfield = this.core.openSkipBitfield();
        for (const req of this._inflight) {
          if (req.block) bitfield.set(req.block.index, true);
        }
      }
      _markProcessing(index) {
        const b = this._blocks.get(index);
        if (b) {
          b.processing = true;
          return;
        }
        const h = this._hashes.get(index);
        if (h) h.processing = true;
      }
      _markProcessed(index) {
        const b = this._blocks.get(index);
        if (b) return b.processed();
        const h = this._hashes.get(index);
        if (h) h.processed();
      }
      _markInflight(index) {
        if (this.core.skipBitfield !== null) this.core.skipBitfield.set(index, true);
        for (const peer of this.peers) peer._markInflight(index);
      }
      _unmarkInflight(index) {
        if (this.core.skipBitfield !== null) {
          this.core.skipBitfield.set(index, this.core.bitfield.get(index));
        }
        for (const peer of this.peers) peer._resetMissingBlock(index);
      }
      _ondata(peer, req, data) {
        if (req) {
          req.elapsed = Date.now() - req.timestamp;
        }
        if (data.block !== null) {
          this._resolveBlockRequest(this._blocks, data.block.index, data.block.value, req);
          this._ondownload(data.block.index, data.block.value.byteLength, peer, req);
        }
        if (data.hash !== null && (data.hash.index & 1) === 0) {
          this._resolveBlockRequest(this._hashes, data.hash.index / 2, null, req);
        }
        if (this._upgrade !== null) {
          this._resolveUpgradeRequest(req);
        }
        if (this._seeks.length > 0) {
          this._clearInflightSeeks(req);
        }
        if (this._reorgs.length > 0) {
          this._clearInflightReorgs(req);
        }
        if (this._manifestPeer === peer && this.core.header.manifest !== null) {
          this._manifestPeer = null;
        }
        if (this._seeks.length > 0 || this._ranges.length > 0) {
          this._updateNonPrimary(this._seeks.length > 0);
        }
        this.updatePeer(peer);
      }
      _onwant(peer, start, length, any) {
        if (!peer.isActive()) return;
        const contig = Math.min(this.core.state.length, this.core.header.hints.contiguousLength);
        if (start + length < contig || this.core.state.length === contig || any && start < contig) {
          peer.wireRange.send({
            drop: false,
            start: 0,
            length: contig
          });
          incrementTx(peer.stats.wireRange, this.stats.wireRange);
          return;
        }
        length = Math.min(length, this.core.state.length - start);
        if (any) {
          const bit = this.core.bitfield.firstSet(start);
          if (bit > -1 && bit < start + length) {
            peer.wireRange.send({
              drop: false,
              start: bit,
              length: 1
            });
          }
          return;
        }
        for (const msg of this.core.bitfield.want(start, length)) {
          peer.wireBitfield.send(msg);
          incrementTx(peer.stats.wireBitfield, this.stats.wireBitfield);
        }
      }
      async _onreorgdata(peer, req, data) {
        const newBatch = data.upgrade && await this.core.verifyReorg(data);
        const f = this._addReorg(data.fork, peer);
        if (f === null) {
          this.updateAll();
          return;
        }
        removeInflight(f.inflight, req);
        if (f.batch) {
          await f.batch.update(data);
        } else if (data.upgrade) {
          f.batch = newBatch;
          this._clearOldReorgs(f.fork);
        }
        if (f.batch && f.batch.finished) {
          if (this._addUpgradeMaybe() !== null) {
            await this._applyReorg(f);
          }
        }
        this.updateAll();
      }
      // Never throws, allowed to run in the background
      async _applyReorg(f) {
        const u = this._upgrade;
        const old = this._reorgs;
        this._reorgs = [];
        this._applyingReorg = this.core.reorg(f.batch, null);
        try {
          await this._applyingReorg;
        } catch (err) {
          this._upgrade = null;
          u.reject(err);
        }
        this._applyingReorg = null;
        if (this._upgrade !== null) {
          this._resolveUpgradeRequest(null);
        }
        for (const peer of this.peers) this._updateFork(peer);
        for (const r of this._ranges) {
          r.start = r.userStart;
          r.end = r.userEnd;
        }
        for (const f2 of old) f2.resolve();
        f.resolve();
        this.updateAll();
      }
      _maybeUpdate() {
        return this._upgrade !== null && this._upgrade.inflight.length === 0;
      }
      _maybeRequestManifest() {
        return this.core.header.manifest === null && this._manifestPeer === null;
      }
      _updateFork(peer) {
        if (this._applyingReorg !== null || this.allowFork === false || peer.remoteFork <= this.core.state.fork) {
          return false;
        }
        const f = this._addReorg(peer.remoteFork, peer);
        if (f !== null && f.batch === null && f.inflight.length === 0) {
          return peer._requestForkProof(f);
        }
        return false;
      }
      _updateHotswap(peer) {
        const maxHotswaps = peer.getMaxHotswapInflight();
        if (!peer.isActive() || peer.inflight >= maxHotswaps) return;
        for (const b of this.hotswaps.pick(peer)) {
          if (peer._requestBlock(b) === false) continue;
          peer.stats.hotswaps++;
          peer.replicator.stats.hotswaps++;
          if (peer.inflight >= maxHotswaps) break;
        }
      }
      _updatePeer(peer) {
        if (!peer.isActive() || peer.inflight >= peer.getMaxInflight() || !peer.remoteUploading) {
          return false;
        }
        if (this._maybeRequestManifest() === true && peer.remoteLength === 0 && peer.remoteHasManifest === true) {
          this._manifestPeer = peer;
          peer._requestManifest();
        }
        for (const s of this._seeks) {
          if (s.inflight.length > 0) continue;
          if (peer._requestSeek(s) === true) {
            return true;
          }
        }
        const blks = new RandomIterator(this._queued);
        for (const b of blks) {
          if (b.queued === false || peer._requestBlock(b) === true) {
            b.queued = false;
            blks.dequeue();
            return true;
          }
        }
        return false;
      }
      _updatePeerNonPrimary(peer) {
        if (!peer.isActive() || peer.inflight >= peer.getMaxInflight() || !peer.remoteUploading) {
          return false;
        }
        const ranges = new RandomIterator(this._ranges);
        let tried = 0;
        for (const r of ranges) {
          if (peer._requestRange(r) === true) {
            return true;
          }
          if (++tried >= MAX_RANGES) break;
        }
        for (let i = this._reorgs.length - 1; i >= 0; i--) {
          const f = this._reorgs[i];
          if (f.batch !== null && f.inflight.length === 0 && peer._requestForkRange(f) === true) {
            return true;
          }
        }
        if (this._maybeUpdate() === true && peer._requestUpgrade(this._upgrade) === true) {
          return true;
        }
        return false;
      }
      updatePeer(peer) {
        if (this._applyingReorg !== null) return;
        while (this._updatePeer(peer) === true) ;
        while (this._updatePeerNonPrimary(peer) === true) ;
        if (this.peers.length > 1 && this._blocks.isEmpty() === false) {
          this._updateHotswap(peer);
        }
        this._checkUpgradeIfAvailable();
        this._maybeResolveIfAvailableRanges();
      }
      updateAll() {
        if (this._applyingReorg !== null) return;
        const peers = new RandomIterator(this.peers);
        for (const peer of peers) {
          if (this._updatePeer(peer) === true) {
            peers.requeue();
          }
        }
        if (this._maybeUpdate() === false && this._ranges.length === 0 && this._reorgs.length === 0) {
          this._checkUpgradeIfAvailable();
          return;
        }
        for (const peer of peers.restart()) {
          if (this._updatePeerNonPrimary(peer) === true) {
            peers.requeue();
          }
        }
        this._checkUpgradeIfAvailable();
        this._maybeResolveIfAvailableRanges();
      }
      onpeerdestroy() {
        if (--this._active === 0) this.core.checkIfIdle();
      }
      attached(protomux) {
        return this._attached.has(protomux);
      }
      attachTo(protomux) {
        if (this.core.closed) return;
        const makePeer = this._makePeer.bind(this, protomux);
        this._attached.add(protomux);
        protomux.pair({ protocol: "hypercore/alpha", id: this.core.discoveryKey }, makePeer);
        protomux.stream.setMaxListeners(0);
        protomux.stream.on("close", this._onstreamclose);
        this._ifAvailable++;
        this._active++;
        protomux.stream.opened.then((opened) => {
          this._ifAvailable--;
          this._active--;
          if (opened && !this.destroyed) makePeer();
          this._checkUpgradeIfAvailable();
          this.core.checkIfIdle();
        });
      }
      detachFrom(protomux) {
        if (this._attached.delete(protomux)) {
          protomux.stream.removeListener("close", this._onstreamclose);
          protomux.unpair({ protocol: "hypercore/alpha", id: this.core.discoveryKey });
        }
      }
      idle() {
        return this.peers.length === 0 && this._active === 0;
      }
      close() {
        const waiting = [];
        for (const peer of this.peers) {
          waiting.push(peer.channel.fullyClosed());
        }
        this.destroy();
        return Promise.all(waiting);
      }
      destroy() {
        if (this.destroyed) return;
        this.destroyed = true;
        if (this._notDownloadingTimer) {
          clearTimeout(this._notDownloadingTimer);
          this._notDownloadingTimer = null;
        }
        while (this.peers.length) {
          const peer = this.peers[this.peers.length - 1];
          this.detachFrom(peer.protomux);
          peer.channel.close();
        }
        for (const protomux of this._attached) {
          this.detachFrom(protomux);
        }
      }
      _makePeer(protomux) {
        const replicator = this;
        if (protomux.opened({ protocol: "hypercore/alpha", id: this.core.discoveryKey })) {
          return onnochannel();
        }
        const channel = protomux.createChannel({
          userData: null,
          protocol: "hypercore/alpha",
          aliases: ["hypercore"],
          id: this.core.discoveryKey,
          handshake: m.wire.handshake,
          messages: [
            { encoding: m.wire.sync, onmessage: onwiresync },
            { encoding: m.wire.request, onmessage: onwirerequest },
            { encoding: m.wire.cancel, onmessage: onwirecancel },
            { encoding: m.wire.data, onmessage: onwiredata },
            { encoding: m.wire.noData, onmessage: onwirenodata },
            { encoding: m.wire.want, onmessage: onwirewant },
            { encoding: m.wire.unwant, onmessage: onwireunwant },
            { encoding: m.wire.bitfield, onmessage: onwirebitfield },
            { encoding: m.wire.range, onmessage: onwirerange },
            { encoding: m.wire.extension, onmessage: onwireextension }
          ],
          onopen: onwireopen,
          onclose: onwireclose,
          ondrain: onwiredrain,
          ondestroy: onwiredestroy
        });
        if (channel === null) return onnochannel();
        const peer = new Peer(replicator, protomux, channel, this.inflightRange);
        const stream = protomux.stream;
        peer.channel.open({
          seeks: true,
          capability: caps.replicate(stream.isInitiator, this.core.key, stream.handshakeHash)
        });
        return true;
        function onnochannel() {
          return false;
        }
      }
      _onpeerupdate(added, peer) {
        const name = added ? "peer-add" : "peer-remove";
        const sessions = this.core.monitors;
        for (let i = sessions.length - 1; i >= 0; i--) {
          sessions[i].emit(name, peer);
          if (added) {
            for (const ext of sessions[i].extensions.values()) {
              peer.extensions.set(ext.name, ext);
            }
          }
        }
      }
      _ondownload(index, byteLength, from, req) {
        const sessions = this.core.monitors;
        for (let i = sessions.length - 1; i >= 0; i--) {
          const s = sessions[i];
          s.emit("download", index, byteLength - s.padding, from, req);
        }
      }
      _onupload(index, byteLength, from) {
        const sessions = this.core.monitors;
        for (let i = sessions.length - 1; i >= 0; i--) {
          const s = sessions[i];
          s.emit("upload", index, byteLength - s.padding, from);
        }
      }
      _oninvaliddata(err, req, res, from) {
        const sessions = this.core.monitors;
        this.stats.invalidData++;
        from.stats.invalidData++;
        for (let i = 0; i < sessions.length; i++) {
          sessions[i].emit("verification-error", err, req, res, from);
        }
      }
      _oninvalidrequest(err, req, from) {
        const sessions = this.core.monitors;
        from.stats.invalidRequests++;
        this.stats.invalidRequests++;
        for (let i = 0; i < sessions.length; i++) {
          sessions[i].emit("invalid-request", err, req, from);
        }
      }
    };
    function removeHotswap(block) {
      if (block.hotswap === null) return false;
      block.hotswap.ref.remove(block);
      return true;
    }
    function removeInflight(inf, req) {
      const i = inf.indexOf(req);
      if (i === -1) return false;
      if (i < inf.length - 1) inf[i] = inf.pop();
      else inf.pop();
      return true;
    }
    function toLength(start, end) {
      return end === -1 ? -1 : end < start ? 0 : end - start;
    }
    function clampRange(core, r) {
      if (r.blocks === null) {
        const start = core.bitfield.firstUnset(r.start);
        if (r.end === -1) r.start = start === -1 ? core.state.length : start;
        else if (start === -1 || start >= r.end) r.start = r.end;
        else {
          r.start = start;
          const end = core.bitfield.lastUnset(r.end - 1);
          if (end === -1 || start >= end + 1) r.end = r.start;
          else r.end = end + 1;
        }
      } else {
        while (r.start < r.end && core.bitfield.get(r.blocks[r.start])) r.start++;
        while (r.start < r.end && core.bitfield.get(r.blocks[r.end - 1])) r.end--;
      }
    }
    function onrequesttimeout(req) {
      if (req.context) req.context.detach(req, REQUEST_TIMEOUT());
    }
    function destroyRequestTimeout(req) {
      if (req.timeout !== null) {
        clearTimeout(req.timeout);
        req.timeout = null;
      }
    }
    function isCriticalError(err) {
      return err.name === "HypercoreError";
    }
    function onwireopen(m2, c4) {
      return c4.userData.onopen(m2);
    }
    function onwireclose(isRemote, c4) {
      return c4.userData.onclose(isRemote);
    }
    function onwiredestroy(c4) {
      c4.userData.replicator.onpeerdestroy();
    }
    function onwiredrain(c4) {
      return c4.userData.ondrain();
    }
    function onwiresync(m2, c4) {
      incrementRx(c4.userData.stats.wireSync, c4.userData.replicator.stats.wireSync);
      return c4.userData.onsync(m2);
    }
    function onwirerequest(m2, c4) {
      incrementRx(c4.userData.stats.wireRequest, c4.userData.replicator.stats.wireRequest);
      return c4.userData.onrequest(m2);
    }
    function onwirecancel(m2, c4) {
      incrementRx(c4.userData.stats.wireCancel, c4.userData.replicator.stats.wireCancel);
      return c4.userData.oncancel(m2);
    }
    function onwiredata(m2, c4) {
      incrementRx(c4.userData.stats.wireData, c4.userData.replicator.stats.wireData);
      return c4.userData.ondata(m2);
    }
    function onwirenodata(m2, c4) {
      return c4.userData.onnodata(m2);
    }
    function onwirewant(m2, c4) {
      incrementRx(c4.userData.stats.wireWant, c4.userData.replicator.stats.wireWant);
      return c4.userData.onwant(m2);
    }
    function onwireunwant(m2, c4) {
      return c4.userData.onunwant(m2);
    }
    function onwirebitfield(m2, c4) {
      incrementRx(c4.userData.stats.wireBitfield, c4.userData.replicator.stats.wireBitfield);
      return c4.userData.onbitfield(m2);
    }
    function onwirerange(m2, c4) {
      incrementRx(c4.userData.stats.wireRange, c4.userData.replicator.stats.wireRange);
      return c4.userData.onrange(m2);
    }
    function onwireextension(m2, c4) {
      incrementRx(c4.userData.stats.wireExtension, c4.userData.replicator.stats.wireExtension);
      return c4.userData.onextension(m2);
    }
    function setNotDownloadingLater(repl, session) {
      repl._setDownloadingNow(false, session);
    }
    function isBlockRequest(req) {
      return req !== null && req.block !== null;
    }
    function isUpgradeRequest(req) {
      return req !== null && req.upgrade !== null;
    }
    function incrementTx(stats1, stats2) {
      stats1.tx++;
      stats2.tx++;
    }
    function incrementRx(stats1, stats2) {
      stats1.rx++;
      stats2.rx++;
    }
    function noop() {
    }
    function backoff(times) {
      const sleep = times < 2 ? 200 : times < 5 ? 500 : times < 40 ? 1e3 : 5e3;
      return new Promise((resolve) => setTimeout(resolve, sleep));
    }
  }
});

// node_modules/hypercore/lib/core.js
var require_core = __commonJS({
  "node_modules/hypercore/lib/core.js"(exports2, module2) {
    var crypto = require_hypercore_crypto();
    var b4a4 = require_b4a();
    var unslab = require_unslab();
    var z322 = require_z32();
    var Mutex = require_mutex();
    var { MerkleTree, ReorgBatch } = require_merkle_tree();
    var BitInterlude = require_bit_interlude();
    var Bitfield = require_bitfield();
    var RemoteBitfield = require_remote_bitfield();
    var {
      BAD_ARGUMENT,
      STORAGE_EMPTY,
      STORAGE_CONFLICT,
      INVALID_SIGNATURE,
      INVALID_CHECKSUM
    } = require_hypercore_errors();
    var Verifier = require_verifier();
    var audit = require_audit();
    var copyPrologue = require_copy_prologue();
    var SessionState = require_session_state();
    var Replicator = require_replicator();
    module2.exports = class Core {
      constructor(db, opts = {}) {
        this.db = db;
        this.storage = null;
        this.replicator = new Replicator(this, opts);
        this.sessionStates = [];
        this.monitors = [];
        this.activeSessions = 0;
        this.gc = 0;
        this.id = opts.key ? z322.encode(opts.key) : null;
        this.key = opts.key || null;
        this.discoveryKey = opts.discoveryKey || opts.key && crypto.discoveryKey(opts.key) || null;
        this.manifest = null;
        this.opening = null;
        this.closing = null;
        this.exclusive = null;
        this.preupdate = null;
        this.header = null;
        this.compat = false;
        this.bitfield = null;
        this.verifier = null;
        this.truncating = 0;
        this.skipBitfield = null;
        this.globalCache = opts.globalCache || null;
        this.autoClose = opts.autoClose !== false;
        this.onidle = noop;
        this.state = null;
        this.opened = false;
        this.destroyed = false;
        this.closed = false;
        this.hintsChanged = false;
        this.remoteContiguousLengthChanged = false;
        this._bitfield = null;
        this._verifies = null;
        this._verifiesFlushed = null;
        this._legacy = !!opts.legacy;
        this._repairMode = false;
        this.opening = this._open(opts);
        this.opening.catch(noop);
      }
      static setRecoveryPeers(peers) {
        SessionState.RECOVERY_PEERS = peers;
      }
      ready() {
        return this.opening;
      }
      addMonitor(s) {
        if (s._monitorIndex >= 0) return;
        s._monitorIndex = this.monitors.push(s) - 1;
      }
      removeMonitor(s) {
        if (s._monitorIndex < 0) return;
        const head = this.monitors.pop();
        if (head !== s) this.monitors[head._monitorIndex = s._monitorIndex] = head;
        s._monitorIndex = -1;
      }
      emitRemoteContiguousLength() {
        if (!this.remoteContiguousLengthChanged) return;
        this.remoteContiguousLengthChanged = false;
        const length = this.header.hints.remoteContiguousLength;
        for (let i = this.monitors.length - 1; i >= 0; i--) {
          this.monitors[i].emit("remote-contiguous-length", length);
        }
      }
      emitManifest() {
        for (let i = this.monitors.length - 1; i >= 0; i--) {
          this.monitors[i].emit("manifest");
        }
      }
      createUserDataStream(opts, session = this.state) {
        return session.storage.createUserDataStream(opts);
      }
      allSessions() {
        const sessions = [];
        for (const state of this.sessionStates) {
          if (state.sessions.length) sessions.push(...state.sessions);
        }
        return sessions;
      }
      hasSession() {
        return this.activeSessions !== 0;
      }
      compact() {
        const compacting = [];
        for (const s of this.sessionStates) {
          compacting.push(s.storage.compact());
        }
        return Promise.all(compacting);
      }
      checkIfIdle() {
        if (!this.opened || this.destroyed === true || this.hasSession() === true) return;
        if (this.replicator.idle() === false) return;
        if (this.state === null || this.state.mutex.idle() === false) return;
        this.onidle();
      }
      async lockExclusive() {
        if (this.exclusive === null) this.exclusive = new Mutex();
        await this.exclusive.lock();
      }
      unlockExclusive() {
        if (this.exclusive !== null) this.exclusive.unlock();
      }
      async _open(opts) {
        try {
          await this._tryOpen(opts);
        } catch (err) {
          this.onidle();
          throw err;
        }
        this.opened = true;
      }
      async _tryOpen(opts) {
        if (opts.preopen) await opts.preopen;
        let storage = await this.db.resumeCore(this.discoveryKey);
        let overwrite = opts.overwrite === true;
        const force = opts.force === true;
        const createIfMissing = opts.createIfMissing !== false;
        const legacy = !!opts.legacy;
        let compat = opts.compat === true || opts.compat !== false && !opts.manifest;
        let header = storage ? parseHeader(await getCoreInfo(storage)) : null;
        const hadManifest = !!header && !!header.manifest && !!header.key;
        const hadKeyPair = !!header && !!header.keyPair;
        if (force && opts.key && header && !b4a4.equals(header.key, opts.key)) {
          overwrite = true;
        }
        if (!header && opts.discoveryKey && !(opts.key || opts.manifest)) {
          throw STORAGE_EMPTY("No Hypercore is stored here", this.discoveryKey);
        }
        if (!header || overwrite) {
          if (!createIfMissing) {
            throw STORAGE_EMPTY("No Hypercore is stored here", this.discoveryKey);
          }
          if (compat) {
            if (opts.key && opts.keyPair && !b4a4.equals(opts.key, opts.keyPair.publicKey)) {
              throw BAD_ARGUMENT("Key must match publicKey when in compat mode", this.discoveryKey);
            }
          }
          const keyPair = opts.keyPair || (opts.key ? null : crypto.keyPair());
          const defaultManifest = !opts.manifest && (!!opts.compat || !opts.key || !!(keyPair && b4a4.equals(opts.key, keyPair.publicKey)));
          const manifest = defaultManifest ? Verifier.defaultSignerManifest(opts.key || keyPair.publicKey) : Verifier.createManifest(opts.manifest);
          header = {
            key: opts.key || (compat ? manifest.signers[0].publicKey : Verifier.manifestHash(manifest)),
            manifest,
            keyPair: keyPair ? { publicKey: keyPair.publicKey, secretKey: keyPair.secretKey || null } : null,
            frozen: false,
            tree: {
              fork: 0,
              length: 0,
              rootHash: null,
              signature: null
            },
            hints: {
              reorgs: [],
              contiguousLength: 0,
              remoteContiguousLength: 0,
              recovering: 0
            }
          };
          const discoveryKey = opts.discoveryKey || crypto.discoveryKey(header.key);
          storage = await this.db.createCore({
            key: header.key,
            manifest,
            keyPair,
            frozen: false,
            discoveryKey,
            userData: opts.userData || [],
            alias: opts.alias || null
          });
        }
        header.key = unslab(header.key);
        if (header.tree) {
          header.tree.rootHash = unslab(header.tree.rootHash);
          header.tree.signature = unslab(header.tree.signature);
        }
        if (header.keyPair) {
          header.keyPair.publicKey = unslab(header.keyPair.publicKey);
          header.keyPair.secretKey = unslab(header.keyPair.secretKey);
        }
        if (header.keyPair) {
          header.keyPair.publicKey = unslab(header.keyPair.publicKey);
          header.keyPair.secretKey = unslab(header.keyPair.secretKey);
        }
        if (opts.manifest) {
          if (!opts.key && !Verifier.isValidManifest(header.key, Verifier.createManifest(opts.manifest))) {
            throw STORAGE_CONFLICT("Manifest does not hash to provided key", this.discoveryKey);
          }
          if (!header.manifest) header.manifest = opts.manifest;
        }
        if (opts.key && !b4a4.equals(header.key, opts.key)) {
          throw STORAGE_CONFLICT("Another Hypercore is stored here", this.discoveryKey);
        }
        if (compat && header.manifest && !Verifier.isCompat(header.key, header.manifest)) {
          compat = false;
        } else if (!compat && header.manifest && Verifier.isCompat(header.key, header.manifest)) {
          compat = true;
        }
        const prologue = header.manifest ? header.manifest.prologue : null;
        const bitfield = await Bitfield.open(storage, header.tree.length);
        const treeInfo = {
          fork: header.tree.fork,
          length: header.tree.length,
          signature: header.tree.signature,
          roots: await maybeGetRootsFromStorage(storage, header.tree.length),
          prologue
        };
        this._repairMode = !treeInfo.roots.length && treeInfo.length && !overwrite;
        if (this._repairMode) {
          this.replicator.setPushOnly(true);
        }
        if (overwrite) {
          const tx = storage.write();
          tx.deleteTreeNodeRange(0, -1);
          tx.deleteBlockRange(0, -1);
          bitfield.clear(tx);
          await tx.flush();
        }
        const len = bitfield.findFirst(false, header.hints.contiguousLength);
        if (header.hints.contiguousLength !== len && !storage.readOnly) {
          header.hints.contiguousLength = len;
          const tx = storage.write();
          tx.setHints(header.hints);
          await tx.flush();
        }
        if (header.manifest) {
          header.manifest = Verifier.createManifest(header.manifest);
          if (!hadManifest || header.keyPair && !hadKeyPair) {
            const tx = storage.write();
            tx.setAuth({
              key: header.key,
              discoveryKey: crypto.discoveryKey(header.key),
              manifest: header.manifest,
              keyPair: header.keyPair
            });
            await tx.flush();
          }
        }
        const verifier = header.manifest ? new Verifier(header.key, header.manifest, { crypto, legacy }) : null;
        this.storage = storage;
        this.header = header;
        this.compat = compat;
        this.bitfield = bitfield;
        this.verifier = verifier;
        this.state = new SessionState(this, null, storage, treeInfo, null);
        if (this.key === null) this.key = this.header.key;
        if (this.discoveryKey === null) this.discoveryKey = crypto.discoveryKey(this.key);
        if (this.id === null) this.id = z322.encode(this.key);
        if (this.manifest === null) this.manifest = this.header.manifest;
      }
      async audit(opts) {
        await this.state.mutex.lock();
        try {
          return await audit(this, opts);
        } finally {
          this.state._unlock();
        }
      }
      async setManifest(manifest) {
        await this.state.mutex.lock();
        try {
          if (manifest && this.header.manifest === null) {
            if (!Verifier.isValidManifest(this.header.key, manifest)) {
              throw INVALID_CHECKSUM("Manifest hash does not match", this.discoveryKey);
            }
            const tx = this.state.createWriteBatch();
            this._setManifest(tx, Verifier.createManifest(manifest), null);
            await this.state.flush();
          }
        } finally {
          this.state._unlock();
        }
      }
      _setManifest(tx, manifest, keyPair) {
        if (!manifest && b4a4.equals(keyPair.publicKey, this.header.key)) {
          manifest = Verifier.defaultSignerManifest(this.header.key);
        }
        if (!manifest) return;
        const verifier = new Verifier(this.header.key, manifest, { legacy: this._legacy });
        if (verifier.prologue) this.state.prologue = Object.assign({}, verifier.prologue);
        this.manifest = this.header.manifest = manifest;
        tx.setAuth({
          key: this.header.key,
          discoveryKey: this.discoveryKey,
          manifest,
          keyPair: this.header.keyPair
          // TODO: encryptionKey?
        });
        this.compat = verifier.compat;
        this.verifier = verifier;
        this.replicator.onupgrade();
        this.emitManifest();
      }
      async copyPrologue(src) {
        await this.state.mutex.lock();
        try {
          await src.mutex.lock();
        } catch (err) {
          this.state.mutex.unlock();
          throw err;
        }
        try {
          await copyPrologue(src, this);
        } finally {
          src.mutex.unlock();
          this.state.mutex.unlock();
          this.checkIfIdle();
        }
      }
      flushed() {
        return this.state.flushed();
      }
      async _validateCommit(state, treeLength) {
        if (this.state.length > state.length) {
          return false;
        }
        if (this.state.length > treeLength) {
          for (const root of this.state.roots) {
            const batchRoot = await MerkleTree.get(state, root.index);
            if (batchRoot.size !== root.size || !b4a4.equals(batchRoot.hash, root.hash)) {
              return false;
            }
          }
        }
        if (this.verifier === null) {
          return false;
        }
        return true;
      }
      _verifyBatchUpgrade(batch, manifest) {
        if (!this.header.manifest) {
          if (!manifest) manifest = Verifier.defaultSignerManifest(this.header.key);
          if (!manifest || !(Verifier.isValidManifest(this.header.key, manifest) || Verifier.isCompat(this.header.key, manifest))) {
            throw INVALID_SIGNATURE("Proof contains an invalid manifest", this.discoveryKey);
          }
        }
        const verifier = this.verifier || new Verifier(this.header.key, Verifier.createManifest(manifest), { legacy: this._legacy });
        if (!verifier.verify(batch, batch.signature)) {
          throw INVALID_SIGNATURE("Proof contains an invalid signature", this.discoveryKey);
        }
        return manifest;
      }
      async _verifyExclusive({ batch, bitfield, value, manifest }) {
        manifest = this._verifyBatchUpgrade(batch, manifest);
        if (!await this.state._verifyBlock(
          batch,
          bitfield,
          value,
          this.header.manifest ? null : manifest
        )) {
          return false;
        }
        if (!batch.upgraded && bitfield) {
          this.replicator.onhave(bitfield.start, bitfield.length, bitfield.drop);
        }
        return true;
      }
      async _verifyShared() {
        if (!this._verifies.length) return false;
        await this.state.mutex.lock();
        const tx = this.state.createWriteBatch();
        const verifies = this._verifies;
        this._verifies = null;
        this._verified = null;
        try {
          for (const { batch, bitfield, value } of verifies) {
            if (!batch.commitable()) continue;
            if (bitfield) {
              tx.putBlock(bitfield.start, value);
            }
          }
          const bits = new BitInterlude();
          for (let i = 0; i < verifies.length; i++) {
            const { batch, bitfield, manifest } = verifies[i];
            if (!batch.commitable()) {
              verifies[i] = null;
              continue;
            }
            if (bitfield) {
              bits.setRange(bitfield.start, bitfield.start + 1, true);
            }
            if (manifest && this.header.manifest === null) {
              if (!Verifier.isValidManifest(this.header.key, manifest)) {
                throw INVALID_CHECKSUM("Manifest hash does not match", this.discoveryKey);
              }
              this._setManifest(tx, manifest, null);
            }
            if (batch.commitable()) batch.commit(tx);
          }
          const ranges = bits.flush(tx, this.bitfield);
          await this.state.flush();
          for (const { start, end, value } of ranges) {
            this._setBitfieldRanges(start, end, value);
          }
          for (let i = 0; i < verifies.length; i++) {
            const bitfield = verifies[i] && verifies[i].bitfield;
            if (bitfield) {
              this.updateContiguousLength(bitfield);
              this.replicator.onhave(bitfield.start, bitfield.length, bitfield.drop);
            }
          }
          if (this.hintsChanged) await this.flushHints();
        } finally {
          this.state._clearActiveBatch();
          this.state.mutex.unlock();
        }
        return verifies[0] !== null;
      }
      async flushHints() {
        if (!this.hintsChanged) return;
        this.hintsChanged = false;
        const tx = this.state.storage.write();
        tx.setHints({
          contiguousLength: this.header.hints.contiguousLength,
          remoteContiguousLength: this.header.hints.remoteContiguousLength,
          recovering: this.header.hints.recovering
        });
        await tx.flush();
      }
      async checkConflict(proof, from) {
        if (this.state.length < proof.upgrade.length || proof.fork !== this.state.fork) {
          return false;
        }
        if (!this.header.manifest) {
          return false;
        }
        const batch = MerkleTree.verifyFullyRemote(this.state, proof);
        try {
          this._verifyBatchUpgrade(batch, proof.manifest);
        } catch {
          return true;
        }
        const roots = await maybeGetRootsFromStorage(this.storage, proof.upgrade.length);
        const remoteTreeHash = crypto.tree(proof.upgrade.nodes);
        const localTreeHash = crypto.tree(roots);
        try {
          const rx = this.state.storage.read();
          const treeProofPromise = MerkleTree.proof(this.state, rx, {
            block: null,
            hash: null,
            seek: null,
            upgrade: {
              start: 0,
              length: proof.upgrade.length
            }
          });
          rx.tryFlush();
          const treeProof = await treeProofPromise;
          const verifyBatch = MerkleTree.verifyFullyRemote(this.state, await treeProof.settle());
          this._verifyBatchUpgrade(verifyBatch, this.header.manifest);
        } catch (err) {
          if (err.code !== "INVALID_OPERATION") return true;
          return !await this._repairTreeNodes(proof);
        }
        if (b4a4.equals(localTreeHash, remoteTreeHash)) return false;
        await this.state.mutex.lock();
        try {
          const tx = this.state.createWriteBatch();
          this.header.frozen = true;
          tx.setAuth({
            key: this.header.key,
            discoveryKey: this.discoveryKey,
            manifest: this.header.manifest,
            keyPair: this.header.keyPair,
            frozen: true
          });
          await this.state.flush();
        } finally {
          this.state.mutex.unlock();
        }
        const id = b4a4.toString(this.discoveryKey, "hex");
        console.log(
          "[hypercore] conflict detected in " + id + " (writable=" + !!this.header.keyPair + ",quorum=" + this.header.manifest.quorum + ")"
        );
        await this._onconflict(proof);
        return true;
      }
      async _repairTreeNodes(proof) {
        if (!this._repairMode) return false;
        await this.state.mutex.lock();
        for (let i = this.monitors.length - 1; i >= 0; i--) {
          this.monitors[i].emit("repairing", proof);
        }
        try {
          const batch = MerkleTree.verifyFullyRemote(this.state, proof);
          this._verifyBatchUpgrade(batch, proof.manifest);
        } catch {
          this.state.mutex.unlock();
          for (let i = this.monitors.length - 1; i >= 0; i--) {
            this.monitors[i].emit("repair-failed");
          }
          return false;
        }
        const atom = this.storage.createAtom();
        const atomized = this.storage.atomize(atom);
        const tx = atomized.write();
        for (const node of proof.upgrade.nodes) {
          tx.putTreeNode(node);
        }
        await tx.flush();
        try {
          const rx = atomized.read();
          const treeProofPromise = MerkleTree.proof(this.state, rx, {
            block: null,
            hash: null,
            seek: null,
            upgrade: {
              start: 0,
              length: proof.upgrade.length
            }
          });
          rx.tryFlush();
          const treeProof = await treeProofPromise;
          const verifyBatch = MerkleTree.verifyFullyRemote(this.state, await treeProof.settle());
          this._verifyBatchUpgrade(verifyBatch, this.header.manifest);
        } catch (err) {
          this.state.mutex.unlock();
          for (let i = this.monitors.length - 1; i >= 0; i--) {
            this.monitors[i].emit("repair-failed");
          }
          return false;
        }
        await atom.flush();
        for (let i = this.monitors.length - 1; i >= 0; i--) {
          this.monitors[i].emit("repaired", proof);
        }
        this.replicator.setPushOnly(false);
        this.state.mutex.unlock();
        return true;
      }
      async verifyReorg(proof) {
        const batch = new ReorgBatch(this.state);
        await MerkleTree.reorg(this.state, proof, batch);
        const manifest = this._verifyBatchUpgrade(batch, proof.manifest);
        if (manifest && !this.header.manifest) {
          await this.state.mutex.lock();
          try {
            if (manifest && this.header.manifest === null) {
              const tx = this.state.createWriteBatch();
              this._setManifest(tx, Verifier.createManifest(manifest), null);
              await this.state.flush();
            }
          } finally {
            this.state._unlock();
          }
        }
        return batch;
      }
      async verify(proof, from) {
        if (proof.fork !== this.state.fork) return false;
        const batch = await MerkleTree.verify(this.state, proof);
        if (batch.upgraded && batch.length <= this.state.length) {
          await batch.downgrade();
        }
        if (!batch.commitable()) {
          return false;
        }
        const value = proof.block && proof.block.value || null;
        const op = {
          batch,
          bitfield: value && { drop: false, start: proof.block.index, length: 1 },
          value,
          manifest: proof.manifest,
          from
        };
        if (batch.upgraded) {
          return this._verifyExclusive(op);
        }
        if (this._verifies !== null) {
          const verifies = this._verifies;
          const i = verifies.push(op);
          await this._verified;
          return verifies[i] !== null;
        }
        this._verifies = [op];
        this._verified = this._verifyShared();
        return this._verified;
      }
      async reorg(batch) {
        if (!batch.commitable()) return false;
        this.truncating++;
        try {
          await this.state.reorg(batch);
        } finally {
          this.truncating--;
        }
        return true;
      }
      openSkipBitfield() {
        if (this.skipBitfield !== null) return this.skipBitfield;
        this.skipBitfield = new RemoteBitfield();
        const buf = this.bitfield.toBuffer(this.state.length);
        const bitfield = new Uint32Array(buf.buffer, buf.byteOffset, buf.byteLength / 4);
        this.skipBitfield.insert(0, bitfield);
        return this.skipBitfield;
      }
      _setBitfieldRanges(start, end, value) {
        this.bitfield.setRange(start, end, value);
        if (this.skipBitfield !== null) this.skipBitfield.setRange(start, end, value);
      }
      close() {
        if (!this.closing) this.closing = this._close();
        return this.closing;
      }
      updateContiguousLength(bitfield) {
        const contig = updateContigBatch(this.header.hints.contiguousLength, bitfield, this.bitfield);
        if (contig.length !== -1 && contig.length !== this.header.hints.contiguousLength) {
          this.header.hints.contiguousLength = contig.length;
          this.hintsChanged = true;
        }
      }
      updateRemoteContiguousLength(length) {
        this.header.hints.remoteContiguousLength = length;
        this.hintsChanged = true;
        this.remoteContiguousLengthChanged = true;
      }
      onappend(tree, bitfield) {
        this.header.tree = tree;
        if (!bitfield) {
          this.replicator.onupgrade();
          return;
        }
        this.replicator.cork();
        const { start, length, drop } = bitfield;
        this._setBitfieldRanges(start, start + length, true);
        this.updateContiguousLength({ start, length, drop: false });
        this.replicator.onupgrade();
        this.replicator.onhave(start, length, drop);
        this.replicator.uncork();
      }
      ontruncate(tree, { start, length }) {
        if (tree) this.header.tree = tree;
        this.replicator.cork();
        this.replicator.ontruncate(start, length);
        this.replicator.onhave(start, length, true);
        this.replicator.onupgrade();
        this.replicator.uncork();
        for (const sessionState of this.sessionStates) {
          if (start < sessionState.snapshotCompatLength) sessionState.snapshotCompatLength = start;
        }
        this._setBitfieldRanges(start, start + length, false);
        this.updateContiguousLength({ start, length, drop: true });
      }
      async _onconflict(proof) {
        await this.replicator.onconflict();
        for (let i = this.monitors.length - 1; i >= 0; i--) {
          const s = this.monitors[i];
          s.emit("conflict", proof.upgrade.length, proof.fork, proof);
        }
        const err = new Error("Two conflicting signatures exist for length " + proof.upgrade.length);
        await this.closeAllSessions(err);
      }
      async closeAllSessions(err) {
        const sessions = this.allSessions();
        const all = [];
        for (const s of sessions) all.push(s.close({ error: err, force: false }));
        await Promise.allSettled(all);
      }
      async destroy() {
        if (this.destroyed === true) return;
        this.destroyed = true;
        if (this.hasSession() === true) throw new Error("Cannot destroy while sessions are open");
        const weakSessions = this.allSessions();
        if (this.replicator) this.replicator.destroy();
        if (this.state) await this.state.close();
        for (const s of weakSessions) s.close().catch(noop);
      }
      async _close() {
        if (this.opened === false) await this.opening;
        if (this.hasSession() === true) throw new Error("Cannot close while sessions are open");
        if (this.replicator) await this.replicator.close();
        await this.destroy();
        if (this.autoClose) await this.storage.store.close();
        this.closed = true;
      }
    };
    function updateContigBatch(start, upd, bitfield) {
      const end = upd.start + upd.length;
      let c4 = start;
      if (upd.drop) {
        if (c4 > upd.start) {
          c4 = upd.start;
        }
      } else {
        if (c4 <= end && c4 >= upd.start) {
          c4 = end;
          while (bitfield.get(c4)) c4++;
        }
      }
      if (c4 === start) {
        return {
          length: -1
        };
      }
      if (c4 > start) {
        return {
          length: c4
        };
      }
      return {
        length: c4
      };
    }
    function getDefaultTree() {
      return {
        fork: 0,
        length: 0,
        rootHash: null,
        signature: null
      };
    }
    function parseHeader(info) {
      if (!info) return null;
      return {
        key: info.key,
        manifest: info.manifest,
        external: null,
        keyPair: info.keyPair,
        tree: info.head || getDefaultTree(),
        hints: {
          reorgs: [],
          contiguousLength: info.hints ? info.hints.contiguousLength : 0,
          remoteContiguousLength: info.hints ? info.hints.remoteContiguousLength : 0,
          recovering: info.hints ? info.hints.recovering : 0
        }
      };
    }
    async function maybeGetRootsFromStorage(storage, length) {
      try {
        return length ? await MerkleTree.getRootsFromStorage(storage, length) : [];
      } catch (err) {
        if (err.code !== "INVALID_OPERATION") throw err;
        return [];
      }
    }
    function noop() {
    }
    async function getCoreInfo(storage) {
      const r = storage.read();
      const auth = r.getAuth();
      const head = r.getHead();
      const hints = r.getHints();
      r.tryFlush();
      const [authInfo, headInfo, hintsInfo] = await Promise.all([auth, head, hints]);
      return {
        ...authInfo,
        head: headInfo,
        hints: hintsInfo
      };
    }
  }
});

// node_modules/hypercore/lib/info.js
var require_info = __commonJS({
  "node_modules/hypercore/lib/info.js"(exports2, module2) {
    module2.exports = class Info {
      constructor(opts = {}) {
        this.key = opts.key;
        this.discoveryKey = opts.discoveryKey;
        this.length = opts.length || 0;
        this.contiguousLength = opts.contiguousLength || 0;
        this.byteLength = opts.byteLength || 0;
        this.fork = opts.fork || 0;
        this.padding = opts.padding || 0;
        this.storage = opts.storage || null;
      }
      static async from(session, opts = {}) {
        return new Info({
          key: session.key,
          discoveryKey: session.discoveryKey,
          length: session.length,
          contiguousLength: session.contiguousLength,
          byteLength: session.byteLength,
          fork: session.fork,
          padding: session.padding,
          storage: opts.storage ? await this.storage(session) : null
        });
      }
      static async storage(session) {
        const { oplog, tree, blocks, bitfield } = session.core;
        try {
          return {
            oplog: await Info.bytesUsed(oplog.storage),
            tree: await Info.bytesUsed(tree.storage),
            blocks: await Info.bytesUsed(blocks.storage),
            bitfield: await Info.bytesUsed(bitfield.storage)
          };
        } catch {
          return null;
        }
      }
      static bytesUsed(file) {
        return new Promise((resolve, reject) => {
          file.stat((err, st) => {
            if (err) {
              resolve(0);
            } else if (typeof st.blocks !== "number") {
              reject(new Error("cannot determine bytes used"));
            } else {
              resolve(st.blocks * 512);
            }
          });
        });
      }
    };
  }
});

// node_modules/hypercore/lib/download.js
var require_download = __commonJS({
  "node_modules/hypercore/lib/download.js"(exports2, module2) {
    module2.exports = class Download {
      constructor(session, range) {
        this.session = session;
        this.range = range;
        this.request = null;
        this.opened = false;
        this.opening = this._open();
        this.opening.catch(noop);
      }
      ready() {
        return this.opening;
      }
      async _open() {
        if (this.session.opened === false) await this.session.opening;
        this._download();
        this.opened = true;
      }
      async done() {
        await this.ready();
        try {
          return await this.request.promise;
        } catch (err) {
          if (isSessionMoved(err)) return this._download();
          throw err;
        }
      }
      _download() {
        const activeRequests = this.range && this.range.activeRequests || this.session.activeRequests;
        this.request = this.session.core.replicator.addRange(activeRequests, this.range);
        this.request.promise.catch(noop);
        return this.request.promise;
      }
      /**
       * Deprecated. Use `range.done()`.
       */
      downloaded() {
        return this.done();
      }
      destroy() {
        this._destroyBackground().catch(noop);
      }
      async _destroyBackground() {
        if (this.opened === false) await this.ready();
        if (this.request.context) this.request.context.detach(this.request);
      }
    };
    function noop() {
    }
    function isSessionMoved(err) {
      return err.code === "SESSION_MOVED";
    }
  }
});

// node_modules/hypercore/lib/default-encryption.js
var require_default_encryption = __commonJS({
  "node_modules/hypercore/lib/default-encryption.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    var c4 = require_compact_encoding();
    var b4a4 = require_b4a();
    var { DEFAULT_ENCRYPTION } = require_caps();
    var nonce = b4a4.alloc(sodium.crypto_stream_NONCEBYTES);
    module2.exports = class DefaultEncryption {
      static PADDING = 8;
      constructor(encryptionKey, hypercoreKey, opts = {}) {
        this.key = encryptionKey;
        this.compat = opts.compat === true;
        const keys = DefaultEncryption.deriveKeys(encryptionKey, hypercoreKey, opts);
        this.blockKey = keys.block;
        this.blindingKey = keys.blinding;
      }
      static deriveKeys(encryptionKey, hypercoreKey, { block = false, compat = false } = {}) {
        const subKeys = b4a4.alloc(2 * sodium.crypto_stream_KEYBYTES);
        const blockKey = block ? encryptionKey : subKeys.subarray(0, sodium.crypto_stream_KEYBYTES);
        const blindingKey = subKeys.subarray(sodium.crypto_stream_KEYBYTES);
        if (!block) {
          if (compat) {
            sodium.crypto_generichash_batch(blockKey, [encryptionKey], hypercoreKey);
          } else {
            sodium.crypto_generichash_batch(blockKey, [DEFAULT_ENCRYPTION, hypercoreKey, encryptionKey]);
          }
        }
        sodium.crypto_generichash(blindingKey, blockKey);
        return {
          blinding: blindingKey,
          block: blockKey
        };
      }
      static blockEncryptionKey(hypercoreKey, encryptionKey) {
        const blockKey = b4a4.alloc(sodium.crypto_stream_KEYBYTES);
        sodium.crypto_generichash_batch(blockKey, [DEFAULT_ENCRYPTION, hypercoreKey, encryptionKey]);
        return blockKey;
      }
      static encrypt(index, block, fork, blockKey, blindingKey) {
        const padding = block.subarray(0, DefaultEncryption.PADDING);
        block = block.subarray(DefaultEncryption.PADDING);
        c4.uint64.encode({ start: 0, end: 8, buffer: padding }, fork);
        c4.uint64.encode({ start: 0, end: 8, buffer: nonce }, index);
        nonce.fill(0, 8, 8 + padding.byteLength);
        sodium.crypto_stream_xor(padding, padding, nonce, blindingKey);
        nonce.set(padding, 8);
        sodium.crypto_stream_xor(block, block, nonce, blockKey);
      }
      static decrypt(index, block, blockKey) {
        const padding = block.subarray(0, DefaultEncryption.PADDING);
        block = block.subarray(DefaultEncryption.PADDING);
        c4.uint64.encode({ start: 0, end: 8, buffer: nonce }, index);
        nonce.set(padding, 8);
        sodium.crypto_stream_xor(block, block, nonce, blockKey);
      }
      encrypt(index, block, fork, core) {
        if (core.compat !== this.compat) this._reload(core);
        return DefaultEncryption.encrypt(index, block, fork, this.blockKey, this.blindingKey);
      }
      decrypt(index, block, core) {
        if (core.compat !== this.compat) this._reload(core);
        return DefaultEncryption.decrypt(index, block, this.blockKey);
      }
      padding() {
        return DefaultEncryption.PADDING;
      }
      _reload(core) {
        const block = b4a4.equals(this.key, this.blockKey);
        const keys = DefaultEncryption.deriveKeys(this.key, core.key, { block, compat: core.compat });
        this.blockKey = keys.blockKey;
        this.blindingKey = keys.blindingKey;
      }
    };
  }
});

// node_modules/hypercore/lib/streams.js
var require_streams = __commonJS({
  "node_modules/hypercore/lib/streams.js"(exports2) {
    var { Writable, Readable } = require_streamx();
    var ReadStream = class extends Readable {
      constructor(core, opts = {}) {
        super();
        this.core = core;
        this.start = opts.start || 0;
        this.end = typeof opts.end === "number" ? opts.end : -1;
        this.snapshot = !opts.live && opts.snapshot !== false;
        this.live = this.end === -1 ? !!opts.live : false;
        this.wait = typeof opts.wait === "boolean" ? opts.wait : this.core.wait;
        this.timeout = opts.timeout || core.timeout;
      }
      _open(cb) {
        this._openP().then(cb, cb);
      }
      _read(cb) {
        this._readP().then(cb, cb);
      }
      async _openP() {
        if (this.end === -1) await this.core.update();
        else await this.core.ready();
        if (this.snapshot && this.end === -1) this.end = this.core.length;
      }
      async _readP() {
        const end = this.live ? -1 : this.end === -1 ? this.core.length : this.end;
        if (end >= 0 && this.start >= end) {
          this.push(null);
          return;
        }
        this.push(await this.core.get(this.start++, { wait: this.wait, timeout: this.timeout }));
      }
    };
    exports2.ReadStream = ReadStream;
    var WriteStream = class extends Writable {
      constructor(core) {
        super();
        this.core = core;
      }
      _writev(batch, cb) {
        this._writevP(batch).then(cb, cb);
      }
      async _writevP(batch) {
        await this.core.append(batch);
      }
    };
    exports2.WriteStream = WriteStream;
    var ByteStream = class extends Readable {
      constructor(core, opts = {}) {
        super();
        this._core = core;
        this._index = 0;
        this._range = null;
        this._byteOffset = opts.byteOffset || 0;
        this._byteLength = typeof opts.byteLength === "number" ? opts.byteLength : -1;
        this._prefetch = typeof opts.prefetch === "number" ? opts.prefetch : 32;
        this._applyOffset = this._byteOffset > 0;
      }
      _open(cb) {
        this._openp().then(cb, cb);
      }
      _read(cb) {
        this._readp().then(cb, cb);
      }
      async _openp() {
        if (this._byteLength === -1) {
          await this._core.update();
          this._byteLength = Math.max(this._core.byteLength - this._byteOffset, 0);
        }
      }
      async _readp() {
        let data = null;
        if (this._byteLength === 0) {
          this.push(null);
          return;
        }
        let relativeOffset = 0;
        if (this._applyOffset) {
          this._applyOffset = false;
          const [block, byteOffset] = await this._core.seek(this._byteOffset);
          this._index = block;
          relativeOffset = byteOffset;
        }
        this._predownload(this._index + 1);
        data = await this._core.get(this._index++, { valueEncoding: "binary" });
        if (relativeOffset > 0) data = data.subarray(relativeOffset);
        if (data.byteLength > this._byteLength) data = data.subarray(0, this._byteLength);
        this._byteLength -= data.byteLength;
        this.push(data);
        if (this._byteLength === 0) this.push(null);
      }
      _predownload(index) {
        if (this._range) this._range.destroy();
        this._range = this._core.download({ start: index, end: index + this._prefetch, linear: true });
      }
      _destroy(cb) {
        if (this._range) this._range.destroy();
        cb(null);
      }
    };
    exports2.ByteStream = ByteStream;
  }
});

// node_modules/hypercore/lib/fully-remote-proof.js
var require_fully_remote_proof = __commonJS({
  "node_modules/hypercore/lib/fully-remote-proof.js"(exports2, module2) {
    var { MerkleTree } = require_merkle_tree();
    var messages = require_messages2();
    var b4a4 = require_b4a();
    var c4 = require_compact_encoding();
    var crypto = require_hypercore_crypto();
    var flat = require_flat_tree();
    var SlimSession = class {
      constructor(storage, auth, head, roots) {
        this.fork = head ? head.fork : 0;
        this.roots = roots;
        this.length = head ? head.length : 0;
        this.signature = head ? head.signature : null;
        this.ancestors = this.length;
        this.byteLength = 0;
        this.prologue = auth.manifest.prologue;
        this.storage = storage;
        for (let i = 0; i < roots.length; i++) this.byteLength += roots[i].size;
      }
    };
    module2.exports = { verify, proof };
    async function verify(storage, buffer, { referrer = null } = {}) {
      const state = { buffer, start: 0, end: buffer.byteLength };
      const discoveryKey = c4.fixed32.decode(state);
      const proof2 = messages.wire.data.decode(state);
      const result = {
        key: null,
        discoveryKey,
        newer: true,
        length: 0,
        proof: proof2,
        block: null
      };
      const core = await storage.resumeCore(discoveryKey);
      if (core === null) return null;
      let rx = core.read();
      const authPromise = rx.getAuth();
      const headPromise = rx.getHead();
      const referrerPromise = rx.getUserData("referrer");
      rx.tryFlush();
      const [auth, head, ref] = await Promise.all([authPromise, headPromise, referrerPromise]);
      if (auth === null) return null;
      if (referrer && (!ref || !b4a4.equals(ref, referrer))) return null;
      rx = core.read();
      const rootPromises = [];
      for (const index of flat.fullRoots(head ? 2 * head.length : 0)) {
        rootPromises.push(rx.getTreeNode(index));
      }
      rx.tryFlush();
      let roots = await Promise.all(rootPromises);
      if (roots.some(isNull)) roots = [];
      const length = head ? head.length : 0;
      if (!auth.manifest || !auth.manifest.signers.length) return null;
      const batch = await MerkleTree.verifyFullyRemote(new SlimSession(core, auth, head, roots), proof2);
      const publicKey = auth.manifest.signers[0].publicKey;
      let signable = null;
      let signature = null;
      if (auth.manifest.version === 0) {
        signable = batch.signable(auth.manifest.signers[0].namespace);
        signature = batch.signature;
      } else {
        if (batch.signature[0] !== 1) return null;
        if (batch.signature[1] !== 0) return null;
        signable = batch.signable(auth.key);
        signature = batch.signature.subarray(2, 66);
      }
      if (!crypto.verify(signable, signature, publicKey)) {
        return null;
      }
      result.key = auth.key;
      result.discoveryKey = discoveryKey;
      result.newer = batch.length > length;
      result.length = batch.length;
      result.block = proof2.block;
      return result;
    }
    async function proof(sender, { index, block = null, upgrade = null } = {}) {
      const proof2 = await sender.proof({
        block: block ? { index, nodes: 0 } : null,
        upgrade: upgrade ? upgrade : { start: 0, length: sender.length }
      });
      if (block) proof2.block.value = block;
      proof2.manifest = sender.core.header.manifest;
      const state = { buffer: null, start: 0, end: 0 };
      const data = { request: 0, ...proof2 };
      c4.fixed32.preencode(state, sender.discoveryKey);
      messages.wire.data.preencode(state, data);
      state.buffer = b4a4.allocUnsafe(state.end);
      c4.fixed32.encode(state, sender.discoveryKey);
      messages.wire.data.encode(state, data);
      return state.buffer;
    }
    function isNull(x) {
      return x === null;
    }
  }
});

// node_modules/hypercore/index.js
var require_hypercore = __commonJS({
  "node_modules/hypercore/index.js"(exports2, module2) {
    var { EventEmitter } = require_bare_events();
    var isOptions = require_is_options();
    var crypto = require_hypercore_crypto();
    var CoreStorage = require("hypercore-storage");
    var c4 = require_compact_encoding();
    var b4a4 = require_b4a();
    var NoiseSecretStream = require_secret_stream();
    var Protomux = require_protomux();
    var id = require_hypercore_id_encoding();
    var safetyCatch = require_safety_catch();
    var unslab = require_unslab();
    var flat = require_flat_tree();
    var assert2 = require_nanoassert();
    var { SMALL_WANTS } = require_feature_flags();
    var { UPDATE_COMPAT } = require_wants();
    var MarkBitfield = require_mark_bitfield();
    var inspect = require_inspect();
    var Core = require_core();
    var Info = require_info();
    var Download = require_download();
    var DefaultEncryption = require_default_encryption();
    var caps = require_caps();
    var Replicator = require_replicator();
    var { manifestHash, createManifest } = require_verifier();
    var { ReadStream, WriteStream, ByteStream } = require_streams();
    var { MerkleTree } = require_merkle_tree();
    var { proof, verify } = require_fully_remote_proof();
    var {
      ASSERTION,
      BAD_ARGUMENT,
      SESSION_CLOSED,
      SESSION_MOVED,
      SESSION_NOT_WRITABLE,
      SNAPSHOT_NOT_AVAILABLE,
      DECODING_ERROR
    } = require_hypercore_errors();
    var MAX_SUGGESTED_BLOCK_SIZE = 15 * 1024 * 1024;
    var Hypercore = class _Hypercore extends EventEmitter {
      constructor(storage, key, opts) {
        super();
        if (isOptions(storage) && !storage.db) {
          opts = storage;
          storage = null;
          key = opts.key || null;
        } else if (isOptions(key)) {
          opts = key;
          key = opts.key || null;
        }
        if (key && typeof key === "string") key = id.decode(key);
        if (!opts) opts = {};
        if (!storage) storage = opts.storage;
        this.core = null;
        this.state = null;
        this.encryption = null;
        this.extensions = /* @__PURE__ */ new Map();
        this.valueEncoding = null;
        this.encodeBatch = null;
        this.activeRequests = [];
        this.sessions = null;
        this.ongc = null;
        this.keyPair = opts.keyPair || null;
        this.readable = true;
        this.writable = false;
        this.exclusive = false;
        this.opened = false;
        this.closed = false;
        this.weak = !!opts.weak;
        this.snapshotted = !!opts.snapshot;
        this.onseq = opts.onseq || null;
        this.onwait = opts.onwait || null;
        this.wait = opts.wait !== false;
        this.timeout = opts.timeout || 0;
        this.preload = null;
        this.closing = null;
        this.opening = null;
        this._readonly = opts.writable === false;
        this._preappend = preappend.bind(this);
        this._snapshot = null;
        this._findingPeers = 0;
        this._active = opts.weak ? !!opts.active : opts.active !== false;
        this.waits = 0;
        this._marking = false;
        this._marks = null;
        this._sessionIndex = -1;
        this._stateIndex = -1;
        this._monitorIndex = -1;
        this.opening = this._open(storage, key, opts);
        this.opening.catch(safetyCatch);
        this.on("newListener", maybeAddMonitor);
      }
      [/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")](depth, opts) {
        return inspect(this, depth, opts);
      }
      static MAX_SUGGESTED_BLOCK_SIZE = MAX_SUGGESTED_BLOCK_SIZE;
      static DefaultEncryption = DefaultEncryption;
      static SMALL_WANTS = SMALL_WANTS;
      static enable(flag) {
        const enableCompat = (flag & SMALL_WANTS) === 0;
        UPDATE_COMPAT(enableCompat);
      }
      static setRecoveryPeers(peers) {
        Core.setRecoveryPeers(peers);
      }
      static key(manifest, { compat, version: version3, namespace } = {}) {
        if (b4a4.isBuffer(manifest)) {
          manifest = { version: version3, signers: [{ publicKey: manifest, namespace }] };
        }
        return compat ? manifest.signers[0].publicKey : manifestHash(createManifest(manifest));
      }
      static discoveryKey(key) {
        return crypto.discoveryKey(key);
      }
      static blockEncryptionKey(key, encryptionKey) {
        return DefaultEncryption.blockEncryptionKey(key, encryptionKey);
      }
      static getProtocolMuxer(stream) {
        return stream.noiseStream.userData;
      }
      static createCore(storage, opts) {
        return new Core(_Hypercore.defaultStorage(storage), { autoClose: false, ...opts });
      }
      static createProtocolStream(isInitiator, opts = {}) {
        let outerStream = Protomux.isProtomux(isInitiator) ? isInitiator.stream : isStream(isInitiator) ? isInitiator : opts.stream;
        let noiseStream = null;
        if (outerStream) {
          noiseStream = outerStream.noiseStream;
        } else {
          noiseStream = new NoiseSecretStream(isInitiator, null, opts);
          outerStream = noiseStream.rawStream;
        }
        if (!noiseStream) throw BAD_ARGUMENT("Invalid stream", this.discoveryKey);
        if (!noiseStream.userData) {
          const protocol = Protomux.from(noiseStream);
          if (opts.keepAlive !== false && noiseStream.keepAlive === 0) {
            noiseStream.setKeepAlive(5e3);
          }
          noiseStream.userData = protocol;
        }
        if (opts.ondiscoverykey) {
          const ondiscoverykey = createDiscoveryKeyHandler(opts.ondiscoverykey);
          noiseStream.userData.pair({ protocol: "hypercore/alpha" }, ondiscoverykey);
        }
        return outerStream;
      }
      static defaultStorage(storage, opts = {}) {
        if (CoreStorage.isCoreStorage(storage)) return storage;
        const directory = storage;
        return new CoreStorage(directory, opts);
      }
      static clearRequests(session, err) {
        return Replicator.clearRequests(session, err);
      }
      static async treeHashFromStorage(session, length = session.length) {
        const roots = await MerkleTree.getRoots(session.state, length);
        return crypto.tree(roots);
      }
      snapshot(opts) {
        return this.session({ ...opts, snapshot: true });
      }
      compact() {
        return this.core.compact();
      }
      session(opts = {}) {
        if (this.closing) {
          throw SESSION_CLOSED("Cannot make sessions on a closing core", this.discoveryKey);
        }
        if (opts.checkout !== void 0 && !opts.name && !opts.atom) {
          throw ASSERTION("Checkouts are only supported on atoms or named sessions", this.discoveryKey);
        }
        const wait = opts.wait === false ? false : this.wait;
        const writable = opts.writable === void 0 ? !this._readonly : opts.writable === true;
        const onwait = opts.onwait === void 0 ? this.onwait : opts.onwait;
        const onseq = opts.onseq === void 0 ? this.onseq : opts.onseq;
        const timeout = opts.timeout === void 0 ? this.timeout : opts.timeout;
        const weak = opts.weak === void 0 ? this.weak : opts.weak;
        const marking = this._marking;
        const marks = this._marks;
        const Clz = opts.class || _Hypercore;
        const s = new Clz(null, this.key, {
          ...opts,
          wait,
          onwait,
          onseq,
          timeout,
          writable,
          weak,
          parent: this
        });
        s._marking = marking;
        s._marks = marks;
        return s;
      }
      async setEncryptionKey(key, opts) {
        if (!this.opened) await this.opening;
        const encryption = this._getEncryptionProvider({ key, block: !!(opts && opts.block) });
        return this.setEncryption(encryption);
      }
      async setEncryption(encryption) {
        if (!this.opened) await this.opening;
        if (encryption === null) {
          this.encryption = encryption;
          return;
        }
        if (!isEncryptionProvider(encryption)) {
          throw ASSERTION("Provider does not satisfy HypercoreEncryption interface", this.discoveryKey);
        }
        this.encryption = encryption;
      }
      setKeyPair(keyPair) {
        this.keyPair = keyPair;
      }
      setActive(bool) {
        const active = !!bool;
        if (active === this._active || this.closing) return;
        this._active = active;
        if (!this.opened) return;
        this.core.replicator.updateActivity(this._active ? 1 : -1);
      }
      async _open(storage, key, opts) {
        const preload = opts.preload || opts.parent && opts.parent.preload;
        if (preload) {
          this.sessions = [];
          this.preload = preload;
          opts = { ...opts, ...await this.preload };
          this.preload = null;
        }
        const parent = opts.parent || null;
        const core = opts.core || parent && parent.core;
        const sessions = opts.sessions || parent && parent.sessions;
        const ongc = opts.ongc || parent && parent.ongc;
        if (core) this.core = core;
        if (ongc) this.ongc = ongc;
        if (sessions) this.sessions = sessions;
        if (this.sessions === null) this.sessions = [];
        this._sessionIndex = this.sessions.push(this) - 1;
        if (this.core === null) initOnce(this, storage, key, opts);
        if (this._monitorIndex === -2) this.core.addMonitor(this);
        try {
          await this._openSession(opts);
        } catch (err) {
          if (this.core.autoClose && this.core.hasSession() === false) await this.core.close();
          if (this.exclusive) this.core.unlockExclusive();
          this.core.removeMonitor(this);
          this._removeSession();
          if (this.state !== null) this.state.removeSession(this);
          this.closed = true;
          this.emit("close");
          throw err;
        }
        if (this.core._repairMode) {
          const recoverTreeNodeFromPeersBound = this.recoverTreeNodeFromPeers.bind(this);
          this.once("repaired", () => {
            this.off("peer-add", recoverTreeNodeFromPeersBound);
          });
          this.on("peer-add", recoverTreeNodeFromPeersBound);
        }
        this.emit("ready");
        if (this.core.closing) this.close().catch(safetyCatch);
      }
      _removeSession() {
        if (this._sessionIndex === -1) return;
        const head = this.sessions.pop();
        if (head !== this) this.sessions[head._sessionIndex = this._sessionIndex] = head;
        this._sessionIndex = -1;
        if (this.ongc !== null) this.ongc(this);
      }
      async _openSession(opts) {
        if (this.core.opened === false) await this.core.ready();
        if (this.keyPair === null) this.keyPair = opts.keyPair || this.core.header.keyPair;
        const parent = opts.parent || null;
        if (parent && parent.encryption) this.encryption = parent.encryption;
        const e = getEncryptionOption(opts);
        if (!this.encryption) this.encryption = this._getEncryptionProvider(e);
        this.writable = this._isWritable();
        if (opts.valueEncoding) {
          this.valueEncoding = c4.from(opts.valueEncoding);
        }
        if (opts.encodeBatch) {
          this.encodeBatch = opts.encodeBatch;
        }
        if (opts.pushOnly === true) {
          this.core.replicator.setPushOnly(true);
        }
        if (parent) {
          if (parent._stateIndex === -1) await parent.ready();
          if (!this.keyPair) this.keyPair = parent.keyPair;
          const ps = parent.state;
          if (ps) {
            const shouldSnapshot = this.snapshotted && !ps.isSnapshot();
            this.state = shouldSnapshot ? await ps.snapshot() : ps.ref();
          }
          if (this.snapshotted && this.core && !this._snapshot) {
            this._updateSnapshot();
          }
        }
        if (opts.exclusive && opts.writable !== false) {
          this.exclusive = true;
          await this.core.lockExclusive();
        }
        const parentState = parent ? parent.state : this.core.state;
        const checkout = opts.checkout === void 0 ? -1 : opts.checkout;
        const state = this.state;
        if (opts.atom) {
          this.state = await parentState.createSession(null, false, opts.atom);
          if (state) state.unref();
        } else if (opts.name) {
          this.state = await parentState.createSession(opts.name, !!opts.overwrite, null);
          if (state) state.unref();
        }
        if (this.state && checkout !== -1) {
          if (!opts.name && !opts.atom) {
            throw ASSERTION("Checkouts must be named or atomized", this.discoveryKey);
          }
          if (checkout > this.state.length) {
            throw ASSERTION(
              `Invalid checkout ${checkout} for ${opts.name}, length is ${this.state.length}`,
              this.discoveryKey
            );
          }
          if (this.state.prologue && checkout < this.state.prologue.length) {
            throw ASSERTION(
              `Invalid checkout ${checkout} for ${opts.name}, prologue length is ${this.state.prologue.length}`,
              this.discoveryKey
            );
          }
          if (checkout < this.state.length) await this.state.truncate(checkout, this.fork);
        }
        if (this.state === null) {
          this.state = this.core.state.ref();
        }
        this.writable = this._isWritable();
        if (this.snapshotted && this.core) this._updateSnapshot();
        this.state.addSession(this);
        this.core = this.state.core;
        if (opts.userData) {
          const tx = this.state.storage.write();
          for (const [key, value] of Object.entries(opts.userData)) {
            tx.putUserData(key, value);
          }
          await tx.flush();
        }
        if (opts.manifest && !this.core.header.manifest) {
          await this.core.setManifest(createManifest(opts.manifest));
        }
        this.core.replicator.updateActivity(this._active ? 1 : 0);
        this.opened = true;
      }
      get replicator() {
        return this.core === null ? null : this.core.replicator;
      }
      _getSnapshot() {
        return {
          length: this.state.length,
          byteLength: this.state.byteLength,
          fork: this.state.fork
        };
      }
      _updateSnapshot() {
        const prev = this._snapshot;
        const next = this._snapshot = this._getSnapshot();
        if (!prev) return true;
        return prev.length !== next.length || prev.fork !== next.fork;
      }
      _isWritable() {
        if (this._readonly) return false;
        if (this.state && !this.state.isDefault()) return true;
        return !!(this.keyPair && this.keyPair.secretKey);
      }
      close({ error } = {}) {
        if (this.closing) return this.closing;
        this.closing = this._close(error || null);
        return this.closing;
      }
      clearRequests(activeRequests, error) {
        if (!activeRequests.length) return;
        if (this.core) this.core.replicator.clearRequests(activeRequests, error);
      }
      async _close(error) {
        if (this.opened === false) {
          try {
            await this.opening;
          } catch (err) {
            if (!this.closed) throw err;
          }
        }
        if (this.closed === true) return;
        this.core.removeMonitor(this);
        this.state.removeSession(this);
        this._removeSession();
        this.readable = false;
        this.writable = false;
        this.opened = false;
        const gc = [];
        for (const ext of this.extensions.values()) {
          if (ext.session === this) gc.push(ext);
        }
        for (const ext of gc) ext.destroy();
        this.core.replicator.findingPeers -= this._findingPeers;
        this.core.replicator.clearRequests(this.activeRequests, error);
        this.core.replicator.updateActivity(this._active ? -1 : 0);
        this._findingPeers = 0;
        this.state.unref();
        if (this.exclusive) this.core.unlockExclusive();
        if (this.core.hasSession()) {
          this.closed = true;
          this.emit("close");
          return;
        }
        if (this.core.autoClose) await this.core.close();
        this.closed = true;
        this.emit("close");
      }
      async commit(session, opts) {
        await this.ready();
        await session.ready();
        return this.state.commit(session.state, { keyPair: this.keyPair, ...opts });
      }
      replicate(isInitiator, opts = {}) {
        if (Protomux.isProtomux(isInitiator)) return this._attachToMuxer(isInitiator);
        if (isStream(isInitiator) && this._isAttached(isInitiator)) return isInitiator;
        const protocolStream = _Hypercore.createProtocolStream(isInitiator, opts);
        const noiseStream = protocolStream.noiseStream;
        const protocol = noiseStream.userData;
        this._attachToMuxer(protocol);
        return protocolStream;
      }
      _isAttached(stream) {
        return stream.userData && this.core && this.core.replicator && this.core.replicator.attached(stream.userData);
      }
      _attachToMuxer(mux) {
        if (this.opened) {
          this.core.replicator.attachTo(mux);
        } else {
          this.opening.then(() => this.core.replicator.attachTo(mux), mux.destroy.bind(mux));
        }
        return mux;
      }
      get id() {
        return this.core === null ? null : this.core.id;
      }
      get key() {
        return this.core === null ? null : this.core.key;
      }
      get discoveryKey() {
        return this.core === null ? null : this.core.discoveryKey;
      }
      get manifest() {
        return this.core === null ? null : this.core.manifest;
      }
      get length() {
        if (this._snapshot) return this._snapshot.length;
        return this.opened === false ? 0 : this.state.length;
      }
      get signedLength() {
        return this.opened === false ? 0 : this.state.signedLength();
      }
      /**
       * Deprecated. Use `const { byteLength } = await core.info()`.
       */
      get byteLength() {
        if (this.opened === false) return 0;
        if (this._snapshot) return this._snapshot.byteLength;
        return this.state.byteLength - this.state.length * this.padding;
      }
      get remoteContiguousLength() {
        if (this.opened === false) return 0;
        return Math.min(this.core.state.length, this.core.header.hints.remoteContiguousLength);
      }
      get contiguousLength() {
        if (this.opened === false) return 0;
        return Math.min(this.core.state.length, this.core.header.hints.contiguousLength);
      }
      get contiguousByteLength() {
        return 0;
      }
      get fork() {
        if (this.opened === false) return 0;
        return this.state.fork;
      }
      get padding() {
        if (this.encryption && this.key && this.manifest) {
          return this.encryption.padding(this.core, this.length);
        }
        return 0;
      }
      get peers() {
        return this.opened === false ? [] : this.core.replicator.peers;
      }
      get globalCache() {
        return this.opened === false ? null : this.core.globalCache;
      }
      get recovering() {
        return this.opened === false ? 0 : this.core.header.hints.recovering;
      }
      ready() {
        return this.opening;
      }
      async recover() {
        if (this.opened === false) await this.opening;
        return this.state.waitForRecovery();
      }
      async setUserData(key, value) {
        if (this.opened === false) await this.opening;
        const existing = await this.getUserData(key);
        if (existing && b4a4.isBuffer(value) && b4a4.equals(existing, value)) return;
        await this.state.setUserData(key, value);
      }
      async getUserData(key) {
        if (this.opened === false) await this.opening;
        const batch = this.state.storage.read();
        const p = batch.getUserData(key);
        batch.tryFlush();
        return p;
      }
      transferSession(core) {
        if (this.weak === false) {
          this.core.activeSessions--;
          core.activeSessions++;
        }
        if (this._monitorIndex >= 0) {
          this.core.removeMonitor(this);
          core.addMonitor(this);
        }
        const old = this.core;
        this.core = core;
        old.replicator.clearRequests(this.activeRequests, SESSION_MOVED());
        this.emit("migrate", this.key);
      }
      findingPeers() {
        this._findingPeers++;
        if (this.core !== null && !this.closing) this.core.replicator.findingPeers++;
        let once = true;
        return () => {
          if (this.closing || !once) return;
          once = false;
          this._findingPeers--;
          if (this.core !== null && --this.core.replicator.findingPeers === 0) {
            this.core.replicator.updateAll();
          }
        };
      }
      async info(opts) {
        if (this.opened === false) await this.opening;
        return Info.from(this, opts);
      }
      async update(opts) {
        if (this.opened === false) await this.opening;
        if (this.closing !== null) return false;
        if (this.snapshotted) return false;
        if (this.writable && (!opts || opts.force !== true)) return false;
        const remoteWait = this._shouldWait(opts, this.core.replicator.findingPeers > 0);
        let upgraded = false;
        if (await this.core.replicator.applyPendingReorg()) {
          upgraded = true;
        }
        if (!upgraded && remoteWait) {
          const activeRequests = opts && opts.activeRequests || this.activeRequests;
          const req = this.core.replicator.addUpgrade(activeRequests);
          try {
            upgraded = await req.promise;
          } catch (err) {
            if (isSessionMoved(err)) return this.update(opts);
            throw err;
          }
        }
        if (!upgraded) return false;
        return true;
      }
      async seek(bytes, opts) {
        if (this.opened === false) await this.opening;
        if (!isValidIndex(bytes)) throw ASSERTION("seek is invalid", this.discoveryKey);
        const activeRequests = opts && opts.activeRequests || this.activeRequests;
        if (this.encryption && !this.core.manifest) {
          const req2 = this.replicator.addUpgrade(activeRequests);
          try {
            await req2.promise;
          } catch (err) {
            if (isSessionMoved(err)) return this.seek(bytes, opts);
            throw err;
          }
        }
        const s = MerkleTree.seek(this.state, bytes, this.padding);
        const offset = await s.update();
        if (offset) return offset;
        if (this.closing !== null) {
          throw SESSION_CLOSED("cannot seek on a closed session", this.discoveryKey);
        }
        if (!this._shouldWait(opts, this.wait)) return null;
        const req = this.core.replicator.addSeek(activeRequests, s);
        const timeout = opts && opts.timeout !== void 0 ? opts.timeout : this.timeout;
        if (timeout) req.context.setTimeout(req, timeout);
        try {
          return await req.promise;
        } catch (err) {
          if (isSessionMoved(err)) return this.seek(bytes, opts);
          throw err;
        }
      }
      async has(start, end = start + 1) {
        if (this.opened === false) await this.opening;
        if (!isValidIndex(start) || !isValidIndex(end)) {
          throw ASSERTION("has range is invalid", this.discoveryKey);
        }
        if (this.state.isDefault()) {
          if (end === start + 1) return this.core.bitfield.get(start);
          const i = this.core.bitfield.firstUnset(start);
          return i === -1 || i >= end;
        }
        if (end === start + 1) {
          const rx = this.state.storage.read();
          const block = rx.getBlock(start);
          rx.tryFlush();
          return await block !== null;
        }
        let count = 0;
        const stream = this.state.storage.createBlockStream({ gte: start, lt: end });
        for await (const block of stream) {
          if (block === null) return false;
          count++;
        }
        return count === end - start;
      }
      async get(index, opts) {
        if (this.opened === false) await this.opening;
        if (!isValidIndex(index)) throw ASSERTION("block index is invalid", this.discoveryKey);
        if (this.closing !== null) {
          throw SESSION_CLOSED("cannot get on a closed session", this.discoveryKey);
        }
        const encoding = opts && opts.valueEncoding && c4.from(opts.valueEncoding) || this.valueEncoding;
        if (this.onseq !== null) this.onseq(index, this);
        if (this._marking) await this.markBlock(index);
        const req = this._get(index, opts);
        let block = await req;
        if (!block) return null;
        if (opts && opts.raw) return block;
        if (this.encryption && (!opts || opts.decrypt !== false)) {
          block = b4a4.from(block);
          await this.encryption.decrypt(index, block, this.core);
        }
        return this._decode(encoding, block, index);
      }
      async clear(start, end = start + 1, opts) {
        if (this.opened === false) await this.opening;
        if (this.closing !== null) {
          throw SESSION_CLOSED("cannot clear on a closed session", this.discoveryKey);
        }
        if (typeof end === "object") {
          opts = end;
          end = start + 1;
        }
        if (!isValidIndex(start) || !isValidIndex(end)) {
          throw ASSERTION("clear range is invalid", this.discoveryKey);
        }
        const cleared = opts && opts.diff ? { blocks: 0 } : null;
        if (start >= end) return cleared;
        if (start >= this.length) return cleared;
        await this.state.clear(start, end, cleared);
        return cleared;
      }
      async purge() {
        await this._closeAllSessions(null);
        await this.core.purge();
      }
      async _get(index, opts) {
        const block = await readBlock(this.state.storage.read(), index);
        if (block !== null) return block;
        if (this.closing !== null) {
          throw SESSION_CLOSED("cannot get on a closed session", this.discoveryKey);
        }
        if (this._snapshot !== null) {
          checkSnapshot(this, index);
          const coreBlock = await readBlock(this.core.state.storage.read(), index);
          checkSnapshot(this, index);
          if (coreBlock !== null) return coreBlock;
        }
        if (this.core.bitfield.get(index)) {
          const coreBlock = await readBlock(this.state.storage.read(), index);
          if (coreBlock !== null) return coreBlock;
        }
        if (!this._shouldWait(opts, this.wait)) return null;
        this.waits++;
        if (opts && opts.onwait) opts.onwait(index, this);
        if (this.onwait) this.onwait(index, this);
        const activeRequests = opts && opts.activeRequests || this.activeRequests;
        const force = opts ? opts.force === true : false;
        const req = this.core.replicator.addBlock(activeRequests, index, force);
        req.snapshot = index < this.length;
        const timeout = opts && opts.timeout !== void 0 ? opts.timeout : this.timeout;
        if (timeout) req.context.setTimeout(req, timeout);
        let replicatedBlock = null;
        try {
          replicatedBlock = await req.promise;
        } catch (err) {
          if (isSessionMoved(err)) return this._get(index, opts);
          throw err;
        }
        if (this._snapshot !== null) checkSnapshot(this, index);
        return maybeUnslab(replicatedBlock);
      }
      _shouldWait(opts, defaultValue) {
        if (opts) {
          if (opts.wait === false) return false;
          if (opts.wait === true) return true;
        }
        return defaultValue;
      }
      _setupMarks() {
        if (this._marks === null) {
          const storage = this.snapshotted ? this.core.state.storage : this.state.storage;
          this._marks = new MarkBitfield(storage);
        }
      }
      async markBlock(start, end = start + 1) {
        if (this.opened === false) await this.opening;
        this._setupMarks();
        const setPromises = [];
        for (let i = start; i < end; i++) {
          setPromises.push(this._marks.set(i, true));
        }
        return Promise.all(setPromises);
      }
      async clearMarkings() {
        if (this.opened === false) await this.opening;
        this._setupMarks();
        await this._marks.clear();
        this._marks = null;
      }
      async startMarking() {
        if (this._marking) {
          throw ASSERTION("Hypercore cannot be gc'ed when already in gc mode", this.discoveryKey);
        }
        if (this.state && this.state.name) {
          throw ASSERTION("Hypercore cannot be gc'ed when a named session", this.discoveryKey);
        }
        if (this.state && this.state.storage.atom) {
          throw ASSERTION("Hypercore cannot be gc'ed when an atomic session", this.discoveryKey);
        }
        if (this.opened === false) await this.opening;
        await this.clearMarkings();
        this._marking = true;
      }
      async sweep({ batchSize = 1e3 } = {}) {
        if (this.opened === false) await this.opening;
        assert2(!this.snapshotted, "Cannot sweep a snapshot");
        this._setupMarks();
        let clearing = [];
        let prevIndex = this.length;
        for await (const index of this._marks.createMarkStream({ reverse: true })) {
          if (index + 1 === prevIndex) {
            prevIndex = index;
            continue;
          }
          clearing.push(this.clear(index + 1, prevIndex));
          if (clearing.length >= batchSize) {
            await Promise.all(clearing);
            clearing = [];
          }
          prevIndex = index;
        }
        if (prevIndex > 0) clearing.push(this.clear(0, prevIndex));
        await Promise.all(clearing);
        this._marking = false;
        await this.clearMarkings();
      }
      createReadStream(opts) {
        return new ReadStream(this, opts);
      }
      createWriteStream() {
        return new WriteStream(this);
      }
      createByteStream(opts) {
        return new ByteStream(this, opts);
      }
      download(range) {
        return new Download(this, range);
      }
      // TODO: get rid of this / deprecate it?
      undownload(range) {
        range.destroy(null);
      }
      // TODO: get rid of this / deprecate it?
      cancel(request) {
      }
      async truncate(newLength = 0, opts = {}) {
        if (this.opened === false) await this.opening;
        if (this.closing) throw SESSION_CLOSED("Cannot append to a closed session", this.discoveryKey);
        const {
          fork = this.state.fork + 1,
          keyPair = this.keyPair,
          signature = null
        } = typeof opts === "number" ? { fork: opts } : opts;
        const isDefault = this.state === this.core.state;
        const writable = !this._readonly && !!(signature || keyPair && keyPair.secretKey);
        if (isDefault && writable === false && (newLength > 0 || fork !== this.state.fork)) {
          throw SESSION_NOT_WRITABLE("cannot append to a non-writable core", this.discoveryKey);
        }
        await this.state.truncate(newLength, fork, { keyPair, signature });
        if (this.state === this.core.state) this.core.replicator.updateAll();
      }
      async append(blocks, opts = {}) {
        if (this.opened === false) await this.opening;
        if (this.closing) throw SESSION_CLOSED("Cannot append to a closed session", this.discoveryKey);
        const isDefault = this.state === this.core.state;
        const defaultKeyPair = this.state.name === null ? this.keyPair : null;
        const { keyPair = defaultKeyPair, signature = null, maxLength, postappend = null } = opts;
        const writable = !isDefault || !!signature || !!(keyPair && keyPair.secretKey) || opts.writable === true;
        if (this._readonly || writable === false) {
          throw SESSION_NOT_WRITABLE("cannot append to a readonly core", this.discoveryKey);
        }
        blocks = Array.isArray(blocks) ? blocks : [blocks];
        const preappend2 = this.encryption && this._preappend;
        const buffers = this.encodeBatch !== null ? this.encodeBatch(blocks) : new Array(blocks.length);
        if (this.encodeBatch === null) {
          for (let i = 0; i < blocks.length; i++) {
            buffers[i] = this._encode(this.valueEncoding, blocks[i]);
          }
        }
        for (const b of buffers) {
          if (b.byteLength > MAX_SUGGESTED_BLOCK_SIZE) {
            throw BAD_ARGUMENT(
              "Appended block exceeds the maximum suggested block size",
              this.discoveryKey
            );
          }
        }
        return this.state.append(buffers, { keyPair, signature, preappend: preappend2, postappend, maxLength });
      }
      async signable(length = -1, fork = -1) {
        if (this.opened === false) await this.opening;
        if (length === -1) length = this.length;
        if (fork === -1) fork = this.fork;
        return caps.treeSignable(this.key, await this.treeHash(length), length, fork);
      }
      async treeHash(length = -1) {
        if (this.opened === false) await this.opening;
        if (length === -1) length = this.length;
        if (length > 0 && !await this.has(length - 1)) await this.get(length - 1);
        const roots = await MerkleTree.getRoots(this.state, length);
        return crypto.tree(roots);
      }
      async missingNodes(index) {
        if (this.opened === false) await this.opening;
        return await MerkleTree.missingNodes(this.core.state, 2 * index, this.core.state.length);
      }
      async proof(opts) {
        if (this.opened === false) await this.opening;
        const rx = this.state.storage.read();
        const proofPromise = MerkleTree.proof(this.state, rx, opts);
        const blockPromise = opts && opts.block ? rx.getBlock(opts.block.index) : null;
        rx.tryFlush();
        const [proof2, block] = await Promise.all([proofPromise, blockPromise]);
        const settled = await proof2.settle();
        if (block) settled.block.value = block;
        return settled;
      }
      async applyProof(proof2, from) {
        if (this.opened === false) await this.opening;
        return this.core.verify(proof2, from);
      }
      async verifyFullyRemote(proof2) {
        if (this.opened === false) await this.opening;
        const batch = await MerkleTree.verifyFullyRemote(this.state, proof2);
        await this.core._verifyBatchUpgrade(batch, proof2.manifest);
        return batch;
      }
      generateRemoteProofForTreeNode(treeNodeIndex) {
        const blockProofIndex = flat.rightSpan(treeNodeIndex) / 2;
        return proof(this, {
          index: blockProofIndex,
          // + 1 to length so the block is included
          upgrade: { start: 0, length: blockProofIndex + 1 }
        });
      }
      async recoverFromRemoteProof(remoteProof) {
        this.core.replicator.setPushOnly(true);
        this.core._repairMode = true;
        await this.core.state.mutex.lock();
        try {
          const p = await verify(this.core.db, remoteProof);
          if (!p) return false;
          const tx = this.core.storage.write();
          for (const node of p.proof.upgrade.nodes) {
            tx.putTreeNode(node);
          }
          await tx.flush();
          const succeed = p.proof.upgrade.nodes.length !== 0;
          if (succeed) {
            this.core.replicator.setPushOnly(false);
          }
          return succeed;
        } finally {
          this.core.state.mutex.unlock();
        }
      }
      recoverTreeNodeFromPeers() {
        this.core.replicator.setPushOnly(true);
        for (const peer of this.core.replicator.peers) {
          const req = {
            id: 0,
            fork: this.fork,
            upgrade: {
              start: 0,
              length: this.length
            }
          };
          peer.wireRequest.send(req);
        }
      }
      registerExtension(name, handlers = {}) {
        if (this.extensions.has(name)) {
          const ext2 = this.extensions.get(name);
          ext2.handlers = handlers;
          ext2.encoding = c4.from(handlers.encoding || c4.buffer);
          ext2.session = this;
          return ext2;
        }
        const ext = {
          name,
          handlers,
          encoding: c4.from(handlers.encoding || c4.buffer),
          session: this,
          send(message, peer) {
            const buffer = c4.encode(this.encoding, message);
            peer.extension(name, buffer);
          },
          broadcast(message) {
            const buffer = c4.encode(this.encoding, message);
            for (const peer of this.session.peers) {
              peer.extension(name, buffer);
            }
          },
          destroy() {
            for (const peer of this.session.peers) {
              if (peer.extensions.get(name) === ext) peer.extensions.delete(name);
            }
            this.session.extensions.delete(name);
          },
          _onmessage(state, peer) {
            const m = this.encoding.decode(state);
            if (this.handlers.onmessage) this.handlers.onmessage(m, peer);
          }
        };
        this.extensions.set(name, ext);
        if (this.core === null) this._monitorIndex = -2;
        else this.core.addMonitor(this);
        for (const peer of this.peers) {
          peer.extensions.set(name, ext);
        }
        return ext;
      }
      _encode(enc, val) {
        const state = { start: this.padding, end: this.padding, buffer: null };
        if (b4a4.isBuffer(val)) {
          if (state.start === 0) return val;
          state.end += val.byteLength;
        } else if (enc) {
          enc.preencode(state, val);
        } else {
          val = b4a4.from(val);
          if (state.start === 0) return val;
          state.end += val.byteLength;
        }
        state.buffer = b4a4.allocUnsafe(state.end);
        if (enc) enc.encode(state, val);
        else state.buffer.set(val, state.start);
        return state.buffer;
      }
      _decode(enc, block, index) {
        if (this.encryption) block = block.subarray(this.encryption.padding(this.core, index));
        try {
          if (enc) return c4.decode(enc, block);
        } catch (err) {
          throw DECODING_ERROR(err.message, this.discoveryKey);
        }
        return block;
      }
      _getEncryptionProvider(e) {
        if (isEncryptionProvider(e)) return e;
        if (!e || !e.key) return null;
        return new DefaultEncryption(e.key, this.key, { block: e.block, compat: this.core.compat });
      }
    };
    module2.exports = Hypercore;
    function isStream(s) {
      return typeof s === "object" && s && typeof s.pipe === "function";
    }
    async function preappend(blocks) {
      const offset = this.state.length;
      const fork = this.state.encryptionFork;
      for (let i = 0; i < blocks.length; i++) {
        await this.encryption.encrypt(offset + i, blocks[i], fork, this.core);
      }
    }
    function isValidIndex(index) {
      return index === 0 || index > 0;
    }
    function maybeUnslab(block) {
      return block !== null && 2 * block.byteLength < block.buffer.byteLength ? unslab(block) : block;
    }
    function checkSnapshot(snapshot, index) {
      if (index >= snapshot.state.snapshotCompatLength) {
        throw SNAPSHOT_NOT_AVAILABLE(
          `snapshot at index ${index} not available (max compat length ${snapshot.state.snapshotCompatLength})`,
          snapshot.discoveryKey
        );
      }
    }
    function readBlock(rx, index) {
      const promise = rx.getBlock(index);
      rx.tryFlush();
      return promise;
    }
    function initOnce(session, storage, key, opts) {
      if (storage === null) storage = opts.storage || null;
      if (key === null) key = opts.key || null;
      session.core = new Core(Hypercore.defaultStorage(storage), {
        preopen: opts.preopen,
        eagerUpgrade: opts.eagerUpgrade !== false,
        notDownloadingLinger: opts.notDownloadingLinger,
        allowFork: opts.allowFork !== false,
        allowPush: !!opts.allowPush,
        pushOnly: !!opts.pushOnly,
        alwaysLatestBlock: !!opts.allowLatestBlock,
        inflightRange: opts.inflightRange,
        compat: opts.compat === true,
        force: opts.force,
        createIfMissing: opts.createIfMissing,
        discoveryKey: opts.discoveryKey,
        overwrite: opts.overwrite,
        key,
        keyPair: opts.keyPair,
        legacy: opts.legacy,
        manifest: opts.manifest,
        globalCache: opts.globalCache || null
        // session is a temp option, not to be relied on unless you know what you are doing (no semver guarantees)
      });
    }
    function maybeAddMonitor(name) {
      if (name === "append" || name === "truncate") return;
      if (this._monitorIndex >= 0 || this.closing) return;
      if (this.core === null) {
        this._monitorIndex = -2;
      } else {
        this.core.addMonitor(this);
      }
    }
    function isSessionMoved(err) {
      return err.code === "SESSION_MOVED";
    }
    function getEncryptionOption(opts) {
      if (opts.encryptionKey) return { key: opts.encryptionKey, block: !!opts.isBlockKey };
      if (!opts.encryption) return null;
      return b4a4.isBuffer(opts.encryption) ? { key: opts.encryption } : opts.encryption;
    }
    function isEncryptionProvider(e) {
      return e && isFunction(e.padding) && isFunction(e.encrypt) && isFunction(e.decrypt);
    }
    function isFunction(fn) {
      return !!fn && typeof fn === "function";
    }
    function createDiscoveryKeyHandler(fn) {
      return ondiscoverykey;
      function ondiscoverykey(id2) {
        if (!id2 || id2.byteLength !== 32) throw BAD_ARGUMENT("Invalid discovery key");
        return fn(id2);
      }
    }
  }
});

// node_modules/encryption-encoding/spec/hyperschema/index.js
var require_hyperschema2 = __commonJS({
  "node_modules/encryption-encoding/spec/hyperschema/index.js"(exports2, module2) {
    var { c: c4 } = require_runtime();
    var VERSION3 = 1;
    var version3 = VERSION3;
    var encoding03 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.type);
        c4.buffer.preencode(state, m.value);
      },
      encode(state, m) {
        c4.uint.encode(state, m.type);
        c4.buffer.encode(state, m.value);
      },
      decode(state) {
        const r0 = c4.uint.decode(state);
        const r1 = c4.buffer.decode(state);
        return {
          type: r0,
          value: r1
        };
      }
    };
    function setVersion3(v) {
      version3 = v;
    }
    function encode2(name, value, v = VERSION3) {
      version3 = v;
      return c4.encode(getEncoding3(name), value);
    }
    function decode2(name, buffer, v = VERSION3) {
      version3 = v;
      return c4.decode(getEncoding3(name), buffer);
    }
    function getEnum(name) {
      switch (name) {
        default:
          throw new Error("Enum not found " + name);
      }
    }
    function getEncoding3(name) {
      switch (name) {
        case "@encryption/encrypted-data":
          return encoding03;
        default:
          throw new Error("Encoder not found " + name);
      }
    }
    function getStruct(name, v = VERSION3) {
      const enc = getEncoding3(name);
      return {
        preencode(state, m) {
          version3 = v;
          enc.preencode(state, m);
        },
        encode(state, m) {
          version3 = v;
          enc.encode(state, m);
        },
        decode(state) {
          version3 = v;
          return enc.decode(state);
        }
      };
    }
    var resolveStruct = getStruct;
    module2.exports = {
      resolveStruct,
      getStruct,
      getEnum,
      getEncoding: getEncoding3,
      encode: encode2,
      decode: decode2,
      setVersion: setVersion3,
      version: version3
    };
  }
});

// node_modules/encryption-encoding/index.js
var require_encryption_encoding = __commonJS({
  "node_modules/encryption-encoding/index.js"(exports2, module2) {
    var { encode: encode2, decode: decode2 } = require_hyperschema2();
    async function encrypt(data, cb) {
      const result = await cb(data);
      return encode2("@encryption/encrypted-data", result);
    }
    async function decrypt(data, cb) {
      const decoded = decode2("@encryption/encrypted-data", data);
      const decrypted = await cb(decoded);
      return decrypted;
    }
    module2.exports = { encrypt, decrypt };
  }
});

// node_modules/index-encoder/index.js
var require_index_encoder = __commonJS({
  "node_modules/index-encoder/index.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var EMPTY = b4a4.alloc(0);
    var MAX = b4a4.from([255]);
    var BUFFER = {};
    BUFFER.preencode = function(state, buf) {
      if (buf === null) buf = EMPTY;
      let i = 0;
      let extra = 3;
      while ((i = b4a4.indexOf(buf, 0, i)) > -1) {
        i++;
        extra++;
      }
      state.end += buf.byteLength + extra;
    };
    BUFFER.encode = function(state, buf) {
      if (buf === null) buf = EMPTY;
      state.buffer[state.start++] = 0;
      let prev = 0;
      let i = 0;
      while ((i = b4a4.indexOf(buf, 0, i)) > -1) {
        const slice2 = buf.subarray(prev, ++i);
        state.buffer.set(slice2, state.start);
        state.start += slice2.byteLength;
        state.buffer[state.start++] = 2;
        prev = i;
      }
      const slice = buf.subarray(prev);
      state.buffer.set(slice, state.start);
      state.start += slice.byteLength;
      state.buffer[state.start++] = 0;
      state.buffer[state.start++] = 1;
    };
    BUFFER.decode = function(state) {
      if (state.start >= state.end) throw new Error("Out of bounds");
      if (state.buffer[state.start++] !== 0) {
        throw new Error("Invalid start of string");
      }
      let escaped = null;
      let prev = state.start;
      let i = state.start;
      while ((i = b4a4.indexOf(state.buffer, 0, i)) > -1) {
        const next = ++i < state.end ? state.buffer[i] : 0;
        i++;
        if (next === 1) {
          break;
        }
        if (next === 2) {
          if (escaped === null) escaped = [];
          escaped.push(state.buffer.subarray(prev, i - 1));
          prev = i;
          continue;
        }
        throw new Error("Unknown value in terminator");
      }
      if (i === -1) {
        throw new Error("No terminator found");
      }
      state.start = i;
      const last = state.buffer.subarray(prev, i - 2);
      if (escaped === null) return last;
      escaped.push(last);
      return b4a4.concat(escaped);
    };
    var STRING = {};
    STRING.preencode = function(state, str) {
      BUFFER.preencode(state, b4a4.from(str || ""));
    };
    STRING.encode = function(state, str) {
      BUFFER.encode(state, b4a4.from(str || ""));
    };
    STRING.decode = function(state, str) {
      return b4a4.toString(BUFFER.decode(state));
    };
    var UINT = {};
    UINT.preencode = function(state, n) {
      state.end += n <= 251 ? 1 : n <= 65535 ? 3 : n <= 4294967295 ? 5 : n === Infinity ? 1 : 9;
    };
    UINT.encode = function(state, n) {
      if (n === Infinity) {
        state.buffer[state.start++] = 255;
        return;
      }
      if (n <= 251) {
        state.buffer[state.start++] = n;
        return;
      }
      if (n <= 65535) {
        state.buffer[state.start++] = 252;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n;
        return;
      }
      if (n <= 4294967295) {
        state.buffer[state.start++] = 253;
        encodeUint32(state, n);
        return;
      }
      if (Number.isSafeInteger(n)) {
        state.buffer[state.start++] = 254;
        const r = Math.floor(n / 4294967296);
        encodeUint32(state, r);
        encodeUint32(state, n);
        return;
      }
      throw new Error("Invalid number " + n);
    };
    UINT.decode = function(state) {
      if (state.start >= state.end) throw new Error("Out of bounds");
      const a = state.buffer[state.start++];
      if (a <= 251) return a;
      if (a === 252) {
        if (state.end - state.start < 2) throw new Error("Out of bounds");
        return state.buffer[state.start++] * 256 + state.buffer[state.start++];
      }
      if (a === 253) {
        return decodeUint32(state);
      }
      if (a === 254) {
        return decodeUint32(state) * 4294967296 + decodeUint32(state);
      }
      return Infinity;
    };
    var INT = {};
    INT.preencode = function(state, n) {
      if (n >= -255 && n < 0) {
        state.end += 2;
        return;
      }
      n = Math.abs(n);
      state.end += n <= 246 ? 1 : n <= 65535 ? 3 : n <= 4294967295 ? 5 : n === Infinity ? 1 : 9;
    };
    INT.encode = function(state, n) {
      if (n === Infinity) {
        state.buffer[state.start++] = 255;
        return;
      }
      if (n === -Infinity) {
        state.buffer[state.start++] = 0;
        return;
      }
      if (n < -4294967295) {
        if (!Number.isSafeInteger(n)) throw new Error("Invalid number " + n);
        state.buffer[state.start++] = 1;
        const r = Math.floor(-n / 4294967296);
        encodeUint32(state, -r + 4294967295);
        encodeUint32(state, -(-n % 4294967296) + 4294967295);
        return;
      }
      if (n < -65535) {
        state.buffer[state.start++] = 2;
        n += 4294967295;
        encodeUint32(state, n);
        return;
      }
      if (n < -255) {
        state.buffer[state.start++] = 3;
        n += 65535;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n;
        return;
      }
      if (n < 0) {
        state.buffer[state.start++] = 4;
        n += 255;
        state.buffer[state.start++] = n;
        return;
      }
      if (n <= 246) {
        state.buffer[state.start++] = n + 5;
        return;
      }
      if (n <= 65535) {
        state.buffer[state.start++] = 252;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n;
        return;
      }
      if (n <= 4294967295) {
        state.buffer[state.start++] = 253;
        encodeUint32(state, n);
        return;
      }
      if (Number.isSafeInteger(n)) {
        state.buffer[state.start++] = 254;
        const r = Math.floor(n / 4294967296);
        encodeUint32(state, r);
        encodeUint32(state, n);
        return;
      }
      throw new Error("Invalid number " + n);
    };
    INT.decode = function(state) {
      if (state.start >= state.end) throw new Error("Out of bounds");
      const a = state.buffer[state.start++];
      if (a === 0) return -Infinity;
      if (a === 1) {
        return (decodeUint32(state) - 4294967295) * 4294967296 + decodeUint32(state) - 4294967295;
      }
      if (a === 2) {
        return decodeUint32(state) - 4294967295;
      }
      if (a === 3) {
        if (state.end - state.start < 2) throw new Error("Out of bounds");
        return state.buffer[state.start++] * 256 + state.buffer[state.start++] - 65535;
      }
      if (a === 4) return state.buffer[state.start++] - 255;
      if (a <= 251) return a - 5;
      if (a === 252) {
        if (state.end - state.start < 2) throw new Error("Out of bounds");
        return state.buffer[state.start++] * 256 + state.buffer[state.start++];
      }
      if (a === 253) {
        return decodeUint32(state);
      }
      if (a === 254) {
        return decodeUint32(state) * 4294967296 + decodeUint32(state);
      }
      return Infinity;
    };
    var DATE = {};
    DATE.preencode = (state, d) => INT.preencode(state, d.getTime());
    DATE.encode = (state, d) => INT.encode(state, d.getTime());
    DATE.decode = (state) => new Date(INT.decode(state));
    var BOOL = {};
    BOOL.preencode = (state, b) => UINT.preencode(state, b ? 1 : 0);
    BOOL.encode = (state, b) => UINT.encode(state, b ? 1 : 0);
    BOOL.decode = (state) => !!UINT.decode(state);
    module2.exports = class IndexEncoder {
      constructor(encodings, { prefix = -1 } = {}) {
        this.encodings = encodings;
        this.prefix = prefix;
      }
      static BUFFER = BUFFER;
      static STRING = STRING;
      static UINT = UINT;
      static INT = INT;
      static DATE = DATE;
      static BOOL = BOOL;
      static lookup(c4) {
        switch (c4) {
          case "uint":
            return UINT;
          case "uint8":
            return UINT;
          case "uint16":
            return UINT;
          case "uint24":
            return UINT;
          case "uint32":
            return UINT;
          case "uint40":
            return UINT;
          case "uint48":
            return UINT;
          case "uint56":
            return UINT;
          case "uint64":
            return UINT;
          case "int":
            return INT;
          case "int8":
            return INT;
          case "int16":
            return INT;
          case "int24":
            return INT;
          case "int32":
            return INT;
          case "int40":
            return INT;
          case "int48":
            return INT;
          case "int56":
            return INT;
          case "int64":
            return INT;
          case "string":
            return STRING;
          case "utf8":
            return STRING;
          case "ascii":
            return STRING;
          case "hex":
            return STRING;
          case "base64":
            return STRING;
          case "fixed32":
            return BUFFER;
          case "fixed64":
            return BUFFER;
          case "buffer":
            return BUFFER;
          case "date":
            return DATE;
          case "bool":
            return BOOL;
        }
        throw new Error("Unknown type");
      }
      encode(keys) {
        return this._encode(keys, false);
      }
      _encode(keys, terminate) {
        if (b4a4.isBuffer(keys)) return keys;
        const state = { start: 0, end: 0, buffer: null };
        if (this.prefix !== -1) UINT.preencode(state, this.prefix);
        for (let i = 0; i < keys.length; i++) {
          this.encodings[i].preencode(state, keys[i]);
        }
        if (terminate && keys.length < this.encodings.length) {
          state.end++;
        }
        state.buffer = b4a4.allocUnsafe(state.end);
        if (this.prefix !== -1) UINT.encode(state, this.prefix);
        for (let i = 0; i < keys.length; i++) {
          this.encodings[i].encode(state, keys[i]);
        }
        if (terminate && keys.length < this.encodings.length) {
          state.buffer[state.start++] = MAX[0];
        }
        return state.buffer;
      }
      decode(buffer) {
        const state = { start: 0, end: buffer.byteLength, buffer };
        const result = [];
        if (this.prefix !== -1) UINT.decode(state);
        for (const enc of this.encodings) {
          const key = state.start < state.end ? enc.decode(state) : enc === UINT ? 0 : null;
          result.push(key);
        }
        return result;
      }
      encodeRange({ gt, gte, lt, lte }) {
        const range = {
          gt: gt && this._encode(gt, true),
          gte: gte && this._encode(gte, false),
          lt: lt && this._encode(lt, false),
          lte: lte && this._encode(lte, true)
        };
        if (this.prefix !== -1) {
          if (!gt && !gte) range.gte = encodeUint(this.prefix);
          if (!lt && !lte) range.lt = encodeUint(this.prefix + 1);
        }
        return range;
      }
    };
    function encodeUint(n) {
      const state = { start: 0, end: 0, buffer: null };
      UINT.preencode(state, n);
      state.buffer = b4a4.allocUnsafe(state.end);
      UINT.encode(state, n);
      return state.buffer;
    }
    function encodeUint32(state, n) {
      state.buffer[state.start++] = n >>> 24;
      state.buffer[state.start++] = n >>> 16;
      state.buffer[state.start++] = n >>> 8;
      state.buffer[state.start++] = n;
    }
    function decodeUint32(state) {
      if (state.end - state.start < 4) throw new Error("Out of bounds");
      return state.buffer[state.start++] * 16777216 + state.buffer[state.start++] * 65536 + state.buffer[state.start++] * 256 + state.buffer[state.start++];
    }
  }
});

// node_modules/autobase/encoding/legacy.js
var require_legacy = __commonJS({
  "node_modules/autobase/encoding/legacy.js"(exports2, module2) {
    var c4 = require_compact_encoding();
    var IndexEncoder2 = require_index_encoder();
    var Checkout = {
      preencode(state, m) {
        c4.fixed32.preencode(state, m.key);
        c4.uint.preencode(state, m.length);
      },
      encode(state, m) {
        c4.fixed32.encode(state, m.key);
        c4.uint.encode(state, m.length);
      },
      decode(state) {
        return {
          key: c4.fixed32.decode(state),
          length: c4.uint.decode(state)
        };
      }
    };
    var Clock = c4.array(Checkout);
    var IndexCheckpoint = {
      preencode(state, m) {
        c4.fixed64.preencode(state, m.signature);
        c4.uint.preencode(state, m.length);
      },
      encode(state, m) {
        c4.fixed64.encode(state, m.signature);
        c4.uint.encode(state, m.length);
      },
      decode(state) {
        return {
          signature: c4.fixed64.decode(state),
          length: c4.uint.decode(state)
        };
      }
    };
    var KeyV0 = {
      preencode(state, m) {
        c4.fixed32.preencode(state, m.key);
      },
      encode(state, m) {
        c4.fixed32.encode(state, m.key);
      },
      decode(state) {
        return {
          key: c4.fixed32.decode(state),
          length: -1
        };
      }
    };
    var KeysV0 = c4.array(KeyV0);
    var WakeupV0 = {
      preencode(state, m) {
        c4.uint.preencode(state, 0);
        c4.uint.preencode(state, m.type);
        if (m.type === 1) {
          KeysV0.preencode(state, m.writers);
        }
      },
      encode(state, m) {
        c4.uint.encode(state, 0);
        c4.uint.encode(state, m.type);
        if (m.type === 1) {
          KeysV0.encode(state, m.writers);
        }
      },
      decode(state) {
        const v = c4.uint.decode(state);
        if (v !== 0) throw new Error("Unsupported version: " + v);
        const type = c4.uint.decode(state);
        const m = { version: 0, type, writers: null };
        if (m.type === 1) {
          m.writers = KeysV0.decode(state);
        }
        return m;
      }
    };
    var Wakeup = {
      preencode(state, m) {
        if (m.version === 0) return WakeupV0.preencode(state, m);
        c4.uint.preencode(state, 1);
        c4.uint.preencode(state, m.type);
        if (m.type === 1) {
          Clock.preencode(state, m.writers);
        }
      },
      encode(state, m) {
        if (m.version === 0) return WakeupV0.encode(state, m);
        c4.uint.encode(state, 1);
        c4.uint.encode(state, m.type);
        if (m.type === 1) {
          Clock.encode(state, m.writers);
        }
      },
      decode(state) {
        const start = state.start;
        const v = c4.uint.decode(state);
        if (v > 1) throw new Error("Unsupported version: " + v);
        if (v === 0) {
          state.start = start;
          return WakeupV0.decode(state);
        }
        const type = c4.uint.decode(state);
        const m = { version: 1, type, writers: null };
        if (m.type === 1) {
          m.writers = Clock.decode(state);
        }
        return m;
      }
    };
    var BootRecordV0 = {
      preencode() {
        throw new Error("version 0 records cannot be encoded");
      },
      encode() {
        throw new Error("version 0 records cannot be encoded");
      },
      decode(state) {
        const indexed = Checkout.decode(state);
        const heads = Clock.decode(state);
        return {
          version: 0,
          key: indexed.key,
          systemLength: indexed.length,
          indexersUpdated: false,
          fastForwarding: false,
          recoveries: 1,
          migrating: false,
          heads
        };
      }
    };
    var Checkpointer = {
      preencode(state, idx) {
        c4.uint.preencode(state, idx.checkpointer);
        if (idx.checkpoint !== null) IndexCheckpoint.preencode(state, idx.checkpoint);
      },
      encode(state, idx) {
        c4.uint.encode(state, idx.checkpointer);
        if (idx.checkpoint !== null) IndexCheckpoint.encode(state, idx.checkpoint);
      },
      decode(state) {
        const checkpointer = c4.uint.decode(state);
        const checkpoint = checkpointer ? null : IndexCheckpoint.decode(state);
        return {
          checkpointer,
          checkpoint
        };
      }
    };
    var CheckpointerArray = c4.array(Checkpointer);
    var Indexer = {
      preencode(state, m) {
        c4.uint.preencode(state, m.signature);
        c4.fixed32.preencode(state, m.namespace);
        c4.fixed32.preencode(state, m.publicKey);
      },
      encode(state, m) {
        c4.uint.encode(state, m.signature);
        c4.fixed32.encode(state, m.namespace);
        c4.fixed32.encode(state, m.publicKey);
      },
      decode(state) {
        return {
          signature: c4.uint.decode(state),
          namespace: c4.fixed32.decode(state),
          publicKey: c4.fixed32.decode(state)
        };
      }
    };
    var Indexers = c4.array(Indexer);
    var DigestV0 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.pointer);
        if (m.pointer === 0) {
          Indexers.preencode(state, m.indexers);
        }
      },
      encode(state, m) {
        c4.uint.encode(state, m.pointer);
        if (m.pointer === 0) {
          Indexers.encode(state, m.indexers);
        }
      },
      decode(state) {
        const pointer = c4.uint.decode(state);
        return {
          pointer,
          indexers: pointer === 0 ? Indexers.decode(state) : null
        };
      }
    };
    var Digest = {
      preencode(state, m) {
        c4.uint.preencode(state, m.pointer);
        if (m.pointer === 0) {
          c4.fixed32.preencode(state, m.key);
        }
      },
      encode(state, m) {
        c4.uint.encode(state, m.pointer);
        if (m.pointer === 0) {
          c4.fixed32.encode(state, m.key);
        }
      },
      decode(state) {
        const pointer = c4.uint.decode(state);
        return {
          pointer,
          key: pointer === 0 ? c4.fixed32.decode(state) : null
        };
      }
    };
    var Node = {
      preencode(state, m) {
        Clock.preencode(state, m.heads);
        c4.uint.preencode(state, m.batch);
        c4.buffer.preencode(state, m.value);
      },
      encode(state, m) {
        Clock.encode(state, m.heads);
        c4.uint.encode(state, m.batch);
        c4.buffer.encode(state, m.value);
      },
      decode(state, m) {
        return {
          heads: Clock.decode(state),
          batch: c4.uint.decode(state),
          value: c4.buffer.decode(state)
        };
      }
    };
    var Additional = {
      preencode(state, m) {
        c4.uint.preencode(state, m.pointer);
        if (m.pointer === 0) {
          AdditionalData.preencode(state, m.data);
        }
      },
      encode(state, m) {
        c4.uint.encode(state, m.pointer);
        if (m.pointer === 0) {
          AdditionalData.encode(state, m.data);
        }
      },
      decode(state) {
        const pointer = c4.uint.decode(state);
        return {
          pointer,
          data: pointer === 0 ? AdditionalData.decode(state) : null
        };
      }
    };
    var AdditionalData = {
      preencode(state, m) {
        c4.uint.preencode(state, 0);
      },
      encode(state, m) {
        c4.uint.encode(state, 0);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          encryptionId: flags & 1 ? c4.fixed32.decode(state) : null,
          // to help validate the encryption key used
          abi: flags & 2 ? c4.uint.decode(state) : 0
        };
      }
    };
    var OplogMessageV1 = {
      preencode(state, m) {
        throw new Error("Encoding not supported");
      },
      encode(state, m) {
        throw new Error("Encoding not supported");
      },
      decode(state) {
        const maxSupportedVersion = c4.uint.decode(state);
        const flags = c4.uint.decode(state);
        const isCheckpointer = (flags & 1) !== 0;
        const chk = isCheckpointer ? CheckpointerArray.decode(state) : null;
        const digest = isCheckpointer ? Digest.decode(state) : null;
        const node = Node.decode(state);
        return {
          version: 1,
          maxSupportedVersion,
          digest,
          checkpoint: chk ? { system: chk[0], encryption: null, user: chk.slice(1) } : null,
          optimistic: (flags & 2) !== 0,
          node
        };
      }
    };
    var OplogMessageV0 = {
      preencode(state, m) {
        throw new Error("Encoding not supported");
      },
      encode(state, m) {
        throw new Error("Encoding not supported");
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        const isCheckpointer = (flags & 1) !== 0;
        if (isCheckpointer) DigestV0.decode(state);
        const chk = isCheckpointer ? CheckpointerArray.decode(state) : null;
        const node = Node.decode(state);
        Additional.decode(state);
        const maxSupportedVersion = state.start < state.end ? c4.uint.decode(state) : 0;
        return {
          version: 0,
          maxSupportedVersion,
          digest: null,
          checkpoint: chk ? { system: chk[0], encryption: null, user: chk.slice(1) } : null,
          optimistic: null,
          node
        };
      }
    };
    var LINEARIZER_PREFIX = 1;
    var LinearizerKey = {
      preencode(state, seq) {
        IndexEncoder2.UINT.preencode(state, LINEARIZER_PREFIX);
        IndexEncoder2.UINT.preencode(state, seq);
      },
      encode(state, seq) {
        IndexEncoder2.UINT.encode(state, LINEARIZER_PREFIX);
        IndexEncoder2.UINT.encode(state, seq);
      },
      decode(state) {
        IndexEncoder2.UINT.decode(state);
        return IndexEncoder2.UINT.decode(state);
      }
    };
    function infoLegacyMap(info) {
      return {
        version: info.version,
        members: info.members,
        pendingIndexers: info.pendingIndexers,
        indexers: info.indexers,
        heads: info.heads,
        views: info.views,
        encryptionLength: 0,
        entropy: null
      };
    }
    module2.exports = {
      Wakeup,
      BootRecordV0,
      OplogMessageV0,
      OplogMessageV1,
      LinearizerKey,
      infoLegacyMap
    };
  }
});

// node_modules/autobase/encoding/spec/autobase/index.js
var require_autobase = __commonJS({
  "node_modules/autobase/encoding/spec/autobase/index.js"(exports2, module2) {
    var { c: c4 } = require_runtime();
    var external0 = require_legacy();
    var VERSION3 = 1;
    var version3 = VERSION3;
    var encoding03 = {
      preencode(state, m) {
        c4.fixed32.preencode(state, m.key);
        c4.uint.preencode(state, m.length);
      },
      encode(state, m) {
        c4.fixed32.encode(state, m.key);
        c4.uint.encode(state, m.length);
      },
      decode(state) {
        const r0 = c4.fixed32.decode(state);
        const r1 = c4.uint.decode(state);
        return {
          key: r0,
          length: r1
        };
      }
    };
    var encoding110 = c4.array(encoding03);
    var encoding23 = {
      preencode(state, m) {
        c4.fixed64.preencode(state, m.signature);
        c4.uint.preencode(state, m.length);
      },
      encode(state, m) {
        c4.fixed64.encode(state, m.signature);
        c4.uint.encode(state, m.length);
      },
      decode(state) {
        const r0 = c4.fixed64.decode(state);
        const r1 = c4.uint.decode(state);
        return {
          signature: r0,
          length: r1
        };
      }
    };
    var encoding33 = external0.Wakeup;
    var encoding43 = external0.BootRecordV0;
    var encoding53 = {
      preencode(state, m) {
        c4.fixed32.preencode(state, m.key);
        c4.uint.preencode(state, m.systemLength);
        state.end++;
        if (m.recoveries) c4.uint.preencode(state, m.recoveries);
      },
      encode(state, m) {
        const flags = (m.indexersUpdated ? 1 : 0) | (m.fastForwarding ? 2 : 0) | (m.recoveries ? 4 : 0);
        c4.fixed32.encode(state, m.key);
        c4.uint.encode(state, m.systemLength);
        c4.uint.encode(state, flags);
        if (m.recoveries) c4.uint.encode(state, m.recoveries);
      },
      decode(state, version4) {
        if (version4 === void 0) version4 = c4.uint.decode(state);
        const r0 = c4.fixed32.decode(state);
        const r1 = c4.uint.decode(state);
        const flags = c4.uint.decode(state);
        return {
          version: version4,
          key: r0,
          systemLength: r1,
          indexersUpdated: (flags & 1) !== 0,
          fastForwarding: (flags & 2) !== 0,
          recoveries: (flags & 4) !== 0 ? c4.uint.decode(state) : 0
        };
      }
    };
    var encoding63 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.version);
        switch (m.version) {
          case 0:
            encoding43.preencode(state, m);
            break;
          case 1:
          case 2:
          case 3:
            encoding53.preencode(state, m);
            break;
          default:
            throw new Error("Unsupported version");
        }
      },
      encode(state, m) {
        c4.uint.encode(state, m.version);
        switch (m.version) {
          case 0:
            encoding43.encode(state, m);
            break;
          case 1:
          case 2:
          case 3:
            encoding53.encode(state, m);
            break;
          default:
            throw new Error("Unsupported version");
        }
      },
      decode(state) {
        const version4 = c4.uint.decode(state);
        switch (version4) {
          case 0: {
            const decoded = encoding43.decode(state, version4);
            return decoded;
          }
          case 1:
          case 2:
          case 3: {
            const decoded = encoding53.decode(state, version4);
            return decoded;
          }
          default:
            throw new Error("Unsupported version");
        }
      }
    };
    var encoding73 = {
      preencode(state, m) {
        state.end++;
        if (m.checkpointer) c4.uint.preencode(state, m.checkpointer);
        if (m.checkpoint) encoding23.preencode(state, m.checkpoint);
      },
      encode(state, m) {
        const flags = (m.checkpointer ? 1 : 0) | (m.checkpoint ? 2 : 0);
        c4.uint.encode(state, flags);
        if (m.checkpointer) c4.uint.encode(state, m.checkpointer);
        if (m.checkpoint) encoding23.encode(state, m.checkpoint);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          checkpointer: (flags & 1) !== 0 ? c4.uint.decode(state) : 0,
          checkpoint: (flags & 2) !== 0 ? encoding23.decode(state) : null
        };
      }
    };
    var encoding8_2 = c4.array(encoding73);
    var encoding83 = {
      preencode(state, m) {
        state.end++;
        if (m.system) encoding73.preencode(state, m.system);
        if (m.encryption) encoding73.preencode(state, m.encryption);
        if (m.user) encoding8_2.preencode(state, m.user);
      },
      encode(state, m) {
        const flags = (m.system ? 1 : 0) | (m.encryption ? 2 : 0) | (m.user ? 4 : 0);
        c4.uint.encode(state, flags);
        if (m.system) encoding73.encode(state, m.system);
        if (m.encryption) encoding73.encode(state, m.encryption);
        if (m.user) encoding8_2.encode(state, m.user);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          system: (flags & 1) !== 0 ? encoding73.decode(state) : null,
          encryption: (flags & 2) !== 0 ? encoding73.decode(state) : null,
          user: (flags & 4) !== 0 ? encoding8_2.decode(state) : null
        };
      }
    };
    var encoding93 = {
      preencode(state, m) {
        state.end++;
        if (m.pointer) c4.uint.preencode(state, m.pointer);
        if (m.key) c4.fixed32.preencode(state, m.key);
      },
      encode(state, m) {
        const flags = (m.pointer ? 1 : 0) | (m.key ? 2 : 0);
        c4.uint.encode(state, flags);
        if (m.pointer) c4.uint.encode(state, m.pointer);
        if (m.key) c4.fixed32.encode(state, m.key);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          pointer: (flags & 1) !== 0 ? c4.uint.decode(state) : 0,
          key: (flags & 2) !== 0 ? c4.fixed32.decode(state) : null
        };
      }
    };
    var encoding103 = {
      preencode(state, m) {
        encoding110.preencode(state, m.heads);
        c4.uint.preencode(state, m.batch);
        c4.buffer.preencode(state, m.value);
      },
      encode(state, m) {
        encoding110.encode(state, m.heads);
        c4.uint.encode(state, m.batch);
        c4.buffer.encode(state, m.value);
      },
      decode(state) {
        const r0 = encoding110.decode(state);
        const r1 = c4.uint.decode(state);
        const r2 = c4.buffer.decode(state);
        return {
          heads: r0,
          batch: r1,
          value: r2
        };
      }
    };
    var encoding11_0 = c4.array(c4.uint);
    var encoding11_1 = encoding11_0;
    var encoding113 = {
      preencode(state, m) {
        encoding11_0.preencode(state, m.system);
        encoding11_1.preencode(state, m.encryption);
        encoding11_2.preencode(state, m.user);
      },
      encode(state, m) {
        encoding11_0.encode(state, m.system);
        encoding11_1.encode(state, m.encryption);
        encoding11_2.encode(state, m.user);
      },
      decode(state) {
        const r0 = encoding11_0.decode(state);
        const r1 = encoding11_1.decode(state);
        const r2 = encoding11_2.decode(state);
        return {
          system: r0,
          encryption: r1,
          user: r2
        };
      }
    };
    var encoding123 = external0.OplogMessageV0;
    var encoding133 = external0.OplogMessageV1;
    var encoding14_1 = c4.frame(encoding83);
    var encoding14_2 = c4.frame(encoding93);
    var encoding14_4 = c4.frame(encoding113);
    var encoding143 = {
      preencode(state, m) {
        encoding103.preencode(state, m.node);
        state.end++;
        if (m.checkpoint) encoding14_1.preencode(state, m.checkpoint);
        if (m.digest) encoding14_2.preencode(state, m.digest);
        if (m.trace) encoding14_4.preencode(state, m.trace);
      },
      encode(state, m) {
        const flags = (m.checkpoint ? 1 : 0) | (m.digest ? 2 : 0) | (m.optimistic ? 4 : 0) | (m.trace ? 8 : 0);
        encoding103.encode(state, m.node);
        c4.uint.encode(state, flags);
        if (m.checkpoint) encoding14_1.encode(state, m.checkpoint);
        if (m.digest) encoding14_2.encode(state, m.digest);
        if (m.trace) encoding14_4.encode(state, m.trace);
      },
      decode(state, version4) {
        if (version4 === void 0) version4 = c4.uint.decode(state);
        const r0 = encoding103.decode(state);
        const flags = c4.uint.decode(state);
        return {
          version: version4,
          node: r0,
          checkpoint: (flags & 1) !== 0 ? encoding14_1.decode(state) : null,
          digest: (flags & 2) !== 0 ? encoding14_2.decode(state) : null,
          optimistic: (flags & 4) !== 0,
          trace: (flags & 8) !== 0 ? encoding14_4.decode(state) : null
        };
      }
    };
    var encoding153 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.version);
        switch (m.version) {
          case 0:
            encoding123.preencode(state, m);
            break;
          case 1:
            encoding133.preencode(state, m);
            break;
          case 2:
            encoding143.preencode(state, m);
            break;
          default:
            throw new Error("Unsupported version");
        }
      },
      encode(state, m) {
        c4.uint.encode(state, m.version);
        switch (m.version) {
          case 0:
            encoding123.encode(state, m);
            break;
          case 1:
            encoding133.encode(state, m);
            break;
          case 2:
            encoding143.encode(state, m);
            break;
          default:
            throw new Error("Unsupported version");
        }
      },
      decode(state) {
        const version4 = c4.uint.decode(state);
        switch (version4) {
          case 0: {
            const decoded = encoding123.decode(state, version4);
            return decoded;
          }
          case 1: {
            const decoded = encoding133.decode(state, version4);
            return decoded;
          }
          case 2: {
            const decoded = encoding143.decode(state, version4);
            return decoded;
          }
          default:
            throw new Error("Unsupported version");
        }
      }
    };
    var encoding16_1 = c4.array(c4.fixed32);
    var encoding163 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.members);
        encoding16_1.preencode(state, m.pendingIndexers);
        encoding110.preencode(state, m.indexers);
        encoding110.preencode(state, m.heads);
        encoding110.preencode(state, m.views);
      },
      encode(state, m) {
        c4.uint.encode(state, m.members);
        encoding16_1.encode(state, m.pendingIndexers);
        encoding110.encode(state, m.indexers);
        encoding110.encode(state, m.heads);
        encoding110.encode(state, m.views);
      },
      decode(state, version4) {
        if (version4 === void 0) version4 = c4.uint.decode(state);
        const r0 = c4.uint.decode(state);
        const r1 = encoding16_1.decode(state);
        const r2 = encoding110.decode(state);
        const r3 = encoding110.decode(state);
        const r4 = encoding110.decode(state);
        return {
          version: version4,
          members: r0,
          pendingIndexers: r1,
          indexers: r2,
          heads: r3,
          views: r4
        };
      }
    };
    var encoding17_1 = encoding16_1;
    var encoding172 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.members);
        encoding17_1.preencode(state, m.pendingIndexers);
        encoding110.preencode(state, m.indexers);
        encoding110.preencode(state, m.heads);
        encoding110.preencode(state, m.views);
        c4.uint.preencode(state, m.encryptionLength);
        state.end++;
        if (m.entropy) c4.fixed32.preencode(state, m.entropy);
      },
      encode(state, m) {
        const flags = m.entropy ? 1 : 0;
        c4.uint.encode(state, m.members);
        encoding17_1.encode(state, m.pendingIndexers);
        encoding110.encode(state, m.indexers);
        encoding110.encode(state, m.heads);
        encoding110.encode(state, m.views);
        c4.uint.encode(state, m.encryptionLength);
        c4.uint.encode(state, flags);
        if (m.entropy) c4.fixed32.encode(state, m.entropy);
      },
      decode(state, version4) {
        if (version4 === void 0) version4 = c4.uint.decode(state);
        const r0 = c4.uint.decode(state);
        const r1 = encoding17_1.decode(state);
        const r2 = encoding110.decode(state);
        const r3 = encoding110.decode(state);
        const r4 = encoding110.decode(state);
        const r5 = c4.uint.decode(state);
        const flags = c4.uint.decode(state);
        return {
          version: version4,
          members: r0,
          pendingIndexers: r1,
          indexers: r2,
          heads: r3,
          views: r4,
          encryptionLength: r5,
          entropy: (flags & 1) !== 0 ? c4.fixed32.decode(state) : null
        };
      }
    };
    var encoding182 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.version);
        switch (m.version) {
          case 0:
          case 1:
            encoding163.preencode(state, m);
            break;
          case 2:
            encoding172.preencode(state, m);
            break;
          default:
            throw new Error("Unsupported version");
        }
      },
      encode(state, m) {
        c4.uint.encode(state, m.version);
        switch (m.version) {
          case 0:
          case 1:
            encoding163.encode(state, m);
            break;
          case 2:
            encoding172.encode(state, m);
            break;
          default:
            throw new Error("Unsupported version");
        }
      },
      decode(state) {
        const version4 = c4.uint.decode(state);
        switch (version4) {
          case 0:
          case 1: {
            const decoded = encoding163.decode(state, version4);
            const map = external0.infoLegacyMap;
            return map(decoded);
          }
          case 2: {
            const decoded = encoding172.decode(state, version4);
            return decoded;
          }
          default:
            throw new Error("Unsupported version");
        }
      }
    };
    var encoding192 = {
      preencode(state, m) {
        state.end++;
        c4.uint.preencode(state, m.length);
      },
      encode(state, m) {
        const flags = (m.isIndexer ? 1 : 0) | (m.isRemoved ? 2 : 0);
        c4.uint.encode(state, flags);
        c4.uint.encode(state, m.length);
      },
      decode(state) {
        const flags = c4.uint.decode(state);
        return {
          isIndexer: (flags & 1) !== 0,
          isRemoved: (flags & 2) !== 0,
          length: c4.uint.decode(state)
        };
      }
    };
    var encoding202 = external0.LinearizerKey;
    var encoding212 = {
      preencode(state, m) {
        c4.fixed32.preencode(state, m.key);
        c4.uint.preencode(state, m.length);
        c4.uint.preencode(state, m.batch);
        c4.uint.preencode(state, m.systemLength);
        state.end++;
      },
      encode(state, m) {
        const flags = m.indexers ? 1 : 0;
        c4.fixed32.encode(state, m.key);
        c4.uint.encode(state, m.length);
        c4.uint.encode(state, m.batch);
        c4.uint.encode(state, m.systemLength);
        c4.uint.encode(state, flags);
      },
      decode(state) {
        const r0 = c4.fixed32.decode(state);
        const r1 = c4.uint.decode(state);
        const r2 = c4.uint.decode(state);
        const r3 = c4.uint.decode(state);
        const flags = c4.uint.decode(state);
        return {
          key: r0,
          length: r1,
          batch: r2,
          systemLength: r3,
          indexers: (flags & 1) !== 0
        };
      }
    };
    var encoding222 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.type);
        c4.buffer.preencode(state, m.payload);
      },
      encode(state, m) {
        c4.uint.encode(state, m.type);
        c4.buffer.encode(state, m.payload);
      },
      decode(state) {
        const r0 = c4.uint.decode(state);
        const r1 = c4.buffer.decode(state);
        return {
          type: r0,
          payload: r1
        };
      }
    };
    var encoding232 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.version);
        state.end++;
        if (m.legacyBlocks) c4.uint.preencode(state, m.legacyBlocks);
        if (m.namespace) c4.fixed32.preencode(state, m.namespace);
      },
      encode(state, m) {
        const flags = (m.legacyBlocks ? 1 : 0) | (m.namespace ? 2 : 0);
        c4.uint.encode(state, m.version);
        c4.uint.encode(state, flags);
        if (m.legacyBlocks) c4.uint.encode(state, m.legacyBlocks);
        if (m.namespace) c4.fixed32.encode(state, m.namespace);
      },
      decode(state) {
        const r0 = c4.uint.decode(state);
        const flags = c4.uint.decode(state);
        return {
          version: r0,
          legacyBlocks: (flags & 1) !== 0 ? c4.uint.decode(state) : 0,
          namespace: (flags & 2) !== 0 ? c4.fixed32.decode(state) : null
        };
      }
    };
    var encoding24_1 = encoding11_0;
    var encoding24 = {
      preencode(state, m) {
        c4.uint.preencode(state, m.view);
        encoding24_1.preencode(state, m.blocks);
      },
      encode(state, m) {
        c4.uint.encode(state, m.view);
        encoding24_1.encode(state, m.blocks);
      },
      decode(state) {
        const r0 = c4.uint.decode(state);
        const r1 = encoding24_1.decode(state);
        return {
          view: r0,
          blocks: r1
        };
      }
    };
    var encoding11_2 = c4.array(encoding24);
    function setVersion3(v) {
      version3 = v;
    }
    function encode2(name, value, v = VERSION3) {
      version3 = v;
      return c4.encode(getEncoding3(name), value);
    }
    function decode2(name, buffer, v = VERSION3) {
      version3 = v;
      return c4.decode(getEncoding3(name), buffer);
    }
    function getEnum(name) {
      switch (name) {
        default:
          throw new Error("Enum not found " + name);
      }
    }
    function getEncoding3(name) {
      switch (name) {
        case "@autobase/checkout":
          return encoding03;
        case "@autobase/clock":
          return encoding110;
        case "@autobase/index-checkpoint":
          return encoding23;
        case "@autobase/wakeup":
          return encoding33;
        case "@autobase/boot-record-v0":
          return encoding43;
        case "@autobase/boot-record-raw":
          return encoding53;
        case "@autobase/boot-record":
          return encoding63;
        case "@autobase/checkpointer":
          return encoding73;
        case "@autobase/checkpoint":
          return encoding83;
        case "@autobase/digest":
          return encoding93;
        case "@autobase/node":
          return encoding103;
        case "@autobase/trace":
          return encoding113;
        case "@autobase/oplog-message-v0":
          return encoding123;
        case "@autobase/oplog-message-v1":
          return encoding133;
        case "@autobase/oplog-message-v2":
          return encoding143;
        case "@autobase/oplog-message":
          return encoding153;
        case "@autobase/info-v1":
          return encoding163;
        case "@autobase/info-v2":
          return encoding172;
        case "@autobase/info":
          return encoding182;
        case "@autobase/member":
          return encoding192;
        case "@autobase/linearizer-key":
          return encoding202;
        case "@autobase/linearizer-update":
          return encoding212;
        case "@autobase/encryption-descriptor":
          return encoding222;
        case "@autobase/manifest-data":
          return encoding232;
        case "@autobase/user-view-trace":
          return encoding24;
        default:
          throw new Error("Encoder not found " + name);
      }
    }
    function getStruct(name, v = VERSION3) {
      const enc = getEncoding3(name);
      return {
        preencode(state, m) {
          version3 = v;
          enc.preencode(state, m);
        },
        encode(state, m) {
          version3 = v;
          enc.encode(state, m);
        },
        decode(state) {
          version3 = v;
          return enc.decode(state);
        }
      };
    }
    var resolveStruct = getStruct;
    module2.exports = {
      resolveStruct,
      getStruct,
      getEnum,
      getEncoding: getEncoding3,
      encode: encode2,
      decode: decode2,
      setVersion: setVersion3,
      version: version3
    };
  }
});

// node_modules/autobase/lib/messages.js
var require_messages3 = __commonJS({
  "node_modules/autobase/lib/messages.js"(exports2, module2) {
    var schema = require_autobase();
    module2.exports = {
      Wakeup: schema.resolveStruct("@autobase/wakeup"),
      Clock: schema.resolveStruct("@autobase/clock"),
      Checkout: schema.resolveStruct("@autobase/checkout"),
      BootRecord: schema.resolveStruct("@autobase/boot-record"),
      OplogMessage: schema.resolveStruct("@autobase/oplog-message"),
      Checkpoint: schema.resolveStruct("@autobase/checkpoint"),
      Info: schema.resolveStruct("@autobase/info"),
      Member: schema.resolveStruct("@autobase/member"),
      ManifestData: schema.resolveStruct("@autobase/manifest-data"),
      LINEARIZER_PREFIX: 1,
      LinearizerKey: schema.resolveStruct("@autobase/linearizer-key"),
      LinearizerUpdate: schema.resolveStruct("@autobase/linearizer-update"),
      EncryptionDescriptor: schema.resolveStruct("@autobase/encryption-descriptor")
    };
  }
});

// node_modules/autobase/lib/local-state.js
var require_local_state = __commonJS({
  "node_modules/autobase/lib/local-state.js"(exports2, module2) {
    var c4 = require_compact_encoding();
    var b4a4 = require_b4a();
    var messages = require_messages3();
    var GTE = b4a4.from([messages.LINEARIZER_PREFIX]);
    var LT = b4a4.from([messages.LINEARIZER_PREFIX + 1]);
    module2.exports = class LocalState {
      constructor(core) {
        this.core = core;
        this.tx = null;
      }
      static clear(core) {
        const tx = core.state.storage.write();
        tx.deleteLocalRange(GTE, LT);
        return tx.flush();
      }
      static async moveTo(src, dst) {
        const boot = await src.getUserData("autobase/boot");
        const tx = dst.state.storage.write();
        tx.deleteLocalRange(GTE, LT);
        for await (const data of src.state.storage.createLocalStream({ gte: GTE, lt: LT })) {
          tx.putLocal(data.key, data.value);
        }
        tx.putUserData("autobase/boot", boot);
        await tx.flush();
      }
      setBootRecord(boot) {
        if (this.tx === null) this.tx = this.core.state.storage.write();
        this.tx.putUserData("autobase/boot", c4.encode(messages.BootRecord, boot));
      }
      async listUpdates() {
        const updates = [];
        for await (const data of this.core.state.storage.createLocalStream({ gte: GTE, lt: LT })) {
          const update = c4.decode(messages.LinearizerUpdate, data.value);
          const seq = c4.decode(messages.LinearizerKey, data.key);
          update.seq = seq;
          updates.push(update);
        }
        return updates;
      }
      clearUpdates() {
        if (this.tx === null) this.tx = this.core.state.storage.write();
        this.tx.deleteLocalRange(GTE, LT);
      }
      deleteUpdate(update) {
        if (this.tx === null) this.tx = this.core.state.storage.write();
        this.tx.deleteLocal(c4.encode(messages.LinearizerKey, update.seq));
      }
      insertUpdate(update) {
        if (this.tx === null) this.tx = this.core.state.storage.write();
        this.tx.putLocal(
          c4.encode(messages.LinearizerKey, update.seq),
          c4.encode(messages.LinearizerUpdate, update)
        );
      }
      flush() {
        if (!this.tx) return Promise.resolve();
        const flushing = this.tx.flush();
        this.tx = null;
        return flushing;
      }
    };
  }
});

// node_modules/tiny-buffer-map/index.js
var require_tiny_buffer_map = __commonJS({
  "node_modules/tiny-buffer-map/index.js"(exports2, module2) {
    var b4a4 = require_b4a();
    module2.exports = class BufferMap {
      constructor(other) {
        this.m = other ? new Map([...other.m]) : /* @__PURE__ */ new Map();
      }
      get size() {
        return this.m.size;
      }
      get(key) {
        if (b4a4.isBuffer(key)) key = b4a4.toString(key, "hex");
        return this.m.get(key);
      }
      set(key, value) {
        if (b4a4.isBuffer(key)) key = b4a4.toString(key, "hex");
        return this.m.set(key, value);
      }
      delete(key) {
        if (b4a4.isBuffer(key)) key = b4a4.toString(key, "hex");
        return this.m.delete(key);
      }
      has(key) {
        if (b4a4.isBuffer(key)) key = b4a4.toString(key, "hex");
        return this.m.has(key);
      }
      *[Symbol.iterator]() {
        for (const [key, value] of this.m) {
          yield [b4a4.from(key, "hex"), value];
        }
      }
      *keys() {
        for (const key of this.m.keys()) {
          yield b4a4.from(key, "hex");
        }
      }
      values() {
        return this.m.values();
      }
      clear() {
        return this.m.clear();
      }
    };
  }
});

// node_modules/autobase/lib/clock.js
var require_clock = __commonJS({
  "node_modules/autobase/lib/clock.js"(exports2, module2) {
    var BufferMap = require_tiny_buffer_map();
    module2.exports = class Clock {
      constructor() {
        this.seen = new BufferMap();
      }
      get size() {
        return this.seen.size;
      }
      has(key) {
        return this.seen.has(key);
      }
      includes(key, length) {
        return this.seen.has(key) && this.seen.get(key) >= length;
      }
      get(key) {
        return this.seen.get(key) || 0;
      }
      set(key, len) {
        this.seen.set(key, len);
        return len;
      }
      add(clock) {
        for (const [key, l] of clock) {
          if (this.get(key) < l) this.set(key, l);
        }
      }
      [Symbol.iterator]() {
        return this.seen[Symbol.iterator]();
      }
    };
  }
});

// node_modules/autobase/lib/consensus.js
var require_consensus = __commonJS({
  "node_modules/autobase/lib/consensus.js"(exports2, module2) {
    var BufferMap = require_tiny_buffer_map();
    var Clock = require_clock();
    var UNSEEN = 0;
    var NEWER = 1;
    var ACKED = 2;
    module2.exports = class Consensus {
      constructor(indexers) {
        this.merges = /* @__PURE__ */ new Set();
        this.majority = (indexers.length >>> 1) + 1;
        this.indexers = indexers;
        this.removed = new Clock();
        this.updated = false;
        this.writers = new BufferMap();
        for (const idx of this.indexers) {
          this.writers.set(idx.core.key, idx);
        }
      }
      addHead(node) {
        if (!node.writer.isActiveIndexer) return;
        if (this._isMerge(node)) this.merges.add(node);
        this.updated = true;
        return node;
      }
      /* Indexer Only DAG methods */
      _tails(node, tails) {
        const tailSet = /* @__PURE__ */ new Set();
        for (const t of tails) {
          if (node.clock.includes(t.writer.core.key, t.length)) tailSet.add(t);
        }
        return tailSet;
      }
      _tailsAndMerges(node, tails) {
        const all = this._tails(node, tails);
        for (const m of this.merges) {
          if (m !== node && node.clock.includes(m.writer.core.key, m.length)) {
            all.add(m);
          }
        }
        return all;
      }
      _isMerge(node) {
        if (!node.writer.isActiveIndexer) return false;
        const deps = [];
        for (const idx of this.indexers) {
          let seq = node.clock.get(idx.core.key) - 1;
          if (idx === node.writer) seq--;
          const head = idx.get(seq);
          if (!head || this.removed.includes(head.writer.core.key, head.length)) continue;
          let isDep = true;
          for (let i = 0; i < deps.length; i++) {
            const d = deps[i];
            if (d === head) continue;
            if (d.clock.includes(head.writer.core.key, head.length)) {
              isDep = false;
              break;
            }
            if (head.clock.includes(d.writer.core.key, d.length)) {
              const popped = deps.pop();
              if (d === popped) continue;
              deps[i--] = popped;
            }
          }
          if (isDep) deps.push(head);
        }
        return deps.length > 1;
      }
      _indexerTails() {
        const tails = /* @__PURE__ */ new Set();
        for (const idx of this.indexers) {
          const length = this.removed.has(idx.core.key) ? this.removed.get(idx.core.key) : idx.indexed;
          const head = idx.get(length);
          if (!head || this.removed.includes(head.writer.core.key, head.length)) continue;
          let isTail = true;
          for (const t of tails) {
            if (head.clock.includes(t.writer.core.key, t.length)) {
              isTail = false;
              break;
            }
            if (t.clock.includes(head.writer.core.key, head.length)) {
              tails.delete(t);
            }
          }
          if (isTail) tails.add(head);
        }
        return tails;
      }
      // parent is newer if for any node in parent's view,
      // either node can see object or object can see node
      _strictlyNewer(object, parent) {
        if (!parent.clock.includes(object.writer.core.key, object.length)) return false;
        for (const [key, latest] of parent.clock) {
          const oldest = this.removed.get(key);
          if (latest <= oldest) continue;
          let length = object.clock.get(key);
          if (length <= oldest) length = oldest;
          if (latest < length) return false;
          if (latest === length) continue;
          const writer = this.writers.get(key);
          const next = writer && writer.get(length >= writer.indexed ? length : writer.indexed);
          if (!next) continue;
          if (next.clock.includes(object.writer.core.key, object.length)) continue;
          if (latest < next.length) continue;
          return false;
        }
        return true;
      }
      _acks(target) {
        const acks = target.writer.isActiveIndexer ? [target] : [];
        for (const idx of this.indexers) {
          if (idx === target.writer) continue;
          let next = target.clock.get(idx.core.key);
          if (next < idx.nodes.offset) next = idx.nodes.offset;
          const nextIndexNode = idx.get(next >= idx.indexed ? next : idx.indexed);
          if (!nextIndexNode) continue;
          if (!nextIndexNode.clock.includes(target.writer.core.key, target.length)) continue;
          if (!this._strictlyNewer(target, nextIndexNode)) continue;
          acks.push(nextIndexNode);
        }
        return acks;
      }
      acksFromNode(target, view) {
        const acks = /* @__PURE__ */ new Set();
        if (!view || !view.clock.includes(target.writer.core.key, target.length)) return acks;
        acks.add(view.writer);
        for (const idx of this.indexers) {
          if (idx === view.writer) continue;
          const length = view.clock.get(idx.core.key);
          if (!length) continue;
          if (target.clock.includes(idx.core.key, length)) continue;
          const head = idx.get(length - 1);
          if (!head) continue;
          if (head.clock.includes(target.writer.core.key, target.length)) {
            acks.add(idx);
          }
        }
        return acks;
      }
      _ackedAt(acks, parent) {
        let seen = 0;
        let missing = acks.length;
        for (const node of acks) {
          missing--;
          if (!parent.clock.includes(node.writer.core.key, node.length)) {
            if (seen + missing < this.majority) return false;
            continue;
          }
          if (++seen >= this.majority) return true;
        }
        return false;
      }
      confirms(indexer, target, acks, length) {
        if (!length || this.removed.get(indexer.core.key) >= length) return UNSEEN;
        let jump = true;
        let newer = true;
        for (let i = length - 1; i >= 0; i--) {
          const head = indexer.get(i);
          if (head === null) return UNSEEN;
          let seen = 0;
          for (const node of acks) {
            if (!head.clock.includes(node.writer.core.key, node.length)) continue;
            if (++seen >= this.majority) break;
          }
          if (!newer && seen < this.majority) {
            break;
          }
          if (!this._strictlyNewer(target, head)) {
            if (jump) {
              jump = false;
              let t = length - 1;
              let b = 0;
              while (t > b) {
                const mid = t + b >>> 1;
                const node = indexer.get(mid);
                if (node === null || !node.clock.includes(target.writer.core.key, target.length) || this._strictlyNewer(target, node)) {
                  b = mid + 1;
                } else {
                  t = mid - 1;
                }
              }
              if (b + 1 < i) i = b + 2;
            }
            newer = false;
            continue;
          } else if (seen < this.majority) {
            return NEWER;
          }
          return ACKED;
        }
        return UNSEEN;
      }
      _isConfirmed(target, parent = null) {
        const acks = this._acks(target);
        const confs = /* @__PURE__ */ new Set();
        if (acks.length < this.majority) return false;
        let allNewer = true;
        for (const indexer of this.indexers) {
          const length = parent ? parent.writer === indexer ? parent.length - 1 : parent.clock.get(indexer.core.key) : indexer.length;
          const result = this.confirms(indexer, target, acks, length);
          if (result === ACKED) {
            confs.add(indexer);
            if (confs.size >= this.majority) {
              return true;
            }
          }
          if (result === UNSEEN) allNewer = false;
        }
        if (parent) return this._isConfirmableAt(target, parent, acks, confs);
        return allNewer;
      }
      _isConfirmableAt(target, parent, acks, confs) {
        if (!this._ackedAt(acks, parent)) return false;
        let potential = confs.size;
        for (const indexer of this.indexers) {
          if (confs.has(indexer)) continue;
          const length = parent.clock.get(indexer.core.key);
          const isSeen = target.clock.includes(indexer.core.key, length);
          if (!isSeen) {
            const head = indexer.get(length - 1);
            if (head && !this.removed.includes(head.writer.core.key, head.length) && !this._strictlyNewer(target, head)) {
              continue;
            }
          }
          if (++potential >= this.majority) return true;
        }
        return false;
      }
      // this can get called multiple times for same node
      remove(node) {
        this.merges.delete(node);
        this.removed.set(node.writer.core.key, node.length);
        return node;
      }
      shift() {
        if (!this.updated) return [];
        const tails = this._indexerTails();
        for (const tail of tails) {
          if (this._isConfirmed(tail)) {
            return [this.remove(tail)];
          }
        }
        for (const merge of this.merges) {
          if (this._isConfirmed(merge)) {
            return this._yieldNext(merge, tails);
          }
        }
        this.updated = false;
        return [];
      }
      // yields next indexer node
      _yieldNext(node, tails) {
        while (!tails.has(node)) {
          let next = null;
          for (const t of this._tailsAndMerges(node, tails)) {
            if (this._isConfirmed(t, node)) {
              next = t;
              break;
            }
          }
          if (next) {
            node = next;
            continue;
          }
          const tailSet = [];
          for (const t of this._tails(node, tails)) {
            tailSet.push(this.remove(t));
          }
          return tailSet;
        }
        return [this.remove(node)];
      }
      shouldAck(writer) {
        for (const t of this._indexerTails()) {
          if (t.writer === writer) continue;
          if (this._shouldAckNode(t, writer)) return true;
        }
        return false;
      }
      _shouldAckNode(target, writer) {
        const head = writer.head();
        const next = target.clock.get(writer.core.key);
        const nextIndexNode = writer.get(next >= writer.indexed ? next : writer.indexed);
        if (!nextIndexNode && writer !== target.writer) return true;
        if (nextIndexNode) {
          if (!nextIndexNode.clock.includes(target.writer.core.key, target.length)) {
            return !head.clock.includes(target.writer.core.key, target.length);
          }
          if (!this._strictlyNewer(target, nextIndexNode)) return false;
        }
        const acks = this._acks(target);
        if (acks.length >= this.majority) {
          return this.confirms(writer, target, acks, writer.length) === UNSEEN;
        }
        return false;
      }
    };
  }
});

// node_modules/autobase/lib/topolist.js
var require_topolist = __commonJS({
  "node_modules/autobase/lib/topolist.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var assert2 = require_nanoassert();
    module2.exports = class TopoList {
      constructor() {
        this.tip = [];
        this.undo = 0;
        this.shared = 0;
      }
      static compare(a, b) {
        return cmp(a, b);
      }
      static add(node, indexed, offset) {
        addSorted(node, indexed, offset);
      }
      mark() {
        this.shared = this.tip.length;
        this.undo = 0;
      }
      // todo: bump to new api that just tracks undo
      flush(indexed = []) {
        if (indexed.length) this._applyIndexed(indexed);
        const u = {
          shared: this.shared,
          undo: this.undo,
          length: indexed.length + this.tip.length,
          indexed,
          tip: this.tip
        };
        this.mark();
        return u;
      }
      print() {
        return this.tip.map((n) => n.writer.core.key.toString() + n.length);
      }
      _applyIndexed(nodes) {
        assert2(nodes.length <= this.tip.length, "Indexed batch cannot exceed tip");
        let shared = 0;
        for (; shared < nodes.length; shared++) {
          if (this.tip[shared] !== nodes[shared]) break;
        }
        if (shared < nodes.length) this._track(shared);
        const tip = [];
        for (let i = shared; i < this.tip.length; i++) {
          const node = this.tip[i];
          if (node.yielded) continue;
          const s = addSorted(node, tip, 0);
          if (s === tip.length - 1) continue;
          this._track(shared + s);
        }
        this.tip = tip;
      }
      add(node) {
        const shared = addSorted(node, this.tip, 0);
        this._track(shared);
      }
      _track(shared) {
        if (shared < this.shared) {
          this.undo += this.shared - shared;
          this.shared = shared;
        }
      }
    };
    function hasOptimisticDeps(node) {
      for (const d of node.dependencies) {
        if (d.optimistic) return true;
      }
      return false;
    }
    function getOptimisticDeps(node, list) {
      const deps = /* @__PURE__ */ new Set();
      const stack = [node];
      while (stack.length > 0) {
        const next = stack.pop();
        if (deps.has(next)) continue;
        if (next.optimistic && next !== node) deps.add(next);
        for (const d of next.dependencies) {
          if (d.optimistic) stack.push(d);
        }
      }
      const result = [];
      for (let i = list.length - 1; deps.size !== result.length && i >= 0; i--) {
        const n = list[i];
        if (deps.has(n)) result.push(n);
      }
      return result.reverse();
    }
    function addSortedOptimistic(node, list, offset) {
      const opt = getOptimisticDeps(node, list);
      const pos = new Uint32Array(opt.length);
      for (let i = 0; i < opt.length; i++) {
        const n = opt[i];
        pos[i] = n.index;
        moveDown(n, list, offset);
      }
      moveDownAndUp(node, list, offset);
      for (let i = opt.length - 1; i >= 0; i--) {
        moveOptimisticUp(opt[i], list, offset);
      }
      let shared = node.index;
      for (let i = 0; i < opt.length; i++) {
        const idx = pos[i];
        const n = opt[i];
        if (idx === n.index) continue;
        if (idx < shared) shared = idx;
        if (n.index < shared) shared = n.index;
      }
      return shared;
    }
    function addSorted(node, list, offset) {
      list.push(node);
      node.index = list.length - 1;
      if (hasOptimisticDeps(node)) return addSortedOptimistic(node, list, offset);
      moveDownAndUp(node, list, offset);
      return node.index;
    }
    function moveDown(node, list, offset) {
      while (node.index > offset) {
        const prev = list[node.index - 1];
        if (links(node, prev)) break;
        list[prev.index = node.index] = prev;
        list[--node.index] = node;
      }
    }
    function moveOptimisticUp(node, list, offset) {
      while (node.index < list.length - 1) {
        const next = list[node.index + 1];
        if (links(next, node)) break;
        list[next.index = node.index] = next;
        list[++node.index] = node;
      }
      while (node.index > offset) {
        const prev = list[node.index - 1];
        if (!prev.optimistic) break;
        const c4 = cmp(prev, node);
        if (c4 <= 0) break;
        list[prev.index = node.index] = prev;
        list[--node.index] = node;
      }
    }
    function moveNonOptimisticUp(node, list, offset) {
      while (node.index < list.length - 1) {
        const next = list[node.index + 1];
        const c4 = cmpNonOptimistic(node, next, list);
        if (c4 <= 0) break;
        list[next.index = node.index] = next;
        list[++node.index] = node;
      }
    }
    function moveDownAndUp(node, list, offset) {
      moveDown(node, list, offset);
      if (node.optimistic) moveOptimisticUp(node, list, offset);
      else moveNonOptimisticUp(node, list, offset);
    }
    function links(a, b) {
      if (b.dependents.has(a)) return true;
      return a.length > 0 && b.length === a.length - 1 && a.writer === b.writer;
    }
    function cmpNonOptimistic(a, b, list) {
      if (!b.optimistic) return cmp(a, b);
      for (let i = b.index + 1; i < list.length; i++) {
        const node = list[i];
        if (!node.optimistic) return cmp(a, node);
      }
      return -1;
    }
    function cmp(a, b) {
      return links(b, a) ? -1 : cmpUnlinked(a, b);
    }
    function cmpUnlinked(a, b) {
      const c4 = b4a4.compare(a.writer.core.key, b.writer.core.key);
      return c4 === 0 ? a.length < b.length ? -1 : 1 : c4;
    }
  }
});

// node_modules/autobase/lib/linearizer.js
var require_linearizer = __commonJS({
  "node_modules/autobase/lib/linearizer.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var assert2 = require_nanoassert();
    var Clock = require_clock();
    var Consensus = require_consensus();
    var Topolist = require_topolist();
    var Node = class {
      constructor(writer, length, value, heads, batch, dependencies, optimistic, trace) {
        this.writer = writer;
        this.length = length;
        this.value = value;
        this.heads = heads;
        this.actualHeads = heads.slice(0);
        this.dependents = /* @__PURE__ */ new Set();
        this.dependencies = dependencies;
        this.index = 0;
        this.optimistic = optimistic && batch === 1 && !!value;
        this.batch = batch;
        this.dropped = 0;
        this.trace = trace;
        this.clock = new Clock();
        this.yielded = false;
        this.yielding = false;
      }
      isTail() {
        return this.dependencies.size === this.dropped;
      }
      causalDependencies(idx) {
        const order = [this];
        const stack = [this];
        let visited = null;
        while (stack.length > 0) {
          const node = stack.pop();
          for (const dep of node.dependencies) {
            if (!dep.writer.isRemoved || dep.writer.isActiveIndexer) continue;
            if (visited === null) visited = /* @__PURE__ */ new Set();
            if (visited.has(dep)) continue;
            visited.add(dep);
            stack.push(dep);
            order.push(dep);
          }
        }
        return order;
      }
      clear() {
        this.clock = null;
        this.dependents = null;
        return this;
      }
      reset() {
        this.yielded = false;
        this.yielding = false;
        for (const dep of this.dependents) dep.dependencies.add(this);
        this.dependents.clear();
      }
      active() {
        for (const dep of this.dependencies) {
          if (dep.yielded) {
            this.dependencies.delete(dep);
          } else {
            dep.dependents.add(this);
            this.clock.add(dep.clock);
          }
        }
        if (this.writer.isActiveIndexer) this.clock.set(this.writer.core.key, this.length);
      }
      tieBreak(node) {
        return tieBreak(this, node);
      }
      hasDependency(dep) {
        for (const h of this.actualHeads) {
          if (sameNode(h, dep)) return true;
        }
        return false;
      }
      get ref() {
        return this.writer.core.key.toString("hex").slice(0, 2) + ":" + this.length;
      }
    };
    module2.exports = class Linearizer {
      constructor(indexers, { heads = [], writers = /* @__PURE__ */ new Map() } = {}) {
        this.heads = /* @__PURE__ */ new Set();
        this.tails = /* @__PURE__ */ new Set();
        this.tip = new Topolist();
        this.size = 0;
        this.updated = false;
        this.indexersUpdated = false;
        this.writers = writers;
        this.consensus = new Consensus(indexers);
        this._initialHeads = heads.slice(0);
        this._strictlyAdded = null;
        for (const { key, length } of heads) {
          this.consensus.removed.set(key, length);
        }
      }
      get indexers() {
        return this.consensus.indexers;
      }
      static createNode(writer, length, value, heads, batch, dependencies, optimistic, trace) {
        return new Node(writer, length, value, heads, batch, dependencies, optimistic, trace);
      }
      // returns the global links of the dag, use this to link against the current state of the dag
      // TODO: rename to heads() and move the sets to _ props
      getHeads() {
        const heads = this._initialHeads.slice(0);
        for (const node of this.heads) heads.push({ key: node.writer.core.key, length: node.length });
        return heads;
      }
      // TODO: might contain dups atm, nbd for how we use it, returns an array of writers you can "pull"
      // to get the full dag view at any time
      getBootstrapWriters() {
        const writers = [];
        for (const head of this.heads) writers.push(head.writer);
        for (let i = 0; i < this.consensus.indexers.length; i++)
          writers.push(this.consensus.indexers[i]);
        return writers;
      }
      addHead(node) {
        node.active();
        if (this._initialHeads.length > 0) this._updateInitialHeads(node);
        if (node.isTail()) {
          this.tails.add(node);
        }
        for (const head of this.heads) {
          if (node.hasDependency(head)) {
            this.heads.delete(head);
          }
        }
        this.tip.add(node);
        if (node.writer.isActiveIndexer) this.consensus.addHead(node);
        this.size++;
        this.heads.add(node);
        this.updated = true;
        return node;
      }
      update() {
        if (!this.updated) return null;
        this.updated = false;
        const indexed = [];
        while (true) {
          const nodes = this.consensus.shift();
          if (!nodes.length) break;
          this._yield(nodes, indexed);
        }
        return this.tip.flush(indexed);
      }
      _updateInitialHeads(node) {
        for (const head of node.actualHeads) {
          for (let i = 0; i < this._initialHeads.length; i++) {
            const { key, length } = this._initialHeads[i];
            if (length !== head.length || !b4a4.equals(key, head.key)) continue;
            this._initialHeads.splice(i--, 1);
          }
        }
      }
      /* Ack methods */
      shouldAck(writer, pending = false) {
        if (!writer || !writer.isActiveIndexer) return false;
        for (const w of this.indexers) {
          if (w.length !== w.available) return false;
        }
        let isHead = false;
        for (const head of this.heads) {
          if (!head.writer.isActiveIndexer) return true;
          if (head.writer === writer) isHead = true;
        }
        if (this.heads.size === 1 && isHead) {
          return false;
        }
        const visited = /* @__PURE__ */ new Set();
        let valueCheck = false;
        for (const tail of this.tails) {
          if (pending || this._nonNull(tail, visited)) {
            valueCheck = true;
            break;
          }
        }
        if (!valueCheck) return false;
        if (this.consensus.shouldAck(writer)) return true;
        return this._shouldAckHeads(writer, pending);
      }
      // check if there is any value above this node
      _nonNull(target, visited) {
        const stack = [target];
        while (stack.length) {
          const node = stack.pop();
          if (visited.has(node)) continue;
          if (node.value !== null) return true;
          visited.add(node);
          for (const dep of node.dependents) {
            stack.push(dep);
          }
        }
        return false;
      }
      // ack if any head is closer to confirming a value
      _shouldAckHeads(writer, pending) {
        const prev = writer.head();
        for (const head of this.heads) {
          if (head.writer === writer) continue;
          const stack = [head];
          const visited = /* @__PURE__ */ new Set();
          while (stack.length) {
            const node = stack.pop();
            if (visited.has(node)) continue;
            visited.add(node);
            if (pending || node.value !== null) {
              const acks = this.consensus.acksFromNode(node, head);
              const prevAcks = this.consensus.acksFromNode(node, prev);
              if (acks.size > prevAcks.size) return true;
              for (const idx of acks) {
                if (!prevAcks.has(idx)) return true;
              }
              if (prevAcks.size && acks.size) continue;
            }
            stack.push(...node.dependencies);
          }
        }
        return false;
      }
      /* Full DAG methods */
      _yield(nodes, indexed = []) {
        const offset = indexed.length;
        const tails = [];
        while (nodes.length) {
          const node = nodes.pop();
          if (node.yielding) continue;
          node.yielding = true;
          if (node.isTail()) tails.push(node);
          nodes.push(...node.dependencies);
        }
        while (tails.length) {
          let tail = tails.pop();
          for (tail of this._removeBatch(tail)) {
            Topolist.add(tail, indexed, offset);
          }
          for (const dep of tail.dependents) {
            if (dep.isTail() && dep.yielding) tails.push(dep);
          }
        }
        return indexed;
      }
      _isFutureTail(node) {
        let dropped = node.dropped;
        for (const dep of node.dependencies) {
          if (dep.yielded) continue;
          if (dropped === 0) return false;
          dropped--;
        }
        return true;
      }
      _removeNode(node) {
        this.tails.delete(node);
        this.heads.delete(node);
        this.consensus.remove(node);
        for (const d of node.dependents) {
          if (d.yielding && d.dependencies.has(node))
            d.dropped++;
          else d.dependencies.delete(node);
          if (this._isFutureTail(d)) this.tails.add(d);
        }
        node.yielded = true;
        this.size--;
        if (this.heads.size === 0) {
          this._initialHeads.push({ key: node.writer.core.key, length: node.length });
        }
        return node;
      }
      _removeBatch(node) {
        const batch = [this._removeNode(node)];
        while (node.batch !== 1) {
          if (node.dependents.size === 0) {
            const next = node.writer.get(node.length);
            if (next && next.batch === node.batch - 1) node.dependents.add(next);
          }
          assert2(node.dependents.size === 1, "Batch is linked partially, which is not allowed");
          node = getFirst(node.dependents);
          batch.push(this._removeNode(node));
        }
        return batch;
      }
    };
    function tieBreak(a, b) {
      return Topolist.compare(a, b) < 0;
    }
    function getFirst(set) {
      return set[Symbol.iterator]().next().value;
    }
    function sameNode(a, b) {
      return b4a4.equals(a.key, b.writer.core.key) && a.length === b.length;
    }
  }
});

// node_modules/sub-encoder/index.js
var require_sub_encoder = __commonJS({
  "node_modules/sub-encoder/index.js"(exports2, module2) {
    var codecs = require_codecs();
    var b = require_b4a();
    var SEP = b.alloc(1);
    var SEP_BUMPED = b.from([1]);
    var EMPTY = b.alloc(0);
    module2.exports = class SubEncoder {
      constructor(prefix, encoding, parent = null) {
        this.userEncoding = codecs(encoding);
        this.prefix = prefix != null ? createPrefix(prefix, parent) : null;
        this.lt = this.prefix && b.concat([this.prefix.subarray(0, this.prefix.byteLength - 1), SEP_BUMPED]);
      }
      _encodeRangeUser(r) {
        if (this.userEncoding.encodeRange) return this.userEncoding.encodeRange(r);
        const res = {};
        if (r.gt != null) res.gt = this.userEncoding.encode(r.gt);
        if (r.gte != null) res.gte = this.userEncoding.encode(r.gte);
        if (r.lte != null) res.lte = this.userEncoding.encode(r.lte);
        if (r.lt != null) res.lt = this.userEncoding.encode(r.lt);
        return res;
      }
      _addPrefix(key) {
        return this.prefix ? b.concat([this.prefix, key]) : key;
      }
      encode(key) {
        return this._addPrefix(this.userEncoding.encode(key));
      }
      encodeRange(range) {
        const r = this._encodeRangeUser(range);
        if (r.gt) r.gt = this._addPrefix(r.gt);
        else if (r.gte) r.gte = this._addPrefix(r.gte);
        else if (this.prefix) r.gte = this.prefix;
        if (r.lt) r.lt = this._addPrefix(r.lt);
        else if (r.lte) r.lte = this._addPrefix(r.lte);
        else if (this.prefix) r.lt = this.lt;
        return r;
      }
      decode(key) {
        return this.userEncoding.decode(this.prefix ? key.subarray(this.prefix.byteLength) : key);
      }
      sub(prefix, encoding) {
        return new SubEncoder(prefix || EMPTY, compat(encoding), this.prefix);
      }
    };
    function createPrefix(prefix, parent) {
      prefix = typeof prefix === "string" ? b.from(prefix) : prefix;
      if (prefix && parent) return b.concat([parent, prefix, SEP]);
      if (prefix) return b.concat([prefix, SEP]);
      if (parent) return b.concat([parent, SEP]);
      return SEP;
    }
    function compat(enc) {
      if (enc && enc.keyEncoding) return enc.keyEncoding;
      return enc;
    }
  }
});

// node_modules/autobase/lib/caps.js
var require_caps2 = __commonJS({
  "node_modules/autobase/lib/caps.js"(exports2, module2) {
    var crypto = require_hypercore_crypto();
    var OPLOG_VERSION = 2;
    var DEFAULT_AUTOBASE_VERSION = 1;
    var MAX_AUTOBASE_VERSION = 2;
    var BOOT_RECORD_VERSION = 3;
    var [NS_SIGNER_NAMESPACE, NS_VIEW_BLOCK_KEY, NS_HASH_KEY, NS_ENCRYPTION] = crypto.namespace(
      "autobase",
      4
    );
    module2.exports = {
      OPLOG_VERSION,
      DEFAULT_AUTOBASE_VERSION,
      MAX_AUTOBASE_VERSION,
      BOOT_RECORD_VERSION,
      NS_SIGNER_NAMESPACE,
      NS_VIEW_BLOCK_KEY,
      NS_HASH_KEY,
      NS_ENCRYPTION
    };
  }
});

// node_modules/autobase/lib/system.js
var require_system = __commonJS({
  "node_modules/autobase/lib/system.js"(exports2, module2) {
    var Hyperbee = require_hyperbee();
    var SubEncoder = require_sub_encoder();
    var ReadyResource = require_ready_resource();
    var b4a4 = require_b4a();
    var c4 = require_compact_encoding();
    var crypto = require_hypercore_crypto();
    var { Info, Member } = require_messages3();
    var { DEFAULT_AUTOBASE_VERSION } = require_caps2();
    var subs = new SubEncoder();
    var DIGEST = subs.sub(b4a4.from([0]));
    var MEMBERS = subs.sub(b4a4.from([1]));
    var INFO_KEY = DIGEST.encode("info");
    var [GENESIS_ENTROPY, NS_ENTROPY] = crypto.namespace("autobase/entropy", 2);
    module2.exports = class SystemView extends ReadyResource {
      constructor(core, { checkout = 0, empty = false } = {}) {
        super();
        this.core = core;
        this.db = new Hyperbee(core, {
          keyEncoding: "binary",
          extension: false,
          checkout,
          sessions: typeof core.session === "function"
        });
        this.version = DEFAULT_AUTOBASE_VERSION;
        this.members = 0;
        this.pendingIndexers = [];
        this.indexers = [];
        this.heads = [];
        this.views = [];
        this.encryptionLength = 0;
        this.entropy = null;
        this.indexerUpdate = false;
        this._empty = empty;
        this._fork = 0;
        this._length = 0;
        this._changes = [];
        this._indexerMap = /* @__PURE__ */ new Map();
        this._clockUpdates = /* @__PURE__ */ new Map();
      }
      static GENESIS_ENTROPY = GENESIS_ENTROPY;
      static async getIndexedInfo(core, length) {
        const sys = new this(core.session());
        try {
          return await sys.getIndexedInfo(length);
        } finally {
          await sys.close();
        }
      }
      static async *flushes(core, { reverse, lt = core.length, gte = 0, wait = true } = {}) {
        if (lt <= 0) return;
        await core.get(lt - 1);
        const sys = new SystemView(core);
        try {
          for await (const data of sys.db.createHistoryStream({ lt, gte, wait, reverse: true })) {
            if (!b4a4.equals(data.key, INFO_KEY)) continue;
            const info = c4.decode(Info, data.value);
            yield { length: data.seq + 1, info };
          }
        } finally {
          await sys.close();
        }
      }
      get bootstrapping() {
        return this.members === 0;
      }
      async checkout(length) {
        const checkout = new SystemView(this.core.session(), {
          checkout: length,
          empty: length === 0
        });
        await checkout.ready();
        return checkout;
      }
      async _open() {
        const info = this._empty ? null : await this.db.get("info", {
          valueEncoding: Info,
          keyEncoding: DIGEST,
          update: false,
          wait: false
        });
        await this._reset(info);
      }
      async _close() {
        await this.db.close();
      }
      async getIndexedInfo(length = this.core.signedLength) {
        if (this.opened === false) await this.ready();
        if (length === this.core.length) {
          return {
            version: this.version,
            members: this.members,
            pendingIndexers: this.pendingIndexers,
            indexers: this.indexers,
            heads: this.heads,
            views: this.views,
            encryptionLength: this.encryptionLength,
            entropy: this.entropy
          };
        }
        const node = length === 0 ? null : await this.db.getBySeq(length - 1);
        if (node === null) {
          return {
            version: DEFAULT_AUTOBASE_VERSION,
            members: 0,
            pendingIndexers: [],
            indexers: [],
            heads: [],
            views: [],
            encryptionLength: 0,
            entropy: null
          };
        }
        return c4.decode(Info, node.value);
      }
      static sameIndexers(a, b) {
        if (a.length !== b.length) return false;
        for (let i = 0; i < a.length; i++) {
          if (!b4a4.equals(a[i].key, b[i].core.key)) return false;
        }
        return true;
      }
      sameIndexers(indexers) {
        return SystemView.sameIndexers(this.indexers, indexers);
      }
      async history(since) {
        const checkout = this.db.checkout(since);
        const seen = /* @__PURE__ */ new Map();
        const nodes = [];
        const updates = [];
        const checkoutNode = since === 0 ? null : await this.db.getBySeq(since - 1);
        let prevInfo = checkoutNode === null ? null : c4.decode(Info, checkoutNode.value);
        let updateBatch = 0;
        for await (const data of this.db.createHistoryStream({ gte: since })) {
          if (b4a4.equals(data.key, INFO_KEY)) {
            const info = c4.decode(Info, data.value);
            updates.push({
              batch: updateBatch,
              indexers: prevInfo === null || !sameIndexers(info, prevInfo),
              systemLength: data.seq + 1
            });
            prevInfo = info;
            updateBatch = 0;
            continue;
          }
          const key = data.key.subarray(2);
          const hex = b4a4.toString(key, "hex");
          const len = c4.decode(Member, data.value).length;
          if (!seen.has(hex)) {
            const node = await checkout.get(data.key);
            if (node === null) {
              seen.set(hex, 0);
            } else {
              const { length } = c4.decode(Member, node.value);
              seen.set(hex, length);
            }
          }
          const prev = seen.get(hex);
          const batch = len - prev;
          seen.set(hex, len);
          if (batch === 0) continue;
          updateBatch += batch;
          if (nodes.length > 0) {
            const top = nodes[nodes.length - 1];
            if (b4a4.equals(top.key, key)) {
              top.length = len;
              top.batch += batch;
              continue;
            }
          }
          nodes.push({
            key,
            length: len,
            batch
          });
        }
        await checkout.close();
        return { updates, nodes };
      }
      async update() {
        if (this.opened === false) await this.ready();
        if (this._fork === this.core.fork && this._length === this.core.length) return false;
        await this._reset(
          this._empty ? null : await this.db.get("info", { valueEncoding: Info, keyEncoding: DIGEST })
        );
        return true;
      }
      async _reset(info) {
        this.version = info === null ? DEFAULT_AUTOBASE_VERSION : info.value.version;
        this.members = info === null ? 0 : info.value.members;
        this.pendingIndexers = info === null ? [] : info.value.pendingIndexers;
        this.indexers = info === null ? [] : info.value.indexers;
        this.heads = info === null ? [] : info.value.heads;
        this.views = info === null ? [] : info.value.views;
        this.encryptionLength = info === null ? 0 : info.value.encryptionLength;
        this.entropy = info === null ? null : info.value.entropy;
        this.indexerUpdate = false;
        this._indexerMap.clear();
        this._clockUpdates.clear();
        this._length = this.core.length;
        this._fork = this.core.fork;
        this._changes = [];
        for (const idx of this.indexers) {
          this._indexerMap.set(b4a4.toString(idx.key, "hex"), idx);
        }
      }
      // helper used by apply-state
      flushLength() {
        const header = this.core.length ? 0 : 1;
        let updates = this._changes.length + this._clockUpdates.size;
        for (const { key } of this._changes) {
          const hex = b4a4.toString(key, "hex");
          if (this._clockUpdates.has(hex)) updates--;
        }
        return header + this.core.length + updates + 1;
      }
      async flush(views) {
        const batch = this.db.batch({ update: false });
        for (let i = 0; i < this._changes.length; i++) {
          const c5 = this._changes[i];
          if (this._clockUpdates.has(b4a4.toString(c5.key, "hex"))) continue;
          await batch.put(c5.key, c5.value, { valueEncoding: Member, keyEncoding: MEMBERS });
        }
        for (const [hex, length] of this._clockUpdates) {
          const isIndexer = this._indexerMap.get(hex) !== void 0;
          const key = b4a4.from(hex, "hex");
          const info2 = await this._get(key, 0);
          const value = { isIndexer, isRemoved: info2 ? info2.isRemoved : true, length };
          await batch.put(key, value, { valueEncoding: Member, keyEncoding: MEMBERS });
        }
        if (this.indexerUpdate) {
          this._refreshEntropy(this.core.length + batch.length + 1);
        }
        this._clockUpdates.clear();
        let maxIndex = -1;
        for (const view of views) {
          if (view.mappedIndex > maxIndex) maxIndex = view.mappedIndex;
        }
        while (this.views.length > maxIndex + 1) this.views.pop();
        for (const view of views) {
          const length = view.core ? view.core.length : view.length;
          if (!length) continue;
          const v = { key: view.key, length };
          if (view.mappedIndex !== -1) {
            this.views[view.mappedIndex] = v;
          } else {
            view.mappedIndex = this.views.push(v) - 1;
          }
        }
        const info = {
          version: this.version,
          members: this.members,
          pendingIndexers: this.pendingIndexers,
          indexers: this.indexers,
          heads: this.heads,
          views: this.views,
          encryptionLength: this.encryptionLength,
          entropy: this.entropy
        };
        await batch.put("info", info, { valueEncoding: Info, keyEncoding: DIGEST });
        await batch.flush();
        this._length = this.core.length;
        this._changes = [];
        if (this.indexerUpdate) this.indexerUpdate = false;
      }
      getEntropy(indexers, length) {
        return generateEntropy(indexers, length, this.entropy);
      }
      _refreshEntropy(length) {
        if (this.version < 2) return;
        this.entropy = this.getEntropy(this.indexers, length);
      }
      checkpoint() {
        return {
          version: this.version,
          members: this.members,
          pendingIndexers: this.pendingIndexers.slice(0),
          indexers: cloneNodes(this.indexers),
          heads: cloneNodes(this.heads),
          views: cloneNodes(this.views),
          indexerUpdate: this.indexerUpdate,
          encryptionLength: this.encryptionLength,
          entropy: this.entropy ? b4a4.from(this.entropy) : null,
          changes: this._changes.slice(0),
          clockUpdates: new Map([...this._clockUpdates])
        };
      }
      applyCheckpoint(checkpoint) {
        this.version = checkpoint.version;
        this.members = checkpoint.members;
        this.pendingIndexers = checkpoint.pendingIndexers;
        this.indexers = checkpoint.indexers;
        this.heads = checkpoint.heads;
        this.views = checkpoint.views;
        this.indexerUpdate = checkpoint.indexerUpdate;
        this.encryptionLength = checkpoint.encryptionLength;
        this.entropy = checkpoint.entropy;
        this._changes = checkpoint.changes;
        this._clockUpdates = checkpoint.clockUpdates;
        this._indexerMap = /* @__PURE__ */ new Map();
        for (const idx of this.indexers) {
          this._indexerMap.set(b4a4.toString(idx.key, "hex"), idx);
        }
      }
      addHead(node) {
        const h = { key: node.writer.core.key, length: node.length };
        for (let i = 0; i < this.heads.length; i++) {
          const head = this.heads[i];
          if (!hasDependency(node, head)) {
            if (!b4a4.equals(node.writer.core.key, head.key)) continue;
            if (head.length > h.length) return false;
          }
          const popped = this.heads.pop();
          if (popped !== head) this.heads[i--] = popped;
        }
        this.heads.push(h);
        const hex = b4a4.toString(h.key, "hex");
        this._clockUpdates.set(hex, h.length);
        if (this.pendingIndexers.length > 0) {
          for (let i = 0; i < this.pendingIndexers.length; i++) {
            if (!b4a4.equals(this.pendingIndexers[i], h.key)) continue;
            this._updateIndexer(h.key, h.length, true, i);
            return true;
          }
        }
        const idx = this._indexerMap.get(hex);
        if (idx !== void 0) {
          idx.length = h.length;
        }
        return false;
      }
      _updateIndexer(key, length, isIndexer, i) {
        const hex = b4a4.toString(key, "hex");
        if (!isIndexer) {
          const existing = this._indexerMap.get(hex);
          if (existing) {
            this.indexerUpdate = true;
            this.indexers.splice(this.indexers.indexOf(existing), 1);
            this._indexerMap.delete(hex);
          }
          return;
        }
        for (; i < this.pendingIndexers.length; i++) {
          if (b4a4.equals(this.pendingIndexers[i], key)) {
            break;
          }
        }
        if (length === 0) {
          if (i >= this.pendingIndexers.length) this.pendingIndexers.push(key);
          return;
        }
        if (i < this.pendingIndexers.length) {
          const top = this.pendingIndexers.pop();
          if (i < this.pendingIndexers.length) this.pendingIndexers[i] = top;
        }
        const idx = this._indexerMap.get(hex);
        if (idx === void 0) {
          const newIdx = { key, length };
          this._indexerMap.set(hex, newIdx);
          this.indexers.push(newIdx);
          if (!this.bootstrapping) this.indexerUpdate = true;
        } else {
          idx.length = length;
        }
      }
      _seenLength(key) {
        return this._clockUpdates.get(b4a4.toString(key, "hex")) || 0;
      }
      async ack(key) {
        const value = await this._get(key, 0);
        const length = this._seenLength(key);
        if (value && value.length === length) return;
        const isIndexer = value ? value.isIndexer : false;
        const isRemoved = value ? value.isRemoved : true;
        this._changes.push({ key, value: { isIndexer, isRemoved, length } });
      }
      async add(key, { isIndexer = false, length = this._seenLength(key) } = {}) {
        let value = null;
        let found = false;
        let changed = true;
        for (let i = this._changes.length - 1; i >= 0; i--) {
          const c5 = this._changes[i];
          if (b4a4.equals(key, c5.key)) {
            value = c5.value;
            found = true;
            break;
          }
        }
        if (!found) {
          const node = await this.db.get(key, { valueEncoding: Member, keyEncoding: MEMBERS });
          if (node) {
            value = node.value;
            found = true;
          }
        }
        let wasTracked = false;
        let wasIndexer = false;
        if (found) {
          if (!value.isRemoved) wasTracked = true;
          if (value.isIndexer) wasIndexer = true;
          if (length < value.length) length = value.length;
          if (value.length === length && value.isIndexer === isIndexer && value.isRemoved === false)
            changed = false;
        }
        if (changed) {
          this._changes.push({ key, value: { isIndexer, isRemoved: false, length } });
        }
        if (!wasTracked) this.members++;
        if (wasIndexer || isIndexer) this._updateIndexer(key, length, isIndexer, 0);
      }
      async remove(key) {
        let isIndexer = false;
        for (const idx of this.indexers) {
          isIndexer = b4a4.equals(idx.key, key);
          if (isIndexer) break;
        }
        if (isIndexer) this._updateIndexer(key, null, false, 0);
        let value = null;
        let found = false;
        for (let i = this._changes.length - 1; i >= 0; i--) {
          const c5 = this._changes[i];
          if (b4a4.equals(key, c5.key)) {
            value = c5.value;
            found = true;
            break;
          }
        }
        if (!found) {
          const node = await this.db.get(key, { valueEncoding: Member, keyEncoding: MEMBERS });
          if (node) {
            value = node.value;
            found = true;
          }
        }
        const changed = !found || !value.isRemoved;
        const wasTracked = found && !value.isRemoved;
        const length = found ? value.length : 0;
        if (changed) {
          this._changes.push({ key, value: { isIndexer: false, isRemoved: true, length } });
        }
        if (wasTracked) this.members--;
        return isIndexer;
      }
      async linkable(key, length) {
        const len = this._seenLength(key);
        if (len > 0) return length > len;
        const info = await this._get(key, 0);
        const prevLength = info ? info.length : 0;
        return length > prevLength;
      }
      async has(key, opts) {
        return await this.get(key, opts) !== null;
      }
      async _get(key, timeout) {
        let value = null;
        let found = false;
        for (let i = this._changes.length - 1; i >= 0; i--) {
          const c5 = this._changes[i];
          if (b4a4.equals(key, c5.key)) {
            value = c5.value;
            found = true;
            break;
          }
        }
        if (!found) {
          const node = await this.db.get(key, { timeout, valueEncoding: Member, keyEncoding: MEMBERS });
          if (node) {
            value = node.value;
            found = true;
          }
        }
        return found ? value : null;
      }
      async get(key, opts = {}) {
        if (this._empty) return null;
        let value = await this._get(key, opts.timeout || 0);
        if (opts.unflushed) {
          const hex = b4a4.toString(key, "hex");
          for (let i = this._changes.length - 1; i >= 0; i--) {
            const c5 = this._changes[i];
            if (b4a4.equals(c5.key, key)) value = c5.value;
          }
          if (this._clockUpdates.has(hex)) value.length = this._clockUpdates.get(hex);
        }
        return opts.onlyActive !== false || !value.isRemoved ? value : null;
      }
      async hasLocal(key) {
        if (this._empty) return false;
        try {
          const node = await this.db.get(key, {
            valueEncoding: Member,
            keyEncoding: MEMBERS,
            update: false,
            wait: false
          });
          return node !== null;
        } catch {
          return false;
        }
      }
      async getLocalLength(key) {
        if (this._empty) return 0;
        try {
          const node = await this.db.get(key, {
            valueEncoding: Member,
            keyEncoding: MEMBERS,
            update: false,
            wait: false
          });
          return node === null ? 0 : node.value.length;
        } catch {
          return 0;
        }
      }
      list() {
        return this.db.createReadStream({
          valueEncoding: Member,
          keyEncoding: MEMBERS
        });
      }
      async isIndexed(key, length) {
        const co = this.db.checkout(this.core.indexedLength);
        try {
          const node = await co.get(key, { valueEncoding: Member, keyEncoding: MEMBERS });
          return node !== null && node.value.length >= length;
        } finally {
          await co.close();
        }
      }
      async fork(indexers, manifests, encryptionLength, views) {
        this.indexers = [];
        this.pendingIndexers = [];
        this.views = views;
        if (this.version < 2) this.version = 2;
        for (const { key } of indexers) {
          const { length } = await this.get(key);
          this.indexers.push({ key, length });
        }
        this._refreshEntropy(this.core.length);
        const blocks = [];
        let truncate = this.core.length - 1;
        for await (const data of this.db.createHistoryStream({ lt: truncate, reverse: true })) {
          if (b4a4.equals(data.key, INFO_KEY)) {
            truncate = data.seq + 1;
            break;
          }
          blocks.push(data);
        }
        await this.core.truncate(truncate, this.core.fork);
        const batch = this.db.batch({ update: false });
        await batch.ready();
        for (const { key, value } of blocks) {
          await batch.put(key, value);
        }
        const info = {
          version: this.version,
          members: this.members,
          pendingIndexers: this.pendingIndexers,
          indexers: this.indexers,
          heads: this.heads,
          views: this.views,
          encryptionLength,
          entropy: this.entropy
        };
        await batch.put("info", info, { valueEncoding: Info, keyEncoding: DIGEST });
        await batch.flush();
        await this._reset(await this.db.get("info", { valueEncoding: Info, keyEncoding: DIGEST }));
        return truncate;
      }
    };
    function hasDependency(node, dep) {
      for (const h of node.actualHeads) {
        if (sameNode(h, dep)) return true;
      }
      return false;
    }
    function sameNode(a, b) {
      return b4a4.equals(a.key, b.key) && a.length === b.length;
    }
    function sameIndexers(a, b) {
      if (a.views.length > 0 && b.views.length > 0) return b4a4.equals(a.views[0].key, b.views[0].key);
      if (a.indexers.length !== b.indexers.length) return false;
      for (let i = 0; i < a.indexers.length; i++) {
        if (!b4a4.equals(a.indexers[i].key, b.indexers[i].key)) return false;
      }
      return true;
    }
    function cloneNodes(arr) {
      const c5 = [];
      for (let i = 0; i < arr.length; i++) {
        c5.push({ key: arr[i].key, length: arr[i].length });
      }
      return c5;
    }
    function generateEntropy(indexers, length, entropy) {
      const buffer = b4a4.alloc(8 + 32 + indexers.length * 32);
      const state = { start: 0, end: buffer.byteLength, buffer };
      c4.uint64.encode(state, length);
      c4.fixed32.encode(state, entropy || GENESIS_ENTROPY);
      for (const { key } of indexers) c4.fixed32.encode(state, key);
      return crypto.hash([NS_ENTROPY, buffer]);
    }
  }
});

// node_modules/autobase/lib/encryption.js
var require_encryption = __commonJS({
  "node_modules/autobase/lib/encryption.js"(exports2, module2) {
    var HypercoreEncryption = require_default_encryption();
    var sodium = require_sodium_universal();
    var crypto = require_hypercore_crypto();
    var c4 = require_compact_encoding();
    var b4a4 = require_b4a();
    var rrp = require_resolve_reject_promise();
    var ReadyResource = require_ready_resource();
    var SystemView = require_system();
    var { EncryptionDescriptor, ManifestData } = require_messages3();
    var { NS_VIEW_BLOCK_KEY, NS_HASH_KEY, NS_ENCRYPTION } = require_caps2();
    var nonce = b4a4.alloc(sodium.crypto_stream_NONCEBYTES);
    var hash = nonce.subarray(0, sodium.crypto_generichash_BYTES_MIN);
    var AutobaseEncryption = class _AutobaseEncryption {
      static PADDING = 8;
      constructor(encryption) {
        this.encryption = encryption;
        this.compat = null;
        this.keys = null;
        this.keysById = /* @__PURE__ */ new Map();
      }
      get id() {
        return this.keys ? this.keys.id : 0;
      }
      padding() {
        return _AutobaseEncryption.PADDING;
      }
      isCompat() {
        return false;
      }
      load(keys) {
        if (this.keys === null) this.keys = keys;
      }
      async update(ctx) {
        if (this.id !== 0 && this.id === this.encryption.id) return;
        const keys = await this.get(this.encryption.id, ctx);
        if (keys) this.keys = keys;
      }
      async get(id, ctx) {
        if (this.keysById.has(id)) return this.keysById.get(id);
        const keys = await this.getKeys(id, ctx);
        this.keysById.set(id, keys);
        return keys;
      }
      async getKeys(id, ctx) {
        const entropy = await this.encryption.get(id);
        if (!entropy) return null;
        const block = this.blockKey(entropy, ctx);
        const hash2 = crypto.hash([NS_HASH_KEY, block]);
        return {
          id,
          block,
          hash: hash2
        };
      }
      blockKey(entropy, ctx) {
        return this.encryption.blockKey(entropy, ctx);
      }
      async _ensureCompat(ctx) {
        if (!this.compat) this.compat = this.compatKeys(ctx);
      }
      compatKeys() {
        throw new Error("Compatibility method is not specified");
      }
      async encrypt(index, block, fork, ctx) {
        if (this.isCompat(ctx, index)) {
          this._ensureCompat(ctx);
          return HypercoreEncryption.encrypt(
            index,
            block,
            fork,
            this.compat.block,
            this.compat.blinding
          );
        }
        await this.update(ctx);
        encryptBlock(index, block, this.keys.id, this.keys.block, this.keys.hash);
      }
      async decrypt(index, block, ctx) {
        if (this.isCompat(ctx, index)) {
          this._ensureCompat(ctx);
          return HypercoreEncryption.decrypt(index, block, this.compat.block);
        }
        const padding = block.subarray(0, _AutobaseEncryption.PADDING);
        block = block.subarray(_AutobaseEncryption.PADDING);
        const type = padding[0];
        switch (type) {
          case 0:
            return block;
          // unencrypted
          case 1:
            break;
          default:
            throw new Error("Unrecognised encryption type");
        }
        const id = c4.uint32.decode({ start: 4, end: 8, buffer: padding });
        const keys = await this.get(id, ctx);
        c4.uint64.encode({ start: 0, end: 8, buffer: nonce }, index);
        nonce.set(padding, 8, 16);
        decrypt(block, nonce, keys.block);
      }
    };
    var ViewEncryption = class extends AutobaseEncryption {
      constructor(encryption, name) {
        super(encryption);
        this.name = name;
      }
      isCompat(ctx, index) {
        if (ctx.manifest.version <= 1) return true;
        if (!ctx.manifest.userData) return false;
        const { legacyBlocks } = c4.decode(ManifestData, ctx.manifest.userData);
        return index < legacyBlocks;
      }
      compatKeys() {
        const { bootstrap, encryptionKey } = this.encryption.base;
        const block = getCompatBlockKey(bootstrap, encryptionKey, this.name);
        return {
          block,
          blinding: crypto.hash(block)
        };
      }
      blockKey(entropy) {
        return getCompatBlockKey(this.encryption.base.bootstrap, entropy, this.name);
      }
    };
    var WriterEncryption = class extends AutobaseEncryption {
      isCompat(ctx) {
        return ctx.manifest.version <= 1;
      }
      compatKeys(ctx) {
        return HypercoreEncryption.deriveKeys(this.encryption.base.encryptionKey, ctx.key);
      }
      blockKey(entropy, ctx) {
        if (ctx.manifest.userData) {
          const userData = c4.decode(ManifestData, ctx.manifest.userData);
          if (userData.namespace !== null) {
            return this.encryption.blockKey(entropy, { key: userData.namespace });
          }
        }
        return this.encryption.blockKey(entropy, ctx);
      }
    };
    var EncryptionView = class _EncryptionView extends ReadyResource {
      constructor(base, core) {
        super();
        this.base = base;
        this.core = core || null;
        this.sessions = /* @__PURE__ */ new Map();
        this._initialising = null;
      }
      async _open() {
        await this.initialised();
        await this.core.ready();
      }
      initialised() {
        if (this.core !== null) return this.core.ready();
        if (this._initialising) return this._initialising;
        this._initialising = rrp();
        return this._initialising.promise;
      }
      _close() {
        if (this._initialising) {
          this._initialising.reject(new Error("Encryption closed"));
          this._initialising = null;
        }
        if (this.core) return this.core.close();
      }
      get bootstrapped() {
        return !!(this.core && this.core.length > 0);
      }
      get id() {
        return this.core ? this.core.length : 0;
      }
      _createPayload(key) {
        return key;
      }
      async reload(core) {
        if (this.core) await this.core.close();
        this.core = core;
        await this.core.ready();
        if (this._initialising) {
          this._initialising.resolve();
          this._initialising = null;
        }
      }
      unpack(type, payload) {
        if (type > 0) throw new Error("Unsupported version");
        return payload;
      }
      async update(key) {
        const payload = await this._createPayload(key);
        const desc = { type: 0, payload };
        await this.core.append(c4.encode(EncryptionDescriptor, desc));
      }
      async _preload() {
        await this.ready();
        return this.id();
      }
      getViewEncryption(name) {
        if (this.sessions.has(name)) return this.sessions.get(name);
        const encryption = new ViewEncryption(this, name);
        this.sessions.set(name, encryption);
        return encryption;
      }
      getWriterEncryption() {
        return new WriterEncryption(this);
      }
      async encryptAnchor(block, namespace) {
        const entropy = await this.get(this.id);
        if (!entropy) return null;
        const blockKey = this.blockKey(entropy, { key: namespace });
        const hashKey = crypto.hash([NS_HASH_KEY, block]);
        encryptBlock(0, block, this.id, blockKey, hashKey);
      }
      blockKey(entropy, ctx) {
        return getBlockKey(this.base.bootstrap, this.base.encryptionKey, entropy, ctx.key);
      }
      async get(encryptionId) {
        if (encryptionId === 0) return SystemView.GENESIS_ENTROPY;
        if (!this.core) await this.initialised();
        const index = encryptionId - 1;
        const desc = await this.core.get(index);
        const { type, payload } = c4.decode(EncryptionDescriptor, desc);
        const key = this.unpack(type, payload);
        return key;
      }
      getSystemEncryption() {
        return this.getViewEncryption("_system");
      }
      static namespace(entropy) {
        return crypto.hash([NS_ENCRYPTION, entropy]);
      }
      static getBlockKey(bootstrap, encryptionKey, entropy, hypercoreKey) {
        return getBlockKey(bootstrap, encryptionKey, entropy, hypercoreKey);
      }
      static getSystemEncryption(base, core) {
        const view = new _EncryptionView(base, core);
        return view.getSystemEncryption();
      }
      static async setSystemEncryption(base, core, opts) {
        if (base.encryptionKey === null) return null;
        await core.ready();
        if (core.manifest.version === 1) {
          const key = getCompatBlockKey(base.bootstrap, base.encryptionKey, "_system");
          return core.setEncryptionKey(key, { block: true });
        }
        if (!core.manifest.linked.length) {
          throw new Error("System manifest does not link encryption view");
        }
        const enc = base.store.get({ key: core.manifest.linked[0], active: false });
        const encryption = _EncryptionView.getSystemEncryption(base, enc);
        await core.setEncryption(encryption, opts);
        return enc;
      }
    };
    module2.exports = {
      AutobaseEncryption,
      EncryptionView
    };
    function encrypt(block, nonce2, key) {
      sodium.crypto_stream_xor(block, block, nonce2, key);
    }
    function decrypt(block, nonce2, key) {
      return encrypt(block, nonce2, key);
    }
    function getBlockKey(bootstrap, encryptionKey, entropy, hypercoreKey) {
      return encryptionKey && crypto.hash([NS_VIEW_BLOCK_KEY, bootstrap, encryptionKey, entropy, hypercoreKey]);
    }
    function getCompatBlockKey(bootstrap, encryptionKey, name) {
      if (typeof name === "string") return getCompatBlockKey(bootstrap, encryptionKey, b4a4.from(name));
      return encryptionKey && crypto.hash([NS_VIEW_BLOCK_KEY, bootstrap, encryptionKey, name]);
    }
    function blockhash(block, padding, hashKey) {
      sodium.crypto_generichash(hash, block, hashKey);
      padding.set(hash.subarray(0, 8));
      hash.fill(0);
    }
    function encryptBlock(index, block, id, blockKey, hashKey) {
      const padding = block.subarray(0, AutobaseEncryption.PADDING);
      block = block.subarray(AutobaseEncryption.PADDING);
      blockhash(block, padding, hashKey);
      c4.uint32.encode({ start: 4, end: 8, buffer: padding }, id);
      c4.uint64.encode({ start: 0, end: 8, buffer: nonce }, index);
      padding[0] = 1;
      nonce.set(padding, 8, 16);
      encrypt(block, nonce, blockKey);
    }
  }
});

// node_modules/autobase/lib/updates.js
var require_updates = __commonJS({
  "node_modules/autobase/lib/updates.js"(exports2, module2) {
    module2.exports = class UpdateChanges {
      constructor(base) {
        this.base = base;
        this.byName = /* @__PURE__ */ new Map();
        this.tracking = null;
      }
      get discoveryKey() {
        return this.base.discoveryKey;
      }
      get key() {
        return this.base.key;
      }
      get id() {
        return this.base.id;
      }
      get system() {
        return this.base.system;
      }
      track(state) {
        this.tracking = [];
        this.byName.clear();
        if (!state) return;
        for (const v of state.views) {
          if (v.ref) this._add(v.ref);
        }
        this._add(state.systemView.ref);
        this._add(state.encryptionView.ref);
      }
      _add(ref) {
        const from = ref.batch.length;
        const inf = { ref, from };
        ref.shared = from;
        this.tracking.push(inf);
      }
      finalise() {
        if (this.tracking === null) return;
        for (const { ref, from } of this.tracking) {
          const core = ref.atomicBatch || ref.batch;
          this.byName.set(ref.name, {
            from,
            to: core.length,
            shared: ref.shared
          });
        }
        this.tracking = null;
      }
      get(name) {
        return this.byName.get(name);
      }
    };
  }
});

// node_modules/autobase/lib/timer.js
var require_timer = __commonJS({
  "node_modules/autobase/lib/timer.js"(exports2, module2) {
    var safetyCatch = require_safety_catch();
    var MAX_WAIT = 2 * 60 * 1e3;
    var DEFAULT_INTERVAL = 10 * 1e3;
    module2.exports = class Timer {
      constructor(handler, interval, opts = {}) {
        this.handler = handler || noop;
        this.interval = interval || DEFAULT_INTERVAL;
        this.limit = opts.limit || MAX_WAIT;
        this._executing = null;
        this._limit = random2over1(this.limit);
        this._timer = null;
        this._resolve = null;
        this._start = 0;
        this._stopped = false;
        this._asap = false;
        this._standalone = /* @__PURE__ */ new Set();
        this._unref = opts.unref !== false;
        this._timerCallback = this._executeBackground.bind(this);
      }
      _executeBackground() {
        this._executing = this._execute();
        this._executing.catch(safetyCatch);
      }
      async _execute() {
        this._asap = false;
        await this.handler();
        this._start = 0;
        this._executing = null;
        this.bump();
      }
      bump() {
        if (this._stopped || this._executing || this._asap) return;
        if (!this._start) this._start = Date.now();
        else if (Date.now() - this._start > this._limit) return;
        const interval = random2over1(this.interval);
        clearTimeout(this._timer);
        this._timer = setTimeout(this._timerCallback, interval);
        if (this._unref && this._timer.unref) this._timer.unref();
      }
      async trigger() {
        if (this._stopped) return;
        if (this._executing) await this._executing;
        if (this._stopped) return;
        clearTimeout(this._timer);
        this._timer = null;
        this._executeBackground();
        await this._executing;
      }
      async flush() {
        if (this._executing) await this._executing;
      }
      // business-as-usual
      bau() {
        if (!this._asap) return;
        this._asap = false;
        this.bump();
      }
      asap() {
        if (this._asap) return;
        this._asap = true;
        const interval = Math.floor(Math.random() * this.interval / 3);
        clearTimeout(this._timer);
        this._timer = setTimeout(this._timerCallback, interval);
        if (this._unref && this._timer.unref) this._timer.unref();
      }
      stop() {
        if (this._timer) clearTimeout(this._timer);
        this._timer = null;
        this._start = 0;
        this._asap = false;
        this._stopped = true;
        for (const { timer, resolve } of this._standalone) {
          clearTimeout(timer);
          resolve();
        }
        this._standalone.clear();
      }
      asapStandalone() {
        const interval = Math.floor(Math.random() * this.interval / 3);
        return new Promise((resolve) => {
          const ref = { timer: null, resolve };
          ref.timer = setTimeout(resolveStandalone, interval, ref, this._standalone);
          if (ref.timer.unref) ref.timer.unref();
          this._standalone.add(ref);
        });
      }
      unref() {
        if (this._timer && this._timer.unref) this._timer.unref();
      }
    };
    function resolveStandalone(ref, set) {
      set.delete(ref);
      ref.resolve();
    }
    function random2over1(n) {
      return Math.floor(n + Math.random() * n);
    }
    function noop() {
    }
  }
});

// node_modules/autobase/lib/node-buffer.js
var require_node_buffer = __commonJS({
  "node_modules/autobase/lib/node-buffer.js"(exports2, module2) {
    var DEFAULT_SIZE = 32;
    module2.exports = class NodeBuffer {
      constructor(offset, hwm) {
        this.hwm = hwm || DEFAULT_SIZE;
        this.defaultHwm = this.hwm;
        this.mask = this.hwm - 1;
        this.top = 0;
        this.btm = 0;
        this.buffer = new Array(this.hwm);
        this.offset = offset || 0;
        this.length = this.offset;
      }
      get size() {
        return this.length - this.offset;
      }
      isEmpty() {
        return this.length === this.offset;
      }
      isFull() {
        return this.size === this.buffer.length;
      }
      grow() {
        this.hwm <<= 1;
        const size = this.size;
        const buffer = new Array(this.hwm);
        const mask = this.hwm - 1;
        for (let i = 0; i < size; i++) {
          buffer[i] = this.buffer[this.btm + i & this.mask];
        }
        this.mask = mask;
        this.top = size;
        this.btm = 0;
        this.buffer = buffer;
      }
      push(data) {
        if (this.isFull()) this.grow();
        this.buffer[this.top] = data;
        this.top = this.top + 1 & this.mask;
        return this.length++;
      }
      shift() {
        if (this.isEmpty()) return null;
        const last = this.buffer[this.btm];
        this.buffer[this.btm] = void 0;
        this.btm = this.btm + 1 & this.mask;
        this.offset++;
        if (this.isEmpty() && this.hwm !== this.defaultHwm) {
          this.buffer = new Array(this.defaultHwm);
          this.hwm = this.buffer.length;
          this.mask = this.hwm - 1;
          this.top = this.btm = 0;
        }
        return last;
      }
      get(seq) {
        if (seq < this.offset || seq >= this.length) return null;
        return this.buffer[this.btm + (seq - this.offset) & this.mask];
      }
    };
  }
});

// node_modules/autobase/lib/writer.js
var require_writer = __commonJS({
  "node_modules/autobase/lib/writer.js"(exports2, module2) {
    var c4 = require_compact_encoding();
    var b4a4 = require_b4a();
    var ReadyResource = require_ready_resource();
    var assert2 = require_nanoassert();
    var SignalPromise = require_signal_promise();
    var Linearizer = require_linearizer();
    var NodeBuffer = require_node_buffer();
    var MAX_PRELOAD = 4;
    var MAX_PREFETCH = 256;
    module2.exports = class Writer extends ReadyResource {
      constructor(base, core, length, isRemoved) {
        super();
        this.base = base;
        this.core = core;
        this.isRemoved = isRemoved;
        this.updated = false;
        this.range = null;
        this.nodes = new NodeBuffer(length);
        this.node = null;
        this.isActive = false;
        this.isCurrentlyCoupled = false;
        this.isCoupled = false;
        this.isBootstrap = false;
        this.isActiveIndexer = false;
        this.available = length;
        this.length = length;
        this.seenLength = 0;
        this.recover = false;
        this.frozen = false;
        this.syncSignal = null;
      }
      _pause() {
        if (!this.range) return;
        this.range.destroy();
        this.range = null;
      }
      _resume() {
        if (this.range) {
          if (this.range.range.end === this.nodes.length + MAX_PREFETCH) return;
          this.range.destroy();
        }
        this.range = this.core.download({
          start: this.nodes.length,
          end: this.nodes.length + MAX_PREFETCH,
          linear: true
        });
      }
      _updateCoupling() {
        if (!this.base._coupler || this.isCoupled === this.isCurrentlyCoupled) return;
        if (this.isCurrentlyCoupled) this.base._coupler.remove(this.core);
        else this.base._coupler.add(this.core);
        this.isCurrentlyCoupled = this.isCoupled;
      }
      _removeCouple() {
        if (this.base._coupler && !this.isCoupled && this.isCurrentlyCoupled) {
          this.isCurrentlyCoupled = false;
          this.base._coupler.remove(this.core);
        }
      }
      updateActivity() {
        if (!this.core.opened) return;
        if (this.seenLength > this.core.length || this.length < this.core.length || this.isBootstrap) {
          this.isActive = true;
          this.core.setActive(true);
        } else if (this.length === this.core.length) {
          this.isActive = false;
          this.core.setActive(false);
        }
        this._updateCoupling();
        if (this.core.writable) return;
        if (this.base.isFastForwarding() || !this.isActive) {
          this._pause();
        } else {
          this._resume();
        }
      }
      setBootstrap(bool) {
        this.isBootstrap = bool;
        this.updateActivity();
      }
      seen(length) {
        if (length > this.seenLength) this.seenLength = length;
        this.updateActivity();
      }
      waitForSynced() {
        if (this.core.length === this.length) return Promise.resolve();
        if (this.syncSignal === null) this.syncSignal = new SignalPromise();
        return this.syncSignal.wait();
      }
      async _open() {
        await this.core.ready();
        await this.core.setUserData("referrer", this.base.key);
        if (this.base.closing) return;
        this.recover = autoRecover(this.core);
        await this.base._wakeup.add(this.core.core);
        this.updateActivity();
        if (this.core.length > this.length) this.base._queueBump();
        this.base.emit("writer", this);
      }
      _close() {
        if (this.syncSignal !== null) this.syncSignal.notify();
        return this.core.close();
      }
      get indexed() {
        return this.nodes.offset;
      }
      idle() {
        return this.length === this.available && this.length === this.core.length && this.core.opened;
      }
      flushed() {
        return this.seenLength <= this.length && this.length === this.available && this.length === this.core.length && this.shiftable() === false && !this.core.core.upgrading && this.core.opened;
      }
      compare(writer) {
        return b4a4.compare(this.core.key, writer.core.key);
      }
      head() {
        return this.nodes.get(this.length - 1);
      }
      advance() {
        if (this.syncSignal !== null && this.length + 1 === this.core.length) this.syncSignal.notify();
        return this.length < this.available ? this.nodes.get(this.length++) : null;
      }
      shiftable() {
        return this.length > this.nodes.offset;
      }
      shift() {
        if (this.shiftable() === false) return false;
        let node = this._shiftAndClear();
        while (node.batch > 1) node = this._shiftAndClear();
        return true;
      }
      get(seq) {
        return seq < this.length ? this.nodes.get(seq) : null;
      }
      append(value, heads, batch, dependencies, optimistic) {
        const node = Linearizer.createNode(
          this,
          this.nodes.length + 1,
          value,
          heads,
          batch,
          dependencies,
          optimistic
        );
        node.actualHeads = node.heads.slice(0);
        this.nodes.push(node);
        this.available++;
        this.length++;
        return node;
      }
      async update(boot) {
        if (this.opened === false) await this.ready();
        if (this.frozen) return false;
        const preload = boot ? 1 : MAX_PRELOAD;
        while (this.available - this.length < preload) {
          if (this.nodes.length === this.core.length || this.core.length === 0) break;
          if (this.node === null && !await this._loadNextNode()) break;
          if (!await this._ensureNodeDependencies(boot)) break;
          if (this.recover) this.node.value = null;
          this.nodes.push(this.node);
          if (this.node.batch === 1) this.available = this.nodes.length;
          this.node = null;
        }
        this.updateActivity();
        return this.length < this.available;
      }
      _shiftAndClear() {
        const node = this.nodes.shift();
        node.clear();
        return node;
      }
      async _loadNextNode() {
        const seq = this.nodes.length;
        if (!await this.core.has(seq)) return false;
        try {
          const { node, optimistic, trace } = await this.core.get(seq, { wait: false });
          const value = node.value == null ? null : c4.decode(this.base.valueEncoding, node.value);
          this.node = Linearizer.createNode(
            this,
            seq + 1,
            value,
            node.heads,
            node.batch,
            /* @__PURE__ */ new Set(),
            optimistic,
            trace
          );
          return true;
        } catch (err) {
          this.frozen = true;
          throw err;
        }
      }
      async _ensureNodeDependencies(boot) {
        while (this.node.dependencies.size < this.node.heads.length) {
          const rawHead = this.node.heads[this.node.dependencies.size];
          const headWriter = await this.base._getWriterByKey(
            rawHead.key,
            -1,
            rawHead.length,
            true,
            false,
            boot
          );
          if (headWriter !== this && (headWriter === null || headWriter.length < rawHead.length)) {
            if (!boot) this.base._ensureWakeup(headWriter);
            return false;
          }
          let headNode = headWriter.nodes.get(rawHead.length - 1);
          if (!headNode) {
            for (const node of this.base.linearizer.heads) {
              if (!compareHead(node, rawHead)) continue;
              headNode = node;
              break;
            }
          }
          assert2(!this.node.dependencies.has(headNode), "Corrupted DAG");
          if (headNode === null) {
            this.node.heads.splice(this.node.dependencies.size, 1);
            continue;
          }
          this.node.dependencies.add(headNode);
        }
        const offset = this.node.length - 1;
        if (offset > this.indexed) {
          this.node.dependencies.add(this.nodes.get(offset - 1));
        }
        return true;
      }
    };
    function compareHead(node, head) {
      if (node.length !== head.length) return false;
      return b4a4.equals(node.writer.core.key, head.key);
    }
    function autoRecover(core) {
      assert2(core.opened);
      switch (core.id) {
        case "ghrpexaboutdm46ombqho7mroxknassnntrxx3cubfux4qi6w6hy":
        case "qoaanao71s4he1rcd197d336qepykk4467geo1uq8cwnzmpb786o":
        case "fomhdxgn4j4tzjqy6y7iskhffimzokt7kraddyd8orcht3r8q61o":
        case "d8f5taxxrit51apftoi38e5b86hb98cgfd7dfp3uo1uoh95qt49o":
        case "objyf75uggsqpjcut69xdgj46ks8r71jjrq7oxdfsz95sstchkno":
          return true;
      }
      return false;
    }
  }
});

// node_modules/autobase/lib/values.js
var require_values = __commonJS({
  "node_modules/autobase/lib/values.js"(exports2, module2) {
    var crypto = require_hypercore_crypto();
    var c4 = require_compact_encoding();
    var b4a4 = require_b4a();
    var { OPLOG_VERSION } = require_caps2();
    var { OplogMessage } = require_messages3();
    var { EncryptionView } = require_encryption();
    module2.exports = {
      encodeValue,
      decodeValue
    };
    function encodeValue(value, opts = {}) {
      const state = { start: 0, end: 0, buffer: null };
      const message = {
        version: opts.version || OPLOG_VERSION,
        digest: null,
        checkpoint: null,
        optimistic: !!opts.optimistic,
        node: {
          heads: opts.heads || [],
          batch: 1,
          value
        }
      };
      OplogMessage.preencode(state, message);
      if (opts.padding) {
        state.start = opts.padding;
        state.end += opts.padding;
      }
      state.buffer = b4a4.alloc(state.end);
      OplogMessage.encode(state, message);
      if (!opts.encrypted) return state.buffer;
      if (!opts.optimistic) {
        throw new Error("Encoding an encrypted value is not supported");
      }
      const padding = b4a4.alloc(16);
      crypto.hash(state.buffer, padding);
      padding[0] = 0;
      return b4a4.concat([padding.subarray(0, 8), state.buffer]);
    }
    async function decodeValue(value, { autobase, encryptionKey, key, manifest, index = 0 } = {}) {
      if (encryptionKey) {
        const e = new EncryptionView({ encryptionKey, bootstrap: autobase });
        const w = e.getWriterEncryption();
        await w.decrypt(index, value, { key, manifest });
        value = value.subarray(8);
      }
      const op = c4.decode(OplogMessage, value);
      return op.node.value;
    }
  }
});

// node_modules/autobase/lib/active-writers.js
var require_active_writers = __commonJS({
  "node_modules/autobase/lib/active-writers.js"(exports2, module2) {
    var b4a4 = require_b4a();
    module2.exports = class ActiveWriters {
      constructor() {
        this.map = /* @__PURE__ */ new Map();
      }
      get size() {
        return this.map.size;
      }
      [Symbol.iterator]() {
        return this.map.values();
      }
      get(key) {
        return this.map.get(b4a4.toString(key, "hex")) || null;
      }
      has(key) {
        return this.get(key) !== null;
      }
      add(writer) {
        this.map.set(b4a4.toString(writer.core.key, "hex"), writer);
      }
      delete(writer) {
        this.map.delete(b4a4.toString(writer.core.key, "hex"));
      }
      updateActivity() {
        for (const w of this.map.values()) w.updateActivity();
      }
      clear() {
        const p = [];
        for (const w of this.map.values()) p.push(w.close());
        this.map.clear();
        return Promise.all(p);
      }
    };
  }
});

// node_modules/autobase/lib/wakeup.js
var require_wakeup = __commonJS({
  "node_modules/autobase/lib/wakeup.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var c4 = require_compact_encoding();
    var safetyCatch = require_safety_catch();
    var ReadyResource = require_ready_resource();
    var WakeupEntry = {
      preencode(state, m) {
        c4.fixed32.preencode(state, m.key);
        c4.uint.preencode(state, m.length);
      },
      encode(state, m) {
        c4.fixed32.encode(state, m.key);
        c4.uint.encode(state, m.length);
      },
      decode(state) {
        return {
          key: c4.fixed32.decode(state),
          length: c4.uint.decode(state)
        };
      }
    };
    module2.exports = class AutoWakeup extends ReadyResource {
      constructor(base) {
        super();
        this.base = base;
        this.flushing = null;
        this._rootStore = this.base.store;
        this._addBound = this.add.bind(this);
        this._preupdateBound = this._preupdate.bind(this);
        this._needsFlush = false;
        this._map = /* @__PURE__ */ new Map();
      }
      [Symbol.iterator]() {
        return this._map.values();
      }
      async _preupdate(batch, key) {
        this.queue(key, batch.length);
        await this.flush();
        this.base._onwakeup();
      }
      async _save() {
        const slab = b4a4.allocUnsafe(8 + this._map.size * 40);
        const state = { start: 0, end: 0, buffer: slab };
        c4.uint.encode(state, this._map.size);
        for (const m of this._map.values()) WakeupEntry.encode(state, m);
        await this.base.local.setUserData("autobase/wakeup", slab.subarray(0, state.start));
      }
      async _load() {
        const buffer = await this.base.local.getUserData("autobase/wakeup");
        if (!buffer) return;
        const state = { start: 0, end: buffer.byteLength, buffer };
        let len = c4.uint.decode(state);
        while (len-- > 0) {
          const m = WakeupEntry.decode(state);
          this._map.set(b4a4.toString(m.key, "hex"), m);
        }
      }
      async _open() {
        await this._load();
        this._rootStore.watch(this._addBound);
        for (const core of this._rootStore.cores) {
          if (core.opened === false) await core.ready().catch(noop);
          if (!core.closing) this.add(core);
        }
      }
      async _close() {
        this._rootStore.unwatch(this._addBound);
        for (const core of this._rootStore.cores) {
          if (core.opened && !core.closing) this.remove(core);
        }
        this._map.clear();
        while (this.flushing) {
          try {
            await this.flushing;
          } catch {
          }
        }
      }
      queue(key, length) {
        const hex = b4a4.toString(key, "hex");
        const m = this._map.get(hex);
        if (m && m.length > length) {
          return false;
        }
        this._needsFlush = true;
        this._map.set(hex, { key, length });
        return true;
      }
      unqueue(key, length) {
        const hex = b4a4.toString(key, "hex");
        const m = this._map.get(hex);
        if (!m) return true;
        if (m.length > length) return false;
        this._needsFlush = true;
        this._map.delete(hex);
        return true;
      }
      async flush() {
        if (this.closing) throw new Error("Closing");
        if (this.flushing) await this.flushing;
        if (this.flushing) return this.flushing;
        if (this._needsFlush === false) return;
        this._needsFlush = false;
        try {
          this.flushing = this._save();
          return await this.flushing;
        } finally {
          this.flushing = null;
        }
      }
      add(core) {
        return this._add(core).catch(safetyCatch);
      }
      remove(core) {
        return this._remove(core);
      }
      async _add(core) {
        if (core.opened === false) await core.ready();
        if (core.closing) return false;
        if (core === this.base.local.core) return false;
        const rx = core.storage.read();
        const referrerPromise = rx.getUserData("referrer");
        const viewPromise = rx.getUserData("autobase/view");
        rx.tryFlush();
        const [referrer, view] = await Promise.all([referrerPromise, viewPromise]);
        if (view) return false;
        if (referrer === null || !b4a4.equals(referrer, this.base.key)) return false;
        core.preupdate = this._preupdateBound;
        return true;
      }
      _remove(core) {
        if (core.preupdate !== this._preupdateBound) return false;
        core.preupdate = null;
        return true;
      }
    };
    function noop() {
    }
  }
});

// node_modules/autobase/lib/fast-forward.js
var require_fast_forward = __commonJS({
  "node_modules/autobase/lib/fast-forward.js"(exports2, module2) {
    var rrp = require_resolve_reject_promise();
    var safetyCatch = require_safety_catch();
    var SystemView = require_system();
    var { EncryptionView } = require_encryption();
    var DEFAULT_OP_TIMEOUT = 5e3;
    var DEFAULT_MIN_FF = 16;
    module2.exports = class FastForward {
      constructor(base, key, {
        timeout = DEFAULT_OP_TIMEOUT,
        verified = true,
        minimum = DEFAULT_MIN_FF,
        force = false,
        length = 0
      } = {}) {
        this.base = base;
        this.key = key;
        this.timeout = timeout;
        this.force = force;
        this.core = base.store.get({ key, active: true, encryption: null });
        this.length = length;
        this.views = [];
        this.encryption = null;
        this.entropy = null;
        this.indexers = [];
        this.minimum = minimum;
        this.verified = verified;
        this.waiting = /* @__PURE__ */ new Set();
        this.cores = [this.core];
        this.system = null;
        this.destroyed = false;
        this.upgrading = null;
        this.failed = false;
      }
      static MINIMUM = DEFAULT_MIN_FF;
      async upgrade() {
        try {
          if (!this.upgrading) this.upgrading = this._upgrade();
          if (!await this.upgrading) return null;
          return {
            length: this.length,
            force: this.force,
            key: this.key,
            indexers: this.indexers,
            views: this.views,
            entropy: this.entropy,
            manifestVersion: this.core.manifest.version,
            minimum: this.minimum
          };
        } catch (err) {
          safetyCatch(err);
          this.failed = true;
          return null;
        } finally {
          await this.close();
        }
      }
      _waitForAppend(core) {
        if (core.length > 0) return Promise.resolve();
        const promise = rrp();
        const timeout = setTimeout(this.close.bind(this), this.timeout);
        const wait = { promise, timeout };
        this.waiting.add(wait);
        core.once("append", () => {
          this.waiting.delete(wait);
          clearTimeout(timeout);
          promise.resolve();
        });
        return promise.promise;
      }
      _minLength() {
        return this.base.core.length + this.minimum;
      }
      async _upgrade() {
        await this.core.ready();
        if (!this.verified) await this._waitForAppend(this.core);
        if (this.destroyed) return false;
        if (this.core.manifest.linked) {
          const appends = [];
          for (const key of this.core.manifest.linked) {
            const core = this.base.store.get({ key, active: true });
            this.cores.push(core);
            await core.ready();
            appends.push(this._waitForAppend(core));
          }
          await Promise.all(appends);
        }
        if (this.length === 0) this.length = this.core.length;
        if (!this.force && this.length < this._minLength()) return false;
        if (this.length === 0) return false;
        await this.core.get(this.length - 1, { timeout: this.timeout });
        await this.base.ready();
        if (this.destroyed) return false;
        if (this.base.encryptionKey && !await this._ensureEncryption()) return false;
        if (this.destroyed) return false;
        this.system = new SystemView(this.core, { checkout: this.length });
        await this.system.ready();
        if (this.destroyed) return false;
        this.entropy = this.system.entropy;
        if (this.core.manifest.version >= 2) {
          const linked = this.core.manifest.linked;
          if (this.system.encryptionLength === 0 || linked === null || !linked.length) {
            return false;
          }
          this.views.push({
            key: linked[0],
            length: this.system.encryptionLength
          });
        }
        const promises = [];
        promises.push(this.system.get(this.base.local.key, { timeout: this.timeout }));
        if (this.encryption && this.encryption.core) {
          promises.push(
            this.encryption.core.get(this.system.encryptionLength - 1, { timeout: this.timeout })
          );
        }
        for (const v of this.system.views) {
          this.views.push(v);
          const core = this.base.store.get({ key: v.key, active: true });
          this.cores.push(core);
          if (!v.length) continue;
          promises.push(core.get(v.length - 1, { timeout: this.timeout }));
        }
        for (const idx of this.system.indexers) {
          this.indexers.push(idx);
          if (idx.length === 0) continue;
          const core = this.base.store.get({ key: idx.key, active: true });
          this.cores.push(core);
          promises.push(core.get(idx.length - 1, { timeout: this.timeout }));
          promises.push(this.system.get(idx.key, { timeout: this.timeout }));
        }
        for (const head of this.system.heads) {
          promises.push(this.system.get(head.key, { timeout: this.timeout }));
        }
        await Promise.all(promises);
        if (this.destroyed) return false;
        return true;
      }
      async _ensureEncryption() {
        if (this.core.encryption !== null) return true;
        const encCore = this.core.manifest.version <= 1 ? null : this.cores[1];
        this.encryption = new EncryptionView(this.base, encCore);
        const encryption = this.encryption.getViewEncryption("_system");
        await this.core.setEncryption(encryption);
        return true;
      }
      async close() {
        this.destroyed = true;
        for (const { promise, timeout } of this.waiting) {
          clearTimeout(timeout);
          promise.resolve();
        }
        if (this.system) await this.system.close();
        if (this.encryption) await this.encryption.close();
        for (const core of this.cores) await core.close();
        await this.core.close();
      }
    };
  }
});

// node_modules/autobase/lib/store.js
var require_store = __commonJS({
  "node_modules/autobase/lib/store.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var c4 = require_compact_encoding();
    var crypto = require_hypercore_crypto();
    var Hypercore = require_hypercore();
    var messages = require_messages3();
    var DEFAULT_MANIFEST_VERSION = 1;
    var INDEX_VERSION = 1;
    var MAX_TRACE_PER_VIEW = 256;
    var EMPTY = b4a4.alloc(0);
    var [NS_SIGNER_NAMESPACE] = crypto.namespace("autobase", 1);
    var ViewCore = class {
      constructor(name, core, base) {
        this.name = name;
        this.core = null;
        this.batch = null;
        this.atomicBatch = null;
        this.moveTo = null;
        this.tracer = new Tracer();
        this.shared = 0;
        this.ontruncate = (length) => {
          this.shared = Math.min(this.shared, length);
        };
        this.migrated(base, core);
      }
      getCore() {
        return this.atomicBatch || this.batch || this.core;
      }
      migrated(base, core) {
        this.core = core;
        if (this.name === "_system") {
          const ff = base._queueFastForward.bind(base);
          this.core.on("append", ff);
          this.core.ready().then(ff, ff);
        }
      }
      async matchesKey(key) {
        if (!this.core.opened) await this.core.ready();
        return b4a4.equals(this.core.key, key);
      }
      async matchesNamespace(target) {
        if (!this.core.opened) await this.core.ready();
        if (this.core.manifest && this.core.manifest.signers.length > 0) {
          const ns = this.core.manifest.signers[0].namespace;
          if (b4a4.equals(ns, target)) return true;
        }
        return false;
      }
      getNextKey() {
        return this.moveTo ? this.moveTo[0].key : null;
      }
      async commit(atom, length, signature) {
        await this.core.commit(this._getAtomicBatch(atom), { length, signature });
      }
      async release() {
        if (!this.atomicBatch) return;
        await this.atomicBatch.ready();
        while (this.atomicBatch.state.sessions.length) {
          await this.atomicBatch.state.sessions[0].close();
        }
        await this.atomicBatch.close();
        this.atomicBatch = null;
      }
      _getAtomicBatch(atom) {
        if (this.atomicBatch === null) {
          this.atomicBatch = this.batch.session({ atom, writable: true });
          this.atomicBatch.on("truncate", this.ontruncate);
        }
        return this.atomicBatch;
      }
      async catchup(atom, length) {
        await this.release();
        const batch = this._getAtomicBatch(atom);
        await batch.ready();
        await batch.state.catchup(length);
      }
      createSession(atom, valueEncoding) {
        if (this.batch === null) {
          this.batch = this.core.session({ name: "batch", writable: true });
          this.batch.on("truncate", this.ontruncate);
        }
        const s = atom ? this._getAtomicBatch(atom).session({
          valueEncoding,
          writable: true,
          onseq: this.tracer.onseq.bind(this.tracer)
        }) : this.batch.session({ valueEncoding, writable: false });
        return s;
      }
    };
    var Tracer = class {
      constructor() {
        this.enabled = false;
        this.seen = /* @__PURE__ */ new Set();
      }
      start() {
        this.enabled = true;
        this.seen.clear();
      }
      end() {
        this.enabled = false;
        return [...this.seen.values()];
      }
      onseq(seq, core) {
        if (!this.enabled) return;
        if (this.seen.size >= MAX_TRACE_PER_VIEW) return;
        if (seq >= core.signedLength) return;
        this.seen.add(seq);
      }
    };
    var AutoStore = class _AutoStore {
      constructor(base, byName) {
        this.base = base;
        this.store = base.store;
        this.byName = byName || /* @__PURE__ */ new Map();
        this.opened = [];
        this.atom = null;
        this.local = null;
      }
      async close() {
        if (this.local) await this.local.close();
        for (const v of this.byName.values()) {
          await v.release();
        }
        if (this.atom) return;
        for (const v of this.byName.values()) {
          if (v.core) await v.core.close();
          if (v.batch) await v.batch.close();
        }
      }
      async export() {
        const views = [];
        for (const [name, value] of this.byName) {
          const core = await this.store.storage.export(value.core.discoveryKey, { batches: true });
          views.push({ name, core });
        }
        return views;
      }
      atomize() {
        const store = new _AutoStore(this.base, this.byName);
        store.atom = this.store.storage.createAtom();
        return store;
      }
      async updateLocal() {
        if (!this.local) return;
        await this.local.close();
        this.local = null;
      }
      flush() {
        return this.atom ? this.atom.flush() : Promise.resolve();
      }
      get(opts, moreOpts) {
        if (typeof opts === "string") opts = { name: opts };
        if (moreOpts) opts = { ...opts, ...moreOpts };
        const { name, valueEncoding = null } = opts;
        if (!name) throw new Error("name is required");
        return this.getViewByName(name).createSession(this.atom, valueEncoding);
      }
      getViewByName(name) {
        let view = this.byName.get(name);
        if (!view) {
          const preload = this._preload(name);
          const core = this.base.store.get({ preload });
          view = new ViewCore(name, core, this.base);
          this.byName.set(name, view);
        }
        if (this.opened.indexOf(view) === -1) {
          this.opened.push(view);
        }
        return view;
      }
      getLocal() {
        if (this.local !== null) return this.local;
        this.local = this.base.local.session({
          atom: this.atom,
          valueEncoding: messages.OplogMessage,
          encryption: this.base.getWriterEncryption(this.base.local.key),
          active: false
        });
        return this.local;
      }
      getViews() {
        return [...this.byName.values()];
      }
      getViewCount() {
        return this.byName.size;
      }
      getSystemView() {
        return this.getViewByName("_system");
      }
      getSystemCore() {
        return this.getSystemView().core;
      }
      getEncryption(name) {
        if (!this.base.encryptionKey) return null;
        if (name === "_encryption") return null;
        return this.base.encryption.getViewEncryption(name);
      }
      async getIndexerManifests(entries) {
        const manifests = [];
        for (const { key } of entries) {
          const core = this.store.get({ key, active: false });
          await core.ready();
          if (!core.manifest) continue;
          manifests.push(core.manifest);
          await core.close();
        }
        return manifests;
      }
      getViewCore(indexerManifests, name, prologue, manifestVersion, entropy, linked, manifestData) {
        const manifest = this._createManifest(
          indexerManifests,
          name,
          prologue,
          manifestVersion,
          entropy,
          linked,
          manifestData
        );
        return this.base.store.get({
          manifest,
          exclusive: false,
          encryption: this.getEncryption(name)
        });
      }
      listViews() {
        const views = [];
        for (const [name, ref] of this.byName) {
          const core = ref.batch || ref.core;
          views.push({ name, key: core.key, length: core.length, signedLength: core.signedLength });
        }
        return views;
      }
      createAnchorCore(prologue, manifestData) {
        const manifest = {
          version: 2,
          hash: "blake2b",
          prologue,
          allowPatch: false,
          quorum: 0,
          signers: [],
          userData: manifestData,
          linked: null
        };
        const core = this.store.get({
          manifest,
          active: false
        });
        return core;
      }
      async createView(indexerManifests, name, prologue, manifestVersion, entropy, linked, manifestData) {
        const manifest = this._createManifest(
          indexerManifests,
          name,
          prologue,
          manifestVersion,
          entropy,
          linked,
          manifestData
        );
        const core = this.store.get({
          key: Hypercore.key(manifest),
          manifest,
          active: false
        });
        await core.ready();
        const key = core.key;
        await core.close();
        return key;
      }
      async _preload(name) {
        await Promise.resolve();
        if (!this.base.opening) throw new Error("Autobase failed to open");
        await this.base._preopen;
        const boot = await this.base._getSystemInfo() || {
          key: this.getBootstrapSystemKey(),
          indexers: [],
          views: [],
          entropy: null
        };
        const indexerManifests = await this.getIndexerManifests(boot.indexers);
        if (boot.indexers.length === 0) {
          return this._freshCorePreload(indexerManifests, name, boot.entropy);
        }
        if (name === "_system") {
          return {
            key: boot.key,
            exclusive: false,
            encryption: this.getEncryption(name)
          };
        }
        if (name === "_encryption") {
          const core = this.getSystemCore();
          await core.ready();
          if (!core.manifest.linked) {
            return this._freshCorePreload(indexerManifests, name, boot.entropy);
          }
          return {
            key: core.manifest.linked[0],
            exclusive: false,
            encryption: null
          };
        }
        const v = await this.findViewByName(indexerManifests, boot.views, name, boot.entropy);
        if (v === null) {
          return this._freshCorePreload(indexerManifests, name, boot.entropy);
        }
        return {
          key: v.key,
          exclusive: false,
          encryption: this.getEncryption(name)
        };
      }
      _freshCorePreload(indexerManifests, name, entropy) {
        if (name === "_system") return this._freshSystemPreload(indexerManifests, entropy);
        return {
          manifest: this._createManifest(
            indexerManifests,
            name,
            null,
            DEFAULT_MANIFEST_VERSION,
            entropy,
            [],
            null
          ),
          exclusive: true,
          encryption: this.getEncryption(name)
        };
      }
      _freshSystemPreload(indexerManifests, entropy) {
        return {
          manifest: this._createSystemManifest(
            indexerManifests,
            null,
            DEFAULT_MANIFEST_VERSION,
            entropy,
            null
          ),
          exclusive: true,
          encryption: this.getEncryption("_system")
        };
      }
      _deriveStaticHash(name) {
        return crypto.hash([this.base.key, b4a4.from(name)]);
      }
      _deriveNamespace(name, entropy) {
        const encryptionId = crypto.hash(this.base.encryptionKey || EMPTY);
        const version3 = c4.encode(c4.uint, INDEX_VERSION);
        const bootstrap = this.base.key;
        return crypto.hash([
          NS_SIGNER_NAMESPACE,
          version3,
          bootstrap,
          encryptionId,
          entropy,
          b4a4.from(name)
        ]);
      }
      async _getCoreManifest(key) {
        const core = this.store.get({ key, active: false });
        await core.ready();
        const manifest = core.manifest;
        await core.close();
        return manifest;
      }
      getBootstrapSystemKey() {
        return Hypercore.key(this._createSystemManifest([], null, DEFAULT_MANIFEST_VERSION, null));
      }
      async findViewByKey(key, indexers, manifestVersion, entropy) {
        for (const v of this.byName.values()) {
          if (await v.matchesKey(key)) return v;
        }
        const manifest = await this._getCoreManifest(key);
        const target = manifest && manifest.signers.length ? manifest.signers[0].namespace : null;
        if (target) {
          for (const v of this.byName.values()) {
            if (await v.matchesNamespace(target)) return v;
          }
        }
        const indexerManifests = await this.getIndexerManifests(indexers);
        if (entropy === null) {
          entropy = indexerManifests[0].signers[0].namespace;
        }
        if (target) {
          for (const v of this.byName.values()) {
            const namespace = this._deriveNamespace(v.name, entropy);
            if (b4a4.equals(namespace, target)) return v;
          }
        }
        for (const v of this.byName.values()) {
          const manifestData = v.core ? v.core.manifest.userData : null;
          const manifest2 = this._createManifest(
            indexerManifests,
            v.name,
            null,
            manifestVersion,
            entropy,
            [],
            manifestData
          );
          const manifestKey = Hypercore.key(manifest2);
          if (!b4a4.equals(manifestKey, key)) continue;
          const core = this.store.get({ key: manifestKey, manifest: manifest2, active: false });
          await core.ready();
          await core.close();
          return v;
        }
        return null;
      }
      async findViewByName(indexerManifests, views, name, entropy) {
        if (indexerManifests.length === 0) return null;
        if (entropy === null) entropy = indexerManifests[0].signers[0].namespace;
        const namespace = this._deriveNamespace(name, entropy);
        for (const v of views) {
          const manifest = await this._getCoreManifest(v.key);
          if (manifest.signers.length === 0) continue;
          const signer = manifest.signers[0];
          if (b4a4.equals(signer.namespace, namespace)) return v;
        }
        return null;
      }
      _createManifest(indexerManifests, name, prologue, version3, entropy, linked, manifestData) {
        if (!indexerManifests.length) {
          prologue = {
            hash: this._deriveStaticHash(name),
            length: 0
          };
        } else if (prologue && prologue.length === 0) {
          prologue = null;
        }
        const signers = [];
        if (indexerManifests.length && entropy === null) {
          entropy = indexerManifests[0].signers[0].namespace;
        }
        for (const manifest of indexerManifests) {
          const signer = manifest.signers[0];
          signers.push({
            namespace: this._deriveNamespace(name, entropy),
            signature: "ed25519",
            publicKey: signer.publicKey
          });
        }
        return {
          version: version3,
          hash: "blake2b",
          prologue,
          allowPatch: true,
          quorum: Math.min(signers.length, (signers.length >> 1) + 1),
          signers,
          userData: manifestData,
          linked: version3 > 1 ? linked : null
        };
      }
      _createSystemManifest(indexerManifests, prologue, version3, entropy, manifestData) {
        if (prologue !== null) throw new Error("Can only derive fresh system core");
        const linked = [];
        if (version3 > DEFAULT_MANIFEST_VERSION) {
          const encManifest = this._createManifest(
            indexerManifests,
            "_encryption",
            null,
            version3,
            entropy,
            [],
            manifestData
          );
          linked.push(Hypercore.key(encManifest));
        }
        return this._createManifest(
          indexerManifests,
          "_system",
          null,
          version3,
          entropy,
          linked,
          manifestData
        );
      }
    };
    module2.exports = AutoStore;
  }
});

// node_modules/autobase/lib/apply-calls.js
var require_apply_calls = __commonJS({
  "node_modules/autobase/lib/apply-calls.js"(exports2, module2) {
    var PublicApplyCalls = class {
      constructor(base) {
        this.base = base;
        this.internal = false;
      }
      get discoveryKey() {
        return this.base.discoveryKey;
      }
      get key() {
        return this.base.key;
      }
      get id() {
        return this.base.id;
      }
      async addWriter() {
        throw new Error("Not allowed on the public view");
      }
      async ackWriter() {
        throw new Error("Not allowed on the public view");
      }
      async removeWriter() {
        throw new Error("Not allowed on the public view");
      }
      preferFastForward() {
        throw new Error("Not allowed on the public view");
      }
      interrupt() {
        throw new Error("Not allowed on the public view");
      }
      removeable() {
        throw new Error("Not allowed on the public view");
      }
      fork() {
        throw new Error("Not allowed on the public view");
      }
      anchor() {
        throw new Error("Not allowed on the public view");
      }
    };
    var PrivateApplyCalls = class extends PublicApplyCalls {
      constructor(state) {
        super(state.base);
        this.state = state;
        this.internal = true;
      }
      get system() {
        return this.state.system;
      }
      async addWriter(key, { indexer = true, isIndexer = indexer } = {}) {
        await this.state.system.add(key, { isIndexer });
        await this.base._addWriter(key, this.state.system);
      }
      async ackWriter(key) {
        await this.state.system.ack(key);
      }
      async removeWriter(key) {
        if (!this.state.removeable(key)) {
          throw new Error("Not allowed to remove the last indexer");
        }
        await this.state.system.remove(key);
        this.base._removeWriter(key);
      }
      preferFastForward() {
        this.base._preferFastForward();
      }
      interrupt(reason) {
        this.base._interrupt(reason);
      }
      removeable(key) {
        return this.state.removeable(key);
      }
      async fork(indexerKeys, system) {
        if (!await this.state.validateFork(indexerKeys, system)) return false;
        const indexers = indexerKeys.map(toIndexer);
        this.state.pendingFork = { indexers, length: system.length };
        return true;
      }
      async createAnchor() {
        return await this.state.createAnchor();
      }
    };
    module2.exports = { PublicApplyCalls, PrivateApplyCalls };
    function toIndexer(key) {
      return { key, length: 0 };
    }
  }
});

// node_modules/autobase/lib/fork.js
var require_fork = __commonJS({
  "node_modules/autobase/lib/fork.js"(exports2, module2) {
    var c4 = require_compact_encoding();
    var SystemView = require_system();
    var { EncryptionView } = require_encryption();
    var { ManifestData } = require_messages3();
    module2.exports = class Fork {
      constructor(base, store, state, fork) {
        this.base = base;
        this.store = store;
        this.state = state;
        this.indexers = fork.indexers;
        this.length = fork.length;
        this.system = null;
        this.encryption = null;
        this.manifests = null;
        this.cores = [];
      }
      async upgrade() {
        try {
          await this._upgrade();
          return true;
        } catch {
          return false;
        } finally {
          await this.close();
        }
      }
      async _upgrade() {
        this.manifests = await this.store.getIndexerManifests(this.indexers);
        this.system = new SystemView(await this._get("_system", this.length));
        this.encryption = new EncryptionView(this, await this._get("_encryption", -1));
        await this.system.ready();
        await this.encryption.ready();
        this.entropy = this.system.getEntropy(this.indexers, this.length);
        this.manifestVersion = Math.max(this.system.core.manifest.version, 2);
        const views = [];
        for (const view of this.state.views) {
          const v = this.getViewFromSystem(view, this.system);
          const indexedLength = v ? v.length : 0;
          const session = await this._get(view.name, indexedLength);
          await session.ready();
          const next = await this.createView(view.name, session, null);
          await next.ready();
          await this._migrate(view.ref, next, view.core, indexedLength);
          views.push({ key: next.key, length: indexedLength });
        }
        const entropy = EncryptionView.namespace(this.entropy);
        await this.encryption.update(entropy);
        const system = this.store.getViewByName("_system");
        const encryption = this.store.getViewByName("_encryption");
        const enc = await this.createView("_encryption", this.encryption.core, null);
        await enc.ready();
        await this._migrate(encryption, enc, this.encryption.core, this.encryption.core.length);
        await this.system.fork(this.indexers, this.manifests, this.encryption.core.length, views);
        const sys = await this.createView("_system", this.system.core, [enc.key]);
        await sys.ready();
        await this._migrate(system, sys, this.system.core, this.system.core.length);
      }
      async createView(name, core, linked) {
        const prologue = await getPrologue(core);
        const manifestData = this._manifestData(core);
        return this.store.getViewCore(
          this.manifests,
          name,
          prologue,
          this.manifestVersion,
          this.entropy,
          linked,
          manifestData
        );
      }
      async _get(name, length) {
        const core = this.store.get({ name });
        this.cores.push(core);
        if (length !== -1) await core.truncate(length);
        return core;
      }
      getViewFromSystem(view) {
        if (view.mappedIndex === -1 || view.mappedIndex >= this.system.views.length) return null;
        return this.system.views[view.mappedIndex];
      }
      _manifestData(session) {
        if (session.manifest.version > 1) return session.manifest.userData;
        return c4.encode(ManifestData, { version: 0, legacyBlocks: session.length });
      }
      async _migrate(ref, next, source, length) {
        if (length > 0) {
          await next.core.copyPrologue(source.state);
        }
        const batch = next.session({ name: "batch", overwrite: true, checkout: length });
        await batch.ready();
        if (source !== null) {
          while (batch.length < source.length) {
            await batch.append(await source.get(batch.length));
          }
        }
        ref.moveTo = [batch, next];
      }
      async close() {
        this.destroyed = true;
        if (this.system) await this.system.close();
        if (this.encryption) await this.encryption.close();
        for (const core of this.cores) await core.close();
      }
    };
    async function getPrologue(core) {
      if (!core.length) return null;
      return {
        hash: await core.treeHash(),
        length: core.length
      };
    }
  }
});

// node_modules/autobase/lib/apply-state.js
var require_apply_state = __commonJS({
  "node_modules/autobase/lib/apply-state.js"(exports2, module2) {
    var ReadyResource = require_ready_resource();
    var assert2 = require_nanoassert();
    var c4 = require_compact_encoding();
    var crypto = require_hypercore_crypto();
    var b4a4 = require_b4a();
    var safetyCatch = require_safety_catch();
    var Hypercore = require_hypercore();
    var { partialSignature } = require_multisig();
    var SystemView = require_system();
    var { AutobaseEncryption, EncryptionView } = require_encryption();
    var UpdateChanges = require_updates();
    var messages = require_messages3();
    var { PrivateApplyCalls } = require_apply_calls();
    var { encodeValue } = require_values();
    var Fork = require_fork();
    var LocalState = require_local_state();
    var { OPLOG_VERSION, BOOT_RECORD_VERSION } = require_caps2();
    var SHOULD_SIGN_THRESHOLD = 0;
    var CheckpointCore = class {
      constructor(view, core, signer, paused) {
        this.view = view;
        this.core = core;
        this.signer = signer;
        this.length = 0;
        this.digest = null;
        this.signatures = { system: null, encryption: null, user: [] };
        this.closed = false;
        this.paused = paused;
      }
      pause() {
        this.paused = true;
      }
      resume() {
        if (!this.paused) return;
        this.paused = false;
        this.updateBackground();
      }
      async update() {
        if (await this.updateCheckpoints()) await this.view.maybeSigned();
      }
      async updateCheckpoints() {
        if (this.core.length <= this.length || this.closed || this.paused) return false;
        const length = this.core.length;
        const value = await this.core.get(length - 1);
        if (length <= this.length || this.closed || !value.digest || this.paused) return false;
        const [digest, checkpoints] = await Promise.all([
          this._inflateDigest(length, value.digest),
          this._inflateAllCheckpoints(length, value.checkpoint)
        ]);
        if (length <= this.length || this.closed || !digest || !checkpoints || this.paused) return false;
        for (let i = 0; i < checkpoints.length; i++) {
          if (checkpoints[i] === null) return false;
        }
        this.length = length;
        this.digest = digest;
        this.signatures = checkpoints;
        return true;
      }
      updateBackground() {
        return this.update().catch(safetyCatch);
      }
      updateInternalSignatures(length, signatures) {
        this.signatures.system = updateSignature(length, signatures.system, this.signatures.system);
        this.signatures.encryption = updateSignature(
          length,
          signatures.encryption,
          this.signatures.encryption
        );
      }
      updateUserSignatures(length, signatures) {
        this.signatures.user = updateSignatures(length, signatures, this.signatures.user);
      }
      makeCheckpoints(length) {
        return {
          system: makeCheckpoint(length, this.signatures.system),
          encryption: makeCheckpoint(length, this.signatures.encryption),
          user: makeCheckpoints(length, this.signatures.user)
        };
      }
      makeDigest(length, key) {
        if (this.digest && (this.digest.key === key || b4a4.equals(this.digest.key, key))) {
          return { key: null, pointer: length - this.digest.at };
        }
        this.digest = { key, at: length };
        return { key, pointer: 0 };
      }
      async ready() {
        await this.core.ready();
        this.core.on("append", this.updateBackground.bind(this));
        if (this.core.writable) await this.updateCheckpoints();
        this.updateBackground();
      }
      signedLength() {
        return this.signatures.system ? this.signatures.system.length : 0;
      }
      close() {
        this.closed = true;
        return this.core.close();
      }
      async _inflateDigest(length, dig) {
        if (!dig) return null;
        if (dig.pointer === 0) {
          return { key: dig.key, at: length };
        }
        const len = length - dig.pointer;
        if (this.digest && len === this.digest.at) return this.digest;
        if (len <= 0) return null;
        const { digest } = await this.core.get(len - 1);
        if (!digest || !digest.key) return null;
        return { key: digest.key, at: len };
      }
      _sameSignatures(b, a) {
        return sameSignature(a.system, b.system) && sameSignature(a.encryption, b.encryption) && sameSignatures(a.user, b.user);
      }
      async _inflateAllCheckpoints(length, checkpoints) {
        if (!checkpoints) return { system: null, encryption: null, user: [] };
        if (this._sameSignatures(checkpoints, this.signatures)) return this.signatures;
        const system = this._inflateSystemCheckpoint(checkpoints.system, length);
        const encryption = this._inflateEncryptionCheckpoint(checkpoints.encryption, length);
        const user = checkpoints.user ? new Array(checkpoints.user.length) : [];
        for (let i = 0; i < user.length; i++) {
          const chk = checkpoints.user[i];
          user[i] = this._inflateUserCheckpoint(chk, i, length);
        }
        const [systemCheckpoint, encryptionCheckpoint, userCheckpoints] = await Promise.all([
          system,
          encryption,
          Promise.all(user)
        ]);
        return {
          system: systemCheckpoint,
          encryption: encryptionCheckpoint,
          user: userCheckpoints
        };
      }
      async _inflateSystemCheckpoint(chk, coreLength) {
        if (chk.checkpoint) {
          const { signature: signature2, length: length2 } = chk.checkpoint;
          return { signature: signature2, length: length2, at: coreLength };
        }
        const len = coreLength - chk.checkpointer;
        if (this.signatures.system && this.signatures.system.at === len) {
          return this.signatures.system;
        }
        if (len <= 0) return null;
        const { checkpoint } = await this.core.get(len - 1);
        if (!checkpoint || !checkpoint.system || !checkpoint.system.checkpoint) return null;
        const { signature, length } = checkpoint.system.checkpoint;
        return { signature, length, at: len };
      }
      async _inflateEncryptionCheckpoint(chk, coreLength) {
        if (!chk) return { length: 0, signature: null, at: 0 };
        if (chk.checkpoint) {
          const { signature: signature2, length: length2 } = chk.checkpoint;
          return { signature: signature2, length: length2, at: coreLength };
        }
        const len = coreLength - chk.checkpointer;
        if (this.signatures.encryption && this.signatures.encryption.at === len) {
          return this.signatures.encryption;
        }
        if (len <= 0) return null;
        const { checkpoint } = await this.core.get(len - 1);
        if (!checkpoint || !checkpoint.encryption || !checkpoint.encryption.checkpoint) return null;
        const { signature, length } = checkpoint.encryption.checkpoint;
        return { signature, length, at: len };
      }
      async _inflateUserCheckpoint(chk, i, coreLength) {
        if (chk.checkpoint) {
          const { signature: signature2, length: length2 } = chk.checkpoint;
          return { signature: signature2, length: length2, at: coreLength };
        }
        const len = coreLength - chk.checkpointer;
        if (i < this.signatures.user.length && this.signatures.user[i].at === len) {
          return this.signatures.user[i];
        }
        if (len <= 0) return null;
        const { checkpoint } = await this.core.get(len - 1);
        if (!checkpoint || i >= checkpoint.user.length || !checkpoint.user[i].checkpoint) return null;
        const { signature, length } = checkpoint.user[i].checkpoint;
        return { signature, length, at: len };
      }
    };
    module2.exports = class ApplyState extends ReadyResource {
      constructor(base) {
        super();
        this.base = base;
        this.encryption = this.base.encryption;
        this.valueEncoding = base.valueEncoding;
        this.store = base._viewStore.atomize();
        this.key = null;
        this.system = null;
        this.view = null;
        this.views = [];
        this.systemView = null;
        this.encryptionView = null;
        this.hostcalls = null;
        this.changes = base._hasUpdate ? new UpdateChanges(base) : null;
        this.updates = [];
        this.local = null;
        this.localState = null;
        this.fastForwarding = false;
        this.indexersUpdated = false;
        this.quorum = 0;
        this.needsIndexedLengthUpdate = false;
        this.interrupted = false;
        this.applying = null;
        this.applyBatch = null;
        this.localCheckpoint = null;
        this.localIndexer = false;
        this.systemUpgrade = null;
        this.checkpoints = [];
        this.pendingViews = null;
        this.pendingFork = null;
        this.dirty = false;
      }
      shouldFlush() {
        return this.dirty;
      }
      async shouldWrite() {
        if (!this.localIndexer || !this.localCheckpoint || !this.localCheckpoint.core.opened) {
          return false;
        }
        const info = await this.system.getIndexedInfo(this.indexedLength);
        if (!info.views.length) return false;
        const { encryption, user } = this.localCheckpoint.signatures;
        if (info.views.length > user.length) return true;
        for (let i = 0; i < info.views.length; i++) {
          if (user[i].length + SHOULD_SIGN_THRESHOLD < info.views[i].length) return true;
        }
        if (info.encryptionLength !== 0) {
          if (!encryption || encryption.length < info.encryptionLength) return true;
        }
        return false;
      }
      get indexedLength() {
        return this.systemView ? this.systemView.indexedLength : 0;
      }
      get systemRef() {
        return this.systemView ? this.systemView.ref : null;
      }
      async validateFork(indexerKeys, system) {
        if (!b4a4.equals(system.key, this.system.core.key)) return false;
        if (this.pendingIndexedLength() < system.length) return false;
        for (const key of indexerKeys) {
          const info = await this.system.get(key);
          if (!info || !info.length || info.isRemoved) return false;
        }
        return true;
      }
      async shouldMigrate() {
        if (!this.fastForwarding && !this.indexersUpdated) return false;
        if (this.system.indexers.length === 0) return false;
        if (!this.system.core.manifest || !this.system.core.manifest.signers) return true;
        if (this.system.indexers.length !== this.system.core.manifest.signers.length) {
          return true;
        }
        const manifests = await this.store.getIndexerManifests(this.system.indexers);
        for (let i = 0; i < this.system.core.manifest.signers.length; i++) {
          const { publicKey } = this.system.core.manifest.signers[i];
          if (!b4a4.equals(publicKey, manifests[i].signers[0].publicKey)) return true;
        }
        return false;
      }
      isLocalPendingIndexer() {
        if (this.system.pendingIndexers.length === 0) return false;
        const key = this.base.local.key;
        for (const k of this.system.pendingIndexers) {
          if (b4a4.equals(k, key)) return !b4a4.equals(this.base.key, key) && this.base.local.length === 0;
        }
        return false;
      }
      removeable(key) {
        if (this.system.indexers.length !== 1) return true;
        return !b4a4.equals(this.system.indexers[0].key, key);
      }
      isLocalIndexer() {
        return !!this.localCheckpoint;
      }
      _createCheckpointCore(key, active, signer, paused) {
        const encryption = this.base.getWriterEncryption(key);
        const session = this.base.store.get({
          key,
          valueEncoding: messages.OplogMessage,
          encryption,
          active
        });
        return new CheckpointCore(this, session, signer, paused);
      }
      async _openInternalView(name, indexedLength) {
        const core = this.store.get({ name });
        await core.ready();
        await core.setUserData("referrer", this.base.key);
        await core.setUserData("autobase/view", b4a4.from(name));
        const ref = this.store.getViewByName(name);
        return { ref, core, indexedLength };
      }
      async _open() {
        try {
          await this._boot();
        } catch (err) {
          if (isViewCorruption(err)) {
            for (const v of this.store.opened) {
              await v.core.ready();
              await v.core.state.storage.deleteSessions();
            }
            if (this.systemView) {
              const core = this.systemView.ref.core;
              await core.ready();
              await core.state.storage.deleteSessions();
            }
            if (this.encryptionView) {
              const core = this.encryptionView.ref.core;
              await core.ready();
              await core.state.storage.deleteSessions();
            }
            await LocalState.clear(this.base.local);
          }
          await this._free();
          throw err;
        }
      }
      async _boot() {
        const boot = await this.base._getBootRecord();
        this.systemView = await this._openInternalView("_system", boot.systemLength);
        this.encryptionView = await this._openInternalView("_encryption", -1);
        const sysCore = this.systemView.core;
        if (sysCore.manifest.version >= 2) {
          if (this.encryption !== null) await this.encryption.reload(this.encryptionView.core);
        }
        const system = new SystemView(sysCore);
        await system.ready();
        this.store.opened = [];
        this.hostcalls = new PrivateApplyCalls(this);
        const view = this.base._hasOpen ? this.base._handlers.open(this.store, this.hostcalls) : null;
        this.view = view;
        this.system = system;
        for (const v of this.store.opened) await v.atomicBatch.ready();
        this.key = system.core.key;
        this.fastForwarding = boot.fastForwarding;
        this.indexersUpdated = boot.indexersUpdated;
        this.quorum = sysCore.manifest ? sysCore.manifest.quorum : 0;
        const added = /* @__PURE__ */ new Set();
        for (let i = 0; i < system.views.length; i++) {
          const { key, length } = system.views[i];
          const v = await this.store.findViewByKey(
            key,
            system.indexers,
            sysCore.manifest.version,
            system.entropy
          );
          if (v === null) {
            this.views.push({ name: null, key, length, core: null, ref: null, mappedIndex: i });
            continue;
          }
          await v.atomicBatch.ready();
          await v.core.setUserData("referrer", this.base.key);
          await v.core.setUserData("autobase/view", b4a4.from(v.name));
          this.views.push({ name: v.name, key, length, core: v.atomicBatch, ref: v, mappedIndex: i });
          added.add(v);
        }
        for (const v of this.store.opened) {
          if (added.has(v)) continue;
          const core = v.atomicBatch;
          this.views.push({
            name: v.name,
            key: core.key,
            length: core.length,
            core,
            ref: v,
            mappedIndex: -1
          });
        }
        this.local = this.store.getLocal();
        await this.local.ready();
        this.localState = new LocalState(this.local);
        let isLocalIndexer = false;
        const paused = this.base.isFastForwarding();
        const inf = await this.system.getIndexedInfo();
        for (let i = 0; i < inf.indexers.length; i++) {
          const idx = inf.indexers[i];
          const chk = this._createCheckpointCore(idx.key, true, i, paused);
          await chk.ready();
          this.checkpoints.push(chk);
          if (b4a4.equals(idx.key, this.base.local.key)) isLocalIndexer = true;
        }
        const shouldSign = this.quorum > 0 && isLocalIndexer;
        if (shouldSign) {
          this.localIndexer = true;
          await this._startLocalCheckpoint();
        }
        await this._refreshWriters();
        this.maybeSigned().catch(noop);
      }
      async _startLocalCheckpoint() {
        for (const chk of this.checkpoints) {
          if (chk.core.id === this.base.local.id) {
            this.localCheckpoint = chk;
            return;
          }
        }
        this.localCheckpoint = this._createCheckpointCore(this.base.local.key, false, 0, false);
        await this.localCheckpoint.ready();
      }
      interrupt() {
        this.interrupted = true;
        this.pause();
      }
      pause() {
        for (const chk of this.checkpoints) {
          if (chk !== this.localCheckpoint) chk.pause();
        }
      }
      resume() {
        for (const chk of this.checkpoints) {
          if (chk !== this.localCheckpoint) chk.resume();
        }
      }
      _checkSystemUpgrade() {
        if (this.systemUpgrade) return;
        const tally = /* @__PURE__ */ new Map();
        for (const chk of this.checkpoints) {
          if (chk.signedLength() <= this.system.core.signedLength) continue;
          if (!chk.digest) continue;
          const id = b4a4.toString(chk.digest.key, "hex");
          const cnt = (tally.get(id) || 0) + 1;
          if (cnt >= this.quorum) {
            this.systemUpgrade = chk.digest.key;
            this.base._queueStaticFastForward(this.systemUpgrade);
            return;
          }
          tally.set(id, cnt);
        }
      }
      mapIndexToView(index) {
        for (const { mappedIndex, ref } of this.views) {
          if (mappedIndex === index) return ref;
        }
      }
      async maybeSigned() {
        if (this.opened === false) await this.ready();
        if (this.interrupted) return;
        const thres = this.checkpoints.length - this.quorum;
        if (thres < 0 || this.checkpoints.length <= thres) return;
        this.checkpoints.sort(cmpCheckpoints);
        const signableLength = this.checkpoints[thres].signedLength();
        if (signableLength <= this.system.core.signedLength) return;
        const expected = this.system.core.key;
        if (signableLength > this.indexedLength) {
          if (!b4a4.equals(expected, this.checkpoints[thres].digest.key)) this._checkSystemUpgrade();
          this.needsIndexedLengthUpdate = true;
          return;
        }
        for (let i = thres; i < this.checkpoints.length; i++) {
          const chk2 = this.checkpoints[i];
          if (!b4a4.equals(expected, chk2.digest.key)) {
            this._checkSystemUpgrade();
            return;
          }
          if (!chk2.signatures.system || chk2.signatures.system.length > this.indexedLength) {
            this.needsIndexedLengthUpdate = true;
            return;
          }
        }
        this.needsIndexedLengthUpdate = false;
        const chk = [];
        for (let i = thres; i < this.checkpoints.length; i++) {
          chk.push({ signer: this.checkpoints[i].signer, signatures: this.checkpoints[i].signatures });
        }
        const { system } = this.checkpoints[thres].signatures;
        await this._assembleMultisig(system.length, chk);
      }
      async _assembleMultisig(signableLength, checkpoints) {
        const views = new Array(this.views.length + 2);
        const sys = await this.system.getIndexedInfo(signableLength);
        if (this.interrupted) return;
        if (this.pendingViews && this.pendingViews[0].length >= signableLength) {
          return;
        }
        views[0] = createCheckpointSignature(signableLength, this.systemView, checkpoints.length);
        if (sys.encryptionLength) {
          views[1] = createCheckpointSignature(
            sys.encryptionLength,
            this.encryptionView,
            checkpoints.length
          );
        }
        const offset = 2;
        for (let i = offset; i < views.length; i++) {
          const view = this.views[i - offset];
          const core = view.core;
          const v = this.getViewFromSystem(view, sys);
          const length = v ? v.length : 0;
          if (!core || length <= core.signedLength) continue;
          const viewIndex = view.mappedIndex + offset;
          views[viewIndex] = createCheckpointSignature(length, view, checkpoints.length);
        }
        for (let i = 0; i < checkpoints.length; i++) {
          addCheckpointSignatures(views, checkpoints, i);
        }
        const promises = [];
        for (const view of views) {
          if (!view) continue;
          for (let i = 0; i < view.signatures.length; i++) {
            promises.push(setPartialSignature(view, i));
          }
        }
        await Promise.all(promises);
        for (const v of views) {
          if (!v) continue;
          for (let i = 0; i < v.signatures.length; i++) {
            if (!v.partials[i]) return;
          }
        }
        if (this.interrupted) return;
        if (this.pendingViews && this.pendingViews[0].length >= signableLength) {
          return;
        }
        if (!views[0]) return;
        this.pendingViews = views;
        this.dirty = true;
        this.base._queueBump();
      }
      _close() {
        if (this.interrupted) return;
        return this._free();
      }
      async _free() {
        this.interrupted = true;
        if (this.applying) this._postApply();
        for (const chk of this.checkpoints) await chk.close();
        if (this.localCheckpoint) await this.localCheckpoint.close();
        if (this.view && this.base._hasClose) await this.base._handlers.close(this.view);
        if (this.system) await this.system.close();
        const promises = [];
        for (const v of this.views) {
          if (v.ref) promises.push(v.ref.release());
        }
        if (this.systemView) promises.push(this.systemView.ref.release());
        if (this.encryptionView) promises.push(this.encryptionView.ref.release());
        await Promise.all(promises);
        await this.store.close();
      }
      _pushUpdate(u) {
        u.version = 1;
        u.seq = this.updates.length === 0 ? 0 : this.updates[this.updates.length - 1].seq + 1;
        u.systemLength = this.systemView.core.length;
        this.updates.push(u);
        this.localState.insertUpdate(u);
      }
      async catchup(linearizer) {
        if (!this.opened) await this.ready();
        if (!this.system.heads.length) return true;
        const writers = /* @__PURE__ */ new Map();
        const updates = await this.localState.listUpdates();
        const sys = await this.system.checkout(this.indexedLength);
        for (const node of updates) {
          const hex = b4a4.toString(node.key, "hex");
          let w = writers.get(hex);
          if (w === void 0) {
            w = await this.base._getWriterByKey(node.key, -1, 0, true, false, sys);
            writers.set(hex, w);
          }
          if (w.length >= node.length) {
            this.base._warn(new Error("Update expects writer to be consumed here"));
            return false;
          }
          while (w.length < node.length) {
            await w.update(sys);
            const next = w.advance();
            if (!next) {
              this.base._warn(new Error("Node must exist for catchup"));
              return false;
            }
            linearizer.addHead(next);
          }
        }
        await sys.close();
        this.updates = updates;
        if (this.indexersUpdated) {
          this.indexersUpdated = false;
          await this.truncate(this.indexedLength);
          await this._rollbackViews();
          if (this.tx === null) this.tx = this.local.state.storage.write();
          while (this.updates.length > 0 && this.updates[this.updates.length - 1].systemLength >= this.indexedLength) {
            const u = this.updates.pop();
            this.localState.deleteUpdate(u);
          }
        } else {
          linearizer.update();
        }
        await this._refreshWriters();
        return true;
      }
      async getIndexedSystem() {
        if (this.opened === false) await this.ready();
        const indexedLength = this.pendingFork ? this.pendingFork.length : this.indexedLength;
        const sys = await this.system.checkout(indexedLength);
        await sys.ready();
        return sys;
      }
      getViewFromSystem(view, sys = this.system) {
        if (view.mappedIndex === -1 || view.mappedIndex >= sys.views.length) return null;
        return sys.views[view.mappedIndex];
      }
      async recoverAt() {
        if (!this.systemRef) await this.ready();
        await this.systemRef.core.ready();
        const lt = this.systemRef.core.core.state.length;
        for await (const { length, info } of SystemView.flushes(this.systemRef.core.session(), {
          reverse: true,
          lt
        })) {
          let consistent = true;
          for (let i = 0; i < info.views.length; i++) {
            if (i >= this.views.length) continue;
            if (!b4a4.equals(info.views[i].key, this.views[i].key)) continue;
            if (info.views[i].length > this.views[i].core.core.state.length) {
              consistent = false;
              break;
            }
          }
          if (consistent) {
            return {
              length,
              force: true,
              key: this.system.core.key,
              indexers: info.indexers,
              views: info.views
            };
          }
        }
        return null;
      }
      bootstrap() {
        return this.system.add(this.base.key, { isIndexer: true, isPending: false });
      }
      async undo(popped) {
        if (!popped) return;
        let indexersUpdated = false;
        while (popped > 0) {
          const u2 = this.updates.pop();
          this.localState.deleteUpdate(u2);
          popped -= u2.batch;
          if (u2.indexers) indexersUpdated = true;
        }
        const u = this.updates.length === 0 ? null : this.updates[this.updates.length - 1];
        const systemLength = u ? u.systemLength : this.indexedLength;
        await this.truncate(systemLength);
        if (indexersUpdated) await this._rollbackViews();
      }
      async truncate(systemLength) {
        if (this.opened === false) await this.ready();
        if (systemLength === this.system.core.length) return;
        await this.system.core.truncate(systemLength);
        const migrated = await this.system.update();
        if (this.encryptionView.core.length !== this.system.encryptionLength) {
          await this.encryptionView.core.truncate(this.system.encryptionLength);
        }
        for (const view of this.views) {
          if (!view.core) continue;
          const v = this.getViewFromSystem(view);
          if (v && view.core.length === v.length) continue;
          if (v === null) view.mappedIndex = -1;
          await view.core.truncate(v ? v.length : 0);
        }
        if (!migrated) return;
        await this._refreshWriters();
        await this._rollbackViews();
      }
      async _refreshWriters() {
        for (const w of this.base.activeWriters) {
          const data = await this.system.get(w.core.key);
          const bootstrapper = this.system.core.length === 0 && b4a4.equals(w.core.key, this.base.key);
          const isRemoved = data ? data.isRemoved : !bootstrapper;
          w.isRemoved = isRemoved;
        }
      }
      async _updateSystem() {
        if (!await this.system.update()) return;
        await this._refreshWriters();
        await this._rollbackViews();
      }
      async _signViewCore(core, length) {
        const s = await core.signable(length, 0);
        const signature = crypto.sign(s, this.base.local.keyPair.secretKey);
        return { signature, length };
      }
      async _signInternalViewCores(sys) {
        return {
          system: await this._signViewCore(this.systemView.core, this.systemView.indexedLength),
          encryption: await this._signViewCore(this.encryptionView.core, sys.encryptionLength)
        };
      }
      async _signUserViewCores(sys) {
        const promises = new Array(sys.views.length);
        for (let i = 0; i < this.views.length; i++) {
          const view = this.views[i];
          const v = this.getViewFromSystem(view, sys);
          const indexedLength = v ? v.length : 0;
          if (!indexedLength) continue;
          const viewIndex = view.mappedIndex;
          promises[viewIndex] = this._signViewCore(view.ref.atomicBatch, indexedLength);
        }
        return Promise.all(promises);
      }
      async finalize(key) {
        this.localState.setBootRecord({
          version: BOOT_RECORD_VERSION,
          key,
          systemLength: this.systemView.indexedLength,
          indexersUpdated: true,
          fastForwarding: false,
          recoveries: this.base.recoveries
        });
        await this.localState.flush();
        await this.store.flush();
        await this.close();
      }
      async _flush(localNodes) {
        if (localNodes) await this._appendLocalNodes(localNodes);
        if (this.localCheckpoint) {
          await this.store.flush();
          await this.localCheckpoint.update();
        }
        this.localState.setBootRecord({
          version: BOOT_RECORD_VERSION,
          key: this.key,
          systemLength: this.systemView.indexedLength,
          indexersUpdated: false,
          fastForwarding: false,
          recoveries: this.base.recoveries
        });
        await this.localState.flush();
        if (this.pendingViews) {
          const views = this.pendingViews;
          this.pendingViews = null;
          for (let i = views.length - 1; i >= 0; i--) {
            const v = views[i];
            if (!v || v.length <= v.core.signedLength) continue;
            const signature = v.core.core.verifier.assemble(v.partials);
            try {
              await v.ref.commit(this.store.atom, v.length, signature);
            } catch (err) {
              if (isAssertion(err)) {
                throw err;
              }
              if (!this.base.closing) this.base._warn(err);
              break;
            }
          }
        }
        await this.store.flush();
        this.fastForwarding = false;
        if (this.pendingViews === null) this.dirty = false;
      }
      _indexUpdates(indexed) {
        let shift = 0;
        while (indexed > 0) indexed -= this.updates[shift++].batch;
        const last = this.updates[shift - 1];
        this.systemView.indexedLength = last.systemLength;
        for (let i = 0; i < shift; i++) this.localState.deleteUpdate(this.updates[i]);
        this.updates.splice(0, shift);
        if (!this.needsIndexedLengthUpdate) return;
        this.maybeSigned().catch(noop);
      }
      pendingIndexedLength() {
        let indexed = this.applying.indexed.length;
        if (!this.applying || !this.updates.length || !indexed) return this.indexedLength;
        let pos = 0;
        while (indexed > 0 && pos < this.updates.length) {
          indexed -= this.updates[pos++].batch;
        }
        const last = this.updates[pos - 1];
        return last.systemLength;
      }
      async _assertNode(node, batch) {
        const v = await this.system.get(node.writer.core.key) || { length: 0, isRemoved: false };
        const expected = v.length + batch;
        if (node.length === expected) return;
        console.trace(
          "INVALID_INSERTION",
          "length=",
          node.length,
          "key=",
          node.writer.core.key,
          "local=",
          node.writer.core.writable,
          "batch=",
          batch,
          "dag=",
          v
        );
        process.exit(1);
      }
      _postApply() {
        this.applyBatch = this.applying = null;
        this.base._postApply();
      }
      async _optimisticApply(u, node, indexed) {
        const checkpoint = this.system.checkpoint();
        this.system.addHead(node);
        const applyBatch = [];
        const key = node.writer.core.key;
        applyBatch.push({
          indexed,
          optimistic: true,
          from: node.writer.core,
          length: node.length,
          value: node.value,
          heads: node.actualHeads
        });
        const pre = await this.system.get(key);
        const preLength = pre ? pre.length : 0;
        let failed = false;
        this.applying = u;
        this.applyBatch = applyBatch;
        try {
          await this.base._handlers.apply(applyBatch, this.view, this.hostcalls);
        } catch (err) {
          if (this.base.closing) throw err;
          failed = true;
        }
        this._postApply();
        if (!failed) {
          const post = await this.system.get(key);
          if (!post || preLength === post.length) failed = true;
        }
        if (!failed) {
          await this._refreshWriters();
          return true;
        }
        this.system.applyCheckpoint(checkpoint);
        if (this.encryptionView.core.length !== this.system.encryptionLength) {
          await this.encryptionView.core.truncate(this.system.encryptionLength);
        }
        for (const view of this.views) {
          const viewLength = view.core ? view.core.length : view.length;
          const viewLookup = this.getViewFromSystem(view);
          const viewSystemLength = viewLookup ? viewLookup.length : 0;
          if (viewSystemLength === viewLength) continue;
          await view.core.truncate(viewSystemLength);
        }
        await this._refreshWriters();
        await this._rollbackViews();
        return false;
      }
      _startTrace(node) {
        this.systemRef.tracer.start();
        this.encryptionView.ref.tracer.start();
        for (let i = 0; i < this.views.length; i++) this.views[i].ref.tracer.start();
      }
      _endTrace(node) {
        const trace = {
          system: this.systemRef.tracer.end(),
          encryption: this.encryptionView.ref.tracer.end(),
          user: []
        };
        for (let i = 0; i < this.views.length; i++) {
          const blocks = this.views[i].ref.tracer.end();
          if (blocks.length) trace.user.push({ view: i, blocks });
        }
        if (trace.system.length || trace.encryption.length || trace.user.length) node.trace = trace;
      }
      async update(u, localNodes) {
        if (this.changes !== null) this.changes.track(this);
        let batch = 0;
        let applyBatch = [];
        let indexersUpdated = 0;
        let j = 0;
        let i = 0;
        let forkedAt = -1;
        while (i < Math.min(u.indexed.length, u.shared)) {
          const node = u.indexed[i++];
          if (node.batch > 1) continue;
          this.base._shiftWriter(node.writer);
          const update = this.updates[j++];
          if (update.indexers) {
            indexersUpdated = i;
            break;
          }
        }
        if (u.undo) await this.undo(u.undo);
        if (this.system.bootstrapping) await this.bootstrap();
        await this._updateSystem();
        const warmupSystemView = [];
        const warmupEncryptionView = [];
        const warmupUserView = new Array(this.views.length);
        for (let k = u.shared; k < u.length; k++) {
          const indexed = k < u.indexed.length;
          const node = indexed ? u.indexed[k] : u.tip[k - u.indexed.length];
          if (!node.trace) continue;
          if (node.trace.system.length) warmupSystemView.push(...node.trace.system);
          if (node.trace.encryption.length) warmupEncryptionView.push(...node.trace.encryption);
          for (const trace of node.trace.user) {
            if (trace.view >= this.views.length) {
              console.warn(
                "Oplog block trace contains OOB view index",
                "trace view",
                trace.view,
                "views.length",
                this.views.length
              );
              continue;
            }
            warmupUserView[trace.view] = warmupUserView[trace.view] || [];
            warmupUserView[trace.view].push(...trace.blocks);
          }
        }
        if (warmupSystemView.length) this.systemView.core.download({ blocks: warmupSystemView });
        if (warmupEncryptionView.length)
          this.encryptionView.core.download({ blocks: warmupEncryptionView });
        for (let k = 0; k < warmupUserView.length; k++) {
          const blocks = warmupUserView[k];
          if (!blocks) continue;
          const view = this.views[k];
          view.core.download({ blocks });
        }
        for (i = u.shared; i < u.length; i++) {
          if (this.base.backoff !== null && this.base.backoff.backoff()) await this.base.backoff.wait();
          const indexed = i < u.indexed.length;
          const node = indexed ? u.indexed[i] : u.tip[i - u.indexed.length];
          batch++;
          if (node.writer.core.writable) this._startTrace(node);
          const optimist = node.writer.isRemoved && node.optimistic && batch === 1 && this.base._hasOptimisticApply === true && await this._optimisticApply(u, node, indexed);
          if (!optimist) {
            if (node.writer.isRemoved && !node.writer.isActiveIndexer) {
              if (node.batch > 1) continue;
              const u2 = {
                seq: 0,
                key: node.writer.core.key,
                length: node.length,
                batch,
                systemLength: 0,
                indexers: false
              };
              this._pushUpdate(u2);
              batch = 0;
              assert2(applyBatch.length === 0, "Apply batch should not have been modified");
              continue;
            }
            const deps = node.causalDependencies();
            for (let i2 = deps.length - 1; i2 >= 1; i2--) {
              const d = deps[i2];
              if (await this.system.linkable(d.writer.core.key, d.length)) {
                this.system.addHead(deps[i2]);
              }
            }
            this.system.addHead(deps[0]);
            if (node.value !== null && !node.writer.isRemoved) {
              applyBatch.push({
                indexed,
                optimistic: false,
                from: node.writer.core,
                length: node.length,
                value: node.value,
                heads: node.actualHeads
              });
            }
            if (node.batch > 1) continue;
            if (applyBatch.length && this.base._hasApply === true) {
              this.applying = u;
              this.applyBatch = applyBatch;
              await this.base._handlers.apply(applyBatch, this.view, this.hostcalls);
              if (forkedAt === -1 && this.pendingFork) forkedAt = i;
              this._postApply();
            }
          }
          const update = {
            seq: 0,
            key: node.writer.core.key,
            length: node.length,
            batch,
            systemLength: 0,
            indexers: false
          };
          update.indexers = !!this.system.indexerUpdate;
          if (this.system.indexerUpdate) await this._generateNextViews();
          await this.system.flush(this.views);
          await this.system.update();
          if (node.writer.core.writable) this._endTrace(node);
          batch = 0;
          applyBatch = [];
          this._pushUpdate(update);
          if (!indexed || indexersUpdated) continue;
          this.base._shiftWriter(node.writer);
          if (update.indexers) {
            indexersUpdated = i + 1;
          }
        }
        if (this.pendingFork) {
          const pending = this.pendingFork;
          if (pending.length > this.indexedLength) this._indexUpdates(u.indexed.length);
          const fork = new Fork(this.base, this.store, this, pending);
          const forked = await fork.upgrade();
          if (!forked) throw new Error("Fork failed");
          await this._flush(localNodes);
          return {
            reboot: true,
            migrated: false
          };
        }
        if (u.indexed.length) {
          this._indexUpdates(indexersUpdated || u.indexed.length);
        }
        const migrated = indexersUpdated !== 0;
        if (migrated) this.key = await this.base._premigrate();
        if (this.changes !== null) {
          this.changes.finalise();
          await this.base._handlers.update(this.view, this.changes);
        }
        await this._flush(localNodes);
        return {
          reboot: migrated,
          migrated
        };
      }
      flush() {
        return this._flush(null);
      }
      async _appendLocalNodes(localNodes) {
        if (localNodes.length === 0) return;
        const blocks = new Array(localNodes.length);
        const local = this.local;
        if (!local.opened) await local.ready();
        for (let i = 0; i < blocks.length; i++) {
          const { value, heads, batch, optimistic, trace } = localNodes[i];
          blocks[i] = {
            version: OPLOG_VERSION,
            maxSupportedVersion: this.base.maxSupportedVersion,
            checkpoint: null,
            digest: null,
            optimistic,
            node: {
              heads,
              batch,
              value: value === null ? null : c4.encode(this.base.valueEncoding, value)
            },
            trace
          };
        }
        if (this.localIndexer) {
          const signedLength = this.localCheckpoint.signedLength();
          const local2 = this.local;
          let signedAt = 0;
          let internalSignatures = null;
          let signatures = null;
          if (this.indexedLength > signedLength) {
            const sys = await this.system.getIndexedInfo(this.indexedLength);
            internalSignatures = await this._signInternalViewCores(sys);
            signatures = await this._signUserViewCores(sys);
            signedAt = local2.length + blocks.length;
          }
          for (let i = 0; i < blocks.length; i++) {
            const length = local2.length + i + 1;
            if (length === signedAt) {
              this.localCheckpoint.updateInternalSignatures(length, internalSignatures);
              this.localCheckpoint.updateUserSignatures(length, signatures);
            }
            const blk = blocks[i];
            blk.checkpoint = this.localCheckpoint.makeCheckpoints(length);
            blk.digest = this.localCheckpoint.makeDigest(length, this.key);
          }
        } else {
          if (!this.localCheckpoint) await this._startLocalCheckpoint();
          for (let i = 0; i < blocks.length; i++) {
            const length = local.length + i + 1;
            blocks[i].digest = this.localCheckpoint.makeDigest(length, this.key);
          }
        }
        await local.append(blocks);
      }
      async _rollbackViews() {
        for (const view of this.views) {
          const v = this.getViewFromSystem(view);
          if (v) {
            view.key = v.key;
          } else {
            await this._resetView(view);
          }
        }
      }
      async createAnchor() {
        const node = this.applyBatch[this.applyBatch.length - 1];
        const key = node.from.key;
        const length = node.length;
        const info = await this.system.get(key, { unflushed: true });
        if (!info || info.length < length) throw new Error("Anchor node is not in system");
        const state = { start: 0, end: 40, buffer: b4a4.alloc(40) };
        c4.fixed32.encode(state, key);
        c4.uint64.encode(state, length);
        const namespace = crypto.hash(state.buffer);
        const manifestData = c4.encode(messages.ManifestData, { version: 0, legacyBlocks: 0, namespace });
        const padding = this.encryption ? AutobaseEncryption.PADDING : 0;
        const block = encodeValue(null, { heads: [{ key, length }], padding });
        if (this.encryption) await this.encryption.encryptAnchor(block, namespace);
        const root = { index: 0, size: block.byteLength, hash: crypto.data(block) };
        const hash = crypto.tree([root]);
        const prologue = { hash, length: 1 };
        const core = this.store.createAnchorCore(prologue, manifestData);
        await core.ready();
        if (core.length === 0) await core.append(block, { writable: true, maxLength: 1 });
        await this.system.add(core.key, { isIndexer: false, length: 0 });
        await this.base._addWriter(core.key, this.system);
        const anchor = { key: core.key, length: core.length };
        await core.close();
        await this.base.hintWakeup(anchor);
        return anchor;
      }
      async _resetView(view) {
        const manifests = await this.store.getIndexerManifests(this.system.indexers);
        const manifestData = view.core ? view.core.manifest.userData : null;
        view.key = await this.store.createView(
          manifests,
          view.name,
          null,
          this.system.core.manifest.version,
          this.system.entropy,
          null,
          manifestData
        );
        view.length = 0;
      }
      async _generateNextViews() {
        const sys = this.system;
        const manifests = await this.store.getIndexerManifests(sys.indexers);
        const entropy = sys.version < 2 ? null : sys.getEntropy(sys.indexers, sys.flushLength());
        for (const v of this.views) {
          const manifestData = v.core ? v.core.manifest.userData : null;
          const prologue = await getPrologue(v);
          const key = await this.store.createView(
            manifests,
            v.name,
            prologue,
            sys.core.manifest.version,
            entropy,
            null,
            manifestData
          );
          v.key = key;
        }
      }
    };
    async function getPrologue(view) {
      const length = view.core ? view.core.length : view.length;
      if (!length) return null;
      const hash = await view.core.treeHash(length);
      return {
        hash,
        length
      };
    }
    function noop() {
    }
    function cmpCheckpoints(a, b) {
      return a.signedLength() - b.signedLength();
    }
    function sameSignature(a, b) {
      if (!a || !b) return a === b;
      return a.length === b.length;
    }
    function sameSignatures(a, b) {
      if (!a || !b) return a === b;
      if (a.length !== b.length) return false;
      for (let i = 0; i < a.length; i++) {
        if (a[i].length !== b[i].length) return false;
      }
      return true;
    }
    function createCheckpointSignature(length, view, checkpoints) {
      return {
        length,
        core: view.core,
        ref: view.ref,
        signatures: new Array(checkpoints),
        partials: new Array(checkpoints)
      };
    }
    function addCheckpointSignatures(pending, checkpoints, index) {
      const { signer, signatures } = checkpoints[index];
      pending[0].signatures[index] = {
        signature: signatures.system.signature,
        length: signatures.system.length,
        signer
      };
      if (pending[1]) {
        pending[1].signatures[index] = {
          signature: signatures.encryption.signature,
          length: signatures.encryption.length,
          signer
        };
      }
      for (let i = 2; i < pending.length; i++) {
        if (!pending[i]) continue;
        const { length, signature } = signatures.user[i - 2];
        pending[i].signatures[index] = {
          signature,
          length,
          signer
        };
      }
    }
    async function setPartialSignature(view, index) {
      const sig = view.signatures[index];
      if (sig.length < view.length && sig.length > 0) await view.core.get(sig.length - 1);
      view.partials[index] = await partialSignature(
        view.core,
        sig.signer,
        view.length,
        sig.length,
        sig.signature
      );
    }
    function updateSignature(length, sig, existing) {
      return sig ? { signature: sig.signature, length: sig.length, at: length } : existing;
    }
    function updateSignatures(length, signatures, existing) {
      const updated = new Array(signatures.length);
      for (let i = 0; i < updated.length; i++) {
        updated[i] = updateSignature(length, signatures[i], i < existing.length ? existing[i] : null);
      }
      return updated;
    }
    function makeCheckpoint(length, chk) {
      if (!chk) return null;
      const checkpointer = length - chk.at;
      return {
        checkpointer,
        checkpoint: checkpointer === 0 ? { signature: chk.signature, length: chk.length } : null
      };
    }
    function makeCheckpoints(length, signatures) {
      if (!signatures.length) return null;
      const checkpoints = new Array(signatures.length);
      for (let i = 0; i < signatures.length; i++) {
        checkpoints[i] = makeCheckpoint(length, signatures[i]);
      }
      return checkpoints;
    }
    function isViewCorruption(err) {
      return err.code === "INVALID_OPERATION";
    }
    function isAssertion(err) {
      return err.code === "ERR_ASSERTION" || err.name === "AssertionError";
    }
  }
});

// node_modules/autobase/lib/append-batch.js
var require_append_batch = __commonJS({
  "node_modules/autobase/lib/append-batch.js"(exports2, module2) {
    var SignalPromise = require_signal_promise();
    module2.exports = class AppendBatch {
      constructor(base) {
        this.base = base;
        this.blocks = [];
        this.closed = false;
        this.flushing = false;
        this._flushed = null;
      }
      async _acquire() {
        while (this.base.activeBatch !== null && this.base.activeBatch !== this)
          await this.base.activeBatch.flushed();
        this.base.activeBatch = this;
      }
      async append(value) {
        if (this.base.opened === false) await this.base.ready();
        if (this.base._advancing !== null) await this.base._advancing;
        if (this.closed) throw new Error("Batch is closed");
        if (this.base.activeBatch !== this) await this._acquire();
        if (this.closed) throw new Error("Batch is closed");
        this.blocks.push(value);
        return this.base.local.length + this.blocks.length;
      }
      async flush() {
        if (this.closed) throw new Error("Batch is closed");
        if (this.flushing) return this.flushed();
        this.flushing = true;
        if (this.blocks.length) await this.base._appendBatch(this.blocks);
        return this.close();
      }
      flushed() {
        if (this.closed) return Promise.resolve();
        if (this._flushed) return this._flushed.wait();
        this._flushed = new SignalPromise();
        return this._flushed.wait();
      }
      close() {
        if (this.base.activeBatch !== this) return;
        this.base.activeBatch = null;
        this.closed = true;
        if (this._flushed) this._flushed.notify(null);
      }
    };
  }
});

// node_modules/autobase/lib/boot.js
var require_boot = __commonJS({
  "node_modules/autobase/lib/boot.js"(exports2, module2) {
    var c4 = require_compact_encoding();
    var encryptionEncoding = require_encryption_encoding();
    var messages = require_messages3();
    module2.exports = async function boot(corestore, key, { encrypt, encryptionKey, keyPair, exclusive = true, blindEncryption } = {}) {
      const result = {
        key: null,
        local: null,
        bootstrap: null,
        encryptionKey: null,
        boot: null
      };
      const manifest = keyPair ? { version: corestore.manifestVersion, signers: [{ publicKey: keyPair.publicKey }] } : null;
      if (key) {
        result.key = key;
        const bootstrap = corestore.get({ key, active: false, valueEncoding: messages.OplogMessage });
        await bootstrap.ready();
        const localKey = await bootstrap.getUserData("autobase/local");
        if (keyPair) {
          result.local = corestore.get({
            keyPair,
            active: false,
            exclusive,
            valueEncoding: messages.OplogMessage,
            manifest
          });
        } else {
          if (bootstrap.writable && !localKey) {
            result.local = bootstrap.session({
              active: false,
              exclusive,
              valueEncoding: messages.OplogMessage
            });
          } else {
            const local = localKey ? corestore.get({
              key: localKey,
              active: false,
              exclusive,
              valueEncoding: messages.OplogMessage
            }) : corestore.get({
              name: "local",
              active: false,
              exclusive,
              valueEncoding: messages.OplogMessage
            });
            await local.ready();
            result.local = local;
          }
        }
        result.bootstrap = bootstrap;
      } else {
        result.local = keyPair ? corestore.get({
          keyPair,
          manifest,
          active: false,
          exclusive,
          valueEncoding: messages.OplogMessage
        }) : corestore.get({
          name: "local",
          active: false,
          exclusive,
          valueEncoding: messages.OplogMessage
        });
        await result.local.ready();
        const key2 = await result.local.getUserData("referrer");
        if (key2) {
          result.key = key2;
          result.bootstrap = corestore.get({ key: key2, active: false, valueEncoding: messages.OplogMessage });
          await result.bootstrap.ready();
        } else {
          result.key = result.local.key;
          result.bootstrap = result.local.session({
            active: false,
            valueEncoding: messages.OplogMessage
          });
          await result.bootstrap.setUserData("autobase/local", result.local.key);
        }
      }
      if (key || keyPair) {
        await result.bootstrap.setUserData("referrer", result.key);
        await result.bootstrap.setUserData("autobase/local", result.local.key);
        await result.local.setUserData("referrer", result.key);
      }
      const [encryptionKeyBuffer, encryptionKeyEncryptedBuffer, pointer] = await Promise.all([
        result.local.getUserData("autobase/encryption"),
        result.local.getUserData("autobase/blind-encryption"),
        result.local.getUserData("autobase/boot")
      ]);
      if (pointer) {
        result.boot = c4.decode(messages.BootRecord, pointer);
      }
      if (encryptionKeyBuffer) {
        if (blindEncryption) {
          const encrypted = await encryptionEncoding.encrypt(
            encryptionKeyBuffer,
            blindEncryption.encrypt
          );
          await result.local.setUserData("autobase/blind-encryption", encrypted);
          await result.local.setUserData("autobase/encryption", null);
        }
        result.encryptionKey = encryptionKeyBuffer;
      }
      if (encryptionKeyEncryptedBuffer) {
        const { value, rotated } = await encryptionEncoding.decrypt(
          encryptionKeyEncryptedBuffer,
          blindEncryption.decrypt
        );
        if (rotated) {
          const encrypted = await encryptionEncoding.encrypt(value, blindEncryption.encrypt);
          await result.local.setUserData("autobase/blind-encryption", encrypted);
        }
        result.encryptionKey = value;
      }
      if (!result.encryptionKey && (encryptionKey || encrypt)) {
        if (!encryptionKey) {
          encryptionKey = (await corestore.createKeyPair("autobase/encryption")).secretKey.subarray(
            0,
            32
          );
        }
        if (blindEncryption) {
          const encrypted = await encryptionEncoding.encrypt(encryptionKey, blindEncryption.encrypt);
          await result.local.setUserData("autobase/blind-encryption", encrypted);
        } else {
          await result.bootstrap.setUserData("autobase/encryption", encryptionKey);
          await result.local.setUserData("autobase/encryption", encryptionKey);
        }
        result.encryptionKey = encryptionKey;
      }
      return result;
    };
  }
});

// node_modules/autobase/index.js
var require_autobase2 = __commonJS({
  "node_modules/autobase/index.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var ReadyResource = require_ready_resource();
    var debounceify = require_debounceify();
    var c4 = require_compact_encoding();
    var safetyCatch = require_safety_catch();
    var hypercoreId = require_hypercore_id_encoding();
    var assert2 = require_nanoassert();
    var SignalPromise = require_signal_promise();
    var CoreCoupler = require_core_coupler();
    var ProtomuxWakeup = require_protomux_wakeup();
    var rrp = require_resolve_reject_promise();
    var Hypercore = require_hypercore();
    var ScopeLock = require_scope_lock();
    var encryptionEncoding = require_encryption_encoding();
    var LocalState = require_local_state();
    var Linearizer = require_linearizer();
    var SystemView = require_system();
    var { EncryptionView } = require_encryption();
    var UpdateChanges = require_updates();
    var messages = require_messages3();
    var Timer = require_timer();
    var Writer = require_writer();
    var { encodeValue, decodeValue } = require_values();
    var ActiveWriters = require_active_writers();
    var AutoWakeup = require_wakeup();
    var FastForward = require_fast_forward();
    var AutoStore = require_store();
    var ApplyState = require_apply_state();
    var AppendBatch = require_append_batch();
    var { PublicApplyCalls } = require_apply_calls();
    var boot = require_boot();
    var { MAX_AUTOBASE_VERSION, BOOT_RECORD_VERSION } = require_caps2();
    var inspect = /* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom");
    var INTERRUPT = new Error("Apply interrupted");
    var BINARY_ENCODING = c4.from("binary");
    var RECOVERIES = 3;
    var DEFAULT_ACK_INTERVAL = 1e4;
    var DEFAULT_ACK_THRESHOLD = 4;
    var REMOTE_ADD_BATCH = 64;
    var REMOTE_ADD_BATCH_SANITY = 4096;
    var MIN_FF_WAIT = 3e5;
    var WakeupHandler = class {
      constructor(base, discoveryKey) {
        this.active = true;
        this.discoveryKey = discoveryKey;
        this.base = base;
      }
      onpeeractive(peer, session) {
        this.base._bumpWakeupPeer(peer);
      }
      onlookup(req, peer, session) {
        const wakeup = this.base._getWakeup();
        if (wakeup.length === 0) return;
        session.announce(peer, wakeup);
      }
      onannounce(wakeup, peer, session) {
        if (this.base.isFastForwarding()) {
          this.base._needsWakeupRequest = true;
          return;
        }
        this.base.hintWakeup(wakeup);
      }
    };
    module2.exports = class Autobase extends ReadyResource {
      constructor(store, bootstrap, handlers = {}) {
        if (Array.isArray(bootstrap)) bootstrap = bootstrap[0];
        if (bootstrap && typeof bootstrap !== "string" && !b4a4.isBuffer(bootstrap)) {
          handlers = bootstrap;
          bootstrap = null;
        }
        super();
        const key = bootstrap ? toKey(bootstrap) : null;
        this.id = null;
        this.key = key;
        this.discoveryKey = null;
        this.backoff = handlers.backoff || null;
        this.keyPair = null;
        this.valueEncoding = c4.from(handlers.valueEncoding || "binary");
        this.store = store;
        this.globalCache = store.globalCache || null;
        this.migrated = false;
        this.encrypted = handlers.encrypted || !!handlers.encryptionKey;
        this.encrypt = !!handlers.encrypt;
        this.encryptionKey = null;
        this.encryption = null;
        this.blindEncryption = handlers.blindEncryption || null;
        this.activeBatch = null;
        this.local = null;
        this.localWriter = null;
        this.isIndexer = false;
        this.activeWriters = new ActiveWriters();
        this.linearizer = null;
        this.updating = false;
        this.nukeTip = !!handlers.nukeTip;
        this.wakeupOwner = !handlers.wakeup;
        this.wakeupCapability = null;
        this.wakeupProtocol = handlers.wakeup || new ProtomuxWakeup();
        this.wakeupSession = null;
        this._primaryBootstrap = null;
        this.fastForwardEnabled = handlers.fastForward !== false;
        this.fastForwarding = null;
        this.fastForwardTo = null;
        this.fastForwardFailedAt = 0;
        this.fastForwardMinimum = FastForward.MINIMUM;
        this.bigBatches = !!handlers.bigBatches;
        this._bootstrapWriters = [];
        this._bootstrapWritersChanged = false;
        this._flushSignal = new SignalPromise();
        this._flushing = 0;
        this._checkWriters = [];
        this._optimistic = -1;
        this._appended = 0;
        this._appending = null;
        this._wakeup = new AutoWakeup(this);
        this._wakeupHints = /* @__PURE__ */ new Map();
        this._wakeupPeerBound = this._wakeupPeer.bind(this);
        this._coupler = null;
        this._updateLocalCore = null;
        this._lock = new ScopeLock();
        this._needsWakeupRequest = false;
        this._needsWakeup = true;
        this._needsWakeupHeads = true;
        this._updates = [];
        this._handlers = handlers || {};
        this._warn = emitWarning.bind(this);
        this._lastError = null;
        this._draining = false;
        this._writable = null;
        this._advancing = null;
        this._interrupting = false;
        this._caughtup = false;
        this.paused = false;
        this._bump = debounceify(() => {
          this._advancing = this._advance();
          return this._advancing;
        });
        this._onremotewriterchangeBound = this._onremotewriterchange.bind(this);
        this._onlocalwriterchangeBound = this._onlocalwriterchange.bind(this);
        this._preopen = null;
        this._hasOpen = !!this._handlers.open;
        this._hasApply = !!this._handlers.apply;
        this._hasOptimisticApply = !!this._handlers.optimistic;
        this._hasUpdate = !!this._handlers.update;
        this._hasClose = !!this._handlers.close;
        this._viewStore = new AutoStore(this);
        this._applyState = null;
        this.view = null;
        this.core = null;
        this.version = -1;
        this.interrupted = null;
        this.recoveries = RECOVERIES;
        const { ackInterval = DEFAULT_ACK_INTERVAL, ackThreshold = DEFAULT_ACK_THRESHOLD } = handlers;
        this._ackInterval = ackInterval;
        this._ackThreshold = ackThreshold;
        this._ackTickThreshold = ackThreshold;
        this._ackTick = 0;
        this._ackTimer = null;
        this._acking = false;
        this._waiting = new SignalPromise();
        this.view = this._hasOpen ? this._handlers.open(this._viewStore, new PublicApplyCalls(this)) : null;
        this.core = this._viewStore.get({ name: "_system" });
        if (this.fastForwardEnabled && isObject2(handlers.fastForward)) {
          this._runFastForward(
            new FastForward(this, handlers.fastForward.key, { verified: false })
          ).catch(noop);
        }
        this.ready().catch(safetyCatch);
      }
      [inspect](depth, opts) {
        let indent = "";
        if (typeof opts.indentationLvl === "number") {
          while (indent.length < opts.indentationLvl) indent += " ";
        }
        return indent + "Autobase { ... }";
      }
      // just compat, use .key
      get bootstrap() {
        return this.key;
      }
      // TODO: compat, will be removed
      get bootstraps() {
        return [this.bootstrap];
      }
      get appending() {
        return this._appending !== null && this._appending.length > 0;
      }
      get writable() {
        return this.localWriter !== null && !this.localWriter.isRemoved;
      }
      get ackable() {
        return this.localWriter !== null && this.localWriter.isActiveIndexer;
      }
      get signedLength() {
        return this.core.signedLength;
      }
      get indexedLength() {
        return this._applyState ? this._applyState.indexedLength : 0;
      }
      get length() {
        return this.core.length;
      }
      get flushing() {
        return this._flushing > 0;
      }
      hash() {
        return this.core.treeHash();
      }
      // deprecated, use .core.key
      getSystemKey() {
        return this.core.key;
      }
      get system() {
        return this._applyState && this._applyState.system;
      }
      // deprecated
      async getIndexedInfo() {
        if (this.opened === false) await this.ready();
        return this._applyState && this._applyState.system.getIndexedInfo(this._applyState.indexedLength);
      }
      _isActiveIndexer() {
        return this.localWriter ? this.localWriter.isActiveIndexer : false;
      }
      replicate(isInitiator, opts) {
        const stream = this.store.replicate(isInitiator, opts);
        this.wakeupProtocol.addStream(stream);
        return stream;
      }
      heads() {
        if (!this._applyState || !this._applyState.opened) return [];
        const nodes = new Array(this._applyState.system.heads.length);
        for (let i = 0; i < this._applyState.system.heads.length; i++)
          nodes[i] = this._applyState.system.heads[i];
        return nodes.sort(compareNodes);
      }
      async export() {
        const exporting = [this.store.storage.export(this.local.discoveryKey), this._viewStore.export()];
        const [local, views] = await Promise.all(exporting);
        return {
          local,
          views
        };
      }
      hintWakeup(hints) {
        if (!Array.isArray(hints)) hints = [hints];
        for (const { key, length } of hints) {
          const hex = b4a4.toString(key, "hex");
          const prev = this._wakeupHints.get(hex);
          if (!prev || length === -1 || prev < length) this._wakeupHints.set(hex, length);
        }
        this._queueBump();
      }
      setBigBatches(bool = true) {
        this.bigBatches = bool;
      }
      _queueBump() {
        this._bump().catch(safetyCatch);
      }
      async _runPreOpen() {
        if (this._handlers.wait) await this._handlers.wait();
        await this.store.ready();
        this.keyPair = await this._handlers.keyPair || null;
        if (this._handlers.encryptionKey !== null) {
          this.encryptionKey = await this._handlers.encryptionKey;
        }
        const result = await boot(this.store, this.key, {
          encryptionKey: this.encryptionKey,
          encrypt: this.encrypt,
          keyPair: this.keyPair,
          blindEncryption: this.blindEncryption
        });
        this._primaryBootstrap = result.bootstrap;
        this.local = result.local;
        this.key = result.bootstrap.key;
        this.discoveryKey = result.bootstrap.discoveryKey;
        this.id = result.bootstrap.id;
        this.encryptionKey = result.encryptionKey;
        if (this.encrypted) {
          assert2(this.encryptionKey !== null, "Encryption key is expected");
        }
        if (this.encryptionKey) {
          this.encryption = new EncryptionView(this, null);
          this.local.setEncryption(this.getWriterEncryption());
          this._primaryBootstrap.setEncryption(this.getWriterEncryption());
        }
        if (this.nukeTip) await this._nukeTip();
        this.local.on("append", this._onlocalwriterchangeBound);
        this.wakeupCapability = await this._handlers.wakeupCapability || {
          key: this.key,
          discoveryKey: this.discoveryKey
        };
        this.setWakeup(this.wakeupCapability.key, this.wakeupCapability.discoveryKey);
      }
      async _nukeTipBatch(key, length) {
        const core = this.store.get({ key, active: false });
        await core.ready();
        const batch = core.session({ name: "batch" });
        await batch.ready();
        if (batch.length > length) await batch.truncate(length);
        await batch.close();
        await core.close();
      }
      // TODO: not atomic atm, so more of a (very useful) debug helper
      async _nukeTip() {
        const pointer = await this.local.getUserData("autobase/boot");
        if (!pointer) return;
        const boot2 = c4.decode(messages.BootRecord, pointer);
        await LocalState.clear(this.local);
        await this._nukeTipBatch(boot2.key, boot2.systemLength);
        const core = this.store.get({ key: boot2.key, active: false, encryption: null });
        const encCore = await EncryptionView.setSystemEncryption(this, core);
        const batch = core.session({ name: "batch" });
        await batch.ready();
        const info = await SystemView.getIndexedInfo(batch, boot2.systemLength);
        await batch.close();
        for (const view of info.views) {
          await this._nukeTipBatch(view.key, view.length);
        }
        if (boot2.heads) this.hintWakeup(boot2.heads);
        if (this.local.length) this.hintWakeup([{ key: this.local.key, length: this.local.length }]);
        await core.close();
        if (encCore) await encCore.close();
      }
      _bumpWakeupPeer(peer) {
        if (this._coupler) this._coupler.update(peer.stream);
      }
      async _rotateLocalWriter(newLocal) {
        assert2(!this.appending, "Cannot rotate a newLocal writer if an append is in progress");
        const oldLocal = this.local;
        if (this._applyState) await this._applyState.close();
        this.local = newLocal;
        this.local.on("append", this._onlocalwriterchangeBound);
        this.localWriter = null;
        this._updateLocalCore = null;
        const store = this._viewStore.atomize();
        const local = store.getLocal();
        await local.ready();
        await LocalState.moveTo(oldLocal, local);
        await local.setUserData("referrer", this.key);
        if (this.encryptionKey) {
          if (this.blindEncryption) {
            const encrypted = await encryptionEncoding.encrypt(
              this.encryptionKey,
              this.blindEncryption.encrypt
            );
            await local.setUserData("autobase/blind-encryption", encrypted);
          } else {
            await local.setUserData("autobase/encryption", this.encryptionKey);
          }
        }
        await store.flush();
        await store.close();
        await this._primaryBootstrap.setUserData("autobase/local", local.key);
        await this._clearWriters();
        await oldLocal.close();
        await this._viewStore.updateLocal();
        await this._clearWriters();
        this._applyState = new ApplyState(this);
        await this._applyState.ready();
        await this._makeLinearizerFromViewState();
        this._caughtup = false;
        this._rebooted();
        this.emit("rotate-local-writer");
      }
      async setLocal(key, { keyPair } = {}) {
        if (!this.opened) await this.ready();
        const manifest = keyPair ? { version: this.store.manifestVersion, signers: [{ publicKey: keyPair.publicKey }] } : null;
        if (!key) key = Hypercore.key(manifest);
        if (b4a4.equals(key, this.local.key)) return;
        const encryption = this.encryptionKey ? this.getWriterEncryption() : null;
        const local = this.store.get({
          key,
          manifest,
          active: false,
          exclusive: true,
          encryption,
          valueEncoding: messages.OplogMessage
        });
        await local.ready();
        this._updateLocalCore = local;
        let runs = 0;
        while (!this._interrupting && this.appending && runs++ < 16) await this.update();
        await this._bump();
      }
      setWakeup(cap, discoveryKey) {
        if (this.wakeupSession) this.wakeupSession.destroy();
        if (!discoveryKey && b4a4.equals(cap, this.key)) discoveryKey = this.discoveryKey;
        this.wakeupSession = this.wakeupProtocol.session(
          cap,
          new WakeupHandler(this, discoveryKey || null)
        );
        for (const peer of this.wakeupSession.peers) {
          if (peer.active) this._bumpWakeupPeer(peer);
        }
      }
      async _getMigrationPointer(key, length) {
        const core = this.store.get({ key, active: false, encryption: null });
        const encCore = await EncryptionView.setSystemEncryption(this, core);
        const min = core.manifest && core.manifest.prologue ? core.manifest.prologue.length : 0;
        for (let i = length - 1; i >= min; i--) {
          if (!await core.has(i)) continue;
          const sys = new SystemView(core, { checkout: i + 1 });
          await sys.ready();
          let good = true;
          for (const v of sys.views) {
            const vc = this.store.get({ key: v.key, active: false });
            await vc.ready();
            if (vc.length < v.length) good = false;
            await vc.close();
          }
          await sys.close();
          if (!good) continue;
          return i + 1;
        }
        await core.close();
        if (encCore) await encCore.close();
        return min;
      }
      // migrating from 6 -> latest
      async _migrate6(key, length) {
        const core = this.store.get({ key, active: false });
        await core.ready();
        const batch = core.session({ name: "batch", overwrite: true, checkout: length });
        await batch.ready();
        await batch.close();
        await core.close();
      }
      // called by view-store for bootstrapping
      async _getSystemInfo() {
        const boot2 = await this._getBootRecord();
        if (!boot2.key) return null;
        const migrated = !!boot2.heads;
        const indexedLength = boot2.systemLength;
        if (migrated) {
          await this._migrate6(boot2.key, indexedLength);
        }
        const core = this.store.get({ key: boot2.key, encryption: null, active: false });
        await core.ready();
        const batch = core.session({ name: "batch" });
        const encCore = await EncryptionView.setSystemEncryption(this, batch);
        await batch.ready();
        if (encCore) await encCore.ready();
        const info = await SystemView.getIndexedInfo(batch, indexedLength);
        if (encCore) await encCore.close();
        await batch.close();
        await core.close();
        if (info.version > MAX_AUTOBASE_VERSION) {
          throw new Error("Autobase upgrade required.");
        }
        if (migrated) {
          this.migrated = true;
          for (const view of info.views) {
            await this._migrate6(view.key, view.length);
          }
          if (boot2.heads) this.hintWakeup(boot2.heads);
          if (this.local.length) this.hintWakeup([{ key: this.local.key, length: this.local.length }]);
        }
        return {
          key: boot2.key,
          indexers: info.indexers,
          views: info.views,
          entropy: info.entropy
        };
      }
      // called by the apply state for bootstrapping
      async _getBootRecord() {
        await this._preopen;
        const pointer = await this.local.getUserData("autobase/boot");
        const boot2 = pointer ? c4.decode(messages.BootRecord, pointer) : {
          version: BOOT_RECORD_VERSION,
          key: null,
          systemLength: 0,
          indexersUpdated: false,
          fastForwarding: false,
          recoveries: RECOVERIES,
          heads: null
        };
        if (boot2.heads) {
          const len = await this._getMigrationPointer(boot2.key, boot2.systemLength);
          if (len !== boot2.systemLength)
            this._warn(
              new Error(
                "Invalid pointer in migration, correcting (" + len + " vs " + boot2.systemLength + ")"
              )
            );
          boot2.systemLength = len;
        }
        return boot2;
      }
      static async getBootRecord(store, key) {
        const result = await boot(store, key, { exclusive: false });
        await result.bootstrap.close();
        await result.local.close();
        return result.boot;
      }
      _interrupt(reason) {
        assert2(!!this._applyState.applying, "Interrupt is only allowed in apply");
        this._interrupting = true;
        if (reason) this.interrupted = reason;
        throw INTERRUPT;
      }
      async flush() {
        if (this._flushing === 0) return;
        return this._flushSignal.wait();
      }
      async advance() {
        if (this.opened === false) await this.ready();
        await this._advancing;
      }
      recouple() {
        if (this._coupler) this._coupler.destroy();
        const core = this._viewStore.getSystemCore();
        this._coupler = new CoreCoupler(core, this._wakeupPeerBound);
      }
      _updateBootstrapWriters() {
        const writers = this.linearizer.getBootstrapWriters();
        for (const writer of this._bootstrapWriters) {
          writer.isBootstrap = false;
          writer.isCoupled = false;
        }
        for (const writer of writers) {
          writer.isCoupled = true;
          writer.setBootstrap(true);
        }
        for (const writer of this._bootstrapWriters) {
          if (writer.isBootstrap === false) writer.setBootstrap(false);
        }
        this._bootstrapWriters = writers;
        this._bootstrapWritersChanged = false;
      }
      async _openLinearizer() {
        if (this._applyState.system.bootstrapping) {
          await this._makeLinearizer(null);
          this._bootstrapLinearizer();
          return;
        }
        await this._makeLinearizerFromViewState();
      }
      async _catchupApplyState() {
        if (await this._applyState.shouldMigrate()) {
          await this._migrate();
        } else if (!await this._applyState.catchup(this.linearizer)) {
          return false;
        }
        this._caughtup = true;
        return true;
      }
      async _open() {
        this._preopen = this._runPreOpen();
        await this._preopen;
        if (this.closing) return;
        this._applyState = new ApplyState(this);
        try {
          await this._applyState.ready();
        } catch (err) {
          if (this.closing) return;
          try {
            await this._applyState.close();
          } catch {
          }
          try {
            await this.core.ready();
          } catch {
          }
          this._applyState = null;
          if (this.closing) return;
          throw err;
        }
        try {
          await this._openLinearizer();
          await this.core.ready();
          await this._wakeup.ready();
        } catch (err) {
          if (this.closing) return;
          throw err;
        }
        if (this.core.length - this._applyState.indexedLength > this._ackTickThreshold) {
          this._ackTick = this._ackTickThreshold;
        }
        if (this.localWriter && this._ackInterval) {
          this._startAckTimer();
        }
        this._updateBootstrapWriters();
        this.recouple();
        this._queueFastForward();
        this._queueBump();
      }
      async _close() {
        await this.flush();
        this._interrupting = true;
        await Promise.resolve();
        if (this.wakeupSession) this.wakeupSession.destroy();
        if (this.wakeupOwner) this.wakeupProtocol.destroy();
        if (this.fastForwarding) await this.fastForwarding.close();
        if (this._coupler) this._coupler.destroy();
        this._coupler = null;
        this._waiting.notify(null);
        await this.activeWriters.clear();
        const closing = this._advancing ? this._advancing.catch(safetyCatch) : null;
        await this._clearWriters();
        if (this._primaryBootstrap) await this._primaryBootstrap.close();
        await this.local.close();
        if (this._ackTimer) {
          this._ackTimer.stop();
          await this._ackTimer.flush();
        }
        await this._wakeup.close();
        if (this._hasClose) await this._handlers.close(this.view);
        if (this._applyState) await this._applyState.close();
        await this._viewStore.close();
        await this.core.close();
        await this.store.close();
        if (this._writable) this._writable.resolve(false);
        await closing;
      }
      getLastError() {
        return this._lastError;
      }
      _onError(err) {
        if (this.closing) return;
        this._lastError = err;
        if (err === INTERRUPT) {
          this.emit("interrupt", this.interrupted);
          this.emit("update");
          return;
        }
        this.close().catch(safetyCatch);
        if (ReadyResource.listenerCount(this, "error") === 0) {
          crashSoon(err);
          return;
        }
        this.emit("error", err);
      }
      async _closeWriter(w) {
        this.activeWriters.delete(w);
        await w.close();
      }
      async _gcWriters() {
        if (this._checkWriters.length === 0) return;
        while (this._checkWriters.length > 0) {
          const w = this._checkWriters.pop();
          w.updateActivity();
          if (!w.flushed()) continue;
          const unqueued = this._wakeup.unqueue(w.core.key, w.core.length);
          if (!unqueued || w.isActiveIndexer) continue;
          if (this.localWriter === w) continue;
          await this._closeWriter(w);
        }
        await this._wakeup.flush();
      }
      _startAckTimer() {
        if (this._ackTimer) return;
        this._ackTimer = new Timer(this._backgroundAck.bind(this), this._ackInterval);
        this._bumpAckTimer();
      }
      _bumpAckTimer() {
        if (!this._ackTimer) return;
        this._ackTimer.bump();
      }
      async update() {
        if (this.opened === false) await this.ready();
        try {
          await this._bump();
          if (this._acking) await this._bump();
        } catch (err) {
          if (this._interrupting) return;
          throw err;
        }
      }
      // runs in bg, not allowed to throw
      // TODO: refactor so this only moves the writer affected to a updated set
      async _onremotewriterchange() {
        this._bumpAckTimer();
        try {
          await this._bump();
        } catch {
        }
      }
      _onlocalwriterchange() {
        if (!this.localWriter || this.localWriter.isRemoved) this._queueBump();
      }
      _onwakeup() {
        this._needsWakeup = true;
        this._queueBump();
      }
      isFastForwarding() {
        if (this.fastForwardTo !== null) return true;
        return this.fastForwardEnabled && this.fastForwarding !== null;
      }
      _backgroundAck() {
        return this.ack(true);
      }
      async ack(bg = false) {
        if (this.opened === false) await this.ready();
        if (this.localWriter === null || this._acking || this._interrupting || this._appending !== null)
          return;
        if (this._applyState === null) {
          try {
            await this._bump();
          } catch {
          }
          if (this._applyState === null || this._interrupting) return;
        }
        const applyState = this._applyState;
        if (applyState.opened === false) await applyState.ready();
        const isPendingIndexer = applyState.isLocalPendingIndexer();
        if (!isPendingIndexer && this.isFastForwarding() || this._interrupting) return;
        const isIndexer = applyState.isLocalIndexer() || isPendingIndexer;
        if (!isIndexer) return;
        this._acking = true;
        try {
          await this._bump();
        } catch (err) {
          if (!this._interrupting) throw err;
        }
        if (this._interrupting || !this.localWriter || this.localWriter.closed) {
          this._acking = false;
          return;
        }
        if (this._ackTimer && bg) await this._ackTimer.asapStandalone();
        if (this._interrupting || applyState.closing) {
          this._acking = false;
          return;
        }
        const alwaysWrite = isPendingIndexer || await applyState.shouldWrite();
        if (this._interrupting || applyState.closing) {
          this._acking = false;
          return;
        }
        const hasPendingIndexers = applyState.system.indexers.length > this.linearizer.indexers.length;
        if (alwaysWrite || this.linearizer.shouldAck(this.localWriter, hasPendingIndexers)) {
          try {
            if (this.localWriter && !this.localWriter.closed) await this.append(null);
          } catch (err) {
            if (!this._interrupting) throw err;
          }
        }
        if (!this._interrupting) {
          this._updateAckThreshold();
          this._bumpAckTimer();
        }
        this._acking = false;
      }
      views() {
        if (this._applyState) return this._applyState.store.listViews();
        return this._viewStore.listViews();
      }
      batch() {
        return new AppendBatch(this);
      }
      async append(value, opts) {
        if (this.opened === false) await this.ready();
        if (this._advancing !== null) await this._advancing;
        while (this.activeBatch) await this.activeBatch.flushed();
        return this._appendBatch(value, opts);
      }
      async _appendBatch(value, opts) {
        if (this._interrupting) throw new Error("Autobase is closing");
        if (value && this.valueEncoding !== BINARY_ENCODING)
          value = normalize(this.valueEncoding, value);
        const optimistic = !!opts && !!opts.optimistic && !!value;
        if (!optimistic && (this.localWriter === null || this.localWriter.isRemoved && value !== null)) {
          throw new Error("Not writable");
        }
        if (this._appending === null) this._appending = [];
        let len = 0;
        if (Array.isArray(value)) {
          for (const v of value) len = this._append(v);
        } else {
          len = this._append(value);
        }
        const localLength = this.local.length;
        if (optimistic) this._optimistic = this._appending.length - 1;
        const target = this._appended + this._appending.length;
        if (this._advancing) await this._advancing;
        let runs = 0;
        while (this._appended < target && !this._interrupting) {
          await this._bump();
          if (runs++ >= 16 && this.localWriter && this.localWriter.idle()) break;
        }
        if (this._advancing) await this._advancing;
        if (this._interrupting) throw new Error("Autobase is closing");
        return localLength + len;
      }
      _append(value) {
        if (this._appending.length > 0) {
          if (value === null) return this._appending.length;
          if (this._appending[this._appending.length - 1] === null) {
            this._appending.pop();
          }
        }
        return this._appending.push(value);
      }
      static decodeValue(value, opts) {
        return decodeValue(value, opts);
      }
      static encodeValue(value, opts) {
        return encodeValue(value, opts);
      }
      static async getLocalKey(store, opts = {}) {
        const core = opts.keyPair ? store.get({ ...opts, active: false }) : store.get({ ...opts, name: "local", active: false });
        await core.ready();
        const key = core.key;
        await core.close();
        return key;
      }
      static getLocalCore(store, handlers, encryptionKey) {
        const encryption = !encryptionKey ? null : { key: encryptionKey };
        const opts = {
          ...handlers,
          compat: false,
          active: false,
          exclusive: true,
          valueEncoding: messages.OplogMessage,
          encryption
        };
        return opts.keyPair ? store.get(opts) : store.get({ ...opts, name: "local" });
      }
      static async getUserData(core) {
        const view = await core.getUserData("autobase/view");
        return {
          referrer: await core.getUserData("referrer"),
          view: view ? b4a4.toString(view) : null
        };
      }
      static async isAutobase(core, opts = {}) {
        const block = await core.get(0, opts);
        if (!block) throw new Error("Core is empty.");
        if (!b4a4.isBuffer(block)) return isAutobaseMessage(block);
        try {
          const m = c4.decode(messages.OplogMessage, block);
          return isAutobaseMessage(m);
        } catch {
          return false;
        }
      }
      // no guarantees where the user data is stored, just that its associated with the base
      async setUserData(key, val) {
        await this._preopen;
        const core = this._primaryBootstrap === null ? this.local : this._primaryBootstrap;
        await core.setUserData(key, val);
      }
      async getUserData(key) {
        await this._preopen;
        const core = this._primaryBootstrap === null ? this.local : this._primaryBootstrap;
        return await core.getUserData(key);
      }
      _needsLocalWriter() {
        return this.localWriter === null || this.localWriter.closed;
      }
      // no guarantees about writer.isActiveIndexer property here
      async _getWriterByKey(key, len, seen, allowGC, isAdded, system) {
        assert2(this._draining === true || this.opening && !this.opened || this._optimistic > -1);
        await this._lock.lock();
        if (this._interrupting) {
          this._lock.unlock();
          throw new Error("Autobase is closing");
        }
        try {
          let w = this.activeWriters.get(key);
          const alreadyActive = !!w;
          const sys = system || this._applyState.system;
          const writerInfo = await sys.get(key);
          if (len === -1) {
            if (!allowGC && writerInfo === null) {
              if (w) w.isRemoved = !isAdded;
              return null;
            }
            len = writerInfo === null ? 0 : writerInfo.length;
          }
          const isActive = writerInfo !== null && (isAdded || !writerInfo.isRemoved);
          const isRemoved = !isActive;
          if (w) {
            w.isRemoved = isRemoved;
          } else {
            w = this._makeWriter(key, len, isActive, isRemoved);
            if (!w) return null;
          }
          if (isRemoved && sys.bootstrapping && b4a4.equals(w.core.key, this.key)) {
            w.isRemoved = false;
          }
          if (this._isLocalCore(w.core) && this._needsLocalWriter()) {
            this._setLocalWriter(w);
          }
          w.seen(seen);
          if (alreadyActive) return w;
          await w.ready();
          if (this._isLocalCore(w.core) && this._needsLocalWriter()) {
            this._setLocalWriter(w);
          }
          if (allowGC && w.flushed()) {
            this._wakeup.unqueue(key, len);
            if (w !== this.localWriter) {
              await w.close();
              return w;
            }
          }
          this.activeWriters.add(w);
          this._checkWriters.push(w);
          assert2(w.opened);
          assert2(!w.closed);
          w.updateActivity();
          return w;
        } finally {
          this._lock.unlock();
        }
      }
      _updateAll() {
        const p = [];
        for (const w of this.activeWriters) p.push(w.update(null).catch(safetyCatch));
        return Promise.all(p);
      }
      getWriterEncryption() {
        if (!this.encryptionKey) return null;
        return this.encryption.getWriterEncryption();
      }
      _makeWriterCore(key) {
        if (this.closing) throw new Error("Autobase is closing");
        if (this._interrupting) throw INTERRUPT();
        const local = b4a4.equals(key, this.local.key);
        const encryption = this.getWriterEncryption();
        const core = local ? this.local.session({ valueEncoding: messages.OplogMessage, encryption, active: false }) : this.store.get({
          key,
          compat: false,
          writable: false,
          valueEncoding: messages.OplogMessage,
          encryption,
          active: false
        });
        return core;
      }
      _makeWriter(key, length, isActive, isRemoved) {
        const core = this._makeWriterCore(key);
        const w = new Writer(this, core, length, isRemoved);
        if (this._isLocalCore(core)) {
          if (isActive) this._setLocalWriter(w);
          return w;
        }
        core.on("append", this._onremotewriterchangeBound);
        core.on("download", this._onremotewriterchangeBound);
        core.on("manifest", this._onremotewriterchangeBound);
        return w;
      }
      _updateLinearizer(indexers, heads) {
        for (const w of this.activeWriters) w.isActiveIndexer = false;
        if (this.localWriter) this.localWriter.isActiveIndexer = false;
        for (const writer of indexers) writer.isActiveIndexer = true;
        if (this._isActiveIndexer() && !this.isIndexer) {
          this._setLocalIndexer();
        } else if (!this._isActiveIndexer() && this.isIndexer) {
          this._clearLocalIndexer();
        }
        this.linearizer = new Linearizer(indexers, { heads, writers: this.activeWriters });
        this._updateAckThreshold();
      }
      async _updateLocalWriter(sys) {
        if (this.localWriter !== null && !this.localWriter.closed) return;
        await this._getWriterByKey(this.local.key, -1, 0, true, false, sys);
      }
      async _bootstrapLinearizer() {
        const bootstrap = this._makeWriter(this.key, 0, true, false);
        this.activeWriters.add(bootstrap);
        this._checkWriters.push(bootstrap);
        await bootstrap.ready();
        this._ensureWakeup(bootstrap);
        this._updateLinearizer([bootstrap], []);
      }
      async _makeLinearizer(sys) {
        if (sys === null) {
          return this._bootstrapLinearizer();
        }
        if (this.opened || await sys.hasLocal(this.local.key)) {
          await this._updateLocalWriter(sys);
        }
        const indexers = [];
        for (const head of sys.indexers) {
          const writer = await this._getWriterByKey(head.key, head.length, 0, false, false, sys);
          indexers.push(writer);
        }
        if (!this._isActiveIndexer()) {
          for (const key of sys.pendingIndexers) {
            if (b4a4.equals(key, this.local.key)) {
              this._setLocalIndexer();
              break;
            }
          }
        }
        this._updateLinearizer(indexers, sys.heads);
        for (const { key, length } of sys.heads) {
          await this._getWriterByKey(key, length, 0, false, false, sys);
        }
      }
      async _clearWriters() {
        await this.activeWriters.clear();
        if (this.localWriter !== null) await this.localWriter.close();
        this._checkWriters = [];
      }
      async _moveTo() {
        assert2(this._applyState.closed);
        for (const ref of this._viewStore.byName.values()) {
          if (!ref.moveTo) continue;
          const [batch, next] = ref.moveTo;
          ref.moveTo = null;
          await ref.batch.state.moveTo(batch, batch.length);
          await batch.close();
          ref.migrated(this, next);
        }
      }
      async _makeLinearizerFromViewState() {
        const sys = await this._applyState.getIndexedSystem();
        await this._makeLinearizer(sys);
        await sys.close();
      }
      async _runForceFastForward() {
        await this.core.ready();
        if (this.closing) return;
        const rec = this._applyState ? await this._applyState.recoverAt() : null;
        await this._runFastForward(
          new FastForward(this, this.core.key, { force: true, length: rec ? rec.length : 0 })
        );
      }
      // general repair method for trying to recover
      async repair() {
        await this.forceFastForward();
      }
      async forceFastForward() {
        if (this.isFastForwarding()) return;
        await this._runForceFastForward();
        await this.update();
      }
      async _applyFastForward() {
        if (!this.fastForwardTo.force && this.fastForwardTo.length < this.core.length + this.fastForwardTo.minimum) {
          this.fastForwardTo = null;
          this._updateActivity();
          return;
        }
        const changes = this._hasUpdate ? new UpdateChanges(this) : null;
        if (changes) changes.track(this._applyState);
        if (this._applyState) await this._applyState.close();
        const { key, length, views, indexers, manifestVersion, entropy } = this.fastForwardTo;
        const from = this.core.signedLength;
        const ffed = /* @__PURE__ */ new Set();
        this._flushing++;
        try {
          const store = this._viewStore.atomize();
          const systemRef = await this._viewStore.findViewByKey(key, indexers, manifestVersion, entropy);
          const migrated = !b4a4.equals(key, systemRef.core.key);
          ffed.add(systemRef);
          if (migrated) {
            await this._applyFastForwardMigration(systemRef, { key, length });
          } else {
            await systemRef.catchup(store.atom, length);
          }
          for (const v of views) {
            const ref = await this._viewStore.findViewByKey(v.key, indexers, manifestVersion, entropy);
            if (!ref) continue;
            const migrated2 = !b4a4.equals(ref.core.key, v.key);
            ffed.add(ref);
            if (migrated2) {
              await this._applyFastForwardMigration(ref, v);
            } else {
              await ref.catchup(store.atom, v.length);
            }
          }
          if (ffed.size !== store.getViewCount()) {
            for (const ref of store.getViews()) {
              if (ffed.has(ref)) continue;
              await ref.catchup(store.atom, 0);
            }
          }
          if (migrated) {
            const manifests = await this._viewStore.getIndexerManifests(indexers);
            for (const [name, ref] of this._viewStore.byName) {
              if (ffed.has(ref)) continue;
              await this._migrateView(manifests, null, name, 0, manifestVersion, entropy, [], null);
            }
          }
          const value = c4.encode(messages.BootRecord, {
            version: BOOT_RECORD_VERSION,
            key,
            systemLength: length,
            indexersUpdated: false,
            fastForwarding: true,
            recoveries: RECOVERIES
          });
          const local = store.getLocal();
          await local.ready();
          await local.setUserData("autobase/boot", value);
          await LocalState.clear(local);
          await store.flush();
          await store.close();
        } finally {
          if (--this._flushing === 0) this._flushSignal.notify();
        }
        for (const ref of this._viewStore.byName.values()) await ref.release();
        this.recoveries = RECOVERIES;
        this.fastForwardTo = null;
        this._queueFastForward();
        await this._clearWriters();
        await this._moveTo();
        const to = this.core.signedLength;
        if (changes) changes.finalise();
        this._applyState = new ApplyState(this);
        await this._applyState.ready();
        if (changes) await this._handlers.update(this._applyState.view, changes);
        if (await this._applyState.shouldMigrate()) {
          await this._migrate();
        } else {
          await this._makeLinearizerFromViewState();
          await this._applyState.catchup(this.linearizer);
        }
        if (!this.localWriter || this.localWriter.closed) {
          await this._updateLocalWriter(this._applyState.system);
        }
        this._caughtup = true;
        this._rebooted();
        this.emit("fast-forward", to, from);
      }
      // TODO: not atomic in regards to the ff, fix that
      async _applyFastForwardMigration(ref, v) {
        await ref.batch.ready();
        const next = this.store.get(v.key);
        await next.ready();
        const prologue = next.manifest && next.manifest.prologue;
        if (prologue && prologue.length > 0 && ref.core.length >= prologue.length) {
          try {
            await next.core.copyPrologue(ref.core.state);
          } catch {
          }
        }
        const batch = next.session({ name: "batch", overwrite: true, checkout: v.length });
        await batch.ready();
        ref.moveTo = [batch, next];
      }
      async _migrateView(indexerManifests, source, name, indexedLength, manifestVersion, entropy, linked, manifestData) {
        const ref = this._viewStore.byName.get(name);
        await ref.batch.ready();
        const prologue = indexedLength === 0 ? null : { length: indexedLength, hash: await source.treeHash(indexedLength) };
        if (manifestData === null && ref.core.manifest.userData !== null) {
          manifestData = ref.core.manifest.userData;
        }
        const next = this._viewStore.getViewCore(
          indexerManifests,
          name,
          prologue,
          manifestVersion,
          entropy,
          linked,
          manifestData
        );
        await next.ready();
        if (indexedLength > 0) {
          await next.core.copyPrologue(source.state);
        }
        const batch = next.session({ name: "batch", overwrite: true, checkout: indexedLength });
        await batch.ready();
        if (source !== null) {
          while (batch.length < source.length) {
            await batch.append(await source.get(batch.length));
          }
        }
        ref.moveTo = [batch, next];
        return ref;
      }
      async _premigrate() {
        this._flushing++;
        try {
          const length = this._applyState.indexedLength;
          const system = this._applyState.system;
          const info = await system.getIndexedInfo(length);
          const indexerManifests = await this._viewStore.getIndexerManifests(info.indexers);
          const { views, systemView, encryptionView } = this._applyState;
          const manifestVersion = this._applyState.system.core.manifest.version;
          for (const view of views) {
            const v = this._applyState.getViewFromSystem(view, info);
            const indexedLength = v ? v.length : 0;
            const ref2 = this._viewStore.getViewByName(view.name);
            const source2 = ref2.getCore();
            await source2.ready();
            await this._migrateView(
              indexerManifests,
              source2,
              view.name,
              indexedLength,
              manifestVersion,
              info.entropy,
              null,
              null
            );
          }
          const source = encryptionView.ref.getCore();
          await source.ready();
          const enc = await this._migrateView(
            indexerManifests,
            source,
            "_encryption",
            info.encryptionLength,
            manifestVersion,
            info.entropy,
            null,
            null
          );
          const linked = [enc.core.key];
          const sysCore = systemView.ref.getCore();
          const ref = await this._migrateView(
            indexerManifests,
            sysCore,
            "_system",
            length,
            manifestVersion,
            info.entropy,
            linked,
            null,
            null
          );
          const sysKey = ref.getNextKey();
          if (sysKey === null) {
            throw new Error("Migration failed, expected core to be moved");
          }
          return sysKey;
        } finally {
          if (--this._flushing === 0) this._flushSignal.notify();
        }
      }
      async _migrate() {
        return this._reboot(await this._premigrate());
      }
      async _reboot(key) {
        await this._clearWriters();
        await this._makeLinearizerFromViewState();
        await this._applyState.finalize(key);
        await this._moveTo();
        this._applyState = new ApplyState(this);
        await this._applyState.ready();
        await this._applyState.catchup(this.linearizer);
        this._queueFastForward();
        this._rebooted();
      }
      _rebooted() {
        this.recouple();
        this._updateActivity();
        this.emit("reboot");
        this._bootstrapWritersChanged = true;
        this._needsWakeup = true;
        this.updating = true;
        this._queueBump();
      }
      _setLocalWriter(w) {
        this.localWriter = w;
        if (this._ackInterval) this._startAckTimer();
      }
      _unsetLocalWriter() {
        if (!this.localWriter) return;
        this._closeWriter(this.localWriter);
        if (this.localWriter.isActiveIndexer) this._clearLocalIndexer();
        this.localWriter = null;
      }
      _setLocalIndexer() {
        assert2(this.localWriter !== null);
        this.isIndexer = true;
        this.emit("is-indexer");
      }
      _clearLocalIndexer() {
        assert2(this.localWriter !== null);
        if (this._ackTimer) this._ackTimer.stop();
        this.isIndexer = false;
        this._ackTimer = null;
        this.emit("is-non-indexer");
      }
      _isLocalCore(core) {
        return core.writable && core.id === this.local.id;
      }
      _addLocalHeads() {
        if (!this.localWriter || this.localWriter.closed) return null;
        if (!this.localWriter.idle()) return null;
        const length = this._optimistic === -1 ? this._appending.length : this._optimistic || 1;
        const nodes = new Array(length);
        for (let i = 0; i < length; i++) {
          const heads = this.linearizer.getHeads();
          const deps = new Set(this.linearizer.heads);
          const batch = length - i;
          const value = this._appending[i];
          const node = this.localWriter.append(value, heads, batch, deps, this._optimistic === 0);
          this.linearizer.addHead(node);
          nodes[i] = node;
        }
        return nodes;
      }
      _flushLocalHeads(length) {
        this._appending = length === this._appending.length ? null : this._appending.slice(length);
        this._appended += length;
        if (this._optimistic > -1 && this._optimistic < length) this._optimistic = -1;
      }
      async _addRemoteHeads() {
        let added = 0;
        while (added < REMOTE_ADD_BATCH || this.bigBatches && !this._indexersIdle() && added < REMOTE_ADD_BATCH_SANITY) {
          await this._updateAll();
          let advanced = 0;
          for (const w of this.activeWriters) {
            let node = w.advance();
            if (node === null) continue;
            advanced += node.batch;
            while (true) {
              this.linearizer.addHead(node);
              if (node.batch === 1) break;
              node = w.advance();
            }
          }
          if (advanced === 0) {
            if (this.bigBatches && !this._indexersIdle() && await this._waitForIndexers()) continue;
            break;
          }
          added += advanced;
        }
        return added;
      }
      async _waitForIndexers() {
        const promises = [];
        for (const w of this.linearizer.indexers) {
          if (w.idle()) continue;
          if (await w.core.has(w.length)) continue;
          promises.push(w.core.get(w.length, { timeout: 3e3 }));
        }
        for (const result of await Promise.allSettled(promises)) {
          if (result.status !== "rejected") return true;
        }
        return false;
      }
      _indexersIdle() {
        for (const w of this.linearizer.indexers) {
          if (!w.idle()) return false;
        }
        return true;
      }
      async _drain() {
        const writable = this.writable;
        while (!this._interrupting && !this.paused) {
          if (this.local.recovering) {
            try {
              await this.local.recover();
            } catch {
              await this._runForceFastForward();
            }
            continue;
          }
          if (this.fastForwardTo !== null) {
            await this._applyFastForward();
            continue;
          }
          if (this._caughtup === false) {
            if (!await this._catchupApplyState()) {
              await this._runForceFastForward();
            }
            continue;
          }
          const remoteAdded = await this._addRemoteHeads();
          const localNodes = this._appending !== null ? this._addLocalHeads() : null;
          if (this._interrupting) return;
          if (remoteAdded > 0 || localNodes !== null) {
            this.updating = true;
          }
          const u = this.linearizer.update();
          const update = u ? await this._applyState.update(u, localNodes) : { reboot: false, migrated: false };
          if (localNodes) this._flushLocalHeads(localNodes.length);
          if (!update.reboot) {
            if (this._applyState.shouldFlush()) {
              await this._applyState.flush();
              this.updating = true;
            }
            if (this._checkWriters.length > 0) {
              await this._gcWriters();
              continue;
            }
            if (remoteAdded >= REMOTE_ADD_BATCH) continue;
            break;
          }
          await this._gcWriters();
          await this._reboot(this._applyState.key);
        }
        if (writable !== this.writable) {
          if (this.writable && this._writable) this._writable.resolve(true);
          this.emit(writable ? "unwritable" : "writable");
        }
      }
      _wakeupPeer(stream) {
        if (!this.wakeupSession) return;
        const wakeup = this._getWakeup();
        if (wakeup.length === 0) return;
        this.wakeupSession.announceByStream(stream, wakeup);
      }
      _getWakeup() {
        const writers = [];
        for (const w of this.activeWriters) {
          if (w.isActiveIndexer || w.flushed()) continue;
          writers.push({ key: w.core.key, length: w.length });
        }
        return writers;
      }
      async _wakeupWriter(key, length) {
        this._ensureWakeup(await this._getWriterByKey(key, -1, length, true, false, null));
      }
      // ensure wakeup on an existing writer (the writer calls this in addition to above)
      _ensureWakeup(w) {
        if (w === null || w.isBootstrap === true) return;
        w.setBootstrap(true);
        this._bootstrapWriters.push(w);
        this._bootstrapWritersChanged = true;
      }
      async _drainWakeup() {
        const promises = [];
        if (this._needsWakeup) {
          for (const { key, length } of this._wakeup) {
            const w = this.activeWriters.get(key);
            if (w) {
              if (w.length < length) w.seen(length);
              continue;
            }
            promises.push(this._applyState.system.get(key));
          }
          if (this._needsWakeupHeads) {
            for (const { key } of await this._applyState.system.heads) {
              if (this.activeWriters.has(key)) continue;
              promises.push(this._applyState.system.get(key));
            }
          }
        }
        for (const [hex, length] of this._wakeupHints) {
          const key = b4a4.from(hex, "hex");
          if (length !== -1) {
            const w = this.activeWriters.get(key);
            if (w) {
              if (w.length < length) w.seen(length);
              continue;
            }
          }
          promises.push(this._applyState.system.get(key));
        }
        await Promise.allSettled(promises);
        if (this._needsWakeup === true) {
          this._needsWakeup = false;
          for (const { key, length } of this._wakeup) {
            if (this.activeWriters.has(key)) continue;
            await this._wakeupWriter(key, length);
          }
          if (this._needsWakeupHeads === true) {
            this._needsWakeupHeads = false;
            for (const { key } of await this._applyState.system.heads) {
              if (this.activeWriters.has(key)) continue;
              await this._wakeupWriter(key, 0);
            }
          }
        }
        for (const [hex, length] of this._wakeupHints) {
          const key = b4a4.from(hex, "hex");
          if (this.activeWriters.has(key)) continue;
          if (length !== -1) {
            const info = await this._applyState.system.get(key);
            if (info && length <= info.length) continue;
          }
          await this._wakeupWriter(key, length === -1 ? 0 : length);
        }
        this._wakeupHints.clear();
      }
      pause() {
        this.paused = true;
      }
      resume() {
        this.paused = false;
        this._queueBump();
      }
      waitForWritable() {
        if (this.writable) return Promise.resolve(true);
        if (!this._writable) this._writable = rrp();
        return this._writable.promise;
      }
      async _drainWithInterupt() {
        while (true) {
          try {
            await this._drain();
            return;
          } catch (err) {
            if (this.closing || !this.fastForwardTo) throw err;
            if (Date.now() - this.fastForwardFailedAt < MIN_FF_WAIT) throw err;
            this.fastForwardFailedAt = Date.now();
          }
        }
      }
      async _advance() {
        if (this.opened === false) await this.ready();
        if (this.paused || this._interrupting) return;
        this._draining = true;
        if (this._updateLocalCore !== null) {
          await this._rotateLocalWriter(this._updateLocalCore);
        }
        const local = this.local.length;
        try {
          await this._drainWithInterupt();
          if (this._caughtup && (this._needsWakeup === true || this._wakeupHints.size > 0))
            await this._drainWakeup();
          if (!this.localWriter || this.localWriter.closed) {
            await this._updateLocalWriter(this._applyState.system);
          }
          this._draining = false;
        } catch (err) {
          this._onError(err);
          return;
        }
        if (this._interrupting) return;
        if (this.localWriter && !this.localWriter.closed) {
          if (this._applyState.isLocalPendingIndexer()) this.ack().catch(noop);
          else if (this._triggerAckAsap()) this._ackTimer.asap();
        }
        if (this.updating === true || this._bootstrapWritersChanged === true) {
          this._updateBootstrapWriters();
        }
        if (this.updating === true) {
          this.updating = false;
          if (local !== this.local.length) this._resetAckTick();
          else this._ackTick++;
          if (!this._interrupting) this.emit("update");
          this._waiting.notify(null);
        }
        if (!this._interrupting) await this._gcWriters();
      }
      _triggerAckAsap() {
        if (!this._ackTimer) return false;
        if (this._ackTickThreshold && !this._acking && this._ackTick >= this._ackTickThreshold) {
          if (this._ackTimer) {
            for (const w of this.linearizer.indexers) {
              if (w.core.length > w.length) return false;
            }
          }
          return true;
        }
        return false;
      }
      _queueFastForward() {
        if (!this.core.opened) return;
        const latestSignedLength = this.core.core.state.length;
        if (!this.fastForwardEnabled || this.fastForwarding !== null || this._interrupting) return;
        if (latestSignedLength - this.core.length < this.fastForwardMinimum) return;
        if (this.fastForwardTo !== null) return;
        if (Date.now() - this.fastForwardFailedAt < MIN_FF_WAIT) return;
        this._runFastForward(
          new FastForward(this, this.core.key, { minimum: this.fastForwardMinimum })
        ).catch(noop);
      }
      _queueStaticFastForward(key) {
        if (!this.fastForwardEnabled || this.fastForwarding !== null || this._interrupting) return;
        if (this.fastForwardTo !== null) return;
        if (Date.now() - this.fastForwardFailedAt < MIN_FF_WAIT) return;
        this._runFastForward(new FastForward(this, key, { verified: false })).catch(noop);
      }
      _updateActivity() {
        this.activeWriters.updateActivity();
        if (this._applyState) {
          if (this.isFastForwarding()) this._applyState.pause();
          else this._applyState.resume();
        }
        if (this._needsWakeupRequest && !this.isFastForwarding() && this.wakeupSession) {
          this._needsWakeupRequest = false;
          this.wakeupSession.broadcastLookup({});
        }
      }
      _preferFastForward() {
        this.fastForwardMinimum = 1;
        this._queueFastForward();
      }
      _postApply() {
        this.fastForwardMinimum = FastForward.MINIMUM;
      }
      async _runFastForward(ff) {
        this.fastForwarding = ff;
        this._updateActivity();
        const result = await ff.upgrade();
        await ff.close();
        if (this.fastForwarding === ff) this.fastForwarding = null;
        if (!result) {
          if (ff.failed) this.fastForwardFailedAt = Date.now();
          else this._queueFastForward();
          this._updateActivity();
          return;
        }
        this.fastForwardFailedAt = 0;
        this.fastForwardTo = result;
        if (this._applyState && this._applyState.applying && this.fastForwardMinimum === 1) {
          await this._applyState.close();
        }
        this._bumpAckTimer();
        this._queueBump();
      }
      // triggered from apply
      async _addWriter(key, sys) {
        assert2(!!this._applyState.applying, "System changes are only allowed in apply");
        const writer = await this._getWriterByKey(key, -1, 0, false, true, sys) || this._makeWriter(key, 0, true, false);
        await writer.ready();
        if (!this.activeWriters.has(key)) {
          this.activeWriters.add(writer);
          this._checkWriters.push(writer);
          this._ensureWakeup(writer);
        }
        this._queueBump();
      }
      // triggered from apply
      _removeWriter(key) {
        const w = this.activeWriters.get(key);
        if (w) w.isRemoved = true;
        this._queueBump();
      }
      removeable(key) {
        return this._applyState ? this._applyState.removeable(key) : false;
      }
      _updateAckThreshold() {
        if (this._ackThreshold === 0) return;
        if (this._ackTimer) this._ackTimer.bau();
        this._ackTick = 0;
        this._ackTickThreshold = random2over1(this.linearizer.indexers.length * this._ackThreshold);
      }
      _resetAckTick() {
        this._ackTick = 0;
        if (this._ackTimer) this._ackTimer.bau();
      }
      _shiftWriter(w) {
        w.shift();
        if (w.flushed()) this._checkWriters.push(w);
      }
    };
    function toKey(k) {
      return b4a4.isBuffer(k) ? k : hypercoreId.decode(k);
    }
    function isAutobaseMessage(msg) {
      return msg.checkpoint ? msg.checkpoint.length > 0 : msg.checkpoint === null;
    }
    function compareNodes(a, b) {
      return b4a4.compare(a.key, b.key);
    }
    function random2over1(n) {
      return Math.floor(n + Math.random() * n);
    }
    function noop() {
    }
    function crashSoon(err) {
      queueMicrotask(() => {
        throw err;
      });
      throw err;
    }
    function isObject2(obj) {
      return typeof obj === "object" && obj !== null;
    }
    function emitWarning(err) {
      safetyCatch(err);
      this.emit("warning", err);
    }
    function normalize(valueEncoding, value) {
      const state = { buffer: null, start: 0, end: 0 };
      valueEncoding.preencode(state, value);
      state.buffer = b4a4.allocUnsafe(state.end);
      valueEncoding.encode(state, value);
      state.start = 0;
      return valueEncoding.decode(state);
    }
  }
});

// node_modules/hyperdispatch/node_modules/compact-encoding/endian.js
var require_endian2 = __commonJS({
  "node_modules/hyperdispatch/node_modules/compact-encoding/endian.js"(exports2) {
    var LE = exports2.LE = new Uint8Array(new Uint16Array([255]).buffer)[0] === 255;
    exports2.BE = !LE;
  }
});

// node_modules/hyperdispatch/node_modules/compact-encoding/raw.js
var require_raw2 = __commonJS({
  "node_modules/hyperdispatch/node_modules/compact-encoding/raw.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var { BE } = require_endian2();
    exports2 = module2.exports = {
      preencode(state, b) {
        state.end += b.byteLength;
      },
      encode(state, b) {
        state.buffer.set(b, state.start);
        state.start += b.byteLength;
      },
      decode(state) {
        const b = state.buffer.subarray(state.start, state.end);
        state.start = state.end;
        return b;
      }
    };
    var buffer = exports2.buffer = {
      preencode(state, b) {
        uint8array.preencode(state, b);
      },
      encode(state, b) {
        uint8array.encode(state, b);
      },
      decode(state) {
        const b = state.buffer.subarray(state.start);
        state.start = state.end;
        return b;
      }
    };
    exports2.binary = {
      ...buffer,
      preencode(state, b) {
        if (typeof b === "string") utf8.preencode(state, b);
        else buffer.preencode(state, b);
      },
      encode(state, b) {
        if (typeof b === "string") utf8.encode(state, b);
        else buffer.encode(state, b);
      }
    };
    exports2.arraybuffer = {
      preencode(state, b) {
        state.end += b.byteLength;
      },
      encode(state, b) {
        const view = new Uint8Array(b);
        state.buffer.set(view, state.start);
        state.start += b.byteLength;
      },
      decode(state) {
        const b = new ArrayBuffer(state.end - state.start);
        const view = new Uint8Array(b);
        view.set(state.buffer.subarray(state.start));
        state.start = state.end;
        return b;
      }
    };
    function typedarray(TypedArray, swap) {
      const n = TypedArray.BYTES_PER_ELEMENT;
      return {
        preencode(state, b) {
          state.end += b.byteLength;
        },
        encode(state, b) {
          const view = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
          if (BE && swap) swap(view);
          state.buffer.set(view, state.start);
          state.start += b.byteLength;
        },
        decode(state) {
          let b = state.buffer.subarray(state.start);
          if (b.byteOffset % n !== 0) b = new Uint8Array(b);
          if (BE && swap) swap(b);
          state.start = state.end;
          return new TypedArray(b.buffer, b.byteOffset, b.byteLength / n);
        }
      };
    }
    var uint8array = exports2.uint8array = typedarray(Uint8Array);
    exports2.uint16array = typedarray(Uint16Array, b4a4.swap16);
    exports2.uint32array = typedarray(Uint32Array, b4a4.swap32);
    exports2.int8array = typedarray(Int8Array);
    exports2.int16array = typedarray(Int16Array, b4a4.swap16);
    exports2.int32array = typedarray(Int32Array, b4a4.swap32);
    exports2.biguint64array = typedarray(BigUint64Array, b4a4.swap64);
    exports2.bigint64array = typedarray(BigInt64Array, b4a4.swap64);
    exports2.float32array = typedarray(Float32Array, b4a4.swap32);
    exports2.float64array = typedarray(Float64Array, b4a4.swap64);
    function string(encoding) {
      return {
        preencode(state, s) {
          state.end += b4a4.byteLength(s, encoding);
        },
        encode(state, s) {
          state.start += b4a4.write(state.buffer, s, state.start, encoding);
        },
        decode(state) {
          const s = b4a4.toString(state.buffer, encoding, state.start);
          state.start = state.end;
          return s;
        }
      };
    }
    var utf8 = exports2.string = exports2.utf8 = string("utf-8");
    exports2.ascii = string("ascii");
    exports2.hex = string("hex");
    exports2.base64 = string("base64");
    exports2.ucs2 = exports2.utf16le = string("utf16le");
    exports2.array = function array(enc) {
      return {
        preencode(state, list) {
          for (const value of list) enc.preencode(state, value);
        },
        encode(state, list) {
          for (const value of list) enc.encode(state, value);
        },
        decode(state) {
          const arr = [];
          while (state.start < state.end) arr.push(enc.decode(state));
          return arr;
        }
      };
    };
    exports2.json = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v));
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v));
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
    exports2.ndjson = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v) + "\n");
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v) + "\n");
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
  }
});

// node_modules/hyperdispatch/node_modules/compact-encoding/lexint.js
var require_lexint2 = __commonJS({
  "node_modules/hyperdispatch/node_modules/compact-encoding/lexint.js"(exports2, module2) {
    module2.exports = {
      preencode,
      encode: encode2,
      decode: decode2
    };
    function preencode(state, num) {
      if (num < 251) {
        state.end++;
      } else if (num < 256) {
        state.end += 2;
      } else if (num < 65536) {
        state.end += 3;
      } else if (num < 16777216) {
        state.end += 4;
      } else if (num < 4294967296) {
        state.end += 5;
      } else {
        state.end++;
        const exp = Math.floor(Math.log(num) / Math.log(2)) - 32;
        preencode(state, exp);
        state.end += 6;
      }
    }
    function encode2(state, num) {
      const max = 251;
      const x = num - max;
      if (num < max) {
        state.buffer[state.start++] = num;
      } else if (num < 256) {
        state.buffer[state.start++] = max;
        state.buffer[state.start++] = x;
      } else if (num < 65536) {
        state.buffer[state.start++] = max + 1;
        state.buffer[state.start++] = x >> 8 & 255;
        state.buffer[state.start++] = x & 255;
      } else if (num < 16777216) {
        state.buffer[state.start++] = max + 2;
        state.buffer[state.start++] = x >> 16;
        state.buffer[state.start++] = x >> 8 & 255;
        state.buffer[state.start++] = x & 255;
      } else if (num < 4294967296) {
        state.buffer[state.start++] = max + 3;
        state.buffer[state.start++] = x >> 24;
        state.buffer[state.start++] = x >> 16 & 255;
        state.buffer[state.start++] = x >> 8 & 255;
        state.buffer[state.start++] = x & 255;
      } else {
        const exp = Math.floor(Math.log(x) / Math.log(2)) - 32;
        state.buffer[state.start++] = 255;
        encode2(state, exp);
        const rem = x / Math.pow(2, exp - 11);
        for (let i = 5; i >= 0; i--) {
          state.buffer[state.start++] = rem / Math.pow(2, 8 * i) & 255;
        }
      }
    }
    function decode2(state) {
      const max = 251;
      if (state.end - state.start < 1) throw new Error("Out of bounds");
      const flag = state.buffer[state.start++];
      if (flag < max) return flag;
      if (state.end - state.start < flag - max + 1) {
        throw new Error("Out of bounds.");
      }
      if (flag < 252) {
        return state.buffer[state.start++] + max;
      }
      if (flag < 253) {
        return (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max;
      }
      if (flag < 254) {
        return (state.buffer[state.start++] << 16) + (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max;
      }
      if (flag < 255) {
        return state.buffer[state.start++] * 16777216 + (state.buffer[state.start++] << 16) + (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max;
      }
      const exp = decode2(state);
      if (state.end - state.start < 6) throw new Error("Out of bounds");
      let rem = 0;
      for (let i = 5; i >= 0; i--) {
        rem += state.buffer[state.start++] * Math.pow(2, 8 * i);
      }
      return rem * Math.pow(2, exp - 11) + max;
    }
  }
});

// node_modules/hyperdispatch/node_modules/compact-encoding/index.js
var require_compact_encoding2 = __commonJS({
  "node_modules/hyperdispatch/node_modules/compact-encoding/index.js"(exports2) {
    var b4a4 = require_b4a();
    var { BE } = require_endian2();
    exports2.state = function(start = 0, end = 0, buffer2 = null) {
      return { start, end, buffer: buffer2 };
    };
    var raw = exports2.raw = require_raw2();
    var uint = exports2.uint = {
      preencode(state, n) {
        state.end += n <= 252 ? 1 : n <= 65535 ? 3 : n <= 4294967295 ? 5 : 9;
      },
      encode(state, n) {
        if (n <= 252) uint8.encode(state, n);
        else if (n <= 65535) {
          state.buffer[state.start++] = 253;
          uint16.encode(state, n);
        } else if (n <= 4294967295) {
          state.buffer[state.start++] = 254;
          uint32.encode(state, n);
        } else {
          state.buffer[state.start++] = 255;
          uint64.encode(state, n);
        }
      },
      decode(state) {
        const a = uint8.decode(state);
        if (a <= 252) return a;
        if (a === 253) return uint16.decode(state);
        if (a === 254) return uint32.decode(state);
        return uint64.decode(state);
      }
    };
    var uint8 = exports2.uint8 = {
      preencode(state, n) {
        state.end += 1;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
      },
      decode(state) {
        if (state.start >= state.end) throw new Error("Out of bounds");
        return state.buffer[state.start++];
      }
    };
    var uint16 = exports2.uint16 = {
      preencode(state, n) {
        state.end += 2;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
        state.buffer[state.start++] = n >>> 8;
      },
      decode(state) {
        if (state.end - state.start < 2) throw new Error("Out of bounds");
        return state.buffer[state.start++] + state.buffer[state.start++] * 256;
      }
    };
    var uint24 = exports2.uint24 = {
      preencode(state, n) {
        state.end += 3;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n >>> 16;
      },
      decode(state) {
        if (state.end - state.start < 3) throw new Error("Out of bounds");
        return state.buffer[state.start++] + state.buffer[state.start++] * 256 + state.buffer[state.start++] * 65536;
      }
    };
    var uint32 = exports2.uint32 = {
      preencode(state, n) {
        state.end += 4;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n >>> 16;
        state.buffer[state.start++] = n >>> 24;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        return state.buffer[state.start++] + state.buffer[state.start++] * 256 + state.buffer[state.start++] * 65536 + state.buffer[state.start++] * 16777216;
      }
    };
    var uint32be = exports2.uint32be = {
      preencode(state, n) {
        state.end += 4;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n >>> 24;
        state.buffer[state.start++] = n >>> 16;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        return state.buffer[state.start++] * 16777216 + state.buffer[state.start++] * 65536 + state.buffer[state.start++] * 256 + state.buffer[state.start++];
      }
    };
    var uint40 = exports2.uint40 = {
      preencode(state, n) {
        state.end += 5;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 256);
        uint8.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 5) throw new Error("Out of bounds");
        return uint8.decode(state) + 256 * uint32.decode(state);
      }
    };
    var uint48 = exports2.uint48 = {
      preencode(state, n) {
        state.end += 6;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 65536);
        uint16.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 6) throw new Error("Out of bounds");
        return uint16.decode(state) + 65536 * uint32.decode(state);
      }
    };
    var uint56 = exports2.uint56 = {
      preencode(state, n) {
        state.end += 7;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 16777216);
        uint24.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 7) throw new Error("Out of bounds");
        return uint24.decode(state) + 16777216 * uint32.decode(state);
      }
    };
    var uint64 = exports2.uint64 = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 4294967296);
        uint32.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        return uint32.decode(state) + 4294967296 * uint32.decode(state);
      }
    };
    exports2.uint64be = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 4294967296);
        uint32be.encode(state, r);
        uint32be.encode(state, n);
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        return 4294967296 * uint32be.decode(state) + uint32be.decode(state);
      }
    };
    var int = exports2.int = zigZagInt(uint);
    exports2.int8 = zigZagInt(uint8);
    exports2.int16 = zigZagInt(uint16);
    exports2.int24 = zigZagInt(uint24);
    exports2.int32 = zigZagInt(uint32);
    exports2.int40 = zigZagInt(uint40);
    exports2.int48 = zigZagInt(uint48);
    exports2.int56 = zigZagInt(uint56);
    exports2.int64 = zigZagInt(uint64);
    var biguint64 = exports2.biguint64 = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        view.setBigUint64(0, n, true);
        state.start += 8;
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        const n = view.getBigUint64(0, true);
        state.start += 8;
        return n;
      }
    };
    exports2.bigint64 = zigZagBigInt(biguint64);
    var biguint = exports2.biguint = {
      preencode(state, n) {
        let len = 0;
        for (let m = n; m; m = m >> 64n) len++;
        uint.preencode(state, len);
        state.end += 8 * len;
      },
      encode(state, n) {
        let len = 0;
        for (let m = n; m; m = m >> 64n) len++;
        uint.encode(state, len);
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8 * len
        );
        for (let m = n, i = 0; m; m = m >> 64n, i += 8) {
          view.setBigUint64(i, BigInt.asUintN(64, m), true);
        }
        state.start += 8 * len;
      },
      decode(state) {
        const len = uint.decode(state);
        if (state.end - state.start < 8 * len) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8 * len
        );
        let n = 0n;
        for (let i = len - 1; i >= 0; i--)
          n = (n << 64n) + view.getBigUint64(i * 8, true);
        state.start += 8 * len;
        return n;
      }
    };
    exports2.bigint = zigZagBigInt(biguint);
    exports2.lexint = require_lexint2();
    exports2.float32 = {
      preencode(state, n) {
        state.end += 4;
      },
      encode(state, n) {
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          4
        );
        view.setFloat32(0, n, true);
        state.start += 4;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          4
        );
        const float = view.getFloat32(0, true);
        state.start += 4;
        return float;
      }
    };
    exports2.float64 = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        view.setFloat64(0, n, true);
        state.start += 8;
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        const float = view.getFloat64(0, true);
        state.start += 8;
        return float;
      }
    };
    var buffer = exports2.buffer = {
      preencode(state, b) {
        uint8array.preencode(state, b);
      },
      encode(state, b) {
        uint8array.encode(state, b);
      },
      decode(state) {
        const len = uint.decode(state);
        if (state.end - state.start < len) throw new Error("Out of bounds");
        return state.buffer.subarray(state.start, state.start += len);
      }
    };
    exports2.optionalBuffer = {
      preencode(state, b) {
        if (b) uint8array.preencode(state, b);
        else state.end++;
      },
      encode(state, b) {
        if (b) uint8array.encode(state, b);
        else state.buffer[state.start++] = 0;
      },
      decode(state) {
        const len = uint.decode(state);
        if (len === 0) return null;
        if (state.end - state.start < len) throw new Error("Out of bounds");
        return state.buffer.subarray(state.start, state.start += len);
      }
    };
    exports2.binary = {
      ...buffer,
      preencode(state, b) {
        if (typeof b === "string") utf8.preencode(state, b);
        else buffer.preencode(state, b);
      },
      encode(state, b) {
        if (typeof b === "string") utf8.encode(state, b);
        else buffer.encode(state, b);
      }
    };
    exports2.arraybuffer = {
      preencode(state, b) {
        uint.preencode(state, b.byteLength);
        state.end += b.byteLength;
      },
      encode(state, b) {
        uint.encode(state, b.byteLength);
        const view = new Uint8Array(b);
        state.buffer.set(view, state.start);
        state.start += b.byteLength;
      },
      decode(state) {
        const len = uint.decode(state);
        const b = new ArrayBuffer(len);
        const view = new Uint8Array(b);
        view.set(state.buffer.subarray(state.start, state.start += len));
        return b;
      }
    };
    function typedarray(TypedArray, swap) {
      const n = TypedArray.BYTES_PER_ELEMENT;
      return {
        preencode(state, b) {
          uint.preencode(state, b.length);
          state.end += b.byteLength;
        },
        encode(state, b) {
          uint.encode(state, b.length);
          const view = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
          if (BE && swap) swap(view);
          state.buffer.set(view, state.start);
          state.start += b.byteLength;
        },
        decode(state) {
          const len = uint.decode(state);
          let b = state.buffer.subarray(state.start, state.start += len * n);
          if (b.byteLength !== len * n) throw new Error("Out of bounds");
          if (b.byteOffset % n !== 0) b = new Uint8Array(b);
          if (BE && swap) swap(b);
          return new TypedArray(b.buffer, b.byteOffset, b.byteLength / n);
        }
      };
    }
    var uint8array = exports2.uint8array = typedarray(Uint8Array);
    exports2.uint16array = typedarray(Uint16Array, b4a4.swap16);
    exports2.uint32array = typedarray(Uint32Array, b4a4.swap32);
    exports2.int8array = typedarray(Int8Array);
    exports2.int16array = typedarray(Int16Array, b4a4.swap16);
    exports2.int32array = typedarray(Int32Array, b4a4.swap32);
    exports2.biguint64array = typedarray(BigUint64Array, b4a4.swap64);
    exports2.bigint64array = typedarray(BigInt64Array, b4a4.swap64);
    exports2.float32array = typedarray(Float32Array, b4a4.swap32);
    exports2.float64array = typedarray(Float64Array, b4a4.swap64);
    function string(encoding) {
      return {
        preencode(state, s) {
          const len = b4a4.byteLength(s, encoding);
          uint.preencode(state, len);
          state.end += len;
        },
        encode(state, s) {
          const len = b4a4.byteLength(s, encoding);
          uint.encode(state, len);
          b4a4.write(state.buffer, s, state.start, encoding);
          state.start += len;
        },
        decode(state) {
          const len = uint.decode(state);
          if (state.end - state.start < len) throw new Error("Out of bounds");
          return b4a4.toString(
            state.buffer,
            encoding,
            state.start,
            state.start += len
          );
        },
        fixed(n) {
          return {
            preencode(state) {
              state.end += n;
            },
            encode(state, s) {
              b4a4.write(state.buffer, s, state.start, n, encoding);
              state.start += n;
            },
            decode(state) {
              if (state.end - state.start < n) throw new Error("Out of bounds");
              return b4a4.toString(
                state.buffer,
                encoding,
                state.start,
                state.start += n
              );
            }
          };
        }
      };
    }
    var utf8 = exports2.string = exports2.utf8 = string("utf-8");
    exports2.ascii = string("ascii");
    exports2.hex = string("hex");
    exports2.base64 = string("base64");
    exports2.ucs2 = exports2.utf16le = string("utf16le");
    exports2.bool = {
      preencode(state, b) {
        state.end++;
      },
      encode(state, b) {
        state.buffer[state.start++] = b ? 1 : 0;
      },
      decode(state) {
        if (state.start >= state.end) throw Error("Out of bounds");
        return state.buffer[state.start++] === 1;
      }
    };
    var fixed = exports2.fixed = function fixed2(n) {
      return {
        preencode(state, s) {
          if (s.byteLength !== n) throw new Error("Incorrect buffer size");
          state.end += n;
        },
        encode(state, s) {
          state.buffer.set(s, state.start);
          state.start += n;
        },
        decode(state) {
          if (state.end - state.start < n) throw new Error("Out of bounds");
          return state.buffer.subarray(state.start, state.start += n);
        }
      };
    };
    exports2.fixed32 = fixed(32);
    exports2.fixed64 = fixed(64);
    exports2.array = function array(enc) {
      return {
        preencode(state, list) {
          uint.preencode(state, list.length);
          for (let i = 0; i < list.length; i++) enc.preencode(state, list[i]);
        },
        encode(state, list) {
          uint.encode(state, list.length);
          for (let i = 0; i < list.length; i++) enc.encode(state, list[i]);
        },
        decode(state) {
          const len = uint.decode(state);
          if (len > 1048576) throw new Error("Array is too big");
          const arr = new Array(len);
          for (let i = 0; i < len; i++) arr[i] = enc.decode(state);
          return arr;
        }
      };
    };
    exports2.frame = function frame(enc) {
      const dummy = exports2.state();
      return {
        preencode(state, m) {
          const end = state.end;
          enc.preencode(state, m);
          uint.preencode(state, state.end - end);
        },
        encode(state, m) {
          dummy.end = 0;
          enc.preencode(dummy, m);
          uint.encode(state, dummy.end);
          enc.encode(state, m);
        },
        decode(state) {
          const end = state.end;
          const len = uint.decode(state);
          state.end = state.start + len;
          const m = enc.decode(state);
          state.start = state.end;
          state.end = end;
          return m;
        }
      };
    };
    exports2.date = {
      preencode(state, d) {
        int.preencode(state, d.getTime());
      },
      encode(state, d) {
        int.encode(state, d.getTime());
      },
      decode(state, d) {
        return new Date(int.decode(state));
      }
    };
    exports2.json = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v));
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v));
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
    exports2.ndjson = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v) + "\n");
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v) + "\n");
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
    exports2.none = {
      preencode(state, n) {
      },
      encode(state, n) {
      },
      decode(state) {
        return null;
      }
    };
    var anyArray = {
      preencode(state, arr) {
        uint.preencode(state, arr.length);
        for (let i = 0; i < arr.length; i++) {
          any.preencode(state, arr[i]);
        }
      },
      encode(state, arr) {
        uint.encode(state, arr.length);
        for (let i = 0; i < arr.length; i++) {
          any.encode(state, arr[i]);
        }
      },
      decode(state) {
        const arr = [];
        let len = uint.decode(state);
        while (len-- > 0) {
          arr.push(any.decode(state));
        }
        return arr;
      }
    };
    var anyObject = {
      preencode(state, o) {
        const keys = Object.keys(o);
        uint.preencode(state, keys.length);
        for (const key of keys) {
          utf8.preencode(state, key);
          any.preencode(state, o[key]);
        }
      },
      encode(state, o) {
        const keys = Object.keys(o);
        uint.encode(state, keys.length);
        for (const key of keys) {
          utf8.encode(state, key);
          any.encode(state, o[key]);
        }
      },
      decode(state) {
        let len = uint.decode(state);
        const o = {};
        while (len-- > 0) {
          const key = utf8.decode(state);
          o[key] = any.decode(state);
        }
        return o;
      }
    };
    var anyTypes = [
      exports2.none,
      exports2.bool,
      exports2.string,
      exports2.buffer,
      exports2.uint,
      exports2.int,
      exports2.float64,
      anyArray,
      anyObject,
      exports2.date
    ];
    var any = exports2.any = {
      preencode(state, o) {
        const t = getType(o);
        uint.preencode(state, t);
        anyTypes[t].preencode(state, o);
      },
      encode(state, o) {
        const t = getType(o);
        uint.encode(state, t);
        anyTypes[t].encode(state, o);
      },
      decode(state) {
        const t = uint.decode(state);
        if (t >= anyTypes.length) throw new Error("Unknown type: " + t);
        return anyTypes[t].decode(state);
      }
    };
    var port = exports2.port = uint16;
    var address = (host, family) => {
      return {
        preencode(state, m) {
          host.preencode(state, m.host);
          port.preencode(state, m.port);
        },
        encode(state, m) {
          host.encode(state, m.host);
          port.encode(state, m.port);
        },
        decode(state) {
          return {
            host: host.decode(state),
            family,
            port: port.decode(state)
          };
        }
      };
    };
    var ipv4 = exports2.ipv4 = {
      preencode(state) {
        state.end += 4;
      },
      encode(state, string2) {
        const start = state.start;
        const end = start + 4;
        let i = 0;
        while (i < string2.length) {
          let n = 0;
          let c4;
          while (i < string2.length && (c4 = string2.charCodeAt(i++)) !== /* . */
          46) {
            n = n * 10 + (c4 - /* 0 */
            48);
          }
          state.buffer[state.start++] = n;
        }
        state.start = end;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        return state.buffer[state.start++] + "." + state.buffer[state.start++] + "." + state.buffer[state.start++] + "." + state.buffer[state.start++];
      }
    };
    exports2.ipv4Address = address(ipv4, 4);
    var ipv6 = exports2.ipv6 = {
      preencode(state) {
        state.end += 16;
      },
      encode(state, string2) {
        const start = state.start;
        const end = start + 16;
        let i = 0;
        let split2 = null;
        while (i < string2.length) {
          let n = 0;
          let c4;
          while (i < string2.length && (c4 = string2.charCodeAt(i++)) !== /* : */
          58) {
            if (c4 >= 48 && c4 <= 57) n = n * 16 + (c4 - /* 0 */
            48);
            else if (c4 >= 65 && c4 <= 70) n = n * 16 + (c4 - /* A */
            65 + 10);
            else if (c4 >= 97 && c4 <= 102) n = n * 16 + (c4 - /* a */
            97 + 10);
          }
          state.buffer[state.start++] = n >>> 8;
          state.buffer[state.start++] = n;
          if (i < string2.length && string2.charCodeAt(i) === /* : */
          58) {
            i++;
            split2 = state.start;
          }
        }
        if (split2 !== null) {
          const offset = end - state.start;
          state.buffer.copyWithin(split2 + offset, split2).fill(0, split2, split2 + offset);
        }
        state.start = end;
      },
      decode(state) {
        if (state.end - state.start < 16) throw new Error("Out of bounds");
        return (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16);
      }
    };
    exports2.ipv6Address = address(ipv6, 6);
    var ip = exports2.ip = {
      preencode(state, string2) {
        const family = string2.includes(":") ? 6 : 4;
        uint8.preencode(state, family);
        if (family === 4) ipv4.preencode(state);
        else ipv6.preencode(state);
      },
      encode(state, string2) {
        const family = string2.includes(":") ? 6 : 4;
        uint8.encode(state, family);
        if (family === 4) ipv4.encode(state, string2);
        else ipv6.encode(state, string2);
      },
      decode(state) {
        const family = uint8.decode(state);
        if (family === 4) return ipv4.decode(state);
        else return ipv6.decode(state);
      }
    };
    exports2.ipAddress = {
      preencode(state, m) {
        ip.preencode(state, m.host);
        port.preencode(state, m.port);
      },
      encode(state, m) {
        ip.encode(state, m.host);
        port.encode(state, m.port);
      },
      decode(state) {
        const family = uint8.decode(state);
        return {
          host: family === 4 ? ipv4.decode(state) : ipv6.decode(state),
          family,
          port: port.decode(state)
        };
      }
    };
    var record = exports2.record = function(keyEncoding, valueEncoding) {
      return {
        preencode(state, v) {
          const keys = Object.keys(v);
          uint.preencode(state, keys.length);
          for (const k of keys) {
            keyEncoding.preencode(state, k);
            valueEncoding.preencode(state, v[k]);
          }
        },
        encode(state, v) {
          const keys = Object.keys(v);
          uint.encode(state, keys.length);
          for (const k of keys) {
            keyEncoding.encode(state, k);
            valueEncoding.encode(state, v[k]);
          }
        },
        decode(state) {
          const out = /* @__PURE__ */ Object.create(null);
          const keys = uint.decode(state);
          for (let i = 0; i < keys; i++) {
            out[keyEncoding.decode(state)] = valueEncoding.decode(state);
          }
          return out;
        }
      };
    };
    exports2.stringRecord = record(utf8, utf8);
    function getType(o) {
      if (o === null || o === void 0) return 0;
      if (typeof o === "boolean") return 1;
      if (typeof o === "string") return 2;
      if (b4a4.isBuffer(o)) return 3;
      if (typeof o === "number") {
        if (Number.isInteger(o)) return o >= 0 ? 4 : 5;
        return 6;
      }
      if (Array.isArray(o)) return 7;
      if (o instanceof Date) return 9;
      if (typeof o === "object") return 8;
      throw new Error("Unsupported type for " + o);
    }
    exports2.from = function from(enc) {
      if (typeof enc === "string") return fromNamed(enc);
      if (enc.preencode) return enc;
      if (enc.encodingLength) return fromAbstractEncoder(enc);
      return fromCodec(enc);
    };
    function fromNamed(enc) {
      switch (enc) {
        case "ascii":
          return raw.ascii;
        case "utf-8":
        case "utf8":
          return raw.utf8;
        case "hex":
          return raw.hex;
        case "base64":
          return raw.base64;
        case "utf16-le":
        case "utf16le":
        case "ucs-2":
        case "ucs2":
          return raw.ucs2;
        case "ndjson":
          return raw.ndjson;
        case "json":
          return raw.json;
        case "binary":
        default:
          return raw.binary;
      }
    }
    function fromCodec(enc) {
      let tmpM = null;
      let tmpBuf = null;
      return {
        preencode(state, m) {
          tmpM = m;
          tmpBuf = enc.encode(m);
          state.end += tmpBuf.byteLength;
        },
        encode(state, m) {
          raw.encode(state, m === tmpM ? tmpBuf : enc.encode(m));
          tmpM = tmpBuf = null;
        },
        decode(state) {
          return enc.decode(raw.decode(state));
        }
      };
    }
    function fromAbstractEncoder(enc) {
      return {
        preencode(state, m) {
          state.end += enc.encodingLength(m);
        },
        encode(state, m) {
          enc.encode(m, state.buffer, state.start);
          state.start += enc.encode.bytes;
        },
        decode(state) {
          const m = enc.decode(state.buffer, state.start, state.end);
          state.start += enc.decode.bytes;
          return m;
        }
      };
    }
    exports2.encode = function encode2(enc, m) {
      const state = exports2.state();
      enc.preencode(state, m);
      state.buffer = b4a4.allocUnsafe(state.end);
      enc.encode(state, m);
      return state.buffer;
    };
    exports2.decode = function decode2(enc, buffer2) {
      return enc.decode(exports2.state(0, buffer2.byteLength, buffer2));
    };
    function zigZagInt(enc) {
      return {
        preencode(state, n) {
          enc.preencode(state, zigZagEncodeInt(n));
        },
        encode(state, n) {
          enc.encode(state, zigZagEncodeInt(n));
        },
        decode(state) {
          return zigZagDecodeInt(enc.decode(state));
        }
      };
    }
    function zigZagDecodeInt(n) {
      return n === 0 ? n : (n & 1) === 0 ? n / 2 : -(n + 1) / 2;
    }
    function zigZagEncodeInt(n) {
      return n < 0 ? 2 * -n - 1 : n === 0 ? 0 : 2 * n;
    }
    function zigZagBigInt(enc) {
      return {
        preencode(state, n) {
          enc.preencode(state, zigZagEncodeBigInt(n));
        },
        encode(state, n) {
          enc.encode(state, zigZagEncodeBigInt(n));
        },
        decode(state) {
          return zigZagDecodeBigInt(enc.decode(state));
        }
      };
    }
    function zigZagDecodeBigInt(n) {
      return n === 0n ? n : (n & 1n) === 0n ? n / 2n : -(n + 1n) / 2n;
    }
    function zigZagEncodeBigInt(n) {
      return n < 0n ? 2n * -n - 1n : n === 0n ? 0n : 2n * n;
    }
    function validateUint(n) {
      if (n >= 0 === false)
        throw new Error("uint must be positive");
      if (n > Number.MAX_SAFE_INTEGER)
        throw new Error(
          "integer is greater than the maximum safe integer, use biguint/bigint"
        );
    }
  }
});

// node_modules/hyperdispatch/lib/errors.js
var require_errors2 = __commonJS({
  "node_modules/hyperdispatch/lib/errors.js"(exports2, module2) {
    var ERRORS2 = {
      NONEXISTENT_ROUTE: "NONEXISTENT_ROUTE",
      HANDLER_NOT_FOUND_BY_ID: "HANDLER_NOT_FOUND_BY_ID",
      ROUTE_NOT_FOUND_BY_NAME: "ROUTE_NOT_FOUND_BY_NAME"
    };
    var DispatchError2 = class _DispatchError extends Error {
      constructor(code, message, fn = _DispatchError) {
        super(message ? `${code}: ${message}` : code);
        this.code = code;
        this.isDispatchError = true;
        if (Error.captureStackTrace) {
          Error.captureStackTrace(this, fn);
        }
      }
      static isDispatchError(err) {
        return err?.isDispatchError === true;
      }
      static NONEXISTENT_ROUTE(name) {
        return new _DispatchError(ERRORS2.NONEXISTENT_ROUTE, name, _DispatchError.NONEXISTENT_ROUTE);
      }
      static HANDLER_NOT_FOUND_BY_ID(id) {
        return new _DispatchError(
          ERRORS2.HANDLER_NOT_FOUND_BY_ID,
          id,
          _DispatchError.HANDLER_NOT_FOUND_BY_ID
        );
      }
      static ROUTE_NOT_FOUND_BY_NAME(name) {
        return new _DispatchError(
          ERRORS2.ROUTE_NOT_FOUND_BY_NAME,
          name,
          _DispatchError.ROUTE_NOT_FOUND_BY_NAME
        );
      }
    };
    module2.exports = {
      DispatchError: DispatchError2,
      ERRORS: ERRORS2
    };
  }
});

// node_modules/ajv/dist/compile/codegen/code.js
var require_code = __commonJS({
  "node_modules/ajv/dist/compile/codegen/code.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.regexpCode = exports2.getEsmExportName = exports2.getProperty = exports2.safeStringify = exports2.stringify = exports2.strConcat = exports2.addCodeArg = exports2.str = exports2._ = exports2.nil = exports2._Code = exports2.Name = exports2.IDENTIFIER = exports2._CodeOrName = void 0;
    var _CodeOrName = class {
    };
    exports2._CodeOrName = _CodeOrName;
    exports2.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;
    var Name = class extends _CodeOrName {
      constructor(s) {
        super();
        if (!exports2.IDENTIFIER.test(s))
          throw new Error("CodeGen: name must be a valid identifier");
        this.str = s;
      }
      toString() {
        return this.str;
      }
      emptyStr() {
        return false;
      }
      get names() {
        return { [this.str]: 1 };
      }
    };
    exports2.Name = Name;
    var _Code = class extends _CodeOrName {
      constructor(code) {
        super();
        this._items = typeof code === "string" ? [code] : code;
      }
      toString() {
        return this.str;
      }
      emptyStr() {
        if (this._items.length > 1)
          return false;
        const item = this._items[0];
        return item === "" || item === '""';
      }
      get str() {
        var _a;
        return (_a = this._str) !== null && _a !== void 0 ? _a : this._str = this._items.reduce((s, c4) => `${s}${c4}`, "");
      }
      get names() {
        var _a;
        return (_a = this._names) !== null && _a !== void 0 ? _a : this._names = this._items.reduce((names, c4) => {
          if (c4 instanceof Name)
            names[c4.str] = (names[c4.str] || 0) + 1;
          return names;
        }, {});
      }
    };
    exports2._Code = _Code;
    exports2.nil = new _Code("");
    function _(strs, ...args) {
      const code = [strs[0]];
      let i = 0;
      while (i < args.length) {
        addCodeArg(code, args[i]);
        code.push(strs[++i]);
      }
      return new _Code(code);
    }
    exports2._ = _;
    var plus = new _Code("+");
    function str(strs, ...args) {
      const expr = [safeStringify(strs[0])];
      let i = 0;
      while (i < args.length) {
        expr.push(plus);
        addCodeArg(expr, args[i]);
        expr.push(plus, safeStringify(strs[++i]));
      }
      optimize(expr);
      return new _Code(expr);
    }
    exports2.str = str;
    function addCodeArg(code, arg) {
      if (arg instanceof _Code)
        code.push(...arg._items);
      else if (arg instanceof Name)
        code.push(arg);
      else
        code.push(interpolate(arg));
    }
    exports2.addCodeArg = addCodeArg;
    function optimize(expr) {
      let i = 1;
      while (i < expr.length - 1) {
        if (expr[i] === plus) {
          const res = mergeExprItems(expr[i - 1], expr[i + 1]);
          if (res !== void 0) {
            expr.splice(i - 1, 3, res);
            continue;
          }
          expr[i++] = "+";
        }
        i++;
      }
    }
    function mergeExprItems(a, b) {
      if (b === '""')
        return a;
      if (a === '""')
        return b;
      if (typeof a == "string") {
        if (b instanceof Name || a[a.length - 1] !== '"')
          return;
        if (typeof b != "string")
          return `${a.slice(0, -1)}${b}"`;
        if (b[0] === '"')
          return a.slice(0, -1) + b.slice(1);
        return;
      }
      if (typeof b == "string" && b[0] === '"' && !(a instanceof Name))
        return `"${a}${b.slice(1)}`;
      return;
    }
    function strConcat(c1, c22) {
      return c22.emptyStr() ? c1 : c1.emptyStr() ? c22 : str`${c1}${c22}`;
    }
    exports2.strConcat = strConcat;
    function interpolate(x) {
      return typeof x == "number" || typeof x == "boolean" || x === null ? x : safeStringify(Array.isArray(x) ? x.join(",") : x);
    }
    function stringify(x) {
      return new _Code(safeStringify(x));
    }
    exports2.stringify = stringify;
    function safeStringify(x) {
      return JSON.stringify(x).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
    }
    exports2.safeStringify = safeStringify;
    function getProperty(key) {
      return typeof key == "string" && exports2.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`;
    }
    exports2.getProperty = getProperty;
    function getEsmExportName(key) {
      if (typeof key == "string" && exports2.IDENTIFIER.test(key)) {
        return new _Code(`${key}`);
      }
      throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);
    }
    exports2.getEsmExportName = getEsmExportName;
    function regexpCode(rx) {
      return new _Code(rx.toString());
    }
    exports2.regexpCode = regexpCode;
  }
});

// node_modules/ajv/dist/compile/codegen/scope.js
var require_scope = __commonJS({
  "node_modules/ajv/dist/compile/codegen/scope.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.ValueScope = exports2.ValueScopeName = exports2.Scope = exports2.varKinds = exports2.UsedValueState = void 0;
    var code_1 = require_code();
    var ValueError = class extends Error {
      constructor(name) {
        super(`CodeGen: "code" for ${name} not defined`);
        this.value = name.value;
      }
    };
    var UsedValueState;
    (function(UsedValueState2) {
      UsedValueState2[UsedValueState2["Started"] = 0] = "Started";
      UsedValueState2[UsedValueState2["Completed"] = 1] = "Completed";
    })(UsedValueState || (exports2.UsedValueState = UsedValueState = {}));
    exports2.varKinds = {
      const: new code_1.Name("const"),
      let: new code_1.Name("let"),
      var: new code_1.Name("var")
    };
    var Scope = class {
      constructor({ prefixes, parent } = {}) {
        this._names = {};
        this._prefixes = prefixes;
        this._parent = parent;
      }
      toName(nameOrPrefix) {
        return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);
      }
      name(prefix) {
        return new code_1.Name(this._newName(prefix));
      }
      _newName(prefix) {
        const ng = this._names[prefix] || this._nameGroup(prefix);
        return `${prefix}${ng.index++}`;
      }
      _nameGroup(prefix) {
        var _a, _b;
        if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || this._prefixes && !this._prefixes.has(prefix)) {
          throw new Error(`CodeGen: prefix "${prefix}" is not allowed in this scope`);
        }
        return this._names[prefix] = { prefix, index: 0 };
      }
    };
    exports2.Scope = Scope;
    var ValueScopeName = class extends code_1.Name {
      constructor(prefix, nameStr) {
        super(nameStr);
        this.prefix = prefix;
      }
      setValue(value, { property, itemIndex }) {
        this.value = value;
        this.scopePath = (0, code_1._)`.${new code_1.Name(property)}[${itemIndex}]`;
      }
    };
    exports2.ValueScopeName = ValueScopeName;
    var line = (0, code_1._)`\n`;
    var ValueScope = class extends Scope {
      constructor(opts) {
        super(opts);
        this._values = {};
        this._scope = opts.scope;
        this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };
      }
      get() {
        return this._scope;
      }
      name(prefix) {
        return new ValueScopeName(prefix, this._newName(prefix));
      }
      value(nameOrPrefix, value) {
        var _a;
        if (value.ref === void 0)
          throw new Error("CodeGen: ref must be passed in value");
        const name = this.toName(nameOrPrefix);
        const { prefix } = name;
        const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref;
        let vs = this._values[prefix];
        if (vs) {
          const _name = vs.get(valueKey);
          if (_name)
            return _name;
        } else {
          vs = this._values[prefix] = /* @__PURE__ */ new Map();
        }
        vs.set(valueKey, name);
        const s = this._scope[prefix] || (this._scope[prefix] = []);
        const itemIndex = s.length;
        s[itemIndex] = value.ref;
        name.setValue(value, { property: prefix, itemIndex });
        return name;
      }
      getValue(prefix, keyOrRef) {
        const vs = this._values[prefix];
        if (!vs)
          return;
        return vs.get(keyOrRef);
      }
      scopeRefs(scopeName, values = this._values) {
        return this._reduceValues(values, (name) => {
          if (name.scopePath === void 0)
            throw new Error(`CodeGen: name "${name}" has no value`);
          return (0, code_1._)`${scopeName}${name.scopePath}`;
        });
      }
      scopeCode(values = this._values, usedValues, getCode) {
        return this._reduceValues(values, (name) => {
          if (name.value === void 0)
            throw new Error(`CodeGen: name "${name}" has no value`);
          return name.value.code;
        }, usedValues, getCode);
      }
      _reduceValues(values, valueCode, usedValues = {}, getCode) {
        let code = code_1.nil;
        for (const prefix in values) {
          const vs = values[prefix];
          if (!vs)
            continue;
          const nameSet = usedValues[prefix] = usedValues[prefix] || /* @__PURE__ */ new Map();
          vs.forEach((name) => {
            if (nameSet.has(name))
              return;
            nameSet.set(name, UsedValueState.Started);
            let c4 = valueCode(name);
            if (c4) {
              const def = this.opts.es5 ? exports2.varKinds.var : exports2.varKinds.const;
              code = (0, code_1._)`${code}${def} ${name} = ${c4};${this.opts._n}`;
            } else if (c4 = getCode === null || getCode === void 0 ? void 0 : getCode(name)) {
              code = (0, code_1._)`${code}${c4}${this.opts._n}`;
            } else {
              throw new ValueError(name);
            }
            nameSet.set(name, UsedValueState.Completed);
          });
        }
        return code;
      }
    };
    exports2.ValueScope = ValueScope;
  }
});

// node_modules/ajv/dist/compile/codegen/index.js
var require_codegen = __commonJS({
  "node_modules/ajv/dist/compile/codegen/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.or = exports2.and = exports2.not = exports2.CodeGen = exports2.operators = exports2.varKinds = exports2.ValueScopeName = exports2.ValueScope = exports2.Scope = exports2.Name = exports2.regexpCode = exports2.stringify = exports2.getProperty = exports2.nil = exports2.strConcat = exports2.str = exports2._ = void 0;
    var code_1 = require_code();
    var scope_1 = require_scope();
    var code_2 = require_code();
    Object.defineProperty(exports2, "_", { enumerable: true, get: function() {
      return code_2._;
    } });
    Object.defineProperty(exports2, "str", { enumerable: true, get: function() {
      return code_2.str;
    } });
    Object.defineProperty(exports2, "strConcat", { enumerable: true, get: function() {
      return code_2.strConcat;
    } });
    Object.defineProperty(exports2, "nil", { enumerable: true, get: function() {
      return code_2.nil;
    } });
    Object.defineProperty(exports2, "getProperty", { enumerable: true, get: function() {
      return code_2.getProperty;
    } });
    Object.defineProperty(exports2, "stringify", { enumerable: true, get: function() {
      return code_2.stringify;
    } });
    Object.defineProperty(exports2, "regexpCode", { enumerable: true, get: function() {
      return code_2.regexpCode;
    } });
    Object.defineProperty(exports2, "Name", { enumerable: true, get: function() {
      return code_2.Name;
    } });
    var scope_2 = require_scope();
    Object.defineProperty(exports2, "Scope", { enumerable: true, get: function() {
      return scope_2.Scope;
    } });
    Object.defineProperty(exports2, "ValueScope", { enumerable: true, get: function() {
      return scope_2.ValueScope;
    } });
    Object.defineProperty(exports2, "ValueScopeName", { enumerable: true, get: function() {
      return scope_2.ValueScopeName;
    } });
    Object.defineProperty(exports2, "varKinds", { enumerable: true, get: function() {
      return scope_2.varKinds;
    } });
    exports2.operators = {
      GT: new code_1._Code(">"),
      GTE: new code_1._Code(">="),
      LT: new code_1._Code("<"),
      LTE: new code_1._Code("<="),
      EQ: new code_1._Code("==="),
      NEQ: new code_1._Code("!=="),
      NOT: new code_1._Code("!"),
      OR: new code_1._Code("||"),
      AND: new code_1._Code("&&"),
      ADD: new code_1._Code("+")
    };
    var Node = class {
      optimizeNodes() {
        return this;
      }
      optimizeNames(_names, _constants) {
        return this;
      }
    };
    var Def = class extends Node {
      constructor(varKind, name, rhs) {
        super();
        this.varKind = varKind;
        this.name = name;
        this.rhs = rhs;
      }
      render({ es5, _n }) {
        const varKind = es5 ? scope_1.varKinds.var : this.varKind;
        const rhs = this.rhs === void 0 ? "" : ` = ${this.rhs}`;
        return `${varKind} ${this.name}${rhs};` + _n;
      }
      optimizeNames(names, constants) {
        if (!names[this.name.str])
          return;
        if (this.rhs)
          this.rhs = optimizeExpr(this.rhs, names, constants);
        return this;
      }
      get names() {
        return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};
      }
    };
    var Assign = class extends Node {
      constructor(lhs, rhs, sideEffects) {
        super();
        this.lhs = lhs;
        this.rhs = rhs;
        this.sideEffects = sideEffects;
      }
      render({ _n }) {
        return `${this.lhs} = ${this.rhs};` + _n;
      }
      optimizeNames(names, constants) {
        if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)
          return;
        this.rhs = optimizeExpr(this.rhs, names, constants);
        return this;
      }
      get names() {
        const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };
        return addExprNames(names, this.rhs);
      }
    };
    var AssignOp = class extends Assign {
      constructor(lhs, op, rhs, sideEffects) {
        super(lhs, rhs, sideEffects);
        this.op = op;
      }
      render({ _n }) {
        return `${this.lhs} ${this.op}= ${this.rhs};` + _n;
      }
    };
    var Label = class extends Node {
      constructor(label) {
        super();
        this.label = label;
        this.names = {};
      }
      render({ _n }) {
        return `${this.label}:` + _n;
      }
    };
    var Break = class extends Node {
      constructor(label) {
        super();
        this.label = label;
        this.names = {};
      }
      render({ _n }) {
        const label = this.label ? ` ${this.label}` : "";
        return `break${label};` + _n;
      }
    };
    var Throw = class extends Node {
      constructor(error) {
        super();
        this.error = error;
      }
      render({ _n }) {
        return `throw ${this.error};` + _n;
      }
      get names() {
        return this.error.names;
      }
    };
    var AnyCode = class extends Node {
      constructor(code) {
        super();
        this.code = code;
      }
      render({ _n }) {
        return `${this.code};` + _n;
      }
      optimizeNodes() {
        return `${this.code}` ? this : void 0;
      }
      optimizeNames(names, constants) {
        this.code = optimizeExpr(this.code, names, constants);
        return this;
      }
      get names() {
        return this.code instanceof code_1._CodeOrName ? this.code.names : {};
      }
    };
    var ParentNode = class extends Node {
      constructor(nodes = []) {
        super();
        this.nodes = nodes;
      }
      render(opts) {
        return this.nodes.reduce((code, n) => code + n.render(opts), "");
      }
      optimizeNodes() {
        const { nodes } = this;
        let i = nodes.length;
        while (i--) {
          const n = nodes[i].optimizeNodes();
          if (Array.isArray(n))
            nodes.splice(i, 1, ...n);
          else if (n)
            nodes[i] = n;
          else
            nodes.splice(i, 1);
        }
        return nodes.length > 0 ? this : void 0;
      }
      optimizeNames(names, constants) {
        const { nodes } = this;
        let i = nodes.length;
        while (i--) {
          const n = nodes[i];
          if (n.optimizeNames(names, constants))
            continue;
          subtractNames(names, n.names);
          nodes.splice(i, 1);
        }
        return nodes.length > 0 ? this : void 0;
      }
      get names() {
        return this.nodes.reduce((names, n) => addNames(names, n.names), {});
      }
    };
    var BlockNode = class extends ParentNode {
      render(opts) {
        return "{" + opts._n + super.render(opts) + "}" + opts._n;
      }
    };
    var Root = class extends ParentNode {
    };
    var Else = class extends BlockNode {
    };
    Else.kind = "else";
    var If = class _If extends BlockNode {
      constructor(condition, nodes) {
        super(nodes);
        this.condition = condition;
      }
      render(opts) {
        let code = `if(${this.condition})` + super.render(opts);
        if (this.else)
          code += "else " + this.else.render(opts);
        return code;
      }
      optimizeNodes() {
        super.optimizeNodes();
        const cond = this.condition;
        if (cond === true)
          return this.nodes;
        let e = this.else;
        if (e) {
          const ns = e.optimizeNodes();
          e = this.else = Array.isArray(ns) ? new Else(ns) : ns;
        }
        if (e) {
          if (cond === false)
            return e instanceof _If ? e : e.nodes;
          if (this.nodes.length)
            return this;
          return new _If(not(cond), e instanceof _If ? [e] : e.nodes);
        }
        if (cond === false || !this.nodes.length)
          return void 0;
        return this;
      }
      optimizeNames(names, constants) {
        var _a;
        this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);
        if (!(super.optimizeNames(names, constants) || this.else))
          return;
        this.condition = optimizeExpr(this.condition, names, constants);
        return this;
      }
      get names() {
        const names = super.names;
        addExprNames(names, this.condition);
        if (this.else)
          addNames(names, this.else.names);
        return names;
      }
    };
    If.kind = "if";
    var For = class extends BlockNode {
    };
    For.kind = "for";
    var ForLoop = class extends For {
      constructor(iteration) {
        super();
        this.iteration = iteration;
      }
      render(opts) {
        return `for(${this.iteration})` + super.render(opts);
      }
      optimizeNames(names, constants) {
        if (!super.optimizeNames(names, constants))
          return;
        this.iteration = optimizeExpr(this.iteration, names, constants);
        return this;
      }
      get names() {
        return addNames(super.names, this.iteration.names);
      }
    };
    var ForRange = class extends For {
      constructor(varKind, name, from, to) {
        super();
        this.varKind = varKind;
        this.name = name;
        this.from = from;
        this.to = to;
      }
      render(opts) {
        const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;
        const { name, from, to } = this;
        return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);
      }
      get names() {
        const names = addExprNames(super.names, this.from);
        return addExprNames(names, this.to);
      }
    };
    var ForIter = class extends For {
      constructor(loop, varKind, name, iterable) {
        super();
        this.loop = loop;
        this.varKind = varKind;
        this.name = name;
        this.iterable = iterable;
      }
      render(opts) {
        return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);
      }
      optimizeNames(names, constants) {
        if (!super.optimizeNames(names, constants))
          return;
        this.iterable = optimizeExpr(this.iterable, names, constants);
        return this;
      }
      get names() {
        return addNames(super.names, this.iterable.names);
      }
    };
    var Func = class extends BlockNode {
      constructor(name, args, async) {
        super();
        this.name = name;
        this.args = args;
        this.async = async;
      }
      render(opts) {
        const _async = this.async ? "async " : "";
        return `${_async}function ${this.name}(${this.args})` + super.render(opts);
      }
    };
    Func.kind = "func";
    var Return = class extends ParentNode {
      render(opts) {
        return "return " + super.render(opts);
      }
    };
    Return.kind = "return";
    var Try = class extends BlockNode {
      render(opts) {
        let code = "try" + super.render(opts);
        if (this.catch)
          code += this.catch.render(opts);
        if (this.finally)
          code += this.finally.render(opts);
        return code;
      }
      optimizeNodes() {
        var _a, _b;
        super.optimizeNodes();
        (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes();
        (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();
        return this;
      }
      optimizeNames(names, constants) {
        var _a, _b;
        super.optimizeNames(names, constants);
        (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);
        (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);
        return this;
      }
      get names() {
        const names = super.names;
        if (this.catch)
          addNames(names, this.catch.names);
        if (this.finally)
          addNames(names, this.finally.names);
        return names;
      }
    };
    var Catch = class extends BlockNode {
      constructor(error) {
        super();
        this.error = error;
      }
      render(opts) {
        return `catch(${this.error})` + super.render(opts);
      }
    };
    Catch.kind = "catch";
    var Finally = class extends BlockNode {
      render(opts) {
        return "finally" + super.render(opts);
      }
    };
    Finally.kind = "finally";
    var CodeGen = class {
      constructor(extScope, opts = {}) {
        this._values = {};
        this._blockStarts = [];
        this._constants = {};
        this.opts = { ...opts, _n: opts.lines ? "\n" : "" };
        this._extScope = extScope;
        this._scope = new scope_1.Scope({ parent: extScope });
        this._nodes = [new Root()];
      }
      toString() {
        return this._root.render(this.opts);
      }
      // returns unique name in the internal scope
      name(prefix) {
        return this._scope.name(prefix);
      }
      // reserves unique name in the external scope
      scopeName(prefix) {
        return this._extScope.name(prefix);
      }
      // reserves unique name in the external scope and assigns value to it
      scopeValue(prefixOrName, value) {
        const name = this._extScope.value(prefixOrName, value);
        const vs = this._values[name.prefix] || (this._values[name.prefix] = /* @__PURE__ */ new Set());
        vs.add(name);
        return name;
      }
      getScopeValue(prefix, keyOrRef) {
        return this._extScope.getValue(prefix, keyOrRef);
      }
      // return code that assigns values in the external scope to the names that are used internally
      // (same names that were returned by gen.scopeName or gen.scopeValue)
      scopeRefs(scopeName) {
        return this._extScope.scopeRefs(scopeName, this._values);
      }
      scopeCode() {
        return this._extScope.scopeCode(this._values);
      }
      _def(varKind, nameOrPrefix, rhs, constant) {
        const name = this._scope.toName(nameOrPrefix);
        if (rhs !== void 0 && constant)
          this._constants[name.str] = rhs;
        this._leafNode(new Def(varKind, name, rhs));
        return name;
      }
      // `const` declaration (`var` in es5 mode)
      const(nameOrPrefix, rhs, _constant) {
        return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);
      }
      // `let` declaration with optional assignment (`var` in es5 mode)
      let(nameOrPrefix, rhs, _constant) {
        return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);
      }
      // `var` declaration with optional assignment
      var(nameOrPrefix, rhs, _constant) {
        return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);
      }
      // assignment code
      assign(lhs, rhs, sideEffects) {
        return this._leafNode(new Assign(lhs, rhs, sideEffects));
      }
      // `+=` code
      add(lhs, rhs) {
        return this._leafNode(new AssignOp(lhs, exports2.operators.ADD, rhs));
      }
      // appends passed SafeExpr to code or executes Block
      code(c4) {
        if (typeof c4 == "function")
          c4();
        else if (c4 !== code_1.nil)
          this._leafNode(new AnyCode(c4));
        return this;
      }
      // returns code for object literal for the passed argument list of key-value pairs
      object(...keyValues) {
        const code = ["{"];
        for (const [key, value] of keyValues) {
          if (code.length > 1)
            code.push(",");
          code.push(key);
          if (key !== value || this.opts.es5) {
            code.push(":");
            (0, code_1.addCodeArg)(code, value);
          }
        }
        code.push("}");
        return new code_1._Code(code);
      }
      // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)
      if(condition, thenBody, elseBody) {
        this._blockNode(new If(condition));
        if (thenBody && elseBody) {
          this.code(thenBody).else().code(elseBody).endIf();
        } else if (thenBody) {
          this.code(thenBody).endIf();
        } else if (elseBody) {
          throw new Error('CodeGen: "else" body without "then" body');
        }
        return this;
      }
      // `else if` clause - invalid without `if` or after `else` clauses
      elseIf(condition) {
        return this._elseNode(new If(condition));
      }
      // `else` clause - only valid after `if` or `else if` clauses
      else() {
        return this._elseNode(new Else());
      }
      // end `if` statement (needed if gen.if was used only with condition)
      endIf() {
        return this._endBlockNode(If, Else);
      }
      _for(node, forBody) {
        this._blockNode(node);
        if (forBody)
          this.code(forBody).endFor();
        return this;
      }
      // a generic `for` clause (or statement if `forBody` is passed)
      for(iteration, forBody) {
        return this._for(new ForLoop(iteration), forBody);
      }
      // `for` statement for a range of values
      forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {
        const name = this._scope.toName(nameOrPrefix);
        return this._for(new ForRange(varKind, name, from, to), () => forBody(name));
      }
      // `for-of` statement (in es5 mode replace with a normal for loop)
      forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {
        const name = this._scope.toName(nameOrPrefix);
        if (this.opts.es5) {
          const arr = iterable instanceof code_1.Name ? iterable : this.var("_arr", iterable);
          return this.forRange("_i", 0, (0, code_1._)`${arr}.length`, (i) => {
            this.var(name, (0, code_1._)`${arr}[${i}]`);
            forBody(name);
          });
        }
        return this._for(new ForIter("of", varKind, name, iterable), () => forBody(name));
      }
      // `for-in` statement.
      // With option `ownProperties` replaced with a `for-of` loop for object keys
      forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {
        if (this.opts.ownProperties) {
          return this.forOf(nameOrPrefix, (0, code_1._)`Object.keys(${obj})`, forBody);
        }
        const name = this._scope.toName(nameOrPrefix);
        return this._for(new ForIter("in", varKind, name, obj), () => forBody(name));
      }
      // end `for` loop
      endFor() {
        return this._endBlockNode(For);
      }
      // `label` statement
      label(label) {
        return this._leafNode(new Label(label));
      }
      // `break` statement
      break(label) {
        return this._leafNode(new Break(label));
      }
      // `return` statement
      return(value) {
        const node = new Return();
        this._blockNode(node);
        this.code(value);
        if (node.nodes.length !== 1)
          throw new Error('CodeGen: "return" should have one node');
        return this._endBlockNode(Return);
      }
      // `try` statement
      try(tryBody, catchCode, finallyCode) {
        if (!catchCode && !finallyCode)
          throw new Error('CodeGen: "try" without "catch" and "finally"');
        const node = new Try();
        this._blockNode(node);
        this.code(tryBody);
        if (catchCode) {
          const error = this.name("e");
          this._currNode = node.catch = new Catch(error);
          catchCode(error);
        }
        if (finallyCode) {
          this._currNode = node.finally = new Finally();
          this.code(finallyCode);
        }
        return this._endBlockNode(Catch, Finally);
      }
      // `throw` statement
      throw(error) {
        return this._leafNode(new Throw(error));
      }
      // start self-balancing block
      block(body, nodeCount) {
        this._blockStarts.push(this._nodes.length);
        if (body)
          this.code(body).endBlock(nodeCount);
        return this;
      }
      // end the current self-balancing block
      endBlock(nodeCount) {
        const len = this._blockStarts.pop();
        if (len === void 0)
          throw new Error("CodeGen: not in self-balancing block");
        const toClose = this._nodes.length - len;
        if (toClose < 0 || nodeCount !== void 0 && toClose !== nodeCount) {
          throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);
        }
        this._nodes.length = len;
        return this;
      }
      // `function` heading (or definition if funcBody is passed)
      func(name, args = code_1.nil, async, funcBody) {
        this._blockNode(new Func(name, args, async));
        if (funcBody)
          this.code(funcBody).endFunc();
        return this;
      }
      // end function definition
      endFunc() {
        return this._endBlockNode(Func);
      }
      optimize(n = 1) {
        while (n-- > 0) {
          this._root.optimizeNodes();
          this._root.optimizeNames(this._root.names, this._constants);
        }
      }
      _leafNode(node) {
        this._currNode.nodes.push(node);
        return this;
      }
      _blockNode(node) {
        this._currNode.nodes.push(node);
        this._nodes.push(node);
      }
      _endBlockNode(N1, N2) {
        const n = this._currNode;
        if (n instanceof N1 || N2 && n instanceof N2) {
          this._nodes.pop();
          return this;
        }
        throw new Error(`CodeGen: not in block "${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}"`);
      }
      _elseNode(node) {
        const n = this._currNode;
        if (!(n instanceof If)) {
          throw new Error('CodeGen: "else" without "if"');
        }
        this._currNode = n.else = node;
        return this;
      }
      get _root() {
        return this._nodes[0];
      }
      get _currNode() {
        const ns = this._nodes;
        return ns[ns.length - 1];
      }
      set _currNode(node) {
        const ns = this._nodes;
        ns[ns.length - 1] = node;
      }
    };
    exports2.CodeGen = CodeGen;
    function addNames(names, from) {
      for (const n in from)
        names[n] = (names[n] || 0) + (from[n] || 0);
      return names;
    }
    function addExprNames(names, from) {
      return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;
    }
    function optimizeExpr(expr, names, constants) {
      if (expr instanceof code_1.Name)
        return replaceName(expr);
      if (!canOptimize(expr))
        return expr;
      return new code_1._Code(expr._items.reduce((items, c4) => {
        if (c4 instanceof code_1.Name)
          c4 = replaceName(c4);
        if (c4 instanceof code_1._Code)
          items.push(...c4._items);
        else
          items.push(c4);
        return items;
      }, []));
      function replaceName(n) {
        const c4 = constants[n.str];
        if (c4 === void 0 || names[n.str] !== 1)
          return n;
        delete names[n.str];
        return c4;
      }
      function canOptimize(e) {
        return e instanceof code_1._Code && e._items.some((c4) => c4 instanceof code_1.Name && names[c4.str] === 1 && constants[c4.str] !== void 0);
      }
    }
    function subtractNames(names, from) {
      for (const n in from)
        names[n] = (names[n] || 0) - (from[n] || 0);
    }
    function not(x) {
      return typeof x == "boolean" || typeof x == "number" || x === null ? !x : (0, code_1._)`!${par(x)}`;
    }
    exports2.not = not;
    var andCode = mappend(exports2.operators.AND);
    function and(...args) {
      return args.reduce(andCode);
    }
    exports2.and = and;
    var orCode = mappend(exports2.operators.OR);
    function or(...args) {
      return args.reduce(orCode);
    }
    exports2.or = or;
    function mappend(op) {
      return (x, y) => x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._)`${par(x)} ${op} ${par(y)}`;
    }
    function par(x) {
      return x instanceof code_1.Name ? x : (0, code_1._)`(${x})`;
    }
  }
});

// node_modules/ajv/dist/compile/util.js
var require_util = __commonJS({
  "node_modules/ajv/dist/compile/util.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.checkStrictMode = exports2.getErrorPath = exports2.Type = exports2.useFunc = exports2.setEvaluated = exports2.evaluatedPropsToName = exports2.mergeEvaluated = exports2.eachItem = exports2.unescapeJsonPointer = exports2.escapeJsonPointer = exports2.escapeFragment = exports2.unescapeFragment = exports2.schemaRefOrVal = exports2.schemaHasRulesButRef = exports2.schemaHasRules = exports2.checkUnknownRules = exports2.alwaysValidSchema = exports2.toHash = void 0;
    var codegen_1 = require_codegen();
    var code_1 = require_code();
    function toHash(arr) {
      const hash = {};
      for (const item of arr)
        hash[item] = true;
      return hash;
    }
    exports2.toHash = toHash;
    function alwaysValidSchema(it, schema) {
      if (typeof schema == "boolean")
        return schema;
      if (Object.keys(schema).length === 0)
        return true;
      checkUnknownRules(it, schema);
      return !schemaHasRules(schema, it.self.RULES.all);
    }
    exports2.alwaysValidSchema = alwaysValidSchema;
    function checkUnknownRules(it, schema = it.schema) {
      const { opts, self } = it;
      if (!opts.strictSchema)
        return;
      if (typeof schema === "boolean")
        return;
      const rules = self.RULES.keywords;
      for (const key in schema) {
        if (!rules[key])
          checkStrictMode(it, `unknown keyword: "${key}"`);
      }
    }
    exports2.checkUnknownRules = checkUnknownRules;
    function schemaHasRules(schema, rules) {
      if (typeof schema == "boolean")
        return !schema;
      for (const key in schema)
        if (rules[key])
          return true;
      return false;
    }
    exports2.schemaHasRules = schemaHasRules;
    function schemaHasRulesButRef(schema, RULES) {
      if (typeof schema == "boolean")
        return !schema;
      for (const key in schema)
        if (key !== "$ref" && RULES.all[key])
          return true;
      return false;
    }
    exports2.schemaHasRulesButRef = schemaHasRulesButRef;
    function schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) {
      if (!$data) {
        if (typeof schema == "number" || typeof schema == "boolean")
          return schema;
        if (typeof schema == "string")
          return (0, codegen_1._)`${schema}`;
      }
      return (0, codegen_1._)`${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`;
    }
    exports2.schemaRefOrVal = schemaRefOrVal;
    function unescapeFragment(str) {
      return unescapeJsonPointer(decodeURIComponent(str));
    }
    exports2.unescapeFragment = unescapeFragment;
    function escapeFragment(str) {
      return encodeURIComponent(escapeJsonPointer(str));
    }
    exports2.escapeFragment = escapeFragment;
    function escapeJsonPointer(str) {
      if (typeof str == "number")
        return `${str}`;
      return str.replace(/~/g, "~0").replace(/\//g, "~1");
    }
    exports2.escapeJsonPointer = escapeJsonPointer;
    function unescapeJsonPointer(str) {
      return str.replace(/~1/g, "/").replace(/~0/g, "~");
    }
    exports2.unescapeJsonPointer = unescapeJsonPointer;
    function eachItem(xs, f) {
      if (Array.isArray(xs)) {
        for (const x of xs)
          f(x);
      } else {
        f(xs);
      }
    }
    exports2.eachItem = eachItem;
    function makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName }) {
      return (gen, from, to, toName) => {
        const res = to === void 0 ? from : to instanceof codegen_1.Name ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to) : from instanceof codegen_1.Name ? (mergeToName(gen, to, from), from) : mergeValues(from, to);
        return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res;
      };
    }
    exports2.mergeEvaluated = {
      props: makeMergeEvaluated({
        mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true && ${from} !== undefined`, () => {
          gen.if((0, codegen_1._)`${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._)`${to} || {}`).code((0, codegen_1._)`Object.assign(${to}, ${from})`));
        }),
        mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true`, () => {
          if (from === true) {
            gen.assign(to, true);
          } else {
            gen.assign(to, (0, codegen_1._)`${to} || {}`);
            setEvaluated(gen, to, from);
          }
        }),
        mergeValues: (from, to) => from === true ? true : { ...from, ...to },
        resultToName: evaluatedPropsToName
      }),
      items: makeMergeEvaluated({
        mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._)`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),
        mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._)`${to} > ${from} ? ${to} : ${from}`)),
        mergeValues: (from, to) => from === true ? true : Math.max(from, to),
        resultToName: (gen, items) => gen.var("items", items)
      })
    };
    function evaluatedPropsToName(gen, ps) {
      if (ps === true)
        return gen.var("props", true);
      const props = gen.var("props", (0, codegen_1._)`{}`);
      if (ps !== void 0)
        setEvaluated(gen, props, ps);
      return props;
    }
    exports2.evaluatedPropsToName = evaluatedPropsToName;
    function setEvaluated(gen, props, ps) {
      Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._)`${props}${(0, codegen_1.getProperty)(p)}`, true));
    }
    exports2.setEvaluated = setEvaluated;
    var snippets = {};
    function useFunc(gen, f) {
      return gen.scopeValue("func", {
        ref: f,
        code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code))
      });
    }
    exports2.useFunc = useFunc;
    var Type;
    (function(Type2) {
      Type2[Type2["Num"] = 0] = "Num";
      Type2[Type2["Str"] = 1] = "Str";
    })(Type || (exports2.Type = Type = {}));
    function getErrorPath(dataProp, dataPropType, jsPropertySyntax) {
      if (dataProp instanceof codegen_1.Name) {
        const isNumber = dataPropType === Type.Num;
        return jsPropertySyntax ? isNumber ? (0, codegen_1._)`"[" + ${dataProp} + "]"` : (0, codegen_1._)`"['" + ${dataProp} + "']"` : isNumber ? (0, codegen_1._)`"/" + ${dataProp}` : (0, codegen_1._)`"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`;
      }
      return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : "/" + escapeJsonPointer(dataProp);
    }
    exports2.getErrorPath = getErrorPath;
    function checkStrictMode(it, msg, mode = it.opts.strictSchema) {
      if (!mode)
        return;
      msg = `strict mode: ${msg}`;
      if (mode === true)
        throw new Error(msg);
      it.self.logger.warn(msg);
    }
    exports2.checkStrictMode = checkStrictMode;
  }
});

// node_modules/ajv/dist/compile/names.js
var require_names = __commonJS({
  "node_modules/ajv/dist/compile/names.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var names = {
      // validation function arguments
      data: new codegen_1.Name("data"),
      // data passed to validation function
      // args passed from referencing schema
      valCxt: new codegen_1.Name("valCxt"),
      // validation/data context - should not be used directly, it is destructured to the names below
      instancePath: new codegen_1.Name("instancePath"),
      parentData: new codegen_1.Name("parentData"),
      parentDataProperty: new codegen_1.Name("parentDataProperty"),
      rootData: new codegen_1.Name("rootData"),
      // root data - same as the data passed to the first/top validation function
      dynamicAnchors: new codegen_1.Name("dynamicAnchors"),
      // used to support recursiveRef and dynamicRef
      // function scoped variables
      vErrors: new codegen_1.Name("vErrors"),
      // null or array of validation errors
      errors: new codegen_1.Name("errors"),
      // counter of validation errors
      this: new codegen_1.Name("this"),
      // "globals"
      self: new codegen_1.Name("self"),
      scope: new codegen_1.Name("scope"),
      // JTD serialize/parse name for JSON string and position
      json: new codegen_1.Name("json"),
      jsonPos: new codegen_1.Name("jsonPos"),
      jsonLen: new codegen_1.Name("jsonLen"),
      jsonPart: new codegen_1.Name("jsonPart")
    };
    exports2.default = names;
  }
});

// node_modules/ajv/dist/compile/errors.js
var require_errors3 = __commonJS({
  "node_modules/ajv/dist/compile/errors.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.extendErrors = exports2.resetErrorsCount = exports2.reportExtraError = exports2.reportError = exports2.keyword$DataError = exports2.keywordError = void 0;
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var names_1 = require_names();
    exports2.keywordError = {
      message: ({ keyword }) => (0, codegen_1.str)`must pass "${keyword}" keyword validation`
    };
    exports2.keyword$DataError = {
      message: ({ keyword, schemaType }) => schemaType ? (0, codegen_1.str)`"${keyword}" keyword must be ${schemaType} ($data)` : (0, codegen_1.str)`"${keyword}" keyword is invalid ($data)`
    };
    function reportError(cxt, error = exports2.keywordError, errorPaths, overrideAllErrors) {
      const { it } = cxt;
      const { gen, compositeRule, allErrors } = it;
      const errObj = errorObjectCode(cxt, error, errorPaths);
      if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : compositeRule || allErrors) {
        addError(gen, errObj);
      } else {
        returnErrors(it, (0, codegen_1._)`[${errObj}]`);
      }
    }
    exports2.reportError = reportError;
    function reportExtraError(cxt, error = exports2.keywordError, errorPaths) {
      const { it } = cxt;
      const { gen, compositeRule, allErrors } = it;
      const errObj = errorObjectCode(cxt, error, errorPaths);
      addError(gen, errObj);
      if (!(compositeRule || allErrors)) {
        returnErrors(it, names_1.default.vErrors);
      }
    }
    exports2.reportExtraError = reportExtraError;
    function resetErrorsCount(gen, errsCount) {
      gen.assign(names_1.default.errors, errsCount);
      gen.if((0, codegen_1._)`${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._)`${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null)));
    }
    exports2.resetErrorsCount = resetErrorsCount;
    function extendErrors({ gen, keyword, schemaValue, data, errsCount, it }) {
      if (errsCount === void 0)
        throw new Error("ajv implementation error");
      const err = gen.name("err");
      gen.forRange("i", errsCount, names_1.default.errors, (i) => {
        gen.const(err, (0, codegen_1._)`${names_1.default.vErrors}[${i}]`);
        gen.if((0, codegen_1._)`${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._)`${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath)));
        gen.assign((0, codegen_1._)`${err}.schemaPath`, (0, codegen_1.str)`${it.errSchemaPath}/${keyword}`);
        if (it.opts.verbose) {
          gen.assign((0, codegen_1._)`${err}.schema`, schemaValue);
          gen.assign((0, codegen_1._)`${err}.data`, data);
        }
      });
    }
    exports2.extendErrors = extendErrors;
    function addError(gen, errObj) {
      const err = gen.const("err", errObj);
      gen.if((0, codegen_1._)`${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._)`[${err}]`), (0, codegen_1._)`${names_1.default.vErrors}.push(${err})`);
      gen.code((0, codegen_1._)`${names_1.default.errors}++`);
    }
    function returnErrors(it, errs) {
      const { gen, validateName, schemaEnv } = it;
      if (schemaEnv.$async) {
        gen.throw((0, codegen_1._)`new ${it.ValidationError}(${errs})`);
      } else {
        gen.assign((0, codegen_1._)`${validateName}.errors`, errs);
        gen.return(false);
      }
    }
    var E = {
      keyword: new codegen_1.Name("keyword"),
      schemaPath: new codegen_1.Name("schemaPath"),
      // also used in JTD errors
      params: new codegen_1.Name("params"),
      propertyName: new codegen_1.Name("propertyName"),
      message: new codegen_1.Name("message"),
      schema: new codegen_1.Name("schema"),
      parentSchema: new codegen_1.Name("parentSchema")
    };
    function errorObjectCode(cxt, error, errorPaths) {
      const { createErrors } = cxt.it;
      if (createErrors === false)
        return (0, codegen_1._)`{}`;
      return errorObject(cxt, error, errorPaths);
    }
    function errorObject(cxt, error, errorPaths = {}) {
      const { gen, it } = cxt;
      const keyValues = [
        errorInstancePath(it, errorPaths),
        errorSchemaPath(cxt, errorPaths)
      ];
      extraErrorProps(cxt, error, keyValues);
      return gen.object(...keyValues);
    }
    function errorInstancePath({ errorPath }, { instancePath }) {
      const instPath = instancePath ? (0, codegen_1.str)`${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}` : errorPath;
      return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)];
    }
    function errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {
      let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str)`${errSchemaPath}/${keyword}`;
      if (schemaPath) {
        schPath = (0, codegen_1.str)`${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`;
      }
      return [E.schemaPath, schPath];
    }
    function extraErrorProps(cxt, { params, message }, keyValues) {
      const { keyword, data, schemaValue, it } = cxt;
      const { opts, propertyName, topSchemaRef, schemaPath } = it;
      keyValues.push([E.keyword, keyword], [E.params, typeof params == "function" ? params(cxt) : params || (0, codegen_1._)`{}`]);
      if (opts.messages) {
        keyValues.push([E.message, typeof message == "function" ? message(cxt) : message]);
      }
      if (opts.verbose) {
        keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._)`${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);
      }
      if (propertyName)
        keyValues.push([E.propertyName, propertyName]);
    }
  }
});

// node_modules/ajv/dist/compile/validate/boolSchema.js
var require_boolSchema = __commonJS({
  "node_modules/ajv/dist/compile/validate/boolSchema.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.boolOrEmptySchema = exports2.topBoolOrEmptySchema = void 0;
    var errors_1 = require_errors3();
    var codegen_1 = require_codegen();
    var names_1 = require_names();
    var boolError = {
      message: "boolean schema is false"
    };
    function topBoolOrEmptySchema(it) {
      const { gen, schema, validateName } = it;
      if (schema === false) {
        falseSchemaError(it, false);
      } else if (typeof schema == "object" && schema.$async === true) {
        gen.return(names_1.default.data);
      } else {
        gen.assign((0, codegen_1._)`${validateName}.errors`, null);
        gen.return(true);
      }
    }
    exports2.topBoolOrEmptySchema = topBoolOrEmptySchema;
    function boolOrEmptySchema(it, valid) {
      const { gen, schema } = it;
      if (schema === false) {
        gen.var(valid, false);
        falseSchemaError(it);
      } else {
        gen.var(valid, true);
      }
    }
    exports2.boolOrEmptySchema = boolOrEmptySchema;
    function falseSchemaError(it, overrideAllErrors) {
      const { gen, data } = it;
      const cxt = {
        gen,
        keyword: "false schema",
        data,
        schema: false,
        schemaCode: false,
        schemaValue: false,
        params: {},
        it
      };
      (0, errors_1.reportError)(cxt, boolError, void 0, overrideAllErrors);
    }
  }
});

// node_modules/ajv/dist/compile/rules.js
var require_rules = __commonJS({
  "node_modules/ajv/dist/compile/rules.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.getRules = exports2.isJSONType = void 0;
    var _jsonTypes = ["string", "number", "integer", "boolean", "null", "object", "array"];
    var jsonTypes = new Set(_jsonTypes);
    function isJSONType(x) {
      return typeof x == "string" && jsonTypes.has(x);
    }
    exports2.isJSONType = isJSONType;
    function getRules() {
      const groups = {
        number: { type: "number", rules: [] },
        string: { type: "string", rules: [] },
        array: { type: "array", rules: [] },
        object: { type: "object", rules: [] }
      };
      return {
        types: { ...groups, integer: true, boolean: true, null: true },
        rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object],
        post: { rules: [] },
        all: {},
        keywords: {}
      };
    }
    exports2.getRules = getRules;
  }
});

// node_modules/ajv/dist/compile/validate/applicability.js
var require_applicability = __commonJS({
  "node_modules/ajv/dist/compile/validate/applicability.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.shouldUseRule = exports2.shouldUseGroup = exports2.schemaHasRulesForType = void 0;
    function schemaHasRulesForType({ schema, self }, type) {
      const group = self.RULES.types[type];
      return group && group !== true && shouldUseGroup(schema, group);
    }
    exports2.schemaHasRulesForType = schemaHasRulesForType;
    function shouldUseGroup(schema, group) {
      return group.rules.some((rule) => shouldUseRule(schema, rule));
    }
    exports2.shouldUseGroup = shouldUseGroup;
    function shouldUseRule(schema, rule) {
      var _a;
      return schema[rule.keyword] !== void 0 || ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== void 0));
    }
    exports2.shouldUseRule = shouldUseRule;
  }
});

// node_modules/ajv/dist/compile/validate/dataType.js
var require_dataType = __commonJS({
  "node_modules/ajv/dist/compile/validate/dataType.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.reportTypeError = exports2.checkDataTypes = exports2.checkDataType = exports2.coerceAndCheckDataType = exports2.getJSONTypes = exports2.getSchemaTypes = exports2.DataType = void 0;
    var rules_1 = require_rules();
    var applicability_1 = require_applicability();
    var errors_1 = require_errors3();
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var DataType;
    (function(DataType2) {
      DataType2[DataType2["Correct"] = 0] = "Correct";
      DataType2[DataType2["Wrong"] = 1] = "Wrong";
    })(DataType || (exports2.DataType = DataType = {}));
    function getSchemaTypes(schema) {
      const types = getJSONTypes(schema.type);
      const hasNull = types.includes("null");
      if (hasNull) {
        if (schema.nullable === false)
          throw new Error("type: null contradicts nullable: false");
      } else {
        if (!types.length && schema.nullable !== void 0) {
          throw new Error('"nullable" cannot be used without "type"');
        }
        if (schema.nullable === true)
          types.push("null");
      }
      return types;
    }
    exports2.getSchemaTypes = getSchemaTypes;
    function getJSONTypes(ts) {
      const types = Array.isArray(ts) ? ts : ts ? [ts] : [];
      if (types.every(rules_1.isJSONType))
        return types;
      throw new Error("type must be JSONType or JSONType[]: " + types.join(","));
    }
    exports2.getJSONTypes = getJSONTypes;
    function coerceAndCheckDataType(it, types) {
      const { gen, data, opts } = it;
      const coerceTo = coerceToTypes(types, opts.coerceTypes);
      const checkTypes = types.length > 0 && !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0]));
      if (checkTypes) {
        const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);
        gen.if(wrongType, () => {
          if (coerceTo.length)
            coerceData(it, types, coerceTo);
          else
            reportTypeError(it);
        });
      }
      return checkTypes;
    }
    exports2.coerceAndCheckDataType = coerceAndCheckDataType;
    var COERCIBLE = /* @__PURE__ */ new Set(["string", "number", "integer", "boolean", "null"]);
    function coerceToTypes(types, coerceTypes) {
      return coerceTypes ? types.filter((t) => COERCIBLE.has(t) || coerceTypes === "array" && t === "array") : [];
    }
    function coerceData(it, types, coerceTo) {
      const { gen, data, opts } = it;
      const dataType = gen.let("dataType", (0, codegen_1._)`typeof ${data}`);
      const coerced = gen.let("coerced", (0, codegen_1._)`undefined`);
      if (opts.coerceTypes === "array") {
        gen.if((0, codegen_1._)`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen.assign(data, (0, codegen_1._)`${data}[0]`).assign(dataType, (0, codegen_1._)`typeof ${data}`).if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));
      }
      gen.if((0, codegen_1._)`${coerced} !== undefined`);
      for (const t of coerceTo) {
        if (COERCIBLE.has(t) || t === "array" && opts.coerceTypes === "array") {
          coerceSpecificType(t);
        }
      }
      gen.else();
      reportTypeError(it);
      gen.endIf();
      gen.if((0, codegen_1._)`${coerced} !== undefined`, () => {
        gen.assign(data, coerced);
        assignParentData(it, coerced);
      });
      function coerceSpecificType(t) {
        switch (t) {
          case "string":
            gen.elseIf((0, codegen_1._)`${dataType} == "number" || ${dataType} == "boolean"`).assign(coerced, (0, codegen_1._)`"" + ${data}`).elseIf((0, codegen_1._)`${data} === null`).assign(coerced, (0, codegen_1._)`""`);
            return;
          case "number":
            gen.elseIf((0, codegen_1._)`${dataType} == "boolean" || ${data} === null
              || (${dataType} == "string" && ${data} && ${data} == +${data})`).assign(coerced, (0, codegen_1._)`+${data}`);
            return;
          case "integer":
            gen.elseIf((0, codegen_1._)`${dataType} === "boolean" || ${data} === null
              || (${dataType} === "string" && ${data} && ${data} == +${data} && !(${data} % 1))`).assign(coerced, (0, codegen_1._)`+${data}`);
            return;
          case "boolean":
            gen.elseIf((0, codegen_1._)`${data} === "false" || ${data} === 0 || ${data} === null`).assign(coerced, false).elseIf((0, codegen_1._)`${data} === "true" || ${data} === 1`).assign(coerced, true);
            return;
          case "null":
            gen.elseIf((0, codegen_1._)`${data} === "" || ${data} === 0 || ${data} === false`);
            gen.assign(coerced, null);
            return;
          case "array":
            gen.elseIf((0, codegen_1._)`${dataType} === "string" || ${dataType} === "number"
              || ${dataType} === "boolean" || ${data} === null`).assign(coerced, (0, codegen_1._)`[${data}]`);
        }
      }
    }
    function assignParentData({ gen, parentData, parentDataProperty }, expr) {
      gen.if((0, codegen_1._)`${parentData} !== undefined`, () => gen.assign((0, codegen_1._)`${parentData}[${parentDataProperty}]`, expr));
    }
    function checkDataType(dataType, data, strictNums, correct = DataType.Correct) {
      const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ;
      let cond;
      switch (dataType) {
        case "null":
          return (0, codegen_1._)`${data} ${EQ} null`;
        case "array":
          cond = (0, codegen_1._)`Array.isArray(${data})`;
          break;
        case "object":
          cond = (0, codegen_1._)`${data} && typeof ${data} == "object" && !Array.isArray(${data})`;
          break;
        case "integer":
          cond = numCond((0, codegen_1._)`!(${data} % 1) && !isNaN(${data})`);
          break;
        case "number":
          cond = numCond();
          break;
        default:
          return (0, codegen_1._)`typeof ${data} ${EQ} ${dataType}`;
      }
      return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond);
      function numCond(_cond = codegen_1.nil) {
        return (0, codegen_1.and)((0, codegen_1._)`typeof ${data} == "number"`, _cond, strictNums ? (0, codegen_1._)`isFinite(${data})` : codegen_1.nil);
      }
    }
    exports2.checkDataType = checkDataType;
    function checkDataTypes(dataTypes, data, strictNums, correct) {
      if (dataTypes.length === 1) {
        return checkDataType(dataTypes[0], data, strictNums, correct);
      }
      let cond;
      const types = (0, util_1.toHash)(dataTypes);
      if (types.array && types.object) {
        const notObj = (0, codegen_1._)`typeof ${data} != "object"`;
        cond = types.null ? notObj : (0, codegen_1._)`!${data} || ${notObj}`;
        delete types.null;
        delete types.array;
        delete types.object;
      } else {
        cond = codegen_1.nil;
      }
      if (types.number)
        delete types.integer;
      for (const t in types)
        cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct));
      return cond;
    }
    exports2.checkDataTypes = checkDataTypes;
    var typeError = {
      message: ({ schema }) => `must be ${schema}`,
      params: ({ schema, schemaValue }) => typeof schema == "string" ? (0, codegen_1._)`{type: ${schema}}` : (0, codegen_1._)`{type: ${schemaValue}}`
    };
    function reportTypeError(it) {
      const cxt = getTypeErrorContext(it);
      (0, errors_1.reportError)(cxt, typeError);
    }
    exports2.reportTypeError = reportTypeError;
    function getTypeErrorContext(it) {
      const { gen, data, schema } = it;
      const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, "type");
      return {
        gen,
        keyword: "type",
        data,
        schema: schema.type,
        schemaCode,
        schemaValue: schemaCode,
        parentSchema: schema,
        params: {},
        it
      };
    }
  }
});

// node_modules/ajv/dist/compile/validate/defaults.js
var require_defaults = __commonJS({
  "node_modules/ajv/dist/compile/validate/defaults.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.assignDefaults = void 0;
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    function assignDefaults(it, ty) {
      const { properties, items } = it.schema;
      if (ty === "object" && properties) {
        for (const key in properties) {
          assignDefault(it, key, properties[key].default);
        }
      } else if (ty === "array" && Array.isArray(items)) {
        items.forEach((sch, i) => assignDefault(it, i, sch.default));
      }
    }
    exports2.assignDefaults = assignDefaults;
    function assignDefault(it, prop, defaultValue) {
      const { gen, compositeRule, data, opts } = it;
      if (defaultValue === void 0)
        return;
      const childData = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(prop)}`;
      if (compositeRule) {
        (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`);
        return;
      }
      let condition = (0, codegen_1._)`${childData} === undefined`;
      if (opts.useDefaults === "empty") {
        condition = (0, codegen_1._)`${condition} || ${childData} === null || ${childData} === ""`;
      }
      gen.if(condition, (0, codegen_1._)`${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);
    }
  }
});

// node_modules/ajv/dist/vocabularies/code.js
var require_code2 = __commonJS({
  "node_modules/ajv/dist/vocabularies/code.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateUnion = exports2.validateArray = exports2.usePattern = exports2.callValidateCode = exports2.schemaProperties = exports2.allSchemaProperties = exports2.noPropertyInData = exports2.propertyInData = exports2.isOwnProperty = exports2.hasPropFunc = exports2.reportMissingProp = exports2.checkMissingProp = exports2.checkReportMissingProp = void 0;
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var names_1 = require_names();
    var util_2 = require_util();
    function checkReportMissingProp(cxt, prop) {
      const { gen, data, it } = cxt;
      gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {
        cxt.setParams({ missingProperty: (0, codegen_1._)`${prop}` }, true);
        cxt.error();
      });
    }
    exports2.checkReportMissingProp = checkReportMissingProp;
    function checkMissingProp({ gen, data, it: { opts } }, properties, missing) {
      return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._)`${missing} = ${prop}`)));
    }
    exports2.checkMissingProp = checkMissingProp;
    function reportMissingProp(cxt, missing) {
      cxt.setParams({ missingProperty: missing }, true);
      cxt.error();
    }
    exports2.reportMissingProp = reportMissingProp;
    function hasPropFunc(gen) {
      return gen.scopeValue("func", {
        // eslint-disable-next-line @typescript-eslint/unbound-method
        ref: Object.prototype.hasOwnProperty,
        code: (0, codegen_1._)`Object.prototype.hasOwnProperty`
      });
    }
    exports2.hasPropFunc = hasPropFunc;
    function isOwnProperty(gen, data, property) {
      return (0, codegen_1._)`${hasPropFunc(gen)}.call(${data}, ${property})`;
    }
    exports2.isOwnProperty = isOwnProperty;
    function propertyInData(gen, data, property, ownProperties) {
      const cond = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(property)} !== undefined`;
      return ownProperties ? (0, codegen_1._)`${cond} && ${isOwnProperty(gen, data, property)}` : cond;
    }
    exports2.propertyInData = propertyInData;
    function noPropertyInData(gen, data, property, ownProperties) {
      const cond = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(property)} === undefined`;
      return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond;
    }
    exports2.noPropertyInData = noPropertyInData;
    function allSchemaProperties(schemaMap) {
      return schemaMap ? Object.keys(schemaMap).filter((p) => p !== "__proto__") : [];
    }
    exports2.allSchemaProperties = allSchemaProperties;
    function schemaProperties(it, schemaMap) {
      return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p]));
    }
    exports2.schemaProperties = schemaProperties;
    function callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {
      const dataAndSchema = passSchema ? (0, codegen_1._)`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;
      const valCxt = [
        [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)],
        [names_1.default.parentData, it.parentData],
        [names_1.default.parentDataProperty, it.parentDataProperty],
        [names_1.default.rootData, names_1.default.rootData]
      ];
      if (it.opts.dynamicRef)
        valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]);
      const args = (0, codegen_1._)`${dataAndSchema}, ${gen.object(...valCxt)}`;
      return context !== codegen_1.nil ? (0, codegen_1._)`${func}.call(${context}, ${args})` : (0, codegen_1._)`${func}(${args})`;
    }
    exports2.callValidateCode = callValidateCode;
    var newRegExp = (0, codegen_1._)`new RegExp`;
    function usePattern({ gen, it: { opts } }, pattern) {
      const u = opts.unicodeRegExp ? "u" : "";
      const { regExp } = opts.code;
      const rx = regExp(pattern, u);
      return gen.scopeValue("pattern", {
        key: rx.toString(),
        ref: rx,
        code: (0, codegen_1._)`${regExp.code === "new RegExp" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`
      });
    }
    exports2.usePattern = usePattern;
    function validateArray(cxt) {
      const { gen, data, keyword, it } = cxt;
      const valid = gen.name("valid");
      if (it.allErrors) {
        const validArr = gen.let("valid", true);
        validateItems(() => gen.assign(validArr, false));
        return validArr;
      }
      gen.var(valid, true);
      validateItems(() => gen.break());
      return valid;
      function validateItems(notValid) {
        const len = gen.const("len", (0, codegen_1._)`${data}.length`);
        gen.forRange("i", 0, len, (i) => {
          cxt.subschema({
            keyword,
            dataProp: i,
            dataPropType: util_1.Type.Num
          }, valid);
          gen.if((0, codegen_1.not)(valid), notValid);
        });
      }
    }
    exports2.validateArray = validateArray;
    function validateUnion(cxt) {
      const { gen, schema, keyword, it } = cxt;
      if (!Array.isArray(schema))
        throw new Error("ajv implementation error");
      const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch));
      if (alwaysValid && !it.opts.unevaluated)
        return;
      const valid = gen.let("valid", false);
      const schValid = gen.name("_valid");
      gen.block(() => schema.forEach((_sch, i) => {
        const schCxt = cxt.subschema({
          keyword,
          schemaProp: i,
          compositeRule: true
        }, schValid);
        gen.assign(valid, (0, codegen_1._)`${valid} || ${schValid}`);
        const merged = cxt.mergeValidEvaluated(schCxt, schValid);
        if (!merged)
          gen.if((0, codegen_1.not)(valid));
      }));
      cxt.result(valid, () => cxt.reset(), () => cxt.error(true));
    }
    exports2.validateUnion = validateUnion;
  }
});

// node_modules/ajv/dist/compile/validate/keyword.js
var require_keyword = __commonJS({
  "node_modules/ajv/dist/compile/validate/keyword.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateKeywordUsage = exports2.validSchemaType = exports2.funcKeywordCode = exports2.macroKeywordCode = void 0;
    var codegen_1 = require_codegen();
    var names_1 = require_names();
    var code_1 = require_code2();
    var errors_1 = require_errors3();
    function macroKeywordCode(cxt, def) {
      const { gen, keyword, schema, parentSchema, it } = cxt;
      const macroSchema = def.macro.call(it.self, schema, parentSchema, it);
      const schemaRef = useKeyword(gen, keyword, macroSchema);
      if (it.opts.validateSchema !== false)
        it.self.validateSchema(macroSchema, true);
      const valid = gen.name("valid");
      cxt.subschema({
        schema: macroSchema,
        schemaPath: codegen_1.nil,
        errSchemaPath: `${it.errSchemaPath}/${keyword}`,
        topSchemaRef: schemaRef,
        compositeRule: true
      }, valid);
      cxt.pass(valid, () => cxt.error(true));
    }
    exports2.macroKeywordCode = macroKeywordCode;
    function funcKeywordCode(cxt, def) {
      var _a;
      const { gen, keyword, schema, parentSchema, $data, it } = cxt;
      checkAsyncKeyword(it, def);
      const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;
      const validateRef = useKeyword(gen, keyword, validate);
      const valid = gen.let("valid");
      cxt.block$data(valid, validateKeyword);
      cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid);
      function validateKeyword() {
        if (def.errors === false) {
          assignValid();
          if (def.modifying)
            modifyData(cxt);
          reportErrs(() => cxt.error());
        } else {
          const ruleErrs = def.async ? validateAsync() : validateSync();
          if (def.modifying)
            modifyData(cxt);
          reportErrs(() => addErrs(cxt, ruleErrs));
        }
      }
      function validateAsync() {
        const ruleErrs = gen.let("ruleErrs", null);
        gen.try(() => assignValid((0, codegen_1._)`await `), (e) => gen.assign(valid, false).if((0, codegen_1._)`${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._)`${e}.errors`), () => gen.throw(e)));
        return ruleErrs;
      }
      function validateSync() {
        const validateErrs = (0, codegen_1._)`${validateRef}.errors`;
        gen.assign(validateErrs, null);
        assignValid(codegen_1.nil);
        return validateErrs;
      }
      function assignValid(_await = def.async ? (0, codegen_1._)`await ` : codegen_1.nil) {
        const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;
        const passSchema = !("compile" in def && !$data || def.schema === false);
        gen.assign(valid, (0, codegen_1._)`${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);
      }
      function reportErrs(errors) {
        var _a2;
        gen.if((0, codegen_1.not)((_a2 = def.valid) !== null && _a2 !== void 0 ? _a2 : valid), errors);
      }
    }
    exports2.funcKeywordCode = funcKeywordCode;
    function modifyData(cxt) {
      const { gen, data, it } = cxt;
      gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._)`${it.parentData}[${it.parentDataProperty}]`));
    }
    function addErrs(cxt, errs) {
      const { gen } = cxt;
      gen.if((0, codegen_1._)`Array.isArray(${errs})`, () => {
        gen.assign(names_1.default.vErrors, (0, codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`).assign(names_1.default.errors, (0, codegen_1._)`${names_1.default.vErrors}.length`);
        (0, errors_1.extendErrors)(cxt);
      }, () => cxt.error());
    }
    function checkAsyncKeyword({ schemaEnv }, def) {
      if (def.async && !schemaEnv.$async)
        throw new Error("async keyword in sync schema");
    }
    function useKeyword(gen, keyword, result) {
      if (result === void 0)
        throw new Error(`keyword "${keyword}" failed to compile`);
      return gen.scopeValue("keyword", typeof result == "function" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) });
    }
    function validSchemaType(schema, schemaType, allowUndefined = false) {
      return !schemaType.length || schemaType.some((st) => st === "array" ? Array.isArray(schema) : st === "object" ? schema && typeof schema == "object" && !Array.isArray(schema) : typeof schema == st || allowUndefined && typeof schema == "undefined");
    }
    exports2.validSchemaType = validSchemaType;
    function validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {
      if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {
        throw new Error("ajv implementation error");
      }
      const deps = def.dependencies;
      if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {
        throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`);
      }
      if (def.validateSchema) {
        const valid = def.validateSchema(schema[keyword]);
        if (!valid) {
          const msg = `keyword "${keyword}" value is invalid at path "${errSchemaPath}": ` + self.errorsText(def.validateSchema.errors);
          if (opts.validateSchema === "log")
            self.logger.error(msg);
          else
            throw new Error(msg);
        }
      }
    }
    exports2.validateKeywordUsage = validateKeywordUsage;
  }
});

// node_modules/ajv/dist/compile/validate/subschema.js
var require_subschema = __commonJS({
  "node_modules/ajv/dist/compile/validate/subschema.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.extendSubschemaMode = exports2.extendSubschemaData = exports2.getSubschema = void 0;
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    function getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {
      if (keyword !== void 0 && schema !== void 0) {
        throw new Error('both "keyword" and "schema" passed, only one allowed');
      }
      if (keyword !== void 0) {
        const sch = it.schema[keyword];
        return schemaProp === void 0 ? {
          schema: sch,
          schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,
          errSchemaPath: `${it.errSchemaPath}/${keyword}`
        } : {
          schema: sch[schemaProp],
          schemaPath: (0, codegen_1._)`${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,
          errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`
        };
      }
      if (schema !== void 0) {
        if (schemaPath === void 0 || errSchemaPath === void 0 || topSchemaRef === void 0) {
          throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');
        }
        return {
          schema,
          schemaPath,
          topSchemaRef,
          errSchemaPath
        };
      }
      throw new Error('either "keyword" or "schema" must be passed');
    }
    exports2.getSubschema = getSubschema;
    function extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {
      if (data !== void 0 && dataProp !== void 0) {
        throw new Error('both "data" and "dataProp" passed, only one allowed');
      }
      const { gen } = it;
      if (dataProp !== void 0) {
        const { errorPath, dataPathArr, opts } = it;
        const nextData = gen.let("data", (0, codegen_1._)`${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true);
        dataContextProps(nextData);
        subschema.errorPath = (0, codegen_1.str)`${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;
        subschema.parentDataProperty = (0, codegen_1._)`${dataProp}`;
        subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];
      }
      if (data !== void 0) {
        const nextData = data instanceof codegen_1.Name ? data : gen.let("data", data, true);
        dataContextProps(nextData);
        if (propertyName !== void 0)
          subschema.propertyName = propertyName;
      }
      if (dataTypes)
        subschema.dataTypes = dataTypes;
      function dataContextProps(_nextData) {
        subschema.data = _nextData;
        subschema.dataLevel = it.dataLevel + 1;
        subschema.dataTypes = [];
        it.definedProperties = /* @__PURE__ */ new Set();
        subschema.parentData = it.data;
        subschema.dataNames = [...it.dataNames, _nextData];
      }
    }
    exports2.extendSubschemaData = extendSubschemaData;
    function extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {
      if (compositeRule !== void 0)
        subschema.compositeRule = compositeRule;
      if (createErrors !== void 0)
        subschema.createErrors = createErrors;
      if (allErrors !== void 0)
        subschema.allErrors = allErrors;
      subschema.jtdDiscriminator = jtdDiscriminator;
      subschema.jtdMetadata = jtdMetadata;
    }
    exports2.extendSubschemaMode = extendSubschemaMode;
  }
});

// node_modules/fast-deep-equal/index.js
var require_fast_deep_equal = __commonJS({
  "node_modules/fast-deep-equal/index.js"(exports2, module2) {
    "use strict";
    module2.exports = function equal(a, b) {
      if (a === b) return true;
      if (a && b && typeof a == "object" && typeof b == "object") {
        if (a.constructor !== b.constructor) return false;
        var length, i, keys;
        if (Array.isArray(a)) {
          length = a.length;
          if (length != b.length) return false;
          for (i = length; i-- !== 0; )
            if (!equal(a[i], b[i])) return false;
          return true;
        }
        if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
        if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
        if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
        keys = Object.keys(a);
        length = keys.length;
        if (length !== Object.keys(b).length) return false;
        for (i = length; i-- !== 0; )
          if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
        for (i = length; i-- !== 0; ) {
          var key = keys[i];
          if (!equal(a[key], b[key])) return false;
        }
        return true;
      }
      return a !== a && b !== b;
    };
  }
});

// node_modules/json-schema-traverse/index.js
var require_json_schema_traverse = __commonJS({
  "node_modules/json-schema-traverse/index.js"(exports2, module2) {
    "use strict";
    var traverse = module2.exports = function(schema, opts, cb) {
      if (typeof opts == "function") {
        cb = opts;
        opts = {};
      }
      cb = opts.cb || cb;
      var pre = typeof cb == "function" ? cb : cb.pre || function() {
      };
      var post = cb.post || function() {
      };
      _traverse(opts, pre, post, schema, "", schema);
    };
    traverse.keywords = {
      additionalItems: true,
      items: true,
      contains: true,
      additionalProperties: true,
      propertyNames: true,
      not: true,
      if: true,
      then: true,
      else: true
    };
    traverse.arrayKeywords = {
      items: true,
      allOf: true,
      anyOf: true,
      oneOf: true
    };
    traverse.propsKeywords = {
      $defs: true,
      definitions: true,
      properties: true,
      patternProperties: true,
      dependencies: true
    };
    traverse.skipKeywords = {
      default: true,
      enum: true,
      const: true,
      required: true,
      maximum: true,
      minimum: true,
      exclusiveMaximum: true,
      exclusiveMinimum: true,
      multipleOf: true,
      maxLength: true,
      minLength: true,
      pattern: true,
      format: true,
      maxItems: true,
      minItems: true,
      uniqueItems: true,
      maxProperties: true,
      minProperties: true
    };
    function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
      if (schema && typeof schema == "object" && !Array.isArray(schema)) {
        pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
        for (var key in schema) {
          var sch = schema[key];
          if (Array.isArray(sch)) {
            if (key in traverse.arrayKeywords) {
              for (var i = 0; i < sch.length; i++)
                _traverse(opts, pre, post, sch[i], jsonPtr + "/" + key + "/" + i, rootSchema, jsonPtr, key, schema, i);
            }
          } else if (key in traverse.propsKeywords) {
            if (sch && typeof sch == "object") {
              for (var prop in sch)
                _traverse(opts, pre, post, sch[prop], jsonPtr + "/" + key + "/" + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);
            }
          } else if (key in traverse.keywords || opts.allKeys && !(key in traverse.skipKeywords)) {
            _traverse(opts, pre, post, sch, jsonPtr + "/" + key, rootSchema, jsonPtr, key, schema);
          }
        }
        post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
      }
    }
    function escapeJsonPtr(str) {
      return str.replace(/~/g, "~0").replace(/\//g, "~1");
    }
  }
});

// node_modules/ajv/dist/compile/resolve.js
var require_resolve = __commonJS({
  "node_modules/ajv/dist/compile/resolve.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.getSchemaRefs = exports2.resolveUrl = exports2.normalizeId = exports2._getFullPath = exports2.getFullPath = exports2.inlineRef = void 0;
    var util_1 = require_util();
    var equal = require_fast_deep_equal();
    var traverse = require_json_schema_traverse();
    var SIMPLE_INLINED = /* @__PURE__ */ new Set([
      "type",
      "format",
      "pattern",
      "maxLength",
      "minLength",
      "maxProperties",
      "minProperties",
      "maxItems",
      "minItems",
      "maximum",
      "minimum",
      "uniqueItems",
      "multipleOf",
      "required",
      "enum",
      "const"
    ]);
    function inlineRef(schema, limit = true) {
      if (typeof schema == "boolean")
        return true;
      if (limit === true)
        return !hasRef(schema);
      if (!limit)
        return false;
      return countKeys(schema) <= limit;
    }
    exports2.inlineRef = inlineRef;
    var REF_KEYWORDS = /* @__PURE__ */ new Set([
      "$ref",
      "$recursiveRef",
      "$recursiveAnchor",
      "$dynamicRef",
      "$dynamicAnchor"
    ]);
    function hasRef(schema) {
      for (const key in schema) {
        if (REF_KEYWORDS.has(key))
          return true;
        const sch = schema[key];
        if (Array.isArray(sch) && sch.some(hasRef))
          return true;
        if (typeof sch == "object" && hasRef(sch))
          return true;
      }
      return false;
    }
    function countKeys(schema) {
      let count = 0;
      for (const key in schema) {
        if (key === "$ref")
          return Infinity;
        count++;
        if (SIMPLE_INLINED.has(key))
          continue;
        if (typeof schema[key] == "object") {
          (0, util_1.eachItem)(schema[key], (sch) => count += countKeys(sch));
        }
        if (count === Infinity)
          return Infinity;
      }
      return count;
    }
    function getFullPath(resolver, id = "", normalize) {
      if (normalize !== false)
        id = normalizeId(id);
      const p = resolver.parse(id);
      return _getFullPath(resolver, p);
    }
    exports2.getFullPath = getFullPath;
    function _getFullPath(resolver, p) {
      const serialized = resolver.serialize(p);
      return serialized.split("#")[0] + "#";
    }
    exports2._getFullPath = _getFullPath;
    var TRAILING_SLASH_HASH = /#\/?$/;
    function normalizeId(id) {
      return id ? id.replace(TRAILING_SLASH_HASH, "") : "";
    }
    exports2.normalizeId = normalizeId;
    function resolveUrl(resolver, baseId, id) {
      id = normalizeId(id);
      return resolver.resolve(baseId, id);
    }
    exports2.resolveUrl = resolveUrl;
    var ANCHOR = /^[a-z_][-a-z0-9._]*$/i;
    function getSchemaRefs(schema, baseId) {
      if (typeof schema == "boolean")
        return {};
      const { schemaId, uriResolver } = this.opts;
      const schId = normalizeId(schema[schemaId] || baseId);
      const baseIds = { "": schId };
      const pathPrefix = getFullPath(uriResolver, schId, false);
      const localRefs = {};
      const schemaRefs = /* @__PURE__ */ new Set();
      traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {
        if (parentJsonPtr === void 0)
          return;
        const fullPath = pathPrefix + jsonPtr;
        let innerBaseId = baseIds[parentJsonPtr];
        if (typeof sch[schemaId] == "string")
          innerBaseId = addRef.call(this, sch[schemaId]);
        addAnchor.call(this, sch.$anchor);
        addAnchor.call(this, sch.$dynamicAnchor);
        baseIds[jsonPtr] = innerBaseId;
        function addRef(ref) {
          const _resolve = this.opts.uriResolver.resolve;
          ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref);
          if (schemaRefs.has(ref))
            throw ambiguos(ref);
          schemaRefs.add(ref);
          let schOrRef = this.refs[ref];
          if (typeof schOrRef == "string")
            schOrRef = this.refs[schOrRef];
          if (typeof schOrRef == "object") {
            checkAmbiguosRef(sch, schOrRef.schema, ref);
          } else if (ref !== normalizeId(fullPath)) {
            if (ref[0] === "#") {
              checkAmbiguosRef(sch, localRefs[ref], ref);
              localRefs[ref] = sch;
            } else {
              this.refs[ref] = fullPath;
            }
          }
          return ref;
        }
        function addAnchor(anchor) {
          if (typeof anchor == "string") {
            if (!ANCHOR.test(anchor))
              throw new Error(`invalid anchor "${anchor}"`);
            addRef.call(this, `#${anchor}`);
          }
        }
      });
      return localRefs;
      function checkAmbiguosRef(sch1, sch2, ref) {
        if (sch2 !== void 0 && !equal(sch1, sch2))
          throw ambiguos(ref);
      }
      function ambiguos(ref) {
        return new Error(`reference "${ref}" resolves to more than one schema`);
      }
    }
    exports2.getSchemaRefs = getSchemaRefs;
  }
});

// node_modules/ajv/dist/compile/validate/index.js
var require_validate = __commonJS({
  "node_modules/ajv/dist/compile/validate/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.getData = exports2.KeywordCxt = exports2.validateFunctionCode = void 0;
    var boolSchema_1 = require_boolSchema();
    var dataType_1 = require_dataType();
    var applicability_1 = require_applicability();
    var dataType_2 = require_dataType();
    var defaults_1 = require_defaults();
    var keyword_1 = require_keyword();
    var subschema_1 = require_subschema();
    var codegen_1 = require_codegen();
    var names_1 = require_names();
    var resolve_1 = require_resolve();
    var util_1 = require_util();
    var errors_1 = require_errors3();
    function validateFunctionCode(it) {
      if (isSchemaObj(it)) {
        checkKeywords(it);
        if (schemaCxtHasRules(it)) {
          topSchemaObjCode(it);
          return;
        }
      }
      validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it));
    }
    exports2.validateFunctionCode = validateFunctionCode;
    function validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) {
      if (opts.code.es5) {
        gen.func(validateName, (0, codegen_1._)`${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => {
          gen.code((0, codegen_1._)`"use strict"; ${funcSourceUrl(schema, opts)}`);
          destructureValCxtES5(gen, opts);
          gen.code(body);
        });
      } else {
        gen.func(validateName, (0, codegen_1._)`${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body));
      }
    }
    function destructureValCxt(opts) {
      return (0, codegen_1._)`{${names_1.default.instancePath}="", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._)`, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;
    }
    function destructureValCxtES5(gen, opts) {
      gen.if(names_1.default.valCxt, () => {
        gen.var(names_1.default.instancePath, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.instancePath}`);
        gen.var(names_1.default.parentData, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentData}`);
        gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);
        gen.var(names_1.default.rootData, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.rootData}`);
        if (opts.dynamicRef)
          gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);
      }, () => {
        gen.var(names_1.default.instancePath, (0, codegen_1._)`""`);
        gen.var(names_1.default.parentData, (0, codegen_1._)`undefined`);
        gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`undefined`);
        gen.var(names_1.default.rootData, names_1.default.data);
        if (opts.dynamicRef)
          gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`{}`);
      });
    }
    function topSchemaObjCode(it) {
      const { schema, opts, gen } = it;
      validateFunction(it, () => {
        if (opts.$comment && schema.$comment)
          commentKeyword(it);
        checkNoDefault(it);
        gen.let(names_1.default.vErrors, null);
        gen.let(names_1.default.errors, 0);
        if (opts.unevaluated)
          resetEvaluated(it);
        typeAndKeywords(it);
        returnResults(it);
      });
      return;
    }
    function resetEvaluated(it) {
      const { gen, validateName } = it;
      it.evaluated = gen.const("evaluated", (0, codegen_1._)`${validateName}.evaluated`);
      gen.if((0, codegen_1._)`${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._)`${it.evaluated}.props`, (0, codegen_1._)`undefined`));
      gen.if((0, codegen_1._)`${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._)`${it.evaluated}.items`, (0, codegen_1._)`undefined`));
    }
    function funcSourceUrl(schema, opts) {
      const schId = typeof schema == "object" && schema[opts.schemaId];
      return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._)`/*# sourceURL=${schId} */` : codegen_1.nil;
    }
    function subschemaCode(it, valid) {
      if (isSchemaObj(it)) {
        checkKeywords(it);
        if (schemaCxtHasRules(it)) {
          subSchemaObjCode(it, valid);
          return;
        }
      }
      (0, boolSchema_1.boolOrEmptySchema)(it, valid);
    }
    function schemaCxtHasRules({ schema, self }) {
      if (typeof schema == "boolean")
        return !schema;
      for (const key in schema)
        if (self.RULES.all[key])
          return true;
      return false;
    }
    function isSchemaObj(it) {
      return typeof it.schema != "boolean";
    }
    function subSchemaObjCode(it, valid) {
      const { schema, gen, opts } = it;
      if (opts.$comment && schema.$comment)
        commentKeyword(it);
      updateContext(it);
      checkAsyncSchema(it);
      const errsCount = gen.const("_errs", names_1.default.errors);
      typeAndKeywords(it, errsCount);
      gen.var(valid, (0, codegen_1._)`${errsCount} === ${names_1.default.errors}`);
    }
    function checkKeywords(it) {
      (0, util_1.checkUnknownRules)(it);
      checkRefsAndKeywords(it);
    }
    function typeAndKeywords(it, errsCount) {
      if (it.opts.jtd)
        return schemaKeywords(it, [], false, errsCount);
      const types = (0, dataType_1.getSchemaTypes)(it.schema);
      const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types);
      schemaKeywords(it, types, !checkedTypes, errsCount);
    }
    function checkRefsAndKeywords(it) {
      const { schema, errSchemaPath, opts, self } = it;
      if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) {
        self.logger.warn(`$ref: keywords ignored in schema at path "${errSchemaPath}"`);
      }
    }
    function checkNoDefault(it) {
      const { schema, opts } = it;
      if (schema.default !== void 0 && opts.useDefaults && opts.strictSchema) {
        (0, util_1.checkStrictMode)(it, "default is ignored in the schema root");
      }
    }
    function updateContext(it) {
      const schId = it.schema[it.opts.schemaId];
      if (schId)
        it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);
    }
    function checkAsyncSchema(it) {
      if (it.schema.$async && !it.schemaEnv.$async)
        throw new Error("async schema in sync schema");
    }
    function commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {
      const msg = schema.$comment;
      if (opts.$comment === true) {
        gen.code((0, codegen_1._)`${names_1.default.self}.logger.log(${msg})`);
      } else if (typeof opts.$comment == "function") {
        const schemaPath = (0, codegen_1.str)`${errSchemaPath}/$comment`;
        const rootName = gen.scopeValue("root", { ref: schemaEnv.root });
        gen.code((0, codegen_1._)`${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`);
      }
    }
    function returnResults(it) {
      const { gen, schemaEnv, validateName, ValidationError, opts } = it;
      if (schemaEnv.$async) {
        gen.if((0, codegen_1._)`${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._)`new ${ValidationError}(${names_1.default.vErrors})`));
      } else {
        gen.assign((0, codegen_1._)`${validateName}.errors`, names_1.default.vErrors);
        if (opts.unevaluated)
          assignEvaluated(it);
        gen.return((0, codegen_1._)`${names_1.default.errors} === 0`);
      }
    }
    function assignEvaluated({ gen, evaluated, props, items }) {
      if (props instanceof codegen_1.Name)
        gen.assign((0, codegen_1._)`${evaluated}.props`, props);
      if (items instanceof codegen_1.Name)
        gen.assign((0, codegen_1._)`${evaluated}.items`, items);
    }
    function schemaKeywords(it, types, typeErrors, errsCount) {
      const { gen, schema, data, allErrors, opts, self } = it;
      const { RULES } = self;
      if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) {
        gen.block(() => keywordCode(it, "$ref", RULES.all.$ref.definition));
        return;
      }
      if (!opts.jtd)
        checkStrictTypes(it, types);
      gen.block(() => {
        for (const group of RULES.rules)
          groupKeywords(group);
        groupKeywords(RULES.post);
      });
      function groupKeywords(group) {
        if (!(0, applicability_1.shouldUseGroup)(schema, group))
          return;
        if (group.type) {
          gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers));
          iterateKeywords(it, group);
          if (types.length === 1 && types[0] === group.type && typeErrors) {
            gen.else();
            (0, dataType_2.reportTypeError)(it);
          }
          gen.endIf();
        } else {
          iterateKeywords(it, group);
        }
        if (!allErrors)
          gen.if((0, codegen_1._)`${names_1.default.errors} === ${errsCount || 0}`);
      }
    }
    function iterateKeywords(it, group) {
      const { gen, schema, opts: { useDefaults } } = it;
      if (useDefaults)
        (0, defaults_1.assignDefaults)(it, group.type);
      gen.block(() => {
        for (const rule of group.rules) {
          if ((0, applicability_1.shouldUseRule)(schema, rule)) {
            keywordCode(it, rule.keyword, rule.definition, group.type);
          }
        }
      });
    }
    function checkStrictTypes(it, types) {
      if (it.schemaEnv.meta || !it.opts.strictTypes)
        return;
      checkContextTypes(it, types);
      if (!it.opts.allowUnionTypes)
        checkMultipleTypes(it, types);
      checkKeywordTypes(it, it.dataTypes);
    }
    function checkContextTypes(it, types) {
      if (!types.length)
        return;
      if (!it.dataTypes.length) {
        it.dataTypes = types;
        return;
      }
      types.forEach((t) => {
        if (!includesType(it.dataTypes, t)) {
          strictTypesError(it, `type "${t}" not allowed by context "${it.dataTypes.join(",")}"`);
        }
      });
      narrowSchemaTypes(it, types);
    }
    function checkMultipleTypes(it, ts) {
      if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) {
        strictTypesError(it, "use allowUnionTypes to allow union type keyword");
      }
    }
    function checkKeywordTypes(it, ts) {
      const rules = it.self.RULES.all;
      for (const keyword in rules) {
        const rule = rules[keyword];
        if (typeof rule == "object" && (0, applicability_1.shouldUseRule)(it.schema, rule)) {
          const { type } = rule.definition;
          if (type.length && !type.some((t) => hasApplicableType(ts, t))) {
            strictTypesError(it, `missing type "${type.join(",")}" for keyword "${keyword}"`);
          }
        }
      }
    }
    function hasApplicableType(schTs, kwdT) {
      return schTs.includes(kwdT) || kwdT === "number" && schTs.includes("integer");
    }
    function includesType(ts, t) {
      return ts.includes(t) || t === "integer" && ts.includes("number");
    }
    function narrowSchemaTypes(it, withTypes) {
      const ts = [];
      for (const t of it.dataTypes) {
        if (includesType(withTypes, t))
          ts.push(t);
        else if (withTypes.includes("integer") && t === "number")
          ts.push("integer");
      }
      it.dataTypes = ts;
    }
    function strictTypesError(it, msg) {
      const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;
      msg += ` at "${schemaPath}" (strictTypes)`;
      (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes);
    }
    var KeywordCxt = class {
      constructor(it, def, keyword) {
        (0, keyword_1.validateKeywordUsage)(it, def, keyword);
        this.gen = it.gen;
        this.allErrors = it.allErrors;
        this.keyword = keyword;
        this.data = it.data;
        this.schema = it.schema[keyword];
        this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;
        this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data);
        this.schemaType = def.schemaType;
        this.parentSchema = it.schema;
        this.params = {};
        this.it = it;
        this.def = def;
        if (this.$data) {
          this.schemaCode = it.gen.const("vSchema", getData(this.$data, it));
        } else {
          this.schemaCode = this.schemaValue;
          if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) {
            throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);
          }
        }
        if ("code" in def ? def.trackErrors : def.errors !== false) {
          this.errsCount = it.gen.const("_errs", names_1.default.errors);
        }
      }
      result(condition, successAction, failAction) {
        this.failResult((0, codegen_1.not)(condition), successAction, failAction);
      }
      failResult(condition, successAction, failAction) {
        this.gen.if(condition);
        if (failAction)
          failAction();
        else
          this.error();
        if (successAction) {
          this.gen.else();
          successAction();
          if (this.allErrors)
            this.gen.endIf();
        } else {
          if (this.allErrors)
            this.gen.endIf();
          else
            this.gen.else();
        }
      }
      pass(condition, failAction) {
        this.failResult((0, codegen_1.not)(condition), void 0, failAction);
      }
      fail(condition) {
        if (condition === void 0) {
          this.error();
          if (!this.allErrors)
            this.gen.if(false);
          return;
        }
        this.gen.if(condition);
        this.error();
        if (this.allErrors)
          this.gen.endIf();
        else
          this.gen.else();
      }
      fail$data(condition) {
        if (!this.$data)
          return this.fail(condition);
        const { schemaCode } = this;
        this.fail((0, codegen_1._)`${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`);
      }
      error(append, errorParams, errorPaths) {
        if (errorParams) {
          this.setParams(errorParams);
          this._error(append, errorPaths);
          this.setParams({});
          return;
        }
        this._error(append, errorPaths);
      }
      _error(append, errorPaths) {
        ;
        (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);
      }
      $dataError() {
        (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError);
      }
      reset() {
        if (this.errsCount === void 0)
          throw new Error('add "trackErrors" to keyword definition');
        (0, errors_1.resetErrorsCount)(this.gen, this.errsCount);
      }
      ok(cond) {
        if (!this.allErrors)
          this.gen.if(cond);
      }
      setParams(obj, assign) {
        if (assign)
          Object.assign(this.params, obj);
        else
          this.params = obj;
      }
      block$data(valid, codeBlock, $dataValid = codegen_1.nil) {
        this.gen.block(() => {
          this.check$data(valid, $dataValid);
          codeBlock();
        });
      }
      check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {
        if (!this.$data)
          return;
        const { gen, schemaCode, schemaType, def } = this;
        gen.if((0, codegen_1.or)((0, codegen_1._)`${schemaCode} === undefined`, $dataValid));
        if (valid !== codegen_1.nil)
          gen.assign(valid, true);
        if (schemaType.length || def.validateSchema) {
          gen.elseIf(this.invalid$data());
          this.$dataError();
          if (valid !== codegen_1.nil)
            gen.assign(valid, false);
        }
        gen.else();
      }
      invalid$data() {
        const { gen, schemaCode, schemaType, def, it } = this;
        return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema());
        function wrong$DataType() {
          if (schemaType.length) {
            if (!(schemaCode instanceof codegen_1.Name))
              throw new Error("ajv implementation error");
            const st = Array.isArray(schemaType) ? schemaType : [schemaType];
            return (0, codegen_1._)`${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;
          }
          return codegen_1.nil;
        }
        function invalid$DataSchema() {
          if (def.validateSchema) {
            const validateSchemaRef = gen.scopeValue("validate$data", { ref: def.validateSchema });
            return (0, codegen_1._)`!${validateSchemaRef}(${schemaCode})`;
          }
          return codegen_1.nil;
        }
      }
      subschema(appl, valid) {
        const subschema = (0, subschema_1.getSubschema)(this.it, appl);
        (0, subschema_1.extendSubschemaData)(subschema, this.it, appl);
        (0, subschema_1.extendSubschemaMode)(subschema, appl);
        const nextContext = { ...this.it, ...subschema, items: void 0, props: void 0 };
        subschemaCode(nextContext, valid);
        return nextContext;
      }
      mergeEvaluated(schemaCxt, toName) {
        const { it, gen } = this;
        if (!it.opts.unevaluated)
          return;
        if (it.props !== true && schemaCxt.props !== void 0) {
          it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);
        }
        if (it.items !== true && schemaCxt.items !== void 0) {
          it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);
        }
      }
      mergeValidEvaluated(schemaCxt, valid) {
        const { it, gen } = this;
        if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {
          gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));
          return true;
        }
      }
    };
    exports2.KeywordCxt = KeywordCxt;
    function keywordCode(it, keyword, def, ruleType) {
      const cxt = new KeywordCxt(it, def, keyword);
      if ("code" in def) {
        def.code(cxt, ruleType);
      } else if (cxt.$data && def.validate) {
        (0, keyword_1.funcKeywordCode)(cxt, def);
      } else if ("macro" in def) {
        (0, keyword_1.macroKeywordCode)(cxt, def);
      } else if (def.compile || def.validate) {
        (0, keyword_1.funcKeywordCode)(cxt, def);
      }
    }
    var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/;
    var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
    function getData($data, { dataLevel, dataNames, dataPathArr }) {
      let jsonPointer;
      let data;
      if ($data === "")
        return names_1.default.rootData;
      if ($data[0] === "/") {
        if (!JSON_POINTER.test($data))
          throw new Error(`Invalid JSON-pointer: ${$data}`);
        jsonPointer = $data;
        data = names_1.default.rootData;
      } else {
        const matches = RELATIVE_JSON_POINTER.exec($data);
        if (!matches)
          throw new Error(`Invalid JSON-pointer: ${$data}`);
        const up = +matches[1];
        jsonPointer = matches[2];
        if (jsonPointer === "#") {
          if (up >= dataLevel)
            throw new Error(errorMsg("property/index", up));
          return dataPathArr[dataLevel - up];
        }
        if (up > dataLevel)
          throw new Error(errorMsg("data", up));
        data = dataNames[dataLevel - up];
        if (!jsonPointer)
          return data;
      }
      let expr = data;
      const segments = jsonPointer.split("/");
      for (const segment of segments) {
        if (segment) {
          data = (0, codegen_1._)`${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`;
          expr = (0, codegen_1._)`${expr} && ${data}`;
        }
      }
      return expr;
      function errorMsg(pointerType, up) {
        return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;
      }
    }
    exports2.getData = getData;
  }
});

// node_modules/ajv/dist/runtime/validation_error.js
var require_validation_error = __commonJS({
  "node_modules/ajv/dist/runtime/validation_error.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var ValidationError = class extends Error {
      constructor(errors) {
        super("validation failed");
        this.errors = errors;
        this.ajv = this.validation = true;
      }
    };
    exports2.default = ValidationError;
  }
});

// node_modules/ajv/dist/compile/ref_error.js
var require_ref_error = __commonJS({
  "node_modules/ajv/dist/compile/ref_error.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var resolve_1 = require_resolve();
    var MissingRefError = class extends Error {
      constructor(resolver, baseId, ref, msg) {
        super(msg || `can't resolve reference ${ref} from id ${baseId}`);
        this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref);
        this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef));
      }
    };
    exports2.default = MissingRefError;
  }
});

// node_modules/ajv/dist/compile/index.js
var require_compile = __commonJS({
  "node_modules/ajv/dist/compile/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.resolveSchema = exports2.getCompilingSchema = exports2.resolveRef = exports2.compileSchema = exports2.SchemaEnv = void 0;
    var codegen_1 = require_codegen();
    var validation_error_1 = require_validation_error();
    var names_1 = require_names();
    var resolve_1 = require_resolve();
    var util_1 = require_util();
    var validate_1 = require_validate();
    var SchemaEnv = class {
      constructor(env) {
        var _a;
        this.refs = {};
        this.dynamicAnchors = {};
        let schema;
        if (typeof env.schema == "object")
          schema = env.schema;
        this.schema = env.schema;
        this.schemaId = env.schemaId;
        this.root = env.root || this;
        this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || "$id"]);
        this.schemaPath = env.schemaPath;
        this.localRefs = env.localRefs;
        this.meta = env.meta;
        this.$async = schema === null || schema === void 0 ? void 0 : schema.$async;
        this.refs = {};
      }
    };
    exports2.SchemaEnv = SchemaEnv;
    function compileSchema(sch) {
      const _sch = getCompilingSchema.call(this, sch);
      if (_sch)
        return _sch;
      const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId);
      const { es5, lines } = this.opts.code;
      const { ownProperties } = this.opts;
      const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties });
      let _ValidationError;
      if (sch.$async) {
        _ValidationError = gen.scopeValue("Error", {
          ref: validation_error_1.default,
          code: (0, codegen_1._)`require("ajv/dist/runtime/validation_error").default`
        });
      }
      const validateName = gen.scopeName("validate");
      sch.validateName = validateName;
      const schemaCxt = {
        gen,
        allErrors: this.opts.allErrors,
        data: names_1.default.data,
        parentData: names_1.default.parentData,
        parentDataProperty: names_1.default.parentDataProperty,
        dataNames: [names_1.default.data],
        dataPathArr: [codegen_1.nil],
        // TODO can its length be used as dataLevel if nil is removed?
        dataLevel: 0,
        dataTypes: [],
        definedProperties: /* @__PURE__ */ new Set(),
        topSchemaRef: gen.scopeValue("schema", this.opts.code.source === true ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) } : { ref: sch.schema }),
        validateName,
        ValidationError: _ValidationError,
        schema: sch.schema,
        schemaEnv: sch,
        rootId,
        baseId: sch.baseId || rootId,
        schemaPath: codegen_1.nil,
        errSchemaPath: sch.schemaPath || (this.opts.jtd ? "" : "#"),
        errorPath: (0, codegen_1._)`""`,
        opts: this.opts,
        self: this
      };
      let sourceCode;
      try {
        this._compilations.add(sch);
        (0, validate_1.validateFunctionCode)(schemaCxt);
        gen.optimize(this.opts.code.optimize);
        const validateCode = gen.toString();
        sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`;
        if (this.opts.code.process)
          sourceCode = this.opts.code.process(sourceCode, sch);
        const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode);
        const validate = makeValidate(this, this.scope.get());
        this.scope.value(validateName, { ref: validate });
        validate.errors = null;
        validate.schema = sch.schema;
        validate.schemaEnv = sch;
        if (sch.$async)
          validate.$async = true;
        if (this.opts.code.source === true) {
          validate.source = { validateName, validateCode, scopeValues: gen._values };
        }
        if (this.opts.unevaluated) {
          const { props, items } = schemaCxt;
          validate.evaluated = {
            props: props instanceof codegen_1.Name ? void 0 : props,
            items: items instanceof codegen_1.Name ? void 0 : items,
            dynamicProps: props instanceof codegen_1.Name,
            dynamicItems: items instanceof codegen_1.Name
          };
          if (validate.source)
            validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated);
        }
        sch.validate = validate;
        return sch;
      } catch (e) {
        delete sch.validate;
        delete sch.validateName;
        if (sourceCode)
          this.logger.error("Error compiling schema, function code:", sourceCode);
        throw e;
      } finally {
        this._compilations.delete(sch);
      }
    }
    exports2.compileSchema = compileSchema;
    function resolveRef(root, baseId, ref) {
      var _a;
      ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref);
      const schOrFunc = root.refs[ref];
      if (schOrFunc)
        return schOrFunc;
      let _sch = resolve.call(this, root, ref);
      if (_sch === void 0) {
        const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref];
        const { schemaId } = this.opts;
        if (schema)
          _sch = new SchemaEnv({ schema, schemaId, root, baseId });
      }
      if (_sch === void 0)
        return;
      return root.refs[ref] = inlineOrCompile.call(this, _sch);
    }
    exports2.resolveRef = resolveRef;
    function inlineOrCompile(sch) {
      if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs))
        return sch.schema;
      return sch.validate ? sch : compileSchema.call(this, sch);
    }
    function getCompilingSchema(schEnv) {
      for (const sch of this._compilations) {
        if (sameSchemaEnv(sch, schEnv))
          return sch;
      }
    }
    exports2.getCompilingSchema = getCompilingSchema;
    function sameSchemaEnv(s1, s2) {
      return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;
    }
    function resolve(root, ref) {
      let sch;
      while (typeof (sch = this.refs[ref]) == "string")
        ref = sch;
      return sch || this.schemas[ref] || resolveSchema.call(this, root, ref);
    }
    function resolveSchema(root, ref) {
      const p = this.opts.uriResolver.parse(ref);
      const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p);
      let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, void 0);
      if (Object.keys(root.schema).length > 0 && refPath === baseId) {
        return getJsonPointer.call(this, p, root);
      }
      const id = (0, resolve_1.normalizeId)(refPath);
      const schOrRef = this.refs[id] || this.schemas[id];
      if (typeof schOrRef == "string") {
        const sch = resolveSchema.call(this, root, schOrRef);
        if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== "object")
          return;
        return getJsonPointer.call(this, p, sch);
      }
      if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== "object")
        return;
      if (!schOrRef.validate)
        compileSchema.call(this, schOrRef);
      if (id === (0, resolve_1.normalizeId)(ref)) {
        const { schema } = schOrRef;
        const { schemaId } = this.opts;
        const schId = schema[schemaId];
        if (schId)
          baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);
        return new SchemaEnv({ schema, schemaId, root, baseId });
      }
      return getJsonPointer.call(this, p, schOrRef);
    }
    exports2.resolveSchema = resolveSchema;
    var PREVENT_SCOPE_CHANGE = /* @__PURE__ */ new Set([
      "properties",
      "patternProperties",
      "enum",
      "dependencies",
      "definitions"
    ]);
    function getJsonPointer(parsedRef, { baseId, schema, root }) {
      var _a;
      if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== "/")
        return;
      for (const part of parsedRef.fragment.slice(1).split("/")) {
        if (typeof schema === "boolean")
          return;
        const partSchema = schema[(0, util_1.unescapeFragment)(part)];
        if (partSchema === void 0)
          return;
        schema = partSchema;
        const schId = typeof schema === "object" && schema[this.opts.schemaId];
        if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {
          baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);
        }
      }
      let env;
      if (typeof schema != "boolean" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) {
        const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref);
        env = resolveSchema.call(this, root, $ref);
      }
      const { schemaId } = this.opts;
      env = env || new SchemaEnv({ schema, schemaId, root, baseId });
      if (env.schema !== env.root.schema)
        return env;
      return void 0;
    }
  }
});

// node_modules/ajv/dist/refs/data.json
var require_data = __commonJS({
  "node_modules/ajv/dist/refs/data.json"(exports2, module2) {
    module2.exports = {
      $id: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",
      description: "Meta-schema for $data reference (JSON AnySchema extension proposal)",
      type: "object",
      required: ["$data"],
      properties: {
        $data: {
          type: "string",
          anyOf: [{ format: "relative-json-pointer" }, { format: "json-pointer" }]
        }
      },
      additionalProperties: false
    };
  }
});

// node_modules/fast-uri/lib/utils.js
var require_utils = __commonJS({
  "node_modules/fast-uri/lib/utils.js"(exports2, module2) {
    "use strict";
    var isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu);
    var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);
    var isHexPair = RegExp.prototype.test.bind(/^[\da-f]{2}$/iu);
    var isUnreserved = RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu);
    var isPathCharacter = RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);
    function stringArrayToHexStripped(input) {
      let acc = "";
      let code = 0;
      let i = 0;
      for (i = 0; i < input.length; i++) {
        code = input[i].charCodeAt(0);
        if (code === 48) {
          continue;
        }
        if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) {
          return "";
        }
        acc += input[i];
        break;
      }
      for (i += 1; i < input.length; i++) {
        code = input[i].charCodeAt(0);
        if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) {
          return "";
        }
        acc += input[i];
      }
      return acc;
    }
    var nonSimpleDomain = RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);
    function consumeIsZone(buffer) {
      buffer.length = 0;
      return true;
    }
    function consumeHextets(buffer, address, output) {
      if (buffer.length) {
        const hex = stringArrayToHexStripped(buffer);
        if (hex !== "") {
          address.push(hex);
        } else {
          output.error = true;
          return false;
        }
        buffer.length = 0;
      }
      return true;
    }
    function getIPV6(input) {
      let tokenCount = 0;
      const output = { error: false, address: "", zone: "" };
      const address = [];
      const buffer = [];
      let endipv6Encountered = false;
      let endIpv6 = false;
      let consume = consumeHextets;
      for (let i = 0; i < input.length; i++) {
        const cursor = input[i];
        if (cursor === "[" || cursor === "]") {
          continue;
        }
        if (cursor === ":") {
          if (endipv6Encountered === true) {
            endIpv6 = true;
          }
          if (!consume(buffer, address, output)) {
            break;
          }
          if (++tokenCount > 7) {
            output.error = true;
            break;
          }
          if (i > 0 && input[i - 1] === ":") {
            endipv6Encountered = true;
          }
          address.push(":");
          continue;
        } else if (cursor === "%") {
          if (!consume(buffer, address, output)) {
            break;
          }
          consume = consumeIsZone;
        } else {
          buffer.push(cursor);
          continue;
        }
      }
      if (buffer.length) {
        if (consume === consumeIsZone) {
          output.zone = buffer.join("");
        } else if (endIpv6) {
          address.push(buffer.join(""));
        } else {
          address.push(stringArrayToHexStripped(buffer));
        }
      }
      output.address = address.join("");
      return output;
    }
    function normalizeIPv6(host) {
      if (findToken(host, ":") < 2) {
        return { host, isIPV6: false };
      }
      const ipv6 = getIPV6(host);
      if (!ipv6.error) {
        let newHost = ipv6.address;
        let escapedHost = ipv6.address;
        if (ipv6.zone) {
          newHost += "%" + ipv6.zone;
          escapedHost += "%25" + ipv6.zone;
        }
        return { host: newHost, isIPV6: true, escapedHost };
      } else {
        return { host, isIPV6: false };
      }
    }
    function findToken(str, token) {
      let ind = 0;
      for (let i = 0; i < str.length; i++) {
        if (str[i] === token) ind++;
      }
      return ind;
    }
    function removeDotSegments(path) {
      let input = path;
      const output = [];
      let nextSlash = -1;
      let len = 0;
      while (len = input.length) {
        if (len === 1) {
          if (input === ".") {
            break;
          } else if (input === "/") {
            output.push("/");
            break;
          } else {
            output.push(input);
            break;
          }
        } else if (len === 2) {
          if (input[0] === ".") {
            if (input[1] === ".") {
              break;
            } else if (input[1] === "/") {
              input = input.slice(2);
              continue;
            }
          } else if (input[0] === "/") {
            if (input[1] === "." || input[1] === "/") {
              output.push("/");
              break;
            }
          }
        } else if (len === 3) {
          if (input === "/..") {
            if (output.length !== 0) {
              output.pop();
            }
            output.push("/");
            break;
          }
        }
        if (input[0] === ".") {
          if (input[1] === ".") {
            if (input[2] === "/") {
              input = input.slice(3);
              continue;
            }
          } else if (input[1] === "/") {
            input = input.slice(2);
            continue;
          }
        } else if (input[0] === "/") {
          if (input[1] === ".") {
            if (input[2] === "/") {
              input = input.slice(2);
              continue;
            } else if (input[2] === ".") {
              if (input[3] === "/") {
                input = input.slice(3);
                if (output.length !== 0) {
                  output.pop();
                }
                continue;
              }
            }
          }
        }
        if ((nextSlash = input.indexOf("/", 1)) === -1) {
          output.push(input);
          break;
        } else {
          output.push(input.slice(0, nextSlash));
          input = input.slice(nextSlash);
        }
      }
      return output.join("");
    }
    var HOST_DELIMS = { "@": "%40", "/": "%2F", "?": "%3F", "#": "%23", ":": "%3A" };
    var HOST_DELIM_RE = /[@/?#:]/g;
    var HOST_DELIM_NO_COLON_RE = /[@/?#]/g;
    function reescapeHostDelimiters(host, isIP) {
      const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE;
      re.lastIndex = 0;
      return host.replace(re, (ch) => HOST_DELIMS[ch]);
    }
    function normalizePercentEncoding(input, decodeUnreserved = false) {
      if (input.indexOf("%") === -1) {
        return input;
      }
      let output = "";
      for (let i = 0; i < input.length; i++) {
        if (input[i] === "%" && i + 2 < input.length) {
          const hex = input.slice(i + 1, i + 3);
          if (isHexPair(hex)) {
            const normalizedHex = hex.toUpperCase();
            const decoded = String.fromCharCode(parseInt(normalizedHex, 16));
            if (decodeUnreserved && isUnreserved(decoded)) {
              output += decoded;
            } else {
              output += "%" + normalizedHex;
            }
            i += 2;
            continue;
          }
        }
        output += input[i];
      }
      return output;
    }
    function normalizePathEncoding(input) {
      let output = "";
      for (let i = 0; i < input.length; i++) {
        if (input[i] === "%" && i + 2 < input.length) {
          const hex = input.slice(i + 1, i + 3);
          if (isHexPair(hex)) {
            const normalizedHex = hex.toUpperCase();
            const decoded = String.fromCharCode(parseInt(normalizedHex, 16));
            if (decoded !== "." && isUnreserved(decoded)) {
              output += decoded;
            } else {
              output += "%" + normalizedHex;
            }
            i += 2;
            continue;
          }
        }
        if (isPathCharacter(input[i])) {
          output += input[i];
        } else {
          output += escape(input[i]);
        }
      }
      return output;
    }
    function escapePreservingEscapes(input) {
      let output = "";
      for (let i = 0; i < input.length; i++) {
        if (input[i] === "%" && i + 2 < input.length) {
          const hex = input.slice(i + 1, i + 3);
          if (isHexPair(hex)) {
            output += "%" + hex.toUpperCase();
            i += 2;
            continue;
          }
        }
        output += escape(input[i]);
      }
      return output;
    }
    function recomposeAuthority(component) {
      const uriTokens = [];
      if (component.userinfo !== void 0) {
        uriTokens.push(component.userinfo);
        uriTokens.push("@");
      }
      if (component.host !== void 0) {
        let host = unescape(component.host);
        if (!isIPv4(host)) {
          const ipV6res = normalizeIPv6(host);
          if (ipV6res.isIPV6 === true) {
            host = `[${ipV6res.escapedHost}]`;
          } else {
            host = reescapeHostDelimiters(host, false);
          }
        }
        uriTokens.push(host);
      }
      if (typeof component.port === "number" || typeof component.port === "string") {
        uriTokens.push(":");
        uriTokens.push(String(component.port));
      }
      return uriTokens.length ? uriTokens.join("") : void 0;
    }
    module2.exports = {
      nonSimpleDomain,
      recomposeAuthority,
      reescapeHostDelimiters,
      normalizePercentEncoding,
      normalizePathEncoding,
      escapePreservingEscapes,
      removeDotSegments,
      isIPv4,
      isUUID,
      normalizeIPv6,
      stringArrayToHexStripped
    };
  }
});

// node_modules/fast-uri/lib/schemes.js
var require_schemes = __commonJS({
  "node_modules/fast-uri/lib/schemes.js"(exports2, module2) {
    "use strict";
    var { isUUID } = require_utils();
    var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;
    var supportedSchemeNames = (
      /** @type {const} */
      [
        "http",
        "https",
        "ws",
        "wss",
        "urn",
        "urn:uuid"
      ]
    );
    function isValidSchemeName(name) {
      return supportedSchemeNames.indexOf(
        /** @type {*} */
        name
      ) !== -1;
    }
    function wsIsSecure(wsComponent) {
      if (wsComponent.secure === true) {
        return true;
      } else if (wsComponent.secure === false) {
        return false;
      } else if (wsComponent.scheme) {
        return wsComponent.scheme.length === 3 && (wsComponent.scheme[0] === "w" || wsComponent.scheme[0] === "W") && (wsComponent.scheme[1] === "s" || wsComponent.scheme[1] === "S") && (wsComponent.scheme[2] === "s" || wsComponent.scheme[2] === "S");
      } else {
        return false;
      }
    }
    function httpParse(component) {
      if (!component.host) {
        component.error = component.error || "HTTP URIs must have a host.";
      }
      return component;
    }
    function httpSerialize(component) {
      const secure = String(component.scheme).toLowerCase() === "https";
      if (component.port === (secure ? 443 : 80) || component.port === "") {
        component.port = void 0;
      }
      if (!component.path) {
        component.path = "/";
      }
      return component;
    }
    function wsParse(wsComponent) {
      wsComponent.secure = wsIsSecure(wsComponent);
      wsComponent.resourceName = (wsComponent.path || "/") + (wsComponent.query ? "?" + wsComponent.query : "");
      wsComponent.path = void 0;
      wsComponent.query = void 0;
      return wsComponent;
    }
    function wsSerialize(wsComponent) {
      if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === "") {
        wsComponent.port = void 0;
      }
      if (typeof wsComponent.secure === "boolean") {
        wsComponent.scheme = wsComponent.secure ? "wss" : "ws";
        wsComponent.secure = void 0;
      }
      if (wsComponent.resourceName) {
        const [path, query] = wsComponent.resourceName.split("?");
        wsComponent.path = path && path !== "/" ? path : void 0;
        wsComponent.query = query;
        wsComponent.resourceName = void 0;
      }
      wsComponent.fragment = void 0;
      return wsComponent;
    }
    function urnParse(urnComponent, options) {
      if (!urnComponent.path) {
        urnComponent.error = "URN can not be parsed";
        return urnComponent;
      }
      const matches = urnComponent.path.match(URN_REG);
      if (matches) {
        const scheme = options.scheme || urnComponent.scheme || "urn";
        urnComponent.nid = matches[1].toLowerCase();
        urnComponent.nss = matches[2];
        const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`;
        const schemeHandler = getSchemeHandler(urnScheme);
        urnComponent.path = void 0;
        if (schemeHandler) {
          urnComponent = schemeHandler.parse(urnComponent, options);
        }
      } else {
        urnComponent.error = urnComponent.error || "URN can not be parsed.";
      }
      return urnComponent;
    }
    function urnSerialize(urnComponent, options) {
      if (urnComponent.nid === void 0) {
        throw new Error("URN without nid cannot be serialized");
      }
      const scheme = options.scheme || urnComponent.scheme || "urn";
      const nid = urnComponent.nid.toLowerCase();
      const urnScheme = `${scheme}:${options.nid || nid}`;
      const schemeHandler = getSchemeHandler(urnScheme);
      if (schemeHandler) {
        urnComponent = schemeHandler.serialize(urnComponent, options);
      }
      const uriComponent = urnComponent;
      const nss = urnComponent.nss;
      uriComponent.path = `${nid || options.nid}:${nss}`;
      options.skipEscape = true;
      return uriComponent;
    }
    function urnuuidParse(urnComponent, options) {
      const uuidComponent = urnComponent;
      uuidComponent.uuid = uuidComponent.nss;
      uuidComponent.nss = void 0;
      if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {
        uuidComponent.error = uuidComponent.error || "UUID is not valid.";
      }
      return uuidComponent;
    }
    function urnuuidSerialize(uuidComponent) {
      const urnComponent = uuidComponent;
      urnComponent.nss = (uuidComponent.uuid || "").toLowerCase();
      return urnComponent;
    }
    var http = (
      /** @type {SchemeHandler} */
      {
        scheme: "http",
        domainHost: true,
        parse: httpParse,
        serialize: httpSerialize
      }
    );
    var https = (
      /** @type {SchemeHandler} */
      {
        scheme: "https",
        domainHost: http.domainHost,
        parse: httpParse,
        serialize: httpSerialize
      }
    );
    var ws = (
      /** @type {SchemeHandler} */
      {
        scheme: "ws",
        domainHost: true,
        parse: wsParse,
        serialize: wsSerialize
      }
    );
    var wss = (
      /** @type {SchemeHandler} */
      {
        scheme: "wss",
        domainHost: ws.domainHost,
        parse: ws.parse,
        serialize: ws.serialize
      }
    );
    var urn = (
      /** @type {SchemeHandler} */
      {
        scheme: "urn",
        parse: urnParse,
        serialize: urnSerialize,
        skipNormalize: true
      }
    );
    var urnuuid = (
      /** @type {SchemeHandler} */
      {
        scheme: "urn:uuid",
        parse: urnuuidParse,
        serialize: urnuuidSerialize,
        skipNormalize: true
      }
    );
    var SCHEMES = (
      /** @type {Record<SchemeName, SchemeHandler>} */
      {
        http,
        https,
        ws,
        wss,
        urn,
        "urn:uuid": urnuuid
      }
    );
    Object.setPrototypeOf(SCHEMES, null);
    function getSchemeHandler(scheme) {
      return scheme && (SCHEMES[
        /** @type {SchemeName} */
        scheme
      ] || SCHEMES[
        /** @type {SchemeName} */
        scheme.toLowerCase()
      ]) || void 0;
    }
    module2.exports = {
      wsIsSecure,
      SCHEMES,
      isValidSchemeName,
      getSchemeHandler
    };
  }
});

// node_modules/fast-uri/index.js
var require_fast_uri = __commonJS({
  "node_modules/fast-uri/index.js"(exports2, module2) {
    "use strict";
    var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require_utils();
    var { SCHEMES, getSchemeHandler } = require_schemes();
    function normalize(uri, options) {
      if (typeof uri === "string") {
        uri = /** @type {T} */
        normalizeString(uri, options);
      } else if (typeof uri === "object") {
        uri = /** @type {T} */
        parse(serialize(uri, options), options);
      }
      return uri;
    }
    function resolve(baseURI, relativeURI, options) {
      const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
      const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true);
      schemelessOptions.skipEscape = true;
      return serialize(resolved, schemelessOptions);
    }
    function resolveComponent(base, relative, options, skipNormalization) {
      const target = {};
      if (!skipNormalization) {
        base = parse(serialize(base, options), options);
        relative = parse(serialize(relative, options), options);
      }
      options = options || {};
      if (!options.tolerant && relative.scheme) {
        target.scheme = relative.scheme;
        target.userinfo = relative.userinfo;
        target.host = relative.host;
        target.port = relative.port;
        target.path = removeDotSegments(relative.path || "");
        target.query = relative.query;
      } else {
        if (relative.userinfo !== void 0 || relative.host !== void 0 || relative.port !== void 0) {
          target.userinfo = relative.userinfo;
          target.host = relative.host;
          target.port = relative.port;
          target.path = removeDotSegments(relative.path || "");
          target.query = relative.query;
        } else {
          if (!relative.path) {
            target.path = base.path;
            if (relative.query !== void 0) {
              target.query = relative.query;
            } else {
              target.query = base.query;
            }
          } else {
            if (relative.path[0] === "/") {
              target.path = removeDotSegments(relative.path);
            } else {
              if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) {
                target.path = "/" + relative.path;
              } else if (!base.path) {
                target.path = relative.path;
              } else {
                target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path;
              }
              target.path = removeDotSegments(target.path);
            }
            target.query = relative.query;
          }
          target.userinfo = base.userinfo;
          target.host = base.host;
          target.port = base.port;
        }
        target.scheme = base.scheme;
      }
      target.fragment = relative.fragment;
      return target;
    }
    function equal(uriA, uriB, options) {
      const normalizedA = normalizeComparableURI(uriA, options);
      const normalizedB = normalizeComparableURI(uriB, options);
      return normalizedA !== void 0 && normalizedB !== void 0 && normalizedA.toLowerCase() === normalizedB.toLowerCase();
    }
    function serialize(cmpts, opts) {
      const component = {
        host: cmpts.host,
        scheme: cmpts.scheme,
        userinfo: cmpts.userinfo,
        port: cmpts.port,
        path: cmpts.path,
        query: cmpts.query,
        nid: cmpts.nid,
        nss: cmpts.nss,
        uuid: cmpts.uuid,
        fragment: cmpts.fragment,
        reference: cmpts.reference,
        resourceName: cmpts.resourceName,
        secure: cmpts.secure,
        error: ""
      };
      const options = Object.assign({}, opts);
      const uriTokens = [];
      const schemeHandler = getSchemeHandler(options.scheme || component.scheme);
      if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options);
      if (component.path !== void 0) {
        if (!options.skipEscape) {
          component.path = escapePreservingEscapes(component.path);
          if (component.scheme !== void 0) {
            component.path = component.path.split("%3A").join(":");
          }
        } else {
          component.path = normalizePercentEncoding(component.path);
        }
      }
      if (options.reference !== "suffix" && component.scheme) {
        uriTokens.push(component.scheme, ":");
      }
      const authority = recomposeAuthority(component);
      if (authority !== void 0) {
        if (options.reference !== "suffix") {
          uriTokens.push("//");
        }
        uriTokens.push(authority);
        if (component.path && component.path[0] !== "/") {
          uriTokens.push("/");
        }
      }
      if (component.path !== void 0) {
        let s = component.path;
        if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {
          s = removeDotSegments(s);
        }
        if (authority === void 0 && s[0] === "/" && s[1] === "/") {
          s = "/%2F" + s.slice(2);
        }
        uriTokens.push(s);
      }
      if (component.query !== void 0) {
        uriTokens.push("?", component.query);
      }
      if (component.fragment !== void 0) {
        uriTokens.push("#", component.fragment);
      }
      return uriTokens.join("");
    }
    var URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;
    function getParseError(parsed, matches) {
      if (matches[2] !== void 0 && parsed.path && parsed.path[0] !== "/") {
        return 'URI path must start with "/" when authority is present.';
      }
      if (typeof parsed.port === "number" && (parsed.port < 0 || parsed.port > 65535)) {
        return "URI port is malformed.";
      }
      return void 0;
    }
    function parseWithStatus(uri, opts) {
      const options = Object.assign({}, opts);
      const parsed = {
        scheme: void 0,
        userinfo: void 0,
        host: "",
        port: void 0,
        path: "",
        query: void 0,
        fragment: void 0
      };
      let malformedAuthorityOrPort = false;
      let isIP = false;
      if (options.reference === "suffix") {
        if (options.scheme) {
          uri = options.scheme + ":" + uri;
        } else {
          uri = "//" + uri;
        }
      }
      const matches = uri.match(URI_PARSE);
      if (matches) {
        parsed.scheme = matches[1];
        parsed.userinfo = matches[3];
        parsed.host = matches[4];
        parsed.port = parseInt(matches[5], 10);
        parsed.path = matches[6] || "";
        parsed.query = matches[7];
        parsed.fragment = matches[8];
        if (isNaN(parsed.port)) {
          parsed.port = matches[5];
        }
        const parseError = getParseError(parsed, matches);
        if (parseError !== void 0) {
          parsed.error = parsed.error || parseError;
          malformedAuthorityOrPort = true;
        }
        if (parsed.host) {
          const ipv4result = isIPv4(parsed.host);
          if (ipv4result === false) {
            const ipv6result = normalizeIPv6(parsed.host);
            parsed.host = ipv6result.host.toLowerCase();
            isIP = ipv6result.isIPV6;
          } else {
            isIP = true;
          }
        }
        if (parsed.scheme === void 0 && parsed.userinfo === void 0 && parsed.host === void 0 && parsed.port === void 0 && parsed.query === void 0 && !parsed.path) {
          parsed.reference = "same-document";
        } else if (parsed.scheme === void 0) {
          parsed.reference = "relative";
        } else if (parsed.fragment === void 0) {
          parsed.reference = "absolute";
        } else {
          parsed.reference = "uri";
        }
        if (options.reference && options.reference !== "suffix" && options.reference !== parsed.reference) {
          parsed.error = parsed.error || "URI is not a " + options.reference + " reference.";
        }
        const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme);
        if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {
          if (parsed.host && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP === false && nonSimpleDomain(parsed.host)) {
            try {
              parsed.host = URL.domainToASCII(parsed.host.toLowerCase());
            } catch (e) {
              parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e;
            }
          }
        }
        if (!schemeHandler || schemeHandler && !schemeHandler.skipNormalize) {
          if (uri.indexOf("%") !== -1) {
            if (parsed.scheme !== void 0) {
              parsed.scheme = unescape(parsed.scheme);
            }
            if (parsed.host !== void 0) {
              parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP);
            }
          }
          if (parsed.path) {
            parsed.path = normalizePathEncoding(parsed.path);
          }
          if (parsed.fragment) {
            try {
              parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment));
            } catch {
              parsed.error = parsed.error || "URI malformed";
            }
          }
        }
        if (schemeHandler && schemeHandler.parse) {
          schemeHandler.parse(parsed, options);
        }
      } else {
        parsed.error = parsed.error || "URI can not be parsed.";
      }
      return { parsed, malformedAuthorityOrPort };
    }
    function parse(uri, opts) {
      return parseWithStatus(uri, opts).parsed;
    }
    function normalizeString(uri, opts) {
      return normalizeStringWithStatus(uri, opts).normalized;
    }
    function normalizeStringWithStatus(uri, opts) {
      const { parsed, malformedAuthorityOrPort } = parseWithStatus(uri, opts);
      return {
        normalized: malformedAuthorityOrPort ? uri : serialize(parsed, opts),
        malformedAuthorityOrPort
      };
    }
    function normalizeComparableURI(uri, opts) {
      if (typeof uri === "string") {
        const { normalized, malformedAuthorityOrPort } = normalizeStringWithStatus(uri, opts);
        return malformedAuthorityOrPort ? void 0 : normalized;
      }
      if (typeof uri === "object") {
        return serialize(uri, opts);
      }
    }
    var fastUri = {
      SCHEMES,
      normalize,
      resolve,
      resolveComponent,
      equal,
      serialize,
      parse
    };
    module2.exports = fastUri;
    module2.exports.default = fastUri;
    module2.exports.fastUri = fastUri;
  }
});

// node_modules/ajv/dist/runtime/uri.js
var require_uri = __commonJS({
  "node_modules/ajv/dist/runtime/uri.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var uri = require_fast_uri();
    uri.code = 'require("ajv/dist/runtime/uri").default';
    exports2.default = uri;
  }
});

// node_modules/ajv/dist/core.js
var require_core2 = __commonJS({
  "node_modules/ajv/dist/core.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.CodeGen = exports2.Name = exports2.nil = exports2.stringify = exports2.str = exports2._ = exports2.KeywordCxt = void 0;
    var validate_1 = require_validate();
    Object.defineProperty(exports2, "KeywordCxt", { enumerable: true, get: function() {
      return validate_1.KeywordCxt;
    } });
    var codegen_1 = require_codegen();
    Object.defineProperty(exports2, "_", { enumerable: true, get: function() {
      return codegen_1._;
    } });
    Object.defineProperty(exports2, "str", { enumerable: true, get: function() {
      return codegen_1.str;
    } });
    Object.defineProperty(exports2, "stringify", { enumerable: true, get: function() {
      return codegen_1.stringify;
    } });
    Object.defineProperty(exports2, "nil", { enumerable: true, get: function() {
      return codegen_1.nil;
    } });
    Object.defineProperty(exports2, "Name", { enumerable: true, get: function() {
      return codegen_1.Name;
    } });
    Object.defineProperty(exports2, "CodeGen", { enumerable: true, get: function() {
      return codegen_1.CodeGen;
    } });
    var validation_error_1 = require_validation_error();
    var ref_error_1 = require_ref_error();
    var rules_1 = require_rules();
    var compile_1 = require_compile();
    var codegen_2 = require_codegen();
    var resolve_1 = require_resolve();
    var dataType_1 = require_dataType();
    var util_1 = require_util();
    var $dataRefSchema = require_data();
    var uri_1 = require_uri();
    var defaultRegExp = (str, flags) => new RegExp(str, flags);
    defaultRegExp.code = "new RegExp";
    var META_IGNORE_OPTIONS = ["removeAdditional", "useDefaults", "coerceTypes"];
    var EXT_SCOPE_NAMES = /* @__PURE__ */ new Set([
      "validate",
      "serialize",
      "parse",
      "wrapper",
      "root",
      "schema",
      "keyword",
      "pattern",
      "formats",
      "validate$data",
      "func",
      "obj",
      "Error"
    ]);
    var removedOptions = {
      errorDataPath: "",
      format: "`validateFormats: false` can be used instead.",
      nullable: '"nullable" keyword is supported by default.',
      jsonPointers: "Deprecated jsPropertySyntax can be used instead.",
      extendRefs: "Deprecated ignoreKeywordsWithRef can be used instead.",
      missingRefs: "Pass empty schema with $id that should be ignored to ajv.addSchema.",
      processCode: "Use option `code: {process: (code, schemaEnv: object) => string}`",
      sourceCode: "Use option `code: {source: true}`",
      strictDefaults: "It is default now, see option `strict`.",
      strictKeywords: "It is default now, see option `strict`.",
      uniqueItems: '"uniqueItems" keyword is always validated.',
      unknownFormats: "Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",
      cache: "Map is used as cache, schema object as key.",
      serialize: "Map is used as cache, schema object as key.",
      ajvErrors: "It is default now."
    };
    var deprecatedOptions = {
      ignoreKeywordsWithRef: "",
      jsPropertySyntax: "",
      unicode: '"minLength"/"maxLength" account for unicode characters by default.'
    };
    var MAX_EXPRESSION = 200;
    function requiredOptions(o) {
      var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
      const s = o.strict;
      const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize;
      const optimize = _optz === true || _optz === void 0 ? 1 : _optz || 0;
      const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp;
      const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default;
      return {
        strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true,
        strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true,
        strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : "log",
        strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : "log",
        strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false,
        code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp },
        loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION,
        loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION,
        meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true,
        messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true,
        inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true,
        schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : "$id",
        addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true,
        validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true,
        validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true,
        unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true,
        int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true,
        uriResolver
      };
    }
    var Ajv2 = class {
      constructor(opts = {}) {
        this.schemas = {};
        this.refs = {};
        this.formats = /* @__PURE__ */ Object.create(null);
        this._compilations = /* @__PURE__ */ new Set();
        this._loading = {};
        this._cache = /* @__PURE__ */ new Map();
        opts = this.opts = { ...opts, ...requiredOptions(opts) };
        const { es5, lines } = this.opts.code;
        this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines });
        this.logger = getLogger(opts.logger);
        const formatOpt = opts.validateFormats;
        opts.validateFormats = false;
        this.RULES = (0, rules_1.getRules)();
        checkOptions.call(this, removedOptions, opts, "NOT SUPPORTED");
        checkOptions.call(this, deprecatedOptions, opts, "DEPRECATED", "warn");
        this._metaOpts = getMetaSchemaOptions.call(this);
        if (opts.formats)
          addInitialFormats.call(this);
        this._addVocabularies();
        this._addDefaultMetaSchema();
        if (opts.keywords)
          addInitialKeywords.call(this, opts.keywords);
        if (typeof opts.meta == "object")
          this.addMetaSchema(opts.meta);
        addInitialSchemas.call(this);
        opts.validateFormats = formatOpt;
      }
      _addVocabularies() {
        this.addKeyword("$async");
      }
      _addDefaultMetaSchema() {
        const { $data, meta, schemaId } = this.opts;
        let _dataRefSchema = $dataRefSchema;
        if (schemaId === "id") {
          _dataRefSchema = { ...$dataRefSchema };
          _dataRefSchema.id = _dataRefSchema.$id;
          delete _dataRefSchema.$id;
        }
        if (meta && $data)
          this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false);
      }
      defaultMeta() {
        const { meta, schemaId } = this.opts;
        return this.opts.defaultMeta = typeof meta == "object" ? meta[schemaId] || meta : void 0;
      }
      validate(schemaKeyRef, data) {
        let v;
        if (typeof schemaKeyRef == "string") {
          v = this.getSchema(schemaKeyRef);
          if (!v)
            throw new Error(`no schema with key or ref "${schemaKeyRef}"`);
        } else {
          v = this.compile(schemaKeyRef);
        }
        const valid = v(data);
        if (!("$async" in v))
          this.errors = v.errors;
        return valid;
      }
      compile(schema, _meta) {
        const sch = this._addSchema(schema, _meta);
        return sch.validate || this._compileSchemaEnv(sch);
      }
      compileAsync(schema, meta) {
        if (typeof this.opts.loadSchema != "function") {
          throw new Error("options.loadSchema should be a function");
        }
        const { loadSchema } = this.opts;
        return runCompileAsync.call(this, schema, meta);
        async function runCompileAsync(_schema, _meta) {
          await loadMetaSchema.call(this, _schema.$schema);
          const sch = this._addSchema(_schema, _meta);
          return sch.validate || _compileAsync.call(this, sch);
        }
        async function loadMetaSchema($ref) {
          if ($ref && !this.getSchema($ref)) {
            await runCompileAsync.call(this, { $ref }, true);
          }
        }
        async function _compileAsync(sch) {
          try {
            return this._compileSchemaEnv(sch);
          } catch (e) {
            if (!(e instanceof ref_error_1.default))
              throw e;
            checkLoaded.call(this, e);
            await loadMissingSchema.call(this, e.missingSchema);
            return _compileAsync.call(this, sch);
          }
        }
        function checkLoaded({ missingSchema: ref, missingRef }) {
          if (this.refs[ref]) {
            throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`);
          }
        }
        async function loadMissingSchema(ref) {
          const _schema = await _loadSchema.call(this, ref);
          if (!this.refs[ref])
            await loadMetaSchema.call(this, _schema.$schema);
          if (!this.refs[ref])
            this.addSchema(_schema, ref, meta);
        }
        async function _loadSchema(ref) {
          const p = this._loading[ref];
          if (p)
            return p;
          try {
            return await (this._loading[ref] = loadSchema(ref));
          } finally {
            delete this._loading[ref];
          }
        }
      }
      // Adds schema to the instance
      addSchema(schema, key, _meta, _validateSchema = this.opts.validateSchema) {
        if (Array.isArray(schema)) {
          for (const sch of schema)
            this.addSchema(sch, void 0, _meta, _validateSchema);
          return this;
        }
        let id;
        if (typeof schema === "object") {
          const { schemaId } = this.opts;
          id = schema[schemaId];
          if (id !== void 0 && typeof id != "string") {
            throw new Error(`schema ${schemaId} must be string`);
          }
        }
        key = (0, resolve_1.normalizeId)(key || id);
        this._checkUnique(key);
        this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true);
        return this;
      }
      // Add schema that will be used to validate other schemas
      // options in META_IGNORE_OPTIONS are alway set to false
      addMetaSchema(schema, key, _validateSchema = this.opts.validateSchema) {
        this.addSchema(schema, key, true, _validateSchema);
        return this;
      }
      //  Validate schema against its meta-schema
      validateSchema(schema, throwOrLogError) {
        if (typeof schema == "boolean")
          return true;
        let $schema;
        $schema = schema.$schema;
        if ($schema !== void 0 && typeof $schema != "string") {
          throw new Error("$schema must be a string");
        }
        $schema = $schema || this.opts.defaultMeta || this.defaultMeta();
        if (!$schema) {
          this.logger.warn("meta-schema not available");
          this.errors = null;
          return true;
        }
        const valid = this.validate($schema, schema);
        if (!valid && throwOrLogError) {
          const message = "schema is invalid: " + this.errorsText();
          if (this.opts.validateSchema === "log")
            this.logger.error(message);
          else
            throw new Error(message);
        }
        return valid;
      }
      // Get compiled schema by `key` or `ref`.
      // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)
      getSchema(keyRef) {
        let sch;
        while (typeof (sch = getSchEnv.call(this, keyRef)) == "string")
          keyRef = sch;
        if (sch === void 0) {
          const { schemaId } = this.opts;
          const root = new compile_1.SchemaEnv({ schema: {}, schemaId });
          sch = compile_1.resolveSchema.call(this, root, keyRef);
          if (!sch)
            return;
          this.refs[keyRef] = sch;
        }
        return sch.validate || this._compileSchemaEnv(sch);
      }
      // Remove cached schema(s).
      // If no parameter is passed all schemas but meta-schemas are removed.
      // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.
      // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.
      removeSchema(schemaKeyRef) {
        if (schemaKeyRef instanceof RegExp) {
          this._removeAllSchemas(this.schemas, schemaKeyRef);
          this._removeAllSchemas(this.refs, schemaKeyRef);
          return this;
        }
        switch (typeof schemaKeyRef) {
          case "undefined":
            this._removeAllSchemas(this.schemas);
            this._removeAllSchemas(this.refs);
            this._cache.clear();
            return this;
          case "string": {
            const sch = getSchEnv.call(this, schemaKeyRef);
            if (typeof sch == "object")
              this._cache.delete(sch.schema);
            delete this.schemas[schemaKeyRef];
            delete this.refs[schemaKeyRef];
            return this;
          }
          case "object": {
            const cacheKey = schemaKeyRef;
            this._cache.delete(cacheKey);
            let id = schemaKeyRef[this.opts.schemaId];
            if (id) {
              id = (0, resolve_1.normalizeId)(id);
              delete this.schemas[id];
              delete this.refs[id];
            }
            return this;
          }
          default:
            throw new Error("ajv.removeSchema: invalid parameter");
        }
      }
      // add "vocabulary" - a collection of keywords
      addVocabulary(definitions) {
        for (const def of definitions)
          this.addKeyword(def);
        return this;
      }
      addKeyword(kwdOrDef, def) {
        let keyword;
        if (typeof kwdOrDef == "string") {
          keyword = kwdOrDef;
          if (typeof def == "object") {
            this.logger.warn("these parameters are deprecated, see docs for addKeyword");
            def.keyword = keyword;
          }
        } else if (typeof kwdOrDef == "object" && def === void 0) {
          def = kwdOrDef;
          keyword = def.keyword;
          if (Array.isArray(keyword) && !keyword.length) {
            throw new Error("addKeywords: keyword must be string or non-empty array");
          }
        } else {
          throw new Error("invalid addKeywords parameters");
        }
        checkKeyword.call(this, keyword, def);
        if (!def) {
          (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd));
          return this;
        }
        keywordMetaschema.call(this, def);
        const definition = {
          ...def,
          type: (0, dataType_1.getJSONTypes)(def.type),
          schemaType: (0, dataType_1.getJSONTypes)(def.schemaType)
        };
        (0, util_1.eachItem)(keyword, definition.type.length === 0 ? (k) => addRule.call(this, k, definition) : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t)));
        return this;
      }
      getKeyword(keyword) {
        const rule = this.RULES.all[keyword];
        return typeof rule == "object" ? rule.definition : !!rule;
      }
      // Remove keyword
      removeKeyword(keyword) {
        const { RULES } = this;
        delete RULES.keywords[keyword];
        delete RULES.all[keyword];
        for (const group of RULES.rules) {
          const i = group.rules.findIndex((rule) => rule.keyword === keyword);
          if (i >= 0)
            group.rules.splice(i, 1);
        }
        return this;
      }
      // Add format
      addFormat(name, format) {
        if (typeof format == "string")
          format = new RegExp(format);
        this.formats[name] = format;
        return this;
      }
      errorsText(errors = this.errors, { separator = ", ", dataVar = "data" } = {}) {
        if (!errors || errors.length === 0)
          return "No errors";
        return errors.map((e) => `${dataVar}${e.instancePath} ${e.message}`).reduce((text, msg) => text + separator + msg);
      }
      $dataMetaSchema(metaSchema, keywordsJsonPointers) {
        const rules = this.RULES.all;
        metaSchema = JSON.parse(JSON.stringify(metaSchema));
        for (const jsonPointer of keywordsJsonPointers) {
          const segments = jsonPointer.split("/").slice(1);
          let keywords = metaSchema;
          for (const seg of segments)
            keywords = keywords[seg];
          for (const key in rules) {
            const rule = rules[key];
            if (typeof rule != "object")
              continue;
            const { $data } = rule.definition;
            const schema = keywords[key];
            if ($data && schema)
              keywords[key] = schemaOrData(schema);
          }
        }
        return metaSchema;
      }
      _removeAllSchemas(schemas, regex) {
        for (const keyRef in schemas) {
          const sch = schemas[keyRef];
          if (!regex || regex.test(keyRef)) {
            if (typeof sch == "string") {
              delete schemas[keyRef];
            } else if (sch && !sch.meta) {
              this._cache.delete(sch.schema);
              delete schemas[keyRef];
            }
          }
        }
      }
      _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) {
        let id;
        const { schemaId } = this.opts;
        if (typeof schema == "object") {
          id = schema[schemaId];
        } else {
          if (this.opts.jtd)
            throw new Error("schema must be object");
          else if (typeof schema != "boolean")
            throw new Error("schema must be object or boolean");
        }
        let sch = this._cache.get(schema);
        if (sch !== void 0)
          return sch;
        baseId = (0, resolve_1.normalizeId)(id || baseId);
        const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId);
        sch = new compile_1.SchemaEnv({ schema, schemaId, meta, baseId, localRefs });
        this._cache.set(sch.schema, sch);
        if (addSchema && !baseId.startsWith("#")) {
          if (baseId)
            this._checkUnique(baseId);
          this.refs[baseId] = sch;
        }
        if (validateSchema)
          this.validateSchema(schema, true);
        return sch;
      }
      _checkUnique(id) {
        if (this.schemas[id] || this.refs[id]) {
          throw new Error(`schema with key or id "${id}" already exists`);
        }
      }
      _compileSchemaEnv(sch) {
        if (sch.meta)
          this._compileMetaSchema(sch);
        else
          compile_1.compileSchema.call(this, sch);
        if (!sch.validate)
          throw new Error("ajv implementation error");
        return sch.validate;
      }
      _compileMetaSchema(sch) {
        const currentOpts = this.opts;
        this.opts = this._metaOpts;
        try {
          compile_1.compileSchema.call(this, sch);
        } finally {
          this.opts = currentOpts;
        }
      }
    };
    Ajv2.ValidationError = validation_error_1.default;
    Ajv2.MissingRefError = ref_error_1.default;
    exports2.default = Ajv2;
    function checkOptions(checkOpts, options, msg, log = "error") {
      for (const key in checkOpts) {
        const opt = key;
        if (opt in options)
          this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`);
      }
    }
    function getSchEnv(keyRef) {
      keyRef = (0, resolve_1.normalizeId)(keyRef);
      return this.schemas[keyRef] || this.refs[keyRef];
    }
    function addInitialSchemas() {
      const optsSchemas = this.opts.schemas;
      if (!optsSchemas)
        return;
      if (Array.isArray(optsSchemas))
        this.addSchema(optsSchemas);
      else
        for (const key in optsSchemas)
          this.addSchema(optsSchemas[key], key);
    }
    function addInitialFormats() {
      for (const name in this.opts.formats) {
        const format = this.opts.formats[name];
        if (format)
          this.addFormat(name, format);
      }
    }
    function addInitialKeywords(defs) {
      if (Array.isArray(defs)) {
        this.addVocabulary(defs);
        return;
      }
      this.logger.warn("keywords option as map is deprecated, pass array");
      for (const keyword in defs) {
        const def = defs[keyword];
        if (!def.keyword)
          def.keyword = keyword;
        this.addKeyword(def);
      }
    }
    function getMetaSchemaOptions() {
      const metaOpts = { ...this.opts };
      for (const opt of META_IGNORE_OPTIONS)
        delete metaOpts[opt];
      return metaOpts;
    }
    var noLogs = { log() {
    }, warn() {
    }, error() {
    } };
    function getLogger(logger) {
      if (logger === false)
        return noLogs;
      if (logger === void 0)
        return console;
      if (logger.log && logger.warn && logger.error)
        return logger;
      throw new Error("logger must implement log, warn and error methods");
    }
    var KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i;
    function checkKeyword(keyword, def) {
      const { RULES } = this;
      (0, util_1.eachItem)(keyword, (kwd) => {
        if (RULES.keywords[kwd])
          throw new Error(`Keyword ${kwd} is already defined`);
        if (!KEYWORD_NAME.test(kwd))
          throw new Error(`Keyword ${kwd} has invalid name`);
      });
      if (!def)
        return;
      if (def.$data && !("code" in def || "validate" in def)) {
        throw new Error('$data keyword must have "code" or "validate" function');
      }
    }
    function addRule(keyword, definition, dataType) {
      var _a;
      const post = definition === null || definition === void 0 ? void 0 : definition.post;
      if (dataType && post)
        throw new Error('keyword with "post" flag cannot have "type"');
      const { RULES } = this;
      let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType);
      if (!ruleGroup) {
        ruleGroup = { type: dataType, rules: [] };
        RULES.rules.push(ruleGroup);
      }
      RULES.keywords[keyword] = true;
      if (!definition)
        return;
      const rule = {
        keyword,
        definition: {
          ...definition,
          type: (0, dataType_1.getJSONTypes)(definition.type),
          schemaType: (0, dataType_1.getJSONTypes)(definition.schemaType)
        }
      };
      if (definition.before)
        addBeforeRule.call(this, ruleGroup, rule, definition.before);
      else
        ruleGroup.rules.push(rule);
      RULES.all[keyword] = rule;
      (_a = definition.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd));
    }
    function addBeforeRule(ruleGroup, rule, before) {
      const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before);
      if (i >= 0) {
        ruleGroup.rules.splice(i, 0, rule);
      } else {
        ruleGroup.rules.push(rule);
        this.logger.warn(`rule ${before} is not defined`);
      }
    }
    function keywordMetaschema(def) {
      let { metaSchema } = def;
      if (metaSchema === void 0)
        return;
      if (def.$data && this.opts.$data)
        metaSchema = schemaOrData(metaSchema);
      def.validateSchema = this.compile(metaSchema, true);
    }
    var $dataRef = {
      $ref: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"
    };
    function schemaOrData(schema) {
      return { anyOf: [schema, $dataRef] };
    }
  }
});

// node_modules/ajv/dist/vocabularies/core/id.js
var require_id = __commonJS({
  "node_modules/ajv/dist/vocabularies/core/id.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var def = {
      keyword: "id",
      code() {
        throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID');
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/core/ref.js
var require_ref = __commonJS({
  "node_modules/ajv/dist/vocabularies/core/ref.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.callRef = exports2.getValidate = void 0;
    var ref_error_1 = require_ref_error();
    var code_1 = require_code2();
    var codegen_1 = require_codegen();
    var names_1 = require_names();
    var compile_1 = require_compile();
    var util_1 = require_util();
    var def = {
      keyword: "$ref",
      schemaType: "string",
      code(cxt) {
        const { gen, schema: $ref, it } = cxt;
        const { baseId, schemaEnv: env, validateName, opts, self } = it;
        const { root } = env;
        if (($ref === "#" || $ref === "#/") && baseId === root.baseId)
          return callRootRef();
        const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref);
        if (schOrEnv === void 0)
          throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref);
        if (schOrEnv instanceof compile_1.SchemaEnv)
          return callValidate(schOrEnv);
        return inlineRefSchema(schOrEnv);
        function callRootRef() {
          if (env === root)
            return callRef(cxt, validateName, env, env.$async);
          const rootName = gen.scopeValue("root", { ref: root });
          return callRef(cxt, (0, codegen_1._)`${rootName}.validate`, root, root.$async);
        }
        function callValidate(sch) {
          const v = getValidate(cxt, sch);
          callRef(cxt, v, sch, sch.$async);
        }
        function inlineRefSchema(sch) {
          const schName = gen.scopeValue("schema", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch });
          const valid = gen.name("valid");
          const schCxt = cxt.subschema({
            schema: sch,
            dataTypes: [],
            schemaPath: codegen_1.nil,
            topSchemaRef: schName,
            errSchemaPath: $ref
          }, valid);
          cxt.mergeEvaluated(schCxt);
          cxt.ok(valid);
        }
      }
    };
    function getValidate(cxt, sch) {
      const { gen } = cxt;
      return sch.validate ? gen.scopeValue("validate", { ref: sch.validate }) : (0, codegen_1._)`${gen.scopeValue("wrapper", { ref: sch })}.validate`;
    }
    exports2.getValidate = getValidate;
    function callRef(cxt, v, sch, $async) {
      const { gen, it } = cxt;
      const { allErrors, schemaEnv: env, opts } = it;
      const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil;
      if ($async)
        callAsyncRef();
      else
        callSyncRef();
      function callAsyncRef() {
        if (!env.$async)
          throw new Error("async schema referenced by sync schema");
        const valid = gen.let("valid");
        gen.try(() => {
          gen.code((0, codegen_1._)`await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`);
          addEvaluatedFrom(v);
          if (!allErrors)
            gen.assign(valid, true);
        }, (e) => {
          gen.if((0, codegen_1._)`!(${e} instanceof ${it.ValidationError})`, () => gen.throw(e));
          addErrorsFrom(e);
          if (!allErrors)
            gen.assign(valid, false);
        });
        cxt.ok(valid);
      }
      function callSyncRef() {
        cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v));
      }
      function addErrorsFrom(source) {
        const errs = (0, codegen_1._)`${source}.errors`;
        gen.assign(names_1.default.vErrors, (0, codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`);
        gen.assign(names_1.default.errors, (0, codegen_1._)`${names_1.default.vErrors}.length`);
      }
      function addEvaluatedFrom(source) {
        var _a;
        if (!it.opts.unevaluated)
          return;
        const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated;
        if (it.props !== true) {
          if (schEvaluated && !schEvaluated.dynamicProps) {
            if (schEvaluated.props !== void 0) {
              it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props);
            }
          } else {
            const props = gen.var("props", (0, codegen_1._)`${source}.evaluated.props`);
            it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name);
          }
        }
        if (it.items !== true) {
          if (schEvaluated && !schEvaluated.dynamicItems) {
            if (schEvaluated.items !== void 0) {
              it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items);
            }
          } else {
            const items = gen.var("items", (0, codegen_1._)`${source}.evaluated.items`);
            it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name);
          }
        }
      }
    }
    exports2.callRef = callRef;
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/core/index.js
var require_core3 = __commonJS({
  "node_modules/ajv/dist/vocabularies/core/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var id_1 = require_id();
    var ref_1 = require_ref();
    var core = [
      "$schema",
      "$id",
      "$defs",
      "$vocabulary",
      { keyword: "$comment" },
      "definitions",
      id_1.default,
      ref_1.default
    ];
    exports2.default = core;
  }
});

// node_modules/ajv/dist/vocabularies/validation/limitNumber.js
var require_limitNumber = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/limitNumber.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var ops = codegen_1.operators;
    var KWDs = {
      maximum: { okStr: "<=", ok: ops.LTE, fail: ops.GT },
      minimum: { okStr: ">=", ok: ops.GTE, fail: ops.LT },
      exclusiveMaximum: { okStr: "<", ok: ops.LT, fail: ops.GTE },
      exclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE }
    };
    var error = {
      message: ({ keyword, schemaCode }) => (0, codegen_1.str)`must be ${KWDs[keyword].okStr} ${schemaCode}`,
      params: ({ keyword, schemaCode }) => (0, codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`
    };
    var def = {
      keyword: Object.keys(KWDs),
      type: "number",
      schemaType: "number",
      $data: true,
      error,
      code(cxt) {
        const { keyword, data, schemaCode } = cxt;
        cxt.fail$data((0, codegen_1._)`${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`);
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/validation/multipleOf.js
var require_multipleOf = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/multipleOf.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var error = {
      message: ({ schemaCode }) => (0, codegen_1.str)`must be multiple of ${schemaCode}`,
      params: ({ schemaCode }) => (0, codegen_1._)`{multipleOf: ${schemaCode}}`
    };
    var def = {
      keyword: "multipleOf",
      type: "number",
      schemaType: "number",
      $data: true,
      error,
      code(cxt) {
        const { gen, data, schemaCode, it } = cxt;
        const prec = it.opts.multipleOfPrecision;
        const res = gen.let("res");
        const invalid = prec ? (0, codegen_1._)`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}` : (0, codegen_1._)`${res} !== parseInt(${res})`;
        cxt.fail$data((0, codegen_1._)`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`);
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/runtime/ucs2length.js
var require_ucs2length = __commonJS({
  "node_modules/ajv/dist/runtime/ucs2length.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    function ucs2length(str) {
      const len = str.length;
      let length = 0;
      let pos = 0;
      let value;
      while (pos < len) {
        length++;
        value = str.charCodeAt(pos++);
        if (value >= 55296 && value <= 56319 && pos < len) {
          value = str.charCodeAt(pos);
          if ((value & 64512) === 56320)
            pos++;
        }
      }
      return length;
    }
    exports2.default = ucs2length;
    ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default';
  }
});

// node_modules/ajv/dist/vocabularies/validation/limitLength.js
var require_limitLength = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/limitLength.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var ucs2length_1 = require_ucs2length();
    var error = {
      message({ keyword, schemaCode }) {
        const comp = keyword === "maxLength" ? "more" : "fewer";
        return (0, codegen_1.str)`must NOT have ${comp} than ${schemaCode} characters`;
      },
      params: ({ schemaCode }) => (0, codegen_1._)`{limit: ${schemaCode}}`
    };
    var def = {
      keyword: ["maxLength", "minLength"],
      type: "string",
      schemaType: "number",
      $data: true,
      error,
      code(cxt) {
        const { keyword, data, schemaCode, it } = cxt;
        const op = keyword === "maxLength" ? codegen_1.operators.GT : codegen_1.operators.LT;
        const len = it.opts.unicode === false ? (0, codegen_1._)`${data}.length` : (0, codegen_1._)`${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}(${data})`;
        cxt.fail$data((0, codegen_1._)`${len} ${op} ${schemaCode}`);
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/validation/pattern.js
var require_pattern = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/pattern.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var code_1 = require_code2();
    var util_1 = require_util();
    var codegen_1 = require_codegen();
    var error = {
      message: ({ schemaCode }) => (0, codegen_1.str)`must match pattern "${schemaCode}"`,
      params: ({ schemaCode }) => (0, codegen_1._)`{pattern: ${schemaCode}}`
    };
    var def = {
      keyword: "pattern",
      type: "string",
      schemaType: "string",
      $data: true,
      error,
      code(cxt) {
        const { gen, data, $data, schema, schemaCode, it } = cxt;
        const u = it.opts.unicodeRegExp ? "u" : "";
        if ($data) {
          const { regExp } = it.opts.code;
          const regExpCode = regExp.code === "new RegExp" ? (0, codegen_1._)`new RegExp` : (0, util_1.useFunc)(gen, regExp);
          const valid = gen.let("valid");
          gen.try(() => gen.assign(valid, (0, codegen_1._)`${regExpCode}(${schemaCode}, ${u}).test(${data})`), () => gen.assign(valid, false));
          cxt.fail$data((0, codegen_1._)`!${valid}`);
        } else {
          const regExp = (0, code_1.usePattern)(cxt, schema);
          cxt.fail$data((0, codegen_1._)`!${regExp}.test(${data})`);
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/validation/limitProperties.js
var require_limitProperties = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/limitProperties.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var error = {
      message({ keyword, schemaCode }) {
        const comp = keyword === "maxProperties" ? "more" : "fewer";
        return (0, codegen_1.str)`must NOT have ${comp} than ${schemaCode} properties`;
      },
      params: ({ schemaCode }) => (0, codegen_1._)`{limit: ${schemaCode}}`
    };
    var def = {
      keyword: ["maxProperties", "minProperties"],
      type: "object",
      schemaType: "number",
      $data: true,
      error,
      code(cxt) {
        const { keyword, data, schemaCode } = cxt;
        const op = keyword === "maxProperties" ? codegen_1.operators.GT : codegen_1.operators.LT;
        cxt.fail$data((0, codegen_1._)`Object.keys(${data}).length ${op} ${schemaCode}`);
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/validation/required.js
var require_required = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/required.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var code_1 = require_code2();
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var error = {
      message: ({ params: { missingProperty } }) => (0, codegen_1.str)`must have required property '${missingProperty}'`,
      params: ({ params: { missingProperty } }) => (0, codegen_1._)`{missingProperty: ${missingProperty}}`
    };
    var def = {
      keyword: "required",
      type: "object",
      schemaType: "array",
      $data: true,
      error,
      code(cxt) {
        const { gen, schema, schemaCode, data, $data, it } = cxt;
        const { opts } = it;
        if (!$data && schema.length === 0)
          return;
        const useLoop = schema.length >= opts.loopRequired;
        if (it.allErrors)
          allErrorsMode();
        else
          exitOnErrorMode();
        if (opts.strictRequired) {
          const props = cxt.parentSchema.properties;
          const { definedProperties } = cxt.it;
          for (const requiredKey of schema) {
            if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === void 0 && !definedProperties.has(requiredKey)) {
              const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;
              const msg = `required property "${requiredKey}" is not defined at "${schemaPath}" (strictRequired)`;
              (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired);
            }
          }
        }
        function allErrorsMode() {
          if (useLoop || $data) {
            cxt.block$data(codegen_1.nil, loopAllRequired);
          } else {
            for (const prop of schema) {
              (0, code_1.checkReportMissingProp)(cxt, prop);
            }
          }
        }
        function exitOnErrorMode() {
          const missing = gen.let("missing");
          if (useLoop || $data) {
            const valid = gen.let("valid", true);
            cxt.block$data(valid, () => loopUntilMissing(missing, valid));
            cxt.ok(valid);
          } else {
            gen.if((0, code_1.checkMissingProp)(cxt, schema, missing));
            (0, code_1.reportMissingProp)(cxt, missing);
            gen.else();
          }
        }
        function loopAllRequired() {
          gen.forOf("prop", schemaCode, (prop) => {
            cxt.setParams({ missingProperty: prop });
            gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error());
          });
        }
        function loopUntilMissing(missing, valid) {
          cxt.setParams({ missingProperty: missing });
          gen.forOf(missing, schemaCode, () => {
            gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties));
            gen.if((0, codegen_1.not)(valid), () => {
              cxt.error();
              gen.break();
            });
          }, codegen_1.nil);
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/validation/limitItems.js
var require_limitItems = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/limitItems.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var error = {
      message({ keyword, schemaCode }) {
        const comp = keyword === "maxItems" ? "more" : "fewer";
        return (0, codegen_1.str)`must NOT have ${comp} than ${schemaCode} items`;
      },
      params: ({ schemaCode }) => (0, codegen_1._)`{limit: ${schemaCode}}`
    };
    var def = {
      keyword: ["maxItems", "minItems"],
      type: "array",
      schemaType: "number",
      $data: true,
      error,
      code(cxt) {
        const { keyword, data, schemaCode } = cxt;
        const op = keyword === "maxItems" ? codegen_1.operators.GT : codegen_1.operators.LT;
        cxt.fail$data((0, codegen_1._)`${data}.length ${op} ${schemaCode}`);
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/runtime/equal.js
var require_equal = __commonJS({
  "node_modules/ajv/dist/runtime/equal.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var equal = require_fast_deep_equal();
    equal.code = 'require("ajv/dist/runtime/equal").default';
    exports2.default = equal;
  }
});

// node_modules/ajv/dist/vocabularies/validation/uniqueItems.js
var require_uniqueItems = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/uniqueItems.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var dataType_1 = require_dataType();
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var equal_1 = require_equal();
    var error = {
      message: ({ params: { i, j } }) => (0, codegen_1.str)`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,
      params: ({ params: { i, j } }) => (0, codegen_1._)`{i: ${i}, j: ${j}}`
    };
    var def = {
      keyword: "uniqueItems",
      type: "array",
      schemaType: "boolean",
      $data: true,
      error,
      code(cxt) {
        const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt;
        if (!$data && !schema)
          return;
        const valid = gen.let("valid");
        const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : [];
        cxt.block$data(valid, validateUniqueItems, (0, codegen_1._)`${schemaCode} === false`);
        cxt.ok(valid);
        function validateUniqueItems() {
          const i = gen.let("i", (0, codegen_1._)`${data}.length`);
          const j = gen.let("j");
          cxt.setParams({ i, j });
          gen.assign(valid, true);
          gen.if((0, codegen_1._)`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j));
        }
        function canOptimize() {
          return itemTypes.length > 0 && !itemTypes.some((t) => t === "object" || t === "array");
        }
        function loopN(i, j) {
          const item = gen.name("item");
          const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong);
          const indices = gen.const("indices", (0, codegen_1._)`{}`);
          gen.for((0, codegen_1._)`;${i}--;`, () => {
            gen.let(item, (0, codegen_1._)`${data}[${i}]`);
            gen.if(wrongType, (0, codegen_1._)`continue`);
            if (itemTypes.length > 1)
              gen.if((0, codegen_1._)`typeof ${item} == "string"`, (0, codegen_1._)`${item} += "_"`);
            gen.if((0, codegen_1._)`typeof ${indices}[${item}] == "number"`, () => {
              gen.assign(j, (0, codegen_1._)`${indices}[${item}]`);
              cxt.error();
              gen.assign(valid, false).break();
            }).code((0, codegen_1._)`${indices}[${item}] = ${i}`);
          });
        }
        function loopN2(i, j) {
          const eql = (0, util_1.useFunc)(gen, equal_1.default);
          const outer = gen.name("outer");
          gen.label(outer).for((0, codegen_1._)`;${i}--;`, () => gen.for((0, codegen_1._)`${j} = ${i}; ${j}--;`, () => gen.if((0, codegen_1._)`${eql}(${data}[${i}], ${data}[${j}])`, () => {
            cxt.error();
            gen.assign(valid, false).break(outer);
          })));
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/validation/const.js
var require_const = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/const.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var equal_1 = require_equal();
    var error = {
      message: "must be equal to constant",
      params: ({ schemaCode }) => (0, codegen_1._)`{allowedValue: ${schemaCode}}`
    };
    var def = {
      keyword: "const",
      $data: true,
      error,
      code(cxt) {
        const { gen, data, $data, schemaCode, schema } = cxt;
        if ($data || schema && typeof schema == "object") {
          cxt.fail$data((0, codegen_1._)`!${(0, util_1.useFunc)(gen, equal_1.default)}(${data}, ${schemaCode})`);
        } else {
          cxt.fail((0, codegen_1._)`${schema} !== ${data}`);
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/validation/enum.js
var require_enum = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/enum.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var equal_1 = require_equal();
    var error = {
      message: "must be equal to one of the allowed values",
      params: ({ schemaCode }) => (0, codegen_1._)`{allowedValues: ${schemaCode}}`
    };
    var def = {
      keyword: "enum",
      schemaType: "array",
      $data: true,
      error,
      code(cxt) {
        const { gen, data, $data, schema, schemaCode, it } = cxt;
        if (!$data && schema.length === 0)
          throw new Error("enum must have non-empty array");
        const useLoop = schema.length >= it.opts.loopEnum;
        let eql;
        const getEql = () => eql !== null && eql !== void 0 ? eql : eql = (0, util_1.useFunc)(gen, equal_1.default);
        let valid;
        if (useLoop || $data) {
          valid = gen.let("valid");
          cxt.block$data(valid, loopEnum);
        } else {
          if (!Array.isArray(schema))
            throw new Error("ajv implementation error");
          const vSchema = gen.const("vSchema", schemaCode);
          valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i)));
        }
        cxt.pass(valid);
        function loopEnum() {
          gen.assign(valid, false);
          gen.forOf("v", schemaCode, (v) => gen.if((0, codegen_1._)`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break()));
        }
        function equalCode(vSchema, i) {
          const sch = schema[i];
          return typeof sch === "object" && sch !== null ? (0, codegen_1._)`${getEql()}(${data}, ${vSchema}[${i}])` : (0, codegen_1._)`${data} === ${sch}`;
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/validation/index.js
var require_validation = __commonJS({
  "node_modules/ajv/dist/vocabularies/validation/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var limitNumber_1 = require_limitNumber();
    var multipleOf_1 = require_multipleOf();
    var limitLength_1 = require_limitLength();
    var pattern_1 = require_pattern();
    var limitProperties_1 = require_limitProperties();
    var required_1 = require_required();
    var limitItems_1 = require_limitItems();
    var uniqueItems_1 = require_uniqueItems();
    var const_1 = require_const();
    var enum_1 = require_enum();
    var validation = [
      // number
      limitNumber_1.default,
      multipleOf_1.default,
      // string
      limitLength_1.default,
      pattern_1.default,
      // object
      limitProperties_1.default,
      required_1.default,
      // array
      limitItems_1.default,
      uniqueItems_1.default,
      // any
      { keyword: "type", schemaType: ["string", "array"] },
      { keyword: "nullable", schemaType: "boolean" },
      const_1.default,
      enum_1.default
    ];
    exports2.default = validation;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/additionalItems.js
var require_additionalItems = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/additionalItems.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateAdditionalItems = void 0;
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var error = {
      message: ({ params: { len } }) => (0, codegen_1.str)`must NOT have more than ${len} items`,
      params: ({ params: { len } }) => (0, codegen_1._)`{limit: ${len}}`
    };
    var def = {
      keyword: "additionalItems",
      type: "array",
      schemaType: ["boolean", "object"],
      before: "uniqueItems",
      error,
      code(cxt) {
        const { parentSchema, it } = cxt;
        const { items } = parentSchema;
        if (!Array.isArray(items)) {
          (0, util_1.checkStrictMode)(it, '"additionalItems" is ignored when "items" is not an array of schemas');
          return;
        }
        validateAdditionalItems(cxt, items);
      }
    };
    function validateAdditionalItems(cxt, items) {
      const { gen, schema, data, keyword, it } = cxt;
      it.items = true;
      const len = gen.const("len", (0, codegen_1._)`${data}.length`);
      if (schema === false) {
        cxt.setParams({ len: items.length });
        cxt.pass((0, codegen_1._)`${len} <= ${items.length}`);
      } else if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) {
        const valid = gen.var("valid", (0, codegen_1._)`${len} <= ${items.length}`);
        gen.if((0, codegen_1.not)(valid), () => validateItems(valid));
        cxt.ok(valid);
      }
      function validateItems(valid) {
        gen.forRange("i", items.length, len, (i) => {
          cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid);
          if (!it.allErrors)
            gen.if((0, codegen_1.not)(valid), () => gen.break());
        });
      }
    }
    exports2.validateAdditionalItems = validateAdditionalItems;
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/items.js
var require_items = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/items.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateTuple = void 0;
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var code_1 = require_code2();
    var def = {
      keyword: "items",
      type: "array",
      schemaType: ["object", "array", "boolean"],
      before: "uniqueItems",
      code(cxt) {
        const { schema, it } = cxt;
        if (Array.isArray(schema))
          return validateTuple(cxt, "additionalItems", schema);
        it.items = true;
        if ((0, util_1.alwaysValidSchema)(it, schema))
          return;
        cxt.ok((0, code_1.validateArray)(cxt));
      }
    };
    function validateTuple(cxt, extraItems, schArr = cxt.schema) {
      const { gen, parentSchema, data, keyword, it } = cxt;
      checkStrictTuple(parentSchema);
      if (it.opts.unevaluated && schArr.length && it.items !== true) {
        it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items);
      }
      const valid = gen.name("valid");
      const len = gen.const("len", (0, codegen_1._)`${data}.length`);
      schArr.forEach((sch, i) => {
        if ((0, util_1.alwaysValidSchema)(it, sch))
          return;
        gen.if((0, codegen_1._)`${len} > ${i}`, () => cxt.subschema({
          keyword,
          schemaProp: i,
          dataProp: i
        }, valid));
        cxt.ok(valid);
      });
      function checkStrictTuple(sch) {
        const { opts, errSchemaPath } = it;
        const l = schArr.length;
        const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false);
        if (opts.strictTuples && !fullTuple) {
          const msg = `"${keyword}" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path "${errSchemaPath}"`;
          (0, util_1.checkStrictMode)(it, msg, opts.strictTuples);
        }
      }
    }
    exports2.validateTuple = validateTuple;
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/prefixItems.js
var require_prefixItems = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/prefixItems.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var items_1 = require_items();
    var def = {
      keyword: "prefixItems",
      type: "array",
      schemaType: ["array"],
      before: "uniqueItems",
      code: (cxt) => (0, items_1.validateTuple)(cxt, "items")
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/items2020.js
var require_items2020 = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/items2020.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var code_1 = require_code2();
    var additionalItems_1 = require_additionalItems();
    var error = {
      message: ({ params: { len } }) => (0, codegen_1.str)`must NOT have more than ${len} items`,
      params: ({ params: { len } }) => (0, codegen_1._)`{limit: ${len}}`
    };
    var def = {
      keyword: "items",
      type: "array",
      schemaType: ["object", "boolean"],
      before: "uniqueItems",
      error,
      code(cxt) {
        const { schema, parentSchema, it } = cxt;
        const { prefixItems } = parentSchema;
        it.items = true;
        if ((0, util_1.alwaysValidSchema)(it, schema))
          return;
        if (prefixItems)
          (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems);
        else
          cxt.ok((0, code_1.validateArray)(cxt));
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/contains.js
var require_contains = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/contains.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var error = {
      message: ({ params: { min, max } }) => max === void 0 ? (0, codegen_1.str)`must contain at least ${min} valid item(s)` : (0, codegen_1.str)`must contain at least ${min} and no more than ${max} valid item(s)`,
      params: ({ params: { min, max } }) => max === void 0 ? (0, codegen_1._)`{minContains: ${min}}` : (0, codegen_1._)`{minContains: ${min}, maxContains: ${max}}`
    };
    var def = {
      keyword: "contains",
      type: "array",
      schemaType: ["object", "boolean"],
      before: "uniqueItems",
      trackErrors: true,
      error,
      code(cxt) {
        const { gen, schema, parentSchema, data, it } = cxt;
        let min;
        let max;
        const { minContains, maxContains } = parentSchema;
        if (it.opts.next) {
          min = minContains === void 0 ? 1 : minContains;
          max = maxContains;
        } else {
          min = 1;
        }
        const len = gen.const("len", (0, codegen_1._)`${data}.length`);
        cxt.setParams({ min, max });
        if (max === void 0 && min === 0) {
          (0, util_1.checkStrictMode)(it, `"minContains" == 0 without "maxContains": "contains" keyword ignored`);
          return;
        }
        if (max !== void 0 && min > max) {
          (0, util_1.checkStrictMode)(it, `"minContains" > "maxContains" is always invalid`);
          cxt.fail();
          return;
        }
        if ((0, util_1.alwaysValidSchema)(it, schema)) {
          let cond = (0, codegen_1._)`${len} >= ${min}`;
          if (max !== void 0)
            cond = (0, codegen_1._)`${cond} && ${len} <= ${max}`;
          cxt.pass(cond);
          return;
        }
        it.items = true;
        const valid = gen.name("valid");
        if (max === void 0 && min === 1) {
          validateItems(valid, () => gen.if(valid, () => gen.break()));
        } else if (min === 0) {
          gen.let(valid, true);
          if (max !== void 0)
            gen.if((0, codegen_1._)`${data}.length > 0`, validateItemsWithCount);
        } else {
          gen.let(valid, false);
          validateItemsWithCount();
        }
        cxt.result(valid, () => cxt.reset());
        function validateItemsWithCount() {
          const schValid = gen.name("_valid");
          const count = gen.let("count", 0);
          validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)));
        }
        function validateItems(_valid, block) {
          gen.forRange("i", 0, len, (i) => {
            cxt.subschema({
              keyword: "contains",
              dataProp: i,
              dataPropType: util_1.Type.Num,
              compositeRule: true
            }, _valid);
            block();
          });
        }
        function checkLimits(count) {
          gen.code((0, codegen_1._)`${count}++`);
          if (max === void 0) {
            gen.if((0, codegen_1._)`${count} >= ${min}`, () => gen.assign(valid, true).break());
          } else {
            gen.if((0, codegen_1._)`${count} > ${max}`, () => gen.assign(valid, false).break());
            if (min === 1)
              gen.assign(valid, true);
            else
              gen.if((0, codegen_1._)`${count} >= ${min}`, () => gen.assign(valid, true));
          }
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/dependencies.js
var require_dependencies = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/dependencies.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.validateSchemaDeps = exports2.validatePropertyDeps = exports2.error = void 0;
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var code_1 = require_code2();
    exports2.error = {
      message: ({ params: { property, depsCount, deps } }) => {
        const property_ies = depsCount === 1 ? "property" : "properties";
        return (0, codegen_1.str)`must have ${property_ies} ${deps} when property ${property} is present`;
      },
      params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._)`{property: ${property},
    missingProperty: ${missingProperty},
    depsCount: ${depsCount},
    deps: ${deps}}`
      // TODO change to reference
    };
    var def = {
      keyword: "dependencies",
      type: "object",
      schemaType: "object",
      error: exports2.error,
      code(cxt) {
        const [propDeps, schDeps] = splitDependencies(cxt);
        validatePropertyDeps(cxt, propDeps);
        validateSchemaDeps(cxt, schDeps);
      }
    };
    function splitDependencies({ schema }) {
      const propertyDeps = {};
      const schemaDeps = {};
      for (const key in schema) {
        if (key === "__proto__")
          continue;
        const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps;
        deps[key] = schema[key];
      }
      return [propertyDeps, schemaDeps];
    }
    function validatePropertyDeps(cxt, propertyDeps = cxt.schema) {
      const { gen, data, it } = cxt;
      if (Object.keys(propertyDeps).length === 0)
        return;
      const missing = gen.let("missing");
      for (const prop in propertyDeps) {
        const deps = propertyDeps[prop];
        if (deps.length === 0)
          continue;
        const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties);
        cxt.setParams({
          property: prop,
          depsCount: deps.length,
          deps: deps.join(", ")
        });
        if (it.allErrors) {
          gen.if(hasProperty, () => {
            for (const depProp of deps) {
              (0, code_1.checkReportMissingProp)(cxt, depProp);
            }
          });
        } else {
          gen.if((0, codegen_1._)`${hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`);
          (0, code_1.reportMissingProp)(cxt, missing);
          gen.else();
        }
      }
    }
    exports2.validatePropertyDeps = validatePropertyDeps;
    function validateSchemaDeps(cxt, schemaDeps = cxt.schema) {
      const { gen, data, keyword, it } = cxt;
      const valid = gen.name("valid");
      for (const prop in schemaDeps) {
        if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop]))
          continue;
        gen.if(
          (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties),
          () => {
            const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid);
            cxt.mergeValidEvaluated(schCxt, valid);
          },
          () => gen.var(valid, true)
          // TODO var
        );
        cxt.ok(valid);
      }
    }
    exports2.validateSchemaDeps = validateSchemaDeps;
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/propertyNames.js
var require_propertyNames = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/propertyNames.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var error = {
      message: "property name must be valid",
      params: ({ params }) => (0, codegen_1._)`{propertyName: ${params.propertyName}}`
    };
    var def = {
      keyword: "propertyNames",
      type: "object",
      schemaType: ["object", "boolean"],
      error,
      code(cxt) {
        const { gen, schema, data, it } = cxt;
        if ((0, util_1.alwaysValidSchema)(it, schema))
          return;
        const valid = gen.name("valid");
        gen.forIn("key", data, (key) => {
          cxt.setParams({ propertyName: key });
          cxt.subschema({
            keyword: "propertyNames",
            data: key,
            dataTypes: ["string"],
            propertyName: key,
            compositeRule: true
          }, valid);
          gen.if((0, codegen_1.not)(valid), () => {
            cxt.error(true);
            if (!it.allErrors)
              gen.break();
          });
        });
        cxt.ok(valid);
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js
var require_additionalProperties = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var code_1 = require_code2();
    var codegen_1 = require_codegen();
    var names_1 = require_names();
    var util_1 = require_util();
    var error = {
      message: "must NOT have additional properties",
      params: ({ params }) => (0, codegen_1._)`{additionalProperty: ${params.additionalProperty}}`
    };
    var def = {
      keyword: "additionalProperties",
      type: ["object"],
      schemaType: ["boolean", "object"],
      allowUndefined: true,
      trackErrors: true,
      error,
      code(cxt) {
        const { gen, schema, parentSchema, data, errsCount, it } = cxt;
        if (!errsCount)
          throw new Error("ajv implementation error");
        const { allErrors, opts } = it;
        it.props = true;
        if (opts.removeAdditional !== "all" && (0, util_1.alwaysValidSchema)(it, schema))
          return;
        const props = (0, code_1.allSchemaProperties)(parentSchema.properties);
        const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties);
        checkAdditionalProperties();
        cxt.ok((0, codegen_1._)`${errsCount} === ${names_1.default.errors}`);
        function checkAdditionalProperties() {
          gen.forIn("key", data, (key) => {
            if (!props.length && !patProps.length)
              additionalPropertyCode(key);
            else
              gen.if(isAdditional(key), () => additionalPropertyCode(key));
          });
        }
        function isAdditional(key) {
          let definedProp;
          if (props.length > 8) {
            const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, "properties");
            definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key);
          } else if (props.length) {
            definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._)`${key} === ${p}`));
          } else {
            definedProp = codegen_1.nil;
          }
          if (patProps.length) {
            definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._)`${(0, code_1.usePattern)(cxt, p)}.test(${key})`));
          }
          return (0, codegen_1.not)(definedProp);
        }
        function deleteAdditional(key) {
          gen.code((0, codegen_1._)`delete ${data}[${key}]`);
        }
        function additionalPropertyCode(key) {
          if (opts.removeAdditional === "all" || opts.removeAdditional && schema === false) {
            deleteAdditional(key);
            return;
          }
          if (schema === false) {
            cxt.setParams({ additionalProperty: key });
            cxt.error();
            if (!allErrors)
              gen.break();
            return;
          }
          if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) {
            const valid = gen.name("valid");
            if (opts.removeAdditional === "failing") {
              applyAdditionalSchema(key, valid, false);
              gen.if((0, codegen_1.not)(valid), () => {
                cxt.reset();
                deleteAdditional(key);
              });
            } else {
              applyAdditionalSchema(key, valid);
              if (!allErrors)
                gen.if((0, codegen_1.not)(valid), () => gen.break());
            }
          }
        }
        function applyAdditionalSchema(key, valid, errors) {
          const subschema = {
            keyword: "additionalProperties",
            dataProp: key,
            dataPropType: util_1.Type.Str
          };
          if (errors === false) {
            Object.assign(subschema, {
              compositeRule: true,
              createErrors: false,
              allErrors: false
            });
          }
          cxt.subschema(subschema, valid);
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/properties.js
var require_properties = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/properties.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var validate_1 = require_validate();
    var code_1 = require_code2();
    var util_1 = require_util();
    var additionalProperties_1 = require_additionalProperties();
    var def = {
      keyword: "properties",
      type: "object",
      schemaType: "object",
      code(cxt) {
        const { gen, schema, parentSchema, data, it } = cxt;
        if (it.opts.removeAdditional === "all" && parentSchema.additionalProperties === void 0) {
          additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, "additionalProperties"));
        }
        const allProps = (0, code_1.allSchemaProperties)(schema);
        for (const prop of allProps) {
          it.definedProperties.add(prop);
        }
        if (it.opts.unevaluated && allProps.length && it.props !== true) {
          it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props);
        }
        const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p]));
        if (properties.length === 0)
          return;
        const valid = gen.name("valid");
        for (const prop of properties) {
          if (hasDefault(prop)) {
            applyPropertySchema(prop);
          } else {
            gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties));
            applyPropertySchema(prop);
            if (!it.allErrors)
              gen.else().var(valid, true);
            gen.endIf();
          }
          cxt.it.definedProperties.add(prop);
          cxt.ok(valid);
        }
        function hasDefault(prop) {
          return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== void 0;
        }
        function applyPropertySchema(prop) {
          cxt.subschema({
            keyword: "properties",
            schemaProp: prop,
            dataProp: prop
          }, valid);
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/patternProperties.js
var require_patternProperties = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/patternProperties.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var code_1 = require_code2();
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var util_2 = require_util();
    var def = {
      keyword: "patternProperties",
      type: "object",
      schemaType: "object",
      code(cxt) {
        const { gen, schema, data, parentSchema, it } = cxt;
        const { opts } = it;
        const patterns = (0, code_1.allSchemaProperties)(schema);
        const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p]));
        if (patterns.length === 0 || alwaysValidPatterns.length === patterns.length && (!it.opts.unevaluated || it.props === true)) {
          return;
        }
        const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties;
        const valid = gen.name("valid");
        if (it.props !== true && !(it.props instanceof codegen_1.Name)) {
          it.props = (0, util_2.evaluatedPropsToName)(gen, it.props);
        }
        const { props } = it;
        validatePatternProperties();
        function validatePatternProperties() {
          for (const pat of patterns) {
            if (checkProperties)
              checkMatchingProperties(pat);
            if (it.allErrors) {
              validateProperties(pat);
            } else {
              gen.var(valid, true);
              validateProperties(pat);
              gen.if(valid);
            }
          }
        }
        function checkMatchingProperties(pat) {
          for (const prop in checkProperties) {
            if (new RegExp(pat).test(prop)) {
              (0, util_1.checkStrictMode)(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`);
            }
          }
        }
        function validateProperties(pat) {
          gen.forIn("key", data, (key) => {
            gen.if((0, codegen_1._)`${(0, code_1.usePattern)(cxt, pat)}.test(${key})`, () => {
              const alwaysValid = alwaysValidPatterns.includes(pat);
              if (!alwaysValid) {
                cxt.subschema({
                  keyword: "patternProperties",
                  schemaProp: pat,
                  dataProp: key,
                  dataPropType: util_2.Type.Str
                }, valid);
              }
              if (it.opts.unevaluated && props !== true) {
                gen.assign((0, codegen_1._)`${props}[${key}]`, true);
              } else if (!alwaysValid && !it.allErrors) {
                gen.if((0, codegen_1.not)(valid), () => gen.break());
              }
            });
          });
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/not.js
var require_not = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/not.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var util_1 = require_util();
    var def = {
      keyword: "not",
      schemaType: ["object", "boolean"],
      trackErrors: true,
      code(cxt) {
        const { gen, schema, it } = cxt;
        if ((0, util_1.alwaysValidSchema)(it, schema)) {
          cxt.fail();
          return;
        }
        const valid = gen.name("valid");
        cxt.subschema({
          keyword: "not",
          compositeRule: true,
          createErrors: false,
          allErrors: false
        }, valid);
        cxt.failResult(valid, () => cxt.reset(), () => cxt.error());
      },
      error: { message: "must NOT be valid" }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/anyOf.js
var require_anyOf = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/anyOf.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var code_1 = require_code2();
    var def = {
      keyword: "anyOf",
      schemaType: "array",
      trackErrors: true,
      code: code_1.validateUnion,
      error: { message: "must match a schema in anyOf" }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/oneOf.js
var require_oneOf = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/oneOf.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var error = {
      message: "must match exactly one schema in oneOf",
      params: ({ params }) => (0, codegen_1._)`{passingSchemas: ${params.passing}}`
    };
    var def = {
      keyword: "oneOf",
      schemaType: "array",
      trackErrors: true,
      error,
      code(cxt) {
        const { gen, schema, parentSchema, it } = cxt;
        if (!Array.isArray(schema))
          throw new Error("ajv implementation error");
        if (it.opts.discriminator && parentSchema.discriminator)
          return;
        const schArr = schema;
        const valid = gen.let("valid", false);
        const passing = gen.let("passing", null);
        const schValid = gen.name("_valid");
        cxt.setParams({ passing });
        gen.block(validateOneOf);
        cxt.result(valid, () => cxt.reset(), () => cxt.error(true));
        function validateOneOf() {
          schArr.forEach((sch, i) => {
            let schCxt;
            if ((0, util_1.alwaysValidSchema)(it, sch)) {
              gen.var(schValid, true);
            } else {
              schCxt = cxt.subschema({
                keyword: "oneOf",
                schemaProp: i,
                compositeRule: true
              }, schValid);
            }
            if (i > 0) {
              gen.if((0, codegen_1._)`${schValid} && ${valid}`).assign(valid, false).assign(passing, (0, codegen_1._)`[${passing}, ${i}]`).else();
            }
            gen.if(schValid, () => {
              gen.assign(valid, true);
              gen.assign(passing, i);
              if (schCxt)
                cxt.mergeEvaluated(schCxt, codegen_1.Name);
            });
          });
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/allOf.js
var require_allOf = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/allOf.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var util_1 = require_util();
    var def = {
      keyword: "allOf",
      schemaType: "array",
      code(cxt) {
        const { gen, schema, it } = cxt;
        if (!Array.isArray(schema))
          throw new Error("ajv implementation error");
        const valid = gen.name("valid");
        schema.forEach((sch, i) => {
          if ((0, util_1.alwaysValidSchema)(it, sch))
            return;
          const schCxt = cxt.subschema({ keyword: "allOf", schemaProp: i }, valid);
          cxt.ok(valid);
          cxt.mergeEvaluated(schCxt);
        });
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/if.js
var require_if = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/if.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var util_1 = require_util();
    var error = {
      message: ({ params }) => (0, codegen_1.str)`must match "${params.ifClause}" schema`,
      params: ({ params }) => (0, codegen_1._)`{failingKeyword: ${params.ifClause}}`
    };
    var def = {
      keyword: "if",
      schemaType: ["object", "boolean"],
      trackErrors: true,
      error,
      code(cxt) {
        const { gen, parentSchema, it } = cxt;
        if (parentSchema.then === void 0 && parentSchema.else === void 0) {
          (0, util_1.checkStrictMode)(it, '"if" without "then" and "else" is ignored');
        }
        const hasThen = hasSchema(it, "then");
        const hasElse = hasSchema(it, "else");
        if (!hasThen && !hasElse)
          return;
        const valid = gen.let("valid", true);
        const schValid = gen.name("_valid");
        validateIf();
        cxt.reset();
        if (hasThen && hasElse) {
          const ifClause = gen.let("ifClause");
          cxt.setParams({ ifClause });
          gen.if(schValid, validateClause("then", ifClause), validateClause("else", ifClause));
        } else if (hasThen) {
          gen.if(schValid, validateClause("then"));
        } else {
          gen.if((0, codegen_1.not)(schValid), validateClause("else"));
        }
        cxt.pass(valid, () => cxt.error(true));
        function validateIf() {
          const schCxt = cxt.subschema({
            keyword: "if",
            compositeRule: true,
            createErrors: false,
            allErrors: false
          }, schValid);
          cxt.mergeEvaluated(schCxt);
        }
        function validateClause(keyword, ifClause) {
          return () => {
            const schCxt = cxt.subschema({ keyword }, schValid);
            gen.assign(valid, schValid);
            cxt.mergeValidEvaluated(schCxt, valid);
            if (ifClause)
              gen.assign(ifClause, (0, codegen_1._)`${keyword}`);
            else
              cxt.setParams({ ifClause: keyword });
          };
        }
      }
    };
    function hasSchema(it, keyword) {
      const schema = it.schema[keyword];
      return schema !== void 0 && !(0, util_1.alwaysValidSchema)(it, schema);
    }
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/thenElse.js
var require_thenElse = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/thenElse.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var util_1 = require_util();
    var def = {
      keyword: ["then", "else"],
      schemaType: ["object", "boolean"],
      code({ keyword, parentSchema, it }) {
        if (parentSchema.if === void 0)
          (0, util_1.checkStrictMode)(it, `"${keyword}" without "if" is ignored`);
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/applicator/index.js
var require_applicator = __commonJS({
  "node_modules/ajv/dist/vocabularies/applicator/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var additionalItems_1 = require_additionalItems();
    var prefixItems_1 = require_prefixItems();
    var items_1 = require_items();
    var items2020_1 = require_items2020();
    var contains_1 = require_contains();
    var dependencies_1 = require_dependencies();
    var propertyNames_1 = require_propertyNames();
    var additionalProperties_1 = require_additionalProperties();
    var properties_1 = require_properties();
    var patternProperties_1 = require_patternProperties();
    var not_1 = require_not();
    var anyOf_1 = require_anyOf();
    var oneOf_1 = require_oneOf();
    var allOf_1 = require_allOf();
    var if_1 = require_if();
    var thenElse_1 = require_thenElse();
    function getApplicator(draft2020 = false) {
      const applicator = [
        // any
        not_1.default,
        anyOf_1.default,
        oneOf_1.default,
        allOf_1.default,
        if_1.default,
        thenElse_1.default,
        // object
        propertyNames_1.default,
        additionalProperties_1.default,
        dependencies_1.default,
        properties_1.default,
        patternProperties_1.default
      ];
      if (draft2020)
        applicator.push(prefixItems_1.default, items2020_1.default);
      else
        applicator.push(additionalItems_1.default, items_1.default);
      applicator.push(contains_1.default);
      return applicator;
    }
    exports2.default = getApplicator;
  }
});

// node_modules/ajv/dist/vocabularies/format/format.js
var require_format = __commonJS({
  "node_modules/ajv/dist/vocabularies/format/format.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var error = {
      message: ({ schemaCode }) => (0, codegen_1.str)`must match format "${schemaCode}"`,
      params: ({ schemaCode }) => (0, codegen_1._)`{format: ${schemaCode}}`
    };
    var def = {
      keyword: "format",
      type: ["number", "string"],
      schemaType: "string",
      $data: true,
      error,
      code(cxt, ruleType) {
        const { gen, data, $data, schema, schemaCode, it } = cxt;
        const { opts, errSchemaPath, schemaEnv, self } = it;
        if (!opts.validateFormats)
          return;
        if ($data)
          validate$DataFormat();
        else
          validateFormat();
        function validate$DataFormat() {
          const fmts = gen.scopeValue("formats", {
            ref: self.formats,
            code: opts.code.formats
          });
          const fDef = gen.const("fDef", (0, codegen_1._)`${fmts}[${schemaCode}]`);
          const fType = gen.let("fType");
          const format = gen.let("format");
          gen.if((0, codegen_1._)`typeof ${fDef} == "object" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._)`${fDef}.type || "string"`).assign(format, (0, codegen_1._)`${fDef}.validate`), () => gen.assign(fType, (0, codegen_1._)`"string"`).assign(format, fDef));
          cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt()));
          function unknownFmt() {
            if (opts.strictSchema === false)
              return codegen_1.nil;
            return (0, codegen_1._)`${schemaCode} && !${format}`;
          }
          function invalidFmt() {
            const callFormat = schemaEnv.$async ? (0, codegen_1._)`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))` : (0, codegen_1._)`${format}(${data})`;
            const validData = (0, codegen_1._)`(typeof ${format} == "function" ? ${callFormat} : ${format}.test(${data}))`;
            return (0, codegen_1._)`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`;
          }
        }
        function validateFormat() {
          const formatDef = self.formats[schema];
          if (!formatDef) {
            unknownFormat();
            return;
          }
          if (formatDef === true)
            return;
          const [fmtType, format, fmtRef] = getFormat(formatDef);
          if (fmtType === ruleType)
            cxt.pass(validCondition());
          function unknownFormat() {
            if (opts.strictSchema === false) {
              self.logger.warn(unknownMsg());
              return;
            }
            throw new Error(unknownMsg());
            function unknownMsg() {
              return `unknown format "${schema}" ignored in schema at path "${errSchemaPath}"`;
            }
          }
          function getFormat(fmtDef) {
            const code = fmtDef instanceof RegExp ? (0, codegen_1.regexpCode)(fmtDef) : opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(schema)}` : void 0;
            const fmt = gen.scopeValue("formats", { key: schema, ref: fmtDef, code });
            if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) {
              return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`${fmt}.validate`];
            }
            return ["string", fmtDef, fmt];
          }
          function validCondition() {
            if (typeof formatDef == "object" && !(formatDef instanceof RegExp) && formatDef.async) {
              if (!schemaEnv.$async)
                throw new Error("async format in sync schema");
              return (0, codegen_1._)`await ${fmtRef}(${data})`;
            }
            return typeof format == "function" ? (0, codegen_1._)`${fmtRef}(${data})` : (0, codegen_1._)`${fmtRef}.test(${data})`;
          }
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/vocabularies/format/index.js
var require_format2 = __commonJS({
  "node_modules/ajv/dist/vocabularies/format/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var format_1 = require_format();
    var format = [format_1.default];
    exports2.default = format;
  }
});

// node_modules/ajv/dist/vocabularies/metadata.js
var require_metadata = __commonJS({
  "node_modules/ajv/dist/vocabularies/metadata.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.contentVocabulary = exports2.metadataVocabulary = void 0;
    exports2.metadataVocabulary = [
      "title",
      "description",
      "default",
      "deprecated",
      "readOnly",
      "writeOnly",
      "examples"
    ];
    exports2.contentVocabulary = [
      "contentMediaType",
      "contentEncoding",
      "contentSchema"
    ];
  }
});

// node_modules/ajv/dist/vocabularies/draft7.js
var require_draft7 = __commonJS({
  "node_modules/ajv/dist/vocabularies/draft7.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var core_1 = require_core3();
    var validation_1 = require_validation();
    var applicator_1 = require_applicator();
    var format_1 = require_format2();
    var metadata_1 = require_metadata();
    var draft7Vocabularies = [
      core_1.default,
      validation_1.default,
      (0, applicator_1.default)(),
      format_1.default,
      metadata_1.metadataVocabulary,
      metadata_1.contentVocabulary
    ];
    exports2.default = draft7Vocabularies;
  }
});

// node_modules/ajv/dist/vocabularies/discriminator/types.js
var require_types = __commonJS({
  "node_modules/ajv/dist/vocabularies/discriminator/types.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.DiscrError = void 0;
    var DiscrError;
    (function(DiscrError2) {
      DiscrError2["Tag"] = "tag";
      DiscrError2["Mapping"] = "mapping";
    })(DiscrError || (exports2.DiscrError = DiscrError = {}));
  }
});

// node_modules/ajv/dist/vocabularies/discriminator/index.js
var require_discriminator = __commonJS({
  "node_modules/ajv/dist/vocabularies/discriminator/index.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var codegen_1 = require_codegen();
    var types_1 = require_types();
    var compile_1 = require_compile();
    var ref_error_1 = require_ref_error();
    var util_1 = require_util();
    var error = {
      message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag ? `tag "${tagName}" must be string` : `value of tag "${tagName}" must be in oneOf`,
      params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._)`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`
    };
    var def = {
      keyword: "discriminator",
      type: "object",
      schemaType: "object",
      error,
      code(cxt) {
        const { gen, data, schema, parentSchema, it } = cxt;
        const { oneOf } = parentSchema;
        if (!it.opts.discriminator) {
          throw new Error("discriminator: requires discriminator option");
        }
        const tagName = schema.propertyName;
        if (typeof tagName != "string")
          throw new Error("discriminator: requires propertyName");
        if (schema.mapping)
          throw new Error("discriminator: mapping is not supported");
        if (!oneOf)
          throw new Error("discriminator: requires oneOf keyword");
        const valid = gen.let("valid", false);
        const tag = gen.const("tag", (0, codegen_1._)`${data}${(0, codegen_1.getProperty)(tagName)}`);
        gen.if((0, codegen_1._)`typeof ${tag} == "string"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName }));
        cxt.ok(valid);
        function validateMapping() {
          const mapping = getMapping();
          gen.if(false);
          for (const tagValue in mapping) {
            gen.elseIf((0, codegen_1._)`${tag} === ${tagValue}`);
            gen.assign(valid, applyTagSchema(mapping[tagValue]));
          }
          gen.else();
          cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName });
          gen.endIf();
        }
        function applyTagSchema(schemaProp) {
          const _valid = gen.name("valid");
          const schCxt = cxt.subschema({ keyword: "oneOf", schemaProp }, _valid);
          cxt.mergeEvaluated(schCxt, codegen_1.Name);
          return _valid;
        }
        function getMapping() {
          var _a;
          const oneOfMapping = {};
          const topRequired = hasRequired(parentSchema);
          let tagRequired = true;
          for (let i = 0; i < oneOf.length; i++) {
            let sch = oneOf[i];
            if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) {
              const ref = sch.$ref;
              sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref);
              if (sch instanceof compile_1.SchemaEnv)
                sch = sch.schema;
              if (sch === void 0)
                throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref);
            }
            const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName];
            if (typeof propSch != "object") {
              throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${tagName}"`);
            }
            tagRequired = tagRequired && (topRequired || hasRequired(sch));
            addMappings(propSch, i);
          }
          if (!tagRequired)
            throw new Error(`discriminator: "${tagName}" must be required`);
          return oneOfMapping;
          function hasRequired({ required }) {
            return Array.isArray(required) && required.includes(tagName);
          }
          function addMappings(sch, i) {
            if (sch.const) {
              addMapping(sch.const, i);
            } else if (sch.enum) {
              for (const tagValue of sch.enum) {
                addMapping(tagValue, i);
              }
            } else {
              throw new Error(`discriminator: "properties/${tagName}" must have "const" or "enum"`);
            }
          }
          function addMapping(tagValue, i) {
            if (typeof tagValue != "string" || tagValue in oneOfMapping) {
              throw new Error(`discriminator: "${tagName}" values must be unique strings`);
            }
            oneOfMapping[tagValue] = i;
          }
        }
      }
    };
    exports2.default = def;
  }
});

// node_modules/ajv/dist/refs/json-schema-draft-07.json
var require_json_schema_draft_07 = __commonJS({
  "node_modules/ajv/dist/refs/json-schema-draft-07.json"(exports2, module2) {
    module2.exports = {
      $schema: "http://json-schema.org/draft-07/schema#",
      $id: "http://json-schema.org/draft-07/schema#",
      title: "Core schema meta-schema",
      definitions: {
        schemaArray: {
          type: "array",
          minItems: 1,
          items: { $ref: "#" }
        },
        nonNegativeInteger: {
          type: "integer",
          minimum: 0
        },
        nonNegativeIntegerDefault0: {
          allOf: [{ $ref: "#/definitions/nonNegativeInteger" }, { default: 0 }]
        },
        simpleTypes: {
          enum: ["array", "boolean", "integer", "null", "number", "object", "string"]
        },
        stringArray: {
          type: "array",
          items: { type: "string" },
          uniqueItems: true,
          default: []
        }
      },
      type: ["object", "boolean"],
      properties: {
        $id: {
          type: "string",
          format: "uri-reference"
        },
        $schema: {
          type: "string",
          format: "uri"
        },
        $ref: {
          type: "string",
          format: "uri-reference"
        },
        $comment: {
          type: "string"
        },
        title: {
          type: "string"
        },
        description: {
          type: "string"
        },
        default: true,
        readOnly: {
          type: "boolean",
          default: false
        },
        examples: {
          type: "array",
          items: true
        },
        multipleOf: {
          type: "number",
          exclusiveMinimum: 0
        },
        maximum: {
          type: "number"
        },
        exclusiveMaximum: {
          type: "number"
        },
        minimum: {
          type: "number"
        },
        exclusiveMinimum: {
          type: "number"
        },
        maxLength: { $ref: "#/definitions/nonNegativeInteger" },
        minLength: { $ref: "#/definitions/nonNegativeIntegerDefault0" },
        pattern: {
          type: "string",
          format: "regex"
        },
        additionalItems: { $ref: "#" },
        items: {
          anyOf: [{ $ref: "#" }, { $ref: "#/definitions/schemaArray" }],
          default: true
        },
        maxItems: { $ref: "#/definitions/nonNegativeInteger" },
        minItems: { $ref: "#/definitions/nonNegativeIntegerDefault0" },
        uniqueItems: {
          type: "boolean",
          default: false
        },
        contains: { $ref: "#" },
        maxProperties: { $ref: "#/definitions/nonNegativeInteger" },
        minProperties: { $ref: "#/definitions/nonNegativeIntegerDefault0" },
        required: { $ref: "#/definitions/stringArray" },
        additionalProperties: { $ref: "#" },
        definitions: {
          type: "object",
          additionalProperties: { $ref: "#" },
          default: {}
        },
        properties: {
          type: "object",
          additionalProperties: { $ref: "#" },
          default: {}
        },
        patternProperties: {
          type: "object",
          additionalProperties: { $ref: "#" },
          propertyNames: { format: "regex" },
          default: {}
        },
        dependencies: {
          type: "object",
          additionalProperties: {
            anyOf: [{ $ref: "#" }, { $ref: "#/definitions/stringArray" }]
          }
        },
        propertyNames: { $ref: "#" },
        const: true,
        enum: {
          type: "array",
          items: true,
          minItems: 1,
          uniqueItems: true
        },
        type: {
          anyOf: [
            { $ref: "#/definitions/simpleTypes" },
            {
              type: "array",
              items: { $ref: "#/definitions/simpleTypes" },
              minItems: 1,
              uniqueItems: true
            }
          ]
        },
        format: { type: "string" },
        contentMediaType: { type: "string" },
        contentEncoding: { type: "string" },
        if: { $ref: "#" },
        then: { $ref: "#" },
        else: { $ref: "#" },
        allOf: { $ref: "#/definitions/schemaArray" },
        anyOf: { $ref: "#/definitions/schemaArray" },
        oneOf: { $ref: "#/definitions/schemaArray" },
        not: { $ref: "#" }
      },
      default: true
    };
  }
});

// node_modules/ajv/dist/ajv.js
var require_ajv = __commonJS({
  "node_modules/ajv/dist/ajv.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.MissingRefError = exports2.ValidationError = exports2.CodeGen = exports2.Name = exports2.nil = exports2.stringify = exports2.str = exports2._ = exports2.KeywordCxt = exports2.Ajv = void 0;
    var core_1 = require_core2();
    var draft7_1 = require_draft7();
    var discriminator_1 = require_discriminator();
    var draft7MetaSchema = require_json_schema_draft_07();
    var META_SUPPORT_DATA = ["/properties"];
    var META_SCHEMA_ID = "http://json-schema.org/draft-07/schema";
    var Ajv2 = class extends core_1.default {
      _addVocabularies() {
        super._addVocabularies();
        draft7_1.default.forEach((v) => this.addVocabulary(v));
        if (this.opts.discriminator)
          this.addKeyword(discriminator_1.default);
      }
      _addDefaultMetaSchema() {
        super._addDefaultMetaSchema();
        if (!this.opts.meta)
          return;
        const metaSchema = this.opts.$data ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA) : draft7MetaSchema;
        this.addMetaSchema(metaSchema, META_SCHEMA_ID, false);
        this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID;
      }
      defaultMeta() {
        return this.opts.defaultMeta = super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : void 0);
      }
    };
    exports2.Ajv = Ajv2;
    module2.exports = exports2 = Ajv2;
    module2.exports.Ajv = Ajv2;
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.default = Ajv2;
    var validate_1 = require_validate();
    Object.defineProperty(exports2, "KeywordCxt", { enumerable: true, get: function() {
      return validate_1.KeywordCxt;
    } });
    var codegen_1 = require_codegen();
    Object.defineProperty(exports2, "_", { enumerable: true, get: function() {
      return codegen_1._;
    } });
    Object.defineProperty(exports2, "str", { enumerable: true, get: function() {
      return codegen_1.str;
    } });
    Object.defineProperty(exports2, "stringify", { enumerable: true, get: function() {
      return codegen_1.stringify;
    } });
    Object.defineProperty(exports2, "nil", { enumerable: true, get: function() {
      return codegen_1.nil;
    } });
    Object.defineProperty(exports2, "Name", { enumerable: true, get: function() {
      return codegen_1.Name;
    } });
    Object.defineProperty(exports2, "CodeGen", { enumerable: true, get: function() {
      return codegen_1.CodeGen;
    } });
    var validation_error_1 = require_validation_error();
    Object.defineProperty(exports2, "ValidationError", { enumerable: true, get: function() {
      return validation_error_1.default;
    } });
    var ref_error_1 = require_ref_error();
    Object.defineProperty(exports2, "MissingRefError", { enumerable: true, get: function() {
      return ref_error_1.default;
    } });
  }
});

// node_modules/ajv-formats/dist/formats.js
var require_formats = __commonJS({
  "node_modules/ajv-formats/dist/formats.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.formatNames = exports2.fastFormats = exports2.fullFormats = void 0;
    function fmtDef(validate, compare) {
      return { validate, compare };
    }
    exports2.fullFormats = {
      // date: http://tools.ietf.org/html/rfc3339#section-5.6
      date: fmtDef(date, compareDate),
      // date-time: http://tools.ietf.org/html/rfc3339#section-5.6
      time: fmtDef(getTime(true), compareTime),
      "date-time": fmtDef(getDateTime(true), compareDateTime),
      "iso-time": fmtDef(getTime(), compareIsoTime),
      "iso-date-time": fmtDef(getDateTime(), compareIsoDateTime),
      // duration: https://tools.ietf.org/html/rfc3339#appendix-A
      duration: /^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,
      uri,
      "uri-reference": /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,
      // uri-template: https://tools.ietf.org/html/rfc6570
      "uri-template": /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,
      // For the source: https://gist.github.com/dperini/729294
      // For test cases: https://mathiasbynens.be/demo/url-regex
      url: /^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,
      email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,
      hostname: /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,
      // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
      ipv4: /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,
      ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,
      regex,
      // uuid: http://tools.ietf.org/html/rfc4122
      uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,
      // JSON-pointer: https://tools.ietf.org/html/rfc6901
      // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A
      "json-pointer": /^(?:\/(?:[^~/]|~0|~1)*)*$/,
      "json-pointer-uri-fragment": /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,
      // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00
      "relative-json-pointer": /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,
      // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types
      // byte: https://github.com/miguelmota/is-base64
      byte,
      // signed 32 bit integer
      int32: { type: "number", validate: validateInt32 },
      // signed 64 bit integer
      int64: { type: "number", validate: validateInt64 },
      // C-type float
      float: { type: "number", validate: validateNumber },
      // C-type double
      double: { type: "number", validate: validateNumber },
      // hint to the UI to hide input strings
      password: true,
      // unchecked string payload
      binary: true
    };
    exports2.fastFormats = {
      ...exports2.fullFormats,
      date: fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d$/, compareDate),
      time: fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, compareTime),
      "date-time": fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, compareDateTime),
      "iso-time": fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, compareIsoTime),
      "iso-date-time": fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, compareIsoDateTime),
      // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js
      uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,
      "uri-reference": /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,
      // email (sources from jsen validator):
      // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
      // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')
      email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i
    };
    exports2.formatNames = Object.keys(exports2.fullFormats);
    function isLeapYear(year) {
      return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
    }
    var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
    var DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    function date(str) {
      const matches = DATE.exec(str);
      if (!matches)
        return false;
      const year = +matches[1];
      const month = +matches[2];
      const day = +matches[3];
      return month >= 1 && month <= 12 && day >= 1 && day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month]);
    }
    function compareDate(d1, d2) {
      if (!(d1 && d2))
        return void 0;
      if (d1 > d2)
        return 1;
      if (d1 < d2)
        return -1;
      return 0;
    }
    var TIME = /^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;
    function getTime(strictTimeZone) {
      return function time(str) {
        const matches = TIME.exec(str);
        if (!matches)
          return false;
        const hr = +matches[1];
        const min = +matches[2];
        const sec = +matches[3];
        const tz = matches[4];
        const tzSign = matches[5] === "-" ? -1 : 1;
        const tzH = +(matches[6] || 0);
        const tzM = +(matches[7] || 0);
        if (tzH > 23 || tzM > 59 || strictTimeZone && !tz)
          return false;
        if (hr <= 23 && min <= 59 && sec < 60)
          return true;
        const utcMin = min - tzM * tzSign;
        const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0);
        return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61;
      };
    }
    function compareTime(s1, s2) {
      if (!(s1 && s2))
        return void 0;
      const t1 = (/* @__PURE__ */ new Date("2020-01-01T" + s1)).valueOf();
      const t2 = (/* @__PURE__ */ new Date("2020-01-01T" + s2)).valueOf();
      if (!(t1 && t2))
        return void 0;
      return t1 - t2;
    }
    function compareIsoTime(t1, t2) {
      if (!(t1 && t2))
        return void 0;
      const a1 = TIME.exec(t1);
      const a2 = TIME.exec(t2);
      if (!(a1 && a2))
        return void 0;
      t1 = a1[1] + a1[2] + a1[3];
      t2 = a2[1] + a2[2] + a2[3];
      if (t1 > t2)
        return 1;
      if (t1 < t2)
        return -1;
      return 0;
    }
    var DATE_TIME_SEPARATOR = /t|\s/i;
    function getDateTime(strictTimeZone) {
      const time = getTime(strictTimeZone);
      return function date_time(str) {
        const dateTime = str.split(DATE_TIME_SEPARATOR);
        return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1]);
      };
    }
    function compareDateTime(dt1, dt2) {
      if (!(dt1 && dt2))
        return void 0;
      const d1 = new Date(dt1).valueOf();
      const d2 = new Date(dt2).valueOf();
      if (!(d1 && d2))
        return void 0;
      return d1 - d2;
    }
    function compareIsoDateTime(dt1, dt2) {
      if (!(dt1 && dt2))
        return void 0;
      const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR);
      const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR);
      const res = compareDate(d1, d2);
      if (res === void 0)
        return void 0;
      return res || compareTime(t1, t2);
    }
    var NOT_URI_FRAGMENT = /\/|:/;
    var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
    function uri(str) {
      return NOT_URI_FRAGMENT.test(str) && URI.test(str);
    }
    var BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;
    function byte(str) {
      BYTE.lastIndex = 0;
      return BYTE.test(str);
    }
    var MIN_INT32 = -(2 ** 31);
    var MAX_INT32 = 2 ** 31 - 1;
    function validateInt32(value) {
      return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32;
    }
    function validateInt64(value) {
      return Number.isInteger(value);
    }
    function validateNumber() {
      return true;
    }
    var Z_ANCHOR = /[^\\]\\Z/;
    function regex(str) {
      if (Z_ANCHOR.test(str))
        return false;
      try {
        new RegExp(str);
        return true;
      } catch (e) {
        return false;
      }
    }
  }
});

// node_modules/ajv-formats/dist/limit.js
var require_limit = __commonJS({
  "node_modules/ajv-formats/dist/limit.js"(exports2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.formatLimitDefinition = void 0;
    var ajv_1 = require_ajv();
    var codegen_1 = require_codegen();
    var ops = codegen_1.operators;
    var KWDs = {
      formatMaximum: { okStr: "<=", ok: ops.LTE, fail: ops.GT },
      formatMinimum: { okStr: ">=", ok: ops.GTE, fail: ops.LT },
      formatExclusiveMaximum: { okStr: "<", ok: ops.LT, fail: ops.GTE },
      formatExclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE }
    };
    var error = {
      message: ({ keyword, schemaCode }) => (0, codegen_1.str)`should be ${KWDs[keyword].okStr} ${schemaCode}`,
      params: ({ keyword, schemaCode }) => (0, codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`
    };
    exports2.formatLimitDefinition = {
      keyword: Object.keys(KWDs),
      type: "string",
      schemaType: "string",
      $data: true,
      error,
      code(cxt) {
        const { gen, data, schemaCode, keyword, it } = cxt;
        const { opts, self } = it;
        if (!opts.validateFormats)
          return;
        const fCxt = new ajv_1.KeywordCxt(it, self.RULES.all.format.definition, "format");
        if (fCxt.$data)
          validate$DataFormat();
        else
          validateFormat();
        function validate$DataFormat() {
          const fmts = gen.scopeValue("formats", {
            ref: self.formats,
            code: opts.code.formats
          });
          const fmt = gen.const("fmt", (0, codegen_1._)`${fmts}[${fCxt.schemaCode}]`);
          cxt.fail$data((0, codegen_1.or)((0, codegen_1._)`typeof ${fmt} != "object"`, (0, codegen_1._)`${fmt} instanceof RegExp`, (0, codegen_1._)`typeof ${fmt}.compare != "function"`, compareCode(fmt)));
        }
        function validateFormat() {
          const format = fCxt.schema;
          const fmtDef = self.formats[format];
          if (!fmtDef || fmtDef === true)
            return;
          if (typeof fmtDef != "object" || fmtDef instanceof RegExp || typeof fmtDef.compare != "function") {
            throw new Error(`"${keyword}": format "${format}" does not define "compare" function`);
          }
          const fmt = gen.scopeValue("formats", {
            key: format,
            ref: fmtDef,
            code: opts.code.formats ? (0, codegen_1._)`${opts.code.formats}${(0, codegen_1.getProperty)(format)}` : void 0
          });
          cxt.fail$data(compareCode(fmt));
        }
        function compareCode(fmt) {
          return (0, codegen_1._)`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword].fail} 0`;
        }
      },
      dependencies: ["format"]
    };
    var formatLimitPlugin = (ajv2) => {
      ajv2.addKeyword(exports2.formatLimitDefinition);
      return ajv2;
    };
    exports2.default = formatLimitPlugin;
  }
});

// node_modules/ajv-formats/dist/index.js
var require_dist = __commonJS({
  "node_modules/ajv-formats/dist/index.js"(exports2, module2) {
    "use strict";
    Object.defineProperty(exports2, "__esModule", { value: true });
    var formats_1 = require_formats();
    var limit_1 = require_limit();
    var codegen_1 = require_codegen();
    var fullName = new codegen_1.Name("fullFormats");
    var fastName = new codegen_1.Name("fastFormats");
    var formatsPlugin = (ajv2, opts = { keywords: true }) => {
      if (Array.isArray(opts)) {
        addFormats2(ajv2, opts, formats_1.fullFormats, fullName);
        return ajv2;
      }
      const [formats, exportName] = opts.mode === "fast" ? [formats_1.fastFormats, fastName] : [formats_1.fullFormats, fullName];
      const list = opts.formats || formats_1.formatNames;
      addFormats2(ajv2, list, formats, exportName);
      if (opts.keywords)
        (0, limit_1.default)(ajv2);
      return ajv2;
    };
    formatsPlugin.get = (name, mode = "full") => {
      const formats = mode === "fast" ? formats_1.fastFormats : formats_1.fullFormats;
      const f = formats[name];
      if (!f)
        throw new Error(`Unknown format "${name}"`);
      return f;
    };
    function addFormats2(ajv2, list, fs, exportName) {
      var _a;
      var _b;
      (_a = (_b = ajv2.opts.code).formats) !== null && _a !== void 0 ? _a : _b.formats = (0, codegen_1._)`require("ajv-formats/dist/formats").${exportName}`;
      for (const f of list)
        ajv2.addFormat(f, fs[f]);
    }
    module2.exports = exports2 = formatsPlugin;
    Object.defineProperty(exports2, "__esModule", { value: true });
    exports2.default = formatsPlugin;
  }
});

// node_modules/keet-identity-key/node_modules/compact-encoding/endian.js
var require_endian3 = __commonJS({
  "node_modules/keet-identity-key/node_modules/compact-encoding/endian.js"(exports2) {
    var LE = exports2.LE = new Uint8Array(new Uint16Array([255]).buffer)[0] === 255;
    exports2.BE = !LE;
  }
});

// node_modules/keet-identity-key/node_modules/compact-encoding/raw.js
var require_raw3 = __commonJS({
  "node_modules/keet-identity-key/node_modules/compact-encoding/raw.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var { BE } = require_endian3();
    exports2 = module2.exports = {
      preencode(state, b) {
        state.end += b.byteLength;
      },
      encode(state, b) {
        state.buffer.set(b, state.start);
        state.start += b.byteLength;
      },
      decode(state) {
        const b = state.buffer.subarray(state.start, state.end);
        state.start = state.end;
        return b;
      }
    };
    var buffer = exports2.buffer = {
      preencode(state, b) {
        uint8array.preencode(state, b);
      },
      encode(state, b) {
        uint8array.encode(state, b);
      },
      decode(state) {
        const b = state.buffer.subarray(state.start);
        state.start = state.end;
        return b;
      }
    };
    exports2.binary = {
      ...buffer,
      preencode(state, b) {
        if (typeof b === "string") utf8.preencode(state, b);
        else buffer.preencode(state, b);
      },
      encode(state, b) {
        if (typeof b === "string") utf8.encode(state, b);
        else buffer.encode(state, b);
      }
    };
    exports2.arraybuffer = {
      preencode(state, b) {
        state.end += b.byteLength;
      },
      encode(state, b) {
        const view = new Uint8Array(b);
        state.buffer.set(view, state.start);
        state.start += b.byteLength;
      },
      decode(state) {
        const b = new ArrayBuffer(state.end - state.start);
        const view = new Uint8Array(b);
        view.set(state.buffer.subarray(state.start));
        state.start = state.end;
        return b;
      }
    };
    function typedarray(TypedArray, swap) {
      const n = TypedArray.BYTES_PER_ELEMENT;
      return {
        preencode(state, b) {
          state.end += b.byteLength;
        },
        encode(state, b) {
          const view = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
          if (BE && swap) swap(view);
          state.buffer.set(view, state.start);
          state.start += b.byteLength;
        },
        decode(state) {
          let b = state.buffer.subarray(state.start);
          if (b.byteOffset % n !== 0) b = new Uint8Array(b);
          if (BE && swap) swap(b);
          state.start = state.end;
          return new TypedArray(b.buffer, b.byteOffset, b.byteLength / n);
        }
      };
    }
    var uint8array = exports2.uint8array = typedarray(Uint8Array);
    exports2.uint16array = typedarray(Uint16Array, b4a4.swap16);
    exports2.uint32array = typedarray(Uint32Array, b4a4.swap32);
    exports2.int8array = typedarray(Int8Array);
    exports2.int16array = typedarray(Int16Array, b4a4.swap16);
    exports2.int32array = typedarray(Int32Array, b4a4.swap32);
    exports2.biguint64array = typedarray(BigUint64Array, b4a4.swap64);
    exports2.bigint64array = typedarray(BigInt64Array, b4a4.swap64);
    exports2.float32array = typedarray(Float32Array, b4a4.swap32);
    exports2.float64array = typedarray(Float64Array, b4a4.swap64);
    function string(encoding) {
      return {
        preencode(state, s) {
          state.end += b4a4.byteLength(s, encoding);
        },
        encode(state, s) {
          state.start += b4a4.write(state.buffer, s, state.start, encoding);
        },
        decode(state) {
          const s = b4a4.toString(state.buffer, encoding, state.start);
          state.start = state.end;
          return s;
        }
      };
    }
    var utf8 = exports2.string = exports2.utf8 = string("utf-8");
    exports2.ascii = string("ascii");
    exports2.hex = string("hex");
    exports2.base64 = string("base64");
    exports2.ucs2 = exports2.utf16le = string("utf16le");
    exports2.array = function array(enc) {
      return {
        preencode(state, list) {
          for (const value of list) enc.preencode(state, value);
        },
        encode(state, list) {
          for (const value of list) enc.encode(state, value);
        },
        decode(state) {
          const arr = [];
          while (state.start < state.end) arr.push(enc.decode(state));
          return arr;
        }
      };
    };
    exports2.json = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v));
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v));
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
    exports2.ndjson = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v) + "\n");
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v) + "\n");
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
  }
});

// node_modules/keet-identity-key/node_modules/compact-encoding/lexint.js
var require_lexint3 = __commonJS({
  "node_modules/keet-identity-key/node_modules/compact-encoding/lexint.js"(exports2, module2) {
    module2.exports = {
      preencode,
      encode: encode2,
      decode: decode2
    };
    function preencode(state, num) {
      if (num < 251) {
        state.end++;
      } else if (num < 256) {
        state.end += 2;
      } else if (num < 65536) {
        state.end += 3;
      } else if (num < 16777216) {
        state.end += 4;
      } else if (num < 4294967296) {
        state.end += 5;
      } else {
        state.end++;
        const exp = Math.floor(Math.log(num) / Math.log(2)) - 32;
        preencode(state, exp);
        state.end += 6;
      }
    }
    function encode2(state, num) {
      const max = 251;
      const x = num - max;
      if (num < max) {
        state.buffer[state.start++] = num;
      } else if (num < 256) {
        state.buffer[state.start++] = max;
        state.buffer[state.start++] = x;
      } else if (num < 65536) {
        state.buffer[state.start++] = max + 1;
        state.buffer[state.start++] = x >> 8 & 255;
        state.buffer[state.start++] = x & 255;
      } else if (num < 16777216) {
        state.buffer[state.start++] = max + 2;
        state.buffer[state.start++] = x >> 16;
        state.buffer[state.start++] = x >> 8 & 255;
        state.buffer[state.start++] = x & 255;
      } else if (num < 4294967296) {
        state.buffer[state.start++] = max + 3;
        state.buffer[state.start++] = x >> 24;
        state.buffer[state.start++] = x >> 16 & 255;
        state.buffer[state.start++] = x >> 8 & 255;
        state.buffer[state.start++] = x & 255;
      } else {
        const exp = Math.floor(Math.log(x) / Math.log(2)) - 32;
        state.buffer[state.start++] = 255;
        encode2(state, exp);
        const rem = x / Math.pow(2, exp - 11);
        for (let i = 5; i >= 0; i--) {
          state.buffer[state.start++] = rem / Math.pow(2, 8 * i) & 255;
        }
      }
    }
    function decode2(state) {
      const max = 251;
      if (state.end - state.start < 1) throw new Error("Out of bounds");
      const flag = state.buffer[state.start++];
      if (flag < max) return flag;
      if (state.end - state.start < flag - max + 1) {
        throw new Error("Out of bounds.");
      }
      if (flag < 252) {
        return state.buffer[state.start++] + max;
      }
      if (flag < 253) {
        return (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max;
      }
      if (flag < 254) {
        return (state.buffer[state.start++] << 16) + (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max;
      }
      if (flag < 255) {
        return state.buffer[state.start++] * 16777216 + (state.buffer[state.start++] << 16) + (state.buffer[state.start++] << 8) + state.buffer[state.start++] + max;
      }
      const exp = decode2(state);
      if (state.end - state.start < 6) throw new Error("Out of bounds");
      let rem = 0;
      for (let i = 5; i >= 0; i--) {
        rem += state.buffer[state.start++] * Math.pow(2, 8 * i);
      }
      return rem * Math.pow(2, exp - 11) + max;
    }
  }
});

// node_modules/keet-identity-key/node_modules/compact-encoding/index.js
var require_compact_encoding3 = __commonJS({
  "node_modules/keet-identity-key/node_modules/compact-encoding/index.js"(exports2) {
    var b4a4 = require_b4a();
    var { BE } = require_endian3();
    exports2.state = function(start = 0, end = 0, buffer2 = null) {
      return { start, end, buffer: buffer2 };
    };
    var raw = exports2.raw = require_raw3();
    var uint = exports2.uint = {
      preencode(state, n) {
        state.end += n <= 252 ? 1 : n <= 65535 ? 3 : n <= 4294967295 ? 5 : 9;
      },
      encode(state, n) {
        if (n <= 252) uint8.encode(state, n);
        else if (n <= 65535) {
          state.buffer[state.start++] = 253;
          uint16.encode(state, n);
        } else if (n <= 4294967295) {
          state.buffer[state.start++] = 254;
          uint32.encode(state, n);
        } else {
          state.buffer[state.start++] = 255;
          uint64.encode(state, n);
        }
      },
      decode(state) {
        const a = uint8.decode(state);
        if (a <= 252) return a;
        if (a === 253) return uint16.decode(state);
        if (a === 254) return uint32.decode(state);
        return uint64.decode(state);
      }
    };
    var uint8 = exports2.uint8 = {
      preencode(state, n) {
        state.end += 1;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
      },
      decode(state) {
        if (state.start >= state.end) throw new Error("Out of bounds");
        return state.buffer[state.start++];
      }
    };
    var uint16 = exports2.uint16 = {
      preencode(state, n) {
        state.end += 2;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
        state.buffer[state.start++] = n >>> 8;
      },
      decode(state) {
        if (state.end - state.start < 2) throw new Error("Out of bounds");
        return state.buffer[state.start++] + state.buffer[state.start++] * 256;
      }
    };
    var uint24 = exports2.uint24 = {
      preencode(state, n) {
        state.end += 3;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n >>> 16;
      },
      decode(state) {
        if (state.end - state.start < 3) throw new Error("Out of bounds");
        return state.buffer[state.start++] + state.buffer[state.start++] * 256 + state.buffer[state.start++] * 65536;
      }
    };
    var uint32 = exports2.uint32 = {
      preencode(state, n) {
        state.end += 4;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n >>> 16;
        state.buffer[state.start++] = n >>> 24;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        return state.buffer[state.start++] + state.buffer[state.start++] * 256 + state.buffer[state.start++] * 65536 + state.buffer[state.start++] * 16777216;
      }
    };
    var uint32be = exports2.uint32be = {
      preencode(state, n) {
        state.end += 4;
      },
      encode(state, n) {
        validateUint(n);
        state.buffer[state.start++] = n >>> 24;
        state.buffer[state.start++] = n >>> 16;
        state.buffer[state.start++] = n >>> 8;
        state.buffer[state.start++] = n;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        return state.buffer[state.start++] * 16777216 + state.buffer[state.start++] * 65536 + state.buffer[state.start++] * 256 + state.buffer[state.start++];
      }
    };
    var uint40 = exports2.uint40 = {
      preencode(state, n) {
        state.end += 5;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 256);
        uint8.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 5) throw new Error("Out of bounds");
        return uint8.decode(state) + 256 * uint32.decode(state);
      }
    };
    var uint48 = exports2.uint48 = {
      preencode(state, n) {
        state.end += 6;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 65536);
        uint16.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 6) throw new Error("Out of bounds");
        return uint16.decode(state) + 65536 * uint32.decode(state);
      }
    };
    var uint56 = exports2.uint56 = {
      preencode(state, n) {
        state.end += 7;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 16777216);
        uint24.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 7) throw new Error("Out of bounds");
        return uint24.decode(state) + 16777216 * uint32.decode(state);
      }
    };
    var uint64 = exports2.uint64 = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 4294967296);
        uint32.encode(state, n);
        uint32.encode(state, r);
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        return uint32.decode(state) + 4294967296 * uint32.decode(state);
      }
    };
    exports2.uint64be = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        validateUint(n);
        const r = Math.floor(n / 4294967296);
        uint32be.encode(state, r);
        uint32be.encode(state, n);
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        return 4294967296 * uint32be.decode(state) + uint32be.decode(state);
      }
    };
    var int = exports2.int = zigZagInt(uint);
    exports2.int8 = zigZagInt(uint8);
    exports2.int16 = zigZagInt(uint16);
    exports2.int24 = zigZagInt(uint24);
    exports2.int32 = zigZagInt(uint32);
    exports2.int40 = zigZagInt(uint40);
    exports2.int48 = zigZagInt(uint48);
    exports2.int56 = zigZagInt(uint56);
    exports2.int64 = zigZagInt(uint64);
    var biguint64 = exports2.biguint64 = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        view.setBigUint64(0, n, true);
        state.start += 8;
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        const n = view.getBigUint64(0, true);
        state.start += 8;
        return n;
      }
    };
    exports2.bigint64 = zigZagBigInt(biguint64);
    var biguint = exports2.biguint = {
      preencode(state, n) {
        let len = 0;
        for (let m = n; m; m = m >> 64n) len++;
        uint.preencode(state, len);
        state.end += 8 * len;
      },
      encode(state, n) {
        let len = 0;
        for (let m = n; m; m = m >> 64n) len++;
        uint.encode(state, len);
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8 * len
        );
        for (let m = n, i = 0; m; m = m >> 64n, i += 8) {
          view.setBigUint64(i, BigInt.asUintN(64, m), true);
        }
        state.start += 8 * len;
      },
      decode(state) {
        const len = uint.decode(state);
        if (state.end - state.start < 8 * len) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8 * len
        );
        let n = 0n;
        for (let i = len - 1; i >= 0; i--)
          n = (n << 64n) + view.getBigUint64(i * 8, true);
        state.start += 8 * len;
        return n;
      }
    };
    exports2.bigint = zigZagBigInt(biguint);
    exports2.lexint = require_lexint3();
    exports2.float32 = {
      preencode(state, n) {
        state.end += 4;
      },
      encode(state, n) {
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          4
        );
        view.setFloat32(0, n, true);
        state.start += 4;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          4
        );
        const float = view.getFloat32(0, true);
        state.start += 4;
        return float;
      }
    };
    exports2.float64 = {
      preencode(state, n) {
        state.end += 8;
      },
      encode(state, n) {
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        view.setFloat64(0, n, true);
        state.start += 8;
      },
      decode(state) {
        if (state.end - state.start < 8) throw new Error("Out of bounds");
        const view = new DataView(
          state.buffer.buffer,
          state.start + state.buffer.byteOffset,
          8
        );
        const float = view.getFloat64(0, true);
        state.start += 8;
        return float;
      }
    };
    var buffer = exports2.buffer = {
      preencode(state, b) {
        uint8array.preencode(state, b);
      },
      encode(state, b) {
        uint8array.encode(state, b);
      },
      decode(state) {
        const len = uint.decode(state);
        if (state.end - state.start < len) throw new Error("Out of bounds");
        return state.buffer.subarray(state.start, state.start += len);
      }
    };
    exports2.optionalBuffer = {
      preencode(state, b) {
        if (b) uint8array.preencode(state, b);
        else state.end++;
      },
      encode(state, b) {
        if (b) uint8array.encode(state, b);
        else state.buffer[state.start++] = 0;
      },
      decode(state) {
        const len = uint.decode(state);
        if (len === 0) return null;
        if (state.end - state.start < len) throw new Error("Out of bounds");
        return state.buffer.subarray(state.start, state.start += len);
      }
    };
    exports2.binary = {
      ...buffer,
      preencode(state, b) {
        if (typeof b === "string") utf8.preencode(state, b);
        else buffer.preencode(state, b);
      },
      encode(state, b) {
        if (typeof b === "string") utf8.encode(state, b);
        else buffer.encode(state, b);
      }
    };
    exports2.arraybuffer = {
      preencode(state, b) {
        uint.preencode(state, b.byteLength);
        state.end += b.byteLength;
      },
      encode(state, b) {
        uint.encode(state, b.byteLength);
        const view = new Uint8Array(b);
        state.buffer.set(view, state.start);
        state.start += b.byteLength;
      },
      decode(state) {
        const len = uint.decode(state);
        const b = new ArrayBuffer(len);
        const view = new Uint8Array(b);
        view.set(state.buffer.subarray(state.start, state.start += len));
        return b;
      }
    };
    function typedarray(TypedArray, swap) {
      const n = TypedArray.BYTES_PER_ELEMENT;
      return {
        preencode(state, b) {
          uint.preencode(state, b.length);
          state.end += b.byteLength;
        },
        encode(state, b) {
          uint.encode(state, b.length);
          const view = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
          if (BE && swap) swap(view);
          state.buffer.set(view, state.start);
          state.start += b.byteLength;
        },
        decode(state) {
          const len = uint.decode(state);
          let b = state.buffer.subarray(state.start, state.start += len * n);
          if (b.byteLength !== len * n) throw new Error("Out of bounds");
          if (b.byteOffset % n !== 0) b = new Uint8Array(b);
          if (BE && swap) swap(b);
          return new TypedArray(b.buffer, b.byteOffset, b.byteLength / n);
        }
      };
    }
    var uint8array = exports2.uint8array = typedarray(Uint8Array);
    exports2.uint16array = typedarray(Uint16Array, b4a4.swap16);
    exports2.uint32array = typedarray(Uint32Array, b4a4.swap32);
    exports2.int8array = typedarray(Int8Array);
    exports2.int16array = typedarray(Int16Array, b4a4.swap16);
    exports2.int32array = typedarray(Int32Array, b4a4.swap32);
    exports2.biguint64array = typedarray(BigUint64Array, b4a4.swap64);
    exports2.bigint64array = typedarray(BigInt64Array, b4a4.swap64);
    exports2.float32array = typedarray(Float32Array, b4a4.swap32);
    exports2.float64array = typedarray(Float64Array, b4a4.swap64);
    function string(encoding) {
      return {
        preencode(state, s) {
          const len = b4a4.byteLength(s, encoding);
          uint.preencode(state, len);
          state.end += len;
        },
        encode(state, s) {
          const len = b4a4.byteLength(s, encoding);
          uint.encode(state, len);
          b4a4.write(state.buffer, s, state.start, encoding);
          state.start += len;
        },
        decode(state) {
          const len = uint.decode(state);
          if (state.end - state.start < len) throw new Error("Out of bounds");
          return b4a4.toString(
            state.buffer,
            encoding,
            state.start,
            state.start += len
          );
        },
        fixed(n) {
          return {
            preencode(state) {
              state.end += n;
            },
            encode(state, s) {
              b4a4.write(state.buffer, s, state.start, n, encoding);
              state.start += n;
            },
            decode(state) {
              if (state.end - state.start < n) throw new Error("Out of bounds");
              return b4a4.toString(
                state.buffer,
                encoding,
                state.start,
                state.start += n
              );
            }
          };
        }
      };
    }
    var utf8 = exports2.string = exports2.utf8 = string("utf-8");
    exports2.ascii = string("ascii");
    exports2.hex = string("hex");
    exports2.base64 = string("base64");
    exports2.ucs2 = exports2.utf16le = string("utf16le");
    exports2.bool = {
      preencode(state, b) {
        state.end++;
      },
      encode(state, b) {
        state.buffer[state.start++] = b ? 1 : 0;
      },
      decode(state) {
        if (state.start >= state.end) throw Error("Out of bounds");
        return state.buffer[state.start++] === 1;
      }
    };
    var fixed = exports2.fixed = function fixed2(n) {
      return {
        preencode(state, s) {
          if (s.byteLength !== n) throw new Error("Incorrect buffer size");
          state.end += n;
        },
        encode(state, s) {
          state.buffer.set(s, state.start);
          state.start += n;
        },
        decode(state) {
          if (state.end - state.start < n) throw new Error("Out of bounds");
          return state.buffer.subarray(state.start, state.start += n);
        }
      };
    };
    exports2.fixed32 = fixed(32);
    exports2.fixed64 = fixed(64);
    exports2.array = function array(enc) {
      return {
        preencode(state, list) {
          uint.preencode(state, list.length);
          for (let i = 0; i < list.length; i++) enc.preencode(state, list[i]);
        },
        encode(state, list) {
          uint.encode(state, list.length);
          for (let i = 0; i < list.length; i++) enc.encode(state, list[i]);
        },
        decode(state) {
          const len = uint.decode(state);
          if (len > 1048576) throw new Error("Array is too big");
          const arr = new Array(len);
          for (let i = 0; i < len; i++) arr[i] = enc.decode(state);
          return arr;
        }
      };
    };
    exports2.frame = function frame(enc) {
      const dummy = exports2.state();
      return {
        preencode(state, m) {
          const end = state.end;
          enc.preencode(state, m);
          uint.preencode(state, state.end - end);
        },
        encode(state, m) {
          dummy.end = 0;
          enc.preencode(dummy, m);
          uint.encode(state, dummy.end);
          enc.encode(state, m);
        },
        decode(state) {
          const end = state.end;
          const len = uint.decode(state);
          state.end = state.start + len;
          const m = enc.decode(state);
          state.start = state.end;
          state.end = end;
          return m;
        }
      };
    };
    exports2.date = {
      preencode(state, d) {
        int.preencode(state, d.getTime());
      },
      encode(state, d) {
        int.encode(state, d.getTime());
      },
      decode(state, d) {
        return new Date(int.decode(state));
      }
    };
    exports2.json = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v));
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v));
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
    exports2.ndjson = {
      preencode(state, v) {
        utf8.preencode(state, JSON.stringify(v) + "\n");
      },
      encode(state, v) {
        utf8.encode(state, JSON.stringify(v) + "\n");
      },
      decode(state) {
        return JSON.parse(utf8.decode(state));
      }
    };
    exports2.none = {
      preencode(state, n) {
      },
      encode(state, n) {
      },
      decode(state) {
        return null;
      }
    };
    var anyArray = {
      preencode(state, arr) {
        uint.preencode(state, arr.length);
        for (let i = 0; i < arr.length; i++) {
          any.preencode(state, arr[i]);
        }
      },
      encode(state, arr) {
        uint.encode(state, arr.length);
        for (let i = 0; i < arr.length; i++) {
          any.encode(state, arr[i]);
        }
      },
      decode(state) {
        const arr = [];
        let len = uint.decode(state);
        while (len-- > 0) {
          arr.push(any.decode(state));
        }
        return arr;
      }
    };
    var anyObject = {
      preencode(state, o) {
        const keys = Object.keys(o);
        uint.preencode(state, keys.length);
        for (const key of keys) {
          utf8.preencode(state, key);
          any.preencode(state, o[key]);
        }
      },
      encode(state, o) {
        const keys = Object.keys(o);
        uint.encode(state, keys.length);
        for (const key of keys) {
          utf8.encode(state, key);
          any.encode(state, o[key]);
        }
      },
      decode(state) {
        let len = uint.decode(state);
        const o = {};
        while (len-- > 0) {
          const key = utf8.decode(state);
          o[key] = any.decode(state);
        }
        return o;
      }
    };
    var anyTypes = [
      exports2.none,
      exports2.bool,
      exports2.string,
      exports2.buffer,
      exports2.uint,
      exports2.int,
      exports2.float64,
      anyArray,
      anyObject,
      exports2.date
    ];
    var any = exports2.any = {
      preencode(state, o) {
        const t = getType(o);
        uint.preencode(state, t);
        anyTypes[t].preencode(state, o);
      },
      encode(state, o) {
        const t = getType(o);
        uint.encode(state, t);
        anyTypes[t].encode(state, o);
      },
      decode(state) {
        const t = uint.decode(state);
        if (t >= anyTypes.length) throw new Error("Unknown type: " + t);
        return anyTypes[t].decode(state);
      }
    };
    var port = exports2.port = uint16;
    var address = (host, family) => {
      return {
        preencode(state, m) {
          host.preencode(state, m.host);
          port.preencode(state, m.port);
        },
        encode(state, m) {
          host.encode(state, m.host);
          port.encode(state, m.port);
        },
        decode(state) {
          return {
            host: host.decode(state),
            family,
            port: port.decode(state)
          };
        }
      };
    };
    var ipv4 = exports2.ipv4 = {
      preencode(state) {
        state.end += 4;
      },
      encode(state, string2) {
        const start = state.start;
        const end = start + 4;
        let i = 0;
        while (i < string2.length) {
          let n = 0;
          let c4;
          while (i < string2.length && (c4 = string2.charCodeAt(i++)) !== /* . */
          46) {
            n = n * 10 + (c4 - /* 0 */
            48);
          }
          state.buffer[state.start++] = n;
        }
        state.start = end;
      },
      decode(state) {
        if (state.end - state.start < 4) throw new Error("Out of bounds");
        return state.buffer[state.start++] + "." + state.buffer[state.start++] + "." + state.buffer[state.start++] + "." + state.buffer[state.start++];
      }
    };
    exports2.ipv4Address = address(ipv4, 4);
    var ipv6 = exports2.ipv6 = {
      preencode(state) {
        state.end += 16;
      },
      encode(state, string2) {
        const start = state.start;
        const end = start + 16;
        let i = 0;
        let split2 = null;
        while (i < string2.length) {
          let n = 0;
          let c4;
          while (i < string2.length && (c4 = string2.charCodeAt(i++)) !== /* : */
          58) {
            if (c4 >= 48 && c4 <= 57) n = n * 16 + (c4 - /* 0 */
            48);
            else if (c4 >= 65 && c4 <= 70) n = n * 16 + (c4 - /* A */
            65 + 10);
            else if (c4 >= 97 && c4 <= 102) n = n * 16 + (c4 - /* a */
            97 + 10);
          }
          state.buffer[state.start++] = n >>> 8;
          state.buffer[state.start++] = n;
          if (i < string2.length && string2.charCodeAt(i) === /* : */
          58) {
            i++;
            split2 = state.start;
          }
        }
        if (split2 !== null) {
          const offset = end - state.start;
          state.buffer.copyWithin(split2 + offset, split2).fill(0, split2, split2 + offset);
        }
        state.start = end;
      },
      decode(state) {
        if (state.end - state.start < 16) throw new Error("Out of bounds");
        return (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16) + ":" + (state.buffer[state.start++] * 256 + state.buffer[state.start++]).toString(16);
      }
    };
    exports2.ipv6Address = address(ipv6, 6);
    var ip = exports2.ip = {
      preencode(state, string2) {
        const family = string2.includes(":") ? 6 : 4;
        uint8.preencode(state, family);
        if (family === 4) ipv4.preencode(state);
        else ipv6.preencode(state);
      },
      encode(state, string2) {
        const family = string2.includes(":") ? 6 : 4;
        uint8.encode(state, family);
        if (family === 4) ipv4.encode(state, string2);
        else ipv6.encode(state, string2);
      },
      decode(state) {
        const family = uint8.decode(state);
        if (family === 4) return ipv4.decode(state);
        else return ipv6.decode(state);
      }
    };
    exports2.ipAddress = {
      preencode(state, m) {
        ip.preencode(state, m.host);
        port.preencode(state, m.port);
      },
      encode(state, m) {
        ip.encode(state, m.host);
        port.encode(state, m.port);
      },
      decode(state) {
        const family = uint8.decode(state);
        return {
          host: family === 4 ? ipv4.decode(state) : ipv6.decode(state),
          family,
          port: port.decode(state)
        };
      }
    };
    var record = exports2.record = function(keyEncoding, valueEncoding) {
      return {
        preencode(state, v) {
          const keys = Object.keys(v);
          uint.preencode(state, keys.length);
          for (const k of keys) {
            keyEncoding.preencode(state, k);
            valueEncoding.preencode(state, v[k]);
          }
        },
        encode(state, v) {
          const keys = Object.keys(v);
          uint.encode(state, keys.length);
          for (const k of keys) {
            keyEncoding.encode(state, k);
            valueEncoding.encode(state, v[k]);
          }
        },
        decode(state) {
          const out = /* @__PURE__ */ Object.create(null);
          const keys = uint.decode(state);
          for (let i = 0; i < keys; i++) {
            out[keyEncoding.decode(state)] = valueEncoding.decode(state);
          }
          return out;
        }
      };
    };
    exports2.stringRecord = record(utf8, utf8);
    function getType(o) {
      if (o === null || o === void 0) return 0;
      if (typeof o === "boolean") return 1;
      if (typeof o === "string") return 2;
      if (b4a4.isBuffer(o)) return 3;
      if (typeof o === "number") {
        if (Number.isInteger(o)) return o >= 0 ? 4 : 5;
        return 6;
      }
      if (Array.isArray(o)) return 7;
      if (o instanceof Date) return 9;
      if (typeof o === "object") return 8;
      throw new Error("Unsupported type for " + o);
    }
    exports2.from = function from(enc) {
      if (typeof enc === "string") return fromNamed(enc);
      if (enc.preencode) return enc;
      if (enc.encodingLength) return fromAbstractEncoder(enc);
      return fromCodec(enc);
    };
    function fromNamed(enc) {
      switch (enc) {
        case "ascii":
          return raw.ascii;
        case "utf-8":
        case "utf8":
          return raw.utf8;
        case "hex":
          return raw.hex;
        case "base64":
          return raw.base64;
        case "utf16-le":
        case "utf16le":
        case "ucs-2":
        case "ucs2":
          return raw.ucs2;
        case "ndjson":
          return raw.ndjson;
        case "json":
          return raw.json;
        case "binary":
        default:
          return raw.binary;
      }
    }
    function fromCodec(enc) {
      let tmpM = null;
      let tmpBuf = null;
      return {
        preencode(state, m) {
          tmpM = m;
          tmpBuf = enc.encode(m);
          state.end += tmpBuf.byteLength;
        },
        encode(state, m) {
          raw.encode(state, m === tmpM ? tmpBuf : enc.encode(m));
          tmpM = tmpBuf = null;
        },
        decode(state) {
          return enc.decode(raw.decode(state));
        }
      };
    }
    function fromAbstractEncoder(enc) {
      return {
        preencode(state, m) {
          state.end += enc.encodingLength(m);
        },
        encode(state, m) {
          enc.encode(m, state.buffer, state.start);
          state.start += enc.encode.bytes;
        },
        decode(state) {
          const m = enc.decode(state.buffer, state.start, state.end);
          state.start += enc.decode.bytes;
          return m;
        }
      };
    }
    exports2.encode = function encode2(enc, m) {
      const state = exports2.state();
      enc.preencode(state, m);
      state.buffer = b4a4.allocUnsafe(state.end);
      enc.encode(state, m);
      return state.buffer;
    };
    exports2.decode = function decode2(enc, buffer2) {
      return enc.decode(exports2.state(0, buffer2.byteLength, buffer2));
    };
    function zigZagInt(enc) {
      return {
        preencode(state, n) {
          enc.preencode(state, zigZagEncodeInt(n));
        },
        encode(state, n) {
          enc.encode(state, zigZagEncodeInt(n));
        },
        decode(state) {
          return zigZagDecodeInt(enc.decode(state));
        }
      };
    }
    function zigZagDecodeInt(n) {
      return n === 0 ? n : (n & 1) === 0 ? n / 2 : -(n + 1) / 2;
    }
    function zigZagEncodeInt(n) {
      return n < 0 ? 2 * -n - 1 : n === 0 ? 0 : 2 * n;
    }
    function zigZagBigInt(enc) {
      return {
        preencode(state, n) {
          enc.preencode(state, zigZagEncodeBigInt(n));
        },
        encode(state, n) {
          enc.encode(state, zigZagEncodeBigInt(n));
        },
        decode(state) {
          return zigZagDecodeBigInt(enc.decode(state));
        }
      };
    }
    function zigZagDecodeBigInt(n) {
      return n === 0n ? n : (n & 1n) === 0n ? n / 2n : -(n + 1n) / 2n;
    }
    function zigZagEncodeBigInt(n) {
      return n < 0n ? 2n * -n - 1n : n === 0n ? 0n : 2n * n;
    }
    function validateUint(n) {
      if (n >= 0 === false)
        throw new Error("uint must be positive");
      if (n > Number.MAX_SAFE_INTEGER)
        throw new Error(
          "integer is greater than the maximum safe integer, use biguint/bigint"
        );
    }
  }
});

// node_modules/sodium-hmac/hash/sha256.js
var require_sha256 = __commonJS({
  "node_modules/sodium-hmac/hash/sha256.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    module2.exports = {
      init: sodium.crypto_hash_sha256_init,
      update: sodium.crypto_hash_sha256_update,
      final: sodium.crypto_hash_sha256_final,
      BYTES: sodium.crypto_hash_sha256_BYTES,
      STATEBYTES: sodium.crypto_hash_sha256_STATEBYTES
    };
  }
});

// node_modules/sodium-hmac/hash/sha512.js
var require_sha512 = __commonJS({
  "node_modules/sodium-hmac/hash/sha512.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    module2.exports = {
      init: sodium.crypto_hash_sha512_init,
      update: sodium.crypto_hash_sha512_update,
      final: sodium.crypto_hash_sha512_final,
      BYTES: sodium.crypto_hash_sha512_BYTES,
      STATEBYTES: sodium.crypto_hash_sha512_STATEBYTES
    };
  }
});

// node_modules/sodium-hmac/index.js
var require_sodium_hmac = __commonJS({
  "node_modules/sodium-hmac/index.js"(exports2, module2) {
    var b4a4 = require_b4a();
    var sha256 = require_sha256();
    var sha512 = require_sha512();
    var HMAC = class _HMAC {
      constructor(hash, key) {
        this.hash = hash;
        this.length = hash.BYTES;
        this._blocksize = 2 * hash.BYTES;
        this._initialised = false;
        this.state = b4a4.alloc(hash.STATEBYTES);
        this.pad = b4a4.alloc(this._blocksize);
        if (key) this.init(key);
      }
      init(key) {
        if (this._initialised) {
          throw new Error("Already initialised, call final first");
        }
        if (key.length > this._blocksize) {
          this.hash.init(this.state);
          this.hash.update(this.state, key);
          this.hash.final(this.state, this.pad.subarray(0, this.length));
        } else {
          this.pad.set(key);
        }
        bufferByteXor(this.pad, 54);
        this.hash.init(this.state);
        this.hash.update(this.state, this.pad);
        bufferByteXor(this.pad, 92 ^ 54);
        this._initialised = true;
        return this;
      }
      update(data) {
        if (!this._initialised) {
          throw new Error("First initialise with a key");
        }
        this.hash.update(this.state, data);
        return this;
      }
      final(output = b4a4.alloc(this.length)) {
        if (!this._initialised) {
          throw new Error("First initialise with a key");
        }
        const out = output.byteLength === this.length ? output : output.subarray(0, this.hash.BYTES);
        this.hash.final(this.state, out);
        this.hash.init(this.state);
        this.hash.update(this.state, this.pad);
        this.hash.update(this.state, out);
        this.hash.final(this.state, out);
        this.pad.fill(0);
        this.state.fill(0);
        this._initialised = false;
        return out;
      }
      static sha256(data, key, output) {
        const hmac = new _HMAC(sha256, key);
        return hmac.update(data).final(output);
      }
      static sha512(data, key, output) {
        const hmac = new _HMAC(sha512, key);
        return hmac.update(data).final(output);
      }
    };
    module2.exports = {
      HMAC,
      sha256,
      sha512
    };
    function bufferByteXor(output, byte) {
      for (let i = 0; i < output.byteLength; i++) {
        output[i] ^= byte;
      }
      return output;
    }
  }
});

// node_modules/bip39-mnemonic/wordlist/lookup.json
var require_lookup = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/lookup.json"(exports2, module2) {
    module2.exports = { \u7684: ["chinese_simplified", "chinese_traditional"], \u4E00: ["chinese_simplified", "chinese_traditional"], \u662F: ["chinese_simplified", "chinese_traditional"], \u5728: ["chinese_simplified", "chinese_traditional"], \u4E0D: ["chinese_simplified", "chinese_traditional"], \u4E86: ["chinese_simplified", "chinese_traditional"], \u6709: ["chinese_simplified", "chinese_traditional"], \u548C: ["chinese_simplified", "chinese_traditional"], \u4EBA: ["chinese_simplified", "chinese_traditional"], \u8FD9: ["chinese_simplified"], \u4E2D: ["chinese_simplified", "chinese_traditional"], \u5927: ["chinese_simplified", "chinese_traditional"], \u4E3A: ["chinese_simplified"], \u4E0A: ["chinese_simplified", "chinese_traditional"], \u4E2A: ["chinese_simplified"], \u56FD: ["chinese_simplified"], \u6211: ["chinese_simplified", "chinese_traditional"], \u4EE5: ["chinese_simplified", "chinese_traditional"], \u8981: ["chinese_simplified", "chinese_traditional"], \u4ED6: ["chinese_simplified", "chinese_traditional"], \u65F6: ["chinese_simplified"], \u6765: ["chinese_simplified"], \u7528: ["chinese_simplified", "chinese_traditional"], \u4EEC: ["chinese_simplified"], \u751F: ["chinese_simplified", "chinese_traditional"], \u5230: ["chinese_simplified", "chinese_traditional"], \u4F5C: ["chinese_simplified", "chinese_traditional"], \u5730: ["chinese_simplified", "chinese_traditional"], \u4E8E: ["chinese_simplified"], \u51FA: ["chinese_simplified", "chinese_traditional"], \u5C31: ["chinese_simplified", "chinese_traditional"], \u5206: ["chinese_simplified", "chinese_traditional"], \u5BF9: ["chinese_simplified"], \u6210: ["chinese_simplified", "chinese_traditional"], \u4F1A: ["chinese_simplified"], \u53EF: ["chinese_simplified", "chinese_traditional"], \u4E3B: ["chinese_simplified", "chinese_traditional"], \u53D1: ["chinese_simplified"], \u5E74: ["chinese_simplified", "chinese_traditional"], \u52A8: ["chinese_simplified"], \u540C: ["chinese_simplified", "chinese_traditional"], \u5DE5: ["chinese_simplified", "chinese_traditional"], \u4E5F: ["chinese_simplified", "chinese_traditional"], \u80FD: ["chinese_simplified", "chinese_traditional"], \u4E0B: ["chinese_simplified", "chinese_traditional"], \u8FC7: ["chinese_simplified"], \u5B50: ["chinese_simplified", "chinese_traditional"], \u8BF4: ["chinese_simplified"], \u4EA7: ["chinese_simplified"], \u79CD: ["chinese_simplified"], \u9762: ["chinese_simplified", "chinese_traditional"], \u800C: ["chinese_simplified", "chinese_traditional"], \u65B9: ["chinese_simplified", "chinese_traditional"], \u540E: ["chinese_simplified"], \u591A: ["chinese_simplified", "chinese_traditional"], \u5B9A: ["chinese_simplified", "chinese_traditional"], \u884C: ["chinese_simplified", "chinese_traditional"], \u5B66: ["chinese_simplified"], \u6CD5: ["chinese_simplified", "chinese_traditional"], \u6240: ["chinese_simplified", "chinese_traditional"], \u6C11: ["chinese_simplified", "chinese_traditional"], \u5F97: ["chinese_simplified", "chinese_traditional"], \u7ECF: ["chinese_simplified"], \u5341: ["chinese_simplified", "chinese_traditional"], \u4E09: ["chinese_simplified", "chinese_traditional"], \u4E4B: ["chinese_simplified", "chinese_traditional"], \u8FDB: ["chinese_simplified"], \u7740: ["chinese_simplified"], \u7B49: ["chinese_simplified", "chinese_traditional"], \u90E8: ["chinese_simplified", "chinese_traditional"], \u5EA6: ["chinese_simplified", "chinese_traditional"], \u5BB6: ["chinese_simplified", "chinese_traditional"], \u7535: ["chinese_simplified"], \u529B: ["chinese_simplified", "chinese_traditional"], \u91CC: ["chinese_simplified"], \u5982: ["chinese_simplified", "chinese_traditional"], \u6C34: ["chinese_simplified", "chinese_traditional"], \u5316: ["chinese_simplified", "chinese_traditional"], \u9AD8: ["chinese_simplified", "chinese_traditional"], \u81EA: ["chinese_simplified", "chinese_traditional"], \u4E8C: ["chinese_simplified", "chinese_traditional"], \u7406: ["chinese_simplified", "chinese_traditional"], \u8D77: ["chinese_simplified", "chinese_traditional"], \u5C0F: ["chinese_simplified", "chinese_traditional"], \u7269: ["chinese_simplified", "chinese_traditional"], \u73B0: ["chinese_simplified"], \u5B9E: ["chinese_simplified"], \u52A0: ["chinese_simplified", "chinese_traditional"], \u91CF: ["chinese_simplified", "chinese_traditional"], \u90FD: ["chinese_simplified", "chinese_traditional"], \u4E24: ["chinese_simplified"], \u4F53: ["chinese_simplified"], \u5236: ["chinese_simplified", "chinese_traditional"], \u673A: ["chinese_simplified"], \u5F53: ["chinese_simplified"], \u4F7F: ["chinese_simplified", "chinese_traditional"], \u70B9: ["chinese_simplified"], \u4ECE: ["chinese_simplified"], \u4E1A: ["chinese_simplified"], \u672C: ["chinese_simplified", "chinese_traditional"], \u53BB: ["chinese_simplified", "chinese_traditional"], \u628A: ["chinese_simplified", "chinese_traditional"], \u6027: ["chinese_simplified", "chinese_traditional"], \u597D: ["chinese_simplified", "chinese_traditional"], \u5E94: ["chinese_simplified"], \u5F00: ["chinese_simplified"], \u5B83: ["chinese_simplified", "chinese_traditional"], \u5408: ["chinese_simplified", "chinese_traditional"], \u8FD8: ["chinese_simplified"], \u56E0: ["chinese_simplified", "chinese_traditional"], \u7531: ["chinese_simplified", "chinese_traditional"], \u5176: ["chinese_simplified", "chinese_traditional"], \u4E9B: ["chinese_simplified", "chinese_traditional"], \u7136: ["chinese_simplified", "chinese_traditional"], \u524D: ["chinese_simplified", "chinese_traditional"], \u5916: ["chinese_simplified", "chinese_traditional"], \u5929: ["chinese_simplified", "chinese_traditional"], \u653F: ["chinese_simplified", "chinese_traditional"], \u56DB: ["chinese_simplified", "chinese_traditional"], \u65E5: ["chinese_simplified", "chinese_traditional"], \u90A3: ["chinese_simplified", "chinese_traditional"], \u793E: ["chinese_simplified", "chinese_traditional"], \u4E49: ["chinese_simplified"], \u4E8B: ["chinese_simplified", "chinese_traditional"], \u5E73: ["chinese_simplified", "chinese_traditional"], \u5F62: ["chinese_simplified", "chinese_traditional"], \u76F8: ["chinese_simplified", "chinese_traditional"], \u5168: ["chinese_simplified", "chinese_traditional"], \u8868: ["chinese_simplified", "chinese_traditional"], \u95F4: ["chinese_simplified"], \u6837: ["chinese_simplified"], \u4E0E: ["chinese_simplified"], \u5173: ["chinese_simplified"], \u5404: ["chinese_simplified", "chinese_traditional"], \u91CD: ["chinese_simplified", "chinese_traditional"], \u65B0: ["chinese_simplified", "chinese_traditional"], \u7EBF: ["chinese_simplified"], \u5185: ["chinese_simplified"], \u6570: ["chinese_simplified"], \u6B63: ["chinese_simplified", "chinese_traditional"], \u5FC3: ["chinese_simplified", "chinese_traditional"], \u53CD: ["chinese_simplified", "chinese_traditional"], \u4F60: ["chinese_simplified", "chinese_traditional"], \u660E: ["chinese_simplified", "chinese_traditional"], \u770B: ["chinese_simplified", "chinese_traditional"], \u539F: ["chinese_simplified", "chinese_traditional"], \u53C8: ["chinese_simplified", "chinese_traditional"], \u4E48: ["chinese_simplified"], \u5229: ["chinese_simplified", "chinese_traditional"], \u6BD4: ["chinese_simplified", "chinese_traditional"], \u6216: ["chinese_simplified", "chinese_traditional"], \u4F46: ["chinese_simplified", "chinese_traditional"], \u8D28: ["chinese_simplified"], \u6C14: ["chinese_simplified"], \u7B2C: ["chinese_simplified", "chinese_traditional"], \u5411: ["chinese_simplified", "chinese_traditional"], \u9053: ["chinese_simplified", "chinese_traditional"], \u547D: ["chinese_simplified", "chinese_traditional"], \u6B64: ["chinese_simplified", "chinese_traditional"], \u53D8: ["chinese_simplified"], \u6761: ["chinese_simplified"], \u53EA: ["chinese_simplified", "chinese_traditional"], \u6CA1: ["chinese_simplified"], \u7ED3: ["chinese_simplified"], \u89E3: ["chinese_simplified", "chinese_traditional"], \u95EE: ["chinese_simplified"], \u610F: ["chinese_simplified", "chinese_traditional"], \u5EFA: ["chinese_simplified", "chinese_traditional"], \u6708: ["chinese_simplified", "chinese_traditional"], \u516C: ["chinese_simplified", "chinese_traditional"], \u65E0: ["chinese_simplified"], \u7CFB: ["chinese_simplified", "chinese_traditional"], \u519B: ["chinese_simplified"], \u5F88: ["chinese_simplified", "chinese_traditional"], \u60C5: ["chinese_simplified", "chinese_traditional"], \u8005: ["chinese_simplified", "chinese_traditional"], \u6700: ["chinese_simplified", "chinese_traditional"], \u7ACB: ["chinese_simplified", "chinese_traditional"], \u4EE3: ["chinese_simplified", "chinese_traditional"], \u60F3: ["chinese_simplified", "chinese_traditional"], \u5DF2: ["chinese_simplified", "chinese_traditional"], \u901A: ["chinese_simplified", "chinese_traditional"], \u5E76: ["chinese_simplified"], \u63D0: ["chinese_simplified", "chinese_traditional"], \u76F4: ["chinese_simplified", "chinese_traditional"], \u9898: ["chinese_simplified"], \u515A: ["chinese_simplified"], \u7A0B: ["chinese_simplified", "chinese_traditional"], \u5C55: ["chinese_simplified", "chinese_traditional"], \u4E94: ["chinese_simplified", "chinese_traditional"], \u679C: ["chinese_simplified", "chinese_traditional"], \u6599: ["chinese_simplified", "chinese_traditional"], \u8C61: ["chinese_simplified", "chinese_traditional"], \u5458: ["chinese_simplified"], \u9769: ["chinese_simplified", "chinese_traditional"], \u4F4D: ["chinese_simplified", "chinese_traditional"], \u5165: ["chinese_simplified", "chinese_traditional"], \u5E38: ["chinese_simplified", "chinese_traditional"], \u6587: ["chinese_simplified", "chinese_traditional"], \u603B: ["chinese_simplified"], \u6B21: ["chinese_simplified", "chinese_traditional"], \u54C1: ["chinese_simplified", "chinese_traditional"], \u5F0F: ["chinese_simplified", "chinese_traditional"], \u6D3B: ["chinese_simplified", "chinese_traditional"], \u8BBE: ["chinese_simplified"], \u53CA: ["chinese_simplified", "chinese_traditional"], \u7BA1: ["chinese_simplified", "chinese_traditional"], \u7279: ["chinese_simplified", "chinese_traditional"], \u4EF6: ["chinese_simplified", "chinese_traditional"], \u957F: ["chinese_simplified"], \u6C42: ["chinese_simplified", "chinese_traditional"], \u8001: ["chinese_simplified", "chinese_traditional"], \u5934: ["chinese_simplified"], \u57FA: ["chinese_simplified", "chinese_traditional"], \u8D44: ["chinese_simplified"], \u8FB9: ["chinese_simplified"], \u6D41: ["chinese_simplified", "chinese_traditional"], \u8DEF: ["chinese_simplified", "chinese_traditional"], \u7EA7: ["chinese_simplified"], \u5C11: ["chinese_simplified", "chinese_traditional"], \u56FE: ["chinese_simplified"], \u5C71: ["chinese_simplified", "chinese_traditional"], \u7EDF: ["chinese_simplified"], \u63A5: ["chinese_simplified", "chinese_traditional"], \u77E5: ["chinese_simplified", "chinese_traditional"], \u8F83: ["chinese_simplified"], \u5C06: ["chinese_simplified"], \u7EC4: ["chinese_simplified"], \u89C1: ["chinese_simplified"], \u8BA1: ["chinese_simplified"], \u522B: ["chinese_simplified"], \u5979: ["chinese_simplified", "chinese_traditional"], \u624B: ["chinese_simplified", "chinese_traditional"], \u89D2: ["chinese_simplified", "chinese_traditional"], \u671F: ["chinese_simplified", "chinese_traditional"], \u6839: ["chinese_simplified", "chinese_traditional"], \u8BBA: ["chinese_simplified"], \u8FD0: ["chinese_simplified"], \u519C: ["chinese_simplified"], \u6307: ["chinese_simplified", "chinese_traditional"], \u51E0: ["chinese_simplified"], \u4E5D: ["chinese_simplified", "chinese_traditional"], \u533A: ["chinese_simplified"], \u5F3A: ["chinese_simplified"], \u653E: ["chinese_simplified", "chinese_traditional"], \u51B3: ["chinese_simplified"], \u897F: ["chinese_simplified", "chinese_traditional"], \u88AB: ["chinese_simplified", "chinese_traditional"], \u5E72: ["chinese_simplified"], \u505A: ["chinese_simplified", "chinese_traditional"], \u5FC5: ["chinese_simplified", "chinese_traditional"], \u6218: ["chinese_simplified"], \u5148: ["chinese_simplified", "chinese_traditional"], \u56DE: ["chinese_simplified", "chinese_traditional"], \u5219: ["chinese_simplified"], \u4EFB: ["chinese_simplified", "chinese_traditional"], \u53D6: ["chinese_simplified", "chinese_traditional"], \u636E: ["chinese_simplified"], \u5904: ["chinese_simplified"], \u961F: ["chinese_simplified"], \u5357: ["chinese_simplified", "chinese_traditional"], \u7ED9: ["chinese_simplified"], \u8272: ["chinese_simplified", "chinese_traditional"], \u5149: ["chinese_simplified", "chinese_traditional"], \u95E8: ["chinese_simplified"], \u5373: ["chinese_simplified", "chinese_traditional"], \u4FDD: ["chinese_simplified", "chinese_traditional"], \u6CBB: ["chinese_simplified", "chinese_traditional"], \u5317: ["chinese_simplified", "chinese_traditional"], \u9020: ["chinese_simplified", "chinese_traditional"], \u767E: ["chinese_simplified", "chinese_traditional"], \u89C4: ["chinese_simplified"], \u70ED: ["chinese_simplified"], \u9886: ["chinese_simplified"], \u4E03: ["chinese_simplified", "chinese_traditional"], \u6D77: ["chinese_simplified", "chinese_traditional"], \u53E3: ["chinese_simplified", "chinese_traditional"], \u4E1C: ["chinese_simplified"], \u5BFC: ["chinese_simplified"], \u5668: ["chinese_simplified", "chinese_traditional"], \u538B: ["chinese_simplified"], \u5FD7: ["chinese_simplified", "chinese_traditional"], \u4E16: ["chinese_simplified", "chinese_traditional"], \u91D1: ["chinese_simplified", "chinese_traditional"], \u589E: ["chinese_simplified", "chinese_traditional"], \u4E89: ["chinese_simplified"], \u6D4E: ["chinese_simplified"], \u9636: ["chinese_simplified"], \u6CB9: ["chinese_simplified", "chinese_traditional"], \u601D: ["chinese_simplified", "chinese_traditional"], \u672F: ["chinese_simplified"], \u6781: ["chinese_simplified"], \u4EA4: ["chinese_simplified", "chinese_traditional"], \u53D7: ["chinese_simplified", "chinese_traditional"], \u8054: ["chinese_simplified"], \u4EC0: ["chinese_simplified", "chinese_traditional"], \u8BA4: ["chinese_simplified"], \u516D: ["chinese_simplified", "chinese_traditional"], \u5171: ["chinese_simplified", "chinese_traditional"], \u6743: ["chinese_simplified"], \u6536: ["chinese_simplified", "chinese_traditional"], \u8BC1: ["chinese_simplified"], \u6539: ["chinese_simplified", "chinese_traditional"], \u6E05: ["chinese_simplified", "chinese_traditional"], \u7F8E: ["chinese_simplified", "chinese_traditional"], \u518D: ["chinese_simplified", "chinese_traditional"], \u91C7: ["chinese_simplified"], \u8F6C: ["chinese_simplified"], \u66F4: ["chinese_simplified", "chinese_traditional"], \u5355: ["chinese_simplified"], \u98CE: ["chinese_simplified"], \u5207: ["chinese_simplified", "chinese_traditional"], \u6253: ["chinese_simplified", "chinese_traditional"], \u767D: ["chinese_simplified", "chinese_traditional"], \u6559: ["chinese_simplified", "chinese_traditional"], \u901F: ["chinese_simplified", "chinese_traditional"], \u82B1: ["chinese_simplified", "chinese_traditional"], \u5E26: ["chinese_simplified"], \u5B89: ["chinese_simplified", "chinese_traditional"], \u573A: ["chinese_simplified"], \u8EAB: ["chinese_simplified", "chinese_traditional"], \u8F66: ["chinese_simplified"], \u4F8B: ["chinese_simplified", "chinese_traditional"], \u771F: ["chinese_simplified", "chinese_traditional"], \u52A1: ["chinese_simplified"], \u5177: ["chinese_simplified", "chinese_traditional"], \u4E07: ["chinese_simplified"], \u6BCF: ["chinese_simplified", "chinese_traditional"], \u76EE: ["chinese_simplified", "chinese_traditional"], \u81F3: ["chinese_simplified", "chinese_traditional"], \u8FBE: ["chinese_simplified"], \u8D70: ["chinese_simplified", "chinese_traditional"], \u79EF: ["chinese_simplified"], \u793A: ["chinese_simplified", "chinese_traditional"], \u8BAE: ["chinese_simplified"], \u58F0: ["chinese_simplified"], \u62A5: ["chinese_simplified"], \u6597: ["chinese_simplified"], \u5B8C: ["chinese_simplified", "chinese_traditional"], \u7C7B: ["chinese_simplified"], \u516B: ["chinese_simplified", "chinese_traditional"], \u79BB: ["chinese_simplified"], \u534E: ["chinese_simplified"], \u540D: ["chinese_simplified", "chinese_traditional"], \u786E: ["chinese_simplified"], \u624D: ["chinese_simplified", "chinese_traditional"], \u79D1: ["chinese_simplified", "chinese_traditional"], \u5F20: ["chinese_simplified"], \u4FE1: ["chinese_simplified", "chinese_traditional"], \u9A6C: ["chinese_simplified"], \u8282: ["chinese_simplified"], \u8BDD: ["chinese_simplified"], \u7C73: ["chinese_simplified", "chinese_traditional"], \u6574: ["chinese_simplified", "chinese_traditional"], \u7A7A: ["chinese_simplified", "chinese_traditional"], \u5143: ["chinese_simplified", "chinese_traditional"], \u51B5: ["chinese_simplified"], \u4ECA: ["chinese_simplified", "chinese_traditional"], \u96C6: ["chinese_simplified", "chinese_traditional"], \u6E29: ["chinese_simplified"], \u4F20: ["chinese_simplified"], \u571F: ["chinese_simplified", "chinese_traditional"], \u8BB8: ["chinese_simplified"], \u6B65: ["chinese_simplified", "chinese_traditional"], \u7FA4: ["chinese_simplified", "chinese_traditional"], \u5E7F: ["chinese_simplified"], \u77F3: ["chinese_simplified", "chinese_traditional"], \u8BB0: ["chinese_simplified"], \u9700: ["chinese_simplified", "chinese_traditional"], \u6BB5: ["chinese_simplified", "chinese_traditional"], \u7814: ["chinese_simplified", "chinese_traditional"], \u754C: ["chinese_simplified", "chinese_traditional"], \u62C9: ["chinese_simplified", "chinese_traditional"], \u6797: ["chinese_simplified", "chinese_traditional"], \u5F8B: ["chinese_simplified", "chinese_traditional"], \u53EB: ["chinese_simplified", "chinese_traditional"], \u4E14: ["chinese_simplified", "chinese_traditional"], \u7A76: ["chinese_simplified", "chinese_traditional"], \u89C2: ["chinese_simplified"], \u8D8A: ["chinese_simplified", "chinese_traditional"], \u7EC7: ["chinese_simplified"], \u88C5: ["chinese_simplified"], \u5F71: ["chinese_simplified", "chinese_traditional"], \u7B97: ["chinese_simplified", "chinese_traditional"], \u4F4E: ["chinese_simplified", "chinese_traditional"], \u6301: ["chinese_simplified", "chinese_traditional"], \u97F3: ["chinese_simplified", "chinese_traditional"], \u4F17: ["chinese_simplified"], \u4E66: ["chinese_simplified"], \u5E03: ["chinese_simplified", "chinese_traditional"], \u590D: ["chinese_simplified", "chinese_traditional"], \u5BB9: ["chinese_simplified", "chinese_traditional"], \u513F: ["chinese_simplified"], \u987B: ["chinese_simplified"], \u9645: ["chinese_simplified"], \u5546: ["chinese_simplified", "chinese_traditional"], \u975E: ["chinese_simplified", "chinese_traditional"], \u9A8C: ["chinese_simplified"], \u8FDE: ["chinese_simplified"], \u65AD: ["chinese_simplified"], \u6DF1: ["chinese_simplified", "chinese_traditional"], \u96BE: ["chinese_simplified"], \u8FD1: ["chinese_simplified", "chinese_traditional"], \u77FF: ["chinese_simplified"], \u5343: ["chinese_simplified", "chinese_traditional"], \u5468: ["chinese_simplified"], \u59D4: ["chinese_simplified", "chinese_traditional"], \u7D20: ["chinese_simplified", "chinese_traditional"], \u6280: ["chinese_simplified", "chinese_traditional"], \u5907: ["chinese_simplified"], \u534A: ["chinese_simplified", "chinese_traditional"], \u529E: ["chinese_simplified"], \u9752: ["chinese_simplified", "chinese_traditional"], \u7701: ["chinese_simplified", "chinese_traditional"], \u5217: ["chinese_simplified", "chinese_traditional"], \u4E60: ["chinese_simplified"], \u54CD: ["chinese_simplified"], \u7EA6: ["chinese_simplified"], \u652F: ["chinese_simplified", "chinese_traditional"], \u822C: ["chinese_simplified", "chinese_traditional"], \u53F2: ["chinese_simplified", "chinese_traditional"], \u611F: ["chinese_simplified", "chinese_traditional"], \u52B3: ["chinese_simplified"], \u4FBF: ["chinese_simplified", "chinese_traditional"], \u56E2: ["chinese_simplified"], \u5F80: ["chinese_simplified", "chinese_traditional"], \u9178: ["chinese_simplified", "chinese_traditional"], \u5386: ["chinese_simplified"], \u5E02: ["chinese_simplified", "chinese_traditional"], \u514B: ["chinese_simplified", "chinese_traditional"], \u4F55: ["chinese_simplified", "chinese_traditional"], \u9664: ["chinese_simplified", "chinese_traditional"], \u6D88: ["chinese_simplified", "chinese_traditional"], \u6784: ["chinese_simplified"], \u5E9C: ["chinese_simplified", "chinese_traditional"], \u79F0: ["chinese_simplified"], \u592A: ["chinese_simplified", "chinese_traditional"], \u51C6: ["chinese_simplified"], \u7CBE: ["chinese_simplified", "chinese_traditional"], \u503C: ["chinese_simplified", "chinese_traditional"], \u53F7: ["chinese_simplified"], \u7387: ["chinese_simplified", "chinese_traditional"], \u65CF: ["chinese_simplified", "chinese_traditional"], \u7EF4: ["chinese_simplified"], \u5212: ["chinese_simplified"], \u9009: ["chinese_simplified"], \u6807: ["chinese_simplified"], \u5199: ["chinese_simplified"], \u5B58: ["chinese_simplified", "chinese_traditional"], \u5019: ["chinese_simplified", "chinese_traditional"], \u6BDB: ["chinese_simplified", "chinese_traditional"], \u4EB2: ["chinese_simplified"], \u5FEB: ["chinese_simplified", "chinese_traditional"], \u6548: ["chinese_simplified", "chinese_traditional"], \u65AF: ["chinese_simplified", "chinese_traditional"], \u9662: ["chinese_simplified", "chinese_traditional"], \u67E5: ["chinese_simplified", "chinese_traditional"], \u6C5F: ["chinese_simplified", "chinese_traditional"], \u578B: ["chinese_simplified", "chinese_traditional"], \u773C: ["chinese_simplified", "chinese_traditional"], \u738B: ["chinese_simplified", "chinese_traditional"], \u6309: ["chinese_simplified", "chinese_traditional"], \u683C: ["chinese_simplified", "chinese_traditional"], \u517B: ["chinese_simplified"], \u6613: ["chinese_simplified", "chinese_traditional"], \u7F6E: ["chinese_simplified", "chinese_traditional"], \u6D3E: ["chinese_simplified", "chinese_traditional"], \u5C42: ["chinese_simplified"], \u7247: ["chinese_simplified", "chinese_traditional"], \u59CB: ["chinese_simplified", "chinese_traditional"], \u5374: ["chinese_simplified"], \u4E13: ["chinese_simplified"], \u72B6: ["chinese_simplified"], \u80B2: ["chinese_simplified", "chinese_traditional"], \u5382: ["chinese_simplified"], \u4EAC: ["chinese_simplified", "chinese_traditional"], \u8BC6: ["chinese_simplified"], \u9002: ["chinese_simplified"], \u5C5E: ["chinese_simplified"], \u5706: ["chinese_simplified"], \u5305: ["chinese_simplified", "chinese_traditional"], \u706B: ["chinese_simplified", "chinese_traditional"], \u4F4F: ["chinese_simplified", "chinese_traditional"], \u8C03: ["chinese_simplified"], \u6EE1: ["chinese_simplified"], \u53BF: ["chinese_simplified"], \u5C40: ["chinese_simplified", "chinese_traditional"], \u7167: ["chinese_simplified", "chinese_traditional"], \u53C2: ["chinese_simplified"], \u7EA2: ["chinese_simplified"], \u7EC6: ["chinese_simplified"], \u5F15: ["chinese_simplified", "chinese_traditional"], \u542C: ["chinese_simplified"], \u8BE5: ["chinese_simplified"], \u94C1: ["chinese_simplified"], \u4EF7: ["chinese_simplified"], \u4E25: ["chinese_simplified"], \u9996: ["chinese_simplified", "chinese_traditional"], \u5E95: ["chinese_simplified", "chinese_traditional"], \u6DB2: ["chinese_simplified", "chinese_traditional"], \u5B98: ["chinese_simplified", "chinese_traditional"], \u5FB7: ["chinese_simplified", "chinese_traditional"], \u968F: ["chinese_simplified"], \u75C5: ["chinese_simplified", "chinese_traditional"], \u82CF: ["chinese_simplified"], \u5931: ["chinese_simplified", "chinese_traditional"], \u5C14: ["chinese_simplified"], \u6B7B: ["chinese_simplified", "chinese_traditional"], \u8BB2: ["chinese_simplified"], \u914D: ["chinese_simplified", "chinese_traditional"], \u5973: ["chinese_simplified", "chinese_traditional"], \u9EC4: ["chinese_simplified"], \u63A8: ["chinese_simplified", "chinese_traditional"], \u663E: ["chinese_simplified"], \u8C08: ["chinese_simplified"], \u7F6A: ["chinese_simplified", "chinese_traditional"], \u795E: ["chinese_simplified", "chinese_traditional"], \u827A: ["chinese_simplified"], \u5462: ["chinese_simplified", "chinese_traditional"], \u5E2D: ["chinese_simplified", "chinese_traditional"], \u542B: ["chinese_simplified", "chinese_traditional"], \u4F01: ["chinese_simplified", "chinese_traditional"], \u671B: ["chinese_simplified", "chinese_traditional"], \u5BC6: ["chinese_simplified", "chinese_traditional"], \u6279: ["chinese_simplified", "chinese_traditional"], \u8425: ["chinese_simplified"], \u9879: ["chinese_simplified"], \u9632: ["chinese_simplified", "chinese_traditional"], \u4E3E: ["chinese_simplified"], \u7403: ["chinese_simplified", "chinese_traditional"], \u82F1: ["chinese_simplified", "chinese_traditional"], \u6C27: ["chinese_simplified", "chinese_traditional"], \u52BF: ["chinese_simplified"], \u544A: ["chinese_simplified", "chinese_traditional"], \u674E: ["chinese_simplified", "chinese_traditional"], \u53F0: ["chinese_simplified", "chinese_traditional"], \u843D: ["chinese_simplified", "chinese_traditional"], \u6728: ["chinese_simplified", "chinese_traditional"], \u5E2E: ["chinese_simplified"], \u8F6E: ["chinese_simplified"], \u7834: ["chinese_simplified", "chinese_traditional"], \u4E9A: ["chinese_simplified"], \u5E08: ["chinese_simplified"], \u56F4: ["chinese_simplified"], \u6CE8: ["chinese_simplified", "chinese_traditional"], \u8FDC: ["chinese_simplified"], \u5B57: ["chinese_simplified", "chinese_traditional"], \u6750: ["chinese_simplified", "chinese_traditional"], \u6392: ["chinese_simplified", "chinese_traditional"], \u4F9B: ["chinese_simplified", "chinese_traditional"], \u6CB3: ["chinese_simplified", "chinese_traditional"], \u6001: ["chinese_simplified"], \u5C01: ["chinese_simplified", "chinese_traditional"], \u53E6: ["chinese_simplified", "chinese_traditional"], \u65BD: ["chinese_simplified", "chinese_traditional"], \u51CF: ["chinese_simplified"], \u6811: ["chinese_simplified"], \u6EB6: ["chinese_simplified", "chinese_traditional"], \u600E: ["chinese_simplified", "chinese_traditional"], \u6B62: ["chinese_simplified", "chinese_traditional"], \u6848: ["chinese_simplified", "chinese_traditional"], \u8A00: ["chinese_simplified", "chinese_traditional"], \u58EB: ["chinese_simplified", "chinese_traditional"], \u5747: ["chinese_simplified", "chinese_traditional"], \u6B66: ["chinese_simplified", "chinese_traditional"], \u56FA: ["chinese_simplified", "chinese_traditional"], \u53F6: ["chinese_simplified"], \u9C7C: ["chinese_simplified"], \u6CE2: ["chinese_simplified", "chinese_traditional"], \u89C6: ["chinese_simplified"], \u4EC5: ["chinese_simplified"], \u8D39: ["chinese_simplified"], \u7D27: ["chinese_simplified"], \u7231: ["chinese_simplified"], \u5DE6: ["chinese_simplified", "chinese_traditional"], \u7AE0: ["chinese_simplified", "chinese_traditional"], \u65E9: ["chinese_simplified", "chinese_traditional"], \u671D: ["chinese_simplified", "chinese_traditional"], \u5BB3: ["chinese_simplified", "chinese_traditional"], \u7EED: ["chinese_simplified"], \u8F7B: ["chinese_simplified"], \u670D: ["chinese_simplified", "chinese_traditional"], \u8BD5: ["chinese_simplified"], \u98DF: ["chinese_simplified", "chinese_traditional"], \u5145: ["chinese_simplified", "chinese_traditional"], \u5175: ["chinese_simplified", "chinese_traditional"], \u6E90: ["chinese_simplified", "chinese_traditional"], \u5224: ["chinese_simplified", "chinese_traditional"], \u62A4: ["chinese_simplified"], \u53F8: ["chinese_simplified", "chinese_traditional"], \u8DB3: ["chinese_simplified", "chinese_traditional"], \u67D0: ["chinese_simplified", "chinese_traditional"], \u7EC3: ["chinese_simplified"], \u5DEE: ["chinese_simplified", "chinese_traditional"], \u81F4: ["chinese_simplified", "chinese_traditional"], \u677F: ["chinese_simplified", "chinese_traditional"], \u7530: ["chinese_simplified", "chinese_traditional"], \u964D: ["chinese_simplified", "chinese_traditional"], \u9ED1: ["chinese_simplified", "chinese_traditional"], \u72AF: ["chinese_simplified", "chinese_traditional"], \u8D1F: ["chinese_simplified"], \u51FB: ["chinese_simplified"], \u8303: ["chinese_simplified", "chinese_traditional"], \u7EE7: ["chinese_simplified"], \u5174: ["chinese_simplified"], \u4F3C: ["chinese_simplified", "chinese_traditional"], \u4F59: ["chinese_simplified"], \u575A: ["chinese_simplified"], \u66F2: ["chinese_simplified", "chinese_traditional"], \u8F93: ["chinese_simplified"], \u4FEE: ["chinese_simplified", "chinese_traditional"], \u6545: ["chinese_simplified", "chinese_traditional"], \u57CE: ["chinese_simplified", "chinese_traditional"], \u592B: ["chinese_simplified", "chinese_traditional"], \u591F: ["chinese_simplified"], \u9001: ["chinese_simplified", "chinese_traditional"], \u7B14: ["chinese_simplified"], \u8239: ["chinese_simplified", "chinese_traditional"], \u5360: ["chinese_simplified"], \u53F3: ["chinese_simplified", "chinese_traditional"], \u8D22: ["chinese_simplified"], \u5403: ["chinese_simplified", "chinese_traditional"], \u5BCC: ["chinese_simplified", "chinese_traditional"], \u6625: ["chinese_simplified", "chinese_traditional"], \u804C: ["chinese_simplified"], \u89C9: ["chinese_simplified"], \u6C49: ["chinese_simplified"], \u753B: ["chinese_simplified"], \u529F: ["chinese_simplified", "chinese_traditional"], \u5DF4: ["chinese_simplified", "chinese_traditional"], \u8DDF: ["chinese_simplified", "chinese_traditional"], \u867D: ["chinese_simplified"], \u6742: ["chinese_simplified"], \u98DE: ["chinese_simplified"], \u68C0: ["chinese_simplified"], \u5438: ["chinese_simplified", "chinese_traditional"], \u52A9: ["chinese_simplified", "chinese_traditional"], \u5347: ["chinese_simplified"], \u9633: ["chinese_simplified"], \u4E92: ["chinese_simplified", "chinese_traditional"], \u521D: ["chinese_simplified", "chinese_traditional"], \u521B: ["chinese_simplified"], \u6297: ["chinese_simplified", "chinese_traditional"], \u8003: ["chinese_simplified", "chinese_traditional"], \u6295: ["chinese_simplified", "chinese_traditional"], \u574F: ["chinese_simplified"], \u7B56: ["chinese_simplified", "chinese_traditional"], \u53E4: ["chinese_simplified", "chinese_traditional"], \u5F84: ["chinese_simplified"], \u6362: ["chinese_simplified"], \u672A: ["chinese_simplified", "chinese_traditional"], \u8DD1: ["chinese_simplified", "chinese_traditional"], \u7559: ["chinese_simplified", "chinese_traditional"], \u94A2: ["chinese_simplified"], \u66FE: ["chinese_simplified", "chinese_traditional"], \u7AEF: ["chinese_simplified", "chinese_traditional"], \u8D23: ["chinese_simplified"], \u7AD9: ["chinese_simplified", "chinese_traditional"], \u7B80: ["chinese_simplified"], \u8FF0: ["chinese_simplified", "chinese_traditional"], \u94B1: ["chinese_simplified"], \u526F: ["chinese_simplified", "chinese_traditional"], \u5C3D: ["chinese_simplified"], \u5E1D: ["chinese_simplified", "chinese_traditional"], \u5C04: ["chinese_simplified", "chinese_traditional"], \u8349: ["chinese_simplified", "chinese_traditional"], \u51B2: ["chinese_simplified"], \u627F: ["chinese_simplified", "chinese_traditional"], \u72EC: ["chinese_simplified"], \u4EE4: ["chinese_simplified", "chinese_traditional"], \u9650: ["chinese_simplified", "chinese_traditional"], \u963F: ["chinese_simplified", "chinese_traditional"], \u5BA3: ["chinese_simplified", "chinese_traditional"], \u73AF: ["chinese_simplified"], \u53CC: ["chinese_simplified"], \u8BF7: ["chinese_simplified"], \u8D85: ["chinese_simplified", "chinese_traditional"], \u5FAE: ["chinese_simplified", "chinese_traditional"], \u8BA9: ["chinese_simplified"], \u63A7: ["chinese_simplified", "chinese_traditional"], \u5DDE: ["chinese_simplified", "chinese_traditional"], \u826F: ["chinese_simplified", "chinese_traditional"], \u8F74: ["chinese_simplified"], \u627E: ["chinese_simplified", "chinese_traditional"], \u5426: ["chinese_simplified", "chinese_traditional"], \u7EAA: ["chinese_simplified"], \u76CA: ["chinese_simplified", "chinese_traditional"], \u4F9D: ["chinese_simplified", "chinese_traditional"], \u4F18: ["chinese_simplified"], \u9876: ["chinese_simplified"], \u7840: ["chinese_simplified"], \u8F7D: ["chinese_simplified"], \u5012: ["chinese_simplified", "chinese_traditional"], \u623F: ["chinese_simplified", "chinese_traditional"], \u7A81: ["chinese_simplified", "chinese_traditional"], \u5750: ["chinese_simplified", "chinese_traditional"], \u7C89: ["chinese_simplified", "chinese_traditional"], \u654C: ["chinese_simplified"], \u7565: ["chinese_simplified", "chinese_traditional"], \u5BA2: ["chinese_simplified", "chinese_traditional"], \u8881: ["chinese_simplified", "chinese_traditional"], \u51B7: ["chinese_simplified", "chinese_traditional"], \u80DC: ["chinese_simplified"], \u7EDD: ["chinese_simplified"], \u6790: ["chinese_simplified", "chinese_traditional"], \u5757: ["chinese_simplified"], \u5242: ["chinese_simplified"], \u6D4B: ["chinese_simplified"], \u4E1D: ["chinese_simplified"], \u534F: ["chinese_simplified"], \u8BC9: ["chinese_simplified"], \u5FF5: ["chinese_simplified", "chinese_traditional"], \u9648: ["chinese_simplified"], \u4ECD: ["chinese_simplified", "chinese_traditional"], \u7F57: ["chinese_simplified"], \u76D0: ["chinese_simplified"], \u53CB: ["chinese_simplified", "chinese_traditional"], \u6D0B: ["chinese_simplified", "chinese_traditional"], \u9519: ["chinese_simplified"], \u82E6: ["chinese_simplified", "chinese_traditional"], \u591C: ["chinese_simplified", "chinese_traditional"], \u5211: ["chinese_simplified", "chinese_traditional"], \u79FB: ["chinese_simplified", "chinese_traditional"], \u9891: ["chinese_simplified"], \u9010: ["chinese_simplified", "chinese_traditional"], \u9760: ["chinese_simplified", "chinese_traditional"], \u6DF7: ["chinese_simplified", "chinese_traditional"], \u6BCD: ["chinese_simplified", "chinese_traditional"], \u77ED: ["chinese_simplified", "chinese_traditional"], \u76AE: ["chinese_simplified", "chinese_traditional"], \u7EC8: ["chinese_simplified"], \u805A: ["chinese_simplified", "chinese_traditional"], \u6C7D: ["chinese_simplified", "chinese_traditional"], \u6751: ["chinese_simplified", "chinese_traditional"], \u4E91: ["chinese_simplified"], \u54EA: ["chinese_simplified", "chinese_traditional"], \u65E2: ["chinese_simplified", "chinese_traditional"], \u8DDD: ["chinese_simplified", "chinese_traditional"], \u536B: ["chinese_simplified"], \u505C: ["chinese_simplified", "chinese_traditional"], \u70C8: ["chinese_simplified", "chinese_traditional"], \u592E: ["chinese_simplified", "chinese_traditional"], \u5BDF: ["chinese_simplified", "chinese_traditional"], \u70E7: ["chinese_simplified"], \u8FC5: ["chinese_simplified", "chinese_traditional"], \u5883: ["chinese_simplified", "chinese_traditional"], \u82E5: ["chinese_simplified", "chinese_traditional"], \u5370: ["chinese_simplified", "chinese_traditional"], \u6D32: ["chinese_simplified", "chinese_traditional"], \u523B: ["chinese_simplified", "chinese_traditional"], \u62EC: ["chinese_simplified", "chinese_traditional"], \u6FC0: ["chinese_simplified", "chinese_traditional"], \u5B54: ["chinese_simplified", "chinese_traditional"], \u641E: ["chinese_simplified", "chinese_traditional"], \u751A: ["chinese_simplified", "chinese_traditional"], \u5BA4: ["chinese_simplified", "chinese_traditional"], \u5F85: ["chinese_simplified", "chinese_traditional"], \u6838: ["chinese_simplified", "chinese_traditional"], \u6821: ["chinese_simplified", "chinese_traditional"], \u6563: ["chinese_simplified", "chinese_traditional"], \u4FB5: ["chinese_simplified", "chinese_traditional"], \u5427: ["chinese_simplified", "chinese_traditional"], \u7532: ["chinese_simplified", "chinese_traditional"], \u6E38: ["chinese_simplified"], \u4E45: ["chinese_simplified", "chinese_traditional"], \u83DC: ["chinese_simplified", "chinese_traditional"], \u5473: ["chinese_simplified", "chinese_traditional"], \u65E7: ["chinese_simplified"], \u6A21: ["chinese_simplified", "chinese_traditional"], \u6E56: ["chinese_simplified", "chinese_traditional"], \u8D27: ["chinese_simplified"], \u635F: ["chinese_simplified"], \u9884: ["chinese_simplified"], \u963B: ["chinese_simplified", "chinese_traditional"], \u6BEB: ["chinese_simplified", "chinese_traditional"], \u666E: ["chinese_simplified", "chinese_traditional"], \u7A33: ["chinese_simplified"], \u4E59: ["chinese_simplified", "chinese_traditional"], \u5988: ["chinese_simplified"], \u690D: ["chinese_simplified", "chinese_traditional"], \u606F: ["chinese_simplified", "chinese_traditional"], \u6269: ["chinese_simplified"], \u94F6: ["chinese_simplified"], \u8BED: ["chinese_simplified"], \u6325: ["chinese_simplified"], \u9152: ["chinese_simplified", "chinese_traditional"], \u5B88: ["chinese_simplified", "chinese_traditional"], \u62FF: ["chinese_simplified", "chinese_traditional"], \u5E8F: ["chinese_simplified", "chinese_traditional"], \u7EB8: ["chinese_simplified"], \u533B: ["chinese_simplified"], \u7F3A: ["chinese_simplified", "chinese_traditional"], \u96E8: ["chinese_simplified", "chinese_traditional"], \u5417: ["chinese_simplified"], \u9488: ["chinese_simplified"], \u5218: ["chinese_simplified"], \u554A: ["chinese_simplified", "chinese_traditional"], \u6025: ["chinese_simplified", "chinese_traditional"], \u5531: ["chinese_simplified", "chinese_traditional"], \u8BEF: ["chinese_simplified"], \u8BAD: ["chinese_simplified"], \u613F: ["chinese_simplified"], \u5BA1: ["chinese_simplified"], \u9644: ["chinese_simplified", "chinese_traditional"], \u83B7: ["chinese_simplified"], \u8336: ["chinese_simplified", "chinese_traditional"], \u9C9C: ["chinese_simplified"], \u7CAE: ["chinese_simplified"], \u65A4: ["chinese_simplified", "chinese_traditional"], \u5B69: ["chinese_simplified", "chinese_traditional"], \u8131: ["chinese_simplified"], \u786B: ["chinese_simplified", "chinese_traditional"], \u80A5: ["chinese_simplified", "chinese_traditional"], \u5584: ["chinese_simplified", "chinese_traditional"], \u9F99: ["chinese_simplified"], \u6F14: ["chinese_simplified", "chinese_traditional"], \u7236: ["chinese_simplified", "chinese_traditional"], \u6E10: ["chinese_simplified"], \u8840: ["chinese_simplified", "chinese_traditional"], \u6B22: ["chinese_simplified"], \u68B0: ["chinese_simplified", "chinese_traditional"], \u638C: ["chinese_simplified", "chinese_traditional"], \u6B4C: ["chinese_simplified", "chinese_traditional"], \u6C99: ["chinese_simplified", "chinese_traditional"], \u521A: ["chinese_simplified"], \u653B: ["chinese_simplified", "chinese_traditional"], \u8C13: ["chinese_simplified"], \u76FE: ["chinese_simplified", "chinese_traditional"], \u8BA8: ["chinese_simplified"], \u665A: ["chinese_simplified", "chinese_traditional"], \u7C92: ["chinese_simplified", "chinese_traditional"], \u4E71: ["chinese_simplified"], \u71C3: ["chinese_simplified", "chinese_traditional"], \u77DB: ["chinese_simplified", "chinese_traditional"], \u4E4E: ["chinese_simplified", "chinese_traditional"], \u6740: ["chinese_simplified"], \u836F: ["chinese_simplified"], \u5B81: ["chinese_simplified"], \u9C81: ["chinese_simplified"], \u8D35: ["chinese_simplified"], \u949F: ["chinese_simplified"], \u7164: ["chinese_simplified", "chinese_traditional"], \u8BFB: ["chinese_simplified"], \u73ED: ["chinese_simplified", "chinese_traditional"], \u4F2F: ["chinese_simplified", "chinese_traditional"], \u9999: ["chinese_simplified", "chinese_traditional"], \u4ECB: ["chinese_simplified", "chinese_traditional"], \u8FEB: ["chinese_simplified", "chinese_traditional"], \u53E5: ["chinese_simplified", "chinese_traditional"], \u4E30: ["chinese_simplified"], \u57F9: ["chinese_simplified", "chinese_traditional"], \u63E1: ["chinese_simplified", "chinese_traditional"], \u5170: ["chinese_simplified"], \u62C5: ["chinese_simplified"], \u5F26: ["chinese_simplified", "chinese_traditional"], \u86CB: ["chinese_simplified", "chinese_traditional"], \u6C89: ["chinese_simplified", "chinese_traditional"], \u5047: ["chinese_simplified", "chinese_traditional"], \u7A7F: ["chinese_simplified", "chinese_traditional"], \u6267: ["chinese_simplified"], \u7B54: ["chinese_simplified", "chinese_traditional"], \u4E50: ["chinese_simplified"], \u8C01: ["chinese_simplified"], \u987A: ["chinese_simplified"], \u70DF: ["chinese_simplified"], \u7F29: ["chinese_simplified"], \u5F81: ["chinese_simplified"], \u8138: ["chinese_simplified"], \u559C: ["chinese_simplified", "chinese_traditional"], \u677E: ["chinese_simplified", "chinese_traditional"], \u811A: ["chinese_simplified"], \u56F0: ["chinese_simplified", "chinese_traditional"], \u5F02: ["chinese_simplified"], \u514D: ["chinese_simplified", "chinese_traditional"], \u80CC: ["chinese_simplified", "chinese_traditional"], \u661F: ["chinese_simplified", "chinese_traditional"], \u798F: ["chinese_simplified", "chinese_traditional"], \u4E70: ["chinese_simplified"], \u67D3: ["chinese_simplified", "chinese_traditional"], \u4E95: ["chinese_simplified", "chinese_traditional"], \u6982: ["chinese_simplified", "chinese_traditional"], \u6162: ["chinese_simplified", "chinese_traditional"], \u6015: ["chinese_simplified", "chinese_traditional"], \u78C1: ["chinese_simplified", "chinese_traditional"], \u500D: ["chinese_simplified", "chinese_traditional"], \u7956: ["chinese_simplified", "chinese_traditional"], \u7687: ["chinese_simplified", "chinese_traditional"], \u4FC3: ["chinese_simplified", "chinese_traditional"], \u9759: ["chinese_simplified"], \u8865: ["chinese_simplified"], \u8BC4: ["chinese_simplified"], \u7FFB: ["chinese_simplified", "chinese_traditional"], \u8089: ["chinese_simplified", "chinese_traditional"], \u8DF5: ["chinese_simplified"], \u5C3C: ["chinese_simplified", "chinese_traditional"], \u8863: ["chinese_simplified", "chinese_traditional"], \u5BBD: ["chinese_simplified"], \u626C: ["chinese_simplified"], \u68C9: ["chinese_simplified", "chinese_traditional"], \u5E0C: ["chinese_simplified", "chinese_traditional"], \u4F24: ["chinese_simplified"], \u64CD: ["chinese_simplified", "chinese_traditional"], \u5782: ["chinese_simplified", "chinese_traditional"], \u79CB: ["chinese_simplified", "chinese_traditional"], \u5B9C: ["chinese_simplified", "chinese_traditional"], \u6C22: ["chinese_simplified"], \u5957: ["chinese_simplified", "chinese_traditional"], \u7763: ["chinese_simplified", "chinese_traditional"], \u632F: ["chinese_simplified", "chinese_traditional"], \u67B6: ["chinese_simplified", "chinese_traditional"], \u4EAE: ["chinese_simplified", "chinese_traditional"], \u672B: ["chinese_simplified", "chinese_traditional"], \u5BAA: ["chinese_simplified"], \u5E86: ["chinese_simplified"], \u7F16: ["chinese_simplified"], \u725B: ["chinese_simplified", "chinese_traditional"], \u89E6: ["chinese_simplified"], \u6620: ["chinese_simplified", "chinese_traditional"], \u96F7: ["chinese_simplified", "chinese_traditional"], \u9500: ["chinese_simplified"], \u8BD7: ["chinese_simplified"], \u5EA7: ["chinese_simplified", "chinese_traditional"], \u5C45: ["chinese_simplified", "chinese_traditional"], \u6293: ["chinese_simplified", "chinese_traditional"], \u88C2: ["chinese_simplified", "chinese_traditional"], \u80DE: ["chinese_simplified", "chinese_traditional"], \u547C: ["chinese_simplified", "chinese_traditional"], \u5A18: ["chinese_simplified", "chinese_traditional"], \u666F: ["chinese_simplified", "chinese_traditional"], \u5A01: ["chinese_simplified", "chinese_traditional"], \u7EFF: ["chinese_simplified"], \u6676: ["chinese_simplified", "chinese_traditional"], \u539A: ["chinese_simplified", "chinese_traditional"], \u76DF: ["chinese_simplified", "chinese_traditional"], \u8861: ["chinese_simplified", "chinese_traditional"], \u9E21: ["chinese_simplified"], \u5B59: ["chinese_simplified"], \u5EF6: ["chinese_simplified", "chinese_traditional"], \u5371: ["chinese_simplified", "chinese_traditional"], \u80F6: ["chinese_simplified"], \u5C4B: ["chinese_simplified", "chinese_traditional"], \u4E61: ["chinese_simplified"], \u4E34: ["chinese_simplified"], \u9646: ["chinese_simplified"], \u987E: ["chinese_simplified"], \u6389: ["chinese_simplified", "chinese_traditional"], \u5440: ["chinese_simplified", "chinese_traditional"], \u706F: ["chinese_simplified"], \u5C81: ["chinese_simplified"], \u63AA: ["chinese_simplified", "chinese_traditional"], \u675F: ["chinese_simplified", "chinese_traditional"], \u8010: ["chinese_simplified", "chinese_traditional"], \u5267: ["chinese_simplified"], \u7389: ["chinese_simplified", "chinese_traditional"], \u8D75: ["chinese_simplified"], \u8DF3: ["chinese_simplified", "chinese_traditional"], \u54E5: ["chinese_simplified", "chinese_traditional"], \u5B63: ["chinese_simplified", "chinese_traditional"], \u8BFE: ["chinese_simplified"], \u51EF: ["chinese_simplified"], \u80E1: ["chinese_simplified", "chinese_traditional"], \u989D: ["chinese_simplified"], \u6B3E: ["chinese_simplified", "chinese_traditional"], \u7ECD: ["chinese_simplified"], \u5377: ["chinese_simplified", "chinese_traditional"], \u9F50: ["chinese_simplified"], \u4F1F: ["chinese_simplified"], \u84B8: ["chinese_simplified", "chinese_traditional"], \u6B96: ["chinese_simplified", "chinese_traditional"], \u6C38: ["chinese_simplified", "chinese_traditional"], \u5B97: ["chinese_simplified", "chinese_traditional"], \u82D7: ["chinese_simplified", "chinese_traditional"], \u5DDD: ["chinese_simplified", "chinese_traditional"], \u7089: ["chinese_simplified"], \u5CA9: ["chinese_simplified", "chinese_traditional"], \u5F31: ["chinese_simplified", "chinese_traditional"], \u96F6: ["chinese_simplified", "chinese_traditional"], \u6768: ["chinese_simplified"], \u594F: ["chinese_simplified", "chinese_traditional"], \u6CBF: ["chinese_simplified", "chinese_traditional"], \u9732: ["chinese_simplified", "chinese_traditional"], \u6746: ["chinese_simplified"], \u63A2: ["chinese_simplified", "chinese_traditional"], \u6ED1: ["chinese_simplified", "chinese_traditional"], \u9547: ["chinese_simplified"], \u996D: ["chinese_simplified"], \u6D53: ["chinese_simplified"], \u822A: ["chinese_simplified", "chinese_traditional"], \u6000: ["chinese_simplified"], \u8D76: ["chinese_simplified"], \u5E93: ["chinese_simplified"], \u593A: ["chinese_simplified"], \u4F0A: ["chinese_simplified", "chinese_traditional"], \u7075: ["chinese_simplified"], \u7A0E: ["chinese_simplified"], \u9014: ["chinese_simplified", "chinese_traditional"], \u706D: ["chinese_simplified"], \u8D5B: ["chinese_simplified"], \u5F52: ["chinese_simplified"], \u53EC: ["chinese_simplified", "chinese_traditional"], \u9F13: ["chinese_simplified", "chinese_traditional"], \u64AD: ["chinese_simplified", "chinese_traditional"], \u76D8: ["chinese_simplified"], \u88C1: ["chinese_simplified", "chinese_traditional"], \u9669: ["chinese_simplified"], \u5EB7: ["chinese_simplified", "chinese_traditional"], \u552F: ["chinese_simplified", "chinese_traditional"], \u5F55: ["chinese_simplified"], \u83CC: ["chinese_simplified", "chinese_traditional"], \u7EAF: ["chinese_simplified"], \u501F: ["chinese_simplified", "chinese_traditional"], \u7CD6: ["chinese_simplified", "chinese_traditional"], \u76D6: ["chinese_simplified"], \u6A2A: ["chinese_simplified"], \u7B26: ["chinese_simplified", "chinese_traditional"], \u79C1: ["chinese_simplified", "chinese_traditional"], \u52AA: ["chinese_simplified", "chinese_traditional"], \u5802: ["chinese_simplified", "chinese_traditional"], \u57DF: ["chinese_simplified", "chinese_traditional"], \u67AA: ["chinese_simplified"], \u6DA6: ["chinese_simplified"], \u5E45: ["chinese_simplified", "chinese_traditional"], \u54C8: ["chinese_simplified", "chinese_traditional"], \u7ADF: ["chinese_simplified", "chinese_traditional"], \u719F: ["chinese_simplified", "chinese_traditional"], \u866B: ["chinese_simplified"], \u6CFD: ["chinese_simplified"], \u8111: ["chinese_simplified"], \u58E4: ["chinese_simplified", "chinese_traditional"], \u78B3: ["chinese_simplified", "chinese_traditional"], \u6B27: ["chinese_simplified"], \u904D: ["chinese_simplified", "chinese_traditional"], \u4FA7: ["chinese_simplified"], \u5BE8: ["chinese_simplified", "chinese_traditional"], \u6562: ["chinese_simplified", "chinese_traditional"], \u5F7B: ["chinese_simplified"], \u8651: ["chinese_simplified"], \u659C: ["chinese_simplified", "chinese_traditional"], \u8584: ["chinese_simplified", "chinese_traditional"], \u5EAD: ["chinese_simplified", "chinese_traditional"], \u7EB3: ["chinese_simplified"], \u5F39: ["chinese_simplified"], \u9972: ["chinese_simplified"], \u4F38: ["chinese_simplified", "chinese_traditional"], \u6298: ["chinese_simplified", "chinese_traditional"], \u9EA6: ["chinese_simplified"], \u6E7F: ["chinese_simplified"], \u6697: ["chinese_simplified", "chinese_traditional"], \u8377: ["chinese_simplified", "chinese_traditional"], \u74E6: ["chinese_simplified", "chinese_traditional"], \u585E: ["chinese_simplified", "chinese_traditional"], \u5E8A: ["chinese_simplified", "chinese_traditional"], \u7B51: ["chinese_simplified"], \u6076: ["chinese_simplified"], \u6237: ["chinese_simplified"], \u8BBF: ["chinese_simplified"], \u5854: ["chinese_simplified", "chinese_traditional"], \u5947: ["chinese_simplified", "chinese_traditional"], \u900F: ["chinese_simplified", "chinese_traditional"], \u6881: ["chinese_simplified", "chinese_traditional"], \u5200: ["chinese_simplified", "chinese_traditional"], \u65CB: ["chinese_simplified", "chinese_traditional"], \u8FF9: ["chinese_simplified"], \u5361: ["chinese_simplified", "chinese_traditional"], \u6C2F: ["chinese_simplified", "chinese_traditional"], \u9047: ["chinese_simplified", "chinese_traditional"], \u4EFD: ["chinese_simplified", "chinese_traditional"], \u6BD2: ["chinese_simplified", "chinese_traditional"], \u6CE5: ["chinese_simplified", "chinese_traditional"], \u9000: ["chinese_simplified", "chinese_traditional"], \u6D17: ["chinese_simplified", "chinese_traditional"], \u6446: ["chinese_simplified"], \u7070: ["chinese_simplified", "chinese_traditional"], \u5F69: ["chinese_simplified", "chinese_traditional"], \u5356: ["chinese_simplified"], \u8017: ["chinese_simplified", "chinese_traditional"], \u590F: ["chinese_simplified", "chinese_traditional"], \u62E9: ["chinese_simplified"], \u5FD9: ["chinese_simplified", "chinese_traditional"], \u94DC: ["chinese_simplified"], \u732E: ["chinese_simplified"], \u786C: ["chinese_simplified", "chinese_traditional"], \u4E88: ["chinese_simplified", "chinese_traditional"], \u7E41: ["chinese_simplified", "chinese_traditional"], \u5708: ["chinese_simplified", "chinese_traditional"], \u96EA: ["chinese_simplified", "chinese_traditional"], \u51FD: ["chinese_simplified", "chinese_traditional"], \u4EA6: ["chinese_simplified", "chinese_traditional"], \u62BD: ["chinese_simplified", "chinese_traditional"], \u7BC7: ["chinese_simplified", "chinese_traditional"], \u9635: ["chinese_simplified"], \u9634: ["chinese_simplified"], \u4E01: ["chinese_simplified", "chinese_traditional"], \u5C3A: ["chinese_simplified", "chinese_traditional"], \u8FFD: ["chinese_simplified", "chinese_traditional"], \u5806: ["chinese_simplified", "chinese_traditional"], \u96C4: ["chinese_simplified", "chinese_traditional"], \u8FCE: ["chinese_simplified", "chinese_traditional"], \u6CDB: ["chinese_simplified", "chinese_traditional"], \u7238: ["chinese_simplified", "chinese_traditional"], \u697C: ["chinese_simplified"], \u907F: ["chinese_simplified", "chinese_traditional"], \u8C0B: ["chinese_simplified"], \u5428: ["chinese_simplified"], \u91CE: ["chinese_simplified", "chinese_traditional"], \u732A: ["chinese_simplified"], \u65D7: ["chinese_simplified", "chinese_traditional"], \u7D2F: ["chinese_simplified", "chinese_traditional"], \u504F: ["chinese_simplified", "chinese_traditional"], \u5178: ["chinese_simplified", "chinese_traditional"], \u9986: ["chinese_simplified"], \u7D22: ["chinese_simplified", "chinese_traditional"], \u79E6: ["chinese_simplified", "chinese_traditional"], \u8102: ["chinese_simplified", "chinese_traditional"], \u6F6E: ["chinese_simplified", "chinese_traditional"], \u7237: ["chinese_simplified"], \u8C46: ["chinese_simplified", "chinese_traditional"], \u5FFD: ["chinese_simplified", "chinese_traditional"], \u6258: ["chinese_simplified", "chinese_traditional"], \u60CA: ["chinese_simplified"], \u5851: ["chinese_simplified", "chinese_traditional"], \u9057: ["chinese_simplified"], \u6108: ["chinese_simplified", "chinese_traditional"], \u6731: ["chinese_simplified", "chinese_traditional"], \u66FF: ["chinese_simplified", "chinese_traditional"], \u7EA4: ["chinese_simplified"], \u7C97: ["chinese_simplified", "chinese_traditional"], \u503E: ["chinese_simplified"], \u5C1A: ["chinese_simplified", "chinese_traditional"], \u75DB: ["chinese_simplified", "chinese_traditional"], \u695A: ["chinese_simplified", "chinese_traditional"], \u8C22: ["chinese_simplified"], \u594B: ["chinese_simplified"], \u8D2D: ["chinese_simplified"], \u78E8: ["chinese_simplified", "chinese_traditional"], \u541B: ["chinese_simplified", "chinese_traditional"], \u6C60: ["chinese_simplified", "chinese_traditional"], \u65C1: ["chinese_simplified", "chinese_traditional"], \u788E: ["chinese_simplified", "chinese_traditional"], \u9AA8: ["chinese_simplified", "chinese_traditional"], \u76D1: ["chinese_simplified"], \u6355: ["chinese_simplified", "chinese_traditional"], \u5F1F: ["chinese_simplified", "chinese_traditional"], \u66B4: ["chinese_simplified", "chinese_traditional"], \u5272: ["chinese_simplified", "chinese_traditional"], \u8D2F: ["chinese_simplified"], \u6B8A: ["chinese_simplified", "chinese_traditional"], \u91CA: ["chinese_simplified"], \u8BCD: ["chinese_simplified"], \u4EA1: ["chinese_simplified", "chinese_traditional"], \u58C1: ["chinese_simplified", "chinese_traditional"], \u987F: ["chinese_simplified"], \u5B9D: ["chinese_simplified"], \u5348: ["chinese_simplified", "chinese_traditional"], \u5C18: ["chinese_simplified"], \u95FB: ["chinese_simplified"], \u63ED: ["chinese_simplified", "chinese_traditional"], \u70AE: ["chinese_simplified", "chinese_traditional"], \u6B8B: ["chinese_simplified"], \u51AC: ["chinese_simplified", "chinese_traditional"], \u6865: ["chinese_simplified"], \u5987: ["chinese_simplified"], \u8B66: ["chinese_simplified", "chinese_traditional"], \u7EFC: ["chinese_simplified"], \u62DB: ["chinese_simplified", "chinese_traditional"], \u5434: ["chinese_simplified"], \u4ED8: ["chinese_simplified", "chinese_traditional"], \u6D6E: ["chinese_simplified", "chinese_traditional"], \u906D: ["chinese_simplified", "chinese_traditional"], \u5F90: ["chinese_simplified", "chinese_traditional"], \u60A8: ["chinese_simplified", "chinese_traditional"], \u6447: ["chinese_simplified"], \u8C37: ["chinese_simplified", "chinese_traditional"], \u8D5E: ["chinese_simplified"], \u7BB1: ["chinese_simplified", "chinese_traditional"], \u9694: ["chinese_simplified", "chinese_traditional"], \u8BA2: ["chinese_simplified"], \u7537: ["chinese_simplified", "chinese_traditional"], \u5439: ["chinese_simplified", "chinese_traditional"], \u56ED: ["chinese_simplified"], \u7EB7: ["chinese_simplified"], \u5510: ["chinese_simplified", "chinese_traditional"], \u8D25: ["chinese_simplified"], \u5B8B: ["chinese_simplified", "chinese_traditional"], \u73BB: ["chinese_simplified", "chinese_traditional"], \u5DE8: ["chinese_simplified", "chinese_traditional"], \u8015: ["chinese_simplified", "chinese_traditional"], \u5766: ["chinese_simplified", "chinese_traditional"], \u8363: ["chinese_simplified"], \u95ED: ["chinese_simplified"], \u6E7E: ["chinese_simplified"], \u952E: ["chinese_simplified"], \u51E1: ["chinese_simplified", "chinese_traditional"], \u9A7B: ["chinese_simplified"], \u9505: ["chinese_simplified"], \u6551: ["chinese_simplified", "chinese_traditional"], \u6069: ["chinese_simplified", "chinese_traditional"], \u5265: ["chinese_simplified"], \u51DD: ["chinese_simplified", "chinese_traditional"], \u78B1: ["chinese_simplified"], \u9F7F: ["chinese_simplified"], \u622A: ["chinese_simplified", "chinese_traditional"], \u70BC: ["chinese_simplified"], \u9EBB: ["chinese_simplified", "chinese_traditional"], \u7EBA: ["chinese_simplified"], \u7981: ["chinese_simplified", "chinese_traditional"], \u5E9F: ["chinese_simplified"], \u76DB: ["chinese_simplified", "chinese_traditional"], \u7248: ["chinese_simplified", "chinese_traditional"], \u7F13: ["chinese_simplified"], \u51C0: ["chinese_simplified"], \u775B: ["chinese_simplified", "chinese_traditional"], \u660C: ["chinese_simplified", "chinese_traditional"], \u5A5A: ["chinese_simplified", "chinese_traditional"], \u6D89: ["chinese_simplified", "chinese_traditional"], \u7B52: ["chinese_simplified", "chinese_traditional"], \u5634: ["chinese_simplified", "chinese_traditional"], \u63D2: ["chinese_simplified", "chinese_traditional"], \u5CB8: ["chinese_simplified", "chinese_traditional"], \u6717: ["chinese_simplified", "chinese_traditional"], \u5E84: ["chinese_simplified"], \u8857: ["chinese_simplified", "chinese_traditional"], \u85CF: ["chinese_simplified", "chinese_traditional"], \u59D1: ["chinese_simplified", "chinese_traditional"], \u8D38: ["chinese_simplified"], \u8150: ["chinese_simplified", "chinese_traditional"], \u5974: ["chinese_simplified", "chinese_traditional"], \u5566: ["chinese_simplified", "chinese_traditional"], \u60EF: ["chinese_simplified"], \u4E58: ["chinese_simplified", "chinese_traditional"], \u4F19: ["chinese_simplified"], \u6062: ["chinese_simplified", "chinese_traditional"], \u5300: ["chinese_simplified"], \u7EB1: ["chinese_simplified"], \u624E: ["chinese_simplified", "chinese_traditional"], \u8FA9: ["chinese_simplified"], \u8033: ["chinese_simplified", "chinese_traditional"], \u5F6A: ["chinese_simplified", "chinese_traditional"], \u81E3: ["chinese_simplified", "chinese_traditional"], \u4EBF: ["chinese_simplified"], \u7483: ["chinese_simplified", "chinese_traditional"], \u62B5: ["chinese_simplified", "chinese_traditional"], \u8109: ["chinese_simplified"], \u79C0: ["chinese_simplified", "chinese_traditional"], \u8428: ["chinese_simplified"], \u4FC4: ["chinese_simplified", "chinese_traditional"], \u7F51: ["chinese_simplified"], \u821E: ["chinese_simplified", "chinese_traditional"], \u5E97: ["chinese_simplified", "chinese_traditional"], \u55B7: ["chinese_simplified"], \u7EB5: ["chinese_simplified"], \u5BF8: ["chinese_simplified", "chinese_traditional"], \u6C57: ["chinese_simplified", "chinese_traditional"], \u6302: ["chinese_simplified"], \u6D2A: ["chinese_simplified", "chinese_traditional"], \u8D3A: ["chinese_simplified"], \u95EA: ["chinese_simplified"], \u67EC: ["chinese_simplified", "chinese_traditional"], \u7206: ["chinese_simplified", "chinese_traditional"], \u70EF: ["chinese_simplified", "chinese_traditional"], \u6D25: ["chinese_simplified", "chinese_traditional"], \u7A3B: ["chinese_simplified", "chinese_traditional"], \u5899: ["chinese_simplified"], \u8F6F: ["chinese_simplified"], \u52C7: ["chinese_simplified", "chinese_traditional"], \u50CF: ["chinese_simplified", "chinese_traditional"], \u6EDA: ["chinese_simplified"], \u5398: ["chinese_simplified", "chinese_traditional"], \u8499: ["chinese_simplified", "chinese_traditional"], \u82B3: ["chinese_simplified", "chinese_traditional"], \u80AF: ["chinese_simplified", "chinese_traditional"], \u5761: ["chinese_simplified", "chinese_traditional"], \u67F1: ["chinese_simplified", "chinese_traditional"], \u8361: ["chinese_simplified"], \u817F: ["chinese_simplified", "chinese_traditional"], \u4EEA: ["chinese_simplified"], \u65C5: ["chinese_simplified", "chinese_traditional"], \u5C3E: ["chinese_simplified", "chinese_traditional"], \u8F67: ["chinese_simplified"], \u51B0: ["chinese_simplified", "chinese_traditional"], \u8D21: ["chinese_simplified"], \u767B: ["chinese_simplified", "chinese_traditional"], \u9ECE: ["chinese_simplified", "chinese_traditional"], \u524A: ["chinese_simplified", "chinese_traditional"], \u94BB: ["chinese_simplified"], \u52D2: ["chinese_simplified", "chinese_traditional"], \u9003: ["chinese_simplified", "chinese_traditional"], \u969C: ["chinese_simplified", "chinese_traditional"], \u6C28: ["chinese_simplified", "chinese_traditional"], \u90ED: ["chinese_simplified", "chinese_traditional"], \u5CF0: ["chinese_simplified", "chinese_traditional"], \u5E01: ["chinese_simplified"], \u6E2F: ["chinese_simplified", "chinese_traditional"], \u4F0F: ["chinese_simplified", "chinese_traditional"], \u8F68: ["chinese_simplified"], \u4EA9: ["chinese_simplified"], \u6BD5: ["chinese_simplified"], \u64E6: ["chinese_simplified", "chinese_traditional"], \u83AB: ["chinese_simplified", "chinese_traditional"], \u523A: ["chinese_simplified", "chinese_traditional"], \u6D6A: ["chinese_simplified", "chinese_traditional"], \u79D8: ["chinese_simplified", "chinese_traditional"], \u63F4: ["chinese_simplified", "chinese_traditional"], \u682A: ["chinese_simplified", "chinese_traditional"], \u5065: ["chinese_simplified", "chinese_traditional"], \u552E: ["chinese_simplified", "chinese_traditional"], \u80A1: ["chinese_simplified", "chinese_traditional"], \u5C9B: ["chinese_simplified"], \u7518: ["chinese_simplified", "chinese_traditional"], \u6CE1: ["chinese_simplified", "chinese_traditional"], \u7761: ["chinese_simplified", "chinese_traditional"], \u7AE5: ["chinese_simplified", "chinese_traditional"], \u94F8: ["chinese_simplified"], \u6C64: ["chinese_simplified"], \u9600: ["chinese_simplified"], \u4F11: ["chinese_simplified", "chinese_traditional"], \u6C47: ["chinese_simplified"], \u820D: ["chinese_simplified", "chinese_traditional"], \u7267: ["chinese_simplified", "chinese_traditional"], \u7ED5: ["chinese_simplified"], \u70B8: ["chinese_simplified", "chinese_traditional"], \u54F2: ["chinese_simplified", "chinese_traditional"], \u78F7: ["chinese_simplified", "chinese_traditional"], \u7EE9: ["chinese_simplified"], \u670B: ["chinese_simplified", "chinese_traditional"], \u6DE1: ["chinese_simplified", "chinese_traditional"], \u5C16: ["chinese_simplified", "chinese_traditional"], \u542F: ["chinese_simplified"], \u9677: ["chinese_simplified", "chinese_traditional"], \u67F4: ["chinese_simplified", "chinese_traditional"], \u5448: ["chinese_simplified", "chinese_traditional"], \u5F92: ["chinese_simplified", "chinese_traditional"], \u989C: ["chinese_simplified"], \u6CEA: ["chinese_simplified"], \u7A0D: ["chinese_simplified", "chinese_traditional"], \u5FD8: ["chinese_simplified", "chinese_traditional"], \u6CF5: ["chinese_simplified", "chinese_traditional"], \u84DD: ["chinese_simplified"], \u62D6: ["chinese_simplified", "chinese_traditional"], \u6D1E: ["chinese_simplified", "chinese_traditional"], \u6388: ["chinese_simplified", "chinese_traditional"], \u955C: ["chinese_simplified"], \u8F9B: ["chinese_simplified", "chinese_traditional"], \u58EE: ["chinese_simplified"], \u950B: ["chinese_simplified"], \u8D2B: ["chinese_simplified"], \u865A: ["chinese_simplified"], \u5F2F: ["chinese_simplified"], \u6469: ["chinese_simplified", "chinese_traditional"], \u6CF0: ["chinese_simplified", "chinese_traditional"], \u5E7C: ["chinese_simplified", "chinese_traditional"], \u5EF7: ["chinese_simplified", "chinese_traditional"], \u5C0A: ["chinese_simplified", "chinese_traditional"], \u7A97: ["chinese_simplified", "chinese_traditional"], \u7EB2: ["chinese_simplified"], \u5F04: ["chinese_simplified", "chinese_traditional"], \u96B6: ["chinese_simplified"], \u7591: ["chinese_simplified", "chinese_traditional"], \u6C0F: ["chinese_simplified", "chinese_traditional"], \u5BAB: ["chinese_simplified"], \u59D0: ["chinese_simplified", "chinese_traditional"], \u9707: ["chinese_simplified", "chinese_traditional"], \u745E: ["chinese_simplified", "chinese_traditional"], \u602A: ["chinese_simplified", "chinese_traditional"], \u5C24: ["chinese_simplified", "chinese_traditional"], \u7434: ["chinese_simplified", "chinese_traditional"], \u5FAA: ["chinese_simplified", "chinese_traditional"], \u63CF: ["chinese_simplified", "chinese_traditional"], \u819C: ["chinese_simplified", "chinese_traditional"], \u8FDD: ["chinese_simplified"], \u5939: ["chinese_simplified"], \u8170: ["chinese_simplified", "chinese_traditional"], \u7F18: ["chinese_simplified"], \u73E0: ["chinese_simplified", "chinese_traditional"], \u7A77: ["chinese_simplified"], \u68EE: ["chinese_simplified", "chinese_traditional"], \u679D: ["chinese_simplified", "chinese_traditional"], \u7AF9: ["chinese_simplified", "chinese_traditional"], \u6C9F: ["chinese_simplified"], \u50AC: ["chinese_simplified", "chinese_traditional"], \u7EF3: ["chinese_simplified"], \u5FC6: ["chinese_simplified"], \u90A6: ["chinese_simplified", "chinese_traditional"], \u5269: ["chinese_simplified", "chinese_traditional"], \u5E78: ["chinese_simplified", "chinese_traditional"], \u6D46: ["chinese_simplified"], \u680F: ["chinese_simplified"], \u62E5: ["chinese_simplified"], \u7259: ["chinese_simplified", "chinese_traditional"], \u8D2E: ["chinese_simplified"], \u793C: ["chinese_simplified"], \u6EE4: ["chinese_simplified"], \u94A0: ["chinese_simplified"], \u7EB9: ["chinese_simplified"], \u7F62: ["chinese_simplified"], \u62CD: ["chinese_simplified", "chinese_traditional"], \u54B1: ["chinese_simplified", "chinese_traditional"], \u558A: ["chinese_simplified", "chinese_traditional"], \u8896: ["chinese_simplified", "chinese_traditional"], \u57C3: ["chinese_simplified", "chinese_traditional"], \u52E4: ["chinese_simplified", "chinese_traditional"], \u7F5A: ["chinese_simplified"], \u7126: ["chinese_simplified", "chinese_traditional"], \u6F5C: ["chinese_simplified"], \u4F0D: ["chinese_simplified", "chinese_traditional"], \u58A8: ["chinese_simplified", "chinese_traditional"], \u6B32: ["chinese_simplified", "chinese_traditional"], \u7F1D: ["chinese_simplified"], \u59D3: ["chinese_simplified", "chinese_traditional"], \u520A: ["chinese_simplified", "chinese_traditional"], \u9971: ["chinese_simplified"], \u4EFF: ["chinese_simplified", "chinese_traditional"], \u5956: ["chinese_simplified"], \u94DD: ["chinese_simplified"], \u9B3C: ["chinese_simplified", "chinese_traditional"], \u4E3D: ["chinese_simplified"], \u8DE8: ["chinese_simplified", "chinese_traditional"], \u9ED8: ["chinese_simplified", "chinese_traditional"], \u6316: ["chinese_simplified", "chinese_traditional"], \u94FE: ["chinese_simplified"], \u626B: ["chinese_simplified"], \u559D: ["chinese_simplified", "chinese_traditional"], \u888B: ["chinese_simplified", "chinese_traditional"], \u70AD: ["chinese_simplified", "chinese_traditional"], \u6C61: ["chinese_simplified", "chinese_traditional"], \u5E55: ["chinese_simplified", "chinese_traditional"], \u8BF8: ["chinese_simplified"], \u5F27: ["chinese_simplified", "chinese_traditional"], \u52B1: ["chinese_simplified"], \u6885: ["chinese_simplified", "chinese_traditional"], \u5976: ["chinese_simplified", "chinese_traditional"], \u6D01: ["chinese_simplified"], \u707E: ["chinese_simplified"], \u821F: ["chinese_simplified", "chinese_traditional"], \u9274: ["chinese_simplified"], \u82EF: ["chinese_simplified", "chinese_traditional"], \u8BBC: ["chinese_simplified"], \u62B1: ["chinese_simplified", "chinese_traditional"], \u6BC1: ["chinese_simplified"], \u61C2: ["chinese_simplified", "chinese_traditional"], \u5BD2: ["chinese_simplified", "chinese_traditional"], \u667A: ["chinese_simplified", "chinese_traditional"], \u57D4: ["chinese_simplified", "chinese_traditional"], \u5BC4: ["chinese_simplified", "chinese_traditional"], \u5C4A: ["chinese_simplified"], \u8DC3: ["chinese_simplified"], \u6E21: ["chinese_simplified", "chinese_traditional"], \u6311: ["chinese_simplified", "chinese_traditional"], \u4E39: ["chinese_simplified", "chinese_traditional"], \u8270: ["chinese_simplified"], \u8D1D: ["chinese_simplified"], \u78B0: ["chinese_simplified", "chinese_traditional"], \u62D4: ["chinese_simplified", "chinese_traditional"], \u7239: ["chinese_simplified", "chinese_traditional"], \u6234: ["chinese_simplified", "chinese_traditional"], \u7801: ["chinese_simplified"], \u68A6: ["chinese_simplified"], \u82BD: ["chinese_simplified", "chinese_traditional"], \u7194: ["chinese_simplified", "chinese_traditional"], \u8D64: ["chinese_simplified", "chinese_traditional"], \u6E14: ["chinese_simplified"], \u54ED: ["chinese_simplified", "chinese_traditional"], \u656C: ["chinese_simplified", "chinese_traditional"], \u9897: ["chinese_simplified"], \u5954: ["chinese_simplified", "chinese_traditional"], \u94C5: ["chinese_simplified"], \u4EF2: ["chinese_simplified", "chinese_traditional"], \u864E: ["chinese_simplified", "chinese_traditional"], \u7A00: ["chinese_simplified", "chinese_traditional"], \u59B9: ["chinese_simplified", "chinese_traditional"], \u4E4F: ["chinese_simplified", "chinese_traditional"], \u73CD: ["chinese_simplified", "chinese_traditional"], \u7533: ["chinese_simplified", "chinese_traditional"], \u684C: ["chinese_simplified", "chinese_traditional"], \u9075: ["chinese_simplified", "chinese_traditional"], \u5141: ["chinese_simplified", "chinese_traditional"], \u9686: ["chinese_simplified", "chinese_traditional"], \u87BA: ["chinese_simplified", "chinese_traditional"], \u4ED3: ["chinese_simplified"], \u9B4F: ["chinese_simplified", "chinese_traditional"], \u9510: ["chinese_simplified"], \u6653: ["chinese_simplified"], \u6C2E: ["chinese_simplified", "chinese_traditional"], \u517C: ["chinese_simplified", "chinese_traditional"], \u9690: ["chinese_simplified"], \u788D: ["chinese_simplified"], \u8D6B: ["chinese_simplified", "chinese_traditional"], \u62E8: ["chinese_simplified"], \u5FE0: ["chinese_simplified", "chinese_traditional"], \u8083: ["chinese_simplified"], \u7F38: ["chinese_simplified", "chinese_traditional"], \u7275: ["chinese_simplified"], \u62A2: ["chinese_simplified"], \u535A: ["chinese_simplified", "chinese_traditional"], \u5DE7: ["chinese_simplified", "chinese_traditional"], \u58F3: ["chinese_simplified"], \u5144: ["chinese_simplified", "chinese_traditional"], \u675C: ["chinese_simplified", "chinese_traditional"], \u8BAF: ["chinese_simplified"], \u8BDA: ["chinese_simplified"], \u78A7: ["chinese_simplified", "chinese_traditional"], \u7965: ["chinese_simplified", "chinese_traditional"], \u67EF: ["chinese_simplified", "chinese_traditional"], \u9875: ["chinese_simplified"], \u5DE1: ["chinese_simplified", "chinese_traditional"], \u77E9: ["chinese_simplified", "chinese_traditional"], \u60B2: ["chinese_simplified", "chinese_traditional"], \u704C: ["chinese_simplified", "chinese_traditional"], \u9F84: ["chinese_simplified"], \u4F26: ["chinese_simplified"], \u7968: ["chinese_simplified", "chinese_traditional"], \u5BFB: ["chinese_simplified"], \u6842: ["chinese_simplified", "chinese_traditional"], \u94FA: ["chinese_simplified"], \u5723: ["chinese_simplified"], \u6050: ["chinese_simplified", "chinese_traditional"], \u6070: ["chinese_simplified", "chinese_traditional"], \u90D1: ["chinese_simplified"], \u8DA3: ["chinese_simplified", "chinese_traditional"], \u62AC: ["chinese_simplified", "chinese_traditional"], \u8352: ["chinese_simplified", "chinese_traditional"], \u817E: ["chinese_simplified"], \u8D34: ["chinese_simplified"], \u67D4: ["chinese_simplified", "chinese_traditional"], \u6EF4: ["chinese_simplified", "chinese_traditional"], \u731B: ["chinese_simplified", "chinese_traditional"], \u9614: ["chinese_simplified"], \u8F86: ["chinese_simplified"], \u59BB: ["chinese_simplified", "chinese_traditional"], \u586B: ["chinese_simplified", "chinese_traditional"], \u64A4: ["chinese_simplified", "chinese_traditional"], \u50A8: ["chinese_simplified"], \u7B7E: ["chinese_simplified"], \u95F9: ["chinese_simplified"], \u6270: ["chinese_simplified"], \u7D2B: ["chinese_simplified", "chinese_traditional"], \u7802: ["chinese_simplified", "chinese_traditional"], \u9012: ["chinese_simplified"], \u620F: ["chinese_simplified"], \u540A: ["chinese_simplified", "chinese_traditional"], \u9676: ["chinese_simplified", "chinese_traditional"], \u4F10: ["chinese_simplified", "chinese_traditional"], \u5582: ["chinese_simplified"], \u7597: ["chinese_simplified"], \u74F6: ["chinese_simplified", "chinese_traditional"], \u5A46: ["chinese_simplified", "chinese_traditional"], \u629A: ["chinese_simplified"], \u81C2: ["chinese_simplified", "chinese_traditional"], \u6478: ["chinese_simplified", "chinese_traditional"], \u5FCD: ["chinese_simplified", "chinese_traditional"], \u867E: ["chinese_simplified"], \u8721: ["chinese_simplified"], \u90BB: ["chinese_simplified"], \u80F8: ["chinese_simplified", "chinese_traditional"], \u5DE9: ["chinese_simplified"], \u6324: ["chinese_simplified"], \u5076: ["chinese_simplified", "chinese_traditional"], \u5F03: ["chinese_simplified"], \u69FD: ["chinese_simplified", "chinese_traditional"], \u52B2: ["chinese_simplified"], \u4E73: ["chinese_simplified", "chinese_traditional"], \u9093: ["chinese_simplified"], \u5409: ["chinese_simplified", "chinese_traditional"], \u4EC1: ["chinese_simplified", "chinese_traditional"], \u70C2: ["chinese_simplified"], \u7816: ["chinese_simplified"], \u79DF: ["chinese_simplified", "chinese_traditional"], \u4E4C: ["chinese_simplified"], \u8230: ["chinese_simplified"], \u4F34: ["chinese_simplified", "chinese_traditional"], \u74DC: ["chinese_simplified", "chinese_traditional"], \u6D45: ["chinese_simplified"], \u4E19: ["chinese_simplified", "chinese_traditional"], \u6682: ["chinese_simplified"], \u71E5: ["chinese_simplified", "chinese_traditional"], \u6A61: ["chinese_simplified", "chinese_traditional"], \u67F3: ["chinese_simplified", "chinese_traditional"], \u8FF7: ["chinese_simplified", "chinese_traditional"], \u6696: ["chinese_simplified", "chinese_traditional"], \u724C: ["chinese_simplified", "chinese_traditional"], \u79E7: ["chinese_simplified", "chinese_traditional"], \u80C6: ["chinese_simplified"], \u8BE6: ["chinese_simplified"], \u7C27: ["chinese_simplified", "chinese_traditional"], \u8E0F: ["chinese_simplified", "chinese_traditional"], \u74F7: ["chinese_simplified", "chinese_traditional"], \u8C31: ["chinese_simplified"], \u5446: ["chinese_simplified", "chinese_traditional"], \u5BBE: ["chinese_simplified"], \u7CCA: ["chinese_simplified", "chinese_traditional"], \u6D1B: ["chinese_simplified", "chinese_traditional"], \u8F89: ["chinese_simplified"], \u6124: ["chinese_simplified"], \u7ADE: ["chinese_simplified"], \u9699: ["chinese_simplified", "chinese_traditional"], \u6012: ["chinese_simplified", "chinese_traditional"], \u7C98: ["chinese_simplified", "chinese_traditional"], \u4E43: ["chinese_simplified", "chinese_traditional"], \u7EEA: ["chinese_simplified"], \u80A9: ["chinese_simplified", "chinese_traditional"], \u7C4D: ["chinese_simplified", "chinese_traditional"], \u654F: ["chinese_simplified", "chinese_traditional"], \u6D82: ["chinese_simplified"], \u7199: ["chinese_simplified", "chinese_traditional"], \u7686: ["chinese_simplified", "chinese_traditional"], \u4FA6: ["chinese_simplified"], \u60AC: ["chinese_simplified"], \u6398: ["chinese_simplified", "chinese_traditional"], \u4EAB: ["chinese_simplified", "chinese_traditional"], \u7EA0: ["chinese_simplified"], \u9192: ["chinese_simplified", "chinese_traditional"], \u72C2: ["chinese_simplified", "chinese_traditional"], \u9501: ["chinese_simplified"], \u6DC0: ["chinese_simplified", "chinese_traditional"], \u6068: ["chinese_simplified", "chinese_traditional"], \u7272: ["chinese_simplified", "chinese_traditional"], \u9738: ["chinese_simplified", "chinese_traditional"], \u722C: ["chinese_simplified", "chinese_traditional"], \u8D4F: ["chinese_simplified"], \u9006: ["chinese_simplified", "chinese_traditional"], \u73A9: ["chinese_simplified", "chinese_traditional"], \u9675: ["chinese_simplified", "chinese_traditional"], \u795D: ["chinese_simplified", "chinese_traditional"], \u79D2: ["chinese_simplified", "chinese_traditional"], \u6D59: ["chinese_simplified", "chinese_traditional"], \u8C8C: ["chinese_simplified", "chinese_traditional"], \u5F79: ["chinese_simplified", "chinese_traditional"], \u5F7C: ["chinese_simplified", "chinese_traditional"], \u6089: ["chinese_simplified", "chinese_traditional"], \u9E2D: ["chinese_simplified"], \u8D8B: ["chinese_simplified"], \u51E4: ["chinese_simplified"], \u6668: ["chinese_simplified", "chinese_traditional"], \u755C: ["chinese_simplified", "chinese_traditional"], \u8F88: ["chinese_simplified"], \u79E9: ["chinese_simplified", "chinese_traditional"], \u5375: ["chinese_simplified", "chinese_traditional"], \u7F72: ["chinese_simplified", "chinese_traditional"], \u68AF: ["chinese_simplified", "chinese_traditional"], \u708E: ["chinese_simplified", "chinese_traditional"], \u6EE9: ["chinese_simplified"], \u68CB: ["chinese_simplified", "chinese_traditional"], \u9A71: ["chinese_simplified"], \u7B5B: ["chinese_simplified"], \u5CE1: ["chinese_simplified"], \u5192: ["chinese_simplified", "chinese_traditional"], \u5565: ["chinese_simplified", "chinese_traditional"], \u5BFF: ["chinese_simplified"], \u8BD1: ["chinese_simplified"], \u6D78: ["chinese_simplified", "chinese_traditional"], \u6CC9: ["chinese_simplified", "chinese_traditional"], \u5E3D: ["chinese_simplified", "chinese_traditional"], \u8FDF: ["chinese_simplified"], \u7845: ["chinese_simplified"], \u7586: ["chinese_simplified", "chinese_traditional"], \u8D37: ["chinese_simplified"], \u6F0F: ["chinese_simplified", "chinese_traditional"], \u7A3F: ["chinese_simplified", "chinese_traditional"], \u51A0: ["chinese_simplified", "chinese_traditional"], \u5AE9: ["chinese_simplified", "chinese_traditional"], \u80C1: ["chinese_simplified"], \u82AF: ["chinese_simplified", "chinese_traditional"], \u7262: ["chinese_simplified", "chinese_traditional"], \u53DB: ["chinese_simplified", "chinese_traditional"], \u8680: ["chinese_simplified"], \u5965: ["chinese_simplified"], \u9E23: ["chinese_simplified"], \u5CAD: ["chinese_simplified"], \u7F8A: ["chinese_simplified", "chinese_traditional"], \u51ED: ["chinese_simplified"], \u4E32: ["chinese_simplified", "chinese_traditional"], \u5858: ["chinese_simplified", "chinese_traditional"], \u7ED8: ["chinese_simplified"], \u9175: ["chinese_simplified", "chinese_traditional"], \u878D: ["chinese_simplified", "chinese_traditional"], \u76C6: ["chinese_simplified", "chinese_traditional"], \u9521: ["chinese_simplified"], \u5E99: ["chinese_simplified"], \u7B79: ["chinese_simplified"], \u51BB: ["chinese_simplified"], \u8F85: ["chinese_simplified"], \u6444: ["chinese_simplified"], \u88AD: ["chinese_simplified"], \u7B4B: ["chinese_simplified", "chinese_traditional"], \u62D2: ["chinese_simplified", "chinese_traditional"], \u50DA: ["chinese_simplified", "chinese_traditional"], \u65F1: ["chinese_simplified", "chinese_traditional"], \u94BE: ["chinese_simplified"], \u9E1F: ["chinese_simplified"], \u6F06: ["chinese_simplified", "chinese_traditional"], \u6C88: ["chinese_simplified", "chinese_traditional"], \u7709: ["chinese_simplified", "chinese_traditional"], \u758F: ["chinese_simplified", "chinese_traditional"], \u6DFB: ["chinese_simplified", "chinese_traditional"], \u68D2: ["chinese_simplified", "chinese_traditional"], \u7A57: ["chinese_simplified", "chinese_traditional"], \u785D: ["chinese_simplified", "chinese_traditional"], \u97E9: ["chinese_simplified"], \u903C: ["chinese_simplified", "chinese_traditional"], \u626D: ["chinese_simplified", "chinese_traditional"], \u4FA8: ["chinese_simplified"], \u51C9: ["chinese_simplified"], \u633A: ["chinese_simplified", "chinese_traditional"], \u7897: ["chinese_simplified", "chinese_traditional"], \u683D: ["chinese_simplified", "chinese_traditional"], \u7092: ["chinese_simplified", "chinese_traditional"], \u676F: ["chinese_simplified", "chinese_traditional"], \u60A3: ["chinese_simplified", "chinese_traditional"], \u998F: ["chinese_simplified"], \u529D: ["chinese_simplified"], \u8C6A: ["chinese_simplified", "chinese_traditional"], \u8FBD: ["chinese_simplified"], \u52C3: ["chinese_simplified", "chinese_traditional"], \u9E3F: ["chinese_simplified"], \u65E6: ["chinese_simplified", "chinese_traditional"], \u540F: ["chinese_simplified", "chinese_traditional"], \u62DC: ["chinese_simplified", "chinese_traditional"], \u72D7: ["chinese_simplified", "chinese_traditional"], \u57CB: ["chinese_simplified", "chinese_traditional"], \u8F8A: ["chinese_simplified"], \u63A9: ["chinese_simplified", "chinese_traditional"], \u996E: ["chinese_simplified"], \u642C: ["chinese_simplified", "chinese_traditional"], \u9A82: ["chinese_simplified"], \u8F9E: ["chinese_simplified"], \u52FE: ["chinese_simplified", "chinese_traditional"], \u6263: ["chinese_simplified", "chinese_traditional"], \u4F30: ["chinese_simplified", "chinese_traditional"], \u848B: ["chinese_simplified"], \u7ED2: ["chinese_simplified"], \u96FE: ["chinese_simplified"], \u4E08: ["chinese_simplified", "chinese_traditional"], \u6735: ["chinese_simplified", "chinese_traditional"], \u59C6: ["chinese_simplified", "chinese_traditional"], \u62DF: ["chinese_simplified"], \u5B87: ["chinese_simplified", "chinese_traditional"], \u8F91: ["chinese_simplified"], \u9655: ["chinese_simplified"], \u96D5: ["chinese_simplified", "chinese_traditional"], \u507F: ["chinese_simplified"], \u84C4: ["chinese_simplified", "chinese_traditional"], \u5D07: ["chinese_simplified", "chinese_traditional"], \u526A: ["chinese_simplified", "chinese_traditional"], \u5021: ["chinese_simplified", "chinese_traditional"], \u5385: ["chinese_simplified"], \u54AC: ["chinese_simplified", "chinese_traditional"], \u9A76: ["chinese_simplified"], \u85AF: ["chinese_simplified", "chinese_traditional"], \u5237: ["chinese_simplified", "chinese_traditional"], \u65A5: ["chinese_simplified", "chinese_traditional"], \u756A: ["chinese_simplified", "chinese_traditional"], \u8D4B: ["chinese_simplified"], \u5949: ["chinese_simplified", "chinese_traditional"], \u4F5B: ["chinese_simplified", "chinese_traditional"], \u6D47: ["chinese_simplified"], \u6F2B: ["chinese_simplified", "chinese_traditional"], \u66FC: ["chinese_simplified", "chinese_traditional"], \u6247: ["chinese_simplified", "chinese_traditional"], \u9499: ["chinese_simplified"], \u6843: ["chinese_simplified", "chinese_traditional"], \u6276: ["chinese_simplified", "chinese_traditional"], \u4ED4: ["chinese_simplified", "chinese_traditional"], \u8FD4: ["chinese_simplified", "chinese_traditional"], \u4FD7: ["chinese_simplified", "chinese_traditional"], \u4E8F: ["chinese_simplified"], \u8154: ["chinese_simplified", "chinese_traditional"], \u978B: ["chinese_simplified", "chinese_traditional"], \u68F1: ["chinese_simplified", "chinese_traditional"], \u8986: ["chinese_simplified", "chinese_traditional"], \u6846: ["chinese_simplified", "chinese_traditional"], \u6084: ["chinese_simplified", "chinese_traditional"], \u53D4: ["chinese_simplified", "chinese_traditional"], \u649E: ["chinese_simplified", "chinese_traditional"], \u9A97: ["chinese_simplified"], \u52D8: ["chinese_simplified", "chinese_traditional"], \u65FA: ["chinese_simplified", "chinese_traditional"], \u6CB8: ["chinese_simplified", "chinese_traditional"], \u5B64: ["chinese_simplified", "chinese_traditional"], \u5410: ["chinese_simplified", "chinese_traditional"], \u5B5F: ["chinese_simplified", "chinese_traditional"], \u6E20: ["chinese_simplified", "chinese_traditional"], \u5C48: ["chinese_simplified", "chinese_traditional"], \u75BE: ["chinese_simplified", "chinese_traditional"], \u5999: ["chinese_simplified", "chinese_traditional"], \u60DC: ["chinese_simplified", "chinese_traditional"], \u4EF0: ["chinese_simplified", "chinese_traditional"], \u72E0: ["chinese_simplified", "chinese_traditional"], \u80C0: ["chinese_simplified"], \u8C10: ["chinese_simplified"], \u629B: ["chinese_simplified"], \u9709: ["chinese_simplified"], \u6851: ["chinese_simplified", "chinese_traditional"], \u5C97: ["chinese_simplified"], \u561B: ["chinese_simplified", "chinese_traditional"], \u8870: ["chinese_simplified", "chinese_traditional"], \u76D7: ["chinese_simplified"], \u6E17: ["chinese_simplified"], \u810F: ["chinese_simplified"], \u8D56: ["chinese_simplified"], \u6D8C: ["chinese_simplified"], \u751C: ["chinese_simplified", "chinese_traditional"], \u66F9: ["chinese_simplified", "chinese_traditional"], \u9605: ["chinese_simplified"], \u808C: ["chinese_simplified", "chinese_traditional"], \u54E9: ["chinese_simplified", "chinese_traditional"], \u5389: ["chinese_simplified"], \u70C3: ["chinese_simplified"], \u7EAC: ["chinese_simplified"], \u6BC5: ["chinese_simplified", "chinese_traditional"], \u6628: ["chinese_simplified", "chinese_traditional"], \u4F2A: ["chinese_simplified"], \u75C7: ["chinese_simplified", "chinese_traditional"], \u716E: ["chinese_simplified", "chinese_traditional"], \u53F9: ["chinese_simplified"], \u9489: ["chinese_simplified"], \u642D: ["chinese_simplified", "chinese_traditional"], \u830E: ["chinese_simplified"], \u7B3C: ["chinese_simplified"], \u9177: ["chinese_simplified", "chinese_traditional"], \u5077: ["chinese_simplified", "chinese_traditional"], \u5F13: ["chinese_simplified", "chinese_traditional"], \u9525: ["chinese_simplified"], \u6052: ["chinese_simplified"], \u6770: ["chinese_simplified"], \u5751: ["chinese_simplified", "chinese_traditional"], \u9F3B: ["chinese_simplified", "chinese_traditional"], \u7FFC: ["chinese_simplified", "chinese_traditional"], \u7EB6: ["chinese_simplified"], \u53D9: ["chinese_simplified"], \u72F1: ["chinese_simplified"], \u902E: ["chinese_simplified", "chinese_traditional"], \u7F50: ["chinese_simplified", "chinese_traditional"], \u7EDC: ["chinese_simplified"], \u68DA: ["chinese_simplified", "chinese_traditional"], \u6291: ["chinese_simplified", "chinese_traditional"], \u81A8: ["chinese_simplified", "chinese_traditional"], \u852C: ["chinese_simplified", "chinese_traditional"], \u5BFA: ["chinese_simplified", "chinese_traditional"], \u9AA4: ["chinese_simplified"], \u7A46: ["chinese_simplified", "chinese_traditional"], \u51B6: ["chinese_simplified", "chinese_traditional"], \u67AF: ["chinese_simplified", "chinese_traditional"], \u518C: ["chinese_simplified"], \u5C38: ["chinese_simplified"], \u51F8: ["chinese_simplified", "chinese_traditional"], \u7EC5: ["chinese_simplified"], \u576F: ["chinese_simplified", "chinese_traditional"], \u727A: ["chinese_simplified"], \u7130: ["chinese_simplified", "chinese_traditional"], \u8F70: ["chinese_simplified"], \u6B23: ["chinese_simplified", "chinese_traditional"], \u664B: ["chinese_simplified"], \u7626: ["chinese_simplified", "chinese_traditional"], \u5FA1: ["chinese_simplified"], \u952D: ["chinese_simplified"], \u9526: ["chinese_simplified"], \u4E27: ["chinese_simplified"], \u65EC: ["chinese_simplified", "chinese_traditional"], \u953B: ["chinese_simplified"], \u5784: ["chinese_simplified"], \u641C: ["chinese_simplified", "chinese_traditional"], \u6251: ["chinese_simplified"], \u9080: ["chinese_simplified", "chinese_traditional"], \u4EAD: ["chinese_simplified", "chinese_traditional"], \u916F: ["chinese_simplified", "chinese_traditional"], \u8FC8: ["chinese_simplified"], \u8212: ["chinese_simplified", "chinese_traditional"], \u8106: ["chinese_simplified", "chinese_traditional"], \u9176: ["chinese_simplified", "chinese_traditional"], \u95F2: ["chinese_simplified"], \u5FE7: ["chinese_simplified"], \u915A: ["chinese_simplified", "chinese_traditional"], \u987D: ["chinese_simplified"], \u7FBD: ["chinese_simplified", "chinese_traditional"], \u6DA8: ["chinese_simplified"], \u5378: ["chinese_simplified", "chinese_traditional"], \u4ED7: ["chinese_simplified", "chinese_traditional"], \u966A: ["chinese_simplified", "chinese_traditional"], \u8F9F: ["chinese_simplified"], \u60E9: ["chinese_simplified"], \u676D: ["chinese_simplified", "chinese_traditional"], \u59DA: ["chinese_simplified", "chinese_traditional"], \u809A: ["chinese_simplified", "chinese_traditional"], \u6349: ["chinese_simplified", "chinese_traditional"], \u98D8: ["chinese_simplified"], \u6F02: ["chinese_simplified", "chinese_traditional"], \u6606: ["chinese_simplified", "chinese_traditional"], \u6B3A: ["chinese_simplified", "chinese_traditional"], \u543E: ["chinese_simplified", "chinese_traditional"], \u90CE: ["chinese_simplified", "chinese_traditional"], \u70F7: ["chinese_simplified", "chinese_traditional"], \u6C41: ["chinese_simplified", "chinese_traditional"], \u5475: ["chinese_simplified", "chinese_traditional"], \u9970: ["chinese_simplified"], \u8427: ["chinese_simplified"], \u96C5: ["chinese_simplified", "chinese_traditional"], \u90AE: ["chinese_simplified"], \u8FC1: ["chinese_simplified"], \u71D5: ["chinese_simplified", "chinese_traditional"], \u6492: ["chinese_simplified", "chinese_traditional"], \u59FB: ["chinese_simplified", "chinese_traditional"], \u8D74: ["chinese_simplified", "chinese_traditional"], \u5BB4: ["chinese_simplified", "chinese_traditional"], \u70E6: ["chinese_simplified"], \u503A: ["chinese_simplified"], \u5E10: ["chinese_simplified"], \u6591: ["chinese_simplified", "chinese_traditional"], \u94C3: ["chinese_simplified"], \u65E8: ["chinese_simplified", "chinese_traditional"], \u9187: ["chinese_simplified", "chinese_traditional"], \u8463: ["chinese_simplified", "chinese_traditional"], \u997C: ["chinese_simplified"], \u96CF: ["chinese_simplified"], \u59FF: ["chinese_simplified", "chinese_traditional"], \u62CC: ["chinese_simplified", "chinese_traditional"], \u5085: ["chinese_simplified", "chinese_traditional"], \u8179: ["chinese_simplified", "chinese_traditional"], \u59A5: ["chinese_simplified", "chinese_traditional"], \u63C9: ["chinese_simplified", "chinese_traditional"], \u8D24: ["chinese_simplified"], \u62C6: ["chinese_simplified", "chinese_traditional"], \u6B6A: ["chinese_simplified", "chinese_traditional"], \u8461: ["chinese_simplified", "chinese_traditional"], \u80FA: ["chinese_simplified", "chinese_traditional"], \u4E22: ["chinese_simplified"], \u6D69: ["chinese_simplified", "chinese_traditional"], \u5FBD: ["chinese_simplified", "chinese_traditional"], \u6602: ["chinese_simplified", "chinese_traditional"], \u57AB: ["chinese_simplified"], \u6321: ["chinese_simplified"], \u89C8: ["chinese_simplified"], \u8D2A: ["chinese_simplified"], \u6170: ["chinese_simplified", "chinese_traditional"], \u7F34: ["chinese_simplified"], \u6C6A: ["chinese_simplified", "chinese_traditional"], \u614C: ["chinese_simplified", "chinese_traditional"], \u51AF: ["chinese_simplified"], \u8BFA: ["chinese_simplified"], \u59DC: ["chinese_simplified", "chinese_traditional"], \u8C0A: ["chinese_simplified"], \u51F6: ["chinese_simplified"], \u52A3: ["chinese_simplified", "chinese_traditional"], \u8BEC: ["chinese_simplified"], \u8000: ["chinese_simplified", "chinese_traditional"], \u660F: ["chinese_simplified", "chinese_traditional"], \u8EBA: ["chinese_simplified", "chinese_traditional"], \u76C8: ["chinese_simplified", "chinese_traditional"], \u9A91: ["chinese_simplified"], \u4E54: ["chinese_simplified"], \u6EAA: ["chinese_simplified", "chinese_traditional"], \u4E1B: ["chinese_simplified"], \u5362: ["chinese_simplified"], \u62B9: ["chinese_simplified", "chinese_traditional"], \u95F7: ["chinese_simplified"], \u54A8: ["chinese_simplified"], \u522E: ["chinese_simplified", "chinese_traditional"], \u9A7E: ["chinese_simplified"], \u7F06: ["chinese_simplified"], \u609F: ["chinese_simplified", "chinese_traditional"], \u6458: ["chinese_simplified", "chinese_traditional"], \u94D2: ["chinese_simplified"], \u63B7: ["chinese_simplified"], \u9887: ["chinese_simplified"], \u5E7B: ["chinese_simplified", "chinese_traditional"], \u67C4: ["chinese_simplified", "chinese_traditional"], \u60E0: ["chinese_simplified", "chinese_traditional"], \u60E8: ["chinese_simplified"], \u4F73: ["chinese_simplified", "chinese_traditional"], \u4EC7: ["chinese_simplified", "chinese_traditional"], \u814A: ["chinese_simplified"], \u7A9D: ["chinese_simplified"], \u6DA4: ["chinese_simplified"], \u5251: ["chinese_simplified"], \u77A7: ["chinese_simplified", "chinese_traditional"], \u5821: ["chinese_simplified", "chinese_traditional"], \u6CFC: ["chinese_simplified"], \u8471: ["chinese_simplified"], \u7F69: ["chinese_simplified", "chinese_traditional"], \u970D: ["chinese_simplified", "chinese_traditional"], \u635E: ["chinese_simplified"], \u80CE: ["chinese_simplified", "chinese_traditional"], \u82CD: ["chinese_simplified"], \u6EE8: ["chinese_simplified"], \u4FE9: ["chinese_simplified"], \u6345: ["chinese_simplified", "chinese_traditional"], \u6E58: ["chinese_simplified", "chinese_traditional"], \u780D: ["chinese_simplified", "chinese_traditional"], \u971E: ["chinese_simplified", "chinese_traditional"], \u90B5: ["chinese_simplified", "chinese_traditional"], \u8404: ["chinese_simplified", "chinese_traditional"], \u75AF: ["chinese_simplified"], \u6DEE: ["chinese_simplified", "chinese_traditional"], \u9042: ["chinese_simplified", "chinese_traditional"], \u718A: ["chinese_simplified", "chinese_traditional"], \u7CAA: ["chinese_simplified"], \u70D8: ["chinese_simplified", "chinese_traditional"], \u5BBF: ["chinese_simplified", "chinese_traditional"], \u6863: ["chinese_simplified"], \u6208: ["chinese_simplified", "chinese_traditional"], \u9A73: ["chinese_simplified"], \u5AC2: ["chinese_simplified", "chinese_traditional"], \u88D5: ["chinese_simplified", "chinese_traditional"], \u5F99: ["chinese_simplified", "chinese_traditional"], \u7BAD: ["chinese_simplified", "chinese_traditional"], \u6350: ["chinese_simplified", "chinese_traditional"], \u80A0: ["chinese_simplified"], \u6491: ["chinese_simplified"], \u6652: ["chinese_simplified"], \u8FA8: ["chinese_simplified", "chinese_traditional"], \u6BBF: ["chinese_simplified", "chinese_traditional"], \u83B2: ["chinese_simplified"], \u644A: ["chinese_simplified"], \u6405: ["chinese_simplified"], \u9171: ["chinese_simplified"], \u5C4F: ["chinese_simplified", "chinese_traditional"], \u75AB: ["chinese_simplified", "chinese_traditional"], \u54C0: ["chinese_simplified", "chinese_traditional"], \u8521: ["chinese_simplified", "chinese_traditional"], \u5835: ["chinese_simplified", "chinese_traditional"], \u6CAB: ["chinese_simplified", "chinese_traditional"], \u76B1: ["chinese_simplified"], \u7545: ["chinese_simplified"], \u53E0: ["chinese_simplified"], \u9601: ["chinese_simplified"], \u83B1: ["chinese_simplified"], \u6572: ["chinese_simplified", "chinese_traditional"], \u8F96: ["chinese_simplified"], \u94A9: ["chinese_simplified"], \u75D5: ["chinese_simplified", "chinese_traditional"], \u575D: ["chinese_simplified"], \u5DF7: ["chinese_simplified", "chinese_traditional"], \u997F: ["chinese_simplified"], \u7978: ["chinese_simplified"], \u4E18: ["chinese_simplified", "chinese_traditional"], \u7384: ["chinese_simplified", "chinese_traditional"], \u6E9C: ["chinese_simplified", "chinese_traditional"], \u66F0: ["chinese_simplified", "chinese_traditional"], \u903B: ["chinese_simplified"], \u5F6D: ["chinese_simplified", "chinese_traditional"], \u5C1D: ["chinese_simplified"], \u537F: ["chinese_simplified", "chinese_traditional"], \u59A8: ["chinese_simplified", "chinese_traditional"], \u8247: ["chinese_simplified", "chinese_traditional"], \u541E: ["chinese_simplified", "chinese_traditional"], \u97E6: ["chinese_simplified"], \u6028: ["chinese_simplified", "chinese_traditional"], \u77EE: ["chinese_simplified", "chinese_traditional"], \u6B47: ["chinese_simplified", "chinese_traditional"], \u9019: ["chinese_traditional"], \u70BA: ["chinese_traditional"], \u500B: ["chinese_traditional"], \u570B: ["chinese_traditional"], \u6642: ["chinese_traditional"], \u4F86: ["chinese_traditional"], \u5011: ["chinese_traditional"], \u65BC: ["chinese_traditional"], \u5C0D: ["chinese_traditional"], \u6703: ["chinese_traditional"], \u767C: ["chinese_traditional"], \u52D5: ["chinese_traditional"], \u904E: ["chinese_traditional"], \u8AAA: ["chinese_traditional"], \u7522: ["chinese_traditional"], \u7A2E: ["chinese_traditional"], \u5F8C: ["chinese_traditional"], \u5B78: ["chinese_traditional"], \u7D93: ["chinese_traditional"], \u9032: ["chinese_traditional"], \u8457: ["chinese_traditional"], \u96FB: ["chinese_traditional"], \u88E1: ["chinese_traditional"], \u73FE: ["chinese_traditional"], \u5BE6: ["chinese_traditional"], \u5169: ["chinese_traditional"], \u9AD4: ["chinese_traditional"], \u6A5F: ["chinese_traditional"], \u7576: ["chinese_traditional"], \u9EDE: ["chinese_traditional"], \u5F9E: ["chinese_traditional"], \u696D: ["chinese_traditional"], \u61C9: ["chinese_traditional"], \u958B: ["chinese_traditional"], \u9084: ["chinese_traditional"], \u7FA9: ["chinese_traditional"], \u9593: ["chinese_traditional"], \u6A23: ["chinese_traditional"], \u8207: ["chinese_traditional"], \u95DC: ["chinese_traditional"], \u7DDA: ["chinese_traditional"], \u5167: ["chinese_traditional"], \u6578: ["chinese_traditional"], \u9EBC: ["chinese_traditional"], \u8CEA: ["chinese_traditional"], \u6C23: ["chinese_traditional"], \u8B8A: ["chinese_traditional"], \u689D: ["chinese_traditional"], \u6C92: ["chinese_traditional"], \u7D50: ["chinese_traditional"], \u554F: ["chinese_traditional"], \u7121: ["chinese_traditional"], \u8ECD: ["chinese_traditional"], \u4E26: ["chinese_traditional"], \u984C: ["chinese_traditional"], \u9EE8: ["chinese_traditional"], \u54E1: ["chinese_traditional"], \u7E3D: ["chinese_traditional"], \u8A2D: ["chinese_traditional"], \u9577: ["chinese_traditional"], \u982D: ["chinese_traditional"], \u8CC7: ["chinese_traditional"], \u908A: ["chinese_traditional"], \u7D1A: ["chinese_traditional"], \u5716: ["chinese_traditional"], \u7D71: ["chinese_traditional"], \u8F03: ["chinese_traditional"], \u5C07: ["chinese_traditional"], \u7D44: ["chinese_traditional"], \u898B: ["chinese_traditional"], \u8A08: ["chinese_traditional"], \u5225: ["chinese_traditional"], \u8AD6: ["chinese_traditional"], \u904B: ["chinese_traditional"], \u8FB2: ["chinese_traditional"], \u5E7E: ["chinese_traditional"], \u5340: ["chinese_traditional"], \u5F37: ["chinese_traditional"], \u6C7A: ["chinese_traditional"], \u5E79: ["chinese_traditional"], \u6230: ["chinese_traditional"], \u5247: ["chinese_traditional"], \u64DA: ["chinese_traditional"], \u8655: ["chinese_traditional"], \u968A: ["chinese_traditional"], \u7D66: ["chinese_traditional"], \u9580: ["chinese_traditional"], \u898F: ["chinese_traditional"], \u71B1: ["chinese_traditional"], \u9818: ["chinese_traditional"], \u6771: ["chinese_traditional"], \u5C0E: ["chinese_traditional"], \u58D3: ["chinese_traditional"], \u722D: ["chinese_traditional"], \u6FDF: ["chinese_traditional"], \u968E: ["chinese_traditional"], \u8853: ["chinese_traditional"], \u6975: ["chinese_traditional"], \u806F: ["chinese_traditional"], \u8A8D: ["chinese_traditional"], \u6B0A: ["chinese_traditional"], \u8B49: ["chinese_traditional"], \u63A1: ["chinese_traditional"], \u8F49: ["chinese_traditional"], \u55AE: ["chinese_traditional"], \u98A8: ["chinese_traditional"], \u5E36: ["chinese_traditional"], \u5834: ["chinese_traditional"], \u8ECA: ["chinese_traditional"], \u52D9: ["chinese_traditional"], \u842C: ["chinese_traditional"], \u9054: ["chinese_traditional"], \u7A4D: ["chinese_traditional"], \u8B70: ["chinese_traditional"], \u8072: ["chinese_traditional"], \u5831: ["chinese_traditional"], \u9B25: ["chinese_traditional"], \u985E: ["chinese_traditional"], \u96E2: ["chinese_traditional"], \u83EF: ["chinese_traditional"], \u78BA: ["chinese_traditional"], \u5F35: ["chinese_traditional"], \u99AC: ["chinese_traditional"], \u7BC0: ["chinese_traditional"], \u8A71: ["chinese_traditional"], \u6CC1: ["chinese_traditional"], \u6EAB: ["chinese_traditional"], \u50B3: ["chinese_traditional"], \u8A31: ["chinese_traditional"], \u5EE3: ["chinese_traditional"], \u8A18: ["chinese_traditional"], \u89C0: ["chinese_traditional"], \u7E54: ["chinese_traditional"], \u88DD: ["chinese_traditional"], \u773E: ["chinese_traditional"], \u66F8: ["chinese_traditional"], \u5152: ["chinese_traditional"], \u9808: ["chinese_traditional"], \u969B: ["chinese_traditional"], \u9A57: ["chinese_traditional"], \u9023: ["chinese_traditional"], \u65B7: ["chinese_traditional"], \u96E3: ["chinese_traditional"], \u7926: ["chinese_traditional"], \u9031: ["chinese_traditional"], \u5099: ["chinese_traditional"], \u8FA6: ["chinese_traditional"], \u7FD2: ["chinese_traditional"], \u97FF: ["chinese_traditional"], \u7D04: ["chinese_traditional"], \u52DE: ["chinese_traditional"], \u5718: ["chinese_traditional"], \u6B77: ["chinese_traditional"], \u69CB: ["chinese_traditional"], \u7A31: ["chinese_traditional"], \u6E96: ["chinese_traditional"], \u865F: ["chinese_traditional"], \u7DAD: ["chinese_traditional"], \u5283: ["chinese_traditional"], \u9078: ["chinese_traditional"], \u6A19: ["chinese_traditional"], \u5BEB: ["chinese_traditional"], \u89AA: ["chinese_traditional"], \u990A: ["chinese_traditional"], \u5C64: ["chinese_traditional"], \u537B: ["chinese_traditional"], \u5C08: ["chinese_traditional"], \u72C0: ["chinese_traditional"], \u5EE0: ["chinese_traditional"], \u8B58: ["chinese_traditional"], \u9069: ["chinese_traditional"], \u5C6C: ["chinese_traditional"], \u5713: ["chinese_traditional"], \u8ABF: ["chinese_traditional"], \u6EFF: ["chinese_traditional"], \u7E23: ["chinese_traditional"], \u53C3: ["chinese_traditional"], \u7D05: ["chinese_traditional"], \u7D30: ["chinese_traditional"], \u807D: ["chinese_traditional"], \u8A72: ["chinese_traditional"], \u9435: ["chinese_traditional"], \u50F9: ["chinese_traditional"], \u56B4: ["chinese_traditional"], \u96A8: ["chinese_traditional"], \u8607: ["chinese_traditional"], \u723E: ["chinese_traditional"], \u8B1B: ["chinese_traditional"], \u9EC3: ["chinese_traditional"], \u986F: ["chinese_traditional"], \u8AC7: ["chinese_traditional"], \u85DD: ["chinese_traditional"], \u71DF: ["chinese_traditional"], \u9805: ["chinese_traditional"], \u8209: ["chinese_traditional"], \u52E2: ["chinese_traditional"], \u5E6B: ["chinese_traditional"], \u8F2A: ["chinese_traditional"], \u4E9E: ["chinese_traditional"], \u5E2B: ["chinese_traditional"], \u570D: ["chinese_traditional"], \u9060: ["chinese_traditional"], \u614B: ["chinese_traditional"], \u6E1B: ["chinese_traditional"], \u6A39: ["chinese_traditional"], \u8449: ["chinese_traditional"], \u9B5A: ["chinese_traditional"], \u8996: ["chinese_traditional"], \u50C5: ["chinese_traditional"], \u8CBB: ["chinese_traditional"], \u7DCA: ["chinese_traditional"], \u611B: ["chinese_traditional"], \u7E8C: ["chinese_traditional"], \u8F15: ["chinese_traditional"], \u8A66: ["chinese_traditional"], \u8B77: ["chinese_traditional"], \u7DF4: ["chinese_traditional"], \u8CA0: ["chinese_traditional"], \u64CA: ["chinese_traditional"], \u7E7C: ["chinese_traditional"], \u8208: ["chinese_traditional"], \u9918: ["chinese_traditional"], \u5805: ["chinese_traditional"], \u8F38: ["chinese_traditional"], \u5920: ["chinese_traditional"], \u7B46: ["chinese_traditional"], \u4F54: ["chinese_traditional"], \u8CA1: ["chinese_traditional"], \u8077: ["chinese_traditional"], \u89BA: ["chinese_traditional"], \u6F22: ["chinese_traditional"], \u756B: ["chinese_traditional"], \u96D6: ["chinese_traditional"], \u96DC: ["chinese_traditional"], \u98DB: ["chinese_traditional"], \u6AA2: ["chinese_traditional"], \u6607: ["chinese_traditional"], \u967D: ["chinese_traditional"], \u5275: ["chinese_traditional"], \u58DE: ["chinese_traditional"], \u5F91: ["chinese_traditional"], \u63DB: ["chinese_traditional"], \u92FC: ["chinese_traditional"], \u8CAC: ["chinese_traditional"], \u7C21: ["chinese_traditional"], \u9322: ["chinese_traditional"], \u76E1: ["chinese_traditional"], \u885D: ["chinese_traditional"], \u7368: ["chinese_traditional"], \u74B0: ["chinese_traditional"], \u96D9: ["chinese_traditional"], \u8ACB: ["chinese_traditional"], \u8B93: ["chinese_traditional"], \u8EF8: ["chinese_traditional"], \u7D00: ["chinese_traditional"], \u512A: ["chinese_traditional"], \u9802: ["chinese_traditional"], \u790E: ["chinese_traditional"], \u8F09: ["chinese_traditional"], \u6575: ["chinese_traditional"], \u52DD: ["chinese_traditional"], \u7D55: ["chinese_traditional"], \u584A: ["chinese_traditional"], \u5291: ["chinese_traditional"], \u6E2C: ["chinese_traditional"], \u7D72: ["chinese_traditional"], \u5354: ["chinese_traditional"], \u8A34: ["chinese_traditional"], \u9673: ["chinese_traditional"], \u7F85: ["chinese_traditional"], \u9E7D: ["chinese_traditional"], \u932F: ["chinese_traditional"], \u983B: ["chinese_traditional"], \u7D42: ["chinese_traditional"], \u96F2: ["chinese_traditional"], \u885B: ["chinese_traditional"], \u71D2: ["chinese_traditional"], \u904A: ["chinese_traditional"], \u820A: ["chinese_traditional"], \u8CA8: ["chinese_traditional"], \u640D: ["chinese_traditional"], \u9810: ["chinese_traditional"], \u7A69: ["chinese_traditional"], \u5ABD: ["chinese_traditional"], \u64F4: ["chinese_traditional"], \u9280: ["chinese_traditional"], \u8A9E: ["chinese_traditional"], \u63EE: ["chinese_traditional"], \u7D19: ["chinese_traditional"], \u91AB: ["chinese_traditional"], \u55CE: ["chinese_traditional"], \u91DD: ["chinese_traditional"], \u5289: ["chinese_traditional"], \u8AA4: ["chinese_traditional"], \u8A13: ["chinese_traditional"], \u9858: ["chinese_traditional"], \u5BE9: ["chinese_traditional"], \u7372: ["chinese_traditional"], \u9BAE: ["chinese_traditional"], \u7CE7: ["chinese_traditional"], \u812B: ["chinese_traditional"], \u9F8D: ["chinese_traditional"], \u6F38: ["chinese_traditional"], \u6B61: ["chinese_traditional"], \u525B: ["chinese_traditional"], \u8B02: ["chinese_traditional"], \u8A0E: ["chinese_traditional"], \u4E82: ["chinese_traditional"], \u6BBA: ["chinese_traditional"], \u85E5: ["chinese_traditional"], \u5BE7: ["chinese_traditional"], \u9B6F: ["chinese_traditional"], \u8CB4: ["chinese_traditional"], \u9418: ["chinese_traditional"], \u8B80: ["chinese_traditional"], \u8C50: ["chinese_traditional"], \u862D: ["chinese_traditional"], \u64D4: ["chinese_traditional"], \u57F7: ["chinese_traditional"], \u6A02: ["chinese_traditional"], \u8AB0: ["chinese_traditional"], \u9806: ["chinese_traditional"], \u7159: ["chinese_traditional"], \u7E2E: ["chinese_traditional"], \u5FB5: ["chinese_traditional"], \u81C9: ["chinese_traditional"], \u8173: ["chinese_traditional"], \u7570: ["chinese_traditional"], \u8CB7: ["chinese_traditional"], \u975C: ["chinese_traditional"], \u88DC: ["chinese_traditional"], \u8A55: ["chinese_traditional"], \u8E10: ["chinese_traditional"], \u5BEC: ["chinese_traditional"], \u63DA: ["chinese_traditional"], \u50B7: ["chinese_traditional"], \u6C2B: ["chinese_traditional"], \u61B2: ["chinese_traditional"], \u6176: ["chinese_traditional"], \u7DE8: ["chinese_traditional"], \u89F8: ["chinese_traditional"], \u92B7: ["chinese_traditional"], \u8A69: ["chinese_traditional"], \u7DA0: ["chinese_traditional"], \u96DE: ["chinese_traditional"], \u5B6B: ["chinese_traditional"], \u81A0: ["chinese_traditional"], \u9109: ["chinese_traditional"], \u81E8: ["chinese_traditional"], \u9678: ["chinese_traditional"], \u9867: ["chinese_traditional"], \u71C8: ["chinese_traditional"], \u6B72: ["chinese_traditional"], \u5287: ["chinese_traditional"], \u8D99: ["chinese_traditional"], \u8AB2: ["chinese_traditional"], \u51F1: ["chinese_traditional"], \u984D: ["chinese_traditional"], \u7D39: ["chinese_traditional"], \u9F4A: ["chinese_traditional"], \u5049: ["chinese_traditional"], \u7210: ["chinese_traditional"], \u694A: ["chinese_traditional"], \u687F: ["chinese_traditional"], \u93AE: ["chinese_traditional"], \u98EF: ["chinese_traditional"], \u6FC3: ["chinese_traditional"], \u61F7: ["chinese_traditional"], \u8D95: ["chinese_traditional"], \u5EAB: ["chinese_traditional"], \u596A: ["chinese_traditional"], \u9748: ["chinese_traditional"], \u7A05: ["chinese_traditional"], \u6EC5: ["chinese_traditional"], \u8CFD: ["chinese_traditional"], \u6B78: ["chinese_traditional"], \u76E4: ["chinese_traditional"], \u96AA: ["chinese_traditional"], \u9304: ["chinese_traditional"], \u7D14: ["chinese_traditional"], \u84CB: ["chinese_traditional"], \u6A6B: ["chinese_traditional"], \u69CD: ["chinese_traditional"], \u6F64: ["chinese_traditional"], \u87F2: ["chinese_traditional"], \u6FA4: ["chinese_traditional"], \u8166: ["chinese_traditional"], \u6B50: ["chinese_traditional"], \u5074: ["chinese_traditional"], \u5FB9: ["chinese_traditional"], \u616E: ["chinese_traditional"], \u7D0D: ["chinese_traditional"], \u5F48: ["chinese_traditional"], \u98FC: ["chinese_traditional"], \u9EA5: ["chinese_traditional"], \u6FD5: ["chinese_traditional"], \u7BC9: ["chinese_traditional"], \u60E1: ["chinese_traditional"], \u6236: ["chinese_traditional"], \u8A2A: ["chinese_traditional"], \u8DE1: ["chinese_traditional"], \u64FA: ["chinese_traditional"], \u8CE3: ["chinese_traditional"], \u64C7: ["chinese_traditional"], \u9285: ["chinese_traditional"], \u737B: ["chinese_traditional"], \u9663: ["chinese_traditional"], \u9670: ["chinese_traditional"], \u6A13: ["chinese_traditional"], \u8B00: ["chinese_traditional"], \u5678: ["chinese_traditional"], \u8C6C: ["chinese_traditional"], \u9928: ["chinese_traditional"], \u723A: ["chinese_traditional"], \u9A5A: ["chinese_traditional"], \u907A: ["chinese_traditional"], \u7E96: ["chinese_traditional"], \u50BE: ["chinese_traditional"], \u8B1D: ["chinese_traditional"], \u596E: ["chinese_traditional"], \u8CFC: ["chinese_traditional"], \u76E3: ["chinese_traditional"], \u8CAB: ["chinese_traditional"], \u91CB: ["chinese_traditional"], \u8A5E: ["chinese_traditional"], \u9813: ["chinese_traditional"], \u5BF6: ["chinese_traditional"], \u5875: ["chinese_traditional"], \u805E: ["chinese_traditional"], \u6B98: ["chinese_traditional"], \u6A4B: ["chinese_traditional"], \u5A66: ["chinese_traditional"], \u7D9C: ["chinese_traditional"], \u5433: ["chinese_traditional"], \u6416: ["chinese_traditional"], \u8D0A: ["chinese_traditional"], \u8A02: ["chinese_traditional"], \u5712: ["chinese_traditional"], \u7D1B: ["chinese_traditional"], \u6557: ["chinese_traditional"], \u69AE: ["chinese_traditional"], \u9589: ["chinese_traditional"], \u7063: ["chinese_traditional"], \u9375: ["chinese_traditional"], \u99D0: ["chinese_traditional"], \u934B: ["chinese_traditional"], \u525D: ["chinese_traditional"], \u9E7C: ["chinese_traditional"], \u9F52: ["chinese_traditional"], \u7149: ["chinese_traditional"], \u7D21: ["chinese_traditional"], \u5EE2: ["chinese_traditional"], \u7DE9: ["chinese_traditional"], \u6DE8: ["chinese_traditional"], \u838A: ["chinese_traditional"], \u8CBF: ["chinese_traditional"], \u6163: ["chinese_traditional"], \u5925: ["chinese_traditional"], \u52FB: ["chinese_traditional"], \u7D17: ["chinese_traditional"], \u8FAF: ["chinese_traditional"], \u5104: ["chinese_traditional"], \u8108: ["chinese_traditional"], \u85A9: ["chinese_traditional"], \u7DB2: ["chinese_traditional"], \u5674: ["chinese_traditional"], \u7E31: ["chinese_traditional"], \u639B: ["chinese_traditional"], \u8CC0: ["chinese_traditional"], \u9583: ["chinese_traditional"], \u7246: ["chinese_traditional"], \u8EDF: ["chinese_traditional"], \u6EFE: ["chinese_traditional"], \u76EA: ["chinese_traditional"], \u5100: ["chinese_traditional"], \u8ECB: ["chinese_traditional"], \u8CA2: ["chinese_traditional"], \u947D: ["chinese_traditional"], \u5E63: ["chinese_traditional"], \u8ECC: ["chinese_traditional"], \u755D: ["chinese_traditional"], \u7562: ["chinese_traditional"], \u5CF6: ["chinese_traditional"], \u9444: ["chinese_traditional"], \u6E6F: ["chinese_traditional"], \u95A5: ["chinese_traditional"], \u532F: ["chinese_traditional"], \u7E5E: ["chinese_traditional"], \u7E3E: ["chinese_traditional"], \u555F: ["chinese_traditional"], \u984F: ["chinese_traditional"], \u6DDA: ["chinese_traditional"], \u85CD: ["chinese_traditional"], \u93E1: ["chinese_traditional"], \u58EF: ["chinese_traditional"], \u92D2: ["chinese_traditional"], \u8CA7: ["chinese_traditional"], \u865B: ["chinese_traditional"], \u5F4E: ["chinese_traditional"], \u7DB1: ["chinese_traditional"], \u96B8: ["chinese_traditional"], \u5BAE: ["chinese_traditional"], \u9055: ["chinese_traditional"], \u593E: ["chinese_traditional"], \u7DE3: ["chinese_traditional"], \u7AAE: ["chinese_traditional"], \u6E9D: ["chinese_traditional"], \u7E69: ["chinese_traditional"], \u61B6: ["chinese_traditional"], \u6F3F: ["chinese_traditional"], \u6B04: ["chinese_traditional"], \u64C1: ["chinese_traditional"], \u8CAF: ["chinese_traditional"], \u79AE: ["chinese_traditional"], \u6FFE: ["chinese_traditional"], \u9209: ["chinese_traditional"], \u7D0B: ["chinese_traditional"], \u7F77: ["chinese_traditional"], \u7F70: ["chinese_traditional"], \u6F5B: ["chinese_traditional"], \u7E2B: ["chinese_traditional"], \u98FD: ["chinese_traditional"], \u734E: ["chinese_traditional"], \u92C1: ["chinese_traditional"], \u9E97: ["chinese_traditional"], \u93C8: ["chinese_traditional"], \u6383: ["chinese_traditional"], \u8AF8: ["chinese_traditional"], \u52F5: ["chinese_traditional"], \u6F54: ["chinese_traditional"], \u707D: ["chinese_traditional"], \u9451: ["chinese_traditional"], \u8A1F: ["chinese_traditional"], \u6BC0: ["chinese_traditional"], \u5C46: ["chinese_traditional"], \u8E8D: ["chinese_traditional"], \u8271: ["chinese_traditional"], \u8C9D: ["chinese_traditional"], \u78BC: ["chinese_traditional"], \u5922: ["chinese_traditional"], \u6F01: ["chinese_traditional"], \u9846: ["chinese_traditional"], \u925B: ["chinese_traditional"], \u5009: ["chinese_traditional"], \u92B3: ["chinese_traditional"], \u66C9: ["chinese_traditional"], \u96B1: ["chinese_traditional"], \u7919: ["chinese_traditional"], \u64A5: ["chinese_traditional"], \u8085: ["chinese_traditional"], \u727D: ["chinese_traditional"], \u6436: ["chinese_traditional"], \u6BBC: ["chinese_traditional"], \u8A0A: ["chinese_traditional"], \u8AA0: ["chinese_traditional"], \u9801: ["chinese_traditional"], \u9F61: ["chinese_traditional"], \u502B: ["chinese_traditional"], \u5C0B: ["chinese_traditional"], \u92EA: ["chinese_traditional"], \u8056: ["chinese_traditional"], \u912D: ["chinese_traditional"], \u9A30: ["chinese_traditional"], \u8CBC: ["chinese_traditional"], \u95CA: ["chinese_traditional"], \u8F1B: ["chinese_traditional"], \u5132: ["chinese_traditional"], \u7C3D: ["chinese_traditional"], \u9B27: ["chinese_traditional"], \u64FE: ["chinese_traditional"], \u905E: ["chinese_traditional"], \u6232: ["chinese_traditional"], \u9935: ["chinese_traditional"], \u7642: ["chinese_traditional"], \u64AB: ["chinese_traditional"], \u8766: ["chinese_traditional"], \u881F: ["chinese_traditional"], \u9130: ["chinese_traditional"], \u978F: ["chinese_traditional"], \u64E0: ["chinese_traditional"], \u68C4: ["chinese_traditional"], \u52C1: ["chinese_traditional"], \u9127: ["chinese_traditional"], \u721B: ["chinese_traditional"], \u78DA: ["chinese_traditional"], \u70CF: ["chinese_traditional"], \u8266: ["chinese_traditional"], \u6DFA: ["chinese_traditional"], \u66AB: ["chinese_traditional"], \u81BD: ["chinese_traditional"], \u8A73: ["chinese_traditional"], \u8B5C: ["chinese_traditional"], \u8CD3: ["chinese_traditional"], \u8F1D: ["chinese_traditional"], \u61A4: ["chinese_traditional"], \u7AF6: ["chinese_traditional"], \u7DD2: ["chinese_traditional"], \u5857: ["chinese_traditional"], \u5075: ["chinese_traditional"], \u61F8: ["chinese_traditional"], \u7CFE: ["chinese_traditional"], \u9396: ["chinese_traditional"], \u8CDE: ["chinese_traditional"], \u9D28: ["chinese_traditional"], \u8DA8: ["chinese_traditional"], \u9CF3: ["chinese_traditional"], \u8F29: ["chinese_traditional"], \u7058: ["chinese_traditional"], \u9A45: ["chinese_traditional"], \u7BE9: ["chinese_traditional"], \u5CFD: ["chinese_traditional"], \u58FD: ["chinese_traditional"], \u8B6F: ["chinese_traditional"], \u9072: ["chinese_traditional"], \u77FD: ["chinese_traditional"], \u8CB8: ["chinese_traditional"], \u8105: ["chinese_traditional"], \u8755: ["chinese_traditional"], \u5967: ["chinese_traditional"], \u9CF4: ["chinese_traditional"], \u5DBA: ["chinese_traditional"], \u6191: ["chinese_traditional"], \u7E6A: ["chinese_traditional"], \u932B: ["chinese_traditional"], \u5EDF: ["chinese_traditional"], \u7C4C: ["chinese_traditional"], \u51CD: ["chinese_traditional"], \u8F14: ["chinese_traditional"], \u651D: ["chinese_traditional"], \u8972: ["chinese_traditional"], \u9240: ["chinese_traditional"], \u9CE5: ["chinese_traditional"], \u97D3: ["chinese_traditional"], \u50D1: ["chinese_traditional"], \u6DBC: ["chinese_traditional"], \u993E: ["chinese_traditional"], \u52F8: ["chinese_traditional"], \u907C: ["chinese_traditional"], \u9D3B: ["chinese_traditional"], \u8F25: ["chinese_traditional"], \u98F2: ["chinese_traditional"], \u7F75: ["chinese_traditional"], \u8FAD: ["chinese_traditional"], \u8523: ["chinese_traditional"], \u7D68: ["chinese_traditional"], \u9727: ["chinese_traditional"], \u64EC: ["chinese_traditional"], \u8F2F: ["chinese_traditional"], \u965D: ["chinese_traditional"], \u511F: ["chinese_traditional"], \u5EF3: ["chinese_traditional"], \u99DB: ["chinese_traditional"], \u8CE6: ["chinese_traditional"], \u6F86: ["chinese_traditional"], \u9223: ["chinese_traditional"], \u8667: ["chinese_traditional"], \u9A19: ["chinese_traditional"], \u8139: ["chinese_traditional"], \u8AE7: ["chinese_traditional"], \u62CB: ["chinese_traditional"], \u9EF4: ["chinese_traditional"], \u5D17: ["chinese_traditional"], \u76DC: ["chinese_traditional"], \u6EF2: ["chinese_traditional"], \u81DF: ["chinese_traditional"], \u8CF4: ["chinese_traditional"], \u6E67: ["chinese_traditional"], \u95B1: ["chinese_traditional"], \u53B2: ["chinese_traditional"], \u70F4: ["chinese_traditional"], \u7DEF: ["chinese_traditional"], \u507D: ["chinese_traditional"], \u5606: ["chinese_traditional"], \u91D8: ["chinese_traditional"], \u8396: ["chinese_traditional"], \u7C60: ["chinese_traditional"], \u9310: ["chinese_traditional"], \u6046: ["chinese_traditional"], \u5091: ["chinese_traditional"], \u7DB8: ["chinese_traditional"], \u6558: ["chinese_traditional"], \u7344: ["chinese_traditional"], \u7D61: ["chinese_traditional"], \u9A5F: ["chinese_traditional"], \u518A: ["chinese_traditional"], \u5C4D: ["chinese_traditional"], \u7D33: ["chinese_traditional"], \u72A7: ["chinese_traditional"], \u8F5F: ["chinese_traditional"], \u6649: ["chinese_traditional"], \u79A6: ["chinese_traditional"], \u9320: ["chinese_traditional"], \u9326: ["chinese_traditional"], \u55AA: ["chinese_traditional"], \u935B: ["chinese_traditional"], \u58DF: ["chinese_traditional"], \u64B2: ["chinese_traditional"], \u9081: ["chinese_traditional"], \u9592: ["chinese_traditional"], \u6182: ["chinese_traditional"], \u9811: ["chinese_traditional"], \u6F32: ["chinese_traditional"], \u95E2: ["chinese_traditional"], \u61F2: ["chinese_traditional"], \u98C4: ["chinese_traditional"], \u98FE: ["chinese_traditional"], \u856D: ["chinese_traditional"], \u90F5: ["chinese_traditional"], \u9077: ["chinese_traditional"], \u7169: ["chinese_traditional"], \u50B5: ["chinese_traditional"], \u5E33: ["chinese_traditional"], \u9234: ["chinese_traditional"], \u9905: ["chinese_traditional"], \u96DB: ["chinese_traditional"], \u8CE2: ["chinese_traditional"], \u4E1F: ["chinese_traditional"], \u588A: ["chinese_traditional"], \u64CB: ["chinese_traditional"], \u89BD: ["chinese_traditional"], \u8CAA: ["chinese_traditional"], \u7E73: ["chinese_traditional"], \u99AE: ["chinese_traditional"], \u8AFE: ["chinese_traditional"], \u8ABC: ["chinese_traditional"], \u5147: ["chinese_traditional"], \u8AA3: ["chinese_traditional"], \u9A0E: ["chinese_traditional"], \u55AC: ["chinese_traditional"], \u53E2: ["chinese_traditional"], \u76E7: ["chinese_traditional"], \u60B6: ["chinese_traditional"], \u8AEE: ["chinese_traditional"], \u99D5: ["chinese_traditional"], \u7E9C: ["chinese_traditional"], \u927A: ["chinese_traditional"], \u64F2: ["chinese_traditional"], \u9817: ["chinese_traditional"], \u6158: ["chinese_traditional"], \u81D8: ["chinese_traditional"], \u7AA9: ["chinese_traditional"], \u6ECC: ["chinese_traditional"], \u528D: ["chinese_traditional"], \u6F51: ["chinese_traditional"], \u8525: ["chinese_traditional"], \u6488: ["chinese_traditional"], \u84BC: ["chinese_traditional"], \u6FF1: ["chinese_traditional"], \u5006: ["chinese_traditional"], \u760B: ["chinese_traditional"], \u7CDE: ["chinese_traditional"], \u6A94: ["chinese_traditional"], \u99C1: ["chinese_traditional"], \u8178: ["chinese_traditional"], \u6490: ["chinese_traditional"], \u66EC: ["chinese_traditional"], \u84EE: ["chinese_traditional"], \u6524: ["chinese_traditional"], \u652A: ["chinese_traditional"], \u91AC: ["chinese_traditional"], \u76BA: ["chinese_traditional"], \u66A2: ["chinese_traditional"], \u758A: ["chinese_traditional"], \u95A3: ["chinese_traditional"], \u840A: ["chinese_traditional"], \u8F44: ["chinese_traditional"], \u9264: ["chinese_traditional"], \u58E9: ["chinese_traditional"], \u9913: ["chinese_traditional"], \u798D: ["chinese_traditional"], \u908F: ["chinese_traditional"], \u5617: ["chinese_traditional"], \u97CB: ["chinese_traditional"], abdikace: ["czech"], abeceda: ["czech"], adresa: ["czech"], agrese: ["czech"], akce: ["czech"], aktovka: ["czech"], alej: ["czech"], alkohol: ["czech"], amputace: ["czech"], ananas: ["czech"], andulka: ["czech"], anekdota: ["czech"], anketa: ["czech"], antika: ["czech"], anulovat: ["czech"], archa: ["czech"], arogance: ["czech"], asfalt: ["czech", "turkish"], asistent: ["czech"], aspirace: ["czech"], astma: ["czech"], astronom: ["czech"], atlas: ["czech"], atletika: ["czech"], atol: ["czech"], autobus: ["czech"], azyl: ["czech"], babka: ["czech"], bachor: ["czech"], bacil: ["czech"], baculka: ["czech"], badatel: ["czech"], bageta: ["czech"], bagr: ["czech"], bahno: ["czech"], bakterie: ["czech"], balada: ["czech"], baletka: ["czech"], balkon: ["czech"], balonek: ["czech"], balvan: ["czech"], balza: ["czech"], bambus: ["czech"], bankomat: ["czech"], barbar: ["czech"], baret: ["czech"], barman: ["czech"], baroko: ["czech"], barva: ["czech"], baterka: ["czech"], batoh: ["czech"], bavlna: ["czech"], bazalka: ["czech"], bazilika: ["czech"], bazuka: ["czech"], bedna: ["czech"], beran: ["czech"], beseda: ["czech"], bestie: ["czech"], beton: ["czech", "turkish"], bezinka: ["czech"], bezmoc: ["czech"], beztak: ["czech"], bicykl: ["czech"], bidlo: ["czech"], biftek: ["czech", "turkish"], bikiny: ["czech"], bilance: ["czech"], biograf: ["czech"], biolog: ["czech"], bitva: ["czech"], bizon: ["czech"], blahobyt: ["czech"], blatouch: ["czech"], blecha: ["czech"], bledule: ["czech"], blesk: ["czech"], blikat: ["czech"], blizna: ["czech"], blokovat: ["czech"], bloudit: ["czech"], blud: ["czech"], bobek: ["czech"], bobr: ["czech"], bodlina: ["czech"], bodnout: ["czech"], bohatost: ["czech"], bojkot: ["czech"], bojovat: ["czech"], bokorys: ["czech"], bolest: ["czech"], borec: ["czech"], borovice: ["czech"], bota: ["czech"], boubel: ["czech"], bouchat: ["czech"], bouda: ["czech"], boule: ["czech"], bourat: ["czech"], boxer: ["czech"], bradavka: ["czech"], brambora: ["czech"], branka: ["czech"], bratr: ["czech"], brepta: ["czech"], briketa: ["czech"], brko: ["czech"], brloh: ["czech"], bronz: ["czech"], broskev: ["czech"], brunetka: ["czech"], brusinka: ["czech"], brzda: ["czech"], brzy: ["czech"], bublina: ["czech"], bubnovat: ["czech"], buchta: ["czech"], buditel: ["czech"], budka: ["czech"], budova: ["czech"], bufet: ["czech"], bujarost: ["czech"], bukvice: ["czech"], buldok: ["czech"], bulva: ["czech"], bunda: ["czech"], bunkr: ["czech"], burza: ["czech"], butik: ["czech", "turkish"], buvol: ["czech"], buzola: ["czech"], bydlet: ["czech"], bylina: ["czech"], bytovka: ["czech"], bzukot: ["czech"], capart: ["czech"], carevna: ["czech"], cedr: ["czech"], cedule: ["czech"], cejch: ["czech"], cejn: ["czech"], cela: ["czech"], celer: ["czech"], celkem: ["czech"], celnice: ["czech"], cenina: ["czech"], cennost: ["czech"], cenovka: ["czech"], centrum: ["czech"], cenzor: ["czech"], cestopis: ["czech"], cetka: ["czech"], chalupa: ["czech"], chapadlo: ["czech"], charita: ["czech"], chata: ["czech"], chechtat: ["czech"], chemie: ["czech"], chichot: ["czech"], chirurg: ["czech"], chlad: ["czech"], chleba: ["czech"], chlubit: ["czech"], chmel: ["czech"], chmura: ["czech"], chobot: ["czech"], chochol: ["czech"], chodba: ["czech"], cholera: ["czech"], chomout: ["czech"], chopit: ["czech"], choroba: ["czech"], chov: ["czech"], chrapot: ["czech"], chrlit: ["czech"], chrt: ["czech"], chrup: ["czech"], chtivost: ["czech"], chudina: ["czech"], chutnat: ["czech"], chvat: ["czech"], chvilka: ["czech"], chvost: ["czech"], chyba: ["czech"], chystat: ["czech"], chytit: ["czech"], cibule: ["czech"], cigareta: ["czech"], cihelna: ["czech"], cihla: ["czech"], cinkot: ["czech"], cirkus: ["czech"], cisterna: ["czech"], citace: ["czech"], citrus: ["czech"], cizinec: ["czech"], cizost: ["czech"], clona: ["czech"], cokoliv: ["czech"], couvat: ["czech"], ctitel: ["czech"], ctnost: ["czech"], cudnost: ["czech"], cuketa: ["czech"], cukr: ["czech"], cupot: ["czech"], cvaknout: ["czech"], cval: ["czech"], cvik: ["czech"], cvrkot: ["czech"], cyklista: ["czech"], daleko: ["czech"], dareba: ["czech"], datel: ["czech"], datum: ["czech"], dcera: ["czech"], debata: ["czech"], dechovka: ["czech"], decibel: ["czech"], deficit: ["czech"], deflace: ["czech"], dekl: ["czech"], dekret: ["czech"], demokrat: ["czech"], deprese: ["czech"], derby: ["czech"], deska: ["czech"], detektiv: ["czech"], dikobraz: ["czech"], diktovat: ["czech"], dioda: ["czech"], diplom: ["czech"], disk: ["czech", "turkish"], displej: ["czech"], divadlo: ["czech"], divoch: ["czech"], dlaha: ["czech"], dlouho: ["czech"], dluhopis: ["czech"], dnes: ["czech"], dobro: ["czech"], dobytek: ["czech"], docent: ["czech"], dochutit: ["czech"], dodnes: ["czech"], dohled: ["czech"], dohoda: ["czech"], dohra: ["czech"], dojem: ["czech"], dojnice: ["czech"], doklad: ["czech"], dokola: ["czech"], doktor: ["czech", "turkish"], dokument: ["czech"], dolar: ["czech"], doleva: ["czech"], dolina: ["czech"], doma: ["czech"], dominant: ["czech"], domluvit: ["czech"], domov: ["czech"], donutit: ["czech"], dopad: ["czech"], dopis: ["czech"], doplnit: ["czech"], doposud: ["czech"], doprovod: ["czech"], dopustit: ["czech"], dorazit: ["czech"], dorost: ["czech"], dort: ["czech"], dosah: ["czech"], doslov: ["czech"], dostatek: ["czech"], dosud: ["czech"], dosyta: ["czech"], dotaz: ["czech"], dotek: ["czech"], dotknout: ["czech"], doufat: ["czech"], doutnat: ["czech"], dovozce: ["czech"], dozadu: ["czech"], doznat: ["czech"], dozorce: ["czech"], drahota: ["czech"], drak: ["czech"], dramatik: ["czech"], dravec: ["czech"], draze: ["czech"], drdol: ["czech"], drobnost: ["czech"], drogerie: ["czech"], drozd: ["czech"], drsnost: ["czech"], drtit: ["czech"], drzost: ["czech"], duben: ["czech"], duchovno: ["czech"], dudek: ["czech"], duha: ["czech"], duhovka: ["czech"], dusit: ["czech"], dusno: ["czech"], dutost: ["czech"], dvojice: ["czech"], dvorec: ["czech"], dynamit: ["czech"], ekolog: ["czech"], ekonomie: ["czech"], elektron: ["czech"], elipsa: ["czech"], email: ["czech"], emise: ["czech"], emoce: ["czech"], empatie: ["czech"], epizoda: ["czech"], epocha: ["czech"], epopej: ["czech"], epos: ["czech"], esej: ["czech"], esence: ["czech"], eskorta: ["czech"], eskymo: ["czech"], etiketa: ["czech"], euforie: ["czech"], evoluce: ["czech"], exekuce: ["czech"], exkurze: ["czech"], expedice: ["czech"], exploze: ["czech"], export: ["czech"], extrakt: ["czech"], facka: ["czech"], fajfka: ["czech"], fakulta: ["czech"], fanatik: ["czech", "turkish"], fantazie: ["czech"], farmacie: ["czech"], favorit: ["czech"], fazole: ["czech"], federace: ["czech"], fejeton: ["czech"], fenka: ["czech"], fialka: ["czech"], figurant: ["czech"], filozof: ["czech"], filtr: ["czech"], finance: ["czech"], finta: ["czech"], fixace: ["czech"], fjord: ["czech"], flanel: ["czech"], flirt: ["czech"], flotila: ["czech"], fond: ["czech"], fosfor: ["czech"], fotbal: ["czech"], fotka: ["czech"], foton: ["czech"], frakce: ["czech"], freska: ["czech"], fronta: ["czech"], fukar: ["czech"], funkce: ["czech"], fyzika: ["czech"], galeje: ["czech"], garant: ["czech"], genetika: ["czech"], geolog: ["czech"], gilotina: ["czech"], glazura: ["czech"], glejt: ["czech"], golem: ["czech"], golfista: ["czech"], gotika: ["czech"], graf: ["czech"], gramofon: ["czech"], granule: ["czech"], grep: ["czech"], gril: ["czech"], grog: ["czech"], groteska: ["czech"], guma: ["czech"], hadice: ["czech"], hadr: ["czech"], hala: ["czech"], halenka: ["czech"], hanba: ["czech"], hanopis: ["czech"], harfa: ["czech"], harpuna: ["czech"], havran: ["czech"], hebkost: ["czech"], hejkal: ["czech"], hejno: ["czech"], hejtman: ["czech"], hektar: ["czech", "turkish"], helma: ["czech"], hematom: ["czech"], herec: ["czech"], herna: ["czech"], heslo: ["czech"], hezky: ["czech"], historik: ["czech"], hladovka: ["czech"], hlasivky: ["czech"], hlava: ["czech"], hledat: ["czech"], hlen: ["czech"], hlodavec: ["czech"], hloh: ["czech"], hloupost: ["czech"], hltat: ["czech"], hlubina: ["czech"], hluchota: ["czech"], hmat: ["czech"], hmota: ["czech"], hmyz: ["czech"], hnis: ["czech"], hnojivo: ["czech"], hnout: ["czech"], hoblina: ["czech"], hoboj: ["czech"], hoch: ["czech"], hodiny: ["czech"], hodlat: ["czech"], hodnota: ["czech"], hodovat: ["czech"], hojnost: ["czech"], hokej: ["czech"], holinka: ["czech"], holka: ["czech"], holub: ["czech"], homole: ["czech"], honitba: ["czech"], honorace: ["czech"], horal: ["czech"], horda: ["czech"], horizont: ["czech"], horko: ["czech"], horlivec: ["czech"], hormon: ["czech", "turkish"], hornina: ["czech"], horoskop: ["czech"], horstvo: ["czech"], hospoda: ["czech"], hostina: ["czech"], hotovost: ["czech"], houba: ["czech"], houf: ["czech"], houpat: ["czech"], houska: ["czech"], hovor: ["czech"], hradba: ["czech"], hranice: ["czech"], hravost: ["czech"], hrazda: ["czech"], hrbolek: ["czech"], hrdina: ["czech"], hrdlo: ["czech"], hrdost: ["czech"], hrnek: ["czech"], hrobka: ["czech"], hromada: ["czech"], hrot: ["czech"], hrouda: ["czech"], hrozen: ["czech"], hrstka: ["czech"], hrubost: ["czech"], hryzat: ["czech"], hubenost: ["czech"], hubnout: ["czech"], hudba: ["czech"], hukot: ["czech"], humr: ["czech"], husita: ["czech"], hustota: ["czech"], hvozd: ["czech"], hybnost: ["czech"], hydrant: ["czech"], hygiena: ["czech"], hymna: ["czech"], hysterik: ["czech"], idylka: ["czech"], ihned: ["czech"], ikona: ["czech"], iluze: ["czech"], imunita: ["czech"], infekce: ["czech"], inflace: ["czech"], inkaso: ["czech"], inovace: ["czech"], inspekce: ["czech"], internet: ["czech"], invalida: ["czech"], investor: ["czech"], inzerce: ["czech"], ironie: ["czech"], jablko: ["czech"], jachta: ["czech"], jahoda: ["czech"], jakmile: ["czech"], jakost: ["czech"], jalovec: ["czech"], jantar: ["czech"], jarmark: ["czech"], jaro: ["czech"], jasan: ["czech"], jasno: ["czech"], jatka: ["czech"], javor: ["czech"], jazyk: ["czech"], jedinec: ["czech"], jedle: ["czech"], jednatel: ["czech"], jehlan: ["czech"], jekot: ["czech"], jelen: ["czech"], jelito: ["czech"], jemnost: ["czech"], jenom: ["czech"], jepice: ["czech"], jeseter: ["czech"], jevit: ["czech"], jezdec: ["czech"], jezero: ["czech"], jinak: ["czech"], jindy: ["czech"], jinoch: ["czech"], jiskra: ["czech"], jistota: ["czech"], jitrnice: ["czech"], jizva: ["czech"], jmenovat: ["czech"], jogurt: ["czech"], jurta: ["czech"], kabaret: ["czech"], kabel: ["czech"], kabinet: ["czech"], kachna: ["czech"], kadet: ["czech"], kadidlo: ["czech"], kahan: ["czech"], kajak: ["czech"], kajuta: ["czech"], kakao: ["czech"], kaktus: ["czech"], kalamita: ["czech"], kalhoty: ["czech"], kalibr: ["czech"], kalnost: ["czech"], kamera: ["czech"], kamkoliv: ["czech"], kamna: ["czech"], kanibal: ["czech"], kanoe: ["czech"], kantor: ["czech"], kapalina: ["czech"], kapela: ["czech"], kapitola: ["czech"], kapka: ["czech"], kaple: ["czech"], kapota: ["czech"], kapr: ["czech"], kapusta: ["czech"], kapybara: ["czech"], karamel: ["czech"], karotka: ["czech"], karton: ["czech"], kasa: ["czech"], katalog: ["czech"], katedra: ["czech"], kauce: ["czech"], kauza: ["czech"], kavalec: ["czech"], kazajka: ["czech"], kazeta: ["czech"], kazivost: ["czech"], kdekoliv: ["czech"], kdesi: ["czech"], kedluben: ["czech"], kemp: ["czech"], keramika: ["czech"], kino: ["czech"], klacek: ["czech"], kladivo: ["czech"], klam: ["czech"], klapot: ["czech"], klasika: ["czech"], klaun: ["czech"], klec: ["czech"], klenba: ["czech"], klepat: ["czech"], klesnout: ["czech"], klid: ["czech"], klima: ["czech"], klisna: ["czech"], klobouk: ["czech"], klokan: ["czech"], klopa: ["czech"], kloub: ["czech"], klubovna: ["czech"], klusat: ["czech"], kluzkost: ["czech"], kmen: ["czech"], kmitat: ["czech"], kmotr: ["czech"], kniha: ["czech"], knot: ["czech"], koalice: ["czech"], koberec: ["czech"], kobka: ["czech"], kobliha: ["czech"], kobyla: ["czech"], kocour: ["czech"], kohout: ["czech"], kojenec: ["czech"], kokos: ["czech"], koktejl: ["czech"], kolaps: ["czech"], koleda: ["czech"], kolize: ["czech"], kolo: ["czech"], komando: ["czech"], kometa: ["czech"], komik: ["czech"], komnata: ["czech"], komora: ["czech"], kompas: ["czech"], komunita: ["czech"], konat: ["czech"], koncept: ["czech"], kondice: ["czech"], konec: ["czech"], konfese: ["czech"], kongres: ["czech"], konina: ["czech"], konkurs: ["czech"], kontakt: ["czech"], konzerva: ["czech"], kopanec: ["czech"], kopie: ["czech"], kopnout: ["czech"], koprovka: ["czech"], korbel: ["czech"], korektor: ["czech"], kormidlo: ["czech"], koroptev: ["czech"], korpus: ["czech"], koruna: ["czech"], koryto: ["czech"], korzet: ["czech"], kosatec: ["czech"], kostka: ["czech"], kotel: ["czech"], kotleta: ["czech"], kotoul: ["czech"], koukat: ["czech"], koupelna: ["czech"], kousek: ["czech"], kouzlo: ["czech"], kovboj: ["czech"], koza: ["czech"], kozoroh: ["czech"], krabice: ["czech"], krach: ["czech"], krajina: ["czech"], kralovat: ["czech"], krasopis: ["czech"], kravata: ["czech"], kredit: ["czech"], krejcar: ["czech"], kresba: ["czech"], kreveta: ["czech"], kriket: ["czech"], kritik: ["czech"], krize: ["czech"], krkavec: ["czech"], krmelec: ["czech"], krmivo: ["czech"], krocan: ["czech"], krok: ["czech"], kronika: ["czech"], kropit: ["czech"], kroupa: ["czech"], krovka: ["czech"], krtek: ["czech"], kruhadlo: ["czech"], krupice: ["czech"], krutost: ["czech"], krvinka: ["czech"], krychle: ["czech"], krypta: ["czech"], krystal: ["czech"], kryt: ["czech"], kudlanka: ["czech"], kufr: ["czech"], kujnost: ["czech"], kukla: ["czech"], kulajda: ["czech"], kulich: ["czech"], kulka: ["czech"], kulomet: ["czech"], kultura: ["czech"], kuna: ["czech"], kupodivu: ["czech"], kurt: ["czech"], kurzor: ["czech"], kutil: ["czech"], kvalita: ["czech"], kvasinka: ["czech"], kvestor: ["czech"], kynolog: ["czech"], kyselina: ["czech"], kytara: ["czech"], kytice: ["czech"], kytka: ["czech"], kytovec: ["czech"], kyvadlo: ["czech"], labrador: ["czech"], lachtan: ["czech"], ladnost: ["czech"], laik: ["czech"], lakomec: ["czech"], lamela: ["czech"], lampa: ["czech"], lanovka: ["czech"], lasice: ["czech"], laso: ["czech"], lastura: ["czech"], latinka: ["czech"], lavina: ["czech"], lebka: ["czech"], leckdy: ["czech"], leden: ["czech"], lednice: ["czech"], ledovka: ["czech"], ledvina: ["czech"], legenda: ["czech"], legie: ["czech"], legrace: ["czech"], lehce: ["czech"], lehkost: ["czech"], lehnout: ["czech"], lektvar: ["czech"], lenochod: ["czech"], lentilka: ["czech"], lepenka: ["czech"], lepidlo: ["czech"], letadlo: ["czech"], letec: ["czech"], letmo: ["czech"], letokruh: ["czech"], levhart: ["czech"], levitace: ["czech"], levobok: ["czech"], libra: ["czech"], lichotka: ["czech"], lidojed: ["czech"], lidskost: ["czech"], lihovina: ["czech"], lijavec: ["czech"], lilek: ["czech"], limetka: ["czech"], linie: ["czech"], linka: ["czech"], linoleum: ["czech"], listopad: ["czech"], litina: ["czech"], litovat: ["czech"], lobista: ["czech"], lodivod: ["czech"], logika: ["czech"], logoped: ["czech"], lokalita: ["czech"], loket: ["czech"], lomcovat: ["czech"], lopata: ["czech"], lopuch: ["czech"], lord: ["czech"], losos: ["czech"], lotr: ["czech"], loudal: ["czech"], louh: ["czech"], louka: ["czech"], louskat: ["czech"], lovec: ["czech"], lstivost: ["czech"], lucerna: ["czech"], lucifer: ["czech"], lump: ["czech"], lusk: ["czech"], lustrace: ["czech"], lvice: ["czech"], lyra: ["czech"], lyrika: ["czech"], lysina: ["czech"], madam: ["czech"], madlo: ["czech"], magistr: ["czech"], mahagon: ["czech"], majetek: ["czech"], majitel: ["czech"], majorita: ["czech"], makak: ["czech"], makovice: ["czech"], makrela: ["czech"], malba: ["czech"], malina: ["czech"], malovat: ["czech"], malvice: ["czech"], maminka: ["czech"], mandle: ["czech"], manko: ["czech"], marnost: ["czech"], masakr: ["czech"], maskot: ["czech"], masopust: ["czech"], matice: ["czech"], matrika: ["czech"], maturita: ["czech"], mazanec: ["czech"], mazivo: ["czech"], mazlit: ["czech"], mazurka: ["czech"], mdloba: ["czech"], mechanik: ["czech"], meditace: ["czech"], medovina: ["czech"], melasa: ["czech"], meloun: ["czech"], mentolka: ["czech"], metla: ["czech"], metoda: ["czech"], metr: ["czech"], mezera: ["czech"], migrace: ["czech"], mihnout: ["czech"], mihule: ["czech"], mikina: ["czech"], mikrofon: ["czech", "turkish"], milenec: ["czech"], milimetr: ["czech"], milost: ["czech"], mimika: ["czech"], mincovna: ["czech"], minibar: ["czech"], minomet: ["czech"], minulost: ["czech"], miska: ["czech"], mistr: ["czech"], mixovat: ["czech"], mladost: ["czech"], mlha: ["czech"], mlhovina: ["czech"], mlok: ["czech"], mlsat: ["czech"], mluvit: ["czech"], mnich: ["czech"], mnohem: ["czech"], mobil: ["czech"], mocnost: ["czech"], modelka: ["czech"], modlitba: ["czech"], mohyla: ["czech"], mokro: ["czech"], molekula: ["czech"], momentka: ["czech"], monarcha: ["czech"], monokl: ["czech"], monstrum: ["czech"], montovat: ["czech"], monzun: ["czech"], mosaz: ["czech"], moskyt: ["czech"], most: ["czech"], motivace: ["czech"], motorka: ["czech"], motyka: ["czech"], moucha: ["czech"], moudrost: ["czech"], mozaika: ["czech"], mozek: ["czech"], mozol: ["czech"], mramor: ["czech"], mravenec: ["czech"], mrkev: ["czech"], mrtvola: ["czech"], mrzet: ["czech"], mrzutost: ["czech"], mstitel: ["czech"], mudrc: ["czech"], muflon: ["czech"], mulat: ["czech"], mumie: ["czech"], munice: ["czech"], muset: ["czech"], mutace: ["czech"], muzeum: ["czech"], muzikant: ["czech"], myslivec: ["czech"], mzda: ["czech"], nabourat: ["czech"], nachytat: ["czech"], nadace: ["czech"], nadbytek: ["czech"], nadhoz: ["czech"], nadobro: ["czech"], nadpis: ["czech"], nahlas: ["czech"], nahnat: ["czech"], nahodile: ["czech"], nahradit: ["czech"], naivita: ["czech"], najednou: ["czech"], najisto: ["czech"], najmout: ["czech"], naklonit: ["czech"], nakonec: ["czech"], nakrmit: ["czech"], nalevo: ["czech"], namazat: ["czech"], namluvit: ["czech"], nanometr: ["czech"], naoko: ["czech"], naopak: ["czech"], naostro: ["czech"], napadat: ["czech"], napevno: ["czech"], naplnit: ["czech"], napnout: ["czech"], naposled: ["czech"], naprosto: ["czech"], narodit: ["czech"], naruby: ["czech"], narychlo: ["czech"], nasadit: ["czech"], nasekat: ["czech"], naslepo: ["czech"], nastat: ["czech"], natolik: ["czech"], navenek: ["czech"], navrch: ["czech"], navzdory: ["czech"], nazvat: ["czech"], nebe: ["czech"], nechat: ["czech"], necky: ["czech"], nedaleko: ["czech"], nedbat: ["czech"], neduh: ["czech"], negace: ["czech"], nehet: ["czech"], nehoda: ["czech"], nejen: ["czech"], nejprve: ["czech"], neklid: ["czech"], nelibost: ["czech"], nemilost: ["czech"], nemoc: ["czech"], neochota: ["czech"], neonka: ["czech"], nepokoj: ["czech"], nerost: ["czech"], nerv: ["czech"], nesmysl: ["czech"], nesoulad: ["czech"], netvor: ["czech"], neuron: ["czech"], nevina: ["czech"], nezvykle: ["czech"], nicota: ["czech"], nijak: ["czech"], nikam: ["czech"], nikdy: ["czech"], nikl: ["czech"], nikterak: ["czech"], nitro: ["czech"], nocleh: ["czech"], nohavice: ["czech"], nominace: ["czech"], nora: ["czech"], norek: ["czech"], nositel: ["czech"], nosnost: ["czech"], nouze: ["czech"], noviny: ["czech"], novota: ["czech"], nozdra: ["czech"], nuda: ["czech"], nudle: ["czech"], nuget: ["czech"], nutit: ["czech"], nutnost: ["czech"], nutrie: ["czech"], nymfa: ["czech"], obal: ["czech"], obarvit: ["czech"], obava: ["czech"], obdiv: ["czech"], obec: ["czech"], obehnat: ["czech"], obejmout: ["czech"], obezita: ["czech"], obhajoba: ["czech"], obilnice: ["czech"], objasnit: ["czech"], objekt: ["czech"], obklopit: ["czech"], oblast: ["czech"], oblek: ["czech"], obliba: ["czech"], obloha: ["czech"], obluda: ["czech"], obnos: ["czech"], obohatit: ["czech"], obojek: ["czech"], obout: ["czech"], obrazec: ["czech"], obrna: ["czech"], obruba: ["czech"], obrys: ["czech"], obsah: ["czech"], obsluha: ["czech"], obstarat: ["czech"], obuv: ["czech"], obvaz: ["czech"], obvinit: ["czech"], obvod: ["czech"], obvykle: ["czech"], obyvatel: ["czech"], obzor: ["czech"], ocas: ["czech"], ocel: ["czech"], ocenit: ["czech"], ochladit: ["czech"], ochota: ["czech"], ochrana: ["czech"], ocitnout: ["czech"], odboj: ["czech"], odbyt: ["czech"], odchod: ["czech"], odcizit: ["czech"], odebrat: ["czech"], odeslat: ["czech"], odevzdat: ["czech"], odezva: ["czech"], odhadce: ["czech"], odhodit: ["czech"], odjet: ["czech"], odjinud: ["czech"], odkaz: ["czech"], odkoupit: ["czech"], odliv: ["czech"], odluka: ["czech"], odmlka: ["czech"], odolnost: ["czech"], odpad: ["czech"], odpis: ["czech"], odplout: ["czech"], odpor: ["czech"], odpustit: ["czech"], odpykat: ["czech"], odrazka: ["czech"], odsoudit: ["czech"], odstup: ["czech"], odsun: ["czech"], odtok: ["czech"], odtud: ["czech"], odvaha: ["czech"], odveta: ["czech"], odvolat: ["czech"], odvracet: ["czech"], odznak: ["czech"], ofina: ["czech"], ofsajd: ["czech"], ohlas: ["czech"], ohnisko: ["czech"], ohrada: ["czech"], ohrozit: ["czech"], ohryzek: ["czech"], okap: ["czech"], okenice: ["czech"], oklika: ["czech"], okno: ["czech"], okouzlit: ["czech"], okovy: ["czech"], okrasa: ["czech"], okres: ["czech"], okrsek: ["czech"], okruh: ["czech"], okupant: ["czech"], okurka: ["czech"], okusit: ["czech"], olejnina: ["czech"], olizovat: ["czech"], omak: ["czech"], omeleta: ["czech"], omezit: ["czech"], omladina: ["czech"], omlouvat: ["czech"], omluva: ["czech"], omyl: ["czech"], onehdy: ["czech"], opakovat: ["czech"], opasek: ["czech"], operace: ["czech"], opice: ["czech"], opilost: ["czech"], opisovat: ["czech"], opora: ["czech"], opozice: ["czech"], opravdu: ["czech"], oproti: ["czech"], orbital: ["czech"], orchestr: ["czech"], orgie: ["czech"], orlice: ["czech"], orloj: ["czech"], ortel: ["czech"], osada: ["czech"], oschnout: ["czech"], osika: ["czech"], osivo: ["czech"], oslava: ["czech"], oslepit: ["czech"], oslnit: ["czech"], oslovit: ["czech"], osnova: ["czech"], osoba: ["czech"], osolit: ["czech"], ospalec: ["czech"], osten: ["czech"], ostraha: ["czech"], ostuda: ["czech"], ostych: ["czech"], osvojit: ["czech"], oteplit: ["czech"], otisk: ["czech"], otop: ["czech"], otrhat: ["czech"], otrlost: ["czech"], otrok: ["czech"], otruby: ["czech"], otvor: ["czech"], ovanout: ["czech"], ovar: ["czech"], oves: ["czech"], ovlivnit: ["czech"], ovoce: ["czech"], oxid: ["czech"], ozdoba: ["czech"], pachatel: ["czech"], pacient: ["czech"], padouch: ["czech"], pahorek: ["czech"], pakt: ["czech"], palanda: ["czech"], palec: ["czech"], palivo: ["czech"], paluba: ["czech"], pamflet: ["czech"], pamlsek: ["czech"], panenka: ["czech"], panika: ["czech"], panna: ["czech"], panovat: ["czech"], panstvo: ["czech"], pantofle: ["czech"], paprika: ["czech"], parketa: ["czech"], parodie: ["czech"], parta: ["czech"], paruka: ["czech"], paryba: ["czech"], paseka: ["czech"], pasivita: ["czech"], pastelka: ["czech"], patent: ["czech"], patrona: ["czech"], pavouk: ["czech"], pazneht: ["czech"], pazourek: ["czech"], pecka: ["czech"], pedagog: ["czech"], pejsek: ["czech"], peklo: ["czech"], peloton: ["czech"], penalta: ["czech"], pendrek: ["czech"], penze: ["czech"], periskop: ["czech"], pero: ["czech"], pestrost: ["czech"], petarda: ["czech"], petice: ["czech"], petrolej: ["czech"], pevnina: ["czech"], pexeso: ["czech"], pianista: ["czech"], piha: ["czech"], pijavice: ["czech"], pikle: ["czech"], piknik: ["czech", "turkish"], pilina: ["czech"], pilnost: ["czech"], pilulka: ["czech"], pinzeta: ["czech"], pipeta: ["czech"], pisatel: ["czech"], pistole: ["czech"], pitevna: ["czech"], pivnice: ["czech"], pivovar: ["czech"], placenta: ["czech"], plakat: ["czech"], plamen: ["czech"], planeta: ["czech"], plastika: ["czech"], platit: ["czech"], plavidlo: ["czech"], plaz: ["czech"], plech: ["czech"], plemeno: ["czech"], plenta: ["czech"], ples: ["czech"], pletivo: ["czech"], plevel: ["czech"], plivat: ["czech"], plnit: ["czech"], plno: ["czech"], plocha: ["czech"], plodina: ["czech"], plomba: ["czech"], plout: ["czech"], pluk: ["czech"], plyn: ["czech"], pobavit: ["czech"], pobyt: ["czech"], pochod: ["czech"], pocit: ["czech"], poctivec: ["czech"], podat: ["czech"], podcenit: ["czech"], podepsat: ["czech"], podhled: ["czech"], podivit: ["czech"], podklad: ["czech"], podmanit: ["czech"], podnik: ["czech"], podoba: ["czech"], podpora: ["czech"], podraz: ["czech"], podstata: ["czech"], podvod: ["czech"], podzim: ["czech"], poezie: ["czech"], pohanka: ["czech"], pohnutka: ["czech"], pohovor: ["czech"], pohroma: ["czech"], pohyb: ["czech"], pointa: ["czech"], pojistka: ["czech"], pojmout: ["czech"], pokazit: ["czech"], pokles: ["czech"], pokoj: ["czech"], pokrok: ["czech"], pokuta: ["czech"], pokyn: ["czech"], poledne: ["czech"], polibek: ["czech"], polknout: ["czech"], poloha: ["czech"], polynom: ["czech"], pomalu: ["czech"], pominout: ["czech"], pomlka: ["czech"], pomoc: ["czech"], pomsta: ["czech"], pomyslet: ["czech"], ponechat: ["czech"], ponorka: ["czech"], ponurost: ["czech"], popadat: ["czech"], popel: ["czech"], popisek: ["czech"], poplach: ["czech"], poprosit: ["czech"], popsat: ["czech"], popud: ["czech"], poradce: ["czech"], porce: ["czech"], porod: ["czech"], porucha: ["czech"], poryv: ["czech"], posadit: ["czech"], posed: ["czech"], posila: ["czech"], poskok: ["czech"], poslanec: ["czech"], posoudit: ["czech"], pospolu: ["czech"], postava: ["czech"], posudek: ["czech"], posyp: ["czech"], potah: ["czech"], potkan: ["czech"], potlesk: ["czech"], potomek: ["czech"], potrava: ["czech"], potupa: ["czech"], potvora: ["czech"], poukaz: ["czech"], pouto: ["czech"], pouzdro: ["czech"], povaha: ["czech"], povidla: ["czech"], povlak: ["czech"], povoz: ["czech"], povrch: ["czech"], povstat: ["czech"], povyk: ["czech"], povzdech: ["czech"], pozdrav: ["czech"], pozemek: ["czech"], poznatek: ["czech"], pozor: ["czech"], pozvat: ["czech"], pracovat: ["czech"], prahory: ["czech"], praktika: ["czech"], prales: ["czech"], praotec: ["czech"], praporek: ["czech"], prase: ["czech"], pravda: ["czech"], princip: ["czech"], prkno: ["czech"], probudit: ["czech"], procento: ["czech"], prodej: ["czech"], profese: ["czech"], prohra: ["czech"], projekt: ["czech"], prolomit: ["czech"], promile: ["czech"], pronikat: ["czech"], propad: ["czech"], prorok: ["czech"], prosba: ["czech"], proton: ["czech"], proutek: ["czech"], provaz: ["czech"], prskavka: ["czech"], prsten: ["czech"], prudkost: ["czech"], prut: ["czech"], prvek: ["czech"], prvohory: ["czech"], psanec: ["czech"], psovod: ["czech"], pstruh: ["czech"], ptactvo: ["czech"], puberta: ["czech"], puch: ["czech"], pudl: ["czech"], pukavec: ["czech"], puklina: ["czech"], pukrle: ["czech"], pult: ["czech"], pumpa: ["czech"], punc: ["czech"], pupen: ["czech"], pusa: ["czech"], pusinka: ["czech"], pustina: ["czech"], putovat: ["czech"], putyka: ["czech"], pyramida: ["czech"], pysk: ["czech"], pytel: ["czech"], racek: ["czech"], rachot: ["czech"], radiace: ["czech"], radnice: ["czech"], radon: ["czech"], raft: ["czech"], ragby: ["czech"], raketa: ["czech"], rakovina: ["czech"], rameno: ["czech"], rampouch: ["czech"], rande: ["czech"], rarach: ["czech"], rarita: ["czech"], rasovna: ["czech"], rastr: ["czech"], ratolest: ["czech"], razance: ["czech"], razidlo: ["czech"], reagovat: ["czech"], reakce: ["czech"], recept: ["czech"], redaktor: ["czech"], referent: ["czech"], reflex: ["czech"], rejnok: ["czech"], reklama: ["czech"], rekord: ["czech"], rekrut: ["czech"], rektor: ["czech"], reputace: ["czech"], revize: ["czech", "turkish"], revma: ["czech"], revolver: ["czech"], rezerva: ["czech"], riskovat: ["czech"], riziko: ["czech"], robotika: ["czech"], rodokmen: ["czech"], rohovka: ["czech"], rokle: ["czech"], rokoko: ["czech"], romaneto: ["czech"], ropovod: ["czech"], ropucha: ["czech"], rorejs: ["czech"], rosol: ["czech"], rostlina: ["czech"], rotmistr: ["czech"], rotoped: ["czech"], rotunda: ["czech"], roubenka: ["czech"], roucho: ["czech"], roup: ["czech"], roura: ["czech"], rovina: ["czech"], rovnice: ["czech"], rozbor: ["czech"], rozchod: ["czech"], rozdat: ["czech"], rozeznat: ["czech"], rozhodce: ["czech"], rozinka: ["czech"], rozjezd: ["czech"], rozkaz: ["czech"], rozloha: ["czech"], rozmar: ["czech"], rozpad: ["czech"], rozruch: ["czech"], rozsah: ["czech"], roztok: ["czech"], rozum: ["czech"], rozvod: ["czech"], rubrika: ["czech"], ruchadlo: ["czech"], rukavice: ["czech"], rukopis: ["czech"], ryba: ["czech"], rybolov: ["czech"], rychlost: ["czech"], rydlo: ["czech"], rypadlo: ["czech"], rytina: ["czech"], ryzost: ["czech"], sadista: ["czech"], sahat: ["czech"], sako: ["czech"], samec: ["czech"], samizdat: ["czech"], samota: ["czech"], sanitka: ["czech"], sardinka: ["czech"], sasanka: ["czech"], satelit: ["czech"], sazba: ["czech"], sazenice: ["czech"], sbor: ["czech"], schovat: ["czech"], sebranka: ["czech"], secese: ["czech"], sedadlo: ["czech"], sediment: ["czech"], sedlo: ["czech"], sehnat: ["czech"], sejmout: ["czech"], sekera: ["czech"], sekta: ["czech"], sekunda: ["czech"], sekvoje: ["czech"], semeno: ["czech"], seno: ["czech"], servis: ["czech", "turkish"], sesadit: ["czech"], seshora: ["czech"], seskok: ["czech"], seslat: ["czech"], sestra: ["czech"], sesuv: ["czech"], sesypat: ["czech"], setba: ["czech"], setina: ["czech"], setkat: ["czech"], setnout: ["czech"], setrvat: ["czech"], sever: ["czech"], seznam: ["czech"], shoda: ["czech"], shrnout: ["czech"], sifon: ["czech"], silnice: ["czech"], sirka: ["czech"], sirotek: ["czech"], sirup: ["czech"], situace: ["czech"], skafandr: ["czech"], skalisko: ["czech"], skanzen: ["czech"], skaut: ["czech"], skeptik: ["czech"], skica: ["czech"], skladba: ["czech"], sklenice: ["czech"], sklo: ["czech"], skluz: ["czech"], skoba: ["czech"], skokan: ["czech"], skoro: ["czech"], skripta: ["czech"], skrz: ["czech"], skupina: ["czech"], skvost: ["czech"], skvrna: ["czech"], slabika: ["czech"], sladidlo: ["czech"], slanina: ["czech"], slast: ["czech"], slavnost: ["czech"], sledovat: ["czech"], slepec: ["czech"], sleva: ["czech"], slezina: ["czech"], slib: ["czech"], slina: ["czech"], sliznice: ["czech"], slon: ["czech"], sloupek: ["czech"], slovo: ["czech"], sluch: ["czech"], sluha: ["czech"], slunce: ["czech"], slupka: ["czech"], slza: ["czech"], smaragd: ["czech"], smetana: ["czech"], smilstvo: ["czech"], smlouva: ["czech"], smog: ["czech"], smrad: ["czech"], smrk: ["czech"], smrtka: ["czech"], smutek: ["czech"], smysl: ["czech"], snad: ["czech"], snaha: ["czech"], snob: ["czech"], sobota: ["czech"], socha: ["czech"], sodovka: ["czech"], sokol: ["czech"], sopka: ["czech"], sotva: ["czech"], souboj: ["czech"], soucit: ["czech"], soudce: ["czech"], souhlas: ["czech"], soulad: ["czech"], soumrak: ["czech"], souprava: ["czech"], soused: ["czech"], soutok: ["czech"], souviset: ["czech"], spalovna: ["czech"], spasitel: ["czech"], spis: ["czech"], splav: ["czech"], spodek: ["czech"], spojenec: ["czech"], spolu: ["czech"], sponzor: ["czech"], spornost: ["czech"], spousta: ["czech"], sprcha: ["czech"], spustit: ["czech"], sranda: ["czech"], sraz: ["czech"], srdce: ["czech"], srna: ["czech"], srnec: ["czech"], srovnat: ["czech"], srpen: ["czech"], srst: ["czech"], srub: ["czech"], stanice: ["czech"], starosta: ["czech"], statika: ["czech"], stavba: ["czech"], stehno: ["czech"], stezka: ["czech"], stodola: ["czech"], stolek: ["czech"], stopa: ["czech"], storno: ["czech"], stoupat: ["czech"], strach: ["czech"], stres: ["czech"], strhnout: ["czech"], strom: ["czech"], struna: ["czech"], studna: ["czech"], stupnice: ["czech"], stvol: ["czech"], styk: ["czech"], subjekt: ["czech"], subtropy: ["czech"], suchar: ["czech"], sudost: ["czech"], sukno: ["czech"], sundat: ["czech"], sunout: ["czech"], surikata: ["czech"], surovina: ["czech"], svah: ["czech"], svalstvo: ["czech"], svetr: ["czech"], svatba: ["czech"], svazek: ["czech"], svisle: ["czech"], svitek: ["czech"], svoboda: ["czech"], svodidlo: ["czech"], svorka: ["czech"], svrab: ["czech"], sykavka: ["czech"], sykot: ["czech"], synek: ["czech"], synovec: ["czech"], sypat: ["czech"], sypkost: ["czech"], syrovost: ["czech"], sysel: ["czech"], sytost: ["czech"], tabletka: ["czech"], tabule: ["czech"], tahoun: ["czech"], tajemno: ["czech"], tajfun: ["czech"], tajga: ["czech"], tajit: ["czech"], tajnost: ["czech"], taktika: ["czech"], tamhle: ["czech"], tampon: ["czech", "turkish"], tancovat: ["czech"], tanec: ["czech"], tanker: ["czech"], tapeta: ["czech"], tavenina: ["czech"], tazatel: ["czech"], technika: ["czech"], tehdy: ["czech"], tekutina: ["czech"], telefon: ["czech"], temnota: ["czech"], tendence: ["czech"], tenista: ["czech"], tenor: ["czech"], teplota: ["czech"], tepna: ["czech"], teprve: ["czech"], terapie: ["czech"], termoska: ["czech"], textil: ["czech"], ticho: ["czech"], tiskopis: ["czech"], titulek: ["czech"], tkadlec: ["czech"], tkanina: ["czech"], tlapka: ["czech"], tleskat: ["czech"], tlukot: ["czech"], tlupa: ["czech"], tmel: ["czech"], toaleta: ["czech"], topinka: ["czech"], topol: ["czech"], torzo: ["czech"], touha: ["czech"], toulec: ["czech"], tradice: ["czech"], traktor: ["czech"], tramp: ["czech"], trasa: ["czech"], traverza: ["czech"], trefit: ["czech"], trest: ["czech"], trezor: ["czech"], trhavina: ["czech"], trhlina: ["czech"], trochu: ["czech"], trojice: ["czech"], troska: ["czech"], trouba: ["czech"], trpce: ["czech"], trpitel: ["czech"], trpkost: ["czech"], trubec: ["czech"], truchlit: ["czech"], truhlice: ["czech"], trus: ["czech"], trvat: ["czech"], tudy: ["czech"], tuhnout: ["czech"], tuhost: ["czech"], tundra: ["czech"], turista: ["czech"], turnaj: ["czech"], tuzemsko: ["czech"], tvaroh: ["czech"], tvorba: ["czech"], tvrdost: ["czech"], tvrz: ["czech"], tygr: ["czech"], tykev: ["czech"], ubohost: ["czech"], uboze: ["czech"], ubrat: ["czech"], ubrousek: ["czech"], ubrus: ["czech"], ubytovna: ["czech"], ucho: ["czech"], uctivost: ["czech"], udivit: ["czech"], uhradit: ["czech"], ujednat: ["czech"], ujistit: ["czech"], ujmout: ["czech"], ukazatel: ["czech"], uklidnit: ["czech"], uklonit: ["czech"], ukotvit: ["czech"], ukrojit: ["czech"], ulice: ["czech"], ulita: ["czech"], ulovit: ["czech"], umyvadlo: ["czech"], unavit: ["czech"], uniforma: ["czech"], uniknout: ["czech"], upadnout: ["czech"], uplatnit: ["czech"], uplynout: ["czech"], upoutat: ["czech"], upravit: ["czech"], uran: ["czech"], urazit: ["czech"], usednout: ["czech"], usilovat: ["czech"], usmrtit: ["czech"], usnadnit: ["czech"], usnout: ["czech"], usoudit: ["czech"], ustlat: ["czech"], ustrnout: ["czech"], utahovat: ["czech"], utkat: ["czech"], utlumit: ["czech"], utonout: ["czech"], utopenec: ["czech"], utrousit: ["czech"], uvalit: ["czech"], uvolnit: ["czech"], uvozovka: ["czech"], uzdravit: ["czech"], uzel: ["czech"], uzenina: ["czech"], uzlina: ["czech"], uznat: ["czech"], vagon: ["czech", "turkish"], valcha: ["czech"], valoun: ["czech"], vana: ["czech"], vandal: ["czech"], vanilka: ["czech"], varan: ["czech"], varhany: ["czech"], varovat: ["czech"], vcelku: ["czech"], vchod: ["czech"], vdova: ["czech"], vedro: ["czech"], vegetace: ["czech"], vejce: ["czech"], velbloud: ["czech"], veletrh: ["czech"], velitel: ["czech"], velmoc: ["czech"], velryba: ["czech"], venkov: ["czech"], veranda: ["czech"], verze: ["czech"], veselka: ["czech"], veskrze: ["czech"], vesnice: ["czech"], vespodu: ["czech"], vesta: ["czech"], veterina: ["czech"], veverka: ["czech"], vibrace: ["czech"], vichr: ["czech"], videohra: ["czech"], vidina: ["czech"], vidle: ["czech"], vila: ["czech"], vinice: ["czech"], viset: ["czech"], vitalita: ["czech"], vize: ["czech"], vizitka: ["czech"], vjezd: ["czech"], vklad: ["czech"], vkus: ["czech"], vlajka: ["czech"], vlak: ["czech"], vlasec: ["czech"], vlevo: ["czech"], vlhkost: ["czech"], vliv: ["czech"], vlnovka: ["czech"], vloupat: ["czech"], vnucovat: ["czech"], vnuk: ["czech"], voda: ["czech"], vodivost: ["czech"], vodoznak: ["czech"], vodstvo: ["czech"], vojensky: ["czech"], vojna: ["czech"], vojsko: ["czech"], volant: ["czech"], volba: ["czech"], volit: ["czech"], volno: ["czech"], voskovka: ["czech"], vozidlo: ["czech"], vozovna: ["czech"], vpravo: ["czech"], vrabec: ["czech"], vracet: ["czech"], vrah: ["czech"], vrata: ["czech"], vrba: ["czech"], vrcholek: ["czech"], vrhat: ["czech"], vrstva: ["czech"], vrtule: ["czech"], vsadit: ["czech"], vstoupit: ["czech"], vstup: ["czech"], vtip: ["czech"], vybavit: ["czech"], vybrat: ["czech"], vychovat: ["czech"], vydat: ["czech"], vydra: ["czech"], vyfotit: ["czech"], vyhledat: ["czech"], vyhnout: ["czech"], vyhodit: ["czech"], vyhradit: ["czech"], vyhubit: ["czech"], vyjasnit: ["czech"], vyjet: ["czech"], vyjmout: ["czech"], vyklopit: ["czech"], vykonat: ["czech"], vylekat: ["czech"], vymazat: ["czech"], vymezit: ["czech"], vymizet: ["czech"], vymyslet: ["czech"], vynechat: ["czech"], vynikat: ["czech"], vynutit: ["czech"], vypadat: ["czech"], vyplatit: ["czech"], vypravit: ["czech"], vypustit: ["czech"], vyrazit: ["czech"], vyrovnat: ["czech"], vyrvat: ["czech"], vyslovit: ["czech"], vysoko: ["czech"], vystavit: ["czech"], vysunout: ["czech"], vysypat: ["czech"], vytasit: ["czech"], vytesat: ["czech"], vytratit: ["czech"], vyvinout: ["czech"], vyvolat: ["czech"], vyvrhel: ["czech"], vyzdobit: ["czech"], vyznat: ["czech"], vzadu: ["czech"], vzbudit: ["czech"], vzchopit: ["czech"], vzdor: ["czech"], vzduch: ["czech"], vzdychat: ["czech"], vzestup: ["czech"], vzhledem: ["czech"], vzkaz: ["czech"], vzlykat: ["czech"], vznik: ["czech"], vzorek: ["czech"], vzpoura: ["czech"], vztah: ["czech"], vztek: ["czech"], xylofon: ["czech"], zabrat: ["czech"], zabydlet: ["czech"], zachovat: ["czech"], zadarmo: ["czech"], zadusit: ["czech"], zafoukat: ["czech"], zahltit: ["czech"], zahodit: ["czech"], zahrada: ["czech"], zahynout: ["czech"], zajatec: ["czech"], zajet: ["czech"], zajistit: ["czech"], zaklepat: ["czech"], zakoupit: ["czech"], zalepit: ["czech"], zamezit: ["czech"], zamotat: ["czech"], zamyslet: ["czech"], zanechat: ["czech"], zanikat: ["czech"], zaplatit: ["czech"], zapojit: ["czech"], zapsat: ["czech"], zarazit: ["czech"], zastavit: ["czech"], zasunout: ["czech"], zatajit: ["czech"], zatemnit: ["czech"], zatknout: ["czech"], zaujmout: ["czech"], zavalit: ["czech"], zavelet: ["czech"], zavinit: ["czech"], zavolat: ["czech"], zavrtat: ["czech"], zazvonit: ["czech"], zbavit: ["czech"], zbrusu: ["czech"], zbudovat: ["czech"], zbytek: ["czech"], zdaleka: ["czech"], zdarma: ["czech"], zdatnost: ["czech"], zdivo: ["czech"], zdobit: ["czech"], zdroj: ["czech"], zdvih: ["czech"], zdymadlo: ["czech"], zelenina: ["czech"], zeman: ["czech"], zemina: ["czech"], zeptat: ["czech"], zezadu: ["czech"], zezdola: ["czech"], zhatit: ["czech"], zhltnout: ["czech"], zhluboka: ["czech"], zhotovit: ["czech"], zhruba: ["czech"], zima: ["czech"], zimnice: ["czech"], zjemnit: ["czech"], zklamat: ["czech"], zkoumat: ["czech"], zkratka: ["czech"], zkumavka: ["czech"], zlato: ["czech"], zlehka: ["czech"], zloba: ["czech"], zlom: ["czech"], zlost: ["czech"], zlozvyk: ["czech"], zmapovat: ["czech"], zmar: ["czech"], zmatek: ["czech"], zmije: ["czech"], zmizet: ["czech"], zmocnit: ["czech"], zmodrat: ["czech"], zmrzlina: ["czech"], zmutovat: ["czech"], znak: ["czech"], znalost: ["czech"], znamenat: ["czech"], znovu: ["czech"], zobrazit: ["czech"], zotavit: ["czech"], zoubek: ["czech"], zoufale: ["czech"], zplodit: ["czech"], zpomalit: ["czech"], zprava: ["czech"], zprostit: ["czech"], zprudka: ["czech"], zprvu: ["czech"], zrada: ["czech"], zranit: ["czech"], zrcadlo: ["czech"], zrnitost: ["czech"], zrno: ["czech"], zrovna: ["czech"], zrychlit: ["czech"], zrzavost: ["czech"], zticha: ["czech"], ztratit: ["czech"], zubovina: ["czech"], zubr: ["czech"], zvednout: ["czech"], zvenku: ["czech"], zvesela: ["czech"], zvon: ["czech"], zvrat: ["czech"], zvukovod: ["czech"], zvyk: ["czech"], abandon: ["english", "french"], ability: ["english"], able: ["english"], about: ["english"], above: ["english"], absent: ["english"], absorb: ["english"], abstract: ["english"], absurd: ["english"], abuse: ["english"], access: ["english"], accident: ["english"], account: ["english"], accuse: ["english"], achieve: ["english"], acid: ["english"], acoustic: ["english"], acquire: ["english"], across: ["english"], act: ["english"], action: ["english"], actor: ["english"], actress: ["english"], actual: ["english"], adapt: ["english"], add: ["english"], addict: ["english"], address: ["english"], adjust: ["english"], admit: ["english"], adult: ["english"], advance: ["english"], advice: ["english"], aerobic: ["english"], affair: ["english"], afford: ["english"], afraid: ["english"], again: ["english"], age: ["english"], agent: ["english"], agree: ["english"], ahead: ["english"], aim: ["english"], air: ["english"], airport: ["english"], aisle: ["english"], alarm: ["english"], album: ["english"], alcohol: ["english"], alert: ["english"], alien: ["english"], all: ["english"], alley: ["english"], allow: ["english"], almost: ["english"], alone: ["english"], alpha: ["english"], already: ["english"], also: ["english"], alter: ["english"], always: ["english"], amateur: ["english", "french"], amazing: ["english"], among: ["english"], amount: ["english"], amused: ["english"], analyst: ["english"], anchor: ["english"], ancient: ["english"], anger: ["english"], angle: ["english", "french"], angry: ["english"], animal: ["english", "french"], ankle: ["english"], announce: ["english"], annual: ["english"], another: ["english"], answer: ["english"], antenna: ["english"], antique: ["english"], anxiety: ["english"], any: ["english"], apart: ["english"], apology: ["english"], appear: ["english"], apple: ["english"], approve: ["english"], april: ["english"], arch: ["english"], arctic: ["english"], area: ["english"], arena: ["english", "turkish"], argue: ["english"], arm: ["english"], armed: ["english"], armor: ["english"], army: ["english"], around: ["english"], arrange: ["english"], arrest: ["english"], arrive: ["english"], arrow: ["english"], art: ["english"], artefact: ["english"], artist: ["english", "turkish"], artwork: ["english"], ask: ["english"], aspect: ["english", "french"], assault: ["english"], asset: ["english"], assist: ["english"], assume: ["english"], asthma: ["english"], athlete: ["english"], atom: ["english", "turkish"], attack: ["english"], attend: ["english"], attitude: ["english"], attract: ["english"], auction: ["english"], audit: ["english"], august: ["english"], aunt: ["english"], author: ["english"], auto: ["english"], autumn: ["english"], average: ["english"], avocado: ["english"], avoid: ["english"], awake: ["english"], aware: ["english"], away: ["english"], awesome: ["english"], awful: ["english"], awkward: ["english"], axis: ["english"], baby: ["english"], bachelor: ["english"], bacon: ["english"], badge: ["english", "french"], bag: ["english"], balance: ["english"], balcony: ["english"], ball: ["english"], bamboo: ["english"], banana: ["english"], banner: ["english"], bar: ["english"], barely: ["english"], bargain: ["english"], barrel: ["english"], base: ["english"], basic: ["english"], basket: ["english"], battle: ["english"], beach: ["english"], bean: ["english"], beauty: ["english"], because: ["english"], become: ["english"], beef: ["english"], before: ["english"], begin: ["english"], behave: ["english"], behind: ["english"], believe: ["english"], below: ["english"], belt: ["english"], bench: ["english"], benefit: ["english"], best: ["english"], betray: ["english"], better: ["english"], between: ["english"], beyond: ["english"], bicycle: ["english", "french"], bid: ["english"], bike: ["english"], bind: ["english"], biology: ["english"], bird: ["english"], birth: ["english"], bitter: ["english"], black: ["english"], blade: ["english"], blame: ["english"], blanket: ["english"], blast: ["english"], bleak: ["english"], bless: ["english"], blind: ["english"], blood: ["english"], blossom: ["english"], blouse: ["english"], blue: ["english"], blur: ["english"], blush: ["english"], board: ["english"], boat: ["english"], body: ["english"], boil: ["english"], bomb: ["english"], bone: ["english"], bonus: ["english", "french"], book: ["english"], boost: ["english"], border: ["english"], boring: ["english"], borrow: ["english"], boss: ["english"], bottom: ["english"], bounce: ["english"], box: ["english"], boy: ["english"], bracket: ["english"], brain: ["english"], brand: ["english"], brass: ["english"], brave: ["english", "french"], bread: ["english"], breeze: ["english"], brick: ["english"], bridge: ["english"], brief: ["english"], bright: ["english"], bring: ["english"], brisk: ["english"], broccoli: ["english"], broken: ["english"], bronze: ["english"], broom: ["english"], brother: ["english"], brown: ["english"], brush: ["english"], bubble: ["english"], buddy: ["english"], budget: ["english"], buffalo: ["english"], build: ["english"], bulb: ["english"], bulk: ["english"], bullet: ["english"], bundle: ["english"], bunker: ["english"], burden: ["english"], burger: ["english"], burst: ["english"], bus: ["english"], business: ["english"], busy: ["english"], butter: ["english"], buyer: ["english"], buzz: ["english"], cabbage: ["english"], cabin: ["english"], cable: ["english"], cactus: ["english"], cage: ["english"], cake: ["english"], call: ["english"], calm: ["english"], camera: ["english"], camp: ["english"], can: ["english"], canal: ["english", "french"], cancel: ["english"], candy: ["english"], cannon: ["english"], canoe: ["english"], canvas: ["english"], canyon: ["english"], capable: ["english", "french"], capital: ["english"], captain: ["english"], car: ["english"], carbon: ["english"], card: ["english"], cargo: ["english"], carpet: ["english"], carry: ["english"], cart: ["english"], case: ["english"], cash: ["english"], casino: ["english"], castle: ["english"], casual: ["english"], cat: ["english"], catalog: ["english"], catch: ["english"], category: ["english"], cattle: ["english"], caught: ["english"], cause: ["english"], caution: ["english", "french"], cave: ["english"], ceiling: ["english"], celery: ["english"], cement: ["english"], census: ["english"], century: ["english"], cereal: ["english"], certain: ["english"], chair: ["english"], chalk: ["english"], champion: ["english"], change: ["english"], chaos: ["english"], chapter: ["english"], charge: ["english"], chase: ["english"], chat: ["english"], cheap: ["english"], check: ["english"], cheese: ["english"], chef: ["english"], cherry: ["english"], chest: ["english"], chicken: ["english"], chief: ["english"], child: ["english"], chimney: ["english"], choice: ["english"], choose: ["english"], chronic: ["english"], chuckle: ["english"], chunk: ["english"], churn: ["english"], cigar: ["english"], cinnamon: ["english"], circle: ["english"], citizen: ["english"], city: ["english"], civil: ["english", "french"], claim: ["english"], clap: ["english"], clarify: ["english"], claw: ["english"], clay: ["english"], clean: ["english"], clerk: ["english"], clever: ["english"], click: ["english"], client: ["english", "french"], cliff: ["english"], climb: ["english"], clinic: ["english"], clip: ["english"], clock: ["english"], clog: ["english"], close: ["english"], cloth: ["english"], cloud: ["english"], clown: ["english"], club: ["english"], clump: ["english"], cluster: ["english"], clutch: ["english"], coach: ["english"], coast: ["english"], coconut: ["english"], code: ["english"], coffee: ["english"], coil: ["english"], coin: ["english"], collect: ["english"], color: ["english"], column: ["english"], combine: ["english"], come: ["english"], comfort: ["english"], comic: ["english"], common: ["english"], company: ["english"], concert: ["english", "french"], conduct: ["english"], confirm: ["english"], congress: ["english"], connect: ["english"], consider: ["english"], control: ["english"], convince: ["english"], cook: ["english"], cool: ["english"], copper: ["english"], copy: ["english"], coral: ["english"], core: ["english"], corn: ["english"], correct: ["english", "french"], cost: ["english"], cotton: ["english"], couch: ["english"], country: ["english"], couple: ["english"], course: ["english"], cousin: ["english"], cover: ["english"], coyote: ["english", "french"], crack: ["english"], cradle: ["english"], craft: ["english"], cram: ["english"], crane: ["english"], crash: ["english"], crater: ["english"], crawl: ["english"], crazy: ["english"], cream: ["english"], credit: ["english"], creek: ["english"], crew: ["english"], cricket: ["english"], crime: ["english"], crisp: ["english"], critic: ["english"], crop: ["english"], cross: ["english"], crouch: ["english"], crowd: ["english"], crucial: ["english", "french"], cruel: ["english", "french"], cruise: ["english"], crumble: ["english"], crunch: ["english"], crush: ["english"], cry: ["english"], crystal: ["english"], cube: ["english"], culture: ["english"], cup: ["english"], cupboard: ["english"], curious: ["english"], current: ["english"], curtain: ["english"], curve: ["english"], cushion: ["english"], custom: ["english"], cute: ["english"], cycle: ["english", "french"], dad: ["english"], damage: ["english"], damp: ["english"], dance: ["english"], danger: ["english", "french"], daring: ["english"], dash: ["english"], daughter: ["english"], dawn: ["english"], day: ["english"], deal: ["english"], debate: ["english"], debris: ["english"], decade: ["english"], december: ["english"], decide: ["english"], decline: ["english"], decorate: ["english"], decrease: ["english"], deer: ["english"], defense: ["english"], define: ["english"], defy: ["english"], degree: ["english"], delay: ["english"], deliver: ["english"], demand: ["english"], demise: ["english"], denial: ["english"], dentist: ["english"], deny: ["english"], depart: ["english"], depend: ["english"], deposit: ["english"], depth: ["english"], deputy: ["english"], derive: ["english"], describe: ["english"], desert: ["english"], design: ["english"], desk: ["english"], despair: ["english"], destroy: ["english"], detail: ["english"], detect: ["english"], develop: ["english"], device: ["english"], devote: ["english"], diagram: ["english"], dial: ["english"], diamond: ["english"], diary: ["english"], dice: ["english"], diesel: ["english"], diet: ["english"], differ: ["english"], digital: ["english", "french"], dignity: ["english"], dilemma: ["english"], dinner: ["english"], dinosaur: ["english"], direct: ["english"], dirt: ["english"], disagree: ["english"], discover: ["english"], disease: ["english"], dish: ["english"], dismiss: ["english"], disorder: ["english"], display: ["english"], distance: ["english", "french"], divert: ["english"], divide: ["english"], divorce: ["english"], dizzy: ["english"], doctor: ["english"], document: ["english"], dog: ["english"], doll: ["english"], dolphin: ["english"], domain: ["english"], donate: ["english"], donkey: ["english"], donor: ["english"], door: ["english"], dose: ["english"], double: ["english", "french"], dove: ["english"], draft: ["english"], dragon: ["english", "french"], drama: ["english"], drastic: ["english"], draw: ["english"], dream: ["english"], dress: ["english"], drift: ["english"], drill: ["english"], drink: ["english"], drip: ["english"], drive: ["english"], drop: ["english"], drum: ["english"], dry: ["english"], duck: ["english"], dumb: ["english"], dune: ["english"], during: ["english"], dust: ["english"], dutch: ["english"], duty: ["english"], dwarf: ["english"], dynamic: ["english"], eager: ["english"], eagle: ["english"], early: ["english"], earn: ["english"], earth: ["english"], easily: ["english"], east: ["english"], easy: ["english"], echo: ["english"], ecology: ["english"], economy: ["english"], edge: ["english"], edit: ["english"], educate: ["english"], effort: ["english", "french"], egg: ["english"], eight: ["english"], either: ["english"], elbow: ["english"], elder: ["english"], electric: ["english"], elegant: ["english"], element: ["english"], elephant: ["english"], elevator: ["english"], elite: ["english"], else: ["english"], embark: ["english"], embody: ["english"], embrace: ["english"], emerge: ["english"], emotion: ["english"], employ: ["english"], empower: ["english"], empty: ["english"], enable: ["english"], enact: ["english"], end: ["english"], endless: ["english"], endorse: ["english"], enemy: ["english"], energy: ["english"], enforce: ["english"], engage: ["english"], engine: ["english"], enhance: ["english"], enjoy: ["english"], enlist: ["english"], enough: ["english"], enrich: ["english"], enroll: ["english"], ensure: ["english"], enter: ["english"], entire: ["english"], entry: ["english"], envelope: ["english"], episode: ["english"], equal: ["english"], equip: ["english"], era: ["english"], erase: ["english"], erode: ["english"], erosion: ["english"], error: ["english"], erupt: ["english"], escape: ["english"], essay: ["english"], essence: ["english", "french"], estate: ["english"], eternal: ["english"], ethics: ["english"], evidence: ["english"], evil: ["english"], evoke: ["english"], evolve: ["english"], exact: ["english", "french"], example: ["english"], excess: ["english"], exchange: ["english"], excite: ["english"], exclude: ["english"], excuse: ["english", "french"], execute: ["english"], exercise: ["english"], exhaust: ["english"], exhibit: ["english"], exile: ["english"], exist: ["english"], exit: ["english"], exotic: ["english"], expand: ["english"], expect: ["english"], expire: ["english"], explain: ["english"], expose: ["english"], express: ["english"], extend: ["english"], extra: ["english"], eye: ["english"], eyebrow: ["english"], fabric: ["english"], face: ["english"], faculty: ["english"], fade: ["english"], faint: ["english"], faith: ["english"], fall: ["english"], false: ["english"], fame: ["english"], family: ["english"], famous: ["english"], fan: ["english"], fancy: ["english"], fantasy: ["english"], farm: ["english"], fashion: ["english"], fat: ["english"], fatal: ["english", "french"], father: ["english"], fatigue: ["english", "french"], fault: ["english"], favorite: ["english"], feature: ["english"], february: ["english"], federal: ["english", "turkish"], fee: ["english"], feed: ["english"], feel: ["english"], female: ["english"], fence: ["english"], festival: ["english", "french", "turkish"], fetch: ["english"], fever: ["english"], few: ["english"], fiber: ["english"], fiction: ["english"], field: ["english"], figure: ["english", "french"], file: ["english"], film: ["english"], filter: ["english"], final: ["english"], find: ["english"], fine: ["english"], finger: ["english"], finish: ["english"], fire: ["english"], firm: ["english"], first: ["english"], fiscal: ["english"], fish: ["english"], fit: ["english"], fitness: ["english"], fix: ["english"], flag: ["english"], flame: ["english"], flash: ["english"], flat: ["english"], flavor: ["english"], flee: ["english"], flight: ["english"], flip: ["english"], float: ["english"], flock: ["english"], floor: ["english"], flower: ["english"], fluid: ["english"], flush: ["english"], fly: ["english"], foam: ["english"], focus: ["english"], fog: ["english"], foil: ["english"], fold: ["english"], follow: ["english"], food: ["english"], foot: ["english"], force: ["english"], forest: ["english"], forget: ["english"], fork: ["english"], fortune: ["english", "french"], forum: ["english"], forward: ["english"], fossil: ["english"], foster: ["english"], found: ["english"], fox: ["english"], fragile: ["english", "french"], frame: ["english"], frequent: ["english"], fresh: ["english"], friend: ["english"], fringe: ["english"], frog: ["english"], front: ["english"], frost: ["english"], frown: ["english"], frozen: ["english"], fruit: ["english", "french"], fuel: ["english"], fun: ["english"], funny: ["english"], furnace: ["english"], fury: ["english"], future: ["english"], gadget: ["english"], gain: ["english"], galaxy: ["english"], gallery: ["english"], game: ["english"], gap: ["english"], garage: ["english"], garbage: ["english"], garden: ["english"], garlic: ["english"], garment: ["english"], gas: ["english"], gasp: ["english"], gate: ["english"], gather: ["english"], gauge: ["english"], gaze: ["english"], general: ["english"], genius: ["english"], genre: ["english"], gentle: ["english"], genuine: ["english"], gesture: ["english"], ghost: ["english"], giant: ["english"], gift: ["english"], giggle: ["english"], ginger: ["english"], giraffe: ["english"], girl: ["english"], give: ["english"], glad: ["english"], glance: ["english"], glare: ["english"], glass: ["english"], glide: ["english"], glimpse: ["english"], globe: ["english", "french"], gloom: ["english"], glory: ["english"], glove: ["english"], glow: ["english"], glue: ["english"], goat: ["english"], goddess: ["english"], gold: ["english"], good: ["english"], goose: ["english"], gorilla: ["english"], gospel: ["english"], gossip: ["english"], govern: ["english"], gown: ["english"], grab: ["english"], grace: ["english"], grain: ["english"], grant: ["english"], grape: ["english"], grass: ["english"], gravity: ["english"], great: ["english"], green: ["english"], grid: ["english"], grief: ["english"], grit: ["english"], grocery: ["english"], group: ["english"], grow: ["english"], grunt: ["english"], guard: ["english"], guess: ["english"], guide: ["english", "french"], guilt: ["english"], guitar: ["english"], gun: ["english"], gym: ["english"], habit: ["english"], hair: ["english"], half: ["english"], hammer: ["english"], hamster: ["english"], hand: ["english"], happy: ["english"], harbor: ["english"], hard: ["english"], harsh: ["english"], harvest: ["english"], hat: ["english"], have: ["english"], hawk: ["english"], hazard: ["english"], head: ["english"], health: ["english"], heart: ["english"], heavy: ["english"], hedgehog: ["english"], height: ["english"], hello: ["english"], helmet: ["english"], help: ["english"], hen: ["english"], hero: ["english"], hidden: ["english"], high: ["english"], hill: ["english"], hint: ["english"], hip: ["english"], hire: ["english"], history: ["english"], hobby: ["english"], hockey: ["english"], hold: ["english"], hole: ["english"], holiday: ["english"], hollow: ["english"], home: ["english"], honey: ["english"], hood: ["english"], hope: ["english"], horn: ["english"], horror: ["english"], horse: ["english"], hospital: ["english"], host: ["english"], hotel: ["english"], hour: ["english"], hover: ["english"], hub: ["english"], huge: ["english"], human: ["english"], humble: ["english", "french"], humor: ["english"], hundred: ["english"], hungry: ["english"], hunt: ["english"], hurdle: ["english"], hurry: ["english"], hurt: ["english"], husband: ["english"], hybrid: ["english"], ice: ["english"], icon: ["english"], idea: ["english"], identify: ["english"], idle: ["english"], ignore: ["english"], ill: ["english"], illegal: ["english"], illness: ["english"], image: ["english", "french"], imitate: ["english"], immense: ["english", "french"], immune: ["english"], impact: ["english", "french"], impose: ["english"], improve: ["english"], impulse: ["english"], inch: ["english"], include: ["english"], income: ["english"], increase: ["english"], index: ["english"], indicate: ["english"], indoor: ["english"], industry: ["english"], infant: ["english"], inflict: ["english"], inform: ["english"], inhale: ["english"], inherit: ["english"], initial: ["english"], inject: ["english"], injury: ["english"], inmate: ["english"], inner: ["english"], innocent: ["english", "french"], input: ["english"], inquiry: ["english"], insane: ["english"], insect: ["english"], inside: ["english"], inspire: ["english"], install: ["english"], intact: ["english", "french"], interest: ["english"], into: ["english"], invest: ["english"], invite: ["english"], involve: ["english"], iron: ["english"], island: ["english"], isolate: ["english"], issue: ["english"], item: ["english"], ivory: ["english"], jacket: ["english"], jaguar: ["english", "french"], jar: ["english"], jazz: ["english"], jealous: ["english"], jeans: ["english"], jelly: ["english"], jewel: ["english"], job: ["english"], join: ["english"], joke: ["english"], journey: ["english"], joy: ["english"], judge: ["english"], juice: ["english"], jump: ["english"], jungle: ["english"], junior: ["english", "french"], junk: ["english"], just: ["english"], kangaroo: ["english"], keen: ["english"], keep: ["english"], ketchup: ["english"], key: ["english"], kick: ["english"], kid: ["english"], kidney: ["english"], kind: ["english"], kingdom: ["english"], kiss: ["english"], kit: ["english"], kitchen: ["english"], kite: ["english"], kitten: ["english"], kiwi: ["english"], knee: ["english"], knife: ["english"], knock: ["english"], know: ["english"], lab: ["english"], label: ["english", "french"], labor: ["english"], ladder: ["english"], lady: ["english"], lake: ["english"], lamp: ["english"], language: ["english"], laptop: ["english"], large: ["english"], later: ["english"], latin: ["english"], laugh: ["english"], laundry: ["english"], lava: ["english"], law: ["english"], lawn: ["english"], lawsuit: ["english"], layer: ["english"], lazy: ["english"], leader: ["english"], leaf: ["english"], learn: ["english"], leave: ["english"], lecture: ["english", "french"], left: ["english"], leg: ["english"], legal: ["english"], legend: ["english"], leisure: ["english"], lemon: ["english"], lend: ["english"], length: ["english"], lens: ["english"], leopard: ["english"], lesson: ["english"], letter: ["english"], level: ["english"], liar: ["english"], liberty: ["english"], library: ["english"], license: ["english"], life: ["english"], lift: ["english"], light: ["english"], like: ["english"], limb: ["english"], limit: ["english"], link: ["english"], lion: ["english"], liquid: ["english"], list: ["english"], little: ["english"], live: ["english"], lizard: ["english"], load: ["english"], loan: ["english"], lobster: ["english"], local: ["english"], lock: ["english"], logic: ["english"], lonely: ["english"], long: ["english"], loop: ["english"], lottery: ["english"], loud: ["english"], lounge: ["english"], love: ["english"], loyal: ["english", "french"], lucky: ["english"], luggage: ["english"], lumber: ["english"], lunar: ["english"], lunch: ["english"], luxury: ["english"], lyrics: ["english"], machine: ["english", "french"], mad: ["english"], magic: ["english"], magnet: ["english"], maid: ["english"], mail: ["english"], main: ["english"], major: ["english"], make: ["english"], mammal: ["english"], man: ["english"], manage: ["english"], mandate: ["english"], mango: ["english"], mansion: ["english"], manual: ["english"], maple: ["english"], marble: ["english"], march: ["english"], margin: ["english"], marine: ["english"], market: ["english", "turkish"], marriage: ["english"], mask: ["english"], mass: ["english"], master: ["english"], match: ["english"], material: ["english"], math: ["english"], matrix: ["english"], matter: ["english"], maximum: ["english"], maze: ["english"], meadow: ["english"], mean: ["english"], measure: ["english"], meat: ["english"], mechanic: ["english"], medal: ["english"], media: ["english"], melody: ["english"], melt: ["english"], member: ["english"], memory: ["english"], mention: ["english"], menu: ["english"], mercy: ["english"], merge: ["english"], merit: ["english"], merry: ["english"], mesh: ["english"], message: ["english"], metal: ["english"], method: ["english"], middle: ["english"], midnight: ["english"], milk: ["english"], million: ["english", "french"], mimic: ["english"], mind: ["english"], minimum: ["english"], minor: ["english"], minute: ["english", "french"], miracle: ["english", "french"], mirror: ["english"], misery: ["english"], miss: ["english"], mistake: ["english"], mix: ["english"], mixed: ["english"], mixture: ["english"], mobile: ["english", "french"], model: ["english", "turkish"], modify: ["english"], mom: ["english"], moment: ["english"], monitor: ["english"], monkey: ["english"], monster: ["english"], month: ["english"], moon: ["english"], moral: ["english"], more: ["english"], morning: ["english"], mosquito: ["english"], mother: ["english"], motion: ["english"], motor: ["english", "turkish"], mountain: ["english"], mouse: ["english"], move: ["english"], movie: ["english"], much: ["english"], muffin: ["english"], mule: ["english"], multiply: ["english"], muscle: ["english", "french"], museum: ["english"], mushroom: ["english"], music: ["english"], must: ["english"], mutual: ["english"], myself: ["english"], mystery: ["english"], myth: ["english"], naive: ["english"], name: ["english"], napkin: ["english"], narrow: ["english"], nasty: ["english"], nation: ["english", "french"], nature: ["english", "french"], near: ["english"], neck: ["english"], need: ["english"], negative: ["english"], neglect: ["english"], neither: ["english"], nephew: ["english"], nerve: ["english"], nest: ["english"], net: ["english"], network: ["english"], neutral: ["english"], never: ["english"], news: ["english"], next: ["english"], nice: ["english"], night: ["english"], noble: ["english", "french"], noise: ["english"], nominee: ["english"], noodle: ["english"], normal: ["english", "turkish"], north: ["english"], nose: ["english"], notable: ["english", "french"], note: ["english"], nothing: ["english"], notice: ["english"], novel: ["english"], now: ["english"], nuclear: ["english"], number: ["english"], nurse: ["english"], nut: ["english"], oak: ["english"], obey: ["english"], object: ["english"], oblige: ["english"], obscure: ["english"], observe: ["english"], obtain: ["english"], obvious: ["english"], occur: ["english"], ocean: ["english"], october: ["english"], odor: ["english"], off: ["english"], offer: ["english"], office: ["english"], often: ["english"], oil: ["english"], okay: ["english"], old: ["english"], olive: ["english"], olympic: ["english"], omit: ["english"], once: ["english"], one: ["english"], onion: ["english"], online: ["english"], only: ["english"], open: ["english"], opera: ["english", "turkish"], opinion: ["english", "french"], oppose: ["english"], option: ["english"], orange: ["english", "french"], orbit: ["english"], orchard: ["english"], order: ["english"], ordinary: ["english"], organ: ["english"], orient: ["english"], original: ["english"], orphan: ["english"], ostrich: ["english"], other: ["english"], outdoor: ["english"], outer: ["english"], output: ["english"], outside: ["english"], oval: ["english"], oven: ["english"], over: ["english"], own: ["english"], owner: ["english"], oxygen: ["english"], oyster: ["english"], ozone: ["english", "french"], pact: ["english"], paddle: ["english"], page: ["english"], pair: ["english"], palace: ["english", "french"], palm: ["english"], panda: ["english", "french", "turkish"], panel: ["english", "turkish"], panic: ["english"], panther: ["english"], paper: ["english"], parade: ["english"], parent: ["english"], park: ["english"], parrot: ["english"], party: ["english"], pass: ["english"], patch: ["english"], path: ["english"], patient: ["english"], patrol: ["english"], pattern: ["english"], pause: ["english"], pave: ["english"], payment: ["english"], peace: ["english"], peanut: ["english"], pear: ["english"], peasant: ["english"], pelican: ["english"], pen: ["english"], penalty: ["english"], pencil: ["english"], people: ["english"], pepper: ["english"], perfect: ["english"], permit: ["english"], person: ["english"], pet: ["english"], phone: ["english"], photo: ["english"], phrase: ["english", "french"], physical: ["english"], piano: ["english", "french"], picnic: ["english"], picture: ["english"], piece: ["english"], pig: ["english"], pigeon: ["english"], pill: ["english"], pilot: ["english", "turkish"], pink: ["english"], pioneer: ["english"], pipe: ["english"], pistol: ["english"], pitch: ["english"], pizza: ["english", "french"], place: ["english"], planet: ["english"], plastic: ["english"], plate: ["english"], play: ["english"], please: ["english"], pledge: ["english"], pluck: ["english"], plug: ["english"], plunge: ["english"], poem: ["english"], poet: ["english"], point: ["english"], polar: ["english"], pole: ["english"], police: ["english"], pond: ["english"], pony: ["english"], pool: ["english"], popular: ["english"], portion: ["english"], position: ["english", "french"], possible: ["english"], post: ["english"], potato: ["english"], pottery: ["english"], poverty: ["english"], powder: ["english"], power: ["english"], practice: ["english"], praise: ["english"], predict: ["english"], prefer: ["english"], prepare: ["english"], present: ["english"], pretty: ["english"], prevent: ["english"], price: ["english"], pride: ["english"], primary: ["english"], print: ["english"], priority: ["english"], prison: ["english", "french"], private: ["english"], prize: ["english"], problem: ["english", "turkish"], process: ["english"], produce: ["english"], profit: ["english"], program: ["english", "turkish"], project: ["english"], promote: ["english"], proof: ["english"], property: ["english"], prosper: ["english"], protect: ["english"], proud: ["english"], provide: ["english"], public: ["english", "french"], pudding: ["english"], pull: ["english"], pulp: ["english"], pulse: ["english"], pumpkin: ["english"], punch: ["english"], pupil: ["english"], puppy: ["english"], purchase: ["english"], purity: ["english"], purpose: ["english"], purse: ["english"], push: ["english"], put: ["english"], puzzle: ["english", "french"], pyramid: ["english"], quality: ["english"], quantum: ["english"], quarter: ["english"], question: ["english", "french"], quick: ["english"], quit: ["english"], quiz: ["english"], quote: ["english"], rabbit: ["english"], raccoon: ["english"], race: ["english"], rack: ["english"], radar: ["english", "turkish"], radio: ["english"], rail: ["english"], rain: ["english"], raise: ["english"], rally: ["english"], ramp: ["english"], ranch: ["english"], random: ["english"], range: ["english"], rapid: ["english"], rare: ["english"], rate: ["english"], rather: ["english"], raven: ["english"], raw: ["english"], razor: ["english"], ready: ["english"], real: ["english"], reason: ["english"], rebel: ["english"], rebuild: ["english"], recall: ["english"], receive: ["english"], recipe: ["english"], record: ["english"], recycle: ["english"], reduce: ["english"], reflect: ["english"], reform: ["english", "turkish"], refuse: ["english"], region: ["english"], regret: ["english"], regular: ["english"], reject: ["english"], relax: ["english"], release: ["english"], relief: ["english", "french"], rely: ["english"], remain: ["english"], remember: ["english"], remind: ["english"], remove: ["english"], render: ["english"], renew: ["english"], rent: ["english"], reopen: ["english"], repair: ["english"], repeat: ["english"], replace: ["english"], report: ["english"], require: ["english"], rescue: ["english"], resemble: ["english"], resist: ["english"], resource: ["english"], response: ["english"], result: ["english"], retire: ["english"], retreat: ["english"], return: ["english"], reunion: ["english"], reveal: ["english"], review: ["english"], reward: ["english"], rhythm: ["english"], rib: ["english"], ribbon: ["english"], rice: ["english"], rich: ["english"], ride: ["english"], ridge: ["english"], rifle: ["english"], right: ["english"], rigid: ["english"], ring: ["english"], riot: ["english"], ripple: ["english"], risk: ["english"], ritual: ["english"], rival: ["english", "french"], river: ["english"], road: ["english"], roast: ["english"], robot: ["english", "turkish"], robust: ["english"], rocket: ["english"], romance: ["english", "french"], roof: ["english"], rookie: ["english"], room: ["english"], rose: ["english"], rotate: ["english"], rough: ["english"], round: ["english"], route: ["english"], royal: ["english"], rubber: ["english"], rude: ["english"], rug: ["english"], rule: ["english"], run: ["english"], runway: ["english"], rural: ["english"], sad: ["english"], saddle: ["english"], sadness: ["english"], safe: ["english"], sail: ["english"], salad: ["english"], salmon: ["english"], salon: ["english", "french", "turkish"], salt: ["english"], salute: ["english"], same: ["english"], sample: ["english"], sand: ["english"], satisfy: ["english"], satoshi: ["english"], sauce: ["english"], sausage: ["english"], save: ["english"], say: ["english"], scale: ["english"], scan: ["english"], scare: ["english"], scatter: ["english"], scene: ["english"], scheme: ["english"], school: ["english"], science: ["english", "french"], scissors: ["english"], scorpion: ["english"], scout: ["english"], scrap: ["english"], screen: ["english"], script: ["english"], scrub: ["english"], sea: ["english"], search: ["english"], season: ["english"], seat: ["english"], second: ["english"], secret: ["english"], section: ["english"], security: ["english"], seed: ["english"], seek: ["english"], segment: ["english"], select: ["english"], sell: ["english"], seminar: ["english"], senior: ["english"], sense: ["english"], sentence: ["english", "french"], series: ["english"], service: ["english", "french"], session: ["english"], settle: ["english"], setup: ["english"], seven: ["english"], shadow: ["english"], shaft: ["english"], shallow: ["english"], share: ["english"], shed: ["english"], shell: ["english"], sheriff: ["english"], shield: ["english"], shift: ["english"], shine: ["english"], ship: ["english"], shiver: ["english"], shock: ["english"], shoe: ["english"], shoot: ["english"], shop: ["english"], short: ["english"], shoulder: ["english"], shove: ["english"], shrimp: ["english"], shrug: ["english"], shuffle: ["english"], shy: ["english"], sibling: ["english"], sick: ["english"], side: ["english"], siege: ["english"], sight: ["english"], sign: ["english"], silent: ["english"], silk: ["english"], silly: ["english"], silver: ["english"], similar: ["english"], simple: ["english", "french"], since: ["english"], sing: ["english"], siren: ["english"], sister: ["english"], situate: ["english"], six: ["english"], size: ["english"], skate: ["english"], sketch: ["english"], ski: ["english"], skill: ["english"], skin: ["english"], skirt: ["english"], skull: ["english"], slab: ["english"], slam: ["english"], sleep: ["english"], slender: ["english"], slice: ["english"], slide: ["english"], slight: ["english"], slim: ["english"], slogan: ["english", "turkish"], slot: ["english"], slow: ["english"], slush: ["english"], small: ["english"], smart: ["english"], smile: ["english"], smoke: ["english"], smooth: ["english"], snack: ["english"], snake: ["english"], snap: ["english"], sniff: ["english"], snow: ["english"], soap: ["english"], soccer: ["english"], social: ["english", "french"], sock: ["english"], soda: ["english"], soft: ["english"], solar: ["english"], soldier: ["english"], solid: ["english"], solution: ["english"], solve: ["english"], someone: ["english"], song: ["english"], soon: ["english"], sorry: ["english"], sort: ["english"], soul: ["english"], sound: ["english"], soup: ["english"], source: ["english", "french"], south: ["english"], space: ["english"], spare: ["english"], spatial: ["english", "french"], spawn: ["english"], speak: ["english"], special: ["english"], speed: ["english"], spell: ["english"], spend: ["english"], sphere: ["english"], spice: ["english"], spider: ["english"], spike: ["english"], spin: ["english"], spirit: ["english"], split: ["english"], spoil: ["english"], sponsor: ["english", "turkish"], spoon: ["english"], sport: ["english"], spot: ["english"], spray: ["english"], spread: ["english"], spring: ["english"], spy: ["english"], square: ["english"], squeeze: ["english"], squirrel: ["english"], stable: ["english", "french"], stadium: ["english"], staff: ["english"], stage: ["english"], stairs: ["english"], stamp: ["english"], stand: ["english"], start: ["english"], state: ["english"], stay: ["english"], steak: ["english"], steel: ["english"], stem: ["english"], step: ["english"], stereo: ["english"], stick: ["english"], still: ["english"], sting: ["english"], stock: ["english"], stomach: ["english"], stone: ["english"], stool: ["english"], story: ["english"], stove: ["english"], strategy: ["english"], street: ["english"], strike: ["english"], strong: ["english"], struggle: ["english"], student: ["english"], stuff: ["english"], stumble: ["english"], style: ["english"], subject: ["english"], submit: ["english"], subway: ["english"], success: ["english"], such: ["english"], sudden: ["english"], suffer: ["english"], sugar: ["english"], suggest: ["english"], suit: ["english"], summer: ["english"], sun: ["english"], sunny: ["english"], sunset: ["english"], super: ["english"], supply: ["english"], supreme: ["english"], sure: ["english"], surface: ["english", "french"], surge: ["english"], surprise: ["english", "french"], surround: ["english"], survey: ["english"], suspect: ["english", "french"], sustain: ["english"], swallow: ["english"], swamp: ["english"], swap: ["english"], swarm: ["english"], swear: ["english"], sweet: ["english"], swift: ["english"], swim: ["english"], swing: ["english"], switch: ["english"], sword: ["english"], symbol: ["english"], symptom: ["english"], syrup: ["english"], system: ["english"], table: ["english"], tackle: ["english"], tag: ["english"], tail: ["english"], talent: ["english", "french"], talk: ["english"], tank: ["english"], tape: ["english"], target: ["english"], task: ["english"], taste: ["english"], tattoo: ["english"], taxi: ["english"], teach: ["english"], team: ["english"], tell: ["english"], ten: ["english"], tenant: ["english"], tennis: ["english"], tent: ["english"], term: ["english"], test: ["english"], text: ["english"], thank: ["english"], that: ["english"], theme: ["english"], then: ["english"], theory: ["english"], there: ["english"], they: ["english"], thing: ["english"], this: ["english"], thought: ["english"], three: ["english"], thrive: ["english"], throw: ["english"], thumb: ["english"], thunder: ["english"], ticket: ["english"], tide: ["english"], tiger: ["english"], tilt: ["english"], timber: ["english"], time: ["english"], tiny: ["english"], tip: ["english"], tired: ["english"], tissue: ["english"], title: ["english"], toast: ["english"], tobacco: ["english"], today: ["english"], toddler: ["english"], toe: ["english"], together: ["english"], toilet: ["english"], token: ["english"], tomato: ["english"], tomorrow: ["english"], tone: ["english"], tongue: ["english"], tonight: ["english"], tool: ["english"], tooth: ["english"], top: ["english"], topic: ["english"], topple: ["english"], torch: ["english"], tornado: ["english"], tortoise: ["english"], toss: ["english"], total: ["english"], tourist: ["english"], toward: ["english"], tower: ["english"], town: ["english"], toy: ["english"], track: ["english"], trade: ["english"], traffic: ["english"], tragic: ["english"], train: ["english", "french"], transfer: ["english", "turkish"], trap: ["english"], trash: ["english"], travel: ["english"], tray: ["english"], treat: ["english"], tree: ["english"], trend: ["english"], trial: ["english"], tribe: ["english"], trick: ["english"], trigger: ["english"], trim: ["english"], trip: ["english"], trophy: ["english"], trouble: ["english"], truck: ["english"], true: ["english"], truly: ["english"], trumpet: ["english"], trust: ["english"], truth: ["english"], try: ["english"], tube: ["english"], tuition: ["english"], tumble: ["english"], tuna: ["english"], tunnel: ["english", "french"], turkey: ["english"], turn: ["english"], turtle: ["english"], twelve: ["english"], twenty: ["english"], twice: ["english"], twin: ["english"], twist: ["english"], two: ["english"], type: ["english"], typical: ["english"], ugly: ["english"], umbrella: ["english"], unable: ["english"], unaware: ["english"], uncle: ["english"], uncover: ["english"], under: ["english"], undo: ["english"], unfair: ["english"], unfold: ["english"], unhappy: ["english"], uniform: ["english"], unique: ["english", "french"], unit: ["english"], universe: ["english"], unknown: ["english"], unlock: ["english"], until: ["english"], unusual: ["english"], unveil: ["english"], update: ["english"], upgrade: ["english"], uphold: ["english"], upon: ["english"], upper: ["english"], upset: ["english"], urban: ["english"], urge: ["english"], usage: ["english", "french"], use: ["english"], used: ["english"], useful: ["english"], useless: ["english"], usual: ["english"], utility: ["english"], vacant: ["english"], vacuum: ["english"], vague: ["english", "french"], valid: ["english"], valley: ["english"], valve: ["english", "french"], van: ["english"], vanish: ["english"], vapor: ["english"], various: ["english"], vast: ["english"], vault: ["english"], vehicle: ["english"], velvet: ["english"], vendor: ["english"], venture: ["english"], venue: ["english"], verb: ["english"], verify: ["english"], version: ["english"], very: ["english"], vessel: ["english"], veteran: ["english"], viable: ["english"], vibrant: ["english"], vicious: ["english"], victory: ["english"], video: ["english"], view: ["english"], village: ["english", "french"], vintage: ["english"], violin: ["english"], virtual: ["english"], virus: ["english", "french"], visa: ["english"], visit: ["english"], visual: ["english"], vital: ["english", "french"], vivid: ["english"], vocal: ["english"], voice: ["english"], void: ["english"], volcano: ["english"], volume: ["english", "french"], vote: ["english"], voyage: ["english", "french"], wage: ["english"], wagon: ["english", "french"], wait: ["english"], walk: ["english"], wall: ["english"], walnut: ["english"], want: ["english"], warfare: ["english"], warm: ["english"], warrior: ["english"], wash: ["english"], wasp: ["english"], waste: ["english"], water: ["english"], wave: ["english"], way: ["english"], wealth: ["english"], weapon: ["english"], wear: ["english"], weasel: ["english"], weather: ["english"], web: ["english"], wedding: ["english"], weekend: ["english"], weird: ["english"], welcome: ["english"], west: ["english"], wet: ["english"], whale: ["english"], what: ["english"], wheat: ["english"], wheel: ["english"], when: ["english"], where: ["english"], whip: ["english"], whisper: ["english"], wide: ["english"], width: ["english"], wife: ["english"], wild: ["english"], will: ["english"], win: ["english"], window: ["english"], wine: ["english"], wing: ["english"], wink: ["english"], winner: ["english"], winter: ["english"], wire: ["english"], wisdom: ["english"], wise: ["english"], wish: ["english"], witness: ["english"], wolf: ["english"], woman: ["english"], wonder: ["english"], wood: ["english"], wool: ["english"], word: ["english"], work: ["english"], world: ["english"], worry: ["english"], worth: ["english"], wrap: ["english"], wreck: ["english"], wrestle: ["english"], wrist: ["english"], write: ["english"], wrong: ["english"], yard: ["english"], year: ["english"], yellow: ["english"], you: ["english"], young: ["english"], youth: ["english"], zebra: ["english"], zero: ["english"], zone: ["english"], zoo: ["english"], abaisser: ["french"], abdiquer: ["french"], abeille: ["french"], abolir: ["french"], aborder: ["french"], aboutir: ["french"], aboyer: ["french"], abrasif: ["french"], abreuver: ["french"], abriter: ["french"], abroger: ["french"], abrupt: ["french"], absence: ["french"], absolu: ["french"], absurde: ["french"], abusif: ["french"], abyssal: ["french"], acade\u0301mie: ["french"], acajou: ["french"], acarien: ["french"], accabler: ["french"], accepter: ["french"], acclamer: ["french"], accolade: ["french"], accroche: ["french"], accuser: ["french"], acerbe: ["french"], achat: ["french"], acheter: ["french"], aciduler: ["french"], acier: ["french"], acompte: ["french"], acque\u0301rir: ["french"], acronyme: ["french"], acteur: ["french"], actif: ["french"], actuel: ["french"], adepte: ["french"], ade\u0301quat: ["french"], adhe\u0301sif: ["french"], adjectif: ["french"], adjuger: ["french"], admettre: ["french"], admirer: ["french"], adopter: ["french"], adorer: ["french"], adoucir: ["french"], adresse: ["french"], adroit: ["french"], adulte: ["french"], adverbe: ["french"], ae\u0301rer: ["french"], ae\u0301ronef: ["french"], affaire: ["french"], affecter: ["french"], affiche: ["french"], affreux: ["french"], affubler: ["french"], agacer: ["french"], agencer: ["french"], agile: ["french"], agiter: ["french"], agrafer: ["french"], agre\u0301able: ["french"], agrume: ["french"], aider: ["french"], aiguille: ["french"], ailier: ["french"], aimable: ["french"], aisance: ["french"], ajouter: ["french"], ajuster: ["french"], alarmer: ["french"], alchimie: ["french"], alerte: ["french"], alge\u0300bre: ["french"], algue: ["french"], alie\u0301ner: ["french"], aliment: ["french"], alle\u0301ger: ["french"], alliage: ["french"], allouer: ["french"], allumer: ["french"], alourdir: ["french"], alpaga: ["french"], altesse: ["french"], alve\u0301ole: ["french"], ambigu: ["french"], ambre: ["french"], ame\u0301nager: ["french"], amertume: ["french"], amidon: ["french"], amiral: ["french"], amorcer: ["french"], amour: ["french"], amovible: ["french"], amphibie: ["french"], ampleur: ["french"], amusant: ["french"], analyse: ["french"], anaphore: ["french"], anarchie: ["french"], anatomie: ["french"], ancien: ["french"], ane\u0301antir: ["french"], angoisse: ["french"], anguleux: ["french"], annexer: ["french"], annonce: ["french"], annuel: ["french"], anodin: ["french"], anomalie: ["french"], anonyme: ["french"], anormal: ["french"], antenne: ["french"], antidote: ["french"], anxieux: ["french"], apaiser: ["french"], ape\u0301ritif: ["french"], aplanir: ["french"], apologie: ["french"], appareil: ["french"], appeler: ["french"], apporter: ["french"], appuyer: ["french"], aquarium: ["french"], aqueduc: ["french"], arbitre: ["french"], arbuste: ["french"], ardeur: ["french"], ardoise: ["french"], argent: ["french"], arlequin: ["french"], armature: ["french"], armement: ["french"], armoire: ["french"], armure: ["french"], arpenter: ["french"], arracher: ["french"], arriver: ["french"], arroser: ["french"], arsenic: ["french"], arte\u0301riel: ["french"], article: ["french"], asphalte: ["french"], aspirer: ["french"], assaut: ["french"], asservir: ["french"], assiette: ["french"], associer: ["french"], assurer: ["french"], asticot: ["french"], astre: ["french"], astuce: ["french"], atelier: ["french"], atome: ["french"], atrium: ["french"], atroce: ["french"], attaque: ["french"], attentif: ["french"], attirer: ["french"], attraper: ["french"], aubaine: ["french"], auberge: ["french"], audace: ["french"], audible: ["french"], augurer: ["french"], aurore: ["french"], automne: ["french"], autruche: ["french"], avaler: ["french"], avancer: ["french"], avarice: ["french"], avenir: ["french"], averse: ["french"], aveugle: ["french"], aviateur: ["french"], avide: ["french"], avion: ["french"], aviser: ["french"], avoine: ["french"], avouer: ["french"], avril: ["french"], axial: ["french"], axiome: ["french"], bafouer: ["french"], bagage: ["french"], baguette: ["french"], baignade: ["french"], balancer: ["french"], balcon: ["french"], baleine: ["french"], balisage: ["french"], bambin: ["french"], bancaire: ["french"], bandage: ["french"], banlieue: ["french"], bannie\u0300re: ["french"], banquier: ["french"], barbier: ["french"], baril: ["french"], baron: ["french"], barque: ["french"], barrage: ["french"], bassin: ["french"], bastion: ["french"], bataille: ["french"], bateau: ["french"], batterie: ["french"], baudrier: ["french"], bavarder: ["french"], belette: ["french"], be\u0301lier: ["french"], belote: ["french"], be\u0301ne\u0301fice: ["french"], berceau: ["french"], berger: ["french"], berline: ["french"], bermuda: ["french", "turkish"], besace: ["french"], besogne: ["french"], be\u0301tail: ["french"], beurre: ["french"], biberon: ["french"], bidule: ["french"], bijou: ["french"], bilan: ["french"], bilingue: ["french"], billard: ["french"], binaire: ["french"], biologie: ["french"], biopsie: ["french"], biotype: ["french"], biscuit: ["french"], bison: ["french"], bistouri: ["french"], bitume: ["french"], bizarre: ["french"], blafard: ["french"], blague: ["french"], blanchir: ["french"], blessant: ["french"], blinder: ["french"], blond: ["french"], bloquer: ["french"], blouson: ["french"], bobard: ["french"], bobine: ["french"], boire: ["french"], boiser: ["french"], bolide: ["french"], bonbon: ["french"], bondir: ["french"], bonheur: ["french"], bonifier: ["french"], bordure: ["french"], borne: ["french"], botte: ["french"], boucle: ["french"], boueux: ["french"], bougie: ["french"], boulon: ["french"], bouquin: ["french"], bourse: ["french"], boussole: ["french"], boutique: ["french"], boxeur: ["french"], branche: ["french"], brasier: ["french"], brebis: ["french"], bre\u0300che: ["french"], breuvage: ["french"], bricoler: ["french"], brigade: ["french"], brillant: ["french"], brioche: ["french"], brique: ["french"], brochure: ["french"], broder: ["french"], bronzer: ["french"], brousse: ["french"], broyeur: ["french"], brume: ["french"], brusque: ["french"], brutal: ["french"], bruyant: ["french"], buffle: ["french"], buisson: ["french"], bulletin: ["french"], bureau: ["french"], burin: ["french"], bustier: ["french"], butiner: ["french"], butoir: ["french"], buvable: ["french"], buvette: ["french"], cabanon: ["french"], cabine: ["french"], cachette: ["french"], cadeau: ["french"], cadre: ["french"], cafe\u0301ine: ["french"], caillou: ["french"], caisson: ["french"], calculer: ["french"], calepin: ["french"], calibre: ["french"], calmer: ["french"], calomnie: ["french"], calvaire: ["french"], camarade: ["french"], came\u0301ra: ["french"], camion: ["french"], campagne: ["french"], caneton: ["french"], canon: ["french"], cantine: ["french"], canular: ["french"], caporal: ["french"], caprice: ["french"], capsule: ["french"], capter: ["french"], capuche: ["french"], carabine: ["french"], carbone: ["french"], caresser: ["french"], caribou: ["french"], carnage: ["french"], carotte: ["french"], carreau: ["french"], carton: ["french"], cascade: ["french"], casier: ["french"], casque: ["french"], cassure: ["french"], causer: ["french"], cavalier: ["french"], caverne: ["french"], caviar: ["french"], ce\u0301dille: ["french"], ceinture: ["french"], ce\u0301leste: ["french"], cellule: ["french"], cendrier: ["french"], censurer: ["french"], central: ["french"], cercle: ["french"], ce\u0301re\u0301bral: ["french"], cerise: ["french"], cerner: ["french"], cerveau: ["french"], cesser: ["french"], chagrin: ["french"], chaise: ["french"], chaleur: ["french"], chambre: ["french"], chance: ["french"], chapitre: ["french"], charbon: ["french"], chasseur: ["french"], chaton: ["french"], chausson: ["french"], chavirer: ["french"], chemise: ["french"], chenille: ["french"], che\u0301quier: ["french"], chercher: ["french"], cheval: ["french"], chien: ["french"], chiffre: ["french"], chignon: ["french"], chime\u0300re: ["french"], chiot: ["french"], chlorure: ["french"], chocolat: ["french"], choisir: ["french"], chose: ["french"], chouette: ["french"], chrome: ["french"], chute: ["french"], cigare: ["french"], cigogne: ["french"], cimenter: ["french"], cine\u0301ma: ["french"], cintrer: ["french"], circuler: ["french"], cirer: ["french"], cirque: ["french"], citerne: ["french"], citoyen: ["french"], citron: ["french"], clairon: ["french"], clameur: ["french"], claquer: ["french"], classe: ["french"], clavier: ["french"], cligner: ["french"], climat: ["french"], clivage: ["french"], cloche: ["french"], clonage: ["french"], cloporte: ["french"], cobalt: ["french"], cobra: ["french"], cocasse: ["french"], cocotier: ["french"], coder: ["french"], codifier: ["french"], coffre: ["french"], cogner: ["french"], cohe\u0301sion: ["french"], coiffer: ["french"], coincer: ["french"], cole\u0300re: ["french"], colibri: ["french"], colline: ["french"], colmater: ["french"], colonel: ["french"], combat: ["french"], come\u0301die: ["french"], commande: ["french"], compact: ["french"], conduire: ["french"], confier: ["french"], congeler: ["french"], connoter: ["french"], consonne: ["french"], contact: ["french"], convexe: ["french"], copain: ["french"], copie: ["french"], corail: ["french"], corbeau: ["french"], cordage: ["french"], corniche: ["french"], corpus: ["french"], corte\u0300ge: ["french"], cosmique: ["french"], costume: ["french"], coton: ["french"], coude: ["french"], coupure: ["french"], courage: ["french"], couteau: ["french"], couvrir: ["french"], crabe: ["french"], crainte: ["french"], cravate: ["french"], crayon: ["french"], cre\u0301ature: ["french"], cre\u0301diter: ["french"], cre\u0301meux: ["french"], creuser: ["french"], crevette: ["french"], cribler: ["french"], crier: ["french"], cristal: ["french"], crite\u0300re: ["french"], croire: ["french"], croquer: ["french"], crotale: ["french"], crypter: ["french"], cubique: ["french"], cueillir: ["french"], cuille\u0300re: ["french"], cuisine: ["french"], cuivre: ["french"], culminer: ["french"], cultiver: ["french"], cumuler: ["french"], cupide: ["french"], curatif: ["french"], curseur: ["french"], cyanure: ["french"], cylindre: ["french"], cynique: ["french"], daigner: ["french"], damier: ["french"], danseur: ["french"], dauphin: ["french"], de\u0301battre: ["french"], de\u0301biter: ["french"], de\u0301border: ["french"], de\u0301brider: ["french"], de\u0301butant: ["french"], de\u0301caler: ["french"], de\u0301cembre: ["french"], de\u0301chirer: ["french"], de\u0301cider: ["french"], de\u0301clarer: ["french"], de\u0301corer: ["french"], de\u0301crire: ["french"], de\u0301cupler: ["french"], de\u0301dale: ["french"], de\u0301ductif: ["french"], de\u0301esse: ["french"], de\u0301fensif: ["french"], de\u0301filer: ["french"], de\u0301frayer: ["french"], de\u0301gager: ["french"], de\u0301givrer: ["french"], de\u0301glutir: ["french"], de\u0301grafer: ["french"], de\u0301jeuner: ["french"], de\u0301lice: ["french"], de\u0301loger: ["french"], demander: ["french"], demeurer: ["french"], de\u0301molir: ["french"], de\u0301nicher: ["french"], de\u0301nouer: ["french"], dentelle: ["french"], de\u0301nuder: ["french"], de\u0301part: ["french"], de\u0301penser: ["french"], de\u0301phaser: ["french"], de\u0301placer: ["french"], de\u0301poser: ["french"], de\u0301ranger: ["french"], de\u0301rober: ["french"], de\u0301sastre: ["french"], descente: ["french"], de\u0301sert: ["french"], de\u0301signer: ["french"], de\u0301sobe\u0301ir: ["french"], dessiner: ["french"], destrier: ["french"], de\u0301tacher: ["french"], de\u0301tester: ["french"], de\u0301tourer: ["french"], de\u0301tresse: ["french"], devancer: ["french"], devenir: ["french"], deviner: ["french"], devoir: ["french"], diable: ["french"], dialogue: ["french"], diamant: ["french"], dicter: ["french"], diffe\u0301rer: ["french"], dige\u0301rer: ["french"], digne: ["french"], diluer: ["french"], dimanche: ["french"], diminuer: ["french"], dioxyde: ["french"], directif: ["french"], diriger: ["french"], discuter: ["french"], disposer: ["french"], dissiper: ["french"], divertir: ["french"], diviser: ["french"], docile: ["french"], docteur: ["french"], dogme: ["french"], doigt: ["french"], domaine: ["french"], domicile: ["french"], dompter: ["french"], donateur: ["french"], donjon: ["french"], donner: ["french"], dopamine: ["french"], dortoir: ["french"], dorure: ["french"], dosage: ["french"], doseur: ["french"], dossier: ["french"], dotation: ["french"], douanier: ["french"], douceur: ["french"], douter: ["french"], doyen: ["french"], draper: ["french"], dresser: ["french"], dribbler: ["french"], droiture: ["french"], duperie: ["french"], duplexe: ["french"], durable: ["french"], durcir: ["french"], dynastie: ["french"], e\u0301blouir: ["french"], e\u0301carter: ["french"], e\u0301charpe: ["french"], e\u0301chelle: ["french"], e\u0301clairer: ["french"], e\u0301clipse: ["french"], e\u0301clore: ["french"], e\u0301cluse: ["french"], e\u0301cole: ["french"], e\u0301conomie: ["french"], e\u0301corce: ["french"], e\u0301couter: ["french"], e\u0301craser: ["french"], e\u0301cre\u0301mer: ["french"], e\u0301crivain: ["french"], e\u0301crou: ["french"], e\u0301cume: ["french"], e\u0301cureuil: ["french"], e\u0301difier: ["french"], e\u0301duquer: ["french"], effacer: ["french"], effectif: ["french"], effigie: ["french"], effrayer: ["french"], effusion: ["french"], e\u0301galiser: ["french"], e\u0301garer: ["french"], e\u0301jecter: ["french"], e\u0301laborer: ["french"], e\u0301largir: ["french"], e\u0301lectron: ["french"], e\u0301le\u0301gant: ["french"], e\u0301le\u0301phant: ["french"], e\u0301le\u0300ve: ["french"], e\u0301ligible: ["french"], e\u0301litisme: ["french"], e\u0301loge: ["french"], e\u0301lucider: ["french"], e\u0301luder: ["french"], emballer: ["french"], embellir: ["french"], embryon: ["french"], e\u0301meraude: ["french"], e\u0301mission: ["french"], emmener: ["french"], e\u0301motion: ["french"], e\u0301mouvoir: ["french"], empereur: ["french"], employer: ["french"], emporter: ["french"], emprise: ["french"], e\u0301mulsion: ["french"], encadrer: ["french"], enche\u0300re: ["french"], enclave: ["french"], encoche: ["french"], endiguer: ["french"], endosser: ["french"], endroit: ["french"], enduire: ["french"], e\u0301nergie: ["french"], enfance: ["french"], enfermer: ["french"], enfouir: ["french"], engager: ["french"], engin: ["french", "turkish"], englober: ["french"], e\u0301nigme: ["french"], enjamber: ["french"], enjeu: ["french"], enlever: ["french"], ennemi: ["french"], ennuyeux: ["french"], enrichir: ["french"], enrobage: ["french"], enseigne: ["french"], entasser: ["french"], entendre: ["french"], entier: ["french"], entourer: ["french"], entraver: ["french"], e\u0301nume\u0301rer: ["french"], envahir: ["french"], enviable: ["french"], envoyer: ["french"], enzyme: ["french"], e\u0301olien: ["french"], e\u0301paissir: ["french"], e\u0301pargne: ["french"], e\u0301patant: ["french"], e\u0301paule: ["french"], e\u0301picerie: ["french"], e\u0301pide\u0301mie: ["french"], e\u0301pier: ["french"], e\u0301pilogue: ["french"], e\u0301pine: ["french"], e\u0301pisode: ["french"], e\u0301pitaphe: ["french"], e\u0301poque: ["french"], e\u0301preuve: ["french"], e\u0301prouver: ["french"], e\u0301puisant: ["french"], e\u0301querre: ["french"], e\u0301quipe: ["french"], e\u0301riger: ["french"], e\u0301rosion: ["french"], erreur: ["french"], e\u0301ruption: ["french"], escalier: ["french"], espadon: ["french"], espe\u0300ce: ["french"], espie\u0300gle: ["french"], espoir: ["french"], esprit: ["french"], esquiver: ["french"], essayer: ["french"], essieu: ["french"], essorer: ["french"], estime: ["french"], estomac: ["french"], estrade: ["french"], e\u0301tage\u0300re: ["french"], e\u0301taler: ["french"], e\u0301tanche: ["french"], e\u0301tatique: ["french"], e\u0301teindre: ["french"], e\u0301tendoir: ["french"], e\u0301ternel: ["french"], e\u0301thanol: ["french"], e\u0301thique: ["french"], ethnie: ["french"], e\u0301tirer: ["french"], e\u0301toffer: ["french"], e\u0301toile: ["french"], e\u0301tonnant: ["french"], e\u0301tourdir: ["french"], e\u0301trange: ["french"], e\u0301troit: ["french"], e\u0301tude: ["french"], euphorie: ["french"], e\u0301valuer: ["french"], e\u0301vasion: ["french"], e\u0301ventail: ["french"], e\u0301vidence: ["french"], e\u0301viter: ["french"], e\u0301volutif: ["french"], e\u0301voquer: ["french"], exage\u0301rer: ["french"], exaucer: ["french"], exceller: ["french"], excitant: ["french"], exclusif: ["french"], exe\u0301cuter: ["french"], exemple: ["french"], exercer: ["french"], exhaler: ["french"], exhorter: ["french"], exigence: ["french"], exiler: ["french"], exister: ["french"], exotique: ["french"], expe\u0301dier: ["french"], explorer: ["french"], exposer: ["french"], exprimer: ["french"], exquis: ["french"], extensif: ["french"], extraire: ["french"], exulter: ["french"], fable: ["french"], fabuleux: ["french"], facette: ["french"], facile: ["french"], facture: ["french"], faiblir: ["french"], falaise: ["french"], fameux: ["french"], famille: ["french"], farceur: ["french"], farfelu: ["french"], farine: ["french"], farouche: ["french"], fasciner: ["french"], faucon: ["french"], fautif: ["french"], faveur: ["french"], favori: ["french", "turkish"], fe\u0301brile: ["french"], fe\u0301conder: ["french"], fe\u0301de\u0301rer: ["french"], fe\u0301lin: ["french"], femme: ["french"], fe\u0301mur: ["french"], fendoir: ["french"], fe\u0301odal: ["french"], fermer: ["french"], fe\u0301roce: ["french"], ferveur: ["french"], feuille: ["french"], feutre: ["french"], fe\u0301vrier: ["french"], fiasco: ["french"], ficeler: ["french"], fictif: ["french"], fide\u0300le: ["french"], filature: ["french"], filetage: ["french"], filie\u0300re: ["french"], filleul: ["french"], filmer: ["french"], filou: ["french"], filtrer: ["french"], financer: ["french"], finir: ["french"], fiole: ["french"], firme: ["french"], fissure: ["french"], fixer: ["french"], flairer: ["french"], flamme: ["french"], flasque: ["french"], flatteur: ["french"], fle\u0301au: ["french"], fle\u0300che: ["french"], fleur: ["french"], flexion: ["french"], flocon: ["french"], flore: ["french"], fluctuer: ["french"], fluide: ["french"], fluvial: ["french"], folie: ["french"], fonderie: ["french"], fongible: ["french"], fontaine: ["french"], forcer: ["french"], forgeron: ["french"], formuler: ["french"], fossile: ["french"], foudre: ["french"], fouge\u0300re: ["french"], fouiller: ["french"], foulure: ["french"], fourmi: ["french"], fraise: ["french"], franchir: ["french"], frapper: ["french"], frayeur: ["french"], fre\u0301gate: ["french"], freiner: ["french"], frelon: ["french"], fre\u0301mir: ["french"], fre\u0301ne\u0301sie: ["french"], fre\u0300re: ["french"], friable: ["french"], friction: ["french"], frisson: ["french"], frivole: ["french"], froid: ["french"], fromage: ["french"], frontal: ["french"], frotter: ["french"], fugitif: ["french"], fuite: ["french"], fureur: ["french"], furieux: ["french"], furtif: ["french"], fusion: ["french"], futur: ["french"], gagner: ["french"], galaxie: ["french"], galerie: ["french"], gambader: ["french"], garantir: ["french"], gardien: ["french"], garnir: ["french"], garrigue: ["french"], gazelle: ["french"], gazon: ["french"], ge\u0301ant: ["french"], ge\u0301latine: ["french"], ge\u0301lule: ["french"], gendarme: ["french"], ge\u0301ne\u0301ral: ["french"], ge\u0301nie: ["french"], genou: ["french"], gentil: ["french"], ge\u0301ologie: ["french"], ge\u0301ome\u0300tre: ["french"], ge\u0301ranium: ["french"], germe: ["french"], gestuel: ["french"], geyser: ["french"], gibier: ["french"], gicler: ["french"], girafe: ["french"], givre: ["french"], glace: ["french"], glaive: ["french"], glisser: ["french"], gloire: ["french"], glorieux: ["french"], golfeur: ["french"], gomme: ["french"], gonfler: ["french"], gorge: ["french"], gorille: ["french"], goudron: ["french"], gouffre: ["french"], goulot: ["french"], goupille: ["french"], gourmand: ["french"], goutte: ["french"], graduel: ["french"], graffiti: ["french"], graine: ["french"], grand: ["french"], grappin: ["french"], gratuit: ["french"], gravir: ["french"], grenat: ["french"], griffure: ["french"], griller: ["french"], grimper: ["french"], grogner: ["french"], gronder: ["french"], grotte: ["french"], groupe: ["french"], gruger: ["french"], grutier: ["french"], gruye\u0300re: ["french"], gue\u0301pard: ["french"], guerrier: ["french"], guimauve: ["french"], guitare: ["french"], gustatif: ["french"], gymnaste: ["french"], gyrostat: ["french"], habitude: ["french"], hachoir: ["french"], halte: ["french"], hameau: ["french"], hangar: ["french", "turkish"], hanneton: ["french"], haricot: ["french"], harmonie: ["french"], harpon: ["french"], hasard: ["french"], he\u0301lium: ["french"], he\u0301matome: ["french"], herbe: ["french"], he\u0301risson: ["french"], hermine: ["french"], he\u0301ron: ["french"], he\u0301siter: ["french"], heureux: ["french"], hiberner: ["french"], hibou: ["french"], hilarant: ["french"], histoire: ["french"], hiver: ["french"], homard: ["french"], hommage: ["french"], homoge\u0300ne: ["french"], honneur: ["french"], honorer: ["french"], honteux: ["french"], horde: ["french"], horizon: ["french"], horloge: ["french"], hormone: ["french"], horrible: ["french"], houleux: ["french"], housse: ["french"], hublot: ["french"], huileux: ["french"], humain: ["french"], humide: ["french"], humour: ["french"], hurler: ["french"], hydromel: ["french"], hygie\u0300ne: ["french"], hymne: ["french"], hypnose: ["french"], idylle: ["french"], ignorer: ["french"], iguane: ["french"], illicite: ["french"], illusion: ["french"], imbiber: ["french"], imiter: ["french"], immobile: ["french"], immuable: ["french"], impe\u0301rial: ["french"], implorer: ["french"], imposer: ["french"], imprimer: ["french"], imputer: ["french"], incarner: ["french"], incendie: ["french"], incident: ["french"], incliner: ["french"], incolore: ["french"], indexer: ["french"], indice: ["french"], inductif: ["french"], ine\u0301dit: ["french"], ineptie: ["french"], inexact: ["french"], infini: ["french"], infliger: ["french"], informer: ["french"], infusion: ["french"], inge\u0301rer: ["french"], inhaler: ["french"], inhiber: ["french"], injecter: ["french"], injure: ["french"], inoculer: ["french"], inonder: ["french"], inscrire: ["french"], insecte: ["french"], insigne: ["french"], insolite: ["french"], inspirer: ["french"], instinct: ["french"], insulter: ["french"], intense: ["french"], intime: ["french"], intrigue: ["french"], intuitif: ["french"], inutile: ["french"], invasion: ["french"], inventer: ["french"], inviter: ["french"], invoquer: ["french"], ironique: ["french"], irradier: ["french"], irre\u0301el: ["french"], irriter: ["french"], isoler: ["french"], ivoire: ["french"], ivresse: ["french"], jaillir: ["french"], jambe: ["french"], janvier: ["french"], jardin: ["french"], jauger: ["french"], jaune: ["french"], javelot: ["french"], jetable: ["french"], jeton: ["french"], jeudi: ["french"], jeunesse: ["french"], joindre: ["french"], joncher: ["french"], jongler: ["french"], joueur: ["french"], jouissif: ["french"], journal: ["french"], jovial: ["french"], joyau: ["french"], joyeux: ["french"], jubiler: ["french"], jugement: ["french"], jupon: ["french"], juriste: ["french"], justice: ["french"], juteux: ["french"], juve\u0301nile: ["french"], kayak: ["french"], kimono: ["french"], kiosque: ["french"], labial: ["french"], labourer: ["french"], lace\u0301rer: ["french"], lactose: ["french"], lagune: ["french"], laine: ["french"], laisser: ["french"], laitier: ["french"], lambeau: ["french"], lamelle: ["french"], lampe: ["french"], lanceur: ["french"], langage: ["french"], lanterne: ["french"], lapin: ["french"], largeur: ["french"], larme: ["french"], laurier: ["french"], lavabo: ["french"], lavoir: ["french"], le\u0301gal: ["french"], le\u0301ger: ["french"], le\u0301gume: ["french"], lessive: ["french"], lettre: ["french"], levier: ["french"], lexique: ["french"], le\u0301zard: ["french"], liasse: ["french"], libe\u0301rer: ["french"], libre: ["french"], licence: ["french"], licorne: ["french"], lie\u0300ge: ["french"], lie\u0300vre: ["french"], ligature: ["french"], ligoter: ["french"], ligue: ["french"], limer: ["french"], limite: ["french"], limonade: ["french"], limpide: ["french"], line\u0301aire: ["french"], lingot: ["french"], lionceau: ["french"], liquide: ["french"], lisie\u0300re: ["french"], lister: ["french"], lithium: ["french"], litige: ["french"], littoral: ["french"], livreur: ["french"], logique: ["french"], lointain: ["french"], loisir: ["french"], lombric: ["french"], loterie: ["french"], louer: ["french"], lourd: ["french"], loutre: ["french"], louve: ["french"], lubie: ["french"], lucide: ["french"], lucratif: ["french"], lueur: ["french"], lugubre: ["french"], luisant: ["french"], lumie\u0300re: ["french"], lunaire: ["french"], lundi: ["french"], luron: ["french"], lutter: ["french"], luxueux: ["french"], magasin: ["french"], magenta: ["french"], magique: ["french"], maigre: ["french"], maillon: ["french"], maintien: ["french"], mairie: ["french"], maison: ["french"], majorer: ["french"], malaxer: ["french"], male\u0301fice: ["french"], malheur: ["french"], malice: ["french"], mallette: ["french"], mammouth: ["french"], mandater: ["french"], maniable: ["french"], manquant: ["french"], manteau: ["french"], manuel: ["french"], marathon: ["french"], marbre: ["french"], marchand: ["french"], mardi: ["french"], maritime: ["french"], marqueur: ["french"], marron: ["french"], marteler: ["french"], mascotte: ["french"], massif: ["french"], mate\u0301riel: ["french"], matie\u0300re: ["french"], matraque: ["french"], maudire: ["french"], maussade: ["french"], mauve: ["french"], maximal: ["french"], me\u0301chant: ["french"], me\u0301connu: ["french"], me\u0301daille: ["french"], me\u0301decin: ["french"], me\u0301diter: ["french"], me\u0301duse: ["french"], meilleur: ["french"], me\u0301lange: ["french"], me\u0301lodie: ["french"], membre: ["french"], me\u0301moire: ["french"], menacer: ["french"], mener: ["french"], menhir: ["french"], mensonge: ["french"], mentor: ["french"], mercredi: ["french"], me\u0301rite: ["french"], merle: ["french"], messager: ["french"], mesure: ["french"], me\u0301tal: ["french"], me\u0301te\u0301ore: ["french"], me\u0301thode: ["french"], me\u0301tier: ["french"], meuble: ["french"], miauler: ["french"], microbe: ["french"], miette: ["french"], mignon: ["french"], migrer: ["french"], milieu: ["french"], mimique: ["french"], mince: ["french"], mine\u0301ral: ["french"], minimal: ["french"], minorer: ["french"], miroiter: ["french"], missile: ["french"], mixte: ["french"], moderne: ["french"], moelleux: ["french"], mondial: ["french"], moniteur: ["french"], monnaie: ["french"], monotone: ["french"], monstre: ["french"], montagne: ["french"], monument: ["french"], moqueur: ["french"], morceau: ["french"], morsure: ["french"], mortier: ["french"], moteur: ["french"], motif: ["french"], mouche: ["french"], moufle: ["french"], moulin: ["french"], mousson: ["french"], mouton: ["french"], mouvant: ["french"], multiple: ["french"], munition: ["french"], muraille: ["french"], mure\u0300ne: ["french"], murmure: ["french"], muse\u0301um: ["french"], musicien: ["french"], mutation: ["french"], muter: ["french"], mutuel: ["french"], myriade: ["french"], myrtille: ["french"], myste\u0300re: ["french"], mythique: ["french"], nageur: ["french"], nappe: ["french"], narquois: ["french"], narrer: ["french"], natation: ["french"], naufrage: ["french"], nautique: ["french"], navire: ["french"], ne\u0301buleux: ["french"], nectar: ["french"], ne\u0301faste: ["french"], ne\u0301gation: ["french"], ne\u0301gliger: ["french"], ne\u0301gocier: ["french"], neige: ["french"], nerveux: ["french"], nettoyer: ["french"], neurone: ["french"], neutron: ["french"], neveu: ["french"], niche: ["french"], nickel: ["french"], nitrate: ["french"], niveau: ["french"], nocif: ["french"], nocturne: ["french"], noirceur: ["french"], noisette: ["french"], nomade: ["french"], nombreux: ["french"], nommer: ["french"], normatif: ["french"], notifier: ["french"], notoire: ["french"], nourrir: ["french"], nouveau: ["french"], novateur: ["french"], novembre: ["french"], novice: ["french"], nuage: ["french"], nuancer: ["french"], nuire: ["french"], nuisible: ["french"], nume\u0301ro: ["french"], nuptial: ["french"], nuque: ["french"], nutritif: ["french"], obe\u0301ir: ["french"], objectif: ["french"], obliger: ["french"], obscur: ["french"], observer: ["french"], obstacle: ["french"], obtenir: ["french"], obturer: ["french"], occasion: ["french"], occuper: ["french"], oce\u0301an: ["french"], octobre: ["french"], octroyer: ["french"], octupler: ["french"], oculaire: ["french"], odeur: ["french"], odorant: ["french"], offenser: ["french"], officier: ["french"], offrir: ["french"], ogive: ["french"], oiseau: ["french"], oisillon: ["french"], olfactif: ["french"], olivier: ["french"], ombrage: ["french"], omettre: ["french"], onctueux: ["french"], onduler: ["french"], one\u0301reux: ["french"], onirique: ["french"], opale: ["french"], opaque: ["french"], ope\u0301rer: ["french"], opportun: ["french"], opprimer: ["french"], opter: ["french"], optique: ["french"], orageux: ["french"], orbite: ["french"], ordonner: ["french"], oreille: ["french"], organe: ["french"], orgueil: ["french"], orifice: ["french"], ornement: ["french"], orque: ["french"], ortie: ["french"], osciller: ["french"], osmose: ["french"], ossature: ["french"], otarie: ["french"], ouragan: ["french"], ourson: ["french"], outil: ["french"], outrager: ["french"], ouvrage: ["french"], ovation: ["french"], oxyde: ["french"], oxyge\u0300ne: ["french"], paisible: ["french"], palmare\u0300s: ["french"], palourde: ["french"], palper: ["french"], panache: ["french"], pangolin: ["french"], paniquer: ["french"], panneau: ["french"], panorama: ["french"], pantalon: ["french"], papaye: ["french"], papier: ["french"], papoter: ["french"], papyrus: ["french"], paradoxe: ["french"], parcelle: ["french"], paresse: ["french"], parfumer: ["french"], parler: ["french"], parole: ["french"], parrain: ["french"], parsemer: ["french"], partager: ["french"], parure: ["french"], parvenir: ["french"], passion: ["french"], paste\u0300que: ["french"], paternel: ["french"], patience: ["french"], patron: ["french", "turkish"], pavillon: ["french"], pavoiser: ["french"], payer: ["french"], paysage: ["french"], peigne: ["french"], peintre: ["french"], pelage: ["french"], pe\u0301lican: ["french"], pelle: ["french"], pelouse: ["french"], peluche: ["french"], pendule: ["french"], pe\u0301ne\u0301trer: ["french"], pe\u0301nible: ["french"], pensif: ["french"], pe\u0301nurie: ["french"], pe\u0301pite: ["french"], pe\u0301plum: ["french"], perdrix: ["french"], perforer: ["french"], pe\u0301riode: ["french"], permuter: ["french"], perplexe: ["french"], persil: ["french"], perte: ["french"], peser: ["french"], pe\u0301tale: ["french"], petit: ["french"], pe\u0301trir: ["french"], peuple: ["french"], pharaon: ["french"], phobie: ["french"], phoque: ["french"], photon: ["french"], physique: ["french"], pictural: ["french"], pie\u0300ce: ["french"], pierre: ["french"], pieuvre: ["french"], pilote: ["french"], pinceau: ["french"], pipette: ["french"], piquer: ["french"], pirogue: ["french"], piscine: ["french"], piston: ["french"], pivoter: ["french"], pixel: ["french"], placard: ["french"], plafond: ["french"], plaisir: ["french"], planer: ["french"], plaque: ["french"], plastron: ["french"], plateau: ["french"], pleurer: ["french"], plexus: ["french"], pliage: ["french"], plomb: ["french"], plonger: ["french"], pluie: ["french"], plumage: ["french"], pochette: ["french"], poe\u0301sie: ["french"], poe\u0300te: ["french"], pointe: ["french"], poirier: ["french"], poisson: ["french"], poivre: ["french"], polaire: ["french"], policier: ["french"], pollen: ["french"], polygone: ["french"], pommade: ["french"], pompier: ["french"], ponctuel: ["french"], ponde\u0301rer: ["french"], poney: ["french"], portique: ["french"], posse\u0301der: ["french"], posture: ["french"], potager: ["french"], poteau: ["french"], potion: ["french"], pouce: ["french"], poulain: ["french"], poumon: ["french"], pourpre: ["french"], poussin: ["french"], pouvoir: ["french"], prairie: ["french"], pratique: ["french"], pre\u0301cieux: ["french"], pre\u0301dire: ["french"], pre\u0301fixe: ["french"], pre\u0301lude: ["french"], pre\u0301nom: ["french"], pre\u0301sence: ["french"], pre\u0301texte: ["french"], pre\u0301voir: ["french"], primitif: ["french"], prince: ["french"], priver: ["french"], proble\u0300me: ["french"], proce\u0301der: ["french"], prodige: ["french"], profond: ["french"], progre\u0300s: ["french"], proie: ["french"], projeter: ["french"], prologue: ["french"], promener: ["french"], propre: ["french"], prospe\u0300re: ["french"], prote\u0301ger: ["french"], prouesse: ["french"], proverbe: ["french"], prudence: ["french"], pruneau: ["french"], psychose: ["french"], puceron: ["french"], puiser: ["french"], pulpe: ["french"], pulsar: ["french"], punaise: ["french"], punitif: ["french"], pupitre: ["french"], purifier: ["french"], pyramide: ["french"], quasar: ["french"], querelle: ["french"], quie\u0301tude: ["french"], quitter: ["french"], quotient: ["french"], racine: ["french"], raconter: ["french"], radieux: ["french"], ragondin: ["french"], raideur: ["french"], raisin: ["french"], ralentir: ["french"], rallonge: ["french"], ramasser: ["french"], rapide: ["french"], rasage: ["french"], ratisser: ["french"], ravager: ["french"], ravin: ["french"], rayonner: ["french"], re\u0301actif: ["french"], re\u0301agir: ["french"], re\u0301aliser: ["french"], re\u0301animer: ["french"], recevoir: ["french"], re\u0301citer: ["french"], re\u0301clamer: ["french"], re\u0301colter: ["french"], recruter: ["french"], reculer: ["french"], recycler: ["french"], re\u0301diger: ["french"], redouter: ["french"], refaire: ["french"], re\u0301flexe: ["french"], re\u0301former: ["french"], refrain: ["french"], refuge: ["french"], re\u0301galien: ["french"], re\u0301gion: ["french"], re\u0301glage: ["french"], re\u0301gulier: ["french"], re\u0301ite\u0301rer: ["french"], rejeter: ["french"], rejouer: ["french"], relatif: ["french"], relever: ["french"], remarque: ["french"], reme\u0300de: ["french"], remise: ["french"], remonter: ["french"], remplir: ["french"], remuer: ["french"], renard: ["french"], renfort: ["french"], renifler: ["french"], renoncer: ["french"], rentrer: ["french"], renvoi: ["french"], replier: ["french"], reporter: ["french"], reprise: ["french"], reptile: ["french"], requin: ["french"], re\u0301serve: ["french"], re\u0301sineux: ["french"], re\u0301soudre: ["french"], respect: ["french"], rester: ["french"], re\u0301sultat: ["french"], re\u0301tablir: ["french"], retenir: ["french"], re\u0301ticule: ["french"], retomber: ["french"], retracer: ["french"], re\u0301union: ["french"], re\u0301ussir: ["french"], revanche: ["french"], revivre: ["french"], re\u0301volte: ["french"], re\u0301vulsif: ["french"], richesse: ["french"], rideau: ["french"], rieur: ["french"], rigide: ["french"], rigoler: ["french"], rincer: ["french"], riposter: ["french"], risible: ["french"], risque: ["french"], rituel: ["french"], rivie\u0300re: ["french"], rocheux: ["french"], rompre: ["french"], ronce: ["french"], rondin: ["french"], roseau: ["french"], rosier: ["french"], rotatif: ["french"], rotor: ["french"], rotule: ["french"], rouge: ["french"], rouille: ["french"], rouleau: ["french"], routine: ["french"], royaume: ["french"], ruban: ["french"], rubis: ["french"], ruche: ["french"], ruelle: ["french"], rugueux: ["french"], ruiner: ["french"], ruisseau: ["french"], ruser: ["french"], rustique: ["french"], rythme: ["french"], sabler: ["french"], saboter: ["french"], sabre: ["french"], sacoche: ["french"], safari: ["french"], sagesse: ["french"], saisir: ["french"], salade: ["french"], salive: ["french"], saluer: ["french"], samedi: ["french"], sanction: ["french"], sanglier: ["french"], sarcasme: ["french"], sardine: ["french"], saturer: ["french"], saugrenu: ["french"], saumon: ["french"], sauter: ["french"], sauvage: ["french"], savant: ["french"], savonner: ["french"], scalpel: ["french"], scandale: ["french"], sce\u0301le\u0301rat: ["french"], sce\u0301nario: ["french"], sceptre: ["french"], sche\u0301ma: ["french"], scinder: ["french"], score: ["french"], scrutin: ["french"], sculpter: ["french"], se\u0301ance: ["french"], se\u0301cable: ["french"], se\u0301cher: ["french"], secouer: ["french"], se\u0301cre\u0301ter: ["french"], se\u0301datif: ["french"], se\u0301duire: ["french"], seigneur: ["french"], se\u0301jour: ["french"], se\u0301lectif: ["french"], semaine: ["french"], sembler: ["french"], semence: ["french"], se\u0301minal: ["french"], se\u0301nateur: ["french"], sensible: ["french"], se\u0301parer: ["french"], se\u0301quence: ["french"], serein: ["french"], sergent: ["french"], se\u0301rieux: ["french"], serrure: ["french"], se\u0301rum: ["french"], se\u0301same: ["french"], se\u0301vir: ["french"], sevrage: ["french"], sextuple: ["french"], side\u0301ral: ["french"], sie\u0300cle: ["french"], sie\u0301ger: ["french"], siffler: ["french"], sigle: ["french"], signal: ["french"], silence: ["french"], silicium: ["french"], since\u0300re: ["french"], sinistre: ["french"], siphon: ["french"], sirop: ["french"], sismique: ["french"], situer: ["french"], skier: ["french"], socle: ["french"], sodium: ["french"], soigneux: ["french"], soldat: ["french"], soleil: ["french"], solitude: ["french"], soluble: ["french"], sombre: ["french"], sommeil: ["french"], somnoler: ["french"], sonde: ["french"], songeur: ["french"], sonnette: ["french"], sonore: ["french"], sorcier: ["french"], sortir: ["french"], sosie: ["french"], sottise: ["french"], soucieux: ["french"], soudure: ["french"], souffle: ["french"], soulever: ["french"], soupape: ["french"], soutirer: ["french"], souvenir: ["french"], spacieux: ["french"], spe\u0301cial: ["french"], sphe\u0300re: ["french"], spiral: ["french", "turkish"], station: ["french"], sternum: ["french"], stimulus: ["french"], stipuler: ["french"], strict: ["french"], studieux: ["french"], stupeur: ["french"], styliste: ["french"], sublime: ["french"], substrat: ["french"], subtil: ["french"], subvenir: ["french"], succe\u0300s: ["french"], sucre: ["french"], suffixe: ["french"], sugge\u0301rer: ["french"], suiveur: ["french"], sulfate: ["french"], superbe: ["french"], supplier: ["french"], suricate: ["french"], surmener: ["french"], sursaut: ["french"], survie: ["french"], syllabe: ["french"], symbole: ["french"], syme\u0301trie: ["french"], synapse: ["french"], syntaxe: ["french"], syste\u0300me: ["french"], tabac: ["french"], tablier: ["french"], tactile: ["french"], tailler: ["french"], talisman: ["french"], talonner: ["french"], tambour: ["french"], tamiser: ["french"], tangible: ["french"], tapis: ["french"], taquiner: ["french"], tarder: ["french"], tarif: ["french"], tartine: ["french"], tasse: ["french"], tatami: ["french"], tatouage: ["french"], taupe: ["french"], taureau: ["french"], taxer: ["french"], te\u0301moin: ["french"], temporel: ["french"], tenaille: ["french"], tendre: ["french"], teneur: ["french"], tenir: ["french"], tension: ["french"], terminer: ["french"], terne: ["french"], terrible: ["french"], te\u0301tine: ["french"], texte: ["french"], the\u0300me: ["french"], the\u0301orie: ["french"], the\u0301rapie: ["french"], thorax: ["french"], tibia: ["french"], tie\u0300de: ["french"], timide: ["french"], tirelire: ["french"], tiroir: ["french"], tissu: ["french"], titane: ["french"], titre: ["french"], tituber: ["french"], toboggan: ["french"], tole\u0301rant: ["french"], tomate: ["french"], tonique: ["french"], tonneau: ["french"], toponyme: ["french"], torche: ["french"], tordre: ["french"], tornade: ["french"], torpille: ["french"], torrent: ["french"], torse: ["french"], tortue: ["french"], totem: ["french"], toucher: ["french"], tournage: ["french"], tousser: ["french"], toxine: ["french"], traction: ["french"], trafic: ["french"], tragique: ["french"], trahir: ["french"], trancher: ["french"], travail: ["french"], tre\u0300fle: ["french"], tremper: ["french"], tre\u0301sor: ["french"], treuil: ["french"], triage: ["french"], tribunal: ["french"], tricoter: ["french"], trilogie: ["french"], triomphe: ["french"], tripler: ["french"], triturer: ["french"], trivial: ["french"], trombone: ["french"], tronc: ["french"], tropical: ["french"], troupeau: ["french"], tuile: ["french"], tulipe: ["french"], tumulte: ["french"], turbine: ["french"], tuteur: ["french"], tutoyer: ["french"], tuyau: ["french"], tympan: ["french"], typhon: ["french"], typique: ["french"], tyran: ["french"], ubuesque: ["french"], ultime: ["french"], ultrason: ["french"], unanime: ["french"], unifier: ["french"], union: ["french"], unitaire: ["french"], univers: ["french"], uranium: ["french"], urbain: ["french"], urticant: ["french"], usine: ["french"], usuel: ["french"], usure: ["french"], utile: ["french"], utopie: ["french"], vacarme: ["french"], vaccin: ["french"], vagabond: ["french"], vaillant: ["french"], vaincre: ["french"], vaisseau: ["french"], valable: ["french"], valise: ["french"], vallon: ["french"], vampire: ["french"], vanille: ["french"], vapeur: ["french"], varier: ["french"], vaseux: ["french"], vassal: ["french"], vaste: ["french"], vecteur: ["french"], vedette: ["french"], ve\u0301ge\u0301tal: ["french"], ve\u0301hicule: ["french"], veinard: ["french"], ve\u0301loce: ["french"], vendredi: ["french"], ve\u0301ne\u0301rer: ["french"], venger: ["french"], venimeux: ["french"], ventouse: ["french"], verdure: ["french"], ve\u0301rin: ["french"], vernir: ["french"], verrou: ["french"], verser: ["french"], vertu: ["french"], veston: ["french"], ve\u0301te\u0301ran: ["french"], ve\u0301tuste: ["french"], vexant: ["french"], vexer: ["french"], viaduc: ["french"], viande: ["french"], victoire: ["french"], vidange: ["french"], vide\u0301o: ["french"], vignette: ["french"], vigueur: ["french"], vilain: ["french"], vinaigre: ["french"], violon: ["french"], vipe\u0300re: ["french"], virement: ["french"], virtuose: ["french"], visage: ["french"], viseur: ["french"], vision: ["french"], visqueux: ["french"], visuel: ["french"], vitesse: ["french"], viticole: ["french"], vitrine: ["french"], vivace: ["french"], vivipare: ["french"], vocation: ["french"], voguer: ["french"], voile: ["french"], voisin: ["french"], voiture: ["french"], volaille: ["french"], volcan: ["french"], voltiger: ["french"], vorace: ["french"], vortex: ["french"], voter: ["french"], vouloir: ["french"], voyelle: ["french"], xe\u0301non: ["french"], yacht: ["french"], ze\u0300bre: ["french"], ze\u0301nith: ["french"], zeste: ["french"], zoologie: ["french"], abaco: ["italian"], abbaglio: ["italian"], abbinato: ["italian"], abete: ["italian"], abisso: ["italian"], abolire: ["italian"], abrasivo: ["italian"], abrogato: ["italian"], accadere: ["italian"], accenno: ["italian"], accusato: ["italian"], acetone: ["italian"], achille: ["italian"], acido: ["italian"], acqua: ["italian"], acre: ["italian"], acrilico: ["italian"], acrobata: ["italian"], acuto: ["italian"], adagio: ["italian"], addebito: ["italian"], addome: ["italian"], adeguato: ["italian"], aderire: ["italian"], adipe: ["italian"], adottare: ["italian"], adulare: ["italian"], affabile: ["italian"], affetto: ["italian"], affisso: ["italian"], affranto: ["italian"], aforisma: ["italian"], afoso: ["italian"], africano: ["italian"], agave: ["italian"], agente: ["italian"], agevole: ["italian"], aggancio: ["italian"], agire: ["italian"], agitare: ["italian"], agonismo: ["italian"], agricolo: ["italian"], agrumeto: ["italian"], aguzzo: ["italian"], alabarda: ["italian"], alato: ["italian"], albatro: ["italian"], alberato: ["italian"], albo: ["italian"], albume: ["italian"], alce: ["italian"], alcolico: ["italian"], alettone: ["italian"], alfa: ["italian"], algebra: ["italian"], aliante: ["italian"], alibi: ["italian"], alimento: ["italian"], allagato: ["italian"], allegro: ["italian"], allievo: ["italian"], allodola: ["italian"], allusivo: ["italian"], almeno: ["italian"], alogeno: ["italian"], alpaca: ["italian"], alpestre: ["italian"], altalena: ["italian"], alterno: ["italian"], alticcio: ["italian"], altrove: ["italian"], alunno: ["italian"], alveolo: ["italian"], alzare: ["italian"], amalgama: ["italian"], amanita: ["italian"], amarena: ["italian"], ambito: ["italian"], ambrato: ["italian"], ameba: ["italian"], america: ["italian"], ametista: ["italian"], amico: ["italian"], ammasso: ["italian"], ammenda: ["italian"], ammirare: ["italian"], ammonito: ["italian"], amore: ["italian"], ampio: ["italian"], ampliare: ["italian"], amuleto: ["italian"], anacardo: ["italian"], anagrafe: ["italian"], analista: ["italian"], anarchia: ["italian"], anatra: ["italian"], anca: ["italian"], ancella: ["italian"], ancora: ["italian"], andare: ["italian"], andrea: ["italian"], anello: ["italian"], angelo: ["italian"], angolare: ["italian"], angusto: ["italian"], anima: ["italian"], annegare: ["italian"], annidato: ["italian"], anno: ["italian"], annuncio: ["italian"], anonimo: ["italian"], anticipo: ["italian"], anzi: ["italian"], apatico: ["italian"], apertura: ["italian"], apode: ["italian"], apparire: ["italian"], appetito: ["italian"], appoggio: ["italian"], approdo: ["italian"], appunto: ["italian"], aprile: ["italian"], arabica: ["italian"], arachide: ["italian"], aragosta: ["italian"], araldica: ["italian"], arancio: ["italian"], aratura: ["italian"], arazzo: ["italian"], arbitro: ["italian"], archivio: ["italian"], ardito: ["italian"], arenile: ["italian"], argento: ["italian"], argine: ["italian"], arguto: ["italian"], aria: ["italian"], armonia: ["italian"], arnese: ["italian"], arredato: ["italian"], arringa: ["italian"], arrosto: ["italian"], arsenico: ["italian"], arso: ["italian"], artefice: ["italian"], arzillo: ["italian"], asciutto: ["italian"], ascolto: ["italian"], asepsi: ["italian"], asettico: ["italian"], asfalto: ["italian"], asino: ["italian"], asola: ["italian"], aspirato: ["italian"], aspro: ["italian"], assaggio: ["italian"], asse: ["italian"], assoluto: ["italian"], assurdo: ["italian"], asta: ["italian"], astenuto: ["italian"], astice: ["italian"], astratto: ["italian"], atavico: ["italian"], ateismo: ["italian"], atomico: ["italian"], atono: ["italian"], attesa: ["italian"], attivare: ["italian"], attorno: ["italian"], attrito: ["italian"], attuale: ["italian"], ausilio: ["italian"], austria: ["italian"], autista: ["italian"], autonomo: ["italian"], autunno: ["italian"], avanzato: ["italian"], avere: ["italian"], avvenire: ["italian"], avviso: ["italian"], avvolgere: ["italian"], azione: ["italian"], azoto: ["italian"], azzimo: ["italian"], azzurro: ["italian"], babele: ["italian"], baccano: ["italian"], bacino: ["italian"], baco: ["italian"], badessa: ["italian"], badilata: ["italian"], bagnato: ["italian"], baita: ["italian"], balcone: ["italian"], baldo: ["italian"], balena: ["italian"], ballata: ["italian"], balzano: ["italian"], bambino: ["italian"], bandire: ["italian"], baraonda: ["italian"], barbaro: ["italian"], barca: ["italian"], baritono: ["italian"], barlume: ["italian"], barocco: ["italian"], basilico: ["italian"], basso: ["italian"], batosta: ["italian"], battuto: ["italian"], baule: ["italian"], bava: ["italian"], bavosa: ["italian"], becco: ["italian"], beffa: ["italian"], belgio: ["italian"], belva: ["italian"], benda: ["italian"], benevole: ["italian"], benigno: ["italian"], benzina: ["italian"], bere: ["italian"], berlina: ["italian"], beta: ["italian"], bibita: ["italian"], bici: ["italian"], bidone: ["italian"], bifido: ["italian"], biga: ["italian"], bilancia: ["italian"], bimbo: ["italian"], binocolo: ["italian"], biologo: ["italian"], bipede: ["italian"], bipolare: ["italian"], birbante: ["italian"], birra: ["italian"], biscotto: ["italian"], bisesto: ["italian"], bisnonno: ["italian"], bisonte: ["italian"], bisturi: ["italian"], bizzarro: ["italian"], blando: ["italian"], blatta: ["italian"], bollito: ["italian"], bonifico: ["italian"], bordo: ["italian"], bosco: ["italian"], botanico: ["italian"], bottino: ["italian"], bozzolo: ["italian"], braccio: ["italian"], bradipo: ["italian"], brama: ["italian"], branca: ["italian"], bravura: ["italian"], bretella: ["italian"], brevetto: ["italian"], brezza: ["italian"], briglia: ["italian"], brillante: ["italian"], brindare: ["italian"], broccolo: ["italian"], brodo: ["italian"], bronzina: ["italian"], brullo: ["italian"], bruno: ["italian"], bubbone: ["italian"], buca: ["italian"], budino: ["italian"], buffone: ["italian"], buio: ["italian"], bulbo: ["italian"], buono: ["italian"], burlone: ["italian"], burrasca: ["italian"], bussola: ["italian"], busta: ["italian"], cadetto: ["italian"], caduco: ["italian"], calamaro: ["italian"], calcolo: ["italian"], calesse: ["italian"], calibro: ["italian"], calmo: ["italian"], caloria: ["italian"], cambusa: ["italian"], camerata: ["italian"], camicia: ["italian"], cammino: ["italian"], camola: ["italian"], campale: ["italian"], canapa: ["italian"], candela: ["italian"], cane: ["italian"], canino: ["italian"], canotto: ["italian"], cantina: ["italian"], capace: ["italian"], capello: ["italian"], capitolo: ["italian"], capogiro: ["italian"], cappero: ["italian"], capra: ["italian"], capsula: ["italian"], carapace: ["italian"], carcassa: ["italian"], cardo: ["italian"], carisma: ["italian"], carovana: ["italian"], carretto: ["italian"], cartolina: ["italian"], casaccio: ["italian"], cascata: ["italian"], caserma: ["italian"], caso: ["italian"], cassone: ["italian"], castello: ["italian"], casuale: ["italian"], catasta: ["italian"], catena: ["italian"], catrame: ["italian"], cauto: ["italian"], cavillo: ["italian"], cedibile: ["italian"], cedrata: ["italian"], cefalo: ["italian"], celebre: ["italian"], cellulare: ["italian"], cena: ["italian"], cenone: ["italian"], centesimo: ["italian"], ceramica: ["italian"], cercare: ["italian"], certo: ["italian"], cerume: ["italian"], cervello: ["italian"], cesoia: ["italian"], cespo: ["italian"], ceto: ["italian"], chela: ["italian"], chiaro: ["italian"], chicca: ["italian"], chiedere: ["italian"], chimera: ["italian"], china: ["italian"], chirurgo: ["italian"], chitarra: ["italian"], ciao: ["italian"], ciclismo: ["italian"], cifrare: ["italian"], cigno: ["italian"], cilindro: ["italian"], ciottolo: ["italian"], circa: ["italian"], cirrosi: ["italian"], citrico: ["italian"], cittadino: ["italian"], ciuffo: ["italian"], civetta: ["italian"], civile: ["italian"], classico: ["italian"], clinica: ["italian"], cloro: ["italian"], cocco: ["italian"], codardo: ["italian"], codice: ["italian"], coerente: ["italian"], cognome: ["italian"], collare: ["italian"], colmato: ["italian"], colore: ["italian"], colposo: ["italian"], coltivato: ["italian"], colza: ["italian"], coma: ["italian"], cometa: ["italian"], commando: ["italian"], comodo: ["italian"], computer: ["italian"], comune: ["italian"], conciso: ["italian"], condurre: ["italian"], conferma: ["italian"], congelare: ["italian"], coniuge: ["italian"], connesso: ["italian"], conoscere: ["italian"], consumo: ["italian"], continuo: ["italian"], convegno: ["italian"], coperto: ["italian"], copione: ["italian"], coppia: ["italian"], copricapo: ["italian"], corazza: ["italian"], cordata: ["italian"], coricato: ["italian"], cornice: ["italian"], corolla: ["italian"], corpo: ["italian"], corredo: ["italian"], corsia: ["italian"], cortese: ["italian"], cosmico: ["italian"], costante: ["italian"], cottura: ["italian"], covato: ["italian"], cratere: ["italian"], cravatta: ["italian"], creato: ["italian"], credere: ["italian"], cremoso: ["italian"], crescita: ["italian"], creta: ["italian"], criceto: ["italian"], crinale: ["italian"], crisi: ["italian"], critico: ["italian"], croce: ["italian"], cronaca: ["italian"], crostata: ["italian"], cruciale: ["italian"], crusca: ["italian"], cucire: ["italian"], cuculo: ["italian"], cugino: ["italian"], cullato: ["italian"], cupola: ["italian"], curatore: ["italian"], cursore: ["italian"], curvo: ["italian"], cuscino: ["italian"], custode: ["italian"], dado: ["italian"], daino: ["italian"], dalmata: ["italian"], damerino: ["italian"], daniela: ["italian"], dannoso: ["italian"], danzare: ["italian"], datato: ["italian"], davanti: ["italian"], davvero: ["italian"], debutto: ["italian"], decennio: ["italian"], deciso: ["italian"], declino: ["italian"], decollo: ["italian"], decreto: ["italian"], dedicato: ["italian"], definito: ["italian"], deforme: ["italian"], degno: ["italian"], delegare: ["italian"], delfino: ["italian"], delirio: ["italian"], delta: ["italian"], demenza: ["italian"], denotato: ["italian"], dentro: ["italian"], deposito: ["italian"], derapata: ["italian"], derivare: ["italian"], deroga: ["italian"], descritto: ["italian"], deserto: ["italian"], desiderio: ["italian"], desumere: ["italian"], detersivo: ["italian"], devoto: ["italian"], diametro: ["italian"], dicembre: ["italian"], diedro: ["italian"], difeso: ["italian"], diffuso: ["italian"], digerire: ["italian"], digitale: ["italian"], diluvio: ["italian"], dinamico: ["italian"], dinnanzi: ["italian"], dipinto: ["italian"], diploma: ["italian"], dipolo: ["italian"], diradare: ["italian"], dire: ["italian"], dirotto: ["italian"], dirupo: ["italian"], disagio: ["italian"], discreto: ["italian"], disfare: ["italian"], disgelo: ["italian"], disposto: ["italian"], distanza: ["italian"], disumano: ["italian"], dito: ["italian"], divano: ["italian"], divelto: ["italian"], dividere: ["italian"], divorato: ["italian"], doblone: ["italian"], docente: ["italian"], doganale: ["italian"], dogma: ["italian"], dolce: ["italian"], domato: ["italian"], domenica: ["italian"], dominare: ["italian"], dondolo: ["italian"], dono: ["italian"], dormire: ["italian"], dote: ["italian"], dottore: ["italian"], dovuto: ["italian"], dozzina: ["italian"], drago: ["italian"], druido: ["italian"], dubbio: ["italian"], dubitare: ["italian"], ducale: ["italian"], duna: ["italian"], duomo: ["italian"], duplice: ["italian"], duraturo: ["italian"], ebano: ["italian"], eccesso: ["italian"], ecco: ["italian"], eclissi: ["italian"], economia: ["italian"], edera: ["italian"], edicola: ["italian"], edile: ["italian"], editoria: ["italian"], educare: ["italian"], egemonia: ["italian"], egli: ["italian"], egoismo: ["italian"], egregio: ["italian"], elaborato: ["italian"], elargire: ["italian"], elegante: ["italian"], elencato: ["italian"], eletto: ["italian"], elevare: ["italian"], elfico: ["italian"], elica: ["italian"], elmo: ["italian"], elsa: ["italian"], eluso: ["italian"], emanato: ["italian"], emblema: ["italian"], emesso: ["italian"], emiro: ["italian"], emotivo: ["italian"], emozione: ["italian"], empirico: ["italian"], emulo: ["italian"], endemico: ["italian"], enduro: ["italian"], energia: ["italian"], enfasi: ["italian"], enoteca: ["italian"], entrare: ["italian"], enzima: ["italian"], epatite: ["italian"], epilogo: ["italian"], episodio: ["italian"], epocale: ["italian"], eppure: ["italian"], equatore: ["italian"], erario: ["italian"], erba: ["italian"], erboso: ["italian"], erede: ["italian"], eremita: ["italian"], erigere: ["italian"], ermetico: ["italian"], eroe: ["italian"], erosivo: ["italian"], errante: ["italian"], esagono: ["italian"], esame: ["italian"], esanime: ["italian"], esaudire: ["italian"], esca: ["italian"], esempio: ["italian"], esercito: ["italian"], esibito: ["italian"], esigente: ["italian"], esistere: ["italian"], esito: ["italian"], esofago: ["italian"], esortato: ["italian"], esoso: ["italian"], espanso: ["italian"], espresso: ["italian"], essenza: ["italian"], esso: ["italian"], esteso: ["italian"], estimare: ["italian"], estonia: ["italian"], estroso: ["italian"], esultare: ["italian"], etilico: ["italian"], etnico: ["italian"], etrusco: ["italian"], etto: ["italian"], euclideo: ["italian"], europa: ["italian"], evaso: ["italian"], evidenza: ["italian"], evitato: ["italian"], evoluto: ["italian"], evviva: ["italian"], fabbrica: ["italian"], faccenda: ["italian"], fachiro: ["italian"], falco: ["italian"], famiglia: ["italian"], fanale: ["italian"], fanfara: ["italian"], fango: ["italian"], fantasma: ["italian"], fare: ["italian"], farfalla: ["italian"], farinoso: ["italian"], farmaco: ["italian"], fascia: ["italian"], fastoso: ["italian"], fasullo: ["italian"], faticare: ["italian"], fato: ["italian"], favoloso: ["italian"], febbre: ["italian"], fecola: ["italian"], fede: ["italian"], fegato: ["italian"], felpa: ["italian"], feltro: ["italian"], femmina: ["italian"], fendere: ["italian"], fenomeno: ["italian"], fermento: ["italian"], ferro: ["italian"], fertile: ["italian"], fessura: ["italian"], festivo: ["italian"], fetta: ["italian"], feudo: ["italian"], fiaba: ["italian"], fiducia: ["italian"], fifa: ["italian"], figurato: ["italian"], filo: ["italian", "turkish"], finanza: ["italian"], finestra: ["italian"], finire: ["italian"], fiore: ["italian"], fiscale: ["italian"], fisico: ["italian"], fiume: ["italian"], flacone: ["italian"], flamenco: ["italian"], flebo: ["italian"], flemma: ["italian"], florido: ["italian"], fluente: ["italian"], fluoro: ["italian"], fobico: ["italian"], focaccia: ["italian"], focoso: ["italian"], foderato: ["italian"], foglio: ["italian"], folata: ["italian"], folclore: ["italian"], folgore: ["italian"], fondente: ["italian"], fonetico: ["italian"], fonia: ["italian"], fontana: ["italian"], forbito: ["italian"], forchetta: ["italian"], foresta: ["italian"], formica: ["italian"], fornaio: ["italian"], foro: ["italian"], fortezza: ["italian"], forzare: ["italian"], fosfato: ["italian"], fosso: ["italian"], fracasso: ["italian"], frana: ["italian"], frassino: ["italian"], fratello: ["italian"], freccetta: ["italian"], frenata: ["italian"], fresco: ["italian"], frigo: ["italian"], frollino: ["italian"], fronde: ["italian"], frugale: ["italian"], frutta: ["italian"], fucilata: ["italian"], fucsia: ["italian"], fuggente: ["italian"], fulmine: ["italian"], fulvo: ["italian"], fumante: ["italian"], fumetto: ["italian"], fumoso: ["italian"], fune: ["italian"], funzione: ["italian"], fuoco: ["italian"], furbo: ["italian"], furgone: ["italian"], furore: ["italian"], fuso: ["italian"], futile: ["italian"], gabbiano: ["italian"], gaffe: ["italian"], galateo: ["italian"], gallina: ["italian"], galoppo: ["italian"], gambero: ["italian"], gamma: ["italian"], garanzia: ["italian"], garbo: ["italian"], garofano: ["italian"], garzone: ["italian"], gasdotto: ["italian"], gasolio: ["italian"], gastrico: ["italian"], gatto: ["italian"], gaudio: ["italian"], gazebo: ["italian"], gazzella: ["italian"], geco: ["italian"], gelatina: ["italian"], gelso: ["italian"], gemello: ["italian"], gemmato: ["italian"], gene: ["italian"], genitore: ["italian"], gennaio: ["italian"], genotipo: ["italian"], gergo: ["italian"], ghepardo: ["italian"], ghiaccio: ["italian"], ghisa: ["italian"], giallo: ["italian"], gilda: ["italian"], ginepro: ["italian"], giocare: ["italian"], gioiello: ["italian"], giorno: ["italian"], giove: ["italian"], girato: ["italian"], girone: ["italian"], gittata: ["italian"], giudizio: ["italian"], giurato: ["italian"], giusto: ["italian"], globulo: ["italian"], glutine: ["italian"], gnomo: ["italian"], gobba: ["italian"], golf: ["italian"], gomito: ["italian"], gommone: ["italian"], gonfio: ["italian"], gonna: ["italian"], governo: ["italian"], gracile: ["italian"], grado: ["italian"], grafico: ["italian"], grammo: ["italian"], grande: ["italian"], grattare: ["italian"], gravoso: ["italian"], grazia: ["italian"], greca: ["italian"], gregge: ["italian"], grifone: ["italian"], grigio: ["italian"], grinza: ["italian"], grotta: ["italian"], gruppo: ["italian"], guadagno: ["italian"], guaio: ["italian"], guanto: ["italian"], guardare: ["italian"], gufo: ["italian"], guidare: ["italian"], ibernato: ["italian"], icona: ["italian"], identico: ["italian"], idillio: ["italian"], idolo: ["italian"], idra: ["italian"], idrico: ["italian"], idrogeno: ["italian"], igiene: ["italian"], ignaro: ["italian"], ignorato: ["italian"], ilare: ["italian"], illeso: ["italian"], illogico: ["italian"], illudere: ["italian"], imballo: ["italian"], imbevuto: ["italian"], imbocco: ["italian"], imbuto: ["italian"], immane: ["italian"], immerso: ["italian"], immolato: ["italian"], impacco: ["italian"], impeto: ["italian"], impiego: ["italian"], importo: ["italian"], impronta: ["italian"], inalare: ["italian"], inarcare: ["italian"], inattivo: ["italian"], incanto: ["italian"], incendio: ["italian"], inchino: ["italian"], incisivo: ["italian"], incluso: ["italian"], incontro: ["italian"], incrocio: ["italian"], incubo: ["italian"], indagine: ["italian"], india: ["italian"], indole: ["italian"], inedito: ["italian"], infatti: ["italian"], infilare: ["italian"], inflitto: ["italian"], ingaggio: ["italian"], ingegno: ["italian"], inglese: ["italian"], ingordo: ["italian"], ingrosso: ["italian"], innesco: ["italian"], inodore: ["italian"], inoltrare: ["italian"], inondato: ["italian"], insano: ["italian"], insetto: ["italian"], insieme: ["italian"], insonnia: ["italian"], insulina: ["italian"], intasato: ["italian"], intero: ["italian"], intonaco: ["italian"], intuito: ["italian"], inumidire: ["italian"], invalido: ["italian"], invece: ["italian"], invito: ["italian"], iperbole: ["italian"], ipnotico: ["italian"], ipotesi: ["italian"], ippica: ["italian"], iride: ["italian"], irlanda: ["italian"], ironico: ["italian"], irrigato: ["italian"], irrorare: ["italian"], isolato: ["italian"], isotopo: ["italian"], isterico: ["italian"], istituto: ["italian"], istrice: ["italian"], italia: ["italian"], iterare: ["italian"], labbro: ["italian"], labirinto: ["italian"], lacca: ["italian"], lacerato: ["italian"], lacrima: ["italian"], lacuna: ["italian"], laddove: ["italian"], lago: ["italian"], lampo: ["italian"], lancetta: ["italian"], lanterna: ["italian"], lardoso: ["italian"], larga: ["italian"], laringe: ["italian"], lastra: ["italian"], latenza: ["italian"], latino: ["italian"], lattuga: ["italian"], lavagna: ["italian"], lavoro: ["italian"], legale: ["italian"], leggero: ["italian"], lembo: ["italian"], lentezza: ["italian"], lenza: ["italian"], leone: ["italian"], lepre: ["italian"], lesivo: ["italian"], lessato: ["italian"], lesto: ["italian"], letterale: ["italian"], leva: ["italian"], levigato: ["italian"], libero: ["italian"], lido: ["italian"], lievito: ["italian"], lilla: ["italian"], limatura: ["italian"], limitare: ["italian"], limpido: ["italian"], lineare: ["italian"], lingua: ["italian"], liquido: ["italian"], lira: ["italian"], lirica: ["italian"], lisca: ["italian"], lite: ["italian"], litigio: ["italian"], livrea: ["italian"], locanda: ["italian"], lode: ["italian"], logica: ["italian"], lombare: ["italian"], londra: ["italian"], longevo: ["italian"], loquace: ["italian"], lorenzo: ["italian"], loto: ["italian"], lotteria: ["italian"], luce: ["italian"], lucidato: ["italian"], lumaca: ["italian"], luminoso: ["italian"], lungo: ["italian"], lupo: ["italian"], luppolo: ["italian"], lusinga: ["italian"], lusso: ["italian"], lutto: ["italian"], macabro: ["italian"], macchina: ["italian"], macero: ["italian"], macinato: ["italian"], madama: ["italian"], magico: ["italian"], maglia: ["italian"], magnete: ["italian"], magro: ["italian"], maiolica: ["italian"], malafede: ["italian"], malgrado: ["italian"], malinteso: ["italian"], malsano: ["italian"], malto: ["italian"], malumore: ["italian"], mana: ["italian"], mancia: ["italian"], mandorla: ["italian"], mangiare: ["italian"], manifesto: ["italian"], mannaro: ["italian"], manovra: ["italian"], mansarda: ["italian"], mantide: ["italian"], manubrio: ["italian"], mappa: ["italian"], maratona: ["italian"], marcire: ["italian"], maretta: ["italian"], marmo: ["italian"], marsupio: ["italian"], maschera: ["italian"], massaia: ["italian"], mastino: ["italian"], materasso: ["italian"], matricola: ["italian"], mattone: ["italian"], maturo: ["italian"], mazurca: ["italian"], meandro: ["italian"], meccanico: ["italian"], mecenate: ["italian"], medesimo: ["italian"], meditare: ["italian"], mega: ["italian"], melassa: ["italian"], melis: ["italian"], melodia: ["italian"], meninge: ["italian"], meno: ["italian"], mensola: ["italian"], mercurio: ["italian"], merenda: ["italian"], merlo: ["italian"], meschino: ["italian"], mese: ["italian"], messere: ["italian"], mestolo: ["italian"], metallo: ["italian"], metodo: ["italian"], mettere: ["italian"], miagolare: ["italian"], mica: ["italian"], micelio: ["italian"], michele: ["italian"], microbo: ["italian"], midollo: ["italian"], miele: ["italian"], migliore: ["italian"], milano: ["italian"], milite: ["italian"], mimosa: ["italian"], minerale: ["italian"], mini: ["italian"], minore: ["italian"], mirino: ["italian"], mirtillo: ["italian"], miscela: ["italian"], missiva: ["italian"], misto: ["italian"], misurare: ["italian"], mitezza: ["italian"], mitigare: ["italian"], mitra: ["italian"], mittente: ["italian"], mnemonico: ["italian"], modello: ["italian"], modifica: ["italian"], modulo: ["italian"], mogano: ["italian"], mogio: ["italian"], mole: ["italian"], molosso: ["italian"], monastero: ["italian"], monco: ["italian"], mondina: ["italian"], monetario: ["italian"], monile: ["italian"], monotono: ["italian"], monsone: ["italian"], montato: ["italian"], monviso: ["italian"], mora: ["italian"], mordere: ["italian"], morsicato: ["italian"], mostro: ["italian"], motivato: ["italian"], motosega: ["italian"], motto: ["italian"], movenza: ["italian"], movimento: ["italian"], mozzo: ["italian"], mucca: ["italian"], mucosa: ["italian"], muffa: ["italian"], mughetto: ["italian"], mugnaio: ["italian"], mulatto: ["italian"], mulinello: ["italian"], multiplo: ["italian"], mummia: ["italian"], munto: ["italian"], muovere: ["italian"], murale: ["italian"], musa: ["italian"], muscolo: ["italian"], musica: ["italian"], mutevole: ["italian"], muto: ["italian"], nababbo: ["italian"], nafta: ["italian"], nanometro: ["italian"], narciso: ["italian"], narice: ["italian"], narrato: ["italian"], nascere: ["italian"], nastrare: ["italian"], naturale: ["italian"], nautica: ["italian"], naviglio: ["italian"], nebulosa: ["italian"], necrosi: ["italian"], negativo: ["italian"], negozio: ["italian"], nemmeno: ["italian"], neofita: ["italian"], neretto: ["italian"], nervo: ["italian"], nessuno: ["italian"], nettuno: ["italian"], neutrale: ["italian"], neve: ["italian"], nevrotico: ["italian"], nicchia: ["italian"], ninfa: ["italian"], nitido: ["italian"], nobile: ["italian"], nocivo: ["italian"], nodo: ["italian"], nome: ["italian"], nomina: ["italian"], nordico: ["italian"], normale: ["italian"], norvegese: ["italian"], nostrano: ["italian"], notare: ["italian"], notizia: ["italian"], notturno: ["italian"], novella: ["italian"], nucleo: ["italian"], nulla: ["italian"], numero: ["italian"], nuovo: ["italian"], nutrire: ["italian"], nuvola: ["italian"], nuziale: ["italian"], oasi: ["italian"], obbedire: ["italian"], obbligo: ["italian"], obelisco: ["italian"], oblio: ["italian"], obolo: ["italian"], obsoleto: ["italian"], occasione: ["italian"], occhio: ["italian"], occidente: ["italian"], occorrere: ["italian"], occultare: ["italian"], ocra: ["italian"], oculato: ["italian"], odierno: ["italian"], odorare: ["italian"], offerta: ["italian"], offrire: ["italian"], offuscato: ["italian"], oggetto: ["italian"], oggi: ["italian"], ognuno: ["italian"], olandese: ["italian"], olfatto: ["italian"], oliato: ["italian"], oliva: ["italian"], ologramma: ["italian"], oltre: ["italian"], omaggio: ["italian"], ombelico: ["italian"], ombra: ["italian"], omega: ["italian"], omissione: ["italian"], ondoso: ["italian"], onere: ["italian"], onice: ["italian"], onnivoro: ["italian"], onorevole: ["italian"], onta: ["italian"], operato: ["italian"], opinione: ["italian"], opposto: ["italian"], oracolo: ["italian"], orafo: ["italian"], ordine: ["italian"], orecchino: ["italian"], orefice: ["italian"], orfano: ["italian"], organico: ["italian"], origine: ["italian"], orizzonte: ["italian"], orma: ["italian"], ormeggio: ["italian"], ornativo: ["italian"], orologio: ["italian"], orrendo: ["italian"], orribile: ["italian"], ortensia: ["italian"], ortica: ["italian"], orzata: ["italian"], orzo: ["italian"], osare: ["italian"], oscurare: ["italian"], osmosi: ["italian"], ospedale: ["italian"], ospite: ["italian"], ossa: ["italian"], ossidare: ["italian"], ostacolo: ["italian"], oste: ["italian"], otite: ["italian"], otre: ["italian"], ottagono: ["italian"], ottimo: ["italian"], ottobre: ["italian"], ovale: ["italian"], ovest: ["italian"], ovino: ["italian"], oviparo: ["italian"], ovocito: ["italian"], ovunque: ["italian"], ovviare: ["italian"], ozio: ["italian"], pacchetto: ["italian"], pace: ["italian"], pacifico: ["italian"], padella: ["italian"], padrone: ["italian"], paese: ["italian"], paga: ["italian"], pagina: ["italian"], palazzina: ["italian"], palesare: ["italian"], pallido: ["italian"], palo: ["italian"], palude: ["italian"], pandoro: ["italian"], pannello: ["italian"], paolo: ["italian"], paonazzo: ["italian"], paprica: ["italian"], parabola: ["italian"], parcella: ["italian"], parere: ["italian"], pargolo: ["italian"], pari: ["italian"], parlato: ["italian"], parola: ["italian"], partire: ["italian"], parvenza: ["italian"], parziale: ["italian"], passivo: ["italian"], pasticca: ["italian"], patacca: ["italian"], patologia: ["italian"], pattume: ["italian"], pavone: ["italian"], peccato: ["italian"], pedalare: ["italian"], pedonale: ["italian"], peggio: ["italian"], peloso: ["italian"], penare: ["italian"], pendice: ["italian"], penisola: ["italian"], pennuto: ["italian"], penombra: ["italian"], pensare: ["italian"], pentola: ["italian"], pepe: ["italian"], pepita: ["italian"], perbene: ["italian"], percorso: ["italian"], perdonato: ["italian"], perforare: ["italian"], pergamena: ["italian"], periodo: ["italian"], permesso: ["italian"], perno: ["italian"], perplesso: ["italian"], persuaso: ["italian"], pertugio: ["italian"], pervaso: ["italian"], pesatore: ["italian"], pesista: ["italian"], peso: ["italian"], pestifero: ["italian"], petalo: ["italian"], pettine: ["italian"], petulante: ["italian"], pezzo: ["italian"], piacere: ["italian"], pianta: ["italian"], piattino: ["italian"], piccino: ["italian"], picozza: ["italian"], piega: ["italian"], pietra: ["italian"], piffero: ["italian"], pigiama: ["italian"], pigolio: ["italian"], pigro: ["italian"], pila: ["italian"], pilifero: ["italian"], pillola: ["italian"], pilota: ["italian"], pimpante: ["italian"], pineta: ["italian"], pinna: ["italian"], pinolo: ["italian"], pioggia: ["italian"], piombo: ["italian"], piramide: ["italian"], piretico: ["italian"], pirite: ["italian"], pirolisi: ["italian"], pitone: ["italian"], pizzico: ["italian"], placebo: ["italian"], planare: ["italian"], plasma: ["italian"], platano: ["italian"], plenario: ["italian"], pochezza: ["italian"], poderoso: ["italian"], podismo: ["italian"], poesia: ["italian"], poggiare: ["italian"], polenta: ["italian"], poligono: ["italian"], pollice: ["italian"], polmonite: ["italian"], polpetta: ["italian"], polso: ["italian"], poltrona: ["italian"], polvere: ["italian"], pomice: ["italian"], pomodoro: ["italian"], ponte: ["italian"], popoloso: ["italian"], porfido: ["italian"], poroso: ["italian"], porpora: ["italian"], porre: ["italian"], portata: ["italian"], posa: ["italian", "turkish"], positivo: ["italian"], possesso: ["italian"], postulato: ["italian"], potassio: ["italian"], potere: ["italian"], pranzo: ["italian"], prassi: ["italian"], pratica: ["italian"], precluso: ["italian"], predica: ["italian"], prefisso: ["italian"], pregiato: ["italian"], prelievo: ["italian"], premere: ["italian"], prenotare: ["italian"], preparato: ["italian"], presenza: ["italian"], pretesto: ["italian"], prevalso: ["italian"], prima: ["italian"], principe: ["italian"], privato: ["italian"], problema: ["italian"], procura: ["italian"], produrre: ["italian"], profumo: ["italian"], progetto: ["italian"], prolunga: ["italian"], promessa: ["italian"], pronome: ["italian"], proposta: ["italian"], proroga: ["italian"], proteso: ["italian"], prova: ["italian", "turkish"], prudente: ["italian"], prugna: ["italian"], prurito: ["italian"], psiche: ["italian"], pubblico: ["italian"], pudica: ["italian"], pugilato: ["italian"], pugno: ["italian"], pulce: ["italian"], pulito: ["italian"], pulsante: ["italian"], puntare: ["italian"], pupazzo: ["italian"], pupilla: ["italian"], puro: ["italian"], quadro: ["italian"], qualcosa: ["italian"], quasi: ["italian"], querela: ["italian"], quota: ["italian"], raccolto: ["italian"], raddoppio: ["italian"], radicale: ["italian"], radunato: ["italian"], raffica: ["italian"], ragazzo: ["italian"], ragione: ["italian"], ragno: ["italian"], ramarro: ["italian"], ramingo: ["italian"], ramo: ["italian"], randagio: ["italian"], rantolare: ["italian"], rapato: ["italian"], rapina: ["italian"], rappreso: ["italian"], rasatura: ["italian"], raschiato: ["italian"], rasente: ["italian"], rassegna: ["italian"], rastrello: ["italian"], rata: ["italian"], ravveduto: ["italian"], reale: ["italian"], recepire: ["italian"], recinto: ["italian"], recluta: ["italian"], recondito: ["italian"], recupero: ["italian"], reddito: ["italian"], redimere: ["italian"], regalato: ["italian"], registro: ["italian"], regola: ["italian"], regresso: ["italian"], relazione: ["italian"], remare: ["italian"], remoto: ["italian"], renna: ["italian"], replica: ["italian"], reprimere: ["italian"], reputare: ["italian"], resa: ["italian"], residente: ["italian"], responso: ["italian"], restauro: ["italian"], rete: ["italian"], retina: ["italian"], retorica: ["italian"], rettifica: ["italian"], revocato: ["italian"], riassunto: ["italian"], ribadire: ["italian"], ribelle: ["italian"], ribrezzo: ["italian"], ricarica: ["italian"], ricco: ["italian"], ricevere: ["italian"], riciclato: ["italian"], ricordo: ["italian"], ricreduto: ["italian"], ridicolo: ["italian"], ridurre: ["italian"], rifasare: ["italian"], riflesso: ["italian"], riforma: ["italian"], rifugio: ["italian"], rigare: ["italian"], rigettato: ["italian"], righello: ["italian"], rilassato: ["italian"], rilevato: ["italian"], rimanere: ["italian"], rimbalzo: ["italian"], rimedio: ["italian"], rimorchio: ["italian"], rinascita: ["italian"], rincaro: ["italian"], rinforzo: ["italian"], rinnovo: ["italian"], rinomato: ["italian"], rinsavito: ["italian"], rintocco: ["italian"], rinuncia: ["italian"], rinvenire: ["italian"], riparato: ["italian"], ripetuto: ["italian"], ripieno: ["italian"], riportare: ["italian"], ripresa: ["italian"], ripulire: ["italian"], risata: ["italian"], rischio: ["italian"], riserva: ["italian"], risibile: ["italian"], riso: ["italian"], rispetto: ["italian"], ristoro: ["italian"], risultato: ["italian"], risvolto: ["italian"], ritardo: ["italian"], ritegno: ["italian"], ritmico: ["italian"], ritrovo: ["italian"], riunione: ["italian"], riva: ["italian"], riverso: ["italian"], rivincita: ["italian"], rivolto: ["italian"], rizoma: ["italian"], roba: ["italian"], robotico: ["italian"], robusto: ["italian"], roccia: ["italian"], roco: ["italian"], rodaggio: ["italian"], rodere: ["italian"], roditore: ["italian"], rogito: ["italian"], rollio: ["italian"], romantico: ["italian"], rompere: ["italian"], ronzio: ["italian"], rosolare: ["italian"], rospo: ["italian"], rotante: ["italian"], rotondo: ["italian"], rotula: ["italian"], rovescio: ["italian"], rubizzo: ["italian"], rubrica: ["italian"], ruga: ["italian"], rullino: ["italian"], rumine: ["italian"], rumoroso: ["italian"], ruolo: ["italian"], rupe: ["italian"], russare: ["italian"], rustico: ["italian"], sabato: ["italian"], sabbiare: ["italian"], sabotato: ["italian"], sagoma: ["italian"], salasso: ["italian"], saldatura: ["italian"], salgemma: ["italian"], salivare: ["italian"], salmone: ["italian"], salone: ["italian"], saltare: ["italian"], saluto: ["italian"], salvo: ["italian"], sapere: ["italian"], sapido: ["italian"], saporito: ["italian"], saraceno: ["italian"], sarcasmo: ["italian"], sarto: ["italian"], sassoso: ["italian"], satellite: ["italian"], satira: ["italian"], satollo: ["italian"], saturno: ["italian"], savana: ["italian"], savio: ["italian"], saziato: ["italian"], sbadiglio: ["italian"], sbalzo: ["italian"], sbancato: ["italian"], sbarra: ["italian"], sbattere: ["italian"], sbavare: ["italian"], sbendare: ["italian"], sbirciare: ["italian"], sbloccato: ["italian"], sbocciato: ["italian"], sbrinare: ["italian"], sbruffone: ["italian"], sbuffare: ["italian"], scabroso: ["italian"], scadenza: ["italian"], scala: ["italian"], scambiare: ["italian"], scandalo: ["italian"], scapola: ["italian"], scarso: ["italian"], scatenare: ["italian"], scavato: ["italian"], scelto: ["italian"], scenico: ["italian"], scettro: ["italian"], scheda: ["italian"], schiena: ["italian"], sciarpa: ["italian"], scienza: ["italian"], scindere: ["italian"], scippo: ["italian"], sciroppo: ["italian"], scivolo: ["italian"], sclerare: ["italian"], scodella: ["italian"], scolpito: ["italian"], scomparto: ["italian"], sconforto: ["italian"], scoprire: ["italian"], scorta: ["italian"], scossone: ["italian"], scozzese: ["italian"], scriba: ["italian"], scrollare: ["italian"], scrutinio: ["italian"], scuderia: ["italian"], scultore: ["italian"], scuola: ["italian"], scuro: ["italian"], scusare: ["italian"], sdebitare: ["italian"], sdoganare: ["italian"], seccatura: ["italian"], secondo: ["italian"], sedano: ["italian"], seggiola: ["italian"], segnalato: ["italian"], segregato: ["italian"], seguito: ["italian"], selciato: ["italian"], selettivo: ["italian"], sella: ["italian"], selvaggio: ["italian"], semaforo: ["italian"], sembrare: ["italian"], seme: ["italian"], seminato: ["italian"], sempre: ["italian"], senso: ["italian"], sentire: ["italian"], sepolto: ["italian"], sequenza: ["italian"], serata: ["italian"], serbato: ["italian"], sereno: ["italian"], serio: ["italian"], serpente: ["italian"], serraglio: ["italian"], servire: ["italian"], sestina: ["italian"], setola: ["italian"], settimana: ["italian"], sfacelo: ["italian"], sfaldare: ["italian"], sfamato: ["italian"], sfarzoso: ["italian"], sfaticato: ["italian"], sfera: ["italian"], sfida: ["italian"], sfilato: ["italian"], sfinge: ["italian"], sfocato: ["italian"], sfoderare: ["italian"], sfogo: ["italian"], sfoltire: ["italian"], sforzato: ["italian"], sfratto: ["italian"], sfruttato: ["italian"], sfuggito: ["italian"], sfumare: ["italian"], sfuso: ["italian"], sgabello: ["italian"], sgarbato: ["italian"], sgonfiare: ["italian"], sgorbio: ["italian"], sgrassato: ["italian"], sguardo: ["italian"], sibilo: ["italian"], siccome: ["italian"], sierra: ["italian"], sigla: ["italian"], signore: ["italian"], silenzio: ["italian"], sillaba: ["italian"], simbolo: ["italian"], simpatico: ["italian"], simulato: ["italian"], sinfonia: ["italian"], singolo: ["italian"], sinistro: ["italian"], sino: ["italian"], sintesi: ["italian"], sinusoide: ["italian"], sipario: ["italian"], sisma: ["italian"], sistole: ["italian"], situato: ["italian"], slitta: ["italian"], slogatura: ["italian"], sloveno: ["italian"], smarrito: ["italian"], smemorato: ["italian"], smentito: ["italian"], smeraldo: ["italian"], smilzo: ["italian"], smontare: ["italian"], smottato: ["italian"], smussato: ["italian"], snellire: ["italian"], snervato: ["italian"], snodo: ["italian"], sobbalzo: ["italian"], sobrio: ["italian"], soccorso: ["italian"], sociale: ["italian"], sodale: ["italian"], soffitto: ["italian"], sogno: ["italian"], soldato: ["italian"], solenne: ["italian"], solido: ["italian"], sollazzo: ["italian"], solo: ["italian"], solubile: ["italian"], solvente: ["italian"], somatico: ["italian"], somma: ["italian"], sonda: ["italian"], sonetto: ["italian"], sonnifero: ["italian"], sopire: ["italian"], soppeso: ["italian"], sopra: ["italian"], sorgere: ["italian"], sorpasso: ["italian"], sorriso: ["italian"], sorso: ["italian"], sorteggio: ["italian"], sorvolato: ["italian"], sospiro: ["italian"], sosta: ["italian"], sottile: ["italian"], spada: ["italian"], spalla: ["italian"], spargere: ["italian"], spatola: ["italian"], spavento: ["italian"], spazzola: ["italian"], specie: ["italian"], spedire: ["italian"], spegnere: ["italian"], spelatura: ["italian"], speranza: ["italian"], spessore: ["italian"], spettrale: ["italian"], spezzato: ["italian"], spia: ["italian"], spigoloso: ["italian"], spillato: ["italian"], spinoso: ["italian"], spirale: ["italian"], splendido: ["italian"], sportivo: ["italian"], sposo: ["italian"], spranga: ["italian"], sprecare: ["italian"], spronato: ["italian"], spruzzo: ["italian"], spuntino: ["italian"], squillo: ["italian"], sradicare: ["italian"], srotolato: ["italian"], stabile: ["italian"], stacco: ["italian"], staffa: ["italian"], stagnare: ["italian"], stampato: ["italian"], stantio: ["italian"], starnuto: ["italian"], stasera: ["italian"], statuto: ["italian"], stelo: ["italian"], steppa: ["italian"], sterzo: ["italian"], stiletto: ["italian"], stima: ["italian"], stirpe: ["italian"], stivale: ["italian"], stizzoso: ["italian"], stonato: ["italian"], storico: ["italian"], strappo: ["italian"], stregato: ["italian"], stridulo: ["italian"], strozzare: ["italian"], strutto: ["italian"], stuccare: ["italian"], stufo: ["italian"], stupendo: ["italian"], subentro: ["italian"], succoso: ["italian"], sudore: ["italian"], suggerito: ["italian"], sugo: ["italian"], sultano: ["italian"], suonare: ["italian"], superbo: ["italian"], supporto: ["italian"], surgelato: ["italian"], surrogato: ["italian"], sussurro: ["italian"], sutura: ["italian"], svagare: ["italian"], svedese: ["italian"], sveglio: ["italian"], svelare: ["italian"], svenuto: ["italian"], svezia: ["italian"], sviluppo: ["italian"], svista: ["italian"], svizzera: ["italian"], svolta: ["italian"], svuotare: ["italian"], tabacco: ["italian"], tabulato: ["italian"], tacciare: ["italian"], taciturno: ["italian"], tale: ["italian"], talismano: ["italian"], tampone: ["italian"], tannino: ["italian"], tara: ["italian"], tardivo: ["italian"], targato: ["italian"], tariffa: ["italian"], tarpare: ["italian"], tartaruga: ["italian"], tasto: ["italian"], tattico: ["italian"], taverna: ["italian"], tavolata: ["italian"], tazza: ["italian"], teca: ["italian"], tecnico: ["italian"], telefono: ["italian"], temerario: ["italian"], tempo: ["italian", "turkish"], temuto: ["italian"], tendone: ["italian"], tenero: ["italian"], tensione: ["italian"], tentacolo: ["italian"], teorema: ["italian"], terme: ["italian"], terrazzo: ["italian"], terzetto: ["italian"], tesi: ["italian"], tesserato: ["italian"], testato: ["italian"], tetro: ["italian"], tettoia: ["italian"], tifare: ["italian"], tigella: ["italian"], timbro: ["italian"], tinto: ["italian"], tipico: ["italian"], tipografo: ["italian"], tiraggio: ["italian"], tiro: ["italian"], titanio: ["italian"], titolo: ["italian"], titubante: ["italian"], tizio: ["italian"], tizzone: ["italian"], toccare: ["italian"], tollerare: ["italian"], tolto: ["italian"], tombola: ["italian"], tomo: ["italian"], tonfo: ["italian"], tonsilla: ["italian"], topazio: ["italian"], topologia: ["italian"], toppa: ["italian"], torba: ["italian"], tornare: ["italian"], torrone: ["italian"], tortora: ["italian"], toscano: ["italian"], tossire: ["italian"], tostatura: ["italian"], totano: ["italian"], trabocco: ["italian"], trachea: ["italian"], trafila: ["italian"], tragedia: ["italian"], tralcio: ["italian"], tramonto: ["italian"], transito: ["italian"], trapano: ["italian"], trarre: ["italian"], trasloco: ["italian"], trattato: ["italian"], trave: ["italian"], treccia: ["italian"], tremolio: ["italian"], trespolo: ["italian"], tributo: ["italian"], tricheco: ["italian"], trifoglio: ["italian"], trillo: ["italian"], trincea: ["italian"], trio: ["italian"], tristezza: ["italian"], triturato: ["italian"], trivella: ["italian"], tromba: ["italian"], trono: ["italian"], troppo: ["italian"], trottola: ["italian"], trovare: ["italian"], truccato: ["italian"], tubatura: ["italian"], tuffato: ["italian"], tulipano: ["italian"], tumulto: ["italian"], tunisia: ["italian"], turbare: ["italian"], turchino: ["italian"], tuta: ["italian"], tutela: ["italian"], ubicato: ["italian"], uccello: ["italian"], uccisore: ["italian"], udire: ["italian"], uditivo: ["italian"], uffa: ["italian"], ufficio: ["italian"], uguale: ["italian"], ulisse: ["italian"], ultimato: ["italian"], umano: ["italian"], umile: ["italian"], umorismo: ["italian"], uncinetto: ["italian"], ungere: ["italian"], ungherese: ["italian"], unicorno: ["italian"], unificato: ["italian"], unisono: ["italian"], unitario: ["italian"], unte: ["italian"], uovo: ["italian"], upupa: ["italian"], uragano: ["italian"], urgenza: ["italian"], urlo: ["italian"], usanza: ["italian"], usato: ["italian"], uscito: ["italian"], usignolo: ["italian"], usuraio: ["italian"], utensile: ["italian"], utilizzo: ["italian"], utopia: ["italian"], vacante: ["italian"], vaccinato: ["italian"], vagabondo: ["italian"], vagliato: ["italian"], valanga: ["italian"], valgo: ["italian"], valico: ["italian"], valletta: ["italian"], valoroso: ["italian"], valutare: ["italian"], valvola: ["italian"], vampata: ["italian"], vangare: ["italian"], vanitoso: ["italian"], vano: ["italian"], vantaggio: ["italian"], vanvera: ["italian"], vapore: ["italian"], varano: ["italian"], varcato: ["italian"], variante: ["italian"], vasca: ["italian"], vedetta: ["italian"], vedova: ["italian"], veduto: ["italian"], vegetale: ["italian"], veicolo: ["italian"], velcro: ["italian"], velina: ["italian"], velluto: ["italian"], veloce: ["italian"], venato: ["italian"], vendemmia: ["italian"], vento: ["italian"], verace: ["italian"], verbale: ["italian"], vergogna: ["italian"], verifica: ["italian"], vero: ["italian"], verruca: ["italian"], verticale: ["italian"], vescica: ["italian"], vessillo: ["italian"], vestale: ["italian"], veterano: ["italian"], vetrina: ["italian"], vetusto: ["italian"], viandante: ["italian"], vibrante: ["italian"], vicenda: ["italian"], vichingo: ["italian"], vicinanza: ["italian"], vidimare: ["italian"], vigilia: ["italian"], vigneto: ["italian"], vigore: ["italian"], vile: ["italian"], villano: ["italian"], vimini: ["italian"], vincitore: ["italian"], viola: ["italian"], vipera: ["italian"], virgola: ["italian"], virologo: ["italian"], virulento: ["italian"], viscoso: ["italian"], visione: ["italian"], vispo: ["italian"], vissuto: ["italian"], visura: ["italian"], vita: ["italian"], vitello: ["italian"], vittima: ["italian"], vivanda: ["italian"], vivido: ["italian"], viziare: ["italian"], voce: ["italian"], voga: ["italian"], volatile: ["italian"], volere: ["italian"], volpe: ["italian"], voragine: ["italian"], vulcano: ["italian"], zampogna: ["italian"], zanna: ["italian"], zappato: ["italian"], zattera: ["italian"], zavorra: ["italian"], zefiro: ["italian"], zelante: ["italian"], zelo: ["italian"], zenzero: ["italian"], zerbino: ["italian"], zibetto: ["italian"], zinco: ["italian"], zircone: ["italian"], zitto: ["italian"], zolla: ["italian"], zotico: ["italian"], zucchero: ["italian"], zufolo: ["italian"], zulu: ["italian"], zuppa: ["italian"], \u3042\u3044\u3053\u304F\u3057\u3093: ["japanese"], \u3042\u3044\u3055\u3064: ["japanese"], \u3042\u3044\u305F\u3099: ["japanese"], \u3042\u304A\u305D\u3099\u3089: ["japanese"], \u3042\u304B\u3061\u3083\u3093: ["japanese"], \u3042\u304D\u308B: ["japanese"], \u3042\u3051\u304B\u3099\u305F: ["japanese"], \u3042\u3051\u308B: ["japanese"], \u3042\u3053\u304B\u3099\u308C\u308B: ["japanese"], \u3042\u3055\u3044: ["japanese"], \u3042\u3055\u3072: ["japanese"], \u3042\u3057\u3042\u3068: ["japanese"], \u3042\u3057\u3099\u308F\u3046: ["japanese"], \u3042\u3059\u3099\u304B\u308B: ["japanese"], \u3042\u3059\u3099\u304D: ["japanese"], \u3042\u305D\u3075\u3099: ["japanese"], \u3042\u305F\u3048\u308B: ["japanese"], \u3042\u305F\u305F\u3081\u308B: ["japanese"], \u3042\u305F\u308A\u307E\u3048: ["japanese"], \u3042\u305F\u308B: ["japanese"], \u3042\u3064\u3044: ["japanese"], \u3042\u3064\u304B\u3046: ["japanese"], \u3042\u3063\u3057\u3085\u304F: ["japanese"], \u3042\u3064\u307E\u308A: ["japanese"], \u3042\u3064\u3081\u308B: ["japanese"], \u3042\u3066\u306A: ["japanese"], \u3042\u3066\u306F\u307E\u308B: ["japanese"], \u3042\u3072\u308B: ["japanese"], \u3042\u3075\u3099\u3089: ["japanese"], \u3042\u3075\u3099\u308B: ["japanese"], \u3042\u3075\u308C\u308B: ["japanese"], \u3042\u307E\u3044: ["japanese"], \u3042\u307E\u3068\u3099: ["japanese"], \u3042\u307E\u3084\u304B\u3059: ["japanese"], \u3042\u307E\u308A: ["japanese"], \u3042\u307F\u3082\u306E: ["japanese"], \u3042\u3081\u308A\u304B: ["japanese"], \u3042\u3084\u307E\u308B: ["japanese"], \u3042\u3086\u3080: ["japanese"], \u3042\u3089\u3044\u304F\u3099\u307E: ["japanese"], \u3042\u3089\u3057: ["japanese"], \u3042\u3089\u3059\u3057\u3099: ["japanese"], \u3042\u3089\u305F\u3081\u308B: ["japanese"], \u3042\u3089\u3086\u308B: ["japanese"], \u3042\u3089\u308F\u3059: ["japanese"], \u3042\u308A\u304B\u3099\u3068\u3046: ["japanese"], \u3042\u308F\u305B\u308B: ["japanese"], \u3042\u308F\u3066\u308B: ["japanese"], \u3042\u3093\u3044: ["japanese"], \u3042\u3093\u304B\u3099\u3044: ["japanese"], \u3042\u3093\u3053: ["japanese"], \u3042\u3093\u305B\u3099\u3093: ["japanese"], \u3042\u3093\u3066\u3044: ["japanese"], \u3042\u3093\u306A\u3044: ["japanese"], \u3042\u3093\u307E\u308A: ["japanese"], \u3044\u3044\u305F\u3099\u3059: ["japanese"], \u3044\u304A\u3093: ["japanese"], \u3044\u304B\u3099\u3044: ["japanese"], \u3044\u304B\u3099\u304F: ["japanese"], \u3044\u304D\u304A\u3044: ["japanese"], \u3044\u304D\u306A\u308A: ["japanese"], \u3044\u304D\u3082\u306E: ["japanese"], \u3044\u304D\u308B: ["japanese"], \u3044\u304F\u3057\u3099: ["japanese"], \u3044\u304F\u3075\u3099\u3093: ["japanese"], \u3044\u3051\u306F\u3099\u306A: ["japanese"], \u3044\u3051\u3093: ["japanese"], \u3044\u3053\u3046: ["japanese"], \u3044\u3053\u304F: ["japanese"], \u3044\u3053\u3064: ["japanese"], \u3044\u3055\u307E\u3057\u3044: ["japanese"], \u3044\u3055\u3093: ["japanese"], \u3044\u3057\u304D: ["japanese"], \u3044\u3057\u3099\u3085\u3046: ["japanese"], \u3044\u3057\u3099\u3087\u3046: ["japanese"], \u3044\u3057\u3099\u308F\u308B: ["japanese"], \u3044\u3059\u3099\u307F: ["japanese"], \u3044\u3059\u3099\u308C: ["japanese"], \u3044\u305B\u3044: ["japanese"], \u3044\u305B\u3048\u3072\u3099: ["japanese"], \u3044\u305B\u304B\u3044: ["japanese"], \u3044\u305B\u304D: ["japanese"], \u3044\u305B\u3099\u3093: ["japanese"], \u3044\u305D\u3046\u308D\u3046: ["japanese"], \u3044\u305D\u304B\u3099\u3057\u3044: ["japanese"], \u3044\u305F\u3099\u3044: ["japanese"], \u3044\u305F\u3099\u304F: ["japanese"], \u3044\u305F\u3059\u3099\u3089: ["japanese"], \u3044\u305F\u307F: ["japanese"], \u3044\u305F\u308A\u3042: ["japanese"], \u3044\u3061\u304A\u3046: ["japanese"], \u3044\u3061\u3057\u3099: ["japanese"], \u3044\u3061\u3068\u3099: ["japanese"], \u3044\u3061\u306F\u3099: ["japanese"], \u3044\u3061\u3075\u3099: ["japanese"], \u3044\u3061\u308A\u3085\u3046: ["japanese"], \u3044\u3064\u304B: ["japanese"], \u3044\u3063\u3057\u3085\u3093: ["japanese"], \u3044\u3063\u305B\u3044: ["japanese"], \u3044\u3063\u305D\u3046: ["japanese"], \u3044\u3063\u305F\u3093: ["japanese"], \u3044\u3063\u3061: ["japanese"], \u3044\u3063\u3066\u3044: ["japanese"], \u3044\u3063\u307B\u309A\u3046: ["japanese"], \u3044\u3066\u3055\u3099: ["japanese"], \u3044\u3066\u3093: ["japanese"], \u3044\u3068\u3099\u3046: ["japanese"], \u3044\u3068\u3053: ["japanese"], \u3044\u306A\u3044: ["japanese"], \u3044\u306A\u304B: ["japanese"], \u3044\u306D\u3080\u308A: ["japanese"], \u3044\u306E\u3061: ["japanese"], \u3044\u306E\u308B: ["japanese"], \u3044\u306F\u3064: ["japanese"], \u3044\u306F\u3099\u308B: ["japanese"], \u3044\u306F\u3093: ["japanese"], \u3044\u3072\u3099\u304D: ["japanese"], \u3044\u3072\u3093: ["japanese"], \u3044\u3075\u304F: ["japanese"], \u3044\u3078\u3093: ["japanese"], \u3044\u307B\u3046: ["japanese"], \u3044\u307F\u3093: ["japanese"], \u3044\u3082\u3046\u3068: ["japanese"], \u3044\u3082\u305F\u308C: ["japanese"], \u3044\u3082\u308A: ["japanese"], \u3044\u3084\u304B\u3099\u308B: ["japanese"], \u3044\u3084\u3059: ["japanese"], \u3044\u3088\u304B\u3093: ["japanese"], \u3044\u3088\u304F: ["japanese"], \u3044\u3089\u3044: ["japanese"], \u3044\u3089\u3059\u3068: ["japanese"], \u3044\u308A\u304F\u3099\u3061: ["japanese"], \u3044\u308A\u3087\u3046: ["japanese"], \u3044\u308C\u3044: ["japanese"], \u3044\u308C\u3082\u306E: ["japanese"], \u3044\u308C\u308B: ["japanese"], \u3044\u308D\u3048\u3093\u3072\u309A\u3064: ["japanese"], \u3044\u308F\u3044: ["japanese"], \u3044\u308F\u3046: ["japanese"], \u3044\u308F\u304B\u3093: ["japanese"], \u3044\u308F\u306F\u3099: ["japanese"], \u3044\u308F\u3086\u308B: ["japanese"], \u3044\u3093\u3051\u3099\u3093\u307E\u3081: ["japanese"], \u3044\u3093\u3055\u3064: ["japanese"], \u3044\u3093\u3057\u3087\u3046: ["japanese"], \u3044\u3093\u3088\u3046: ["japanese"], \u3046\u3048\u304D: ["japanese"], \u3046\u3048\u308B: ["japanese"], \u3046\u304A\u3055\u3099: ["japanese"], \u3046\u304B\u3099\u3044: ["japanese"], \u3046\u304B\u3075\u3099: ["japanese"], \u3046\u304B\u3078\u3099\u308B: ["japanese"], \u3046\u304D\u308F: ["japanese"], \u3046\u304F\u3089\u3044\u306A: ["japanese"], \u3046\u304F\u308C\u308C: ["japanese"], \u3046\u3051\u305F\u307E\u308F\u308B: ["japanese"], \u3046\u3051\u3064\u3051: ["japanese"], \u3046\u3051\u3068\u308B: ["japanese"], \u3046\u3051\u3082\u3064: ["japanese"], \u3046\u3051\u308B: ["japanese"], \u3046\u3053\u3099\u304B\u3059: ["japanese"], \u3046\u3053\u3099\u304F: ["japanese"], \u3046\u3053\u3093: ["japanese"], \u3046\u3055\u304D\u3099: ["japanese"], \u3046\u3057\u306A\u3046: ["japanese"], \u3046\u3057\u308D\u304B\u3099\u307F: ["japanese"], \u3046\u3059\u3044: ["japanese"], \u3046\u3059\u304D\u3099: ["japanese"], \u3046\u3059\u304F\u3099\u3089\u3044: ["japanese"], \u3046\u3059\u3081\u308B: ["japanese"], \u3046\u305B\u3064: ["japanese"], \u3046\u3061\u3042\u308F\u305B: ["japanese"], \u3046\u3061\u304B\u3099\u308F: ["japanese"], \u3046\u3061\u304D: ["japanese"], \u3046\u3061\u3085\u3046: ["japanese"], \u3046\u3063\u304B\u308A: ["japanese"], \u3046\u3064\u304F\u3057\u3044: ["japanese"], \u3046\u3063\u305F\u3048\u308B: ["japanese"], \u3046\u3064\u308B: ["japanese"], \u3046\u3068\u3099\u3093: ["japanese"], \u3046\u306A\u304D\u3099: ["japanese"], \u3046\u306A\u3057\u3099: ["japanese"], \u3046\u306A\u3059\u3099\u304F: ["japanese"], \u3046\u306A\u308B: ["japanese"], \u3046\u306D\u308B: ["japanese"], \u3046\u306E\u3046: ["japanese"], \u3046\u3075\u3099\u3051\u3099: ["japanese"], \u3046\u3075\u3099\u3053\u3099\u3048: ["japanese"], \u3046\u307E\u308C\u308B: ["japanese"], \u3046\u3081\u308B: ["japanese"], \u3046\u3082\u3046: ["japanese"], \u3046\u3084\u307E\u3046: ["japanese"], \u3046\u3088\u304F: ["japanese"], \u3046\u3089\u304B\u3099\u3048\u3059: ["japanese"], \u3046\u3089\u304F\u3099\u3061: ["japanese"], \u3046\u3089\u306A\u3044: ["japanese"], \u3046\u308A\u3042\u3051\u3099: ["japanese"], \u3046\u308A\u304D\u308C: ["japanese"], \u3046\u308B\u3055\u3044: ["japanese"], \u3046\u308C\u3057\u3044: ["japanese"], \u3046\u308C\u3086\u304D: ["japanese"], \u3046\u308C\u308B: ["japanese"], \u3046\u308D\u3053: ["japanese"], \u3046\u308F\u304D: ["japanese"], \u3046\u308F\u3055: ["japanese"], \u3046\u3093\u3053\u3046: ["japanese"], \u3046\u3093\u3061\u3093: ["japanese"], \u3046\u3093\u3066\u3093: ["japanese"], \u3046\u3093\u3068\u3099\u3046: ["japanese"], \u3048\u3044\u3048\u3093: ["japanese"], \u3048\u3044\u304B\u3099: ["japanese"], \u3048\u3044\u304D\u3087\u3046: ["japanese"], \u3048\u3044\u3053\u3099: ["japanese"], \u3048\u3044\u305B\u3044: ["japanese"], \u3048\u3044\u3075\u3099\u3093: ["japanese"], \u3048\u3044\u3088\u3046: ["japanese"], \u3048\u3044\u308F: ["japanese"], \u3048\u304A\u308A: ["japanese"], \u3048\u304B\u3099\u304A: ["japanese"], \u3048\u304B\u3099\u304F: ["japanese"], \u3048\u304D\u305F\u3044: ["japanese"], \u3048\u304F\u305B\u308B: ["japanese"], \u3048\u3057\u3083\u304F: ["japanese"], \u3048\u3059\u3066: ["japanese"], \u3048\u3064\u3089\u3093: ["japanese"], \u3048\u306E\u304F\u3099: ["japanese"], \u3048\u307B\u3046\u307E\u304D: ["japanese"], \u3048\u307B\u3093: ["japanese"], \u3048\u307E\u304D: ["japanese"], \u3048\u3082\u3057\u3099: ["japanese"], \u3048\u3082\u306E: ["japanese"], \u3048\u3089\u3044: ["japanese"], \u3048\u3089\u3075\u3099: ["japanese"], \u3048\u308A\u3042: ["japanese"], \u3048\u3093\u3048\u3093: ["japanese"], \u3048\u3093\u304B\u3044: ["japanese"], \u3048\u3093\u304D\u3099: ["japanese"], \u3048\u3093\u3051\u3099\u304D: ["japanese"], \u3048\u3093\u3057\u3085\u3046: ["japanese"], \u3048\u3093\u305B\u3099\u3064: ["japanese"], \u3048\u3093\u305D\u304F: ["japanese"], \u3048\u3093\u3061\u3087\u3046: ["japanese"], \u3048\u3093\u3068\u3064: ["japanese"], \u304A\u3044\u304B\u3051\u308B: ["japanese"], \u304A\u3044\u3053\u3059: ["japanese"], \u304A\u3044\u3057\u3044: ["japanese"], \u304A\u3044\u3064\u304F: ["japanese"], \u304A\u3046\u3048\u3093: ["japanese"], \u304A\u3046\u3055\u307E: ["japanese"], \u304A\u3046\u3057\u3099: ["japanese"], \u304A\u3046\u305B\u3064: ["japanese"], \u304A\u3046\u305F\u3044: ["japanese"], \u304A\u3046\u3075\u304F: ["japanese"], \u304A\u3046\u3078\u3099\u3044: ["japanese"], \u304A\u3046\u3088\u3046: ["japanese"], \u304A\u3048\u308B: ["japanese"], \u304A\u304A\u3044: ["japanese"], \u304A\u304A\u3046: ["japanese"], \u304A\u304A\u3068\u3099\u304A\u308A: ["japanese"], \u304A\u304A\u3084: ["japanese"], \u304A\u304A\u3088\u305D: ["japanese"], \u304A\u304B\u3048\u308A: ["japanese"], \u304A\u304B\u3059\u3099: ["japanese"], \u304A\u304B\u3099\u3080: ["japanese"], \u304A\u304B\u308F\u308A: ["japanese"], \u304A\u304D\u3099\u306A\u3046: ["japanese"], \u304A\u304D\u308B: ["japanese"], \u304A\u304F\u3055\u307E: ["japanese"], \u304A\u304F\u3057\u3099\u3087\u3046: ["japanese"], \u304A\u304F\u308A\u304B\u3099\u306A: ["japanese"], \u304A\u304F\u308B: ["japanese"], \u304A\u304F\u308C\u308B: ["japanese"], \u304A\u3053\u3059: ["japanese"], \u304A\u3053\u306A\u3046: ["japanese"], \u304A\u3053\u308B: ["japanese"], \u304A\u3055\u3048\u308B: ["japanese"], \u304A\u3055\u306A\u3044: ["japanese"], \u304A\u3055\u3081\u308B: ["japanese"], \u304A\u3057\u3044\u308C: ["japanese"], \u304A\u3057\u3048\u308B: ["japanese"], \u304A\u3057\u3099\u304D\u3099: ["japanese"], \u304A\u3057\u3099\u3055\u3093: ["japanese"], \u304A\u3057\u3083\u308C: ["japanese"], \u304A\u305D\u3089\u304F: ["japanese"], \u304A\u305D\u308F\u308B: ["japanese"], \u304A\u305F\u304B\u3099\u3044: ["japanese"], \u304A\u305F\u304F: ["japanese"], \u304A\u305F\u3099\u3084\u304B: ["japanese"], \u304A\u3061\u3064\u304F: ["japanese"], \u304A\u3063\u3068: ["japanese"], \u304A\u3064\u308A: ["japanese"], \u304A\u3066\u3099\u304B\u3051: ["japanese"], \u304A\u3068\u3057\u3082\u306E: ["japanese"], \u304A\u3068\u306A\u3057\u3044: ["japanese"], \u304A\u3068\u3099\u308A: ["japanese"], \u304A\u3068\u3099\u308D\u304B\u3059: ["japanese"], \u304A\u306F\u3099\u3055\u3093: ["japanese"], \u304A\u307E\u3044\u308A: ["japanese"], \u304A\u3081\u3066\u3099\u3068\u3046: ["japanese"], \u304A\u3082\u3044\u3066\u3099: ["japanese"], \u304A\u3082\u3046: ["japanese"], \u304A\u3082\u305F\u3044: ["japanese"], \u304A\u3082\u3061\u3083: ["japanese"], \u304A\u3084\u3064: ["japanese"], \u304A\u3084\u3086\u3072\u3099: ["japanese"], \u304A\u3088\u307B\u3099\u3059: ["japanese"], \u304A\u3089\u3093\u305F\u3099: ["japanese"], \u304A\u308D\u3059: ["japanese"], \u304A\u3093\u304B\u3099\u304F: ["japanese"], \u304A\u3093\u3051\u3044: ["japanese"], \u304A\u3093\u3057\u3083: ["japanese"], \u304A\u3093\u305B\u3093: ["japanese"], \u304A\u3093\u305F\u3099\u3093: ["japanese"], \u304A\u3093\u3061\u3085\u3046: ["japanese"], \u304A\u3093\u3068\u3099\u3051\u3044: ["japanese"], \u304B\u3042\u3064: ["japanese"], \u304B\u3044\u304B\u3099: ["japanese"], \u304B\u3099\u3044\u304D: ["japanese"], \u304B\u3099\u3044\u3051\u3093: ["japanese"], \u304B\u3099\u3044\u3053\u3046: ["japanese"], \u304B\u3044\u3055\u3064: ["japanese"], \u304B\u3044\u3057\u3083: ["japanese"], \u304B\u3044\u3059\u3044\u3088\u304F: ["japanese"], \u304B\u3044\u305B\u3099\u3093: ["japanese"], \u304B\u3044\u305D\u3099\u3046\u3068\u3099: ["japanese"], \u304B\u3044\u3064\u3046: ["japanese"], \u304B\u3044\u3066\u3093: ["japanese"], \u304B\u3044\u3068\u3046: ["japanese"], \u304B\u3044\u3075\u304F: ["japanese"], \u304B\u3099\u3044\u3078\u304D: ["japanese"], \u304B\u3044\u307B\u3046: ["japanese"], \u304B\u3044\u3088\u3046: ["japanese"], \u304B\u3099\u3044\u3089\u3044: ["japanese"], \u304B\u3044\u308F: ["japanese"], \u304B\u3048\u308B: ["japanese"], \u304B\u304A\u308A: ["japanese"], \u304B\u304B\u3048\u308B: ["japanese"], \u304B\u304B\u3099\u304F: ["japanese"], \u304B\u304B\u3099\u3057: ["japanese"], \u304B\u304B\u3099\u307F: ["japanese"], \u304B\u304F\u3053\u3099: ["japanese"], \u304B\u304F\u3068\u304F: ["japanese"], \u304B\u3055\u3099\u308B: ["japanese"], \u304B\u3099\u305D\u3099\u3046: ["japanese"], \u304B\u305F\u3044: ["japanese"], \u304B\u305F\u3061: ["japanese"], \u304B\u3099\u3061\u3087\u3046: ["japanese"], \u304B\u3099\u3063\u304D\u3085\u3046: ["japanese"], \u304B\u3099\u3063\u3053\u3046: ["japanese"], \u304B\u3099\u3063\u3055\u3093: ["japanese"], \u304B\u3099\u3063\u3057\u3087\u3046: ["japanese"], \u304B\u306A\u3055\u3099\u308F\u3057: ["japanese"], \u304B\u306E\u3046: ["japanese"], \u304B\u3099\u306F\u304F: ["japanese"], \u304B\u3075\u3099\u304B: ["japanese"], \u304B\u307B\u3046: ["japanese"], \u304B\u307B\u3053\u3099: ["japanese"], \u304B\u307E\u3046: ["japanese"], \u304B\u307E\u307B\u3099\u3053: ["japanese"], \u304B\u3081\u308C\u304A\u3093: ["japanese"], \u304B\u3086\u3044: ["japanese"], \u304B\u3088\u3046\u3072\u3099: ["japanese"], \u304B\u3089\u3044: ["japanese"], \u304B\u308B\u3044: ["japanese"], \u304B\u308D\u3046: ["japanese"], \u304B\u308F\u304F: ["japanese"], \u304B\u308F\u3089: ["japanese"], \u304B\u3099\u3093\u304B: ["japanese"], \u304B\u3093\u3051\u3044: ["japanese"], \u304B\u3093\u3053\u3046: ["japanese"], \u304B\u3093\u3057\u3083: ["japanese"], \u304B\u3093\u305D\u3046: ["japanese"], \u304B\u3093\u305F\u3093: ["japanese"], \u304B\u3093\u3061: ["japanese"], \u304B\u3099\u3093\u306F\u3099\u308B: ["japanese"], \u304D\u3042\u3044: ["japanese"], \u304D\u3042\u3064: ["japanese"], \u304D\u3044\u308D: ["japanese"], \u304D\u3099\u3044\u3093: ["japanese"], \u304D\u3046\u3044: ["japanese"], \u304D\u3046\u3093: ["japanese"], \u304D\u3048\u308B: ["japanese"], \u304D\u304A\u3046: ["japanese"], \u304D\u304A\u304F: ["japanese"], \u304D\u304A\u3061: ["japanese"], \u304D\u304A\u3093: ["japanese"], \u304D\u304B\u3044: ["japanese"], \u304D\u304B\u304F: ["japanese"], \u304D\u304B\u3093\u3057\u3083: ["japanese"], \u304D\u304D\u3066: ["japanese"], \u304D\u304F\u306F\u3099\u308A: ["japanese"], \u304D\u304F\u3089\u3051\u3099: ["japanese"], \u304D\u3051\u3093\u305B\u3044: ["japanese"], \u304D\u3053\u3046: ["japanese"], \u304D\u3053\u3048\u308B: ["japanese"], \u304D\u3053\u304F: ["japanese"], \u304D\u3055\u3044: ["japanese"], \u304D\u3055\u304F: ["japanese"], \u304D\u3055\u307E: ["japanese"], \u304D\u3055\u3089\u304D\u3099: ["japanese"], \u304D\u3099\u3057\u3099\u304B\u304B\u3099\u304F: ["japanese"], \u304D\u3099\u3057\u304D: ["japanese"], \u304D\u3099\u3057\u3099\u305F\u3044\u3051\u3093: ["japanese"], \u304D\u3099\u3057\u3099\u306B\u3063\u3066\u3044: ["japanese"], \u304D\u3099\u3057\u3099\u3085\u3064\u3057\u3083: ["japanese"], \u304D\u3059\u3046: ["japanese"], \u304D\u305B\u3044: ["japanese"], \u304D\u305B\u304D: ["japanese"], \u304D\u305B\u3064: ["japanese"], \u304D\u305D\u3046: ["japanese"], \u304D\u305D\u3099\u304F: ["japanese"], \u304D\u305D\u3099\u3093: ["japanese"], \u304D\u305F\u3048\u308B: ["japanese"], \u304D\u3061\u3087\u3046: ["japanese"], \u304D\u3064\u3048\u3093: ["japanese"], \u304D\u3099\u3063\u3061\u308A: ["japanese"], \u304D\u3064\u3064\u304D: ["japanese"], \u304D\u3064\u306D: ["japanese"], \u304D\u3066\u3044: ["japanese"], \u304D\u3068\u3099\u3046: ["japanese"], \u304D\u3068\u3099\u304F: ["japanese"], \u304D\u306A\u3044: ["japanese"], \u304D\u306A\u304B\u3099: ["japanese"], \u304D\u306A\u3053: ["japanese"], \u304D\u306C\u3053\u3099\u3057: ["japanese"], \u304D\u306D\u3093: ["japanese"], \u304D\u306E\u3046: ["japanese"], \u304D\u306E\u3057\u305F: ["japanese"], \u304D\u306F\u304F: ["japanese"], \u304D\u3072\u3099\u3057\u3044: ["japanese"], \u304D\u3072\u3093: ["japanese"], \u304D\u3075\u304F: ["japanese"], \u304D\u3075\u3099\u3093: ["japanese"], \u304D\u307B\u3099\u3046: ["japanese"], \u304D\u307B\u3093: ["japanese"], \u304D\u307E\u308B: ["japanese"], \u304D\u307F\u3064: ["japanese"], \u304D\u3080\u3059\u3099\u304B\u3057\u3044: ["japanese"], \u304D\u3081\u308B: ["japanese"], \u304D\u3082\u305F\u3099\u3081\u3057: ["japanese"], \u304D\u3082\u3061: ["japanese"], \u304D\u3082\u306E: ["japanese"], \u304D\u3083\u304F: ["japanese"], \u304D\u3084\u304F: ["japanese"], \u304D\u3099\u3085\u3046\u306B\u304F: ["japanese"], \u304D\u3088\u3046: ["japanese"], \u304D\u3087\u3046\u308A\u3085\u3046: ["japanese"], \u304D\u3089\u3044: ["japanese"], \u304D\u3089\u304F: ["japanese"], \u304D\u308A\u3093: ["japanese"], \u304D\u308C\u3044: ["japanese"], \u304D\u308C\u3064: ["japanese"], \u304D\u308D\u304F: ["japanese"], \u304D\u3099\u308D\u3093: ["japanese"], \u304D\u308F\u3081\u308B: ["japanese"], \u304D\u3099\u3093\u3044\u308D: ["japanese"], \u304D\u3093\u304B\u304F\u3057\u3099: ["japanese"], \u304D\u3093\u3057\u3099\u3087: ["japanese"], \u304D\u3093\u3088\u3046\u3072\u3099: ["japanese"], \u304F\u3099\u3042\u3044: ["japanese"], \u304F\u3044\u3059\u3099: ["japanese"], \u304F\u3046\u304B\u3093: ["japanese"], \u304F\u3046\u304D: ["japanese"], \u304F\u3046\u304F\u3099\u3093: ["japanese"], \u304F\u3046\u3053\u3046: ["japanese"], \u304F\u3099\u3046\u305B\u3044: ["japanese"], \u304F\u3046\u305D\u3046: ["japanese"], \u304F\u3099\u3046\u305F\u3089: ["japanese"], \u304F\u3046\u3075\u304F: ["japanese"], \u304F\u3046\u307B\u3099: ["japanese"], \u304F\u304B\u3093: ["japanese"], \u304F\u304D\u3087\u3046: ["japanese"], \u304F\u3051\u3099\u3093: ["japanese"], \u304F\u3099\u3053\u3046: ["japanese"], \u304F\u3055\u3044: ["japanese"], \u304F\u3055\u304D: ["japanese"], \u304F\u3055\u306F\u3099\u306A: ["japanese"], \u304F\u3055\u308B: ["japanese"], \u304F\u3057\u3083\u307F: ["japanese"], \u304F\u3057\u3087\u3046: ["japanese"], \u304F\u3059\u306E\u304D: ["japanese"], \u304F\u3059\u308A\u3086\u3072\u3099: ["japanese"], \u304F\u305B\u3051\u3099: ["japanese"], \u304F\u305B\u3093: ["japanese"], \u304F\u3099\u305F\u3044\u3066\u304D: ["japanese"], \u304F\u305F\u3099\u3055\u308B: ["japanese"], \u304F\u305F\u3072\u3099\u308C\u308B: ["japanese"], \u304F\u3061\u3053\u307F: ["japanese"], \u304F\u3061\u3055\u304D: ["japanese"], \u304F\u3064\u3057\u305F: ["japanese"], \u304F\u3099\u3063\u3059\u308A: ["japanese"], \u304F\u3064\u308D\u304F\u3099: ["japanese"], \u304F\u3068\u3046\u3066\u3093: ["japanese"], \u304F\u3068\u3099\u304F: ["japanese"], \u304F\u306A\u3093: ["japanese"], \u304F\u306D\u304F\u306D: ["japanese"], \u304F\u306E\u3046: ["japanese"], \u304F\u3075\u3046: ["japanese"], \u304F\u307F\u3042\u308F\u305B: ["japanese"], \u304F\u307F\u305F\u3066\u308B: ["japanese"], \u304F\u3081\u308B: ["japanese"], \u304F\u3084\u304F\u3057\u3087: ["japanese"], \u304F\u3089\u3059: ["japanese"], \u304F\u3089\u3078\u3099\u308B: ["japanese"], \u304F\u308B\u307E: ["japanese"], \u304F\u308C\u308B: ["japanese"], \u304F\u308D\u3046: ["japanese"], \u304F\u308F\u3057\u3044: ["japanese"], \u304F\u3099\u3093\u304B\u3093: ["japanese"], \u304F\u3099\u3093\u3057\u3087\u304F: ["japanese"], \u304F\u3099\u3093\u305F\u3044: ["japanese"], \u304F\u3099\u3093\u3066: ["japanese"], \u3051\u3042\u306A: ["japanese"], \u3051\u3044\u304B\u304F: ["japanese"], \u3051\u3044\u3051\u3093: ["japanese"], \u3051\u3044\u3053: ["japanese"], \u3051\u3044\u3055\u3064: ["japanese"], \u3051\u3099\u3044\u3057\u3099\u3085\u3064: ["japanese"], \u3051\u3044\u305F\u3044: ["japanese"], \u3051\u3099\u3044\u306E\u3046\u3057\u3099\u3093: ["japanese"], \u3051\u3044\u308C\u304D: ["japanese"], \u3051\u3044\u308D: ["japanese"], \u3051\u304A\u3068\u3059: ["japanese"], \u3051\u304A\u308A\u3082\u306E: ["japanese"], \u3051\u3099\u304D\u304B: ["japanese"], \u3051\u3099\u304D\u3051\u3099\u3093: ["japanese"], \u3051\u3099\u304D\u305F\u3099\u3093: ["japanese"], \u3051\u3099\u304D\u3061\u3093: ["japanese"], \u3051\u3099\u304D\u3068\u3064: ["japanese"], \u3051\u3099\u304D\u306F: ["japanese"], \u3051\u3099\u304D\u3084\u304F: ["japanese"], \u3051\u3099\u3053\u3046: ["japanese"], \u3051\u3099\u3053\u304F\u3057\u3099\u3087\u3046: ["japanese"], \u3051\u3099\u3055\u3099\u3044: ["japanese"], \u3051\u3055\u304D: ["japanese"], \u3051\u3099\u3055\u3099\u3093: ["japanese"], \u3051\u3057\u304D: ["japanese"], \u3051\u3057\u3053\u3099\u3080: ["japanese"], \u3051\u3057\u3087\u3046: ["japanese"], \u3051\u3099\u3059\u3068: ["japanese"], \u3051\u305F\u306F\u3099: ["japanese"], \u3051\u3061\u3083\u3063\u3075\u309A: ["japanese"], \u3051\u3061\u3089\u3059: ["japanese"], \u3051\u3064\u3042\u3064: ["japanese"], \u3051\u3064\u3044: ["japanese"], \u3051\u3064\u3048\u304D: ["japanese"], \u3051\u3063\u3053\u3093: ["japanese"], \u3051\u3064\u3057\u3099\u3087: ["japanese"], \u3051\u3063\u305B\u304D: ["japanese"], \u3051\u3063\u3066\u3044: ["japanese"], \u3051\u3064\u307E\u3064: ["japanese"], \u3051\u3099\u3064\u3088\u3046\u3072\u3099: ["japanese"], \u3051\u3099\u3064\u308C\u3044: ["japanese"], \u3051\u3064\u308D\u3093: ["japanese"], \u3051\u3099\u3068\u3099\u304F: ["japanese"], \u3051\u3068\u306F\u3099\u3059: ["japanese"], \u3051\u3068\u308B: ["japanese"], \u3051\u306A\u3051\u3099: ["japanese"], \u3051\u306A\u3059: ["japanese"], \u3051\u306A\u307F: ["japanese"], \u3051\u306C\u304D: ["japanese"], \u3051\u3099\u306D\u3064: ["japanese"], \u3051\u306D\u3093: ["japanese"], \u3051\u306F\u3044: ["japanese"], \u3051\u3099\u3072\u3093: ["japanese"], \u3051\u3075\u3099\u304B\u3044: ["japanese"], \u3051\u3099\u307B\u3099\u304F: ["japanese"], \u3051\u307E\u308A: ["japanese"], \u3051\u307F\u304B\u308B: ["japanese"], \u3051\u3080\u3057: ["japanese"], \u3051\u3080\u308A: ["japanese"], \u3051\u3082\u306E: ["japanese"], \u3051\u3089\u3044: ["japanese"], \u3051\u308D\u3051\u308D: ["japanese"], \u3051\u308F\u3057\u3044: ["japanese"], \u3051\u3093\u3044: ["japanese"], \u3051\u3093\u3048\u3064: ["japanese"], \u3051\u3093\u304A: ["japanese"], \u3051\u3093\u304B: ["japanese"], \u3051\u3099\u3093\u304D: ["japanese"], \u3051\u3093\u3051\u3099\u3093: ["japanese"], \u3051\u3093\u3053\u3046: ["japanese"], \u3051\u3093\u3055\u304F: ["japanese"], \u3051\u3093\u3057\u3085\u3046: ["japanese"], \u3051\u3093\u3059\u3046: ["japanese"], \u3051\u3099\u3093\u305D\u3046: ["japanese"], \u3051\u3093\u3061\u304F: ["japanese"], \u3051\u3093\u3066\u3044: ["japanese"], \u3051\u3093\u3068\u3046: ["japanese"], \u3051\u3093\u306A\u3044: ["japanese"], \u3051\u3093\u306B\u3093: ["japanese"], \u3051\u3099\u3093\u3075\u3099\u3064: ["japanese"], \u3051\u3093\u307E: ["japanese"], \u3051\u3093\u307F\u3093: ["japanese"], \u3051\u3093\u3081\u3044: ["japanese"], \u3051\u3093\u3089\u3093: ["japanese"], \u3051\u3093\u308A: ["japanese"], \u3053\u3042\u304F\u307E: ["japanese"], \u3053\u3044\u306C: ["japanese"], \u3053\u3044\u3072\u3099\u3068: ["japanese"], \u3053\u3099\u3046\u3044: ["japanese"], \u3053\u3046\u3048\u3093: ["japanese"], \u3053\u3046\u304A\u3093: ["japanese"], \u3053\u3046\u304B\u3093: ["japanese"], \u3053\u3099\u3046\u304D\u3085\u3046: ["japanese"], \u3053\u3099\u3046\u3051\u3044: ["japanese"], \u3053\u3046\u3053\u3046: ["japanese"], \u3053\u3046\u3055\u3044: ["japanese"], \u3053\u3046\u3057\u3099: ["japanese"], \u3053\u3046\u3059\u3044: ["japanese"], \u3053\u3099\u3046\u305B\u3044: ["japanese"], \u3053\u3046\u305D\u304F: ["japanese"], \u3053\u3046\u305F\u3044: ["japanese"], \u3053\u3046\u3061\u3083: ["japanese"], \u3053\u3046\u3064\u3046: ["japanese"], \u3053\u3046\u3066\u3044: ["japanese"], \u3053\u3046\u3068\u3099\u3046: ["japanese"], \u3053\u3046\u306A\u3044: ["japanese"], \u3053\u3046\u306F\u3044: ["japanese"], \u3053\u3099\u3046\u307B\u3046: ["japanese"], \u3053\u3099\u3046\u307E\u3093: ["japanese"], \u3053\u3046\u3082\u304F: ["japanese"], \u3053\u3046\u308A\u3064: ["japanese"], \u3053\u3048\u308B: ["japanese"], \u3053\u304A\u308A: ["japanese"], \u3053\u3099\u304B\u3044: ["japanese"], \u3053\u3099\u304B\u3099\u3064: ["japanese"], \u3053\u3099\u304B\u3093: ["japanese"], \u3053\u304F\u3053\u3099: ["japanese"], \u3053\u304F\u3055\u3044: ["japanese"], \u3053\u304F\u3068\u3046: ["japanese"], \u3053\u304F\u306A\u3044: ["japanese"], \u3053\u304F\u306F\u304F: ["japanese"], \u3053\u304F\u3099\u307E: ["japanese"], \u3053\u3051\u3044: ["japanese"], \u3053\u3051\u308B: ["japanese"], \u3053\u3053\u306E\u304B: ["japanese"], \u3053\u3053\u308D: ["japanese"], \u3053\u3055\u3081: ["japanese"], \u3053\u3057\u3064: ["japanese"], \u3053\u3059\u3046: ["japanese"], \u3053\u305B\u3044: ["japanese"], \u3053\u305B\u304D: ["japanese"], \u3053\u305B\u3099\u3093: ["japanese"], \u3053\u305D\u305F\u3099\u3066: ["japanese"], \u3053\u305F\u3044: ["japanese"], \u3053\u305F\u3048\u308B: ["japanese"], \u3053\u305F\u3064: ["japanese"], \u3053\u3061\u3087\u3046: ["japanese"], \u3053\u3063\u304B: ["japanese"], \u3053\u3064\u3053\u3064: ["japanese"], \u3053\u3064\u306F\u3099\u3093: ["japanese"], \u3053\u3064\u3075\u3099: ["japanese"], \u3053\u3066\u3044: ["japanese"], \u3053\u3066\u3093: ["japanese"], \u3053\u3068\u304B\u3099\u3089: ["japanese"], \u3053\u3068\u3057: ["japanese"], \u3053\u3068\u306F\u3099: ["japanese"], \u3053\u3068\u308A: ["japanese"], \u3053\u306A\u3053\u3099\u306A: ["japanese"], \u3053\u306D\u3053\u306D: ["japanese"], \u3053\u306E\u307E\u307E: ["japanese"], \u3053\u306E\u307F: ["japanese"], \u3053\u306E\u3088: ["japanese"], \u3053\u3099\u306F\u3093: ["japanese"], \u3053\u3072\u3064\u3057\u3099: ["japanese"], \u3053\u3075\u3046: ["japanese"], \u3053\u3075\u3093: ["japanese"], \u3053\u307B\u3099\u308C\u308B: ["japanese"], \u3053\u3099\u307E\u3042\u3075\u3099\u3089: ["japanese"], \u3053\u307E\u304B\u3044: ["japanese"], \u3053\u3099\u307E\u3059\u308A: ["japanese"], \u3053\u307E\u3064\u306A: ["japanese"], \u3053\u307E\u308B: ["japanese"], \u3053\u3080\u304D\u3099\u3053: ["japanese"], \u3053\u3082\u3057\u3099: ["japanese"], \u3053\u3082\u3061: ["japanese"], \u3053\u3082\u306E: ["japanese"], \u3053\u3082\u3093: ["japanese"], \u3053\u3084\u304F: ["japanese"], \u3053\u3084\u307E: ["japanese"], \u3053\u3086\u3046: ["japanese"], \u3053\u3086\u3072\u3099: ["japanese"], \u3053\u3088\u3044: ["japanese"], \u3053\u3088\u3046: ["japanese"], \u3053\u308A\u308B: ["japanese"], \u3053\u308C\u304F\u3057\u3087\u3093: ["japanese"], \u3053\u308D\u3063\u3051: ["japanese"], \u3053\u308F\u3082\u3066: ["japanese"], \u3053\u308F\u308C\u308B: ["japanese"], \u3053\u3093\u3044\u3093: ["japanese"], \u3053\u3093\u304B\u3044: ["japanese"], \u3053\u3093\u304D: ["japanese"], \u3053\u3093\u3057\u3085\u3046: ["japanese"], \u3053\u3093\u3059\u3044: ["japanese"], \u3053\u3093\u305F\u3099\u3066: ["japanese"], \u3053\u3093\u3068\u3093: ["japanese"], \u3053\u3093\u306A\u3093: ["japanese"], \u3053\u3093\u3072\u3099\u306B: ["japanese"], \u3053\u3093\u307B\u309A\u3093: ["japanese"], \u3053\u3093\u307E\u3051: ["japanese"], \u3053\u3093\u3084: ["japanese"], \u3053\u3093\u308C\u3044: ["japanese"], \u3053\u3093\u308F\u304F: ["japanese"], \u3055\u3099\u3044\u3048\u304D: ["japanese"], \u3055\u3044\u304B\u3044: ["japanese"], \u3055\u3044\u304D\u3093: ["japanese"], \u3055\u3099\u3044\u3051\u3099\u3093: ["japanese"], \u3055\u3099\u3044\u3053: ["japanese"], \u3055\u3044\u3057\u3087: ["japanese"], \u3055\u3044\u305B\u3044: ["japanese"], \u3055\u3099\u3044\u305F\u304F: ["japanese"], \u3055\u3099\u3044\u3061\u3085\u3046: ["japanese"], \u3055\u3044\u3066\u304D: ["japanese"], \u3055\u3099\u3044\u308A\u3087\u3046: ["japanese"], \u3055\u3046\u306A: ["japanese"], \u3055\u304B\u3044\u3057: ["japanese"], \u3055\u304B\u3099\u3059: ["japanese"], \u3055\u304B\u306A: ["japanese"], \u3055\u304B\u307F\u3061: ["japanese"], \u3055\u304B\u3099\u308B: ["japanese"], \u3055\u304D\u3099\u3087\u3046: ["japanese"], \u3055\u304F\u3057: ["japanese"], \u3055\u304F\u3072\u3093: ["japanese"], \u3055\u304F\u3089: ["japanese"], \u3055\u3053\u304F: ["japanese"], \u3055\u3053\u3064: ["japanese"], \u3055\u3059\u3099\u304B\u308B: ["japanese"], \u3055\u3099\u305B\u304D: ["japanese"], \u3055\u305F\u3093: ["japanese"], \u3055\u3064\u3048\u3044: ["japanese"], \u3055\u3099\u3064\u304A\u3093: ["japanese"], \u3055\u3099\u3063\u304B: ["japanese"], \u3055\u3099\u3064\u304B\u3099\u304F: ["japanese"], \u3055\u3063\u304D\u3087\u304F: ["japanese"], \u3055\u3099\u3063\u3057: ["japanese"], \u3055\u3064\u3057\u3099\u3093: ["japanese"], \u3055\u3099\u3063\u305D\u3046: ["japanese"], \u3055\u3064\u305F\u306F\u3099: ["japanese"], \u3055\u3064\u307E\u3044\u3082: ["japanese"], \u3055\u3066\u3044: ["japanese"], \u3055\u3068\u3044\u3082: ["japanese"], \u3055\u3068\u3046: ["japanese"], \u3055\u3068\u304A\u3084: ["japanese"], \u3055\u3068\u3057: ["japanese"], \u3055\u3068\u308B: ["japanese"], \u3055\u306E\u3046: ["japanese"], \u3055\u306F\u3099\u304F: ["japanese"], \u3055\u3072\u3099\u3057\u3044: ["japanese"], \u3055\u3078\u3099\u3064: ["japanese"], \u3055\u307B\u3046: ["japanese"], \u3055\u307B\u3068\u3099: ["japanese"], \u3055\u307E\u3059: ["japanese"], \u3055\u307F\u3057\u3044: ["japanese"], \u3055\u307F\u305F\u3099\u308C: ["japanese"], \u3055\u3080\u3051: ["japanese"], \u3055\u3081\u308B: ["japanese"], \u3055\u3084\u3048\u3093\u3068\u3099\u3046: ["japanese"], \u3055\u3086\u3046: ["japanese"], \u3055\u3088\u3046: ["japanese"], \u3055\u3088\u304F: ["japanese"], \u3055\u3089\u305F\u3099: ["japanese"], \u3055\u3099\u308B\u305D\u306F\u3099: ["japanese"], \u3055\u308F\u3084\u304B: ["japanese"], \u3055\u308F\u308B: ["japanese"], \u3055\u3093\u3044\u3093: ["japanese"], \u3055\u3093\u304B: ["japanese"], \u3055\u3093\u304D\u3083\u304F: ["japanese"], \u3055\u3093\u3053\u3046: ["japanese"], \u3055\u3093\u3055\u3044: ["japanese"], \u3055\u3099\u3093\u3057\u3087: ["japanese"], \u3055\u3093\u3059\u3046: ["japanese"], \u3055\u3093\u305B\u3044: ["japanese"], \u3055\u3093\u305D: ["japanese"], \u3055\u3093\u3061: ["japanese"], \u3055\u3093\u307E: ["japanese"], \u3055\u3093\u307F: ["japanese"], \u3055\u3093\u3089\u3093: ["japanese"], \u3057\u3042\u3044: ["japanese"], \u3057\u3042\u3051\u3099: ["japanese"], \u3057\u3042\u3055\u3063\u3066: ["japanese"], \u3057\u3042\u308F\u305B: ["japanese"], \u3057\u3044\u304F: ["japanese"], \u3057\u3044\u3093: ["japanese"], \u3057\u3046\u3061: ["japanese"], \u3057\u3048\u3044: ["japanese"], \u3057\u304A\u3051: ["japanese"], \u3057\u304B\u3044: ["japanese"], \u3057\u304B\u304F: ["japanese"], \u3057\u3099\u304B\u3093: ["japanese"], \u3057\u3053\u3099\u3068: ["japanese"], \u3057\u3059\u3046: ["japanese"], \u3057\u3099\u305F\u3099\u3044: ["japanese"], \u3057\u305F\u3046\u3051: ["japanese"], \u3057\u305F\u304D\u3099: ["japanese"], \u3057\u305F\u3066: ["japanese"], \u3057\u305F\u307F: ["japanese"], \u3057\u3061\u3087\u3046: ["japanese"], \u3057\u3061\u308A\u3093: ["japanese"], \u3057\u3063\u304B\u308A: ["japanese"], \u3057\u3064\u3057\u3099: ["japanese"], \u3057\u3064\u3082\u3093: ["japanese"], \u3057\u3066\u3044: ["japanese"], \u3057\u3066\u304D: ["japanese"], \u3057\u3066\u3064: ["japanese"], \u3057\u3099\u3066\u3093: ["japanese"], \u3057\u3099\u3068\u3099\u3046: ["japanese"], \u3057\u306A\u304D\u3099\u308C: ["japanese"], \u3057\u306A\u3082\u306E: ["japanese"], \u3057\u306A\u3093: ["japanese"], \u3057\u306D\u307E: ["japanese"], \u3057\u306D\u3093: ["japanese"], \u3057\u306E\u304F\u3099: ["japanese"], \u3057\u306E\u3075\u3099: ["japanese"], \u3057\u306F\u3044: ["japanese"], \u3057\u306F\u3099\u304B\u308A: ["japanese"], \u3057\u306F\u3064: ["japanese"], \u3057\u306F\u3089\u3044: ["japanese"], \u3057\u306F\u3093: ["japanese"], \u3057\u3072\u3087\u3046: ["japanese"], \u3057\u3075\u304F: ["japanese"], \u3057\u3099\u3075\u3099\u3093: ["japanese"], \u3057\u3078\u3044: ["japanese"], \u3057\u307B\u3046: ["japanese"], \u3057\u307B\u3093: ["japanese"], \u3057\u307E\u3046: ["japanese"], \u3057\u307E\u308B: ["japanese"], \u3057\u307F\u3093: ["japanese"], \u3057\u3080\u3051\u308B: ["japanese"], \u3057\u3099\u3080\u3057\u3087: ["japanese"], \u3057\u3081\u3044: ["japanese"], \u3057\u3081\u308B: ["japanese"], \u3057\u3082\u3093: ["japanese"], \u3057\u3083\u3044\u3093: ["japanese"], \u3057\u3083\u3046\u3093: ["japanese"], \u3057\u3083\u304A\u3093: ["japanese"], \u3057\u3099\u3083\u304B\u3099\u3044\u3082: ["japanese"], \u3057\u3084\u304F\u3057\u3087: ["japanese"], \u3057\u3083\u304F\u307B\u3046: ["japanese"], \u3057\u3083\u3051\u3093: ["japanese"], \u3057\u3083\u3053: ["japanese"], \u3057\u3083\u3055\u3099\u3044: ["japanese"], \u3057\u3083\u3057\u3093: ["japanese"], \u3057\u3083\u305B\u3093: ["japanese"], \u3057\u3083\u305D\u3046: ["japanese"], \u3057\u3083\u305F\u3044: ["japanese"], \u3057\u3083\u3061\u3087\u3046: ["japanese"], \u3057\u3083\u3063\u304D\u3093: ["japanese"], \u3057\u3099\u3083\u307E: ["japanese"], \u3057\u3083\u308A\u3093: ["japanese"], \u3057\u3083\u308C\u3044: ["japanese"], \u3057\u3099\u3086\u3046: ["japanese"], \u3057\u3099\u3085\u3046\u3057\u3087: ["japanese"], \u3057\u3085\u304F\u306F\u304F: ["japanese"], \u3057\u3099\u3085\u3057\u3093: ["japanese"], \u3057\u3085\u3063\u305B\u304D: ["japanese"], \u3057\u3085\u307F: ["japanese"], \u3057\u3085\u3089\u306F\u3099: ["japanese"], \u3057\u3099\u3085\u3093\u306F\u3099\u3093: ["japanese"], \u3057\u3087\u3046\u304B\u3044: ["japanese"], \u3057\u3087\u304F\u305F\u304F: ["japanese"], \u3057\u3087\u3063\u3051\u3093: ["japanese"], \u3057\u3087\u3068\u3099\u3046: ["japanese"], \u3057\u3087\u3082\u3064: ["japanese"], \u3057\u3089\u305B\u308B: ["japanese"], \u3057\u3089\u3078\u3099\u308B: ["japanese"], \u3057\u3093\u304B: ["japanese"], \u3057\u3093\u3053\u3046: ["japanese"], \u3057\u3099\u3093\u3057\u3099\u3083: ["japanese"], \u3057\u3093\u305B\u3044\u3057\u3099: ["japanese"], \u3057\u3093\u3061\u304F: ["japanese"], \u3057\u3093\u308A\u3093: ["japanese"], \u3059\u3042\u3051\u3099: ["japanese"], \u3059\u3042\u3057: ["japanese"], \u3059\u3042\u306A: ["japanese"], \u3059\u3099\u3042\u3093: ["japanese"], \u3059\u3044\u3048\u3044: ["japanese"], \u3059\u3044\u304B: ["japanese"], \u3059\u3044\u3068\u3046: ["japanese"], \u3059\u3099\u3044\u3075\u3099\u3093: ["japanese"], \u3059\u3044\u3088\u3046\u3072\u3099: ["japanese"], \u3059\u3046\u304B\u3099\u304F: ["japanese"], \u3059\u3046\u3057\u3099\u3064: ["japanese"], \u3059\u3046\u305B\u3093: ["japanese"], \u3059\u304A\u3068\u3099\u308A: ["japanese"], \u3059\u304D\u307E: ["japanese"], \u3059\u304F\u3046: ["japanese"], \u3059\u304F\u306A\u3044: ["japanese"], \u3059\u3051\u308B: ["japanese"], \u3059\u3053\u3099\u3044: ["japanese"], \u3059\u3053\u3057: ["japanese"], \u3059\u3099\u3055\u3093: ["japanese"], \u3059\u3059\u3099\u3057\u3044: ["japanese"], \u3059\u3059\u3080: ["japanese"], \u3059\u3059\u3081\u308B: ["japanese"], \u3059\u3063\u304B\u308A: ["japanese"], \u3059\u3099\u3063\u3057\u308A: ["japanese"], \u3059\u3099\u3063\u3068: ["japanese"], \u3059\u3066\u304D: ["japanese"], \u3059\u3066\u308B: ["japanese"], \u3059\u306D\u308B: ["japanese"], \u3059\u306E\u3053: ["japanese"], \u3059\u306F\u305F\u3099: ["japanese"], \u3059\u306F\u3099\u3089\u3057\u3044: ["japanese"], \u3059\u3099\u3072\u3087\u3046: ["japanese"], \u3059\u3099\u3075\u3099\u306C\u308C: ["japanese"], \u3059\u3075\u3099\u308A: ["japanese"], \u3059\u3075\u308C: ["japanese"], \u3059\u3078\u3099\u3066: ["japanese"], \u3059\u3078\u3099\u308B: ["japanese"], \u3059\u3099\u307B\u3046: ["japanese"], \u3059\u307B\u3099\u3093: ["japanese"], \u3059\u307E\u3044: ["japanese"], \u3059\u3081\u3057: ["japanese"], \u3059\u3082\u3046: ["japanese"], \u3059\u3084\u304D: ["japanese"], \u3059\u3089\u3059\u3089: ["japanese"], \u3059\u308B\u3081: ["japanese"], \u3059\u308C\u3061\u304B\u3099\u3046: ["japanese"], \u3059\u308D\u3063\u3068: ["japanese"], \u3059\u308F\u308B: ["japanese"], \u3059\u3093\u305B\u3099\u3093: ["japanese"], \u3059\u3093\u307B\u309A\u3046: ["japanese"], \u305B\u3042\u3075\u3099\u3089: ["japanese"], \u305B\u3044\u304B\u3064: ["japanese"], \u305B\u3044\u3051\u3099\u3093: ["japanese"], \u305B\u3044\u3057\u3099: ["japanese"], \u305B\u3044\u3088\u3046: ["japanese"], \u305B\u304A\u3046: ["japanese"], \u305B\u304B\u3044\u304B\u3093: ["japanese"], \u305B\u304D\u306B\u3093: ["japanese"], \u305B\u304D\u3080: ["japanese"], \u305B\u304D\u3086: ["japanese"], \u305B\u304D\u3089\u3093\u3046\u3093: ["japanese"], \u305B\u3051\u3093: ["japanese"], \u305B\u3053\u3046: ["japanese"], \u305B\u3059\u3057\u3099: ["japanese"], \u305B\u305F\u3044: ["japanese"], \u305B\u305F\u3051: ["japanese"], \u305B\u3063\u304B\u304F: ["japanese"], \u305B\u3063\u304D\u3083\u304F: ["japanese"], \u305B\u3099\u3063\u304F: ["japanese"], \u305B\u3063\u3051\u3093: ["japanese"], \u305B\u3063\u3053\u3064: ["japanese"], \u305B\u3063\u3055\u305F\u304F\u307E: ["japanese"], \u305B\u3064\u305D\u3099\u304F: ["japanese"], \u305B\u3064\u305F\u3099\u3093: ["japanese"], \u305B\u3064\u3066\u3099\u3093: ["japanese"], \u305B\u3063\u306F\u309A\u3093: ["japanese"], \u305B\u3064\u3072\u3099: ["japanese"], \u305B\u3064\u3075\u3099\u3093: ["japanese"], \u305B\u3064\u3081\u3044: ["japanese"], \u305B\u3064\u308A\u3064: ["japanese"], \u305B\u306A\u304B: ["japanese"], \u305B\u306E\u3072\u3099: ["japanese"], \u305B\u306F\u306F\u3099: ["japanese"], \u305B\u3072\u3099\u308D: ["japanese"], \u305B\u307B\u3099\u306D: ["japanese"], \u305B\u307E\u3044: ["japanese"], \u305B\u307E\u308B: ["japanese"], \u305B\u3081\u308B: ["japanese"], \u305B\u3082\u305F\u308C: ["japanese"], \u305B\u308A\u3075: ["japanese"], \u305B\u3099\u3093\u3042\u304F: ["japanese"], \u305B\u3093\u3044: ["japanese"], \u305B\u3093\u3048\u3044: ["japanese"], \u305B\u3093\u304B: ["japanese"], \u305B\u3093\u304D\u3087: ["japanese"], \u305B\u3093\u304F: ["japanese"], \u305B\u3093\u3051\u3099\u3093: ["japanese"], \u305B\u3099\u3093\u3053\u3099: ["japanese"], \u305B\u3093\u3055\u3044: ["japanese"], \u305B\u3093\u3057\u3085: ["japanese"], \u305B\u3093\u3059\u3044: ["japanese"], \u305B\u3093\u305B\u3044: ["japanese"], \u305B\u3093\u305D\u3099: ["japanese"], \u305B\u3093\u305F\u304F: ["japanese"], \u305B\u3093\u3061\u3087\u3046: ["japanese"], \u305B\u3093\u3066\u3044: ["japanese"], \u305B\u3093\u3068\u3046: ["japanese"], \u305B\u3093\u306C\u304D: ["japanese"], \u305B\u3093\u306D\u3093: ["japanese"], \u305B\u3093\u306F\u309A\u3044: ["japanese"], \u305B\u3099\u3093\u3075\u3099: ["japanese"], \u305B\u3099\u3093\u307B\u309A\u3046: ["japanese"], \u305B\u3093\u3080: ["japanese"], \u305B\u3093\u3081\u3093\u3057\u3099\u3087: ["japanese"], \u305B\u3093\u3082\u3093: ["japanese"], \u305B\u3093\u3084\u304F: ["japanese"], \u305B\u3093\u3086\u3046: ["japanese"], \u305B\u3093\u3088\u3046: ["japanese"], \u305B\u3099\u3093\u3089: ["japanese"], \u305B\u3099\u3093\u308A\u3083\u304F: ["japanese"], \u305B\u3093\u308C\u3044: ["japanese"], \u305B\u3093\u308D: ["japanese"], \u305D\u3042\u304F: ["japanese"], \u305D\u3044\u3068\u3051\u3099\u308B: ["japanese"], \u305D\u3044\u306D: ["japanese"], \u305D\u3046\u304B\u3099\u3093\u304D\u3087\u3046: ["japanese"], \u305D\u3046\u304D: ["japanese"], \u305D\u3046\u3053\u3099: ["japanese"], \u305D\u3046\u3057\u3093: ["japanese"], \u305D\u3046\u305F\u3099\u3093: ["japanese"], \u305D\u3046\u306A\u3093: ["japanese"], \u305D\u3046\u3072\u3099: ["japanese"], \u305D\u3046\u3081\u3093: ["japanese"], \u305D\u3046\u308A: ["japanese"], \u305D\u3048\u3082\u306E: ["japanese"], \u305D\u3048\u3093: ["japanese"], \u305D\u304B\u3099\u3044: ["japanese"], \u305D\u3051\u3099\u304D: ["japanese"], \u305D\u3053\u3046: ["japanese"], \u305D\u3053\u305D\u3053: ["japanese"], \u305D\u3055\u3099\u3044: ["japanese"], \u305D\u3057\u306A: ["japanese"], \u305D\u305B\u3044: ["japanese"], \u305D\u305B\u3093: ["japanese"], \u305D\u305D\u304F\u3099: ["japanese"], \u305D\u305F\u3099\u3066\u308B: ["japanese"], \u305D\u3064\u3046: ["japanese"], \u305D\u3064\u3048\u3093: ["japanese"], \u305D\u3063\u304B\u3093: ["japanese"], \u305D\u3064\u304D\u3099\u3087\u3046: ["japanese"], \u305D\u3063\u3051\u3064: ["japanese"], \u305D\u3063\u3053\u3046: ["japanese"], \u305D\u3063\u305B\u3093: ["japanese"], \u305D\u3063\u3068: ["japanese"], \u305D\u3068\u304B\u3099\u308F: ["japanese"], \u305D\u3068\u3064\u3099\u3089: ["japanese"], \u305D\u306A\u3048\u308B: ["japanese"], \u305D\u306A\u305F: ["japanese"], \u305D\u3075\u307B\u3099: ["japanese"], \u305D\u307B\u3099\u304F: ["japanese"], \u305D\u307B\u3099\u308D: ["japanese"], \u305D\u307E\u3064: ["japanese"], \u305D\u307E\u308B: ["japanese"], \u305D\u3080\u304F: ["japanese"], \u305D\u3080\u308A\u3048: ["japanese"], \u305D\u3081\u308B: ["japanese"], \u305D\u3082\u305D\u3082: ["japanese"], \u305D\u3088\u304B\u305B\u3099: ["japanese"], \u305D\u3089\u307E\u3081: ["japanese"], \u305D\u308D\u3046: ["japanese"], \u305D\u3093\u304B\u3044: ["japanese"], \u305D\u3093\u3051\u3044: ["japanese"], \u305D\u3093\u3055\u3099\u3044: ["japanese"], \u305D\u3093\u3057\u3064: ["japanese"], \u305D\u3093\u305D\u3099\u304F: ["japanese"], \u305D\u3093\u3061\u3087\u3046: ["japanese"], \u305D\u3099\u3093\u3072\u3099: ["japanese"], \u305D\u3099\u3093\u3075\u3099\u3093: ["japanese"], \u305D\u3093\u307F\u3093: ["japanese"], \u305F\u3042\u3044: ["japanese"], \u305F\u3044\u3044\u3093: ["japanese"], \u305F\u3044\u3046\u3093: ["japanese"], \u305F\u3044\u3048\u304D: ["japanese"], \u305F\u3044\u304A\u3046: ["japanese"], \u305F\u3099\u3044\u304B\u3099\u304F: ["japanese"], \u305F\u3044\u304D: ["japanese"], \u305F\u3044\u304F\u3099\u3046: ["japanese"], \u305F\u3044\u3051\u3093: ["japanese"], \u305F\u3044\u3053: ["japanese"], \u305F\u3044\u3055\u3099\u3044: ["japanese"], \u305F\u3099\u3044\u3057\u3099\u3087\u3046\u3075\u3099: ["japanese"], \u305F\u3099\u3044\u3059\u304D: ["japanese"], \u305F\u3044\u305B\u3064: ["japanese"], \u305F\u3044\u305D\u3046: ["japanese"], \u305F\u3099\u3044\u305F\u3044: ["japanese"], \u305F\u3044\u3061\u3087\u3046: ["japanese"], \u305F\u3044\u3066\u3044: ["japanese"], \u305F\u3099\u3044\u3068\u3099\u3053\u308D: ["japanese"], \u305F\u3044\u306A\u3044: ["japanese"], \u305F\u3044\u306D\u3064: ["japanese"], \u305F\u3044\u306E\u3046: ["japanese"], \u305F\u3044\u306F\u3093: ["japanese"], \u305F\u3099\u3044\u3072\u3087\u3046: ["japanese"], \u305F\u3044\u3075\u3046: ["japanese"], \u305F\u3044\u3078\u3093: ["japanese"], \u305F\u3044\u307B: ["japanese"], \u305F\u3044\u307E\u3064\u306F\u3099\u306A: ["japanese"], \u305F\u3044\u307F\u3093\u304F\u3099: ["japanese"], \u305F\u3044\u3080: ["japanese"], \u305F\u3044\u3081\u3093: ["japanese"], \u305F\u3044\u3084\u304D: ["japanese"], \u305F\u3044\u3088\u3046: ["japanese"], \u305F\u3044\u3089: ["japanese"], \u305F\u3044\u308A\u3087\u304F: ["japanese"], \u305F\u3044\u308B: ["japanese"], \u305F\u3044\u308F\u3093: ["japanese"], \u305F\u3046\u3048: ["japanese"], \u305F\u3048\u308B: ["japanese"], \u305F\u304A\u3059: ["japanese"], \u305F\u304A\u308B: ["japanese"], \u305F\u304A\u308C\u308B: ["japanese"], \u305F\u304B\u3044: ["japanese"], \u305F\u304B\u306D: ["japanese"], \u305F\u304D\u3072\u3099: ["japanese"], \u305F\u304F\u3055\u3093: ["japanese"], \u305F\u3053\u304F: ["japanese"], \u305F\u3053\u3084\u304D: ["japanese"], \u305F\u3055\u3044: ["japanese"], \u305F\u3057\u3055\u3099\u3093: ["japanese"], \u305F\u3099\u3057\u3099\u3083\u308C: ["japanese"], \u305F\u3059\u3051\u308B: ["japanese"], \u305F\u3059\u3099\u3055\u308F\u308B: ["japanese"], \u305F\u305D\u304B\u3099\u308C: ["japanese"], \u305F\u305F\u304B\u3046: ["japanese"], \u305F\u305F\u304F: ["japanese"], \u305F\u305F\u3099\u3057\u3044: ["japanese"], \u305F\u305F\u307F: ["japanese"], \u305F\u3061\u306F\u3099\u306A: ["japanese"], \u305F\u3099\u3063\u304B\u3044: ["japanese"], \u305F\u3099\u3063\u304D\u3083\u304F: ["japanese"], \u305F\u3099\u3063\u3053: ["japanese"], \u305F\u3099\u3063\u3057\u3085\u3064: ["japanese"], \u305F\u3099\u3063\u305F\u3044: ["japanese"], \u305F\u3066\u308B: ["japanese"], \u305F\u3068\u3048\u308B: ["japanese"], \u305F\u306A\u306F\u3099\u305F: ["japanese"], \u305F\u306B\u3093: ["japanese"], \u305F\u306C\u304D: ["japanese"], \u305F\u306E\u3057\u307F: ["japanese"], \u305F\u306F\u3064: ["japanese"], \u305F\u3075\u3099\u3093: ["japanese"], \u305F\u3078\u3099\u308B: ["japanese"], \u305F\u307B\u3099\u3046: ["japanese"], \u305F\u307E\u3053\u3099: ["japanese"], \u305F\u307E\u308B: ["japanese"], \u305F\u3099\u3080\u308B: ["japanese"], \u305F\u3081\u3044\u304D: ["japanese"], \u305F\u3081\u3059: ["japanese"], \u305F\u3081\u308B: ["japanese"], \u305F\u3082\u3064: ["japanese"], \u305F\u3084\u3059\u3044: ["japanese"], \u305F\u3088\u308B: ["japanese"], \u305F\u3089\u3059: ["japanese"], \u305F\u308A\u304D\u307B\u3093\u304B\u3099\u3093: ["japanese"], \u305F\u308A\u3087\u3046: ["japanese"], \u305F\u308A\u308B: ["japanese"], \u305F\u308B\u3068: ["japanese"], \u305F\u308C\u308B: ["japanese"], \u305F\u308C\u3093\u3068: ["japanese"], \u305F\u308D\u3063\u3068: ["japanese"], \u305F\u308F\u3080\u308C\u308B: ["japanese"], \u305F\u3099\u3093\u3042\u3064: ["japanese"], \u305F\u3093\u3044: ["japanese"], \u305F\u3093\u304A\u3093: ["japanese"], \u305F\u3093\u304B: ["japanese"], \u305F\u3093\u304D: ["japanese"], \u305F\u3093\u3051\u3093: ["japanese"], \u305F\u3093\u3053\u3099: ["japanese"], \u305F\u3093\u3055\u3093: ["japanese"], \u305F\u3093\u3057\u3099\u3087\u3046\u3072\u3099: ["japanese"], \u305F\u3099\u3093\u305B\u3044: ["japanese"], \u305F\u3093\u305D\u304F: ["japanese"], \u305F\u3093\u305F\u3044: ["japanese"], \u305F\u3099\u3093\u3061: ["japanese"], \u305F\u3093\u3066\u3044: ["japanese"], \u305F\u3093\u3068\u3046: ["japanese"], \u305F\u3099\u3093\u306A: ["japanese"], \u305F\u3093\u306B\u3093: ["japanese"], \u305F\u3099\u3093\u306D\u3064: ["japanese"], \u305F\u3093\u306E\u3046: ["japanese"], \u305F\u3093\u3072\u309A\u3093: ["japanese"], \u305F\u3099\u3093\u307B\u3099\u3046: ["japanese"], \u305F\u3093\u307E\u3064: ["japanese"], \u305F\u3093\u3081\u3044: ["japanese"], \u305F\u3099\u3093\u308C\u3064: ["japanese"], \u305F\u3099\u3093\u308D: ["japanese"], \u305F\u3099\u3093\u308F: ["japanese"], \u3061\u3042\u3044: ["japanese"], \u3061\u3042\u3093: ["japanese"], \u3061\u3044\u304D: ["japanese"], \u3061\u3044\u3055\u3044: ["japanese"], \u3061\u3048\u3093: ["japanese"], \u3061\u304B\u3044: ["japanese"], \u3061\u304B\u3089: ["japanese"], \u3061\u304D\u3085\u3046: ["japanese"], \u3061\u304D\u3093: ["japanese"], \u3061\u3051\u3044\u3059\u3099: ["japanese"], \u3061\u3051\u3093: ["japanese"], \u3061\u3053\u304F: ["japanese"], \u3061\u3055\u3044: ["japanese"], \u3061\u3057\u304D: ["japanese"], \u3061\u3057\u308A\u3087\u3046: ["japanese"], \u3061\u305B\u3044: ["japanese"], \u3061\u305D\u3046: ["japanese"], \u3061\u305F\u3044: ["japanese"], \u3061\u305F\u3093: ["japanese"], \u3061\u3061\u304A\u3084: ["japanese"], \u3061\u3064\u3057\u3099\u3087: ["japanese"], \u3061\u3066\u304D: ["japanese"], \u3061\u3066\u3093: ["japanese"], \u3061\u306C\u304D: ["japanese"], \u3061\u306C\u308A: ["japanese"], \u3061\u306E\u3046: ["japanese"], \u3061\u3072\u3087\u3046: ["japanese"], \u3061\u3078\u3044\u305B\u3093: ["japanese"], \u3061\u307B\u3046: ["japanese"], \u3061\u307E\u305F: ["japanese"], \u3061\u307F\u3064: ["japanese"], \u3061\u307F\u3068\u3099\u308D: ["japanese"], \u3061\u3081\u3044\u3068\u3099: ["japanese"], \u3061\u3083\u3093\u3053\u306A\u3078\u3099: ["japanese"], \u3061\u3085\u3046\u3044: ["japanese"], \u3061\u3086\u308A\u3087\u304F: ["japanese"], \u3061\u3087\u3046\u3057: ["japanese"], \u3061\u3087\u3055\u304F\u3051\u3093: ["japanese"], \u3061\u3089\u3057: ["japanese"], \u3061\u3089\u307F: ["japanese"], \u3061\u308A\u304B\u3099\u307F: ["japanese"], \u3061\u308A\u3087\u3046: ["japanese"], \u3061\u308B\u3068\u3099: ["japanese"], \u3061\u308F\u308F: ["japanese"], \u3061\u3093\u305F\u3044: ["japanese"], \u3061\u3093\u3082\u304F: ["japanese"], \u3064\u3044\u304B: ["japanese"], \u3064\u3044\u305F\u3061: ["japanese"], \u3064\u3046\u304B: ["japanese"], \u3064\u3046\u3057\u3099\u3087\u3046: ["japanese"], \u3064\u3046\u306F\u3093: ["japanese"], \u3064\u3046\u308F: ["japanese"], \u3064\u304B\u3046: ["japanese"], \u3064\u304B\u308C\u308B: ["japanese"], \u3064\u304F\u306D: ["japanese"], \u3064\u304F\u308B: ["japanese"], \u3064\u3051\u306D: ["japanese"], \u3064\u3051\u308B: ["japanese"], \u3064\u3053\u3099\u3046: ["japanese"], \u3064\u305F\u3048\u308B: ["japanese"], \u3064\u3064\u3099\u304F: ["japanese"], \u3064\u3064\u3057\u3099: ["japanese"], \u3064\u3064\u3080: ["japanese"], \u3064\u3068\u3081\u308B: ["japanese"], \u3064\u306A\u304B\u3099\u308B: ["japanese"], \u3064\u306A\u307F: ["japanese"], \u3064\u306D\u3064\u3099\u306D: ["japanese"], \u3064\u306E\u308B: ["japanese"], \u3064\u3075\u3099\u3059: ["japanese"], \u3064\u307E\u3089\u306A\u3044: ["japanese"], \u3064\u307E\u308B: ["japanese"], \u3064\u307F\u304D: ["japanese"], \u3064\u3081\u305F\u3044: ["japanese"], \u3064\u3082\u308A: ["japanese"], \u3064\u3082\u308B: ["japanese"], \u3064\u3088\u3044: ["japanese"], \u3064\u308B\u307B\u3099: ["japanese"], \u3064\u308B\u307F\u304F: ["japanese"], \u3064\u308F\u3082\u306E: ["japanese"], \u3064\u308F\u308A: ["japanese"], \u3066\u3042\u3057: ["japanese"], \u3066\u3042\u3066: ["japanese"], \u3066\u3042\u307F: ["japanese"], \u3066\u3044\u304A\u3093: ["japanese"], \u3066\u3044\u304B: ["japanese"], \u3066\u3044\u304D: ["japanese"], \u3066\u3044\u3051\u3044: ["japanese"], \u3066\u3044\u3053\u304F: ["japanese"], \u3066\u3044\u3055\u3064: ["japanese"], \u3066\u3044\u3057: ["japanese"], \u3066\u3044\u305B\u3044: ["japanese"], \u3066\u3044\u305F\u3044: ["japanese"], \u3066\u3044\u3068\u3099: ["japanese"], \u3066\u3044\u306D\u3044: ["japanese"], \u3066\u3044\u3072\u3087\u3046: ["japanese"], \u3066\u3044\u3078\u3093: ["japanese"], \u3066\u3044\u307B\u3099\u3046: ["japanese"], \u3066\u3046\u3061: ["japanese"], \u3066\u304A\u304F\u308C: ["japanese"], \u3066\u304D\u3068\u3046: ["japanese"], \u3066\u304F\u3072\u3099: ["japanese"], \u3066\u3099\u3053\u307B\u3099\u3053: ["japanese"], \u3066\u3055\u304D\u3099\u3087\u3046: ["japanese"], \u3066\u3055\u3051\u3099: ["japanese"], \u3066\u3059\u308A: ["japanese"], \u3066\u305D\u3046: ["japanese"], \u3066\u3061\u304B\u3099\u3044: ["japanese"], \u3066\u3061\u3087\u3046: ["japanese"], \u3066\u3064\u304B\u3099\u304F: ["japanese"], \u3066\u3064\u3064\u3099\u304D: ["japanese"], \u3066\u3099\u3063\u306F\u309A: ["japanese"], \u3066\u3064\u307B\u3099\u3046: ["japanese"], \u3066\u3064\u3084: ["japanese"], \u3066\u3099\u306C\u304B\u3048: ["japanese"], \u3066\u306C\u304D: ["japanese"], \u3066\u306C\u304F\u3099\u3044: ["japanese"], \u3066\u306E\u3072\u3089: ["japanese"], \u3066\u306F\u3044: ["japanese"], \u3066\u3075\u3099\u304F\u308D: ["japanese"], \u3066\u3075\u305F\u3099: ["japanese"], \u3066\u307B\u3068\u3099\u304D: ["japanese"], \u3066\u307B\u3093: ["japanese"], \u3066\u307E\u3048: ["japanese"], \u3066\u307E\u304D\u3059\u3099\u3057: ["japanese"], \u3066\u307F\u3057\u3099\u304B: ["japanese"], \u3066\u307F\u3084\u3051\u3099: ["japanese"], \u3066\u3089\u3059: ["japanese"], \u3066\u308C\u3072\u3099: ["japanese"], \u3066\u308F\u3051: ["japanese"], \u3066\u308F\u305F\u3057: ["japanese"], \u3066\u3099\u3093\u3042\u3064: ["japanese"], \u3066\u3093\u3044\u3093: ["japanese"], \u3066\u3093\u304B\u3044: ["japanese"], \u3066\u3093\u304D: ["japanese"], \u3066\u3093\u304F\u3099: ["japanese"], \u3066\u3093\u3051\u3093: ["japanese"], \u3066\u3093\u3053\u3099\u304F: ["japanese"], \u3066\u3093\u3055\u3044: ["japanese"], \u3066\u3093\u3057: ["japanese"], \u3066\u3093\u3059\u3046: ["japanese"], \u3066\u3099\u3093\u3061: ["japanese"], \u3066\u3093\u3066\u304D: ["japanese"], \u3066\u3093\u3068\u3046: ["japanese"], \u3066\u3093\u306A\u3044: ["japanese"], \u3066\u3093\u3075\u309A\u3089: ["japanese"], \u3066\u3093\u307B\u3099\u3046\u305F\u3099\u3044: ["japanese"], \u3066\u3093\u3081\u3064: ["japanese"], \u3066\u3093\u3089\u3093\u304B\u3044: ["japanese"], \u3066\u3099\u3093\u308A\u3087\u304F: ["japanese"], \u3066\u3099\u3093\u308F: ["japanese"], \u3068\u3099\u3042\u3044: ["japanese"], \u3068\u3044\u308C: ["japanese"], \u3068\u3099\u3046\u304B\u3093: ["japanese"], \u3068\u3046\u304D\u3085\u3046: ["japanese"], \u3068\u3099\u3046\u304F\u3099: ["japanese"], \u3068\u3046\u3057: ["japanese"], \u3068\u3046\u3080\u304D\u3099: ["japanese"], \u3068\u304A\u3044: ["japanese"], \u3068\u304A\u304B: ["japanese"], \u3068\u304A\u304F: ["japanese"], \u3068\u304A\u3059: ["japanese"], \u3068\u304A\u308B: ["japanese"], \u3068\u304B\u3044: ["japanese"], \u3068\u304B\u3059: ["japanese"], \u3068\u304D\u304A\u308A: ["japanese"], \u3068\u304D\u3068\u3099\u304D: ["japanese"], \u3068\u304F\u3044: ["japanese"], \u3068\u304F\u3057\u3085\u3046: ["japanese"], \u3068\u304F\u3066\u3093: ["japanese"], \u3068\u304F\u306B: ["japanese"], \u3068\u304F\u3078\u3099\u3064: ["japanese"], \u3068\u3051\u3044: ["japanese"], \u3068\u3051\u308B: ["japanese"], \u3068\u3053\u3084: ["japanese"], \u3068\u3055\u304B: ["japanese"], \u3068\u3057\u3087\u304B\u3093: ["japanese"], \u3068\u305D\u3046: ["japanese"], \u3068\u305F\u3093: ["japanese"], \u3068\u3061\u3085\u3046: ["japanese"], \u3068\u3063\u304D\u3085\u3046: ["japanese"], \u3068\u3063\u304F\u3093: ["japanese"], \u3068\u3064\u305B\u3099\u3093: ["japanese"], \u3068\u3064\u306B\u3085\u3046: ["japanese"], \u3068\u3068\u3099\u3051\u308B: ["japanese"], \u3068\u3068\u306E\u3048\u308B: ["japanese"], \u3068\u306A\u3044: ["japanese"], \u3068\u306A\u3048\u308B: ["japanese"], \u3068\u306A\u308A: ["japanese"], \u3068\u306E\u3055\u307E: ["japanese"], \u3068\u306F\u3099\u3059: ["japanese"], \u3068\u3099\u3075\u3099\u304B\u3099\u308F: ["japanese"], \u3068\u307B\u3046: ["japanese"], \u3068\u307E\u308B: ["japanese"], \u3068\u3081\u308B: ["japanese"], \u3068\u3082\u305F\u3099\u3061: ["japanese"], \u3068\u3082\u308B: ["japanese"], \u3068\u3099\u3088\u3046\u3072\u3099: ["japanese"], \u3068\u3089\u3048\u308B: ["japanese"], \u3068\u3093\u304B\u3064: ["japanese"], \u3068\u3099\u3093\u3075\u3099\u308A: ["japanese"], \u306A\u3044\u304B\u304F: ["japanese"], \u306A\u3044\u3053\u3046: ["japanese"], \u306A\u3044\u3057\u3087: ["japanese"], \u306A\u3044\u3059: ["japanese"], \u306A\u3044\u305B\u3093: ["japanese"], \u306A\u3044\u305D\u3046: ["japanese"], \u306A\u304A\u3059: ["japanese"], \u306A\u304B\u3099\u3044: ["japanese"], \u306A\u304F\u3059: ["japanese"], \u306A\u3051\u3099\u308B: ["japanese"], \u306A\u3053\u3046\u3068\u3099: ["japanese"], \u306A\u3055\u3051: ["japanese"], \u306A\u305F\u3066\u3099\u3053\u3053: ["japanese"], \u306A\u3063\u3068\u3046: ["japanese"], \u306A\u3064\u3084\u3059\u307F: ["japanese"], \u306A\u306A\u304A\u3057: ["japanese"], \u306A\u306B\u3053\u3099\u3068: ["japanese"], \u306A\u306B\u3082\u306E: ["japanese"], \u306A\u306B\u308F: ["japanese"], \u306A\u306E\u304B: ["japanese"], \u306A\u3075\u305F\u3099: ["japanese"], \u306A\u307E\u3044\u304D: ["japanese"], \u306A\u307E\u3048: ["japanese"], \u306A\u307E\u307F: ["japanese"], \u306A\u307F\u305F\u3099: ["japanese"], \u306A\u3081\u3089\u304B: ["japanese"], \u306A\u3081\u308B: ["japanese"], \u306A\u3084\u3080: ["japanese"], \u306A\u3089\u3046: ["japanese"], \u306A\u3089\u3072\u3099: ["japanese"], \u306A\u3089\u3075\u3099: ["japanese"], \u306A\u308C\u308B: ["japanese"], \u306A\u308F\u3068\u3072\u3099: ["japanese"], \u306A\u308F\u306F\u3099\u308A: ["japanese"], \u306B\u3042\u3046: ["japanese"], \u306B\u3044\u304B\u3099\u305F: ["japanese"], \u306B\u3046\u3051: ["japanese"], \u306B\u304A\u3044: ["japanese"], \u306B\u304B\u3044: ["japanese"], \u306B\u304B\u3099\u3066: ["japanese"], \u306B\u304D\u3072\u3099: ["japanese"], \u306B\u304F\u3057\u307F: ["japanese"], \u306B\u304F\u307E\u3093: ["japanese"], \u306B\u3051\u3099\u308B: ["japanese"], \u306B\u3055\u3093\u304B\u305F\u3093\u305D: ["japanese"], \u306B\u3057\u304D: ["japanese"], \u306B\u305B\u3082\u306E: ["japanese"], \u306B\u3061\u3057\u3099\u3087\u3046: ["japanese"], \u306B\u3061\u3088\u3046\u3072\u3099: ["japanese"], \u306B\u3063\u304B: ["japanese"], \u306B\u3063\u304D: ["japanese"], \u306B\u3063\u3051\u3044: ["japanese"], \u306B\u3063\u3053\u3046: ["japanese"], \u306B\u3063\u3055\u3093: ["japanese"], \u306B\u3063\u3057\u3087\u304F: ["japanese"], \u306B\u3063\u3059\u3046: ["japanese"], \u306B\u3063\u305B\u304D: ["japanese"], \u306B\u3063\u3066\u3044: ["japanese"], \u306B\u306A\u3046: ["japanese"], \u306B\u307B\u3093: ["japanese"], \u306B\u307E\u3081: ["japanese"], \u306B\u3082\u3064: ["japanese"], \u306B\u3084\u308A: ["japanese"], \u306B\u3085\u3046\u3044\u3093: ["japanese"], \u306B\u308A\u3093\u3057\u3083: ["japanese"], \u306B\u308F\u3068\u308A: ["japanese"], \u306B\u3093\u3044: ["japanese"], \u306B\u3093\u304B: ["japanese"], \u306B\u3093\u304D: ["japanese"], \u306B\u3093\u3051\u3099\u3093: ["japanese"], \u306B\u3093\u3057\u304D: ["japanese"], \u306B\u3093\u3059\u3099\u3046: ["japanese"], \u306B\u3093\u305D\u3046: ["japanese"], \u306B\u3093\u305F\u3044: ["japanese"], \u306B\u3093\u3061: ["japanese"], \u306B\u3093\u3066\u3044: ["japanese"], \u306B\u3093\u306B\u304F: ["japanese"], \u306B\u3093\u3075\u309A: ["japanese"], \u306B\u3093\u307E\u308A: ["japanese"], \u306B\u3093\u3080: ["japanese"], \u306B\u3093\u3081\u3044: ["japanese"], \u306B\u3093\u3088\u3046: ["japanese"], \u306C\u3044\u304F\u304D\u3099: ["japanese"], \u306C\u304B\u3059: ["japanese"], \u306C\u304F\u3099\u3044\u3068\u308B: ["japanese"], \u306C\u304F\u3099\u3046: ["japanese"], \u306C\u304F\u3082\u308A: ["japanese"], \u306C\u3059\u3080: ["japanese"], \u306C\u307E\u3048\u3072\u3099: ["japanese"], \u306C\u3081\u308A: ["japanese"], \u306C\u3089\u3059: ["japanese"], \u306C\u3093\u3061\u3083\u304F: ["japanese"], \u306D\u3042\u3051\u3099: ["japanese"], \u306D\u3044\u304D: ["japanese"], \u306D\u3044\u308B: ["japanese"], \u306D\u3044\u308D: ["japanese"], \u306D\u304F\u3099\u305B: ["japanese"], \u306D\u304F\u305F\u3044: ["japanese"], \u306D\u304F\u3089: ["japanese"], \u306D\u3053\u305B\u3099: ["japanese"], \u306D\u3053\u3080: ["japanese"], \u306D\u3055\u3051\u3099: ["japanese"], \u306D\u3059\u3053\u3099\u3059: ["japanese"], \u306D\u305D\u3078\u3099\u308B: ["japanese"], \u306D\u305F\u3099\u3093: ["japanese"], \u306D\u3064\u3044: ["japanese"], \u306D\u3063\u3057\u3093: ["japanese"], \u306D\u3064\u305D\u3099\u3046: ["japanese"], \u306D\u3063\u305F\u3044\u304D\u3099\u3087: ["japanese"], \u306D\u3075\u3099\u305D\u304F: ["japanese"], \u306D\u3075\u305F\u3099: ["japanese"], \u306D\u307B\u3099\u3046: ["japanese"], \u306D\u307B\u308A\u306F\u307B\u308A: ["japanese"], \u306D\u307E\u304D: ["japanese"], \u306D\u307E\u308F\u3057: ["japanese"], \u306D\u307F\u307F: ["japanese"], \u306D\u3080\u3044: ["japanese"], \u306D\u3080\u305F\u3044: ["japanese"], \u306D\u3082\u3068: ["japanese"], \u306D\u3089\u3046: ["japanese"], \u306D\u308F\u3055\u3099: ["japanese"], \u306D\u3093\u3044\u308A: ["japanese"], \u306D\u3093\u304A\u3057: ["japanese"], \u306D\u3093\u304B\u3093: ["japanese"], \u306D\u3093\u304D\u3093: ["japanese"], \u306D\u3093\u304F\u3099: ["japanese"], \u306D\u3093\u3055\u3099: ["japanese"], \u306D\u3093\u3057: ["japanese"], \u306D\u3093\u3061\u3083\u304F: ["japanese"], \u306D\u3093\u3068\u3099: ["japanese"], \u306D\u3093\u3072\u309A: ["japanese"], \u306D\u3093\u3075\u3099\u3064: ["japanese"], \u306D\u3093\u307E\u3064: ["japanese"], \u306D\u3093\u308A\u3087\u3046: ["japanese"], \u306D\u3093\u308C\u3044: ["japanese"], \u306E\u3044\u3059\u3099: ["japanese"], \u306E\u304A\u3064\u3099\u307E: ["japanese"], \u306E\u304B\u3099\u3059: ["japanese"], \u306E\u304D\u306A\u307F: ["japanese"], \u306E\u3053\u304D\u3099\u308A: ["japanese"], \u306E\u3053\u3059: ["japanese"], \u306E\u3053\u308B: ["japanese"], \u306E\u305B\u308B: ["japanese"], \u306E\u305D\u3099\u304F: ["japanese"], \u306E\u305D\u3099\u3080: ["japanese"], \u306E\u305F\u307E\u3046: ["japanese"], \u306E\u3061\u307B\u3068\u3099: ["japanese"], \u306E\u3063\u304F: ["japanese"], \u306E\u306F\u3099\u3059: ["japanese"], \u306E\u306F\u3089: ["japanese"], \u306E\u3078\u3099\u308B: ["japanese"], \u306E\u307B\u3099\u308B: ["japanese"], \u306E\u307F\u3082\u306E: ["japanese"], \u306E\u3084\u307E: ["japanese"], \u306E\u3089\u3044\u306C: ["japanese"], \u306E\u3089\u306D\u3053: ["japanese"], \u306E\u308A\u3082\u306E: ["japanese"], \u306E\u308A\u3086\u304D: ["japanese"], \u306E\u308C\u3093: ["japanese"], \u306E\u3093\u304D: ["japanese"], \u306F\u3099\u3042\u3044: ["japanese"], \u306F\u3042\u304F: ["japanese"], \u306F\u3099\u3042\u3055\u3093: ["japanese"], \u306F\u3099\u3044\u304B: ["japanese"], \u306F\u3099\u3044\u304F: ["japanese"], \u306F\u3044\u3051\u3093: ["japanese"], \u306F\u3044\u3053\u3099: ["japanese"], \u306F\u3044\u3057\u3093: ["japanese"], \u306F\u3044\u3059\u3044: ["japanese"], \u306F\u3044\u305B\u3093: ["japanese"], \u306F\u3044\u305D\u3046: ["japanese"], \u306F\u3044\u3061: ["japanese"], \u306F\u3099\u3044\u306F\u3099\u3044: ["japanese"], \u306F\u3044\u308C\u3064: ["japanese"], \u306F\u3048\u308B: ["japanese"], \u306F\u304A\u308B: ["japanese"], \u306F\u304B\u3044: ["japanese"], \u306F\u3099\u304B\u308A: ["japanese"], \u306F\u304B\u308B: ["japanese"], \u306F\u304F\u3057\u3085: ["japanese"], \u306F\u3051\u3093: ["japanese"], \u306F\u3053\u3075\u3099: ["japanese"], \u306F\u3055\u307F: ["japanese"], \u306F\u3055\u3093: ["japanese"], \u306F\u3057\u3053\u3099: ["japanese"], \u306F\u3099\u3057\u3087: ["japanese"], \u306F\u3057\u308B: ["japanese"], \u306F\u305B\u308B: ["japanese"], \u306F\u309A\u305D\u3053\u3093: ["japanese"], \u306F\u305D\u3093: ["japanese"], \u306F\u305F\u3093: ["japanese"], \u306F\u3061\u307F\u3064: ["japanese"], \u306F\u3064\u304A\u3093: ["japanese"], \u306F\u3063\u304B\u304F: ["japanese"], \u306F\u3064\u3099\u304D: ["japanese"], \u306F\u3063\u304D\u308A: ["japanese"], \u306F\u3063\u304F\u3064: ["japanese"], \u306F\u3063\u3051\u3093: ["japanese"], \u306F\u3063\u3053\u3046: ["japanese"], \u306F\u3063\u3055\u3093: ["japanese"], \u306F\u3063\u3057\u3093: ["japanese"], \u306F\u3063\u305F\u3064: ["japanese"], \u306F\u3063\u3061\u3085\u3046: ["japanese"], \u306F\u3063\u3066\u3093: ["japanese"], \u306F\u3063\u3072\u309A\u3087\u3046: ["japanese"], \u306F\u3063\u307B\u309A\u3046: ["japanese"], \u306F\u306A\u3059: ["japanese"], \u306F\u306A\u3072\u3099: ["japanese"], \u306F\u306B\u304B\u3080: ["japanese"], \u306F\u3075\u3099\u3089\u3057: ["japanese"], \u306F\u307F\u304B\u3099\u304D: ["japanese"], \u306F\u3080\u304B\u3046: ["japanese"], \u306F\u3081\u3064: ["japanese"], \u306F\u3084\u3044: ["japanese"], \u306F\u3084\u3057: ["japanese"], \u306F\u3089\u3046: ["japanese"], \u306F\u308D\u3046\u3043\u3093: ["japanese"], \u306F\u308F\u3044: ["japanese"], \u306F\u3093\u3044: ["japanese"], \u306F\u3093\u3048\u3044: ["japanese"], \u306F\u3093\u304A\u3093: ["japanese"], \u306F\u3093\u304B\u304F: ["japanese"], \u306F\u3093\u304D\u3087\u3046: ["japanese"], \u306F\u3099\u3093\u304F\u3099\u307F: ["japanese"], \u306F\u3093\u3053: ["japanese"], \u306F\u3093\u3057\u3083: ["japanese"], \u306F\u3093\u3059\u3046: ["japanese"], \u306F\u3093\u305F\u3099\u3093: ["japanese"], \u306F\u309A\u3093\u3061: ["japanese"], \u306F\u309A\u3093\u3064: ["japanese"], \u306F\u3093\u3066\u3044: ["japanese"], \u306F\u3093\u3068\u3057: ["japanese"], \u306F\u3093\u306E\u3046: ["japanese"], \u306F\u3093\u306F\u309A: ["japanese"], \u306F\u3093\u3075\u3099\u3093: ["japanese"], \u306F\u3093\u3078\u309A\u3093: ["japanese"], \u306F\u3093\u307B\u3099\u3046\u304D: ["japanese"], \u306F\u3093\u3081\u3044: ["japanese"], \u306F\u3093\u3089\u3093: ["japanese"], \u306F\u3093\u308D\u3093: ["japanese"], \u3072\u3044\u304D: ["japanese"], \u3072\u3046\u3093: ["japanese"], \u3072\u3048\u308B: ["japanese"], \u3072\u304B\u304F: ["japanese"], \u3072\u304B\u308A: ["japanese"], \u3072\u304B\u308B: ["japanese"], \u3072\u304B\u3093: ["japanese"], \u3072\u304F\u3044: ["japanese"], \u3072\u3051\u3064: ["japanese"], \u3072\u3053\u3046\u304D: ["japanese"], \u3072\u3053\u304F: ["japanese"], \u3072\u3055\u3044: ["japanese"], \u3072\u3055\u3057\u3075\u3099\u308A: ["japanese"], \u3072\u3055\u3093: ["japanese"], \u3072\u3099\u3057\u3099\u3085\u3064\u304B\u3093: ["japanese"], \u3072\u3057\u3087: ["japanese"], \u3072\u305D\u304B: ["japanese"], \u3072\u305D\u3080: ["japanese"], \u3072\u305F\u3080\u304D: ["japanese"], \u3072\u305F\u3099\u308A: ["japanese"], \u3072\u305F\u308B: ["japanese"], \u3072\u3064\u304D\u3099: ["japanese"], \u3072\u3063\u3053\u3057: ["japanese"], \u3072\u3063\u3057: ["japanese"], \u3072\u3064\u3057\u3099\u3085\u3072\u3093: ["japanese"], \u3072\u3063\u3059: ["japanese"], \u3072\u3064\u305B\u3099\u3093: ["japanese"], \u3072\u309A\u3063\u305F\u308A: ["japanese"], \u3072\u309A\u3063\u3061\u308A: ["japanese"], \u3072\u3064\u3088\u3046: ["japanese"], \u3072\u3066\u3044: ["japanese"], \u3072\u3068\u3053\u3099\u307F: ["japanese"], \u3072\u306A\u307E\u3064\u308A: ["japanese"], \u3072\u306A\u3093: ["japanese"], \u3072\u306D\u308B: ["japanese"], \u3072\u306F\u3093: ["japanese"], \u3072\u3072\u3099\u304F: ["japanese"], \u3072\u3072\u3087\u3046: ["japanese"], \u3072\u307B\u3046: ["japanese"], \u3072\u307E\u308F\u308A: ["japanese"], \u3072\u307E\u3093: ["japanese"], \u3072\u307F\u3064: ["japanese"], \u3072\u3081\u3044: ["japanese"], \u3072\u3081\u3057\u3099\u3057: ["japanese"], \u3072\u3084\u3051: ["japanese"], \u3072\u3084\u3059: ["japanese"], \u3072\u3088\u3046: ["japanese"], \u3072\u3099\u3087\u3046\u304D: ["japanese"], \u3072\u3089\u304B\u3099\u306A: ["japanese"], \u3072\u3089\u304F: ["japanese"], \u3072\u308A\u3064: ["japanese"], \u3072\u308A\u3087\u3046: ["japanese"], \u3072\u308B\u307E: ["japanese"], \u3072\u308B\u3084\u3059\u307F: ["japanese"], \u3072\u308C\u3044: ["japanese"], \u3072\u308D\u3044: ["japanese"], \u3072\u308D\u3046: ["japanese"], \u3072\u308D\u304D: ["japanese"], \u3072\u308D\u3086\u304D: ["japanese"], \u3072\u3093\u304B\u304F: ["japanese"], \u3072\u3093\u3051\u3064: ["japanese"], \u3072\u3093\u3053\u3093: ["japanese"], \u3072\u3093\u3057\u3085: ["japanese"], \u3072\u3093\u305D\u3046: ["japanese"], \u3072\u309A\u3093\u3061: ["japanese"], \u3072\u3093\u306F\u309A\u3093: ["japanese"], \u3072\u3099\u3093\u307B\u3099\u3046: ["japanese"], \u3075\u3042\u3093: ["japanese"], \u3075\u3044\u3046\u3061: ["japanese"], \u3075\u3046\u3051\u3044: ["japanese"], \u3075\u3046\u305B\u3093: ["japanese"], \u3075\u309A\u3046\u305F\u308D\u3046: ["japanese"], \u3075\u3046\u3068\u3046: ["japanese"], \u3075\u3046\u3075: ["japanese"], \u3075\u3048\u308B: ["japanese"], \u3075\u304A\u3093: ["japanese"], \u3075\u304B\u3044: ["japanese"], \u3075\u304D\u3093: ["japanese"], \u3075\u304F\u3055\u3099\u3064: ["japanese"], \u3075\u304F\u3075\u3099\u304F\u308D: ["japanese"], \u3075\u3053\u3046: ["japanese"], \u3075\u3055\u3044: ["japanese"], \u3075\u3057\u304D\u3099: ["japanese"], \u3075\u3057\u3099\u307F: ["japanese"], \u3075\u3059\u307E: ["japanese"], \u3075\u305B\u3044: ["japanese"], \u3075\u305B\u304F\u3099: ["japanese"], \u3075\u305D\u304F: ["japanese"], \u3075\u3099\u305F\u306B\u304F: ["japanese"], \u3075\u305F\u3093: ["japanese"], \u3075\u3061\u3087\u3046: ["japanese"], \u3075\u3064\u3046: ["japanese"], \u3075\u3064\u304B: ["japanese"], \u3075\u3063\u304B\u3064: ["japanese"], \u3075\u3063\u304D: ["japanese"], \u3075\u3063\u3053\u304F: ["japanese"], \u3075\u3099\u3068\u3099\u3046: ["japanese"], \u3075\u3068\u308B: ["japanese"], \u3075\u3068\u3093: ["japanese"], \u3075\u306E\u3046: ["japanese"], \u3075\u306F\u3044: ["japanese"], \u3075\u3072\u3087\u3046: ["japanese"], \u3075\u3078\u3093: ["japanese"], \u3075\u307E\u3093: ["japanese"], \u3075\u307F\u3093: ["japanese"], \u3075\u3081\u3064: ["japanese"], \u3075\u3081\u3093: ["japanese"], \u3075\u3088\u3046: ["japanese"], \u3075\u308A\u3053: ["japanese"], \u3075\u308A\u308B: ["japanese"], \u3075\u308B\u3044: ["japanese"], \u3075\u3093\u3044\u304D: ["japanese"], \u3075\u3099\u3093\u304B\u3099\u304F: ["japanese"], \u3075\u3099\u3093\u304F\u3099: ["japanese"], \u3075\u3093\u3057\u3064: ["japanese"], \u3075\u3099\u3093\u305B\u304D: ["japanese"], \u3075\u3093\u305D\u3046: ["japanese"], \u3075\u3099\u3093\u307B\u309A\u3046: ["japanese"], \u3078\u3044\u3042\u3093: ["japanese"], \u3078\u3044\u304A\u3093: ["japanese"], \u3078\u3044\u304B\u3099\u3044: ["japanese"], \u3078\u3044\u304D: ["japanese"], \u3078\u3044\u3051\u3099\u3093: ["japanese"], \u3078\u3044\u3053\u3046: ["japanese"], \u3078\u3044\u3055: ["japanese"], \u3078\u3044\u3057\u3083: ["japanese"], \u3078\u3044\u305B\u3064: ["japanese"], \u3078\u3044\u305D: ["japanese"], \u3078\u3044\u305F\u304F: ["japanese"], \u3078\u3044\u3066\u3093: ["japanese"], \u3078\u3044\u306D\u3064: ["japanese"], \u3078\u3044\u308F: ["japanese"], \u3078\u304D\u304B\u3099: ["japanese"], \u3078\u3053\u3080: ["japanese"], \u3078\u3099\u306B\u3044\u308D: ["japanese"], \u3078\u3099\u306B\u3057\u3087\u3046\u304B\u3099: ["japanese"], \u3078\u3089\u3059: ["japanese"], \u3078\u3093\u304B\u3093: ["japanese"], \u3078\u3099\u3093\u304D\u3087\u3046: ["japanese"], \u3078\u3099\u3093\u3053\u3099\u3057: ["japanese"], \u3078\u3093\u3055\u3044: ["japanese"], \u3078\u3093\u305F\u3044: ["japanese"], \u3078\u3099\u3093\u308A: ["japanese"], \u307B\u3042\u3093: ["japanese"], \u307B\u3044\u304F: ["japanese"], \u307B\u3099\u3046\u304D\u3099\u3087: ["japanese"], \u307B\u3046\u3053\u304F: ["japanese"], \u307B\u3046\u305D\u3046: ["japanese"], \u307B\u3046\u307B\u3046: ["japanese"], \u307B\u3046\u3082\u3093: ["japanese"], \u307B\u3046\u308A\u3064: ["japanese"], \u307B\u3048\u308B: ["japanese"], \u307B\u304A\u3093: ["japanese"], \u307B\u304B\u3093: ["japanese"], \u307B\u304D\u3087\u3046: ["japanese"], \u307B\u3099\u304D\u3093: ["japanese"], \u307B\u304F\u308D: ["japanese"], \u307B\u3051\u3064: ["japanese"], \u307B\u3051\u3093: ["japanese"], \u307B\u3053\u3046: ["japanese"], \u307B\u3053\u308B: ["japanese"], \u307B\u3057\u3044: ["japanese"], \u307B\u3057\u3064: ["japanese"], \u307B\u3057\u3085: ["japanese"], \u307B\u3057\u3087\u3046: ["japanese"], \u307B\u305B\u3044: ["japanese"], \u307B\u305D\u3044: ["japanese"], \u307B\u305D\u304F: ["japanese"], \u307B\u305F\u3066: ["japanese"], \u307B\u305F\u308B: ["japanese"], \u307B\u309A\u3061\u3075\u3099\u304F\u308D: ["japanese"], \u307B\u3063\u304D\u3087\u304F: ["japanese"], \u307B\u3063\u3055: ["japanese"], \u307B\u3063\u305F\u3093: ["japanese"], \u307B\u3068\u3093\u3068\u3099: ["japanese"], \u307B\u3081\u308B: ["japanese"], \u307B\u3093\u3044: ["japanese"], \u307B\u3093\u304D: ["japanese"], \u307B\u3093\u3051: ["japanese"], \u307B\u3093\u3057\u3064: ["japanese"], \u307B\u3093\u3084\u304F: ["japanese"], \u307E\u3044\u306B\u3061: ["japanese"], \u307E\u304B\u3044: ["japanese"], \u307E\u304B\u305B\u308B: ["japanese"], \u307E\u304B\u3099\u308B: ["japanese"], \u307E\u3051\u308B: ["japanese"], \u307E\u3053\u3068: ["japanese"], \u307E\u3055\u3064: ["japanese"], \u307E\u3057\u3099\u3081: ["japanese"], \u307E\u3059\u304F: ["japanese"], \u307E\u305B\u3099\u308B: ["japanese"], \u307E\u3064\u308A: ["japanese"], \u307E\u3068\u3081: ["japanese"], \u307E\u306A\u3075\u3099: ["japanese"], \u307E\u306C\u3051: ["japanese"], \u307E\u306D\u304F: ["japanese"], \u307E\u307B\u3046: ["japanese"], \u307E\u3082\u308B: ["japanese"], \u307E\u3086\u3051\u3099: ["japanese"], \u307E\u3088\u3046: ["japanese"], \u307E\u308D\u3084\u304B: ["japanese"], \u307E\u308F\u3059: ["japanese"], \u307E\u308F\u308A: ["japanese"], \u307E\u308F\u308B: ["japanese"], \u307E\u3093\u304B\u3099: ["japanese"], \u307E\u3093\u304D\u3064: ["japanese"], \u307E\u3093\u305D\u3099\u304F: ["japanese"], \u307E\u3093\u306A\u304B: ["japanese"], \u307F\u3044\u3089: ["japanese"], \u307F\u3046\u3061: ["japanese"], \u307F\u3048\u308B: ["japanese"], \u307F\u304B\u3099\u304F: ["japanese"], \u307F\u304B\u305F: ["japanese"], \u307F\u304B\u3093: ["japanese"], \u307F\u3051\u3093: ["japanese"], \u307F\u3053\u3093: ["japanese"], \u307F\u3057\u3099\u304B\u3044: ["japanese"], \u307F\u3059\u3044: ["japanese"], \u307F\u3059\u3048\u308B: ["japanese"], \u307F\u305B\u308B: ["japanese"], \u307F\u3063\u304B: ["japanese"], \u307F\u3064\u304B\u308B: ["japanese"], \u307F\u3064\u3051\u308B: ["japanese"], \u307F\u3066\u3044: ["japanese"], \u307F\u3068\u3081\u308B: ["japanese"], \u307F\u306A\u3068: ["japanese"], \u307F\u306A\u307F\u304B\u3055\u3044: ["japanese"], \u307F\u306D\u3089\u308B: ["japanese"], \u307F\u306E\u3046: ["japanese"], \u307F\u306E\u304B\u3099\u3059: ["japanese"], \u307F\u307B\u3093: ["japanese"], \u307F\u3082\u3068: ["japanese"], \u307F\u3084\u3051\u3099: ["japanese"], \u307F\u3089\u3044: ["japanese"], \u307F\u308A\u3087\u304F: ["japanese"], \u307F\u308F\u304F: ["japanese"], \u307F\u3093\u304B: ["japanese"], \u307F\u3093\u305D\u3099\u304F: ["japanese"], \u3080\u3044\u304B: ["japanese"], \u3080\u3048\u304D: ["japanese"], \u3080\u3048\u3093: ["japanese"], \u3080\u304B\u3044: ["japanese"], \u3080\u304B\u3046: ["japanese"], \u3080\u304B\u3048: ["japanese"], \u3080\u304B\u3057: ["japanese"], \u3080\u304D\u3099\u3061\u3083: ["japanese"], \u3080\u3051\u308B: ["japanese"], \u3080\u3051\u3099\u3093: ["japanese"], \u3080\u3055\u307B\u3099\u308B: ["japanese"], \u3080\u3057\u3042\u3064\u3044: ["japanese"], \u3080\u3057\u306F\u3099: ["japanese"], \u3080\u3057\u3099\u3085\u3093: ["japanese"], \u3080\u3057\u308D: ["japanese"], \u3080\u3059\u3046: ["japanese"], \u3080\u3059\u3053: ["japanese"], \u3080\u3059\u3075\u3099: ["japanese"], \u3080\u3059\u3081: ["japanese"], \u3080\u305B\u308B: ["japanese"], \u3080\u305B\u3093: ["japanese"], \u3080\u3061\u3085\u3046: ["japanese"], \u3080\u306A\u3057\u3044: ["japanese"], \u3080\u306E\u3046: ["japanese"], \u3080\u3084\u307F: ["japanese"], \u3080\u3088\u3046: ["japanese"], \u3080\u3089\u3055\u304D: ["japanese"], \u3080\u308A\u3087\u3046: ["japanese"], \u3080\u308D\u3093: ["japanese"], \u3081\u3044\u3042\u3093: ["japanese"], \u3081\u3044\u3046\u3093: ["japanese"], \u3081\u3044\u3048\u3093: ["japanese"], \u3081\u3044\u304B\u304F: ["japanese"], \u3081\u3044\u304D\u3087\u304F: ["japanese"], \u3081\u3044\u3055\u3044: ["japanese"], \u3081\u3044\u3057: ["japanese"], \u3081\u3044\u305D\u3046: ["japanese"], \u3081\u3044\u3075\u3099\u3064: ["japanese"], \u3081\u3044\u308C\u3044: ["japanese"], \u3081\u3044\u308F\u304F: ["japanese"], \u3081\u304F\u3099\u307E\u308C\u308B: ["japanese"], \u3081\u3055\u3099\u3059: ["japanese"], \u3081\u3057\u305F: ["japanese"], \u3081\u3059\u3099\u3089\u3057\u3044: ["japanese"], \u3081\u305F\u3099\u3064: ["japanese"], \u3081\u307E\u3044: ["japanese"], \u3081\u3084\u3059: ["japanese"], \u3081\u3093\u304D\u3087: ["japanese"], \u3081\u3093\u305B\u304D: ["japanese"], \u3081\u3093\u3068\u3099\u3046: ["japanese"], \u3082\u3046\u3057\u3042\u3051\u3099\u308B: ["japanese"], \u3082\u3046\u3068\u3099\u3046\u3051\u3093: ["japanese"], \u3082\u3048\u308B: ["japanese"], \u3082\u304F\u3057: ["japanese"], \u3082\u304F\u3066\u304D: ["japanese"], \u3082\u304F\u3088\u3046\u3072\u3099: ["japanese"], \u3082\u3061\u308D\u3093: ["japanese"], \u3082\u3068\u3099\u308B: ["japanese"], \u3082\u3089\u3046: ["japanese"], \u3082\u3093\u304F: ["japanese"], \u3082\u3093\u305F\u3099\u3044: ["japanese"], \u3084\u304A\u3084: ["japanese"], \u3084\u3051\u308B: ["japanese"], \u3084\u3055\u3044: ["japanese"], \u3084\u3055\u3057\u3044: ["japanese"], \u3084\u3059\u3044: ["japanese"], \u3084\u3059\u305F\u308D\u3046: ["japanese"], \u3084\u3059\u307F: ["japanese"], \u3084\u305B\u308B: ["japanese"], \u3084\u305D\u3046: ["japanese"], \u3084\u305F\u3044: ["japanese"], \u3084\u3061\u3093: ["japanese"], \u3084\u3063\u3068: ["japanese"], \u3084\u3063\u306F\u309A\u308A: ["japanese"], \u3084\u3075\u3099\u308B: ["japanese"], \u3084\u3081\u308B: ["japanese"], \u3084\u3084\u3053\u3057\u3044: ["japanese"], \u3084\u3088\u3044: ["japanese"], \u3084\u308F\u3089\u304B\u3044: ["japanese"], \u3086\u3046\u304D: ["japanese"], \u3086\u3046\u3072\u3099\u3093\u304D\u3087\u304F: ["japanese"], \u3086\u3046\u3078\u3099: ["japanese"], \u3086\u3046\u3081\u3044: ["japanese"], \u3086\u3051\u3064: ["japanese"], \u3086\u3057\u3085\u3064: ["japanese"], \u3086\u305B\u3093: ["japanese"], \u3086\u305D\u3046: ["japanese"], \u3086\u305F\u304B: ["japanese"], \u3086\u3061\u3083\u304F: ["japanese"], \u3086\u3066\u3099\u308B: ["japanese"], \u3086\u306B\u3085\u3046: ["japanese"], \u3086\u3072\u3099\u308F: ["japanese"], \u3086\u3089\u3044: ["japanese"], \u3086\u308C\u308B: ["japanese"], \u3088\u3046\u3044: ["japanese"], \u3088\u3046\u304B: ["japanese"], \u3088\u3046\u304D\u3085\u3046: ["japanese"], \u3088\u3046\u3057\u3099: ["japanese"], \u3088\u3046\u3059: ["japanese"], \u3088\u3046\u3061\u3048\u3093: ["japanese"], \u3088\u304B\u305B\u3099: ["japanese"], \u3088\u304B\u3093: ["japanese"], \u3088\u304D\u3093: ["japanese"], \u3088\u304F\u305B\u3044: ["japanese"], \u3088\u304F\u307B\u3099\u3046: ["japanese"], \u3088\u3051\u3044: ["japanese"], \u3088\u3053\u3099\u308C\u308B: ["japanese"], \u3088\u3055\u3093: ["japanese"], \u3088\u3057\u3085\u3046: ["japanese"], \u3088\u305D\u3046: ["japanese"], \u3088\u305D\u304F: ["japanese"], \u3088\u3063\u304B: ["japanese"], \u3088\u3066\u3044: ["japanese"], \u3088\u3068\u3099\u304B\u3099\u308F\u304F: ["japanese"], \u3088\u306D\u3064: ["japanese"], \u3088\u3084\u304F: ["japanese"], \u3088\u3086\u3046: ["japanese"], \u3088\u308D\u3053\u3075\u3099: ["japanese"], \u3088\u308D\u3057\u3044: ["japanese"], \u3089\u3044\u3046: ["japanese"], \u3089\u304F\u304B\u3099\u304D: ["japanese"], \u3089\u304F\u3053\u3099: ["japanese"], \u3089\u304F\u3055\u3064: ["japanese"], \u3089\u304F\u305F\u3099: ["japanese"], \u3089\u3057\u3093\u306F\u3099\u3093: ["japanese"], \u3089\u305B\u3093: ["japanese"], \u3089\u305D\u3099\u304F: ["japanese"], \u3089\u305F\u3044: ["japanese"], \u3089\u3063\u304B: ["japanese"], \u3089\u308C\u3064: ["japanese"], \u308A\u3048\u304D: ["japanese"], \u308A\u304B\u3044: ["japanese"], \u308A\u304D\u3055\u304F: ["japanese"], \u308A\u304D\u305B\u3064: ["japanese"], \u308A\u304F\u304F\u3099\u3093: ["japanese"], \u308A\u304F\u3064: ["japanese"], \u308A\u3051\u3093: ["japanese"], \u308A\u3053\u3046: ["japanese"], \u308A\u305B\u3044: ["japanese"], \u308A\u305D\u3046: ["japanese"], \u308A\u305D\u304F: ["japanese"], \u308A\u3066\u3093: ["japanese"], \u308A\u306D\u3093: ["japanese"], \u308A\u3086\u3046: ["japanese"], \u308A\u3085\u3046\u304B\u3099\u304F: ["japanese"], \u308A\u3088\u3046: ["japanese"], \u308A\u3087\u3046\u308A: ["japanese"], \u308A\u3087\u304B\u3093: ["japanese"], \u308A\u3087\u304F\u3061\u3083: ["japanese"], \u308A\u3087\u3053\u3046: ["japanese"], \u308A\u308A\u304F: ["japanese"], \u308A\u308C\u304D: ["japanese"], \u308A\u308D\u3093: ["japanese"], \u308A\u3093\u3053\u3099: ["japanese"], \u308B\u3044\u3051\u3044: ["japanese"], \u308B\u3044\u3055\u3044: ["japanese"], \u308B\u3044\u3057\u3099: ["japanese"], \u308B\u3044\u305B\u304D: ["japanese"], \u308B\u3059\u306F\u3099\u3093: ["japanese"], \u308B\u308A\u304B\u3099\u308F\u3089: ["japanese"], \u308C\u3044\u304B\u3093: ["japanese"], \u308C\u3044\u304D\u3099: ["japanese"], \u308C\u3044\u305B\u3044: ["japanese"], \u308C\u3044\u305D\u3099\u3046\u3053: ["japanese"], \u308C\u3044\u3068\u3046: ["japanese"], \u308C\u3044\u307B\u3099\u3046: ["japanese"], \u308C\u304D\u3057: ["japanese"], \u308C\u304D\u305F\u3099\u3044: ["japanese"], \u308C\u3093\u3042\u3044: ["japanese"], \u308C\u3093\u3051\u3044: ["japanese"], \u308C\u3093\u3053\u3093: ["japanese"], \u308C\u3093\u3055\u3044: ["japanese"], \u308C\u3093\u3057\u3085\u3046: ["japanese"], \u308C\u3093\u305D\u3099\u304F: ["japanese"], \u308C\u3093\u3089\u304F: ["japanese"], \u308D\u3046\u304B: ["japanese"], \u308D\u3046\u3053\u3099: ["japanese"], \u308D\u3046\u3057\u3099\u3093: ["japanese"], \u308D\u3046\u305D\u304F: ["japanese"], \u308D\u304F\u304B\u3099: ["japanese"], \u308D\u3053\u3064: ["japanese"], \u308D\u3057\u3099\u3046\u3089: ["japanese"], \u308D\u3057\u3085\u3064: ["japanese"], \u308D\u305B\u3093: ["japanese"], \u308D\u3066\u3093: ["japanese"], \u308D\u3081\u3093: ["japanese"], \u308D\u308C\u3064: ["japanese"], \u308D\u3093\u304D\u3099: ["japanese"], \u308D\u3093\u306F\u309A: ["japanese"], \u308D\u3093\u3075\u3099\u3093: ["japanese"], \u308D\u3093\u308A: ["japanese"], \u308F\u304B\u3059: ["japanese"], \u308F\u304B\u3081: ["japanese"], \u308F\u304B\u3084\u307E: ["japanese"], \u308F\u304B\u308C\u308B: ["japanese"], \u308F\u3057\u3064: ["japanese"], \u308F\u3057\u3099\u307E\u3057: ["japanese"], \u308F\u3059\u308C\u3082\u306E: ["japanese"], \u308F\u3089\u3046: ["japanese"], \u308F\u308C\u308B: ["japanese"], \u1100\u1161\u1100\u1167\u11A8: ["korean"], \u1100\u1161\u1101\u1173\u11B7: ["korean"], \u1100\u1161\u1102\u1161\u11AB: ["korean"], \u1100\u1161\u1102\u1173\u11BC: ["korean"], \u1100\u1161\u1103\u1173\u11A8: ["korean"], \u1100\u1161\u1105\u1173\u110E\u1175\u11B7: ["korean"], \u1100\u1161\u1106\u116E\u11B7: ["korean"], \u1100\u1161\u1107\u1161\u11BC: ["korean"], \u1100\u1161\u1109\u1161\u11BC: ["korean"], \u1100\u1161\u1109\u1173\u11B7: ["korean"], \u1100\u1161\u110B\u116E\u11AB\u1103\u1166: ["korean"], \u1100\u1161\u110B\u1173\u11AF: ["korean"], \u1100\u1161\u110B\u1175\u1103\u1173: ["korean"], \u1100\u1161\u110B\u1175\u11B8: ["korean"], \u1100\u1161\u110C\u1161\u11BC: ["korean"], \u1100\u1161\u110C\u1165\u11BC: ["korean"], \u1100\u1161\u110C\u1169\u11A8: ["korean"], \u1100\u1161\u110C\u116E\u11A8: ["korean"], \u1100\u1161\u11A8\u110B\u1169: ["korean"], \u1100\u1161\u11A8\u110C\u1161: ["korean"], \u1100\u1161\u11AB\u1100\u1167\u11A8: ["korean"], \u1100\u1161\u11AB\u1107\u116E: ["korean"], \u1100\u1161\u11AB\u1109\u1165\u11B8: ["korean"], \u1100\u1161\u11AB\u110C\u1161\u11BC: ["korean"], \u1100\u1161\u11AB\u110C\u1165\u11B8: ["korean"], \u1100\u1161\u11AB\u1111\u1161\u11AB: ["korean"], \u1100\u1161\u11AF\u1103\u1173\u11BC: ["korean"], \u1100\u1161\u11AF\u1107\u1175: ["korean"], \u1100\u1161\u11AF\u1109\u1162\u11A8: ["korean"], \u1100\u1161\u11AF\u110C\u1173\u11BC: ["korean"], \u1100\u1161\u11B7\u1100\u1161\u11A8: ["korean"], \u1100\u1161\u11B7\u1100\u1175: ["korean"], \u1100\u1161\u11B7\u1109\u1169: ["korean"], \u1100\u1161\u11B7\u1109\u116E\u1109\u1165\u11BC: ["korean"], \u1100\u1161\u11B7\u110C\u1161: ["korean"], \u1100\u1161\u11B7\u110C\u1165\u11BC: ["korean"], \u1100\u1161\u11B8\u110C\u1161\u1100\u1175: ["korean"], \u1100\u1161\u11BC\u1102\u1161\u11B7: ["korean"], \u1100\u1161\u11BC\u1103\u1161\u11BC: ["korean"], \u1100\u1161\u11BC\u1103\u1169: ["korean"], \u1100\u1161\u11BC\u1105\u1167\u11A8\u1112\u1175: ["korean"], \u1100\u1161\u11BC\u1107\u1167\u11AB: ["korean"], \u1100\u1161\u11BC\u1107\u116E\u11A8: ["korean"], \u1100\u1161\u11BC\u1109\u1161: ["korean"], \u1100\u1161\u11BC\u1109\u116E\u1105\u1163\u11BC: ["korean"], \u1100\u1161\u11BC\u110B\u1161\u110C\u1175: ["korean"], \u1100\u1161\u11BC\u110B\u116F\u11AB\u1103\u1169: ["korean"], \u1100\u1161\u11BC\u110B\u1174: ["korean"], \u1100\u1161\u11BC\u110C\u1166: ["korean"], \u1100\u1161\u11BC\u110C\u1169: ["korean"], \u1100\u1161\u11C0\u110B\u1175: ["korean"], \u1100\u1162\u1100\u116E\u1105\u1175: ["korean"], \u1100\u1162\u1102\u1161\u1105\u1175: ["korean"], \u1100\u1162\u1107\u1161\u11BC: ["korean"], \u1100\u1162\u1107\u1167\u11AF: ["korean"], \u1100\u1162\u1109\u1165\u11AB: ["korean"], \u1100\u1162\u1109\u1165\u11BC: ["korean"], \u1100\u1162\u110B\u1175\u11AB: ["korean"], \u1100\u1162\u11A8\u1100\u116A\u11AB\u110C\u1165\u11A8: ["korean"], \u1100\u1165\u1109\u1175\u11AF: ["korean"], \u1100\u1165\u110B\u1162\u11A8: ["korean"], \u1100\u1165\u110B\u116E\u11AF: ["korean"], \u1100\u1165\u110C\u1175\u11BA: ["korean"], \u1100\u1165\u1111\u116E\u11B7: ["korean"], \u1100\u1165\u11A8\u110C\u1165\u11BC: ["korean"], \u1100\u1165\u11AB\u1100\u1161\u11BC: ["korean"], \u1100\u1165\u11AB\u1106\u116E\u11AF: ["korean"], \u1100\u1165\u11AB\u1109\u1165\u11AF: ["korean"], \u1100\u1165\u11AB\u110C\u1169: ["korean"], \u1100\u1165\u11AB\u110E\u116E\u11A8: ["korean"], \u1100\u1165\u11AF\u110B\u1173\u11B7: ["korean"], \u1100\u1165\u11B7\u1109\u1161: ["korean"], \u1100\u1165\u11B7\u1110\u1169: ["korean"], \u1100\u1166\u1109\u1175\u1111\u1161\u11AB: ["korean"], \u1100\u1166\u110B\u1175\u11B7: ["korean"], \u1100\u1167\u110B\u116E\u11AF: ["korean"], \u1100\u1167\u11AB\u1112\u1162: ["korean"], \u1100\u1167\u11AF\u1100\u116A: ["korean"], \u1100\u1167\u11AF\u1100\u116E\u11A8: ["korean"], \u1100\u1167\u11AF\u1105\u1169\u11AB: ["korean"], \u1100\u1167\u11AF\u1109\u1165\u11A8: ["korean"], \u1100\u1167\u11AF\u1109\u1173\u11BC: ["korean"], \u1100\u1167\u11AF\u1109\u1175\u11B7: ["korean"], \u1100\u1167\u11AF\u110C\u1165\u11BC: ["korean"], \u1100\u1167\u11AF\u1112\u1169\u11AB: ["korean"], \u1100\u1167\u11BC\u1100\u1168: ["korean"], \u1100\u1167\u11BC\u1100\u1169: ["korean"], \u1100\u1167\u11BC\u1100\u1175: ["korean"], \u1100\u1167\u11BC\u1105\u1167\u11A8: ["korean"], \u1100\u1167\u11BC\u1107\u1169\u11A8\u1100\u116E\u11BC: ["korean"], \u1100\u1167\u11BC\u1107\u1175: ["korean"], \u1100\u1167\u11BC\u1109\u1161\u11BC\u1103\u1169: ["korean"], \u1100\u1167\u11BC\u110B\u1167\u11BC: ["korean"], \u1100\u1167\u11BC\u110B\u116E: ["korean"], \u1100\u1167\u11BC\u110C\u1162\u11BC: ["korean"], \u1100\u1167\u11BC\u110C\u1166: ["korean"], \u1100\u1167\u11BC\u110C\u116E: ["korean"], \u1100\u1167\u11BC\u110E\u1161\u11AF: ["korean"], \u1100\u1167\u11BC\u110E\u1175: ["korean"], \u1100\u1167\u11BC\u1112\u1163\u11BC: ["korean"], \u1100\u1167\u11BC\u1112\u1165\u11B7: ["korean"], \u1100\u1168\u1100\u1169\u11A8: ["korean"], \u1100\u1168\u1103\u1161\u11AB: ["korean"], \u1100\u1168\u1105\u1161\u11AB: ["korean"], \u1100\u1168\u1109\u1161\u11AB: ["korean"], \u1100\u1168\u1109\u1169\u11A8: ["korean"], \u1100\u1168\u110B\u1163\u11A8: ["korean"], \u1100\u1168\u110C\u1165\u11AF: ["korean"], \u1100\u1168\u110E\u1173\u11BC: ["korean"], \u1100\u1168\u1112\u116C\u11A8: ["korean"], \u1100\u1169\u1100\u1162\u11A8: ["korean"], \u1100\u1169\u1100\u116E\u1105\u1167: ["korean"], \u1100\u1169\u1100\u116E\u11BC: ["korean"], \u1100\u1169\u1100\u1173\u11B8: ["korean"], \u1100\u1169\u1103\u1173\u11BC\u1112\u1161\u11A8\u1109\u1162\u11BC: ["korean"], \u1100\u1169\u1106\u116E\u1109\u1175\u11AB: ["korean"], \u1100\u1169\u1106\u1175\u11AB: ["korean"], \u1100\u1169\u110B\u1163\u11BC\u110B\u1175: ["korean"], \u1100\u1169\u110C\u1161\u11BC: ["korean"], \u1100\u1169\u110C\u1165\u11AB: ["korean"], \u1100\u1169\u110C\u1175\u11B8: ["korean"], \u1100\u1169\u110E\u116E\u11BA\u1100\u1161\u1105\u116E: ["korean"], \u1100\u1169\u1110\u1169\u11BC: ["korean"], \u1100\u1169\u1112\u1163\u11BC: ["korean"], \u1100\u1169\u11A8\u1109\u1175\u11A8: ["korean"], \u1100\u1169\u11AF\u1106\u1169\u11A8: ["korean"], \u1100\u1169\u11AF\u110D\u1161\u1100\u1175: ["korean"], \u1100\u1169\u11AF\u1111\u1173: ["korean"], \u1100\u1169\u11BC\u1100\u1161\u11AB: ["korean"], \u1100\u1169\u11BC\u1100\u1162: ["korean"], \u1100\u1169\u11BC\u1100\u1167\u11A8: ["korean"], \u1100\u1169\u11BC\u1100\u116E\u11AB: ["korean"], \u1100\u1169\u11BC\u1100\u1173\u11B8: ["korean"], \u1100\u1169\u11BC\u1100\u1175: ["korean"], \u1100\u1169\u11BC\u1103\u1169\u11BC: ["korean"], \u1100\u1169\u11BC\u1106\u116E\u110B\u116F\u11AB: ["korean"], \u1100\u1169\u11BC\u1107\u116E: ["korean"], \u1100\u1169\u11BC\u1109\u1161: ["korean"], \u1100\u1169\u11BC\u1109\u1175\u11A8: ["korean"], \u1100\u1169\u11BC\u110B\u1165\u11B8: ["korean"], \u1100\u1169\u11BC\u110B\u1167\u11AB: ["korean"], \u1100\u1169\u11BC\u110B\u116F\u11AB: ["korean"], \u1100\u1169\u11BC\u110C\u1161\u11BC: ["korean"], \u1100\u1169\u11BC\u110D\u1161: ["korean"], \u1100\u1169\u11BC\u110E\u1162\u11A8: ["korean"], \u1100\u1169\u11BC\u1110\u1169\u11BC: ["korean"], \u1100\u1169\u11BC\u1111\u1169: ["korean"], \u1100\u1169\u11BC\u1112\u1161\u11BC: ["korean"], \u1100\u1169\u11BC\u1112\u1172\u110B\u1175\u11AF: ["korean"], \u1100\u116A\u1106\u1169\u11A8: ["korean"], \u1100\u116A\u110B\u1175\u11AF: ["korean"], \u1100\u116A\u110C\u1161\u11BC: ["korean"], \u1100\u116A\u110C\u1165\u11BC: ["korean"], \u1100\u116A\u1112\u1161\u11A8: ["korean"], \u1100\u116A\u11AB\u1100\u1162\u11A8: ["korean"], \u1100\u116A\u11AB\u1100\u1168: ["korean"], \u1100\u116A\u11AB\u1100\u116A\u11BC: ["korean"], \u1100\u116A\u11AB\u1102\u1167\u11B7: ["korean"], \u1100\u116A\u11AB\u1105\u1161\u11B7: ["korean"], \u1100\u116A\u11AB\u1105\u1167\u11AB: ["korean"], \u1100\u116A\u11AB\u1105\u1175: ["korean"], \u1100\u116A\u11AB\u1109\u1173\u11B8: ["korean"], \u1100\u116A\u11AB\u1109\u1175\u11B7: ["korean"], \u1100\u116A\u11AB\u110C\u1165\u11B7: ["korean"], \u1100\u116A\u11AB\u110E\u1161\u11AF: ["korean"], \u1100\u116A\u11BC\u1100\u1167\u11BC: ["korean"], \u1100\u116A\u11BC\u1100\u1169: ["korean"], \u1100\u116A\u11BC\u110C\u1161\u11BC: ["korean"], \u1100\u116A\u11BC\u110C\u116E: ["korean"], \u1100\u116C\u1105\u1169\u110B\u116E\u11B7: ["korean"], \u1100\u116C\u11BC\u110C\u1161\u11BC\u1112\u1175: ["korean"], \u1100\u116D\u1100\u116A\u1109\u1165: ["korean"], \u1100\u116D\u1106\u116E\u11AB: ["korean"], \u1100\u116D\u1107\u1169\u11A8: ["korean"], \u1100\u116D\u1109\u1175\u11AF: ["korean"], \u1100\u116D\u110B\u1163\u11BC: ["korean"], \u1100\u116D\u110B\u1172\u11A8: ["korean"], \u1100\u116D\u110C\u1161\u11BC: ["korean"], \u1100\u116D\u110C\u1175\u11A8: ["korean"], \u1100\u116D\u1110\u1169\u11BC: ["korean"], \u1100\u116D\u1112\u116A\u11AB: ["korean"], \u1100\u116D\u1112\u116E\u11AB: ["korean"], \u1100\u116E\u1100\u1167\u11BC: ["korean"], \u1100\u116E\u1105\u1173\u11B7: ["korean"], \u1100\u116E\u1106\u1165\u11BC: ["korean"], \u1100\u116E\u1107\u1167\u11AF: ["korean"], \u1100\u116E\u1107\u116E\u11AB: ["korean"], \u1100\u116E\u1109\u1165\u11A8: ["korean"], \u1100\u116E\u1109\u1165\u11BC: ["korean"], \u1100\u116E\u1109\u1169\u11A8: ["korean"], \u1100\u116E\u110B\u1167\u11A8: ["korean"], \u1100\u116E\u110B\u1175\u11B8: ["korean"], \u1100\u116E\u110E\u1165\u11BC: ["korean"], \u1100\u116E\u110E\u1166\u110C\u1165\u11A8: ["korean"], \u1100\u116E\u11A8\u1100\u1161: ["korean"], \u1100\u116E\u11A8\u1100\u1175: ["korean"], \u1100\u116E\u11A8\u1102\u1162: ["korean"], \u1100\u116E\u11A8\u1105\u1175\u11B8: ["korean"], \u1100\u116E\u11A8\u1106\u116E\u11AF: ["korean"], \u1100\u116E\u11A8\u1106\u1175\u11AB: ["korean"], \u1100\u116E\u11A8\u1109\u116E: ["korean"], \u1100\u116E\u11A8\u110B\u1165: ["korean"], \u1100\u116E\u11A8\u110B\u116A\u11BC: ["korean"], \u1100\u116E\u11A8\u110C\u1165\u11A8: ["korean"], \u1100\u116E\u11A8\u110C\u1166: ["korean"], \u1100\u116E\u11A8\u1112\u116C: ["korean"], \u1100\u116E\u11AB\u1103\u1162: ["korean"], \u1100\u116E\u11AB\u1109\u1161: ["korean"], \u1100\u116E\u11AB\u110B\u1175\u11AB: ["korean"], \u1100\u116E\u11BC\u1100\u1173\u11A8\u110C\u1165\u11A8: ["korean"], \u1100\u116F\u11AB\u1105\u1175: ["korean"], \u1100\u116F\u11AB\u110B\u1171: ["korean"], \u1100\u116F\u11AB\u1110\u116E: ["korean"], \u1100\u1171\u1100\u116E\u11A8: ["korean"], \u1100\u1171\u1109\u1175\u11AB: ["korean"], \u1100\u1172\u110C\u1165\u11BC: ["korean"], \u1100\u1172\u110E\u1175\u11A8: ["korean"], \u1100\u1172\u11AB\u1112\u1167\u11BC: ["korean"], \u1100\u1173\u1102\u1161\u11AF: ["korean"], \u1100\u1173\u1102\u1163\u11BC: ["korean"], \u1100\u1173\u1102\u1173\u11AF: ["korean"], \u1100\u1173\u1105\u1165\u1102\u1161: ["korean"], \u1100\u1173\u1105\u116E\u11B8: ["korean"], \u1100\u1173\u1105\u1173\u11BA: ["korean"], \u1100\u1173\u1105\u1175\u11B7: ["korean"], \u1100\u1173\u110C\u1166\u1109\u1165\u110B\u1163: ["korean"], \u1100\u1173\u1110\u1169\u1105\u1169\u11A8: ["korean"], \u1100\u1173\u11A8\u1107\u1169\u11A8: ["korean"], \u1100\u1173\u11A8\u1112\u1175: ["korean"], \u1100\u1173\u11AB\u1100\u1165: ["korean"], \u1100\u1173\u11AB\u1100\u116D: ["korean"], \u1100\u1173\u11AB\u1105\u1162: ["korean"], \u1100\u1173\u11AB\u1105\u1169: ["korean"], \u1100\u1173\u11AB\u1106\u116E: ["korean"], \u1100\u1173\u11AB\u1107\u1169\u11AB: ["korean"], \u1100\u1173\u11AB\u110B\u116F\u11AB: ["korean"], \u1100\u1173\u11AB\u110B\u1172\u11A8: ["korean"], \u1100\u1173\u11AB\u110E\u1165: ["korean"], \u1100\u1173\u11AF\u110A\u1175: ["korean"], \u1100\u1173\u11AF\u110C\u1161: ["korean"], \u1100\u1173\u11B7\u1100\u1161\u11BC\u1109\u1161\u11AB: ["korean"], \u1100\u1173\u11B7\u1100\u1169: ["korean"], \u1100\u1173\u11B7\u1102\u1167\u11AB: ["korean"], \u1100\u1173\u11B7\u1106\u1166\u1103\u1161\u11AF: ["korean"], \u1100\u1173\u11B7\u110B\u1162\u11A8: ["korean"], \u1100\u1173\u11B7\u110B\u1167\u11AB: ["korean"], \u1100\u1173\u11B7\u110B\u116D\u110B\u1175\u11AF: ["korean"], \u1100\u1173\u11B7\u110C\u1175: ["korean"], \u1100\u1173\u11BC\u110C\u1165\u11BC\u110C\u1165\u11A8: ["korean"], \u1100\u1175\u1100\u1161\u11AB: ["korean"], \u1100\u1175\u1100\u116A\u11AB: ["korean"], \u1100\u1175\u1102\u1167\u11B7: ["korean"], \u1100\u1175\u1102\u1173\u11BC: ["korean"], \u1100\u1175\u1103\u1169\u11A8\u1100\u116D: ["korean"], \u1100\u1175\u1103\u116E\u11BC: ["korean"], \u1100\u1175\u1105\u1169\u11A8: ["korean"], \u1100\u1175\u1105\u1173\u11B7: ["korean"], \u1100\u1175\u1107\u1165\u11B8: ["korean"], \u1100\u1175\u1107\u1169\u11AB: ["korean"], \u1100\u1175\u1107\u116E\u11AB: ["korean"], \u1100\u1175\u1108\u1173\u11B7: ["korean"], \u1100\u1175\u1109\u116E\u11A8\u1109\u1161: ["korean"], \u1100\u1175\u1109\u116E\u11AF: ["korean"], \u1100\u1175\u110B\u1165\u11A8: ["korean"], \u1100\u1175\u110B\u1165\u11B8: ["korean"], \u1100\u1175\u110B\u1169\u11AB: ["korean"], \u1100\u1175\u110B\u116E\u11AB: ["korean"], \u1100\u1175\u110B\u116F\u11AB: ["korean"], \u1100\u1175\u110C\u1165\u11A8: ["korean"], \u1100\u1175\u110C\u116E\u11AB: ["korean"], \u1100\u1175\u110E\u1175\u11B7: ["korean"], \u1100\u1175\u1112\u1169\u11AB: ["korean"], \u1100\u1175\u1112\u116C\u11A8: ["korean"], \u1100\u1175\u11AB\u1100\u1173\u11B8: ["korean"], \u1100\u1175\u11AB\u110C\u1161\u11BC: ["korean"], \u1100\u1175\u11AF\u110B\u1175: ["korean"], \u1100\u1175\u11B7\u1107\u1161\u11B8: ["korean"], \u1100\u1175\u11B7\u110E\u1175: ["korean"], \u1100\u1175\u11B7\u1111\u1169\u1100\u1169\u11BC\u1112\u1161\u11BC: ["korean"], \u1101\u1161\u11A8\u1103\u116E\u1100\u1175: ["korean"], \u1101\u1161\u11B7\u1108\u1161\u11A8: ["korean"], \u1101\u1162\u1103\u1161\u11AF\u110B\u1173\u11B7: ["korean"], \u1101\u1162\u1109\u1169\u1100\u1173\u11B7: ["korean"], \u1101\u1165\u11B8\u110C\u1175\u11AF: ["korean"], \u1101\u1169\u11A8\u1103\u1162\u1100\u1175: ["korean"], \u1101\u1169\u11BE\u110B\u1175\u11C1: ["korean"], \u1102\u1161\u1103\u1173\u11AF\u110B\u1175: ["korean"], \u1102\u1161\u1105\u1161\u11AB\u1112\u1175: ["korean"], \u1102\u1161\u1106\u1165\u110C\u1175: ["korean"], \u1102\u1161\u1106\u116E\u11AF: ["korean"], \u1102\u1161\u110E\u1175\u11B7\u1107\u1161\u11AB: ["korean"], \u1102\u1161\u1112\u1173\u11AF: ["korean"], \u1102\u1161\u11A8\u110B\u1167\u11B8: ["korean"], \u1102\u1161\u11AB\u1107\u1161\u11BC: ["korean"], \u1102\u1161\u11AF\u1100\u1162: ["korean"], \u1102\u1161\u11AF\u110A\u1175: ["korean"], \u1102\u1161\u11AF\u110D\u1161: ["korean"], \u1102\u1161\u11B7\u1102\u1167: ["korean"], \u1102\u1161\u11B7\u1103\u1162\u1106\u116E\u11AB: ["korean"], \u1102\u1161\u11B7\u1106\u1162: ["korean"], \u1102\u1161\u11B7\u1109\u1161\u11AB: ["korean"], \u1102\u1161\u11B7\u110C\u1161: ["korean"], \u1102\u1161\u11B7\u1111\u1167\u11AB: ["korean"], \u1102\u1161\u11B7\u1112\u1161\u11A8\u1109\u1162\u11BC: ["korean"], \u1102\u1161\u11BC\u1107\u1175: ["korean"], \u1102\u1161\u11C0\u1106\u1161\u11AF: ["korean"], \u1102\u1162\u1102\u1167\u11AB: ["korean"], \u1102\u1162\u110B\u116D\u11BC: ["korean"], \u1102\u1162\u110B\u1175\u11AF: ["korean"], \u1102\u1162\u11B7\u1107\u1175: ["korean"], \u1102\u1162\u11B7\u1109\u1162: ["korean"], \u1102\u1162\u11BA\u1106\u116E\u11AF: ["korean"], \u1102\u1162\u11BC\u1103\u1169\u11BC: ["korean"], \u1102\u1162\u11BC\u1106\u1167\u11AB: ["korean"], \u1102\u1162\u11BC\u1107\u1161\u11BC: ["korean"], \u1102\u1162\u11BC\u110C\u1161\u11BC\u1100\u1169: ["korean"], \u1102\u1166\u11A8\u1110\u1161\u110B\u1175: ["korean"], \u1102\u1166\u11BA\u110D\u1162: ["korean"], \u1102\u1169\u1103\u1169\u11BC: ["korean"], \u1102\u1169\u1105\u1161\u11AB\u1109\u1162\u11A8: ["korean"], \u1102\u1169\u1105\u1167\u11A8: ["korean"], \u1102\u1169\u110B\u1175\u11AB: ["korean"], \u1102\u1169\u11A8\u110B\u1173\u11B7: ["korean"], \u1102\u1169\u11A8\u110E\u1161: ["korean"], \u1102\u1169\u11A8\u1112\u116A: ["korean"], \u1102\u1169\u11AB\u1105\u1175: ["korean"], \u1102\u1169\u11AB\u1106\u116E\u11AB: ["korean"], \u1102\u1169\u11AB\u110C\u1162\u11BC: ["korean"], \u1102\u1169\u11AF\u110B\u1175: ["korean"], \u1102\u1169\u11BC\u1100\u116E: ["korean"], \u1102\u1169\u11BC\u1103\u1161\u11B7: ["korean"], \u1102\u1169\u11BC\u1106\u1175\u11AB: ["korean"], \u1102\u1169\u11BC\u1107\u116E: ["korean"], \u1102\u1169\u11BC\u110B\u1165\u11B8: ["korean"], \u1102\u1169\u11BC\u110C\u1161\u11BC: ["korean"], \u1102\u1169\u11BC\u110E\u1169\u11AB: ["korean"], \u1102\u1169\u11C1\u110B\u1175: ["korean"], \u1102\u116E\u11AB\u1103\u1169\u11BC\u110C\u1161: ["korean"], \u1102\u116E\u11AB\u1106\u116E\u11AF: ["korean"], \u1102\u116E\u11AB\u110A\u1165\u11B8: ["korean"], \u1102\u1172\u110B\u116D\u11A8: ["korean"], \u1102\u1173\u1101\u1175\u11B7: ["korean"], \u1102\u1173\u11A8\u1103\u1162: ["korean"], \u1102\u1173\u11BC\u1103\u1169\u11BC\u110C\u1165\u11A8: ["korean"], \u1102\u1173\u11BC\u1105\u1167\u11A8: ["korean"], \u1103\u1161\u1107\u1161\u11BC: ["korean"], \u1103\u1161\u110B\u1163\u11BC\u1109\u1165\u11BC: ["korean"], \u1103\u1161\u110B\u1173\u11B7: ["korean"], \u1103\u1161\u110B\u1175\u110B\u1165\u1110\u1173: ["korean"], \u1103\u1161\u1112\u1162\u11BC: ["korean"], \u1103\u1161\u11AB\u1100\u1168: ["korean"], \u1103\u1161\u11AB\u1100\u1169\u11AF: ["korean"], \u1103\u1161\u11AB\u1103\u1169\u11A8: ["korean"], \u1103\u1161\u11AB\u1106\u1161\u11BA: ["korean"], \u1103\u1161\u11AB\u1109\u116E\u11AB: ["korean"], \u1103\u1161\u11AB\u110B\u1165: ["korean"], \u1103\u1161\u11AB\u110B\u1171: ["korean"], \u1103\u1161\u11AB\u110C\u1165\u11B7: ["korean"], \u1103\u1161\u11AB\u110E\u1166: ["korean"], \u1103\u1161\u11AB\u110E\u116E: ["korean"], \u1103\u1161\u11AB\u1111\u1167\u11AB: ["korean"], \u1103\u1161\u11AB\u1111\u116E\u11BC: ["korean"], \u1103\u1161\u11AF\u1100\u1163\u11AF: ["korean"], \u1103\u1161\u11AF\u1105\u1165: ["korean"], \u1103\u1161\u11AF\u1105\u1167\u11A8: ["korean"], \u1103\u1161\u11AF\u1105\u1175: ["korean"], \u1103\u1161\u11B0\u1100\u1169\u1100\u1175: ["korean"], \u1103\u1161\u11B7\u1103\u1161\u11BC: ["korean"], \u1103\u1161\u11B7\u1107\u1162: ["korean"], \u1103\u1161\u11B7\u110B\u116D: ["korean"], \u1103\u1161\u11B7\u110B\u1175\u11B7: ["korean"], \u1103\u1161\u11B8\u1107\u1167\u11AB: ["korean"], \u1103\u1161\u11B8\u110C\u1161\u11BC: ["korean"], \u1103\u1161\u11BC\u1100\u1173\u11AB: ["korean"], \u1103\u1161\u11BC\u1107\u116E\u11AB\u1100\u1161\u11AB: ["korean"], \u1103\u1161\u11BC\u110B\u1167\u11AB\u1112\u1175: ["korean"], \u1103\u1161\u11BC\u110C\u1161\u11BC: ["korean"], \u1103\u1162\u1100\u1172\u1106\u1169: ["korean"], \u1103\u1162\u1102\u1161\u11BD: ["korean"], \u1103\u1162\u1103\u1161\u11AB\u1112\u1175: ["korean"], \u1103\u1162\u1103\u1161\u11B8: ["korean"], \u1103\u1162\u1103\u1169\u1109\u1175: ["korean"], \u1103\u1162\u1105\u1163\u11A8: ["korean"], \u1103\u1162\u1105\u1163\u11BC: ["korean"], \u1103\u1162\u1105\u1172\u11A8: ["korean"], \u1103\u1162\u1106\u116E\u11AB: ["korean"], \u1103\u1162\u1107\u116E\u1107\u116E\u11AB: ["korean"], \u1103\u1162\u1109\u1175\u11AB: ["korean"], \u1103\u1162\u110B\u1173\u11BC: ["korean"], \u1103\u1162\u110C\u1161\u11BC: ["korean"], \u1103\u1162\u110C\u1165\u11AB: ["korean"], \u1103\u1162\u110C\u1165\u11B8: ["korean"], \u1103\u1162\u110C\u116E\u11BC: ["korean"], \u1103\u1162\u110E\u1162\u11A8: ["korean"], \u1103\u1162\u110E\u116E\u11AF: ["korean"], \u1103\u1162\u110E\u116E\u11BC: ["korean"], \u1103\u1162\u1110\u1169\u11BC\u1105\u1167\u11BC: ["korean"], \u1103\u1162\u1112\u1161\u11A8: ["korean"], \u1103\u1162\u1112\u1161\u11AB\u1106\u1175\u11AB\u1100\u116E\u11A8: ["korean"], \u1103\u1162\u1112\u1161\u11B8\u1109\u1175\u11AF: ["korean"], \u1103\u1162\u1112\u1167\u11BC: ["korean"], \u1103\u1165\u11BC\u110B\u1165\u1105\u1175: ["korean"], \u1103\u1166\u110B\u1175\u1110\u1173: ["korean"], \u1103\u1169\u1103\u1162\u110E\u1166: ["korean"], \u1103\u1169\u1103\u1165\u11A8: ["korean"], \u1103\u1169\u1103\u116E\u11A8: ["korean"], \u1103\u1169\u1106\u1161\u11BC: ["korean"], \u1103\u1169\u1109\u1165\u1100\u116A\u11AB: ["korean"], \u1103\u1169\u1109\u1175\u11B7: ["korean"], \u1103\u1169\u110B\u116E\u11B7: ["korean"], \u1103\u1169\u110B\u1175\u11B8: ["korean"], \u1103\u1169\u110C\u1161\u1100\u1175: ["korean"], \u1103\u1169\u110C\u1165\u1112\u1175: ["korean"], \u1103\u1169\u110C\u1165\u11AB: ["korean"], \u1103\u1169\u110C\u116E\u11BC: ["korean"], \u1103\u1169\u110E\u1161\u11A8: ["korean"], \u1103\u1169\u11A8\u1100\u1161\u11B7: ["korean"], \u1103\u1169\u11A8\u1105\u1175\u11B8: ["korean"], \u1103\u1169\u11A8\u1109\u1165: ["korean"], \u1103\u1169\u11A8\u110B\u1175\u11AF: ["korean"], \u1103\u1169\u11A8\u110E\u1161\u11BC\u110C\u1165\u11A8: ["korean"], \u1103\u1169\u11BC\u1112\u116A\u110E\u1162\u11A8: ["korean"], \u1103\u1171\u11BA\u1106\u1169\u1109\u1173\u11B8: ["korean"], \u1103\u1171\u11BA\u1109\u1161\u11AB: ["korean"], \u1104\u1161\u11AF\u110B\u1161\u110B\u1175: ["korean"], \u1106\u1161\u1102\u116E\u1105\u1161: ["korean"], \u1106\u1161\u1102\u1173\u11AF: ["korean"], \u1106\u1161\u1103\u1161\u11BC: ["korean"], \u1106\u1161\u1105\u1161\u1110\u1169\u11AB: ["korean"], \u1106\u1161\u1105\u1167\u11AB: ["korean"], \u1106\u1161\u1106\u116E\u1105\u1175: ["korean"], \u1106\u1161\u1109\u1161\u110C\u1175: ["korean"], \u1106\u1161\u110B\u1163\u11A8: ["korean"], \u1106\u1161\u110B\u116D\u1102\u1166\u110C\u1173: ["korean"], \u1106\u1161\u110B\u1173\u11AF: ["korean"], \u1106\u1161\u110B\u1173\u11B7: ["korean"], \u1106\u1161\u110B\u1175\u110F\u1173: ["korean"], \u1106\u1161\u110C\u116E\u11BC: ["korean"], \u1106\u1161\u110C\u1175\u1106\u1161\u11A8: ["korean"], \u1106\u1161\u110E\u1161\u11AB\u1100\u1161\u110C\u1175: ["korean"], \u1106\u1161\u110E\u1161\u11AF: ["korean"], \u1106\u1161\u1112\u1173\u11AB: ["korean"], \u1106\u1161\u11A8\u1100\u1165\u11AF\u1105\u1175: ["korean"], \u1106\u1161\u11A8\u1102\u1162: ["korean"], \u1106\u1161\u11A8\u1109\u1161\u11BC: ["korean"], \u1106\u1161\u11AB\u1102\u1161\u11B7: ["korean"], \u1106\u1161\u11AB\u1103\u116E: ["korean"], \u1106\u1161\u11AB\u1109\u1166: ["korean"], \u1106\u1161\u11AB\u110B\u1163\u11A8: ["korean"], \u1106\u1161\u11AB\u110B\u1175\u11AF: ["korean"], \u1106\u1161\u11AB\u110C\u1165\u11B7: ["korean"], \u1106\u1161\u11AB\u110C\u1169\u11A8: ["korean"], \u1106\u1161\u11AB\u1112\u116A: ["korean"], \u1106\u1161\u11AD\u110B\u1175: ["korean"], \u1106\u1161\u11AF\u1100\u1175: ["korean"], \u1106\u1161\u11AF\u110A\u1173\u11B7: ["korean"], \u1106\u1161\u11AF\u1110\u116E: ["korean"], \u1106\u1161\u11B7\u1103\u1162\u1105\u1169: ["korean"], \u1106\u1161\u11BC\u110B\u116F\u11AB\u1100\u1167\u11BC: ["korean"], \u1106\u1162\u1102\u1167\u11AB: ["korean"], \u1106\u1162\u1103\u1161\u11AF: ["korean"], \u1106\u1162\u1105\u1167\u11A8: ["korean"], \u1106\u1162\u1107\u1165\u11AB: ["korean"], \u1106\u1162\u1109\u1173\u110F\u1165\u11B7: ["korean"], \u1106\u1162\u110B\u1175\u11AF: ["korean"], \u1106\u1162\u110C\u1161\u11BC: ["korean"], \u1106\u1162\u11A8\u110C\u116E: ["korean"], \u1106\u1165\u11A8\u110B\u1175: ["korean"], \u1106\u1165\u11AB\u110C\u1165: ["korean"], \u1106\u1165\u11AB\u110C\u1175: ["korean"], \u1106\u1165\u11AF\u1105\u1175: ["korean"], \u1106\u1166\u110B\u1175\u11AF: ["korean"], \u1106\u1167\u1102\u1173\u1105\u1175: ["korean"], \u1106\u1167\u110E\u1175\u11AF: ["korean"], \u1106\u1167\u11AB\u1103\u1161\u11B7: ["korean"], \u1106\u1167\u11AF\u110E\u1175: ["korean"], \u1106\u1167\u11BC\u1103\u1161\u11AB: ["korean"], \u1106\u1167\u11BC\u1105\u1167\u11BC: ["korean"], \u1106\u1167\u11BC\u110B\u1168: ["korean"], \u1106\u1167\u11BC\u110B\u1174: ["korean"], \u1106\u1167\u11BC\u110C\u1165\u11AF: ["korean"], \u1106\u1167\u11BC\u110E\u1175\u11BC: ["korean"], \u1106\u1167\u11BC\u1112\u1161\u11B7: ["korean"], \u1106\u1169\u1100\u1173\u11B7: ["korean"], \u1106\u1169\u1102\u1175\u1110\u1165: ["korean"], \u1106\u1169\u1103\u1166\u11AF: ["korean"], \u1106\u1169\u1103\u1173\u11AB: ["korean"], \u1106\u1169\u1107\u1165\u11B7: ["korean"], \u1106\u1169\u1109\u1173\u11B8: ["korean"], \u1106\u1169\u110B\u1163\u11BC: ["korean"], \u1106\u1169\u110B\u1175\u11B7: ["korean"], \u1106\u1169\u110C\u1169\u1105\u1175: ["korean"], \u1106\u1169\u110C\u1175\u11B8: ["korean"], \u1106\u1169\u1110\u116E\u11BC\u110B\u1175: ["korean"], \u1106\u1169\u11A8\u1100\u1165\u11AF\u110B\u1175: ["korean"], \u1106\u1169\u11A8\u1105\u1169\u11A8: ["korean"], \u1106\u1169\u11A8\u1109\u1161: ["korean"], \u1106\u1169\u11A8\u1109\u1169\u1105\u1175: ["korean"], \u1106\u1169\u11A8\u1109\u116E\u11B7: ["korean"], \u1106\u1169\u11A8\u110C\u1165\u11A8: ["korean"], \u1106\u1169\u11A8\u1111\u116D: ["korean"], \u1106\u1169\u11AF\u1105\u1162: ["korean"], \u1106\u1169\u11B7\u1106\u1162: ["korean"], \u1106\u1169\u11B7\u1106\u116E\u1100\u1166: ["korean"], \u1106\u1169\u11B7\u1109\u1161\u11AF: ["korean"], \u1106\u1169\u11B7\u1109\u1169\u11A8: ["korean"], \u1106\u1169\u11B7\u110C\u1175\u11BA: ["korean"], \u1106\u1169\u11B7\u1110\u1169\u11BC: ["korean"], \u1106\u1169\u11B8\u1109\u1175: ["korean"], \u1106\u116E\u1100\u116A\u11AB\u1109\u1175\u11B7: ["korean"], \u1106\u116E\u1100\u116E\u11BC\u1112\u116A: ["korean"], \u1106\u116E\u1103\u1165\u110B\u1171: ["korean"], \u1106\u116E\u1103\u1165\u11B7: ["korean"], \u1106\u116E\u1105\u1173\u11C1: ["korean"], \u1106\u116E\u1109\u1173\u11AB: ["korean"], \u1106\u116E\u110B\u1165\u11BA: ["korean"], \u1106\u116E\u110B\u1167\u11A8: ["korean"], \u1106\u116E\u110B\u116D\u11BC: ["korean"], \u1106\u116E\u110C\u1169\u1100\u1165\u11AB: ["korean"], \u1106\u116E\u110C\u1175\u1100\u1162: ["korean"], \u1106\u116E\u110E\u1165\u11A8: ["korean"], \u1106\u116E\u11AB\u1100\u116E: ["korean"], \u1106\u116E\u11AB\u1103\u1173\u11A8: ["korean"], \u1106\u116E\u11AB\u1107\u1165\u11B8: ["korean"], \u1106\u116E\u11AB\u1109\u1165: ["korean"], \u1106\u116E\u11AB\u110C\u1166: ["korean"], \u1106\u116E\u11AB\u1112\u1161\u11A8: ["korean"], \u1106\u116E\u11AB\u1112\u116A: ["korean"], \u1106\u116E\u11AF\u1100\u1161: ["korean"], \u1106\u116E\u11AF\u1100\u1165\u11AB: ["korean"], \u1106\u116E\u11AF\u1100\u1167\u11AF: ["korean"], \u1106\u116E\u11AF\u1100\u1169\u1100\u1175: ["korean"], \u1106\u116E\u11AF\u1105\u1169\u11AB: ["korean"], \u1106\u116E\u11AF\u1105\u1175\u1112\u1161\u11A8: ["korean"], \u1106\u116E\u11AF\u110B\u1173\u11B7: ["korean"], \u1106\u116E\u11AF\u110C\u1175\u11AF: ["korean"], \u1106\u116E\u11AF\u110E\u1166: ["korean"], \u1106\u1175\u1100\u116E\u11A8: ["korean"], \u1106\u1175\u1103\u1175\u110B\u1165: ["korean"], \u1106\u1175\u1109\u1161\u110B\u1175\u11AF: ["korean"], \u1106\u1175\u1109\u116E\u11AF: ["korean"], \u1106\u1175\u110B\u1167\u11A8: ["korean"], \u1106\u1175\u110B\u116D\u11BC\u1109\u1175\u11AF: ["korean"], \u1106\u1175\u110B\u116E\u11B7: ["korean"], \u1106\u1175\u110B\u1175\u11AB: ["korean"], \u1106\u1175\u1110\u1175\u11BC: ["korean"], \u1106\u1175\u1112\u1169\u11AB: ["korean"], \u1106\u1175\u11AB\u1100\u1161\u11AB: ["korean"], \u1106\u1175\u11AB\u110C\u1169\u11A8: ["korean"], \u1106\u1175\u11AB\u110C\u116E: ["korean"], \u1106\u1175\u11AE\u110B\u1173\u11B7: ["korean"], \u1106\u1175\u11AF\u1100\u1161\u1105\u116E: ["korean"], \u1106\u1175\u11AF\u1105\u1175\u1106\u1175\u1110\u1165: ["korean"], \u1106\u1175\u11C0\u1107\u1161\u1103\u1161\u11A8: ["korean"], \u1107\u1161\u1100\u1161\u110C\u1175: ["korean"], \u1107\u1161\u1100\u116E\u1102\u1175: ["korean"], \u1107\u1161\u1102\u1161\u1102\u1161: ["korean"], \u1107\u1161\u1102\u1173\u11AF: ["korean"], \u1107\u1161\u1103\u1161\u11A8: ["korean"], \u1107\u1161\u1103\u1161\u11BA\u1100\u1161: ["korean"], \u1107\u1161\u1105\u1161\u11B7: ["korean"], \u1107\u1161\u110B\u1175\u1105\u1165\u1109\u1173: ["korean"], \u1107\u1161\u1110\u1161\u11BC: ["korean"], \u1107\u1161\u11A8\u1106\u116E\u11AF\u1100\u116A\u11AB: ["korean"], \u1107\u1161\u11A8\u1109\u1161: ["korean"], \u1107\u1161\u11A8\u1109\u116E: ["korean"], \u1107\u1161\u11AB\u1103\u1162: ["korean"], \u1107\u1161\u11AB\u1103\u1173\u1109\u1175: ["korean"], \u1107\u1161\u11AB\u1106\u1161\u11AF: ["korean"], \u1107\u1161\u11AB\u1107\u1161\u11AF: ["korean"], \u1107\u1161\u11AB\u1109\u1165\u11BC: ["korean"], \u1107\u1161\u11AB\u110B\u1173\u11BC: ["korean"], \u1107\u1161\u11AB\u110C\u1161\u11BC: ["korean"], \u1107\u1161\u11AB\u110C\u116E\u11A8: ["korean"], \u1107\u1161\u11AB\u110C\u1175: ["korean"], \u1107\u1161\u11AB\u110E\u1161\u11AB: ["korean"], \u1107\u1161\u11AE\u110E\u1175\u11B7: ["korean"], \u1107\u1161\u11AF\u1100\u1161\u1105\u1161\u11A8: ["korean"], \u1107\u1161\u11AF\u1100\u1165\u11AF\u110B\u1173\u11B7: ["korean"], \u1107\u1161\u11AF\u1100\u1167\u11AB: ["korean"], \u1107\u1161\u11AF\u1103\u1161\u11AF: ["korean"], \u1107\u1161\u11AF\u1105\u1166: ["korean"], \u1107\u1161\u11AF\u1106\u1169\u11A8: ["korean"], \u1107\u1161\u11AF\u1107\u1161\u1103\u1161\u11A8: ["korean"], \u1107\u1161\u11AF\u1109\u1162\u11BC: ["korean"], \u1107\u1161\u11AF\u110B\u1173\u11B7: ["korean"], \u1107\u1161\u11AF\u110C\u1161\u1100\u116E\u11A8: ["korean"], \u1107\u1161\u11AF\u110C\u1165\u11AB: ["korean"], \u1107\u1161\u11AF\u1110\u1169\u11B8: ["korean"], \u1107\u1161\u11AF\u1111\u116D: ["korean"], \u1107\u1161\u11B7\u1112\u1161\u1102\u1173\u11AF: ["korean"], \u1107\u1161\u11B8\u1100\u1173\u1105\u1173\u11BA: ["korean"], \u1107\u1161\u11B8\u1106\u1161\u11BA: ["korean"], \u1107\u1161\u11B8\u1109\u1161\u11BC: ["korean"], \u1107\u1161\u11B8\u1109\u1169\u11C0: ["korean"], \u1107\u1161\u11BC\u1100\u1173\u11B7: ["korean"], \u1107\u1161\u11BC\u1106\u1167\u11AB: ["korean"], \u1107\u1161\u11BC\u1106\u116E\u11AB: ["korean"], \u1107\u1161\u11BC\u1107\u1161\u1103\u1161\u11A8: ["korean"], \u1107\u1161\u11BC\u1107\u1165\u11B8: ["korean"], \u1107\u1161\u11BC\u1109\u1169\u11BC: ["korean"], \u1107\u1161\u11BC\u1109\u1175\u11A8: ["korean"], \u1107\u1161\u11BC\u110B\u1161\u11AB: ["korean"], \u1107\u1161\u11BC\u110B\u116E\u11AF: ["korean"], \u1107\u1161\u11BC\u110C\u1175: ["korean"], \u1107\u1161\u11BC\u1112\u1161\u11A8: ["korean"], \u1107\u1161\u11BC\u1112\u1162: ["korean"], \u1107\u1161\u11BC\u1112\u1163\u11BC: ["korean"], \u1107\u1162\u1100\u1167\u11BC: ["korean"], \u1107\u1162\u1101\u1169\u11B8: ["korean"], \u1107\u1162\u1103\u1161\u11AF: ["korean"], \u1107\u1162\u1103\u1173\u1106\u1175\u11AB\u1110\u1165\u11AB: ["korean"], \u1107\u1162\u11A8\u1103\u116E\u1109\u1161\u11AB: ["korean"], \u1107\u1162\u11A8\u1109\u1162\u11A8: ["korean"], \u1107\u1162\u11A8\u1109\u1165\u11BC: ["korean"], \u1107\u1162\u11A8\u110B\u1175\u11AB: ["korean"], \u1107\u1162\u11A8\u110C\u1166: ["korean"], \u1107\u1162\u11A8\u1112\u116A\u110C\u1165\u11B7: ["korean"], \u1107\u1165\u1105\u1173\u11BA: ["korean"], \u1107\u1165\u1109\u1165\u11BA: ["korean"], \u1107\u1165\u1110\u1173\u11AB: ["korean"], \u1107\u1165\u11AB\u1100\u1162: ["korean"], \u1107\u1165\u11AB\u110B\u1167\u11A8: ["korean"], \u1107\u1165\u11AB\u110C\u1175: ["korean"], \u1107\u1165\u11AB\u1112\u1169: ["korean"], \u1107\u1165\u11AF\u1100\u1173\u11B7: ["korean"], \u1107\u1165\u11AF\u1105\u1166: ["korean"], \u1107\u1165\u11AF\u110A\u1165: ["korean"], \u1107\u1165\u11B7\u110B\u1171: ["korean"], \u1107\u1165\u11B7\u110B\u1175\u11AB: ["korean"], \u1107\u1165\u11B7\u110C\u116C: ["korean"], \u1107\u1165\u11B8\u1105\u1172\u11AF: ["korean"], \u1107\u1165\u11B8\u110B\u116F\u11AB: ["korean"], \u1107\u1165\u11B8\u110C\u1165\u11A8: ["korean"], \u1107\u1165\u11B8\u110E\u1175\u11A8: ["korean"], \u1107\u1166\u110B\u1175\u110C\u1175\u11BC: ["korean"], \u1107\u1166\u11AF\u1110\u1173: ["korean"], \u1107\u1167\u11AB\u1100\u1167\u11BC: ["korean"], \u1107\u1167\u11AB\u1103\u1169\u11BC: ["korean"], \u1107\u1167\u11AB\u1106\u1167\u11BC: ["korean"], \u1107\u1167\u11AB\u1109\u1175\u11AB: ["korean"], \u1107\u1167\u11AB\u1112\u1169\u1109\u1161: ["korean"], \u1107\u1167\u11AB\u1112\u116A: ["korean"], \u1107\u1167\u11AF\u1103\u1169: ["korean"], \u1107\u1167\u11AF\u1106\u1167\u11BC: ["korean"], \u1107\u1167\u11AF\u110B\u1175\u11AF: ["korean"], \u1107\u1167\u11BC\u1109\u1175\u11AF: ["korean"], \u1107\u1167\u11BC\u110B\u1161\u1105\u1175: ["korean"], \u1107\u1167\u11BC\u110B\u116F\u11AB: ["korean"], \u1107\u1169\u1100\u116A\u11AB: ["korean"], \u1107\u1169\u1102\u1165\u1109\u1173: ["korean"], \u1107\u1169\u1105\u1161\u1109\u1162\u11A8: ["korean"], \u1107\u1169\u1105\u1161\u11B7: ["korean"], \u1107\u1169\u1105\u1173\u11B7: ["korean"], \u1107\u1169\u1109\u1161\u11BC: ["korean"], \u1107\u1169\u110B\u1161\u11AB: ["korean"], \u1107\u1169\u110C\u1161\u1100\u1175: ["korean"], \u1107\u1169\u110C\u1161\u11BC: ["korean"], \u1107\u1169\u110C\u1165\u11AB: ["korean"], \u1107\u1169\u110C\u1169\u11AB: ["korean"], \u1107\u1169\u1110\u1169\u11BC: ["korean"], \u1107\u1169\u1111\u1167\u11AB\u110C\u1165\u11A8: ["korean"], \u1107\u1169\u1112\u1165\u11B7: ["korean"], \u1107\u1169\u11A8\u1103\u1169: ["korean"], \u1107\u1169\u11A8\u1109\u1161: ["korean"], \u1107\u1169\u11A8\u1109\u116E\u11BC\u110B\u1161: ["korean"], \u1107\u1169\u11A8\u1109\u1173\u11B8: ["korean"], \u1107\u1169\u11A9\u110B\u1173\u11B7: ["korean"], \u1107\u1169\u11AB\u1100\u1167\u11A8\u110C\u1165\u11A8: ["korean"], \u1107\u1169\u11AB\u1105\u1162: ["korean"], \u1107\u1169\u11AB\u1107\u116E: ["korean"], \u1107\u1169\u11AB\u1109\u1161: ["korean"], \u1107\u1169\u11AB\u1109\u1165\u11BC: ["korean"], \u1107\u1169\u11AB\u110B\u1175\u11AB: ["korean"], \u1107\u1169\u11AB\u110C\u1175\u11AF: ["korean"], \u1107\u1169\u11AF\u1111\u1166\u11AB: ["korean"], \u1107\u1169\u11BC\u1109\u1161: ["korean"], \u1107\u1169\u11BC\u110C\u1175: ["korean"], \u1107\u1169\u11BC\u1110\u116E: ["korean"], \u1107\u116E\u1100\u1173\u11AB: ["korean"], \u1107\u116E\u1101\u1173\u1105\u1165\u110B\u116E\u11B7: ["korean"], \u1107\u116E\u1103\u1161\u11B7: ["korean"], \u1107\u116E\u1103\u1169\u11BC\u1109\u1161\u11AB: ["korean"], \u1107\u116E\u1106\u116E\u11AB: ["korean"], \u1107\u116E\u1107\u116E\u11AB: ["korean"], \u1107\u116E\u1109\u1161\u11AB: ["korean"], \u1107\u116E\u1109\u1161\u11BC: ["korean"], \u1107\u116E\u110B\u1165\u11BF: ["korean"], \u1107\u116E\u110B\u1175\u11AB: ["korean"], \u1107\u116E\u110C\u1161\u11A8\u110B\u116D\u11BC: ["korean"], \u1107\u116E\u110C\u1161\u11BC: ["korean"], \u1107\u116E\u110C\u1165\u11BC: ["korean"], \u1107\u116E\u110C\u1169\u11A8: ["korean"], \u1107\u116E\u110C\u1175\u1105\u1165\u11AB\u1112\u1175: ["korean"], \u1107\u116E\u110E\u1175\u11AB: ["korean"], \u1107\u116E\u1110\u1161\u11A8: ["korean"], \u1107\u116E\u1111\u116E\u11B7: ["korean"], \u1107\u116E\u1112\u116C\u110C\u1161\u11BC: ["korean"], \u1107\u116E\u11A8\u1107\u116E: ["korean"], \u1107\u116E\u11A8\u1112\u1161\u11AB: ["korean"], \u1107\u116E\u11AB\u1102\u1169: ["korean"], \u1107\u116E\u11AB\u1105\u1163\u11BC: ["korean"], \u1107\u116E\u11AB\u1105\u1175: ["korean"], \u1107\u116E\u11AB\u1106\u1167\u11BC: ["korean"], \u1107\u116E\u11AB\u1109\u1165\u11A8: ["korean"], \u1107\u116E\u11AB\u110B\u1163: ["korean"], \u1107\u116E\u11AB\u110B\u1171\u1100\u1175: ["korean"], \u1107\u116E\u11AB\u1111\u1175\u11AF: ["korean"], \u1107\u116E\u11AB\u1112\u1169\u11BC\u1109\u1162\u11A8: ["korean"], \u1107\u116E\u11AF\u1100\u1169\u1100\u1175: ["korean"], \u1107\u116E\u11AF\u1100\u116A: ["korean"], \u1107\u116E\u11AF\u1100\u116D: ["korean"], \u1107\u116E\u11AF\u1101\u1169\u11BE: ["korean"], \u1107\u116E\u11AF\u1106\u1161\u11AB: ["korean"], \u1107\u116E\u11AF\u1107\u1165\u11B8: ["korean"], \u1107\u116E\u11AF\u1107\u1175\u11BE: ["korean"], \u1107\u116E\u11AF\u110B\u1161\u11AB: ["korean"], \u1107\u116E\u11AF\u110B\u1175\u110B\u1175\u11A8: ["korean"], \u1107\u116E\u11AF\u1112\u1162\u11BC: ["korean"], \u1107\u1173\u1105\u1162\u11AB\u1103\u1173: ["korean"], \u1107\u1175\u1100\u1173\u11A8: ["korean"], \u1107\u1175\u1102\u1161\u11AB: ["korean"], \u1107\u1175\u1102\u1175\u11AF: ["korean"], \u1107\u1175\u1103\u116E\u11AF\u1100\u1175: ["korean"], \u1107\u1175\u1103\u1175\u110B\u1169: ["korean"], \u1107\u1175\u1105\u1169\u1109\u1169: ["korean"], \u1107\u1175\u1106\u1161\u11AB: ["korean"], \u1107\u1175\u1106\u1167\u11BC: ["korean"], \u1107\u1175\u1106\u1175\u11AF: ["korean"], \u1107\u1175\u1107\u1161\u1105\u1161\u11B7: ["korean"], \u1107\u1175\u1107\u1175\u11B7\u1107\u1161\u11B8: ["korean"], \u1107\u1175\u1109\u1161\u11BC: ["korean"], \u1107\u1175\u110B\u116D\u11BC: ["korean"], \u1107\u1175\u110B\u1172\u11AF: ["korean"], \u1107\u1175\u110C\u116E\u11BC: ["korean"], \u1107\u1175\u1110\u1161\u1106\u1175\u11AB: ["korean"], \u1107\u1175\u1111\u1161\u11AB: ["korean"], \u1107\u1175\u11AF\u1103\u1175\u11BC: ["korean"], \u1107\u1175\u11BA\u1106\u116E\u11AF: ["korean"], \u1107\u1175\u11BA\u1107\u1161\u11BC\u110B\u116E\u11AF: ["korean"], \u1107\u1175\u11BA\u110C\u116E\u11AF\u1100\u1175: ["korean"], \u1107\u1175\u11BE\u1101\u1161\u11AF: ["korean"], \u1108\u1161\u11AF\u1100\u1161\u11AB\u1109\u1162\u11A8: ["korean"], \u1108\u1161\u11AF\u1105\u1162: ["korean"], \u1108\u1161\u11AF\u1105\u1175: ["korean"], \u1109\u1161\u1100\u1165\u11AB: ["korean"], \u1109\u1161\u1100\u1168\u110C\u1165\u11AF: ["korean"], \u1109\u1161\u1102\u1161\u110B\u1175: ["korean"], \u1109\u1161\u1102\u1163\u11BC: ["korean"], \u1109\u1161\u1105\u1161\u11B7: ["korean"], \u1109\u1161\u1105\u1161\u11BC: ["korean"], \u1109\u1161\u1105\u1175\u11B8: ["korean"], \u1109\u1161\u1106\u1169\u1102\u1175\u11B7: ["korean"], \u1109\u1161\u1106\u116E\u11AF: ["korean"], \u1109\u1161\u1107\u1161\u11BC: ["korean"], \u1109\u1161\u1109\u1161\u11BC: ["korean"], \u1109\u1161\u1109\u1162\u11BC\u1112\u116A\u11AF: ["korean"], \u1109\u1161\u1109\u1165\u11AF: ["korean"], \u1109\u1161\u1109\u1173\u11B7: ["korean"], \u1109\u1161\u1109\u1175\u11AF: ["korean"], \u1109\u1161\u110B\u1165\u11B8: ["korean"], \u1109\u1161\u110B\u116D\u11BC: ["korean"], \u1109\u1161\u110B\u116F\u11AF: ["korean"], \u1109\u1161\u110C\u1161\u11BC: ["korean"], \u1109\u1161\u110C\u1165\u11AB: ["korean"], \u1109\u1161\u110C\u1175\u11AB: ["korean"], \u1109\u1161\u110E\u1169\u11AB: ["korean"], \u1109\u1161\u110E\u116E\u11AB\u1100\u1175: ["korean"], \u1109\u1161\u1110\u1161\u11BC: ["korean"], \u1109\u1161\u1110\u116E\u1105\u1175: ["korean"], \u1109\u1161\u1112\u1173\u11AF: ["korean"], \u1109\u1161\u11AB\u1100\u1175\u11AF: ["korean"], \u1109\u1161\u11AB\u1107\u116E\u110B\u1175\u11AB\u1100\u116A: ["korean"], \u1109\u1161\u11AB\u110B\u1165\u11B8: ["korean"], \u1109\u1161\u11AB\u110E\u1162\u11A8: ["korean"], \u1109\u1161\u11AF\u1105\u1175\u11B7: ["korean"], \u1109\u1161\u11AF\u110B\u1175\u11AB: ["korean"], \u1109\u1161\u11AF\u110D\u1161\u11A8: ["korean"], \u1109\u1161\u11B7\u1100\u1168\u1110\u1161\u11BC: ["korean"], \u1109\u1161\u11B7\u1100\u116E\u11A8: ["korean"], \u1109\u1161\u11B7\u1109\u1175\u11B8: ["korean"], \u1109\u1161\u11B7\u110B\u116F\u11AF: ["korean"], \u1109\u1161\u11B7\u110E\u1169\u11AB: ["korean"], \u1109\u1161\u11BC\u1100\u116A\u11AB: ["korean"], \u1109\u1161\u11BC\u1100\u1173\u11B7: ["korean"], \u1109\u1161\u11BC\u1103\u1162: ["korean"], \u1109\u1161\u11BC\u1105\u1172: ["korean"], \u1109\u1161\u11BC\u1107\u1161\u11AB\u1100\u1175: ["korean"], \u1109\u1161\u11BC\u1109\u1161\u11BC: ["korean"], \u1109\u1161\u11BC\u1109\u1175\u11A8: ["korean"], \u1109\u1161\u11BC\u110B\u1165\u11B8: ["korean"], \u1109\u1161\u11BC\u110B\u1175\u11AB: ["korean"], \u1109\u1161\u11BC\u110C\u1161: ["korean"], \u1109\u1161\u11BC\u110C\u1165\u11B7: ["korean"], \u1109\u1161\u11BC\u110E\u1165: ["korean"], \u1109\u1161\u11BC\u110E\u116E: ["korean"], \u1109\u1161\u11BC\u1110\u1162: ["korean"], \u1109\u1161\u11BC\u1111\u116D: ["korean"], \u1109\u1161\u11BC\u1111\u116E\u11B7: ["korean"], \u1109\u1161\u11BC\u1112\u116A\u11BC: ["korean"], \u1109\u1162\u1107\u1167\u11A8: ["korean"], \u1109\u1162\u11A8\u1101\u1161\u11AF: ["korean"], \u1109\u1162\u11A8\u110B\u1167\u11AB\u1111\u1175\u11AF: ["korean"], \u1109\u1162\u11BC\u1100\u1161\u11A8: ["korean"], \u1109\u1162\u11BC\u1106\u1167\u11BC: ["korean"], \u1109\u1162\u11BC\u1106\u116E\u11AF: ["korean"], \u1109\u1162\u11BC\u1107\u1161\u11BC\u1109\u1169\u11BC: ["korean"], \u1109\u1162\u11BC\u1109\u1161\u11AB: ["korean"], \u1109\u1162\u11BC\u1109\u1165\u11AB: ["korean"], \u1109\u1162\u11BC\u1109\u1175\u11AB: ["korean"], \u1109\u1162\u11BC\u110B\u1175\u11AF: ["korean"], \u1109\u1162\u11BC\u1112\u116A\u11AF: ["korean"], \u1109\u1165\u1105\u1161\u11B8: ["korean"], \u1109\u1165\u1105\u1173\u11AB: ["korean"], \u1109\u1165\u1106\u1167\u11BC: ["korean"], \u1109\u1165\u1106\u1175\u11AB: ["korean"], \u1109\u1165\u1107\u1175\u1109\u1173: ["korean"], \u1109\u1165\u110B\u1163\u11BC: ["korean"], \u1109\u1165\u110B\u116E\u11AF: ["korean"], \u1109\u1165\u110C\u1165\u11A8: ["korean"], \u1109\u1165\u110C\u1165\u11B7: ["korean"], \u1109\u1165\u110D\u1169\u11A8: ["korean"], \u1109\u1165\u110F\u1173\u11AF: ["korean"], \u1109\u1165\u11A8\u1109\u1161: ["korean"], \u1109\u1165\u11A8\u110B\u1172: ["korean"], \u1109\u1165\u11AB\u1100\u1165: ["korean"], \u1109\u1165\u11AB\u1106\u116E\u11AF: ["korean"], \u1109\u1165\u11AB\u1107\u1162: ["korean"], \u1109\u1165\u11AB\u1109\u1162\u11BC: ["korean"], \u1109\u1165\u11AB\u1109\u116E: ["korean"], \u1109\u1165\u11AB\u110B\u116F\u11AB: ["korean"], \u1109\u1165\u11AB\u110C\u1161\u11BC: ["korean"], \u1109\u1165\u11AB\u110C\u1165\u11AB: ["korean"], \u1109\u1165\u11AB\u1110\u1162\u11A8: ["korean"], \u1109\u1165\u11AB\u1111\u116E\u11BC\u1100\u1175: ["korean"], \u1109\u1165\u11AF\u1100\u1165\u110C\u1175: ["korean"], \u1109\u1165\u11AF\u1102\u1161\u11AF: ["korean"], \u1109\u1165\u11AF\u1105\u1165\u11BC\u1110\u1161\u11BC: ["korean"], \u1109\u1165\u11AF\u1106\u1167\u11BC: ["korean"], \u1109\u1165\u11AF\u1106\u116E\u11AB: ["korean"], \u1109\u1165\u11AF\u1109\u1161: ["korean"], \u1109\u1165\u11AF\u110B\u1161\u11A8\u1109\u1161\u11AB: ["korean"], \u1109\u1165\u11AF\u110E\u1175: ["korean"], \u1109\u1165\u11AF\u1110\u1161\u11BC: ["korean"], \u1109\u1165\u11B8\u110A\u1175: ["korean"], \u1109\u1165\u11BC\u1100\u1169\u11BC: ["korean"], \u1109\u1165\u11BC\u1103\u1161\u11BC: ["korean"], \u1109\u1165\u11BC\u1106\u1167\u11BC: ["korean"], \u1109\u1165\u11BC\u1107\u1167\u11AF: ["korean"], \u1109\u1165\u11BC\u110B\u1175\u11AB: ["korean"], \u1109\u1165\u11BC\u110C\u1161\u11BC: ["korean"], \u1109\u1165\u11BC\u110C\u1165\u11A8: ["korean"], \u1109\u1165\u11BC\u110C\u1175\u11AF: ["korean"], \u1109\u1165\u11BC\u1112\u1161\u11B7: ["korean"], \u1109\u1166\u1100\u1173\u11B7: ["korean"], \u1109\u1166\u1106\u1175\u1102\u1161: ["korean"], \u1109\u1166\u1109\u1161\u11BC: ["korean"], \u1109\u1166\u110B\u116F\u11AF: ["korean"], \u1109\u1166\u110C\u1169\u11BC\u1103\u1162\u110B\u116A\u11BC: ["korean"], \u1109\u1166\u1110\u1161\u11A8: ["korean"], \u1109\u1166\u11AB\u1110\u1165: ["korean"], \u1109\u1166\u11AB\u1110\u1175\u1106\u1175\u1110\u1165: ["korean"], \u1109\u1166\u11BA\u110D\u1162: ["korean"], \u1109\u1169\u1100\u1172\u1106\u1169: ["korean"], \u1109\u1169\u1100\u1173\u11A8\u110C\u1165\u11A8: ["korean"], \u1109\u1169\u1100\u1173\u11B7: ["korean"], \u1109\u1169\u1102\u1161\u1100\u1175: ["korean"], \u1109\u1169\u1102\u1167\u11AB: ["korean"], \u1109\u1169\u1103\u1173\u11A8: ["korean"], \u1109\u1169\u1106\u1161\u11BC: ["korean"], \u1109\u1169\u1106\u116E\u11AB: ["korean"], \u1109\u1169\u1109\u1165\u11AF: ["korean"], \u1109\u1169\u1109\u1169\u11A8: ["korean"], \u1109\u1169\u110B\u1161\u1100\u116A: ["korean"], \u1109\u1169\u110B\u116D\u11BC: ["korean"], \u1109\u1169\u110B\u116F\u11AB: ["korean"], \u1109\u1169\u110B\u1173\u11B7: ["korean"], \u1109\u1169\u110C\u116E\u11BC\u1112\u1175: ["korean"], \u1109\u1169\u110C\u1175\u1111\u116E\u11B7: ["korean"], \u1109\u1169\u110C\u1175\u11AF: ["korean"], \u1109\u1169\u1111\u116E\u11BC: ["korean"], \u1109\u1169\u1112\u1167\u11BC: ["korean"], \u1109\u1169\u11A8\u1103\u1161\u11B7: ["korean"], \u1109\u1169\u11A8\u1103\u1169: ["korean"], \u1109\u1169\u11A8\u110B\u1169\u11BA: ["korean"], \u1109\u1169\u11AB\u1100\u1161\u1105\u1161\u11A8: ["korean"], \u1109\u1169\u11AB\u1100\u1175\u11AF: ["korean"], \u1109\u1169\u11AB\u1102\u1167: ["korean"], \u1109\u1169\u11AB\u1102\u1175\u11B7: ["korean"], \u1109\u1169\u11AB\u1103\u1173\u11BC: ["korean"], \u1109\u1169\u11AB\u1106\u1169\u11A8: ["korean"], \u1109\u1169\u11AB\u1108\u1167\u11A8: ["korean"], \u1109\u1169\u11AB\u1109\u1175\u11AF: ["korean"], \u1109\u1169\u11AB\u110C\u1175\u11AF: ["korean"], \u1109\u1169\u11AB\u1110\u1169\u11B8: ["korean"], \u1109\u1169\u11AB\u1112\u1162: ["korean"], \u1109\u1169\u11AF\u110C\u1175\u11A8\u1112\u1175: ["korean"], \u1109\u1169\u11B7\u110A\u1175: ["korean"], \u1109\u1169\u11BC\u110B\u1161\u110C\u1175: ["korean"], \u1109\u1169\u11BC\u110B\u1175: ["korean"], \u1109\u1169\u11BC\u1111\u1167\u11AB: ["korean"], \u1109\u116C\u1100\u1169\u1100\u1175: ["korean"], \u1109\u116D\u1111\u1175\u11BC: ["korean"], \u1109\u116E\u1100\u1165\u11AB: ["korean"], \u1109\u116E\u1102\u1167\u11AB: ["korean"], \u1109\u116E\u1103\u1161\u11AB: ["korean"], \u1109\u116E\u1103\u1169\u11BA\u1106\u116E\u11AF: ["korean"], \u1109\u116E\u1103\u1169\u11BC\u110C\u1165\u11A8: ["korean"], \u1109\u116E\u1106\u1167\u11AB: ["korean"], \u1109\u116E\u1106\u1167\u11BC: ["korean"], \u1109\u116E\u1107\u1161\u11A8: ["korean"], \u1109\u116E\u1109\u1161\u11BC: ["korean"], \u1109\u116E\u1109\u1165\u11A8: ["korean"], \u1109\u116E\u1109\u116E\u11AF: ["korean"], \u1109\u116E\u1109\u1175\u1105\u1169: ["korean"], \u1109\u116E\u110B\u1165\u11B8: ["korean"], \u1109\u116E\u110B\u1167\u11B7: ["korean"], \u1109\u116E\u110B\u1167\u11BC: ["korean"], \u1109\u116E\u110B\u1175\u11B8: ["korean"], \u1109\u116E\u110C\u116E\u11AB: ["korean"], \u1109\u116E\u110C\u1175\u11B8: ["korean"], \u1109\u116E\u110E\u116E\u11AF: ["korean"], \u1109\u116E\u110F\u1165\u11BA: ["korean"], \u1109\u116E\u1111\u1175\u11AF: ["korean"], \u1109\u116E\u1112\u1161\u11A8: ["korean"], \u1109\u116E\u1112\u1165\u11B7\u1109\u1162\u11BC: ["korean"], \u1109\u116E\u1112\u116A\u1100\u1175: ["korean"], \u1109\u116E\u11A8\u1102\u1167: ["korean"], \u1109\u116E\u11A8\u1109\u1169: ["korean"], \u1109\u116E\u11A8\u110C\u1166: ["korean"], \u1109\u116E\u11AB\u1100\u1161\u11AB: ["korean"], \u1109\u116E\u11AB\u1109\u1165: ["korean"], \u1109\u116E\u11AB\u1109\u116E: ["korean"], \u1109\u116E\u11AB\u1109\u1175\u11A8\u1100\u1161\u11AB: ["korean"], \u1109\u116E\u11AB\u110B\u1171: ["korean"], \u1109\u116E\u11AE\u1100\u1161\u1105\u1161\u11A8: ["korean"], \u1109\u116E\u11AF\u1107\u1167\u11BC: ["korean"], \u1109\u116E\u11AF\u110C\u1175\u11B8: ["korean"], \u1109\u116E\u11BA\u110C\u1161: ["korean"], \u1109\u1173\u1102\u1175\u11B7: ["korean"], \u1109\u1173\u1106\u116E\u11AF: ["korean"], \u1109\u1173\u1109\u1173\u1105\u1169: ["korean"], \u1109\u1173\u1109\u1173\u11BC: ["korean"], \u1109\u1173\u110B\u1170\u1110\u1165: ["korean"], \u1109\u1173\u110B\u1171\u110E\u1175: ["korean"], \u1109\u1173\u110F\u1166\u110B\u1175\u1110\u1173: ["korean"], \u1109\u1173\u1110\u1172\u1103\u1175\u110B\u1169: ["korean"], \u1109\u1173\u1110\u1173\u1105\u1166\u1109\u1173: ["korean"], \u1109\u1173\u1111\u1169\u110E\u1173: ["korean"], \u1109\u1173\u11AF\u110D\u1165\u11A8: ["korean"], \u1109\u1173\u11AF\u1111\u1173\u11B7: ["korean"], \u1109\u1173\u11B8\u1100\u116A\u11AB: ["korean"], \u1109\u1173\u11B8\u1100\u1175: ["korean"], \u1109\u1173\u11BC\u1100\u1162\u11A8: ["korean"], \u1109\u1173\u11BC\u1105\u1175: ["korean"], \u1109\u1173\u11BC\u1107\u116E: ["korean"], \u1109\u1173\u11BC\u110B\u116D\u11BC\u110E\u1161: ["korean"], \u1109\u1173\u11BC\u110C\u1175\u11AB: ["korean"], \u1109\u1175\u1100\u1161\u11A8: ["korean"], \u1109\u1175\u1100\u1161\u11AB: ["korean"], \u1109\u1175\u1100\u1169\u11AF: ["korean"], \u1109\u1175\u1100\u1173\u11B7\u110E\u1175: ["korean"], \u1109\u1175\u1102\u1161\u1105\u1175\u110B\u1169: ["korean"], \u1109\u1175\u1103\u1162\u11A8: ["korean"], \u1109\u1175\u1105\u1175\u110C\u1173: ["korean"], \u1109\u1175\u1106\u1166\u11AB\u1110\u1173: ["korean"], \u1109\u1175\u1106\u1175\u11AB: ["korean"], \u1109\u1175\u1107\u116E\u1106\u1169: ["korean"], \u1109\u1175\u1109\u1165\u11AB: ["korean"], \u1109\u1175\u1109\u1165\u11AF: ["korean"], \u1109\u1175\u1109\u1173\u1110\u1166\u11B7: ["korean"], \u1109\u1175\u110B\u1161\u1107\u1165\u110C\u1175: ["korean"], \u1109\u1175\u110B\u1165\u1106\u1165\u1102\u1175: ["korean"], \u1109\u1175\u110B\u116F\u11AF: ["korean"], \u1109\u1175\u110B\u1175\u11AB: ["korean"], \u1109\u1175\u110B\u1175\u11AF: ["korean"], \u1109\u1175\u110C\u1161\u11A8: ["korean"], \u1109\u1175\u110C\u1161\u11BC: ["korean"], \u1109\u1175\u110C\u1165\u11AF: ["korean"], \u1109\u1175\u110C\u1165\u11B7: ["korean"], \u1109\u1175\u110C\u116E\u11BC: ["korean"], \u1109\u1175\u110C\u1173\u11AB: ["korean"], \u1109\u1175\u110C\u1175\u11B8: ["korean"], \u1109\u1175\u110E\u1165\u11BC: ["korean"], \u1109\u1175\u1112\u1161\u11B8: ["korean"], \u1109\u1175\u1112\u1165\u11B7: ["korean"], \u1109\u1175\u11A8\u1100\u116E: ["korean"], \u1109\u1175\u11A8\u1100\u1175: ["korean"], \u1109\u1175\u11A8\u1103\u1161\u11BC: ["korean"], \u1109\u1175\u11A8\u1105\u1163\u11BC: ["korean"], \u1109\u1175\u11A8\u1105\u116D\u1111\u116E\u11B7: ["korean"], \u1109\u1175\u11A8\u1106\u116E\u11AF: ["korean"], \u1109\u1175\u11A8\u1108\u1161\u11BC: ["korean"], \u1109\u1175\u11A8\u1109\u1161: ["korean"], \u1109\u1175\u11A8\u1109\u1162\u11BC\u1112\u116A\u11AF: ["korean"], \u1109\u1175\u11A8\u110E\u1169: ["korean"], \u1109\u1175\u11A8\u1110\u1161\u11A8: ["korean"], \u1109\u1175\u11A8\u1111\u116E\u11B7: ["korean"], \u1109\u1175\u11AB\u1100\u1169: ["korean"], \u1109\u1175\u11AB\u1100\u1172: ["korean"], \u1109\u1175\u11AB\u1102\u1167\u11B7: ["korean"], \u1109\u1175\u11AB\u1106\u116E\u11AB: ["korean"], \u1109\u1175\u11AB\u1107\u1161\u11AF: ["korean"], \u1109\u1175\u11AB\u1107\u1175: ["korean"], \u1109\u1175\u11AB\u1109\u1161: ["korean"], \u1109\u1175\u11AB\u1109\u1166: ["korean"], \u1109\u1175\u11AB\u110B\u116D\u11BC: ["korean"], \u1109\u1175\u11AB\u110C\u1166\u1111\u116E\u11B7: ["korean"], \u1109\u1175\u11AB\u110E\u1165\u11BC: ["korean"], \u1109\u1175\u11AB\u110E\u1166: ["korean"], \u1109\u1175\u11AB\u1112\u116A: ["korean"], \u1109\u1175\u11AF\u1100\u1161\u11B7: ["korean"], \u1109\u1175\u11AF\u1102\u1162: ["korean"], \u1109\u1175\u11AF\u1105\u1167\u11A8: ["korean"], \u1109\u1175\u11AF\u1105\u1168: ["korean"], \u1109\u1175\u11AF\u1106\u1161\u11BC: ["korean"], \u1109\u1175\u11AF\u1109\u116E: ["korean"], \u1109\u1175\u11AF\u1109\u1173\u11B8: ["korean"], \u1109\u1175\u11AF\u1109\u1175: ["korean"], \u1109\u1175\u11AF\u110C\u1161\u11BC: ["korean"], \u1109\u1175\u11AF\u110C\u1165\u11BC: ["korean"], \u1109\u1175\u11AF\u110C\u1175\u11AF\u110C\u1165\u11A8: ["korean"], \u1109\u1175\u11AF\u110E\u1165\u11AB: ["korean"], \u1109\u1175\u11AF\u110E\u1166: ["korean"], \u1109\u1175\u11AF\u110F\u1165\u11BA: ["korean"], \u1109\u1175\u11AF\u1110\u1162: ["korean"], \u1109\u1175\u11AF\u1111\u1162: ["korean"], \u1109\u1175\u11AF\u1112\u1165\u11B7: ["korean"], \u1109\u1175\u11AF\u1112\u1167\u11AB: ["korean"], \u1109\u1175\u11B7\u1105\u1175: ["korean"], \u1109\u1175\u11B7\u1107\u116E\u1105\u1173\u11B7: ["korean"], \u1109\u1175\u11B7\u1109\u1161: ["korean"], \u1109\u1175\u11B7\u110C\u1161\u11BC: ["korean"], \u1109\u1175\u11B7\u110C\u1165\u11BC: ["korean"], \u1109\u1175\u11B7\u1111\u1161\u11AB: ["korean"], \u110A\u1161\u11BC\u1103\u116E\u11BC\u110B\u1175: ["korean"], \u110A\u1175\u1105\u1173\u11B7: ["korean"], \u110A\u1175\u110B\u1161\u11BA: ["korean"], \u110B\u1161\u1100\u1161\u110A\u1175: ["korean"], \u110B\u1161\u1102\u1161\u110B\u116E\u11AB\u1109\u1165: ["korean"], \u110B\u1161\u1103\u1173\u1102\u1175\u11B7: ["korean"], \u110B\u1161\u1103\u1173\u11AF: ["korean"], \u110B\u1161\u1109\u1171\u110B\u116E\u11B7: ["korean"], \u110B\u1161\u1109\u1173\u1111\u1161\u11AF\u1110\u1173: ["korean"], \u110B\u1161\u1109\u1175\u110B\u1161: ["korean"], \u110B\u1161\u110B\u116E\u11AF\u1105\u1165: ["korean"], \u110B\u1161\u110C\u1165\u110A\u1175: ["korean"], \u110B\u1161\u110C\u116E\u11B7\u1106\u1161: ["korean"], \u110B\u1161\u110C\u1175\u11A8: ["korean"], \u110B\u1161\u110E\u1175\u11B7: ["korean"], \u110B\u1161\u1111\u1161\u1110\u1173: ["korean"], \u110B\u1161\u1111\u1173\u1105\u1175\u110F\u1161: ["korean"], \u110B\u1161\u1111\u1173\u11B7: ["korean"], \u110B\u1161\u1112\u1169\u11B8: ["korean"], \u110B\u1161\u1112\u1173\u11AB: ["korean"], \u110B\u1161\u11A8\u1100\u1175: ["korean"], \u110B\u1161\u11A8\u1106\u1169\u11BC: ["korean"], \u110B\u1161\u11A8\u1109\u116E: ["korean"], \u110B\u1161\u11AB\u1100\u1162: ["korean"], \u110B\u1161\u11AB\u1100\u1167\u11BC: ["korean"], \u110B\u1161\u11AB\u1100\u116A: ["korean"], \u110B\u1161\u11AB\u1102\u1162: ["korean"], \u110B\u1161\u11AB\u1102\u1167\u11BC: ["korean"], \u110B\u1161\u11AB\u1103\u1169\u11BC: ["korean"], \u110B\u1161\u11AB\u1107\u1161\u11BC: ["korean"], \u110B\u1161\u11AB\u1107\u116E: ["korean"], \u110B\u1161\u11AB\u110C\u116E: ["korean"], \u110B\u1161\u11AF\u1105\u116E\u1106\u1175\u1102\u1172\u11B7: ["korean"], \u110B\u1161\u11AF\u110F\u1169\u110B\u1169\u11AF: ["korean"], \u110B\u1161\u11B7\u1109\u1175: ["korean"], \u110B\u1161\u11B7\u110F\u1165\u11BA: ["korean"], \u110B\u1161\u11B8\u1105\u1167\u11A8: ["korean"], \u110B\u1161\u11C1\u1102\u1161\u11AF: ["korean"], \u110B\u1161\u11C1\u1106\u116E\u11AB: ["korean"], \u110B\u1162\u110B\u1175\u11AB: ["korean"], \u110B\u1162\u110C\u1165\u11BC: ["korean"], \u110B\u1162\u11A8\u1109\u116E: ["korean"], \u110B\u1162\u11AF\u1107\u1165\u11B7: ["korean"], \u110B\u1163\u1100\u1161\u11AB: ["korean"], \u110B\u1163\u1103\u1161\u11AB: ["korean"], \u110B\u1163\u110B\u1169\u11BC: ["korean"], \u110B\u1163\u11A8\u1100\u1161\u11AB: ["korean"], \u110B\u1163\u11A8\u1100\u116E\u11A8: ["korean"], \u110B\u1163\u11A8\u1109\u1169\u11A8: ["korean"], \u110B\u1163\u11A8\u1109\u116E: ["korean"], \u110B\u1163\u11A8\u110C\u1165\u11B7: ["korean"], \u110B\u1163\u11A8\u1111\u116E\u11B7: ["korean"], \u110B\u1163\u11A8\u1112\u1169\u11AB\u1102\u1167: ["korean"], \u110B\u1163\u11BC\u1102\u1167\u11B7: ["korean"], \u110B\u1163\u11BC\u1105\u1167\u11A8: ["korean"], \u110B\u1163\u11BC\u1106\u1161\u11AF: ["korean"], \u110B\u1163\u11BC\u1107\u1162\u110E\u116E: ["korean"], \u110B\u1163\u11BC\u110C\u116E: ["korean"], \u110B\u1163\u11BC\u1111\u1161: ["korean"], \u110B\u1165\u1103\u116E\u11B7: ["korean"], \u110B\u1165\u1105\u1167\u110B\u116E\u11B7: ["korean"], \u110B\u1165\u1105\u1173\u11AB: ["korean"], \u110B\u1165\u110C\u1166\u11BA\u1107\u1161\u11B7: ["korean"], \u110B\u1165\u110D\u1162\u11BB\u1103\u1173\u11AB: ["korean"], \u110B\u1165\u110D\u1165\u1103\u1161\u1100\u1161: ["korean"], \u110B\u1165\u110D\u1165\u11AB\u110C\u1175: ["korean"], \u110B\u1165\u11AB\u1102\u1175: ["korean"], \u110B\u1165\u11AB\u1103\u1165\u11A8: ["korean"], \u110B\u1165\u11AB\u1105\u1169\u11AB: ["korean"], \u110B\u1165\u11AB\u110B\u1165: ["korean"], \u110B\u1165\u11AF\u1100\u116E\u11AF: ["korean"], \u110B\u1165\u11AF\u1105\u1173\u11AB: ["korean"], \u110B\u1165\u11AF\u110B\u1173\u11B7: ["korean"], \u110B\u1165\u11AF\u1111\u1175\u11BA: ["korean"], \u110B\u1165\u11B7\u1106\u1161: ["korean"], \u110B\u1165\u11B8\u1106\u116E: ["korean"], \u110B\u1165\u11B8\u110C\u1169\u11BC: ["korean"], \u110B\u1165\u11B8\u110E\u1166: ["korean"], \u110B\u1165\u11BC\u1103\u1165\u11BC\u110B\u1175: ["korean"], \u110B\u1165\u11BC\u1106\u1161\u11BC: ["korean"], \u110B\u1165\u11BC\u1110\u1165\u1105\u1175: ["korean"], \u110B\u1165\u11BD\u1100\u1173\u110C\u1166: ["korean"], \u110B\u1166\u1102\u1165\u110C\u1175: ["korean"], \u110B\u1166\u110B\u1165\u110F\u1165\u11AB: ["korean"], \u110B\u1166\u11AB\u110C\u1175\u11AB: ["korean"], \u110B\u1167\u1100\u1165\u11AB: ["korean"], \u110B\u1167\u1100\u1169\u1109\u1162\u11BC: ["korean"], \u110B\u1167\u1100\u116A\u11AB: ["korean"], \u110B\u1167\u1100\u116E\u11AB: ["korean"], \u110B\u1167\u1100\u116F\u11AB: ["korean"], \u110B\u1167\u1103\u1162\u1109\u1162\u11BC: ["korean"], \u110B\u1167\u1103\u1165\u11B2: ["korean"], \u110B\u1167\u1103\u1169\u11BC\u1109\u1162\u11BC: ["korean"], \u110B\u1167\u1103\u1173\u11AB: ["korean"], \u110B\u1167\u1105\u1169\u11AB: ["korean"], \u110B\u1167\u1105\u1173\u11B7: ["korean"], \u110B\u1167\u1109\u1165\u11BA: ["korean"], \u110B\u1167\u1109\u1165\u11BC: ["korean"], \u110B\u1167\u110B\u116A\u11BC: ["korean"], \u110B\u1167\u110B\u1175\u11AB: ["korean"], \u110B\u1167\u110C\u1165\u11AB\u1112\u1175: ["korean"], \u110B\u1167\u110C\u1175\u11A8\u110B\u116F\u11AB: ["korean"], \u110B\u1167\u1112\u1161\u11A8\u1109\u1162\u11BC: ["korean"], \u110B\u1167\u1112\u1162\u11BC: ["korean"], \u110B\u1167\u11A8\u1109\u1161: ["korean"], \u110B\u1167\u11A8\u1109\u1175: ["korean"], \u110B\u1167\u11A8\u1112\u1161\u11AF: ["korean"], \u110B\u1167\u11AB\u1100\u1167\u11AF: ["korean"], \u110B\u1167\u11AB\u1100\u116E: ["korean"], \u110B\u1167\u11AB\u1100\u1173\u11A8: ["korean"], \u110B\u1167\u11AB\u1100\u1175: ["korean"], \u110B\u1167\u11AB\u1105\u1161\u11A8: ["korean"], \u110B\u1167\u11AB\u1109\u1165\u11AF: ["korean"], \u110B\u1167\u11AB\u1109\u1166: ["korean"], \u110B\u1167\u11AB\u1109\u1169\u11A8: ["korean"], \u110B\u1167\u11AB\u1109\u1173\u11B8: ["korean"], \u110B\u1167\u11AB\u110B\u1162: ["korean"], \u110B\u1167\u11AB\u110B\u1168\u110B\u1175\u11AB: ["korean"], \u110B\u1167\u11AB\u110B\u1175\u11AB: ["korean"], \u110B\u1167\u11AB\u110C\u1161\u11BC: ["korean"], \u110B\u1167\u11AB\u110C\u116E: ["korean"], \u110B\u1167\u11AB\u110E\u116E\u11AF: ["korean"], \u110B\u1167\u11AB\u1111\u1175\u11AF: ["korean"], \u110B\u1167\u11AB\u1112\u1161\u11B8: ["korean"], \u110B\u1167\u11AB\u1112\u1172: ["korean"], \u110B\u1167\u11AF\u1100\u1175: ["korean"], \u110B\u1167\u11AF\u1106\u1162: ["korean"], \u110B\u1167\u11AF\u1109\u116C: ["korean"], \u110B\u1167\u11AF\u1109\u1175\u11B7\u1112\u1175: ["korean"], \u110B\u1167\u11AF\u110C\u1165\u11BC: ["korean"], \u110B\u1167\u11AF\u110E\u1161: ["korean"], \u110B\u1167\u11AF\u1112\u1173\u11AF: ["korean"], \u110B\u1167\u11B7\u1105\u1167: ["korean"], \u110B\u1167\u11B8\u1109\u1165: ["korean"], \u110B\u1167\u11BC\u1100\u116E\u11A8: ["korean"], \u110B\u1167\u11BC\u1102\u1161\u11B7: ["korean"], \u110B\u1167\u11BC\u1109\u1161\u11BC: ["korean"], \u110B\u1167\u11BC\u110B\u1163\u11BC: ["korean"], \u110B\u1167\u11BC\u110B\u1167\u11A8: ["korean"], \u110B\u1167\u11BC\u110B\u116E\u11BC: ["korean"], \u110B\u1167\u11BC\u110B\u116F\u11AB\u1112\u1175: ["korean"], \u110B\u1167\u11BC\u1112\u1161: ["korean"], \u110B\u1167\u11BC\u1112\u1163\u11BC: ["korean"], \u110B\u1167\u11BC\u1112\u1169\u11AB: ["korean"], \u110B\u1167\u11BC\u1112\u116A: ["korean"], \u110B\u1167\u11C1\u1100\u116E\u1105\u1175: ["korean"], \u110B\u1167\u11C1\u1107\u1161\u11BC: ["korean"], \u110B\u1167\u11C1\u110C\u1175\u11B8: ["korean"], \u110B\u1168\u1100\u1161\u11B7: ["korean"], \u110B\u1168\u1100\u1173\u11B7: ["korean"], \u110B\u1168\u1107\u1161\u11BC: ["korean"], \u110B\u1168\u1109\u1161\u11AB: ["korean"], \u110B\u1168\u1109\u1161\u11BC: ["korean"], \u110B\u1168\u1109\u1165\u11AB: ["korean"], \u110B\u1168\u1109\u116E\u11AF: ["korean"], \u110B\u1168\u1109\u1173\u11B8: ["korean"], \u110B\u1168\u1109\u1175\u11A8\u110C\u1161\u11BC: ["korean"], \u110B\u1168\u110B\u1163\u11A8: ["korean"], \u110B\u1168\u110C\u1165\u11AB: ["korean"], \u110B\u1168\u110C\u1165\u11AF: ["korean"], \u110B\u1168\u110C\u1165\u11BC: ["korean"], \u110B\u1168\u110F\u1165\u11AB\u1103\u1162: ["korean"], \u110B\u1168\u11BA\u1102\u1161\u11AF: ["korean"], \u110B\u1169\u1102\u1173\u11AF: ["korean"], \u110B\u1169\u1105\u1161\u11A8: ["korean"], \u110B\u1169\u1105\u1162\u11BA\u1103\u1169\u11BC\u110B\u1161\u11AB: ["korean"], \u110B\u1169\u1105\u1166\u11AB\u110C\u1175: ["korean"], \u110B\u1169\u1105\u1169\u110C\u1175: ["korean"], \u110B\u1169\u1105\u1173\u11AB\u1107\u1161\u11AF: ["korean"], \u110B\u1169\u1107\u1173\u11AB: ["korean"], \u110B\u1169\u1109\u1175\u11B8: ["korean"], \u110B\u1169\u110B\u1167\u11B7: ["korean"], \u110B\u1169\u110B\u116F\u11AF: ["korean"], \u110B\u1169\u110C\u1165\u11AB: ["korean"], \u110B\u1169\u110C\u1175\u11A8: ["korean"], \u110B\u1169\u110C\u1175\u11BC\u110B\u1165: ["korean"], \u110B\u1169\u1111\u1166\u1105\u1161: ["korean"], \u110B\u1169\u1111\u1175\u1109\u1173\u1110\u1166\u11AF: ["korean"], \u110B\u1169\u1112\u1175\u1105\u1167: ["korean"], \u110B\u1169\u11A8\u1109\u1161\u11BC: ["korean"], \u110B\u1169\u11A8\u1109\u116E\u1109\u116E: ["korean"], \u110B\u1169\u11AB\u1100\u1161\u11BD: ["korean"], \u110B\u1169\u11AB\u1105\u1161\u110B\u1175\u11AB: ["korean"], \u110B\u1169\u11AB\u1106\u1169\u11B7: ["korean"], \u110B\u1169\u11AB\u110C\u1169\u11BC\u110B\u1175\u11AF: ["korean"], \u110B\u1169\u11AB\u1110\u1169\u11BC: ["korean"], \u110B\u1169\u11AF\u1100\u1161\u110B\u1173\u11AF: ["korean"], \u110B\u1169\u11AF\u1105\u1175\u11B7\u1111\u1175\u11A8: ["korean"], \u110B\u1169\u11AF\u1112\u1162: ["korean"], \u110B\u1169\u11BA\u110E\u1161\u1105\u1175\u11B7: ["korean"], \u110B\u116A\u110B\u1175\u1109\u1167\u110E\u1173: ["korean"], \u110B\u116A\u110B\u1175\u11AB: ["korean"], \u110B\u116A\u11AB\u1109\u1165\u11BC: ["korean"], \u110B\u116A\u11AB\u110C\u1165\u11AB: ["korean"], \u110B\u116A\u11BC\u1107\u1175: ["korean"], \u110B\u116A\u11BC\u110C\u1161: ["korean"], \u110B\u116B\u1102\u1163\u1112\u1161\u1106\u1167\u11AB: ["korean"], \u110B\u116B\u11AB\u110C\u1175: ["korean"], \u110B\u116C\u1100\u1161\u11BA\u110C\u1175\u11B8: ["korean"], \u110B\u116C\u1100\u116E\u11A8: ["korean"], \u110B\u116C\u1105\u1169\u110B\u116E\u11B7: ["korean"], \u110B\u116C\u1109\u1161\u11B7\u110E\u1169\u11AB: ["korean"], \u110B\u116C\u110E\u116E\u11AF: ["korean"], \u110B\u116C\u110E\u1175\u11B7: ["korean"], \u110B\u116C\u1112\u1161\u11AF\u1106\u1165\u1102\u1175: ["korean"], \u110B\u116C\u11AB\u1107\u1161\u11AF: ["korean"], \u110B\u116C\u11AB\u1109\u1169\u11AB: ["korean"], \u110B\u116C\u11AB\u110D\u1169\u11A8: ["korean"], \u110B\u116D\u1100\u1173\u11B7: ["korean"], \u110B\u116D\u110B\u1175\u11AF: ["korean"], \u110B\u116D\u110C\u1173\u11B7: ["korean"], \u110B\u116D\u110E\u1165\u11BC: ["korean"], \u110B\u116D\u11BC\u1100\u1175: ["korean"], \u110B\u116D\u11BC\u1109\u1165: ["korean"], \u110B\u116D\u11BC\u110B\u1165: ["korean"], \u110B\u116E\u1109\u1161\u11AB: ["korean"], \u110B\u116E\u1109\u1165\u11AB: ["korean"], \u110B\u116E\u1109\u1173\u11BC: ["korean"], \u110B\u116E\u110B\u1167\u11AB\u1112\u1175: ["korean"], \u110B\u116E\u110C\u1165\u11BC: ["korean"], \u110B\u116E\u110E\u1166\u1100\u116E\u11A8: ["korean"], \u110B\u116E\u1111\u1167\u11AB: ["korean"], \u110B\u116E\u11AB\u1103\u1169\u11BC: ["korean"], \u110B\u116E\u11AB\u1106\u1167\u11BC: ["korean"], \u110B\u116E\u11AB\u1107\u1161\u11AB: ["korean"], \u110B\u116E\u11AB\u110C\u1165\u11AB: ["korean"], \u110B\u116E\u11AB\u1112\u1162\u11BC: ["korean"], \u110B\u116E\u11AF\u1109\u1161\u11AB: ["korean"], \u110B\u116E\u11AF\u110B\u1173\u11B7: ["korean"], \u110B\u116E\u11B7\u110C\u1175\u11A8\u110B\u1175\u11B7: ["korean"], \u110B\u116E\u11BA\u110B\u1165\u1105\u1173\u11AB: ["korean"], \u110B\u116E\u11BA\u110B\u1173\u11B7: ["korean"], \u110B\u116F\u1102\u1161\u11A8: ["korean"], \u110B\u116F\u11AB\u1100\u1169: ["korean"], \u110B\u116F\u11AB\u1105\u1162: ["korean"], \u110B\u116F\u11AB\u1109\u1165: ["korean"], \u110B\u116F\u11AB\u1109\u116E\u11BC\u110B\u1175: ["korean"], \u110B\u116F\u11AB\u110B\u1175\u11AB: ["korean"], \u110B\u116F\u11AB\u110C\u1161\u11BC: ["korean"], \u110B\u116F\u11AB\u1111\u1175\u1109\u1173: ["korean"], \u110B\u116F\u11AF\u1100\u1173\u11B8: ["korean"], \u110B\u116F\u11AF\u1103\u1173\u110F\u1165\u11B8: ["korean"], \u110B\u116F\u11AF\u1109\u1166: ["korean"], \u110B\u116F\u11AF\u110B\u116D\u110B\u1175\u11AF: ["korean"], \u110B\u1170\u110B\u1175\u1110\u1165: ["korean"], \u110B\u1171\u1107\u1161\u11AB: ["korean"], \u110B\u1171\u1107\u1165\u11B8: ["korean"], \u110B\u1171\u1109\u1165\u11BC: ["korean"], \u110B\u1171\u110B\u116F\u11AB: ["korean"], \u110B\u1171\u1112\u1165\u11B7: ["korean"], \u110B\u1171\u1112\u1167\u11B8: ["korean"], \u110B\u1171\u11BA\u1109\u1161\u1105\u1161\u11B7: ["korean"], \u110B\u1172\u1102\u1161\u11AB\u1112\u1175: ["korean"], \u110B\u1172\u1105\u1165\u11B8: ["korean"], \u110B\u1172\u1106\u1167\u11BC: ["korean"], \u110B\u1172\u1106\u116E\u11AF: ["korean"], \u110B\u1172\u1109\u1161\u11AB: ["korean"], \u110B\u1172\u110C\u1165\u11A8: ["korean"], \u110B\u1172\u110E\u1175\u110B\u116F\u11AB: ["korean"], \u110B\u1172\u1112\u1161\u11A8: ["korean"], \u110B\u1172\u1112\u1162\u11BC: ["korean"], \u110B\u1172\u1112\u1167\u11BC: ["korean"], \u110B\u1172\u11A8\u1100\u116E\u11AB: ["korean"], \u110B\u1172\u11A8\u1109\u1161\u11BC: ["korean"], \u110B\u1172\u11A8\u1109\u1175\u11B8: ["korean"], \u110B\u1172\u11A8\u110E\u1166: ["korean"], \u110B\u1173\u11AB\u1112\u1162\u11BC: ["korean"], \u110B\u1173\u11B7\u1105\u1167\u11A8: ["korean"], \u110B\u1173\u11B7\u1105\u116D: ["korean"], \u110B\u1173\u11B7\u1107\u1161\u11AB: ["korean"], \u110B\u1173\u11B7\u1109\u1165\u11BC: ["korean"], \u110B\u1173\u11B7\u1109\u1175\u11A8: ["korean"], \u110B\u1173\u11B7\u110B\u1161\u11A8: ["korean"], \u110B\u1173\u11B7\u110C\u116E: ["korean"], \u110B\u1174\u1100\u1167\u11AB: ["korean"], \u110B\u1174\u1102\u1169\u11AB: ["korean"], \u110B\u1174\u1106\u116E\u11AB: ["korean"], \u110B\u1174\u1107\u1169\u11A8: ["korean"], \u110B\u1174\u1109\u1175\u11A8: ["korean"], \u110B\u1174\u1109\u1175\u11B7: ["korean"], \u110B\u1174\u110B\u116C\u1105\u1169: ["korean"], \u110B\u1174\u110B\u116D\u11A8: ["korean"], \u110B\u1174\u110B\u116F\u11AB: ["korean"], \u110B\u1174\u1112\u1161\u11A8: ["korean"], \u110B\u1175\u1100\u1165\u11BA: ["korean"], \u110B\u1175\u1100\u1169\u11BA: ["korean"], \u110B\u1175\u1102\u1167\u11B7: ["korean"], \u110B\u1175\u1102\u1169\u11B7: ["korean"], \u110B\u1175\u1103\u1161\u11AF: ["korean"], \u110B\u1175\u1103\u1162\u1105\u1169: ["korean"], \u110B\u1175\u1103\u1169\u11BC: ["korean"], \u110B\u1175\u1105\u1165\u11C2\u1100\u1166: ["korean"], \u110B\u1175\u1105\u1167\u11A8\u1109\u1165: ["korean"], \u110B\u1175\u1105\u1169\u11AB\u110C\u1165\u11A8: ["korean"], \u110B\u1175\u1105\u1173\u11B7: ["korean"], \u110B\u1175\u1106\u1175\u11AB: ["korean"], \u110B\u1175\u1107\u1161\u11AF\u1109\u1169: ["korean"], \u110B\u1175\u1107\u1167\u11AF: ["korean"], \u110B\u1175\u1107\u116E\u11AF: ["korean"], \u110B\u1175\u1108\u1161\u11AF: ["korean"], \u110B\u1175\u1109\u1161\u11BC: ["korean"], \u110B\u1175\u1109\u1165\u11BC: ["korean"], \u110B\u1175\u1109\u1173\u11AF: ["korean"], \u110B\u1175\u110B\u1163\u1100\u1175: ["korean"], \u110B\u1175\u110B\u116D\u11BC: ["korean"], \u110B\u1175\u110B\u116E\u11BA: ["korean"], \u110B\u1175\u110B\u116F\u11AF: ["korean"], \u110B\u1175\u110B\u1173\u11A8\u1100\u1169: ["korean"], \u110B\u1175\u110B\u1175\u11A8: ["korean"], \u110B\u1175\u110C\u1165\u11AB: ["korean"], \u110B\u1175\u110C\u116E\u11BC: ["korean"], \u110B\u1175\u1110\u1173\u11AE\u1102\u1161\u11AF: ["korean"], \u110B\u1175\u1110\u1173\u11AF: ["korean"], \u110B\u1175\u1112\u1169\u11AB: ["korean"], \u110B\u1175\u11AB\u1100\u1161\u11AB: ["korean"], \u110B\u1175\u11AB\u1100\u1167\u11A8: ["korean"], \u110B\u1175\u11AB\u1100\u1169\u11BC: ["korean"], \u110B\u1175\u11AB\u1100\u116E: ["korean"], \u110B\u1175\u11AB\u1100\u1173\u11AB: ["korean"], \u110B\u1175\u11AB\u1100\u1175: ["korean"], \u110B\u1175\u11AB\u1103\u1169: ["korean"], \u110B\u1175\u11AB\u1105\u1172: ["korean"], \u110B\u1175\u11AB\u1106\u116E\u11AF: ["korean"], \u110B\u1175\u11AB\u1109\u1162\u11BC: ["korean"], \u110B\u1175\u11AB\u1109\u116B: ["korean"], \u110B\u1175\u11AB\u110B\u1167\u11AB: ["korean"], \u110B\u1175\u11AB\u110B\u116F\u11AB: ["korean"], \u110B\u1175\u11AB\u110C\u1162: ["korean"], \u110B\u1175\u11AB\u110C\u1169\u11BC: ["korean"], \u110B\u1175\u11AB\u110E\u1165\u11AB: ["korean"], \u110B\u1175\u11AB\u110E\u1166: ["korean"], \u110B\u1175\u11AB\u1110\u1165\u1102\u1166\u11BA: ["korean"], \u110B\u1175\u11AB\u1112\u1161: ["korean"], \u110B\u1175\u11AB\u1112\u1167\u11BC: ["korean"], \u110B\u1175\u11AF\u1100\u1169\u11B8: ["korean"], \u110B\u1175\u11AF\u1100\u1175: ["korean"], \u110B\u1175\u11AF\u1103\u1161\u11AB: ["korean"], \u110B\u1175\u11AF\u1103\u1162: ["korean"], \u110B\u1175\u11AF\u1103\u1173\u11BC: ["korean"], \u110B\u1175\u11AF\u1107\u1161\u11AB: ["korean"], \u110B\u1175\u11AF\u1107\u1169\u11AB: ["korean"], \u110B\u1175\u11AF\u1107\u116E: ["korean"], \u110B\u1175\u11AF\u1109\u1161\u11BC: ["korean"], \u110B\u1175\u11AF\u1109\u1162\u11BC: ["korean"], \u110B\u1175\u11AF\u1109\u1169\u11AB: ["korean"], \u110B\u1175\u11AF\u110B\u116D\u110B\u1175\u11AF: ["korean"], \u110B\u1175\u11AF\u110B\u116F\u11AF: ["korean"], \u110B\u1175\u11AF\u110C\u1165\u11BC: ["korean"], \u110B\u1175\u11AF\u110C\u1169\u11BC: ["korean"], \u110B\u1175\u11AF\u110C\u116E\u110B\u1175\u11AF: ["korean"], \u110B\u1175\u11AF\u110D\u1175\u11A8: ["korean"], \u110B\u1175\u11AF\u110E\u1166: ["korean"], \u110B\u1175\u11AF\u110E\u1175: ["korean"], \u110B\u1175\u11AF\u1112\u1162\u11BC: ["korean"], \u110B\u1175\u11AF\u1112\u116C\u110B\u116D\u11BC: ["korean"], \u110B\u1175\u11B7\u1100\u1173\u11B7: ["korean"], \u110B\u1175\u11B7\u1106\u116E: ["korean"], \u110B\u1175\u11B8\u1103\u1162: ["korean"], \u110B\u1175\u11B8\u1105\u1167\u11A8: ["korean"], \u110B\u1175\u11B8\u1106\u1161\u11BA: ["korean"], \u110B\u1175\u11B8\u1109\u1161: ["korean"], \u110B\u1175\u11B8\u1109\u116E\u11AF: ["korean"], \u110B\u1175\u11B8\u1109\u1175: ["korean"], \u110B\u1175\u11B8\u110B\u116F\u11AB: ["korean"], \u110B\u1175\u11B8\u110C\u1161\u11BC: ["korean"], \u110B\u1175\u11B8\u1112\u1161\u11A8: ["korean"], \u110C\u1161\u1100\u1161\u110B\u116D\u11BC: ["korean"], \u110C\u1161\u1100\u1167\u11A8: ["korean"], \u110C\u1161\u1100\u1173\u11A8: ["korean"], \u110C\u1161\u1103\u1169\u11BC: ["korean"], \u110C\u1161\u1105\u1161\u11BC: ["korean"], \u110C\u1161\u1107\u116E\u1109\u1175\u11B7: ["korean"], \u110C\u1161\u1109\u1175\u11A8: ["korean"], \u110C\u1161\u1109\u1175\u11AB: ["korean"], \u110C\u1161\u110B\u1167\u11AB: ["korean"], \u110C\u1161\u110B\u116F\u11AB: ["korean"], \u110C\u1161\u110B\u1172\u11AF: ["korean"], \u110C\u1161\u110C\u1165\u11AB\u1100\u1165: ["korean"], \u110C\u1161\u110C\u1165\u11BC: ["korean"], \u110C\u1161\u110C\u1169\u11AB\u1109\u1175\u11B7: ["korean"], \u110C\u1161\u1111\u1161\u11AB: ["korean"], \u110C\u1161\u11A8\u1100\u1161: ["korean"], \u110C\u1161\u11A8\u1102\u1167\u11AB: ["korean"], \u110C\u1161\u11A8\u1109\u1165\u11BC: ["korean"], \u110C\u1161\u11A8\u110B\u1165\u11B8: ["korean"], \u110C\u1161\u11A8\u110B\u116D\u11BC: ["korean"], \u110C\u1161\u11A8\u110B\u1173\u11AB\u1104\u1161\u11AF: ["korean"], \u110C\u1161\u11A8\u1111\u116E\u11B7: ["korean"], \u110C\u1161\u11AB\u1103\u1175: ["korean"], \u110C\u1161\u11AB\u1104\u1173\u11A8: ["korean"], \u110C\u1161\u11AB\u110E\u1175: ["korean"], \u110C\u1161\u11AF\u1106\u1169\u11BA: ["korean"], \u110C\u1161\u11B7\u1101\u1161\u11AB: ["korean"], \u110C\u1161\u11B7\u1109\u116E\u1112\u1161\u11B7: ["korean"], \u110C\u1161\u11B7\u1109\u1175: ["korean"], \u110C\u1161\u11B7\u110B\u1169\u11BA: ["korean"], \u110C\u1161\u11B7\u110C\u1161\u1105\u1175: ["korean"], \u110C\u1161\u11B8\u110C\u1175: ["korean"], \u110C\u1161\u11BC\u1100\u116A\u11AB: ["korean"], \u110C\u1161\u11BC\u1100\u116E\u11AB: ["korean"], \u110C\u1161\u11BC\u1100\u1175\u1100\u1161\u11AB: ["korean"], \u110C\u1161\u11BC\u1105\u1162: ["korean"], \u110C\u1161\u11BC\u1105\u1168: ["korean"], \u110C\u1161\u11BC\u1105\u1173: ["korean"], \u110C\u1161\u11BC\u1106\u1161: ["korean"], \u110C\u1161\u11BC\u1106\u1167\u11AB: ["korean"], \u110C\u1161\u11BC\u1106\u1169: ["korean"], \u110C\u1161\u11BC\u1106\u1175: ["korean"], \u110C\u1161\u11BC\u1107\u1175: ["korean"], \u110C\u1161\u11BC\u1109\u1161: ["korean"], \u110C\u1161\u11BC\u1109\u1169: ["korean"], \u110C\u1161\u11BC\u1109\u1175\u11A8: ["korean"], \u110C\u1161\u11BC\u110B\u1162\u110B\u1175\u11AB: ["korean"], \u110C\u1161\u11BC\u110B\u1175\u11AB: ["korean"], \u110C\u1161\u11BC\u110C\u1165\u11B7: ["korean"], \u110C\u1161\u11BC\u110E\u1161: ["korean"], \u110C\u1161\u11BC\u1112\u1161\u11A8\u1100\u1173\u11B7: ["korean"], \u110C\u1162\u1102\u1173\u11BC: ["korean"], \u110C\u1162\u1108\u1161\u11AF\u1105\u1175: ["korean"], \u110C\u1162\u1109\u1161\u11AB: ["korean"], \u110C\u1162\u1109\u1162\u11BC: ["korean"], \u110C\u1162\u110C\u1161\u11A8\u1102\u1167\u11AB: ["korean"], \u110C\u1162\u110C\u1165\u11BC: ["korean"], \u110C\u1162\u110E\u1162\u1100\u1175: ["korean"], \u110C\u1162\u1111\u1161\u11AB: ["korean"], \u110C\u1162\u1112\u1161\u11A8: ["korean"], \u110C\u1162\u1112\u116A\u11AF\u110B\u116D\u11BC: ["korean"], \u110C\u1165\u1100\u1165\u11BA: ["korean"], \u110C\u1165\u1100\u1169\u1105\u1175: ["korean"], \u110C\u1165\u1100\u1169\u11BA: ["korean"], \u110C\u1165\u1102\u1167\u11A8: ["korean"], \u110C\u1165\u1105\u1165\u11AB: ["korean"], \u110C\u1165\u1105\u1165\u11C2\u1100\u1166: ["korean"], \u110C\u1165\u1107\u1165\u11AB: ["korean"], \u110C\u1165\u110B\u116E\u11AF: ["korean"], \u110C\u1165\u110C\u1165\u11AF\u1105\u1169: ["korean"], \u110C\u1165\u110E\u116E\u11A8: ["korean"], \u110C\u1165\u11A8\u1100\u1173\u11A8: ["korean"], \u110C\u1165\u11A8\u1103\u1161\u11BC\u1112\u1175: ["korean"], \u110C\u1165\u11A8\u1109\u1165\u11BC: ["korean"], \u110C\u1165\u11A8\u110B\u116D\u11BC: ["korean"], \u110C\u1165\u11A8\u110B\u1173\u11BC: ["korean"], \u110C\u1165\u11AB\u1100\u1162: ["korean"], \u110C\u1165\u11AB\u1100\u1169\u11BC: ["korean"], \u110C\u1165\u11AB\u1100\u1175: ["korean"], \u110C\u1165\u11AB\u1103\u1161\u11AF: ["korean"], \u110C\u1165\u11AB\u1105\u1161\u1103\u1169: ["korean"], \u110C\u1165\u11AB\u1106\u1161\u11BC: ["korean"], \u110C\u1165\u11AB\u1106\u116E\u11AB: ["korean"], \u110C\u1165\u11AB\u1107\u1161\u11AB: ["korean"], \u110C\u1165\u11AB\u1107\u116E: ["korean"], \u110C\u1165\u11AB\u1109\u1166: ["korean"], \u110C\u1165\u11AB\u1109\u1175: ["korean"], \u110C\u1165\u11AB\u110B\u116D\u11BC: ["korean"], \u110C\u1165\u11AB\u110C\u1161: ["korean"], \u110C\u1165\u11AB\u110C\u1162\u11BC: ["korean"], \u110C\u1165\u11AB\u110C\u116E: ["korean"], \u110C\u1165\u11AB\u110E\u1165\u11AF: ["korean"], \u110C\u1165\u11AB\u110E\u1166: ["korean"], \u110C\u1165\u11AB\u1110\u1169\u11BC: ["korean"], \u110C\u1165\u11AB\u1112\u1167: ["korean"], \u110C\u1165\u11AB\u1112\u116E: ["korean"], \u110C\u1165\u11AF\u1103\u1162: ["korean"], \u110C\u1165\u11AF\u1106\u1161\u11BC: ["korean"], \u110C\u1165\u11AF\u1107\u1161\u11AB: ["korean"], \u110C\u1165\u11AF\u110B\u1163\u11A8: ["korean"], \u110C\u1165\u11AF\u110E\u1161: ["korean"], \u110C\u1165\u11B7\u1100\u1165\u11B7: ["korean"], \u110C\u1165\u11B7\u1109\u116E: ["korean"], \u110C\u1165\u11B7\u1109\u1175\u11B7: ["korean"], \u110C\u1165\u11B7\u110B\u116F\u11AB: ["korean"], \u110C\u1165\u11B7\u110C\u1165\u11B7: ["korean"], \u110C\u1165\u11B7\u110E\u1161: ["korean"], \u110C\u1165\u11B8\u1100\u1173\u11AB: ["korean"], \u110C\u1165\u11B8\u1109\u1175: ["korean"], \u110C\u1165\u11B8\u110E\u1169\u11A8: ["korean"], \u110C\u1165\u11BA\u1100\u1161\u1105\u1161\u11A8: ["korean"], \u110C\u1165\u11BC\u1100\u1165\u110C\u1161\u11BC: ["korean"], \u110C\u1165\u11BC\u1103\u1169: ["korean"], \u110C\u1165\u11BC\u1105\u1172\u110C\u1161\u11BC: ["korean"], \u110C\u1165\u11BC\u1105\u1175: ["korean"], \u110C\u1165\u11BC\u1106\u1161\u11AF: ["korean"], \u110C\u1165\u11BC\u1106\u1167\u11AB: ["korean"], \u110C\u1165\u11BC\u1106\u116E\u11AB: ["korean"], \u110C\u1165\u11BC\u1107\u1161\u11AB\u1103\u1162: ["korean"], \u110C\u1165\u11BC\u1107\u1169: ["korean"], \u110C\u1165\u11BC\u1107\u116E: ["korean"], \u110C\u1165\u11BC\u1107\u1175: ["korean"], \u110C\u1165\u11BC\u1109\u1161\u11BC: ["korean"], \u110C\u1165\u11BC\u1109\u1165\u11BC: ["korean"], \u110C\u1165\u11BC\u110B\u1169: ["korean"], \u110C\u1165\u11BC\u110B\u116F\u11AB: ["korean"], \u110C\u1165\u11BC\u110C\u1161\u11BC: ["korean"], \u110C\u1165\u11BC\u110C\u1175: ["korean"], \u110C\u1165\u11BC\u110E\u1175: ["korean"], \u110C\u1165\u11BC\u1112\u116A\u11A8\u1112\u1175: ["korean"], \u110C\u1166\u1100\u1169\u11BC: ["korean"], \u110C\u1166\u1100\u116A\u110C\u1165\u11B7: ["korean"], \u110C\u1166\u1103\u1162\u1105\u1169: ["korean"], \u110C\u1166\u1106\u1169\u11A8: ["korean"], \u110C\u1166\u1107\u1161\u11AF: ["korean"], \u110C\u1166\u1107\u1165\u11B8: ["korean"], \u110C\u1166\u1109\u1161\u11BA\u1102\u1161\u11AF: ["korean"], \u110C\u1166\u110B\u1161\u11AB: ["korean"], \u110C\u1166\u110B\u1175\u11AF: ["korean"], \u110C\u1166\u110C\u1161\u11A8: ["korean"], \u110C\u1166\u110C\u116E\u1103\u1169: ["korean"], \u110C\u1166\u110E\u116E\u11AF: ["korean"], \u110C\u1166\u1111\u116E\u11B7: ["korean"], \u110C\u1166\u1112\u1161\u11AB: ["korean"], \u110C\u1169\u1100\u1161\u11A8: ["korean"], \u110C\u1169\u1100\u1165\u11AB: ["korean"], \u110C\u1169\u1100\u1173\u11B7: ["korean"], \u110C\u1169\u1100\u1175\u11BC: ["korean"], \u110C\u1169\u1106\u1167\u11BC: ["korean"], \u110C\u1169\u1106\u1175\u1105\u116D: ["korean"], \u110C\u1169\u1109\u1161\u11BC: ["korean"], \u110C\u1169\u1109\u1165\u11AB: ["korean"], \u110C\u1169\u110B\u116D\u11BC\u1112\u1175: ["korean"], \u110C\u1169\u110C\u1165\u11AF: ["korean"], \u110C\u1169\u110C\u1165\u11BC: ["korean"], \u110C\u1169\u110C\u1175\u11A8: ["korean"], \u110C\u1169\u11AB\u1103\u1162\u11BA\u1106\u1161\u11AF: ["korean"], \u110C\u1169\u11AB\u110C\u1162: ["korean"], \u110C\u1169\u11AF\u110B\u1165\u11B8: ["korean"], \u110C\u1169\u11AF\u110B\u1173\u11B7: ["korean"], \u110C\u1169\u11BC\u1100\u116D: ["korean"], \u110C\u1169\u11BC\u1105\u1169: ["korean"], \u110C\u1169\u11BC\u1105\u1172: ["korean"], \u110C\u1169\u11BC\u1109\u1169\u1105\u1175: ["korean"], \u110C\u1169\u11BC\u110B\u1165\u11B8\u110B\u116F\u11AB: ["korean"], \u110C\u1169\u11BC\u110C\u1169\u11BC: ["korean"], \u110C\u1169\u11BC\u1112\u1161\u11B8: ["korean"], \u110C\u116A\u1109\u1165\u11A8: ["korean"], \u110C\u116C\u110B\u1175\u11AB: ["korean"], \u110C\u116E\u1100\u116A\u11AB\u110C\u1165\u11A8: ["korean"], \u110C\u116E\u1105\u1173\u11B7: ["korean"], \u110C\u116E\u1106\u1161\u11AF: ["korean"], \u110C\u116E\u1106\u1165\u1102\u1175: ["korean"], \u110C\u116E\u1106\u1165\u11A8: ["korean"], \u110C\u116E\u1106\u116E\u11AB: ["korean"], \u110C\u116E\u1106\u1175\u11AB: ["korean"], \u110C\u116E\u1107\u1161\u11BC: ["korean"], \u110C\u116E\u1107\u1167\u11AB: ["korean"], \u110C\u116E\u1109\u1175\u11A8: ["korean"], \u110C\u116E\u110B\u1175\u11AB: ["korean"], \u110C\u116E\u110B\u1175\u11AF: ["korean"], \u110C\u116E\u110C\u1161\u11BC: ["korean"], \u110C\u116E\u110C\u1165\u11AB\u110C\u1161: ["korean"], \u110C\u116E\u1110\u1162\u11A8: ["korean"], \u110C\u116E\u11AB\u1107\u1175: ["korean"], \u110C\u116E\u11AF\u1100\u1165\u1105\u1175: ["korean"], \u110C\u116E\u11AF\u1100\u1175: ["korean"], \u110C\u116E\u11AF\u1106\u116E\u1102\u1174: ["korean"], \u110C\u116E\u11BC\u1100\u1161\u11AB: ["korean"], \u110C\u116E\u11BC\u1100\u1168\u1107\u1161\u11BC\u1109\u1169\u11BC: ["korean"], \u110C\u116E\u11BC\u1100\u116E\u11A8: ["korean"], \u110C\u116E\u11BC\u1102\u1167\u11AB: ["korean"], \u110C\u116E\u11BC\u1103\u1161\u11AB: ["korean"], \u110C\u116E\u11BC\u1103\u1169\u11A8: ["korean"], \u110C\u116E\u11BC\u1107\u1161\u11AB: ["korean"], \u110C\u116E\u11BC\u1107\u116E: ["korean"], \u110C\u116E\u11BC\u1109\u1166: ["korean"], \u110C\u116E\u11BC\u1109\u1169\u1100\u1175\u110B\u1165\u11B8: ["korean"], \u110C\u116E\u11BC\u1109\u116E\u11AB: ["korean"], \u110C\u116E\u11BC\u110B\u1161\u11BC: ["korean"], \u110C\u116E\u11BC\u110B\u116D: ["korean"], \u110C\u116E\u11BC\u1112\u1161\u11A8\u1100\u116D: ["korean"], \u110C\u1173\u11A8\u1109\u1165\u11A8: ["korean"], \u110C\u1173\u11A8\u1109\u1175: ["korean"], \u110C\u1173\u11AF\u1100\u1165\u110B\u116E\u11B7: ["korean"], \u110C\u1173\u11BC\u1100\u1161: ["korean"], \u110C\u1173\u11BC\u1100\u1165: ["korean"], \u110C\u1173\u11BC\u1100\u116F\u11AB: ["korean"], \u110C\u1173\u11BC\u1109\u1161\u11BC: ["korean"], \u110C\u1173\u11BC\u1109\u1166: ["korean"], \u110C\u1175\u1100\u1161\u11A8: ["korean"], \u110C\u1175\u1100\u1161\u11B8: ["korean"], \u110C\u1175\u1100\u1167\u11BC: ["korean"], \u110C\u1175\u1100\u1173\u11A8\u1112\u1175: ["korean"], \u110C\u1175\u1100\u1173\u11B7: ["korean"], \u110C\u1175\u1100\u1173\u11B8: ["korean"], \u110C\u1175\u1102\u1173\u11BC: ["korean"], \u110C\u1175\u1105\u1173\u11B7\u1100\u1175\u11AF: ["korean"], \u110C\u1175\u1105\u1175\u1109\u1161\u11AB: ["korean"], \u110C\u1175\u1107\u1161\u11BC: ["korean"], \u110C\u1175\u1107\u116E\u11BC: ["korean"], \u110C\u1175\u1109\u1175\u11A8: ["korean"], \u110C\u1175\u110B\u1167\u11A8: ["korean"], \u110C\u1175\u110B\u116E\u1100\u1162: ["korean"], \u110C\u1175\u110B\u116F\u11AB: ["korean"], \u110C\u1175\u110C\u1165\u11A8: ["korean"], \u110C\u1175\u110C\u1165\u11B7: ["korean"], \u110C\u1175\u110C\u1175\u11AB: ["korean"], \u110C\u1175\u110E\u116E\u11AF: ["korean"], \u110C\u1175\u11A8\u1109\u1165\u11AB: ["korean"], \u110C\u1175\u11A8\u110B\u1165\u11B8: ["korean"], \u110C\u1175\u11A8\u110B\u116F\u11AB: ["korean"], \u110C\u1175\u11A8\u110C\u1161\u11BC: ["korean"], \u110C\u1175\u11AB\u1100\u1173\u11B8: ["korean"], \u110C\u1175\u11AB\u1103\u1169\u11BC: ["korean"], \u110C\u1175\u11AB\u1105\u1169: ["korean"], \u110C\u1175\u11AB\u1105\u116D: ["korean"], \u110C\u1175\u11AB\u1105\u1175: ["korean"], \u110C\u1175\u11AB\u110D\u1161: ["korean"], \u110C\u1175\u11AB\u110E\u1161\u11AF: ["korean"], \u110C\u1175\u11AB\u110E\u116E\u11AF: ["korean"], \u110C\u1175\u11AB\u1110\u1169\u11BC: ["korean"], \u110C\u1175\u11AB\u1112\u1162\u11BC: ["korean"], \u110C\u1175\u11AF\u1106\u116E\u11AB: ["korean"], \u110C\u1175\u11AF\u1107\u1167\u11BC: ["korean"], \u110C\u1175\u11AF\u1109\u1165: ["korean"], \u110C\u1175\u11B7\u110C\u1161\u11A8: ["korean"], \u110C\u1175\u11B8\u1103\u1161\u11AB: ["korean"], \u110C\u1175\u11B8\u110B\u1161\u11AB: ["korean"], \u110C\u1175\u11B8\u110C\u116E\u11BC: ["korean"], \u110D\u1161\u110C\u1173\u11BC: ["korean"], \u110D\u1175\u1101\u1165\u1100\u1175: ["korean"], \u110E\u1161\u1102\u1161\u11B7: ["korean"], \u110E\u1161\u1105\u1161\u1105\u1175: ["korean"], \u110E\u1161\u1105\u1163\u11BC: ["korean"], \u110E\u1161\u1105\u1175\u11B7: ["korean"], \u110E\u1161\u1107\u1167\u11AF: ["korean"], \u110E\u1161\u1109\u1165\u11AB: ["korean"], \u110E\u1161\u110E\u1173\u11B7: ["korean"], \u110E\u1161\u11A8\u1100\u1161\u11A8: ["korean"], \u110E\u1161\u11AB\u1106\u116E\u11AF: ["korean"], \u110E\u1161\u11AB\u1109\u1165\u11BC: ["korean"], \u110E\u1161\u11B7\u1100\u1161: ["korean"], \u110E\u1161\u11B7\u1100\u1175\u1105\u1173\u11B7: ["korean"], \u110E\u1161\u11B7\u1109\u1162: ["korean"], \u110E\u1161\u11B7\u1109\u1165\u11A8: ["korean"], \u110E\u1161\u11B7\u110B\u1167: ["korean"], \u110E\u1161\u11B7\u110B\u116C: ["korean"], \u110E\u1161\u11B7\u110C\u1169: ["korean"], \u110E\u1161\u11BA\u110C\u1161\u11AB: ["korean"], \u110E\u1161\u11BC\u1100\u1161: ["korean"], \u110E\u1161\u11BC\u1100\u1169: ["korean"], \u110E\u1161\u11BC\u1100\u116E: ["korean"], \u110E\u1161\u11BC\u1106\u116E\u11AB: ["korean"], \u110E\u1161\u11BC\u1107\u1161\u11A9: ["korean"], \u110E\u1161\u11BC\u110C\u1161\u11A8: ["korean"], \u110E\u1161\u11BC\u110C\u1169: ["korean"], \u110E\u1162\u1102\u1165\u11AF: ["korean"], \u110E\u1162\u110C\u1165\u11B7: ["korean"], \u110E\u1162\u11A8\u1100\u1161\u1107\u1161\u11BC: ["korean"], \u110E\u1162\u11A8\u1107\u1161\u11BC: ["korean"], \u110E\u1162\u11A8\u1109\u1161\u11BC: ["korean"], \u110E\u1162\u11A8\u110B\u1175\u11B7: ["korean"], \u110E\u1162\u11B7\u1111\u1175\u110B\u1165\u11AB: ["korean"], \u110E\u1165\u1107\u1165\u11AF: ["korean"], \u110E\u1165\u110B\u1173\u11B7: ["korean"], \u110E\u1165\u11AB\u1100\u116E\u11A8: ["korean"], \u110E\u1165\u11AB\u1103\u116E\u11BC: ["korean"], \u110E\u1165\u11AB\u110C\u1161\u11BC: ["korean"], \u110E\u1165\u11AB\u110C\u1162: ["korean"], \u110E\u1165\u11AB\u110E\u1165\u11AB\u1112\u1175: ["korean"], \u110E\u1165\u11AF\u1103\u1169: ["korean"], \u110E\u1165\u11AF\u110C\u1165\u1112\u1175: ["korean"], \u110E\u1165\u11AF\u1112\u1161\u11A8: ["korean"], \u110E\u1165\u11BA\u1102\u1161\u11AF: ["korean"], \u110E\u1165\u11BA\u110D\u1162: ["korean"], \u110E\u1165\u11BC\u1102\u1167\u11AB: ["korean"], \u110E\u1165\u11BC\u1107\u1161\u110C\u1175: ["korean"], \u110E\u1165\u11BC\u1109\u1169: ["korean"], \u110E\u1165\u11BC\u110E\u116E\u11AB: ["korean"], \u110E\u1166\u1100\u1168: ["korean"], \u110E\u1166\u1105\u1167\u11A8: ["korean"], \u110E\u1166\u110B\u1169\u11AB: ["korean"], \u110E\u1166\u110B\u1172\u11A8: ["korean"], \u110E\u1166\u110C\u116E\u11BC: ["korean"], \u110E\u1166\u1112\u1165\u11B7: ["korean"], \u110E\u1169\u1103\u1173\u11BC\u1112\u1161\u11A8\u1109\u1162\u11BC: ["korean"], \u110E\u1169\u1107\u1161\u11AB: ["korean"], \u110E\u1169\u1107\u1161\u11B8: ["korean"], \u110E\u1169\u1109\u1161\u11BC\u1112\u116A: ["korean"], \u110E\u1169\u1109\u116E\u11AB: ["korean"], \u110E\u1169\u110B\u1167\u1105\u1173\u11B7: ["korean"], \u110E\u1169\u110B\u116F\u11AB: ["korean"], \u110E\u1169\u110C\u1165\u1102\u1167\u11A8: ["korean"], \u110E\u1169\u110C\u1165\u11B7: ["korean"], \u110E\u1169\u110E\u1165\u11BC: ["korean"], \u110E\u1169\u110F\u1169\u11AF\u1105\u1175\u11BA: ["korean"], \u110E\u1169\u11BA\u1107\u116E\u11AF: ["korean"], \u110E\u1169\u11BC\u1100\u1161\u11A8: ["korean"], \u110E\u1169\u11BC\u1105\u1175: ["korean"], \u110E\u1169\u11BC\u110C\u1161\u11BC: ["korean"], \u110E\u116A\u11AF\u110B\u1167\u11BC: ["korean"], \u110E\u116C\u1100\u1173\u11AB: ["korean"], \u110E\u116C\u1109\u1161\u11BC: ["korean"], \u110E\u116C\u1109\u1165\u11AB: ["korean"], \u110E\u116C\u1109\u1175\u11AB: ["korean"], \u110E\u116C\u110B\u1161\u11A8: ["korean"], \u110E\u116C\u110C\u1169\u11BC: ["korean"], \u110E\u116E\u1109\u1165\u11A8: ["korean"], \u110E\u116E\u110B\u1165\u11A8: ["korean"], \u110E\u116E\u110C\u1175\u11AB: ["korean"], \u110E\u116E\u110E\u1165\u11AB: ["korean"], \u110E\u116E\u110E\u1173\u11A8: ["korean"], \u110E\u116E\u11A8\u1100\u116E: ["korean"], \u110E\u116E\u11A8\u1109\u1169: ["korean"], \u110E\u116E\u11A8\u110C\u1166: ["korean"], \u110E\u116E\u11A8\u1112\u1161: ["korean"], \u110E\u116E\u11AF\u1100\u1173\u11AB: ["korean"], \u110E\u116E\u11AF\u1107\u1161\u11AF: ["korean"], \u110E\u116E\u11AF\u1109\u1161\u11AB: ["korean"], \u110E\u116E\u11AF\u1109\u1175\u11AB: ["korean"], \u110E\u116E\u11AF\u110B\u1167\u11AB: ["korean"], \u110E\u116E\u11AF\u110B\u1175\u11B8: ["korean"], \u110E\u116E\u11AF\u110C\u1161\u11BC: ["korean"], \u110E\u116E\u11AF\u1111\u1161\u11AB: ["korean"], \u110E\u116E\u11BC\u1100\u1167\u11A8: ["korean"], \u110E\u116E\u11BC\u1100\u1169: ["korean"], \u110E\u116E\u11BC\u1103\u1169\u11AF: ["korean"], \u110E\u116E\u11BC\u1107\u116E\u11AB\u1112\u1175: ["korean"], \u110E\u116E\u11BC\u110E\u1165\u11BC\u1103\u1169: ["korean"], \u110E\u1171\u110B\u1165\u11B8: ["korean"], \u110E\u1171\u110C\u1175\u11A8: ["korean"], \u110E\u1171\u1112\u1163\u11BC: ["korean"], \u110E\u1175\u110B\u1163\u11A8: ["korean"], \u110E\u1175\u11AB\u1100\u116E: ["korean"], \u110E\u1175\u11AB\u110E\u1165\u11A8: ["korean"], \u110E\u1175\u11AF\u1109\u1175\u11B8: ["korean"], \u110E\u1175\u11AF\u110B\u116F\u11AF: ["korean"], \u110E\u1175\u11AF\u1111\u1161\u11AB: ["korean"], \u110E\u1175\u11B7\u1103\u1162: ["korean"], \u110E\u1175\u11B7\u1106\u116E\u11A8: ["korean"], \u110E\u1175\u11B7\u1109\u1175\u11AF: ["korean"], \u110E\u1175\u11BA\u1109\u1169\u11AF: ["korean"], \u110E\u1175\u11BC\u110E\u1161\u11AB: ["korean"], \u110F\u1161\u1106\u1166\u1105\u1161: ["korean"], \u110F\u1161\u110B\u116E\u11AB\u1110\u1165: ["korean"], \u110F\u1161\u11AF\u1100\u116E\u11A8\u1109\u116E: ["korean"], \u110F\u1162\u1105\u1175\u11A8\u1110\u1165: ["korean"], \u110F\u1162\u11B7\u1111\u1165\u1109\u1173: ["korean"], \u110F\u1162\u11B7\u1111\u1166\u110B\u1175\u11AB: ["korean"], \u110F\u1165\u1110\u1173\u11AB: ["korean"], \u110F\u1165\u11AB\u1103\u1175\u1109\u1167\u11AB: ["korean"], \u110F\u1165\u11AF\u1105\u1165: ["korean"], \u110F\u1165\u11B7\u1111\u1172\u1110\u1165: ["korean"], \u110F\u1169\u1101\u1175\u1105\u1175: ["korean"], \u110F\u1169\u1106\u1175\u1103\u1175: ["korean"], \u110F\u1169\u11AB\u1109\u1165\u1110\u1173: ["korean"], \u110F\u1169\u11AF\u1105\u1161: ["korean"], \u110F\u1169\u11B7\u1111\u1173\u11AF\u1105\u1166\u11A8\u1109\u1173: ["korean"], \u110F\u1169\u11BC\u1102\u1161\u1106\u116E\u11AF: ["korean"], \u110F\u116B\u1100\u1161\u11B7: ["korean"], \u110F\u116E\u1103\u1166\u1110\u1161: ["korean"], \u110F\u1173\u1105\u1175\u11B7: ["korean"], \u110F\u1173\u11AB\u1100\u1175\u11AF: ["korean"], \u110F\u1173\u11AB\u1104\u1161\u11AF: ["korean"], \u110F\u1173\u11AB\u1109\u1169\u1105\u1175: ["korean"], \u110F\u1173\u11AB\u110B\u1161\u1103\u1173\u11AF: ["korean"], \u110F\u1173\u11AB\u110B\u1165\u1106\u1165\u1102\u1175: ["korean"], \u110F\u1173\u11AB\u110B\u1175\u11AF: ["korean"], \u110F\u1173\u11AB\u110C\u1165\u11AF: ["korean"], \u110F\u1173\u11AF\u1105\u1162\u1109\u1175\u11A8: ["korean"], \u110F\u1173\u11AF\u1105\u1165\u11B8: ["korean"], \u110F\u1175\u11AF\u1105\u1169: ["korean"], \u1110\u1161\u110B\u1175\u11B8: ["korean"], \u1110\u1161\u110C\u1161\u1100\u1175: ["korean"], \u1110\u1161\u11A8\u1100\u116E: ["korean"], \u1110\u1161\u11A8\u110C\u1161: ["korean"], \u1110\u1161\u11AB\u1109\u1162\u11BC: ["korean"], \u1110\u1162\u1100\u116F\u11AB\u1103\u1169: ["korean"], \u1110\u1162\u110B\u1163\u11BC: ["korean"], \u1110\u1162\u1111\u116E\u11BC: ["korean"], \u1110\u1162\u11A8\u1109\u1175: ["korean"], \u1110\u1162\u11AF\u1105\u1165\u11AB\u1110\u1173: ["korean"], \u1110\u1165\u1102\u1165\u11AF: ["korean"], \u1110\u1165\u1106\u1175\u1102\u1165\u11AF: ["korean"], \u1110\u1166\u1102\u1175\u1109\u1173: ["korean"], \u1110\u1166\u1109\u1173\u1110\u1173: ["korean"], \u1110\u1166\u110B\u1175\u1107\u1173\u11AF: ["korean"], \u1110\u1166\u11AF\u1105\u1166\u1107\u1175\u110C\u1165\u11AB: ["korean"], \u1110\u1169\u1105\u1169\u11AB: ["korean"], \u1110\u1169\u1106\u1161\u1110\u1169: ["korean"], \u1110\u1169\u110B\u116D\u110B\u1175\u11AF: ["korean"], \u1110\u1169\u11BC\u1100\u1168: ["korean"], \u1110\u1169\u11BC\u1100\u116A: ["korean"], \u1110\u1169\u11BC\u1105\u1169: ["korean"], \u1110\u1169\u11BC\u1109\u1175\u11AB: ["korean"], \u1110\u1169\u11BC\u110B\u1167\u11A8: ["korean"], \u1110\u1169\u11BC\u110B\u1175\u11AF: ["korean"], \u1110\u1169\u11BC\u110C\u1161\u11BC: ["korean"], \u1110\u1169\u11BC\u110C\u1166: ["korean"], \u1110\u1169\u11BC\u110C\u1173\u11BC: ["korean"], \u1110\u1169\u11BC\u1112\u1161\u11B8: ["korean"], \u1110\u1169\u11BC\u1112\u116A: ["korean"], \u1110\u116C\u1100\u1173\u11AB: ["korean"], \u1110\u116C\u110B\u116F\u11AB: ["korean"], \u1110\u116C\u110C\u1175\u11A8\u1100\u1173\u11B7: ["korean"], \u1110\u1171\u1100\u1175\u11B7: ["korean"], \u1110\u1173\u1105\u1165\u11A8: ["korean"], \u1110\u1173\u11A8\u1100\u1173\u11B8: ["korean"], \u1110\u1173\u11A8\u1107\u1167\u11AF: ["korean"], \u1110\u1173\u11A8\u1109\u1165\u11BC: ["korean"], \u1110\u1173\u11A8\u1109\u116E: ["korean"], \u1110\u1173\u11A8\u110C\u1175\u11BC: ["korean"], \u1110\u1173\u11A8\u1112\u1175: ["korean"], \u1110\u1173\u11AB\u1110\u1173\u11AB\u1112\u1175: ["korean"], \u1110\u1175\u1109\u1167\u110E\u1173: ["korean"], \u1111\u1161\u1105\u1161\u11AB\u1109\u1162\u11A8: ["korean"], \u1111\u1161\u110B\u1175\u11AF: ["korean"], \u1111\u1161\u110E\u116E\u11AF\u1109\u1169: ["korean"], \u1111\u1161\u11AB\u1100\u1167\u11AF: ["korean"], \u1111\u1161\u11AB\u1103\u1161\u11AB: ["korean"], \u1111\u1161\u11AB\u1106\u1162: ["korean"], \u1111\u1161\u11AB\u1109\u1161: ["korean"], \u1111\u1161\u11AF\u1109\u1175\u11B8: ["korean"], \u1111\u1161\u11AF\u110B\u116F\u11AF: ["korean"], \u1111\u1161\u11B8\u1109\u1169\u11BC: ["korean"], \u1111\u1162\u1109\u1167\u11AB: ["korean"], \u1111\u1162\u11A8\u1109\u1173: ["korean"], \u1111\u1162\u11A8\u1109\u1175\u1106\u1175\u11AF\u1105\u1175: ["korean"], \u1111\u1162\u11AB\u1110\u1175: ["korean"], \u1111\u1165\u1109\u1166\u11AB\u1110\u1173: ["korean"], \u1111\u1166\u110B\u1175\u11AB\u1110\u1173: ["korean"], \u1111\u1167\u11AB\u1100\u1167\u11AB: ["korean"], \u1111\u1167\u11AB\u110B\u1174: ["korean"], \u1111\u1167\u11AB\u110C\u1175: ["korean"], \u1111\u1167\u11AB\u1112\u1175: ["korean"], \u1111\u1167\u11BC\u1100\u1161: ["korean"], \u1111\u1167\u11BC\u1100\u1172\u11AB: ["korean"], \u1111\u1167\u11BC\u1109\u1162\u11BC: ["korean"], \u1111\u1167\u11BC\u1109\u1169: ["korean"], \u1111\u1167\u11BC\u110B\u1163\u11BC: ["korean"], \u1111\u1167\u11BC\u110B\u1175\u11AF: ["korean"], \u1111\u1167\u11BC\u1112\u116A: ["korean"], \u1111\u1169\u1109\u1173\u1110\u1165: ["korean"], \u1111\u1169\u110B\u1175\u11AB\u1110\u1173: ["korean"], \u1111\u1169\u110C\u1161\u11BC: ["korean"], \u1111\u1169\u1112\u1161\u11B7: ["korean"], \u1111\u116D\u1106\u1167\u11AB: ["korean"], \u1111\u116D\u110C\u1165\u11BC: ["korean"], \u1111\u116D\u110C\u116E\u11AB: ["korean"], \u1111\u116D\u1112\u1167\u11AB: ["korean"], \u1111\u116E\u11B7\u1106\u1169\u11A8: ["korean"], \u1111\u116E\u11B7\u110C\u1175\u11AF: ["korean"], \u1111\u116E\u11BC\u1100\u1167\u11BC: ["korean"], \u1111\u116E\u11BC\u1109\u1169\u11A8: ["korean"], \u1111\u116E\u11BC\u1109\u1173\u11B8: ["korean"], \u1111\u1173\u1105\u1161\u11BC\u1109\u1173: ["korean"], \u1111\u1173\u1105\u1175\u11AB\u1110\u1165: ["korean"], \u1111\u1173\u11AF\u1105\u1161\u1109\u1173\u1110\u1175\u11A8: ["korean"], \u1111\u1175\u1100\u1169\u11AB: ["korean"], \u1111\u1175\u1106\u1161\u11BC: ["korean"], \u1111\u1175\u110B\u1161\u1102\u1169: ["korean"], \u1111\u1175\u11AF\u1105\u1173\u11B7: ["korean"], \u1111\u1175\u11AF\u1109\u116E: ["korean"], \u1111\u1175\u11AF\u110B\u116D: ["korean"], \u1111\u1175\u11AF\u110C\u1161: ["korean"], \u1111\u1175\u11AF\u1110\u1169\u11BC: ["korean"], \u1111\u1175\u11BC\u1100\u1168: ["korean"], \u1112\u1161\u1102\u1173\u1102\u1175\u11B7: ["korean"], \u1112\u1161\u1102\u1173\u11AF: ["korean"], \u1112\u1161\u1103\u1173\u110B\u1170\u110B\u1165: ["korean"], \u1112\u1161\u1105\u116E\u11BA\u1107\u1161\u11B7: ["korean"], \u1112\u1161\u1107\u1161\u11AB\u1100\u1175: ["korean"], \u1112\u1161\u1109\u116E\u11A8\u110C\u1175\u11B8: ["korean"], \u1112\u1161\u1109\u116E\u11AB: ["korean"], \u1112\u1161\u110B\u1167\u1110\u1173\u11AB: ["korean"], \u1112\u1161\u110C\u1175\u1106\u1161\u11AB: ["korean"], \u1112\u1161\u110E\u1165\u11AB: ["korean"], \u1112\u1161\u1111\u116E\u11B7: ["korean"], \u1112\u1161\u1111\u1175\u11AF: ["korean"], \u1112\u1161\u11A8\u1100\u116A: ["korean"], \u1112\u1161\u11A8\u1100\u116D: ["korean"], \u1112\u1161\u11A8\u1100\u1173\u11B8: ["korean"], \u1112\u1161\u11A8\u1100\u1175: ["korean"], \u1112\u1161\u11A8\u1102\u1167\u11AB: ["korean"], \u1112\u1161\u11A8\u1105\u1167\u11A8: ["korean"], \u1112\u1161\u11A8\u1107\u1165\u11AB: ["korean"], \u1112\u1161\u11A8\u1107\u116E\u1106\u1169: ["korean"], \u1112\u1161\u11A8\u1107\u1175: ["korean"], \u1112\u1161\u11A8\u1109\u1162\u11BC: ["korean"], \u1112\u1161\u11A8\u1109\u116E\u11AF: ["korean"], \u1112\u1161\u11A8\u1109\u1173\u11B8: ["korean"], \u1112\u1161\u11A8\u110B\u116D\u11BC\u1111\u116E\u11B7: ["korean"], \u1112\u1161\u11A8\u110B\u116F\u11AB: ["korean"], \u1112\u1161\u11A8\u110B\u1171: ["korean"], \u1112\u1161\u11A8\u110C\u1161: ["korean"], \u1112\u1161\u11A8\u110C\u1165\u11B7: ["korean"], \u1112\u1161\u11AB\u1100\u1168: ["korean"], \u1112\u1161\u11AB\u1100\u1173\u11AF: ["korean"], \u1112\u1161\u11AB\u1101\u1165\u1107\u1165\u11AB\u110B\u1166: ["korean"], \u1112\u1161\u11AB\u1102\u1161\u11BD: ["korean"], \u1112\u1161\u11AB\u1102\u116E\u11AB: ["korean"], \u1112\u1161\u11AB\u1103\u1169\u11BC\u110B\u1161\u11AB: ["korean"], \u1112\u1161\u11AB\u1104\u1162: ["korean"], \u1112\u1161\u11AB\u1105\u1161\u1109\u1161\u11AB: ["korean"], \u1112\u1161\u11AB\u1106\u1161\u1103\u1175: ["korean"], \u1112\u1161\u11AB\u1106\u116E\u11AB: ["korean"], \u1112\u1161\u11AB\u1107\u1165\u11AB: ["korean"], \u1112\u1161\u11AB\u1107\u1169\u11A8: ["korean"], \u1112\u1161\u11AB\u1109\u1175\u11A8: ["korean"], \u1112\u1161\u11AB\u110B\u1167\u1105\u1173\u11B7: ["korean"], \u1112\u1161\u11AB\u110D\u1169\u11A8: ["korean"], \u1112\u1161\u11AF\u1106\u1165\u1102\u1175: ["korean"], \u1112\u1161\u11AF\u110B\u1161\u1107\u1165\u110C\u1175: ["korean"], \u1112\u1161\u11AF\u110B\u1175\u11AB: ["korean"], \u1112\u1161\u11B7\u1101\u1166: ["korean"], \u1112\u1161\u11B7\u1107\u116E\u1105\u1169: ["korean"], \u1112\u1161\u11B8\u1100\u1167\u11A8: ["korean"], \u1112\u1161\u11B8\u1105\u1175\u110C\u1165\u11A8: ["korean"], \u1112\u1161\u11BC\u1100\u1169\u11BC: ["korean"], \u1112\u1161\u11BC\u1100\u116E: ["korean"], \u1112\u1161\u11BC\u1109\u1161\u11BC: ["korean"], \u1112\u1161\u11BC\u110B\u1174: ["korean"], \u1112\u1162\u1100\u1167\u11AF: ["korean"], \u1112\u1162\u1100\u116E\u11AB: ["korean"], \u1112\u1162\u1103\u1161\u11B8: ["korean"], \u1112\u1162\u1103\u1161\u11BC: ["korean"], \u1112\u1162\u1106\u116E\u11AF: ["korean"], \u1112\u1162\u1109\u1165\u11A8: ["korean"], \u1112\u1162\u1109\u1165\u11AF: ["korean"], \u1112\u1162\u1109\u116E\u110B\u116D\u11A8\u110C\u1161\u11BC: ["korean"], \u1112\u1162\u110B\u1161\u11AB: ["korean"], \u1112\u1162\u11A8\u1109\u1175\u11B7: ["korean"], \u1112\u1162\u11AB\u1103\u1173\u1107\u1162\u11A8: ["korean"], \u1112\u1162\u11B7\u1107\u1165\u1100\u1165: ["korean"], \u1112\u1162\u11BA\u1107\u1167\u11C0: ["korean"], \u1112\u1162\u11BA\u1109\u1161\u11AF: ["korean"], \u1112\u1162\u11BC\u1103\u1169\u11BC: ["korean"], \u1112\u1162\u11BC\u1107\u1169\u11A8: ["korean"], \u1112\u1162\u11BC\u1109\u1161: ["korean"], \u1112\u1162\u11BC\u110B\u116E\u11AB: ["korean"], \u1112\u1162\u11BC\u110B\u1171: ["korean"], \u1112\u1163\u11BC\u1100\u1175: ["korean"], \u1112\u1163\u11BC\u1109\u1161\u11BC: ["korean"], \u1112\u1163\u11BC\u1109\u116E: ["korean"], \u1112\u1165\u1105\u1161\u11A8: ["korean"], \u1112\u1165\u110B\u116D\u11BC: ["korean"], \u1112\u1166\u11AF\u1100\u1175: ["korean"], \u1112\u1167\u11AB\u1100\u116A\u11AB: ["korean"], \u1112\u1167\u11AB\u1100\u1173\u11B7: ["korean"], \u1112\u1167\u11AB\u1103\u1162: ["korean"], \u1112\u1167\u11AB\u1109\u1161\u11BC: ["korean"], \u1112\u1167\u11AB\u1109\u1175\u11AF: ["korean"], \u1112\u1167\u11AB\u110C\u1161\u11BC: ["korean"], \u1112\u1167\u11AB\u110C\u1162: ["korean"], \u1112\u1167\u11AB\u110C\u1175: ["korean"], \u1112\u1167\u11AF\u110B\u1162\u11A8: ["korean"], \u1112\u1167\u11B8\u1105\u1167\u11A8: ["korean"], \u1112\u1167\u11BC\u1107\u116E: ["korean"], \u1112\u1167\u11BC\u1109\u1161: ["korean"], \u1112\u1167\u11BC\u1109\u116E: ["korean"], \u1112\u1167\u11BC\u1109\u1175\u11A8: ["korean"], \u1112\u1167\u11BC\u110C\u1166: ["korean"], \u1112\u1167\u11BC\u1110\u1162: ["korean"], \u1112\u1167\u11BC\u1111\u1167\u11AB: ["korean"], \u1112\u1168\u1110\u1162\u11A8: ["korean"], \u1112\u1169\u1100\u1175\u1109\u1175\u11B7: ["korean"], \u1112\u1169\u1102\u1161\u11B7: ["korean"], \u1112\u1169\u1105\u1161\u11BC\u110B\u1175: ["korean"], \u1112\u1169\u1107\u1161\u11A8: ["korean"], \u1112\u1169\u1110\u1166\u11AF: ["korean"], \u1112\u1169\u1112\u1173\u11B8: ["korean"], \u1112\u1169\u11A8\u1109\u1175: ["korean"], \u1112\u1169\u11AF\u1105\u1169: ["korean"], \u1112\u1169\u11B7\u1111\u1166\u110B\u1175\u110C\u1175: ["korean"], \u1112\u1169\u11BC\u1107\u1169: ["korean"], \u1112\u1169\u11BC\u1109\u116E: ["korean"], \u1112\u1169\u11BC\u110E\u1161: ["korean"], \u1112\u116A\u1106\u1167\u11AB: ["korean"], \u1112\u116A\u1107\u116E\u11AB: ["korean"], \u1112\u116A\u1109\u1161\u11AF: ["korean"], \u1112\u116A\u110B\u116D\u110B\u1175\u11AF: ["korean"], \u1112\u116A\u110C\u1161\u11BC: ["korean"], \u1112\u116A\u1112\u1161\u11A8: ["korean"], \u1112\u116A\u11A8\u1107\u1169: ["korean"], \u1112\u116A\u11A8\u110B\u1175\u11AB: ["korean"], \u1112\u116A\u11A8\u110C\u1161\u11BC: ["korean"], \u1112\u116A\u11A8\u110C\u1165\u11BC: ["korean"], \u1112\u116A\u11AB\u1100\u1161\u11B8: ["korean"], \u1112\u116A\u11AB\u1100\u1167\u11BC: ["korean"], \u1112\u116A\u11AB\u110B\u1167\u11BC: ["korean"], \u1112\u116A\u11AB\u110B\u1172\u11AF: ["korean"], \u1112\u116A\u11AB\u110C\u1161: ["korean"], \u1112\u116A\u11AF\u1100\u1175: ["korean"], \u1112\u116A\u11AF\u1103\u1169\u11BC: ["korean"], \u1112\u116A\u11AF\u1107\u1161\u11AF\u1112\u1175: ["korean"], \u1112\u116A\u11AF\u110B\u116D\u11BC: ["korean"], \u1112\u116A\u11AF\u110D\u1161\u11A8: ["korean"], \u1112\u116C\u1100\u1167\u11AB: ["korean"], \u1112\u116C\u1100\u116A\u11AB: ["korean"], \u1112\u116C\u1107\u1169\u11A8: ["korean"], \u1112\u116C\u1109\u1162\u11A8: ["korean"], \u1112\u116C\u110B\u116F\u11AB: ["korean"], \u1112\u116C\u110C\u1161\u11BC: ["korean"], \u1112\u116C\u110C\u1165\u11AB: ["korean"], \u1112\u116C\u11BA\u1109\u116E: ["korean"], \u1112\u116C\u11BC\u1103\u1161\u11AB\u1107\u1169\u1103\u1169: ["korean"], \u1112\u116D\u110B\u1172\u11AF\u110C\u1165\u11A8: ["korean"], \u1112\u116E\u1107\u1161\u11AB: ["korean"], \u1112\u116E\u110E\u116E\u11BA\u1100\u1161\u1105\u116E: ["korean"], \u1112\u116E\u11AB\u1105\u1167\u11AB: ["korean"], \u1112\u116F\u11AF\u110A\u1175\u11AB: ["korean"], \u1112\u1172\u1109\u1175\u11A8: ["korean"], \u1112\u1172\u110B\u1175\u11AF: ["korean"], \u1112\u1172\u11BC\u1102\u1162: ["korean"], \u1112\u1173\u1105\u1173\u11B7: ["korean"], \u1112\u1173\u11A8\u1107\u1162\u11A8: ["korean"], \u1112\u1173\u11A8\u110B\u1175\u11AB: ["korean"], \u1112\u1173\u11AB\u110C\u1165\u11A8: ["korean"], \u1112\u1173\u11AB\u1112\u1175: ["korean"], \u1112\u1173\u11BC\u1106\u1175: ["korean"], \u1112\u1173\u11BC\u1107\u116E\u11AB: ["korean"], \u1112\u1174\u1100\u1169\u11A8: ["korean"], \u1112\u1174\u1106\u1161\u11BC: ["korean"], \u1112\u1174\u1109\u1162\u11BC: ["korean"], \u1112\u1174\u11AB\u1109\u1162\u11A8: ["korean"], \u1112\u1175\u11B7\u1101\u1165\u11BA: ["korean"], abacate: ["portuguese"], abaixo: ["portuguese"], abalar: ["portuguese"], abater: ["portuguese"], abduzir: ["portuguese"], abelha: ["portuguese"], aberto: ["portuguese"], abismo: ["portuguese"], abotoar: ["portuguese"], abranger: ["portuguese"], abreviar: ["portuguese"], abrigar: ["portuguese"], abrupto: ["portuguese"], absinto: ["portuguese"], absoluto: ["portuguese"], absurdo: ["portuguese"], abutre: ["portuguese"], acabado: ["portuguese"], acalmar: ["portuguese"], acampar: ["portuguese"], acanhar: ["portuguese"], acaso: ["portuguese"], aceitar: ["portuguese"], acelerar: ["portuguese"], acenar: ["portuguese"], acervo: ["portuguese"], acessar: ["portuguese"], acetona: ["portuguese"], achatar: ["portuguese"], acidez: ["portuguese"], acima: ["portuguese"], acionado: ["portuguese"], acirrar: ["portuguese"], aclamar: ["portuguese"], aclive: ["portuguese"], acolhida: ["portuguese"], acomodar: ["portuguese"], acoplar: ["portuguese"], acordar: ["portuguese"], acumular: ["portuguese"], acusador: ["portuguese"], adaptar: ["portuguese"], adega: ["portuguese"], adentro: ["portuguese"], adepto: ["portuguese"], adequar: ["portuguese"], aderente: ["portuguese"], adesivo: ["portuguese"], adeus: ["portuguese"], adiante: ["portuguese"], aditivo: ["portuguese"], adjetivo: ["portuguese"], adjunto: ["portuguese"], admirar: ["portuguese"], adorar: ["portuguese"], adquirir: ["portuguese"], adubo: ["portuguese"], adverso: ["portuguese"], advogado: ["portuguese"], aeronave: ["portuguese"], afastar: ["portuguese"], aferir: ["portuguese"], afetivo: ["portuguese"], afinador: ["portuguese"], afivelar: ["portuguese"], aflito: ["portuguese"], afluente: ["portuguese"], afrontar: ["portuguese"], agachar: ["portuguese"], agarrar: ["portuguese"], agasalho: ["portuguese"], agenciar: ["portuguese"], agilizar: ["portuguese"], agiota: ["portuguese"], agitado: ["portuguese"], agora: ["portuguese"], agradar: ["portuguese"], agreste: ["portuguese"], agrupar: ["portuguese"], aguardar: ["portuguese"], agulha: ["portuguese"], ajoelhar: ["portuguese"], ajudar: ["portuguese"], ajustar: ["portuguese"], alameda: ["portuguese"], alarme: ["portuguese"], alastrar: ["portuguese"], alavanca: ["portuguese"], albergue: ["portuguese"], albino: ["portuguese"], alcatra: ["portuguese"], aldeia: ["portuguese"], alecrim: ["portuguese"], alegria: ["portuguese"], alertar: ["portuguese"], alface: ["portuguese"], alfinete: ["portuguese"], algum: ["portuguese"], alheio: ["portuguese"], aliar: ["portuguese"], alicate: ["portuguese"], alienar: ["portuguese"], alinhar: ["portuguese"], aliviar: ["portuguese"], almofada: ["portuguese"], alocar: ["portuguese"], alpiste: ["portuguese"], alterar: ["portuguese"], altitude: ["portuguese"], alucinar: ["portuguese"], alugar: ["portuguese"], aluno: ["portuguese"], alusivo: ["portuguese"], alvo: ["portuguese"], amaciar: ["portuguese"], amador: ["portuguese"], amarelo: ["portuguese"], amassar: ["portuguese"], ambas: ["portuguese"], ambiente: ["portuguese"], ameixa: ["portuguese"], amenizar: ["portuguese"], amido: ["portuguese"], amistoso: ["portuguese"], amizade: ["portuguese"], amolador: ["portuguese"], amontoar: ["portuguese"], amoroso: ["portuguese"], amostra: ["portuguese"], amparar: ["portuguese"], ampliar: ["portuguese"], ampola: ["portuguese"], anagrama: ["portuguese"], analisar: ["portuguese"], anarquia: ["portuguese"], anatomia: ["portuguese"], andaime: ["portuguese"], anel: ["portuguese"], anexo: ["portuguese"], angular: ["portuguese"], animar: ["portuguese"], anjo: ["portuguese"], anomalia: ["portuguese"], anotado: ["portuguese"], ansioso: ["portuguese"], anterior: ["portuguese"], anuidade: ["portuguese"], anunciar: ["portuguese"], anzol: ["portuguese"], apagador: ["portuguese"], apalpar: ["portuguese"], apanhado: ["portuguese"], apego: ["portuguese"], apelido: ["portuguese"], apertada: ["portuguese"], apesar: ["portuguese"], apetite: ["portuguese"], apito: ["portuguese"], aplauso: ["portuguese"], aplicada: ["portuguese"], apoio: ["portuguese"], apontar: ["portuguese"], aposta: ["portuguese"], aprendiz: ["portuguese"], aprovar: ["portuguese"], aquecer: ["portuguese"], arame: ["portuguese"], aranha: ["portuguese"], arara: ["portuguese"], arcada: ["portuguese"], ardente: ["portuguese"], areia: ["portuguese"], arejar: ["portuguese"], arenito: ["portuguese"], aresta: ["portuguese"], argiloso: ["portuguese"], argola: ["portuguese"], arma: ["portuguese"], arquivo: ["portuguese"], arraial: ["portuguese"], arrebate: ["portuguese"], arriscar: ["portuguese"], arroba: ["portuguese"], arrumar: ["portuguese"], arsenal: ["portuguese"], arterial: ["portuguese"], artigo: ["portuguese"], arvoredo: ["portuguese"], asfaltar: ["portuguese"], asilado: ["portuguese"], aspirar: ["portuguese"], assador: ["portuguese"], assinar: ["portuguese"], assoalho: ["portuguese"], assunto: ["portuguese"], astral: ["portuguese"], atacado: ["portuguese"], atadura: ["portuguese"], atalho: ["portuguese"], atarefar: ["portuguese"], atear: ["portuguese"], atender: ["portuguese"], aterro: ["portuguese"], ateu: ["portuguese"], atingir: ["portuguese"], atirador: ["portuguese"], ativo: ["portuguese"], atoleiro: ["portuguese"], atracar: ["portuguese"], atrevido: ["portuguese"], atriz: ["portuguese"], atual: ["portuguese"], atum: ["portuguese"], auditor: ["portuguese"], aumentar: ["portuguese"], aura: ["portuguese"], aurora: ["portuguese"], autismo: ["portuguese"], autoria: ["portuguese"], autuar: ["portuguese"], avaliar: ["portuguese"], avante: ["portuguese"], avaria: ["portuguese"], avental: ["portuguese"], avesso: ["portuguese"], aviador: ["portuguese"], avisar: ["portuguese"], avulso: ["portuguese"], axila: ["portuguese"], azarar: ["portuguese"], azedo: ["portuguese"], azeite: ["portuguese"], azulejo: ["portuguese"], babar: ["portuguese"], babosa: ["portuguese"], bacalhau: ["portuguese"], bacharel: ["portuguese"], bacia: ["portuguese"], bagagem: ["portuguese"], baiano: ["portuguese"], bailar: ["portuguese"], baioneta: ["portuguese"], bairro: ["portuguese"], baixista: ["portuguese"], bajular: ["portuguese"], baleia: ["portuguese"], baliza: ["portuguese"], balsa: ["portuguese"], banal: ["portuguese"], bandeira: ["portuguese"], banho: ["portuguese"], banir: ["portuguese"], banquete: ["portuguese"], barato: ["portuguese"], barbado: ["portuguese"], baronesa: ["portuguese"], barraca: ["portuguese"], barulho: ["portuguese"], baseado: ["portuguese"], bastante: ["portuguese"], batata: ["portuguese"], batedor: ["portuguese"], batida: ["portuguese"], batom: ["portuguese"], batucar: ["portuguese"], baunilha: ["portuguese"], beber: ["portuguese"], beijo: ["portuguese"], beirada: ["portuguese"], beisebol: ["portuguese"], beldade: ["portuguese"], beleza: ["portuguese"], belga: ["portuguese"], beliscar: ["portuguese"], bendito: ["portuguese"], bengala: ["portuguese"], benzer: ["portuguese", "turkish"], berimbau: ["portuguese"], berlinda: ["portuguese"], berro: ["portuguese"], besouro: ["portuguese"], bexiga: ["portuguese"], bezerro: ["portuguese"], bico: ["portuguese"], bicudo: ["portuguese"], bienal: ["portuguese"], bifocal: ["portuguese"], bifurcar: ["portuguese"], bigorna: ["portuguese"], bilhete: ["portuguese"], bimestre: ["portuguese"], bimotor: ["portuguese"], biologia: ["portuguese"], biombo: ["portuguese"], biosfera: ["portuguese"], bipolar: ["portuguese"], birrento: ["portuguese"], biscoito: ["portuguese"], bisneto: ["portuguese"], bispo: ["portuguese"], bissexto: ["portuguese"], bitola: ["portuguese"], bizarro: ["portuguese"], blindado: ["portuguese"], bloco: ["portuguese"], bloquear: ["portuguese"], boato: ["portuguese"], bobagem: ["portuguese"], bocado: ["portuguese"], bocejo: ["portuguese"], bochecha: ["portuguese"], boicotar: ["portuguese"], bolada: ["portuguese"], boletim: ["portuguese"], bolha: ["portuguese"], bolo: ["portuguese"], bombeiro: ["portuguese"], bonde: ["portuguese"], boneco: ["portuguese"], bonita: ["portuguese"], borbulha: ["portuguese"], borda: ["portuguese"], boreal: ["portuguese"], borracha: ["portuguese"], bovino: ["portuguese"], boxeador: ["portuguese"], branco: ["portuguese"], brasa: ["portuguese"], braveza: ["portuguese"], breu: ["portuguese"], briga: ["portuguese"], brilho: ["portuguese"], brincar: ["portuguese"], broa: ["portuguese"], brochura: ["portuguese"], bronzear: ["portuguese"], broto: ["portuguese"], bruxo: ["portuguese"], bucha: ["portuguese"], budismo: ["portuguese"], bufar: ["portuguese"], bule: ["portuguese"], buraco: ["portuguese"], busca: ["portuguese"], busto: ["portuguese"], buzina: ["portuguese"], cabana: ["portuguese"], cabelo: ["portuguese"], cabide: ["portuguese"], cabo: ["portuguese"], cabrito: ["portuguese"], cacau: ["portuguese"], cacetada: ["portuguese"], cachorro: ["portuguese"], cacique: ["portuguese"], cadastro: ["portuguese"], cadeado: ["portuguese"], cafezal: ["portuguese"], caiaque: ["portuguese"], caipira: ["portuguese"], caixote: ["portuguese"], cajado: ["portuguese"], caju: ["portuguese"], calafrio: ["portuguese"], calcular: ["portuguese"], caldeira: ["portuguese"], calibrar: ["portuguese"], calmante: ["portuguese"], calota: ["portuguese"], camada: ["portuguese"], cambista: ["portuguese"], camisa: ["portuguese"], camomila: ["portuguese"], campanha: ["portuguese"], camuflar: ["portuguese"], canavial: ["portuguese"], cancelar: ["portuguese"], caneta: ["portuguese"], canguru: ["portuguese"], canhoto: ["portuguese"], canivete: ["portuguese"], canoa: ["portuguese"], cansado: ["portuguese"], cantar: ["portuguese"], canudo: ["portuguese"], capacho: ["portuguese"], capela: ["portuguese"], capinar: ["portuguese"], capotar: ["portuguese"], capricho: ["portuguese"], captador: ["portuguese"], capuz: ["portuguese"], caracol: ["portuguese"], carbono: ["portuguese"], cardeal: ["portuguese"], careca: ["portuguese"], carimbar: ["portuguese"], carneiro: ["portuguese"], carpete: ["portuguese"], carreira: ["portuguese"], cartaz: ["portuguese"], carvalho: ["portuguese"], casaco: ["portuguese"], casca: ["portuguese"], casebre: ["portuguese"], castelo: ["portuguese"], casulo: ["portuguese"], catarata: ["portuguese"], cativar: ["portuguese"], caule: ["portuguese"], causador: ["portuguese"], cautelar: ["portuguese"], cavalo: ["portuguese"], caverna: ["portuguese"], cebola: ["portuguese"], cedilha: ["portuguese"], cegonha: ["portuguese"], celebrar: ["portuguese"], celular: ["portuguese"], cenoura: ["portuguese"], censo: ["portuguese"], centeio: ["portuguese"], cercar: ["portuguese"], cerrado: ["portuguese"], certeiro: ["portuguese"], cerveja: ["portuguese"], cetim: ["portuguese"], cevada: ["portuguese"], chacota: ["portuguese"], chaleira: ["portuguese"], chamado: ["portuguese"], chapada: ["portuguese"], charme: ["portuguese"], chatice: ["portuguese"], chave: ["portuguese"], chefe: ["portuguese"], chegada: ["portuguese"], cheiro: ["portuguese"], cheque: ["portuguese"], chicote: ["portuguese"], chifre: ["portuguese"], chinelo: ["portuguese"], chocalho: ["portuguese"], chover: ["portuguese"], chumbo: ["portuguese"], chutar: ["portuguese"], chuva: ["portuguese"], cicatriz: ["portuguese"], ciclone: ["portuguese"], cidade: ["portuguese"], cidreira: ["portuguese"], ciente: ["portuguese"], cigana: ["portuguese"], cimento: ["portuguese"], cinto: ["portuguese"], cinza: ["portuguese"], ciranda: ["portuguese"], circuito: ["portuguese"], cirurgia: ["portuguese"], citar: ["portuguese"], clareza: ["portuguese"], clero: ["portuguese"], clicar: ["portuguese"], clone: ["portuguese"], clube: ["portuguese"], coado: ["portuguese"], coagir: ["portuguese"], cobaia: ["portuguese"], cobertor: ["portuguese"], cobrar: ["portuguese"], cocada: ["portuguese"], coelho: ["portuguese"], coentro: ["portuguese"], coeso: ["portuguese"], cogumelo: ["portuguese"], coibir: ["portuguese"], coifa: ["portuguese"], coiote: ["portuguese"], colar: ["portuguese"], coleira: ["portuguese"], colher: ["portuguese"], colidir: ["portuguese"], colmeia: ["portuguese"], colono: ["portuguese"], coluna: ["portuguese"], comando: ["portuguese"], combinar: ["portuguese"], comentar: ["portuguese"], comitiva: ["portuguese"], comover: ["portuguese"], complexo: ["portuguese"], comum: ["portuguese"], concha: ["portuguese"], condor: ["portuguese"], conectar: ["portuguese"], confuso: ["portuguese"], congelar: ["portuguese"], conhecer: ["portuguese"], conjugar: ["portuguese"], consumir: ["portuguese"], contrato: ["portuguese"], convite: ["portuguese"], cooperar: ["portuguese"], copeiro: ["portuguese"], copiador: ["portuguese"], copo: ["portuguese"], coquetel: ["portuguese"], coragem: ["portuguese"], cordial: ["portuguese"], corneta: ["portuguese"], coronha: ["portuguese"], corporal: ["portuguese"], correio: ["portuguese"], cortejo: ["portuguese"], coruja: ["portuguese"], corvo: ["portuguese"], cosseno: ["portuguese"], costela: ["portuguese"], cotonete: ["portuguese"], couro: ["portuguese"], couve: ["portuguese"], covil: ["portuguese"], cozinha: ["portuguese"], cratera: ["portuguese"], cravo: ["portuguese"], creche: ["portuguese"], credor: ["portuguese"], creme: ["portuguese"], crer: ["portuguese"], crespo: ["portuguese"], criada: ["portuguese"], criminal: ["portuguese"], crioulo: ["portuguese"], crise: ["portuguese"], criticar: ["portuguese"], crosta: ["portuguese"], crua: ["portuguese"], cruzeiro: ["portuguese"], cubano: ["portuguese"], cueca: ["portuguese"], cuidado: ["portuguese"], cujo: ["portuguese"], culatra: ["portuguese"], culminar: ["portuguese"], culpar: ["portuguese"], cultura: ["portuguese"], cumprir: ["portuguese"], cunhado: ["portuguese"], cupido: ["portuguese"], curativo: ["portuguese"], curral: ["portuguese"], cursar: ["portuguese"], curto: ["portuguese"], cuspir: ["portuguese"], custear: ["portuguese"], cutelo: ["portuguese"], damasco: ["portuguese"], datar: ["portuguese"], debater: ["portuguese"], debitar: ["portuguese"], deboche: ["portuguese"], debulhar: ["portuguese"], decalque: ["portuguese"], decimal: ["portuguese"], declive: ["portuguese"], decote: ["portuguese"], decretar: ["portuguese"], dedal: ["portuguese"], dedicado: ["portuguese"], deduzir: ["portuguese"], defesa: ["portuguese"], defumar: ["portuguese"], degelo: ["portuguese"], degrau: ["portuguese"], degustar: ["portuguese"], deitado: ["portuguese"], deixar: ["portuguese"], delator: ["portuguese"], delegado: ["portuguese"], delinear: ["portuguese"], delonga: ["portuguese"], demanda: ["portuguese"], demitir: ["portuguese"], demolido: ["portuguese"], dentista: ["portuguese"], depenado: ["portuguese"], depilar: ["portuguese"], depois: ["portuguese"], depressa: ["portuguese"], depurar: ["portuguese"], deriva: ["portuguese"], derramar: ["portuguese"], desafio: ["portuguese"], desbotar: ["portuguese"], descanso: ["portuguese"], desenho: ["portuguese"], desfiado: ["portuguese"], desgaste: ["portuguese"], desigual: ["portuguese"], deslize: ["portuguese"], desmamar: ["portuguese"], desova: ["portuguese"], despesa: ["portuguese"], destaque: ["portuguese"], desviar: ["portuguese"], detalhar: ["portuguese"], detentor: ["portuguese"], detonar: ["portuguese"], detrito: ["portuguese"], deusa: ["portuguese"], dever: ["portuguese"], devido: ["portuguese"], devotado: ["portuguese"], dezena: ["portuguese"], diagrama: ["portuguese"], dialeto: ["portuguese"], didata: ["portuguese"], difuso: ["portuguese"], digitar: ["portuguese"], dilatado: ["portuguese"], diluente: ["portuguese"], diminuir: ["portuguese"], dinastia: ["portuguese"], dinheiro: ["portuguese"], diocese: ["portuguese"], direto: ["portuguese"], discreta: ["portuguese"], disfarce: ["portuguese"], disparo: ["portuguese"], disquete: ["portuguese"], dissipar: ["portuguese"], distante: ["portuguese"], ditador: ["portuguese"], diurno: ["portuguese"], diverso: ["portuguese"], divisor: ["portuguese"], divulgar: ["portuguese"], dizer: ["portuguese"], dobrador: ["portuguese"], dolorido: ["portuguese"], domador: ["portuguese"], dominado: ["portuguese"], donativo: ["portuguese"], donzela: ["portuguese"], dormente: ["portuguese"], dorsal: ["portuguese"], dosagem: ["portuguese"], dourado: ["portuguese"], doutor: ["portuguese"], drenagem: ["portuguese"], drible: ["portuguese"], drogaria: ["portuguese"], duelar: ["portuguese"], duende: ["portuguese"], dueto: ["portuguese"], duplo: ["portuguese"], duquesa: ["portuguese"], durante: ["portuguese"], duvidoso: ["portuguese"], eclodir: ["portuguese"], ecoar: ["portuguese"], ecologia: ["portuguese"], edificar: ["portuguese"], edital: ["portuguese"], educado: ["portuguese"], efeito: ["portuguese"], efetivar: ["portuguese"], ejetar: ["portuguese"], elaborar: ["portuguese"], eleger: ["portuguese"], eleitor: ["portuguese"], elenco: ["portuguese"], elevador: ["portuguese"], eliminar: ["portuguese"], elogiar: ["portuguese"], embargo: ["portuguese"], embolado: ["portuguese"], embrulho: ["portuguese"], embutido: ["portuguese"], emenda: ["portuguese"], emergir: ["portuguese"], emissor: ["portuguese"], empatia: ["portuguese"], empenho: ["portuguese"], empinado: ["portuguese"], empolgar: ["portuguese"], emprego: ["portuguese"], empurrar: ["portuguese"], emulador: ["portuguese"], encaixe: ["portuguese"], encenado: ["portuguese"], enchente: ["portuguese"], encontro: ["portuguese"], endeusar: ["portuguese"], endossar: ["portuguese"], enfaixar: ["portuguese"], enfeite: ["portuguese"], enfim: ["portuguese"], engajado: ["portuguese"], engenho: ["portuguese"], englobar: ["portuguese"], engomado: ["portuguese"], engraxar: ["portuguese"], enguia: ["portuguese"], enjoar: ["portuguese"], enlatar: ["portuguese"], enquanto: ["portuguese"], enraizar: ["portuguese"], enrolado: ["portuguese"], enrugar: ["portuguese"], ensaio: ["portuguese"], enseada: ["portuguese"], ensino: ["portuguese"], ensopado: ["portuguese"], entanto: ["portuguese"], enteado: ["portuguese"], entidade: ["portuguese"], entortar: ["portuguese"], entrada: ["portuguese"], entulho: ["portuguese"], envergar: ["portuguese"], enviado: ["portuguese"], envolver: ["portuguese"], enxame: ["portuguese"], enxerto: ["portuguese"], enxofre: ["portuguese"], enxuto: ["portuguese"], epiderme: ["portuguese"], equipar: ["portuguese"], ereto: ["portuguese"], erguido: ["portuguese"], errata: ["portuguese"], erva: ["portuguese"], ervilha: ["portuguese"], esbanjar: ["portuguese"], esbelto: ["portuguese"], escama: ["portuguese"], escola: ["portuguese"], escrita: ["portuguese"], escuta: ["portuguese"], esfinge: ["portuguese"], esfolar: ["portuguese"], esfregar: ["portuguese"], esfumado: ["portuguese"], esgrima: ["portuguese"], esmalte: ["portuguese"], espanto: ["portuguese"], espelho: ["portuguese"], espiga: ["portuguese"], esponja: ["portuguese"], espreita: ["portuguese"], espumar: ["portuguese"], esquerda: ["portuguese"], estaca: ["portuguese"], esteira: ["portuguese"], esticar: ["portuguese"], estofado: ["portuguese"], estrela: ["portuguese"], estudo: ["portuguese"], esvaziar: ["portuguese"], etanol: ["portuguese"], etiqueta: ["portuguese"], euforia: ["portuguese"], europeu: ["portuguese"], evacuar: ["portuguese"], evaporar: ["portuguese"], evasivo: ["portuguese"], eventual: ["portuguese"], evidente: ["portuguese"], evoluir: ["portuguese"], exagero: ["portuguese"], exalar: ["portuguese"], examinar: ["portuguese"], exato: ["portuguese"], exausto: ["portuguese"], excesso: ["portuguese"], excitar: ["portuguese"], exclamar: ["portuguese"], executar: ["portuguese"], exemplo: ["portuguese"], exibir: ["portuguese"], exigente: ["portuguese"], exonerar: ["portuguese"], expandir: ["portuguese"], expelir: ["portuguese"], expirar: ["portuguese"], explanar: ["portuguese"], exposto: ["portuguese"], expresso: ["portuguese"], expulsar: ["portuguese"], externo: ["portuguese"], extinto: ["portuguese"], extrato: ["portuguese"], fabricar: ["portuguese"], fabuloso: ["portuguese"], faceta: ["portuguese"], facial: ["portuguese"], fada: ["portuguese"], fadiga: ["portuguese"], faixa: ["portuguese"], falar: ["portuguese"], falta: ["portuguese"], familiar: ["portuguese"], fandango: ["portuguese"], fanfarra: ["portuguese"], fantoche: ["portuguese"], fardado: ["portuguese"], farelo: ["portuguese"], farinha: ["portuguese"], farofa: ["portuguese"], farpa: ["portuguese"], fartura: ["portuguese"], fatia: ["portuguese"], fator: ["portuguese"], favorita: ["portuguese"], faxina: ["portuguese"], fazenda: ["portuguese"], fechado: ["portuguese"], feijoada: ["portuguese"], feirante: ["portuguese"], felino: ["portuguese"], feminino: ["portuguese"], fenda: ["portuguese"], feno: ["portuguese"], fera: ["portuguese"], feriado: ["portuguese"], ferrugem: ["portuguese"], ferver: ["portuguese"], festejar: ["portuguese"], fetal: ["portuguese"], feudal: ["portuguese"], fiapo: ["portuguese"], fibrose: ["portuguese"], ficar: ["portuguese"], ficheiro: ["portuguese"], figurado: ["portuguese"], fileira: ["portuguese"], filho: ["portuguese"], filme: ["portuguese"], filtrar: ["portuguese"], firmeza: ["portuguese"], fisgada: ["portuguese"], fissura: ["portuguese"], fita: ["portuguese"], fivela: ["portuguese"], fixador: ["portuguese"], fixo: ["portuguese"], flacidez: ["portuguese"], flamingo: ["portuguese"], flanela: ["portuguese"], flechada: ["portuguese"], flora: ["portuguese"], flutuar: ["portuguese"], fluxo: ["portuguese"], focal: ["portuguese"], focinho: ["portuguese"], fofocar: ["portuguese"], fogo: ["portuguese"], foguete: ["portuguese"], foice: ["portuguese"], folgado: ["portuguese"], folheto: ["portuguese"], forjar: ["portuguese"], formiga: ["portuguese"], forno: ["portuguese"], forte: ["portuguese"], fosco: ["portuguese"], fossa: ["portuguese"], fragata: ["portuguese"], fralda: ["portuguese"], frango: ["portuguese"], frasco: ["portuguese"], fraterno: ["portuguese"], freira: ["portuguese"], frente: ["portuguese"], fretar: ["portuguese"], frieza: ["portuguese"], friso: ["portuguese"], fritura: ["portuguese"], fronha: ["portuguese"], frustrar: ["portuguese"], fruteira: ["portuguese"], fugir: ["portuguese"], fulano: ["portuguese"], fuligem: ["portuguese"], fundar: ["portuguese"], fungo: ["portuguese"], funil: ["portuguese"], furador: ["portuguese"], furioso: ["portuguese"], futebol: ["portuguese"], gabarito: ["portuguese"], gabinete: ["portuguese"], gado: ["portuguese"], gaiato: ["portuguese"], gaiola: ["portuguese"], gaivota: ["portuguese"], galega: ["portuguese"], galho: ["portuguese"], galinha: ["portuguese"], galocha: ["portuguese"], ganhar: ["portuguese"], garagem: ["portuguese"], garfo: ["portuguese"], gargalo: ["portuguese"], garimpo: ["portuguese"], garoupa: ["portuguese"], garrafa: ["portuguese"], gasoduto: ["portuguese"], gasto: ["portuguese"], gata: ["portuguese"], gatilho: ["portuguese"], gaveta: ["portuguese"], gazela: ["portuguese"], gelado: ["portuguese"], geleia: ["portuguese"], gelo: ["portuguese"], gemada: ["portuguese"], gemer: ["portuguese"], gemido: ["portuguese"], generoso: ["portuguese"], gengiva: ["portuguese"], genial: ["portuguese"], genoma: ["portuguese"], genro: ["portuguese"], geologia: ["portuguese"], gerador: ["portuguese"], germinar: ["portuguese"], gesso: ["portuguese"], gestor: ["portuguese"], ginasta: ["portuguese"], gincana: ["portuguese"], gingado: ["portuguese"], girafa: ["portuguese"], girino: ["portuguese"], glacial: ["portuguese"], glicose: ["portuguese"], global: ["portuguese"], glorioso: ["portuguese"], goela: ["portuguese"], goiaba: ["portuguese"], golfe: ["portuguese"], golpear: ["portuguese"], gordura: ["portuguese"], gorjeta: ["portuguese"], gorro: ["portuguese"], gostoso: ["portuguese"], goteira: ["portuguese"], governar: ["portuguese"], gracejo: ["portuguese"], gradual: ["portuguese"], grafite: ["portuguese"], gralha: ["portuguese"], grampo: ["portuguese"], granada: ["portuguese"], gratuito: ["portuguese"], graveto: ["portuguese"], graxa: ["portuguese"], grego: ["portuguese"], grelhar: ["portuguese"], greve: ["portuguese"], grilo: ["portuguese"], grisalho: ["portuguese"], gritaria: ["portuguese"], grosso: ["portuguese"], grotesco: ["portuguese"], grudado: ["portuguese"], grunhido: ["portuguese"], gruta: ["portuguese"], guache: ["portuguese"], guarani: ["portuguese"], guaxinim: ["portuguese"], guerrear: ["portuguese"], guiar: ["portuguese"], guincho: ["portuguese"], guisado: ["portuguese"], gula: ["portuguese"], guloso: ["portuguese"], guru: ["portuguese"], habitar: ["portuguese"], harmonia: ["portuguese"], haste: ["portuguese"], haver: ["portuguese"], hectare: ["portuguese"], herdar: ["portuguese"], heresia: ["portuguese"], hesitar: ["portuguese"], hiato: ["portuguese"], hibernar: ["portuguese"], hidratar: ["portuguese"], hiena: ["portuguese"], hino: ["portuguese"], hipismo: ["portuguese"], hipnose: ["portuguese"], hipoteca: ["portuguese"], hoje: ["portuguese"], holofote: ["portuguese"], homem: ["portuguese"], honesto: ["portuguese"], honrado: ["portuguese"], hormonal: ["portuguese"], hospedar: ["portuguese"], humorado: ["portuguese"], iate: ["portuguese"], ideia: ["portuguese"], idoso: ["portuguese"], ignorado: ["portuguese"], igreja: ["portuguese"], iguana: ["portuguese"], ileso: ["portuguese"], ilha: ["portuguese"], iludido: ["portuguese"], iluminar: ["portuguese"], ilustrar: ["portuguese"], imagem: ["portuguese"], imediato: ["portuguese"], imenso: ["portuguese"], imersivo: ["portuguese"], iminente: ["portuguese"], imitador: ["portuguese"], imortal: ["portuguese"], impacto: ["portuguese"], impedir: ["portuguese"], implante: ["portuguese"], impor: ["portuguese"], imprensa: ["portuguese"], impune: ["portuguese"], imunizar: ["portuguese"], inalador: ["portuguese"], inapto: ["portuguese"], inativo: ["portuguese"], incenso: ["portuguese"], inchar: ["portuguese"], incidir: ["portuguese"], incluir: ["portuguese"], incolor: ["portuguese"], indeciso: ["portuguese"], indireto: ["portuguese"], indutor: ["portuguese"], ineficaz: ["portuguese"], inerente: ["portuguese"], infantil: ["portuguese"], infestar: ["portuguese"], infinito: ["portuguese"], inflamar: ["portuguese"], informal: ["portuguese"], infrator: ["portuguese"], ingerir: ["portuguese"], inibido: ["portuguese"], inicial: ["portuguese"], inimigo: ["portuguese"], injetar: ["portuguese"], inocente: ["portuguese"], inodoro: ["portuguese"], inovador: ["portuguese"], inox: ["portuguese"], inquieto: ["portuguese"], inscrito: ["portuguese"], inseto: ["portuguese"], insistir: ["portuguese"], inspetor: ["portuguese"], instalar: ["portuguese"], insulto: ["portuguese"], intacto: ["portuguese"], integral: ["portuguese"], intimar: ["portuguese"], intocado: ["portuguese"], intriga: ["portuguese"], invasor: ["portuguese"], inverno: ["portuguese"], invicto: ["portuguese"], invocar: ["portuguese"], iogurte: ["portuguese"], iraniano: ["portuguese"], ironizar: ["portuguese"], irreal: ["portuguese"], irritado: ["portuguese"], isca: ["portuguese"], isento: ["portuguese"], isolado: ["portuguese"], isqueiro: ["portuguese"], italiano: ["portuguese"], janeiro: ["portuguese"], jangada: ["portuguese"], janta: ["portuguese"], jararaca: ["portuguese"], jardim: ["portuguese"], jarro: ["portuguese"], jasmim: ["portuguese"], jato: ["portuguese"], javali: ["portuguese"], jazida: ["portuguese"], jejum: ["portuguese"], joaninha: ["portuguese"], joelhada: ["portuguese"], jogador: ["portuguese"], joia: ["portuguese"], jornal: ["portuguese"], jorrar: ["portuguese"], jovem: ["portuguese"], juba: ["portuguese"], judeu: ["portuguese"], judoca: ["portuguese"], juiz: ["portuguese"], julgador: ["portuguese"], julho: ["portuguese"], jurado: ["portuguese"], jurista: ["portuguese"], juro: ["portuguese"], justa: ["portuguese"], labareda: ["portuguese"], laboral: ["portuguese"], lacre: ["portuguese"], lactante: ["portuguese"], ladrilho: ["portuguese"], lagarta: ["portuguese"], lagoa: ["portuguese"], laje: ["portuguese"], lamber: ["portuguese"], lamentar: ["portuguese"], laminar: ["portuguese"], lampejo: ["portuguese"], lanche: ["portuguese"], lapidar: ["portuguese"], lapso: ["portuguese"], laranja: ["portuguese"], lareira: ["portuguese"], largura: ["portuguese"], lasanha: ["portuguese"], lastro: ["portuguese"], lateral: ["portuguese"], latido: ["portuguese"], lavanda: ["portuguese"], lavoura: ["portuguese"], lavrador: ["portuguese"], laxante: ["portuguese"], lazer: ["portuguese"], lealdade: ["portuguese"], lebre: ["portuguese"], legado: ["portuguese"], legendar: ["portuguese"], legista: ["portuguese"], leigo: ["portuguese"], leiloar: ["portuguese"], leitura: ["portuguese"], lembrete: ["portuguese"], leme: ["portuguese"], lenhador: ["portuguese"], lentilha: ["portuguese"], leoa: ["portuguese"], lesma: ["portuguese"], leste: ["portuguese"], letivo: ["portuguese"], letreiro: ["portuguese"], levar: ["portuguese"], leveza: ["portuguese"], levitar: ["portuguese"], liberal: ["portuguese"], libido: ["portuguese"], liderar: ["portuguese"], ligar: ["portuguese"], ligeiro: ["portuguese"], limitar: ["portuguese"], limoeiro: ["portuguese"], limpador: ["portuguese"], linda: ["portuguese"], linear: ["portuguese"], linhagem: ["portuguese"], liquidez: ["portuguese"], listagem: ["portuguese"], lisura: ["portuguese"], litoral: ["portuguese"], livro: ["portuguese"], lixa: ["portuguese"], lixeira: ["portuguese"], locador: ["portuguese"], locutor: ["portuguese"], lojista: ["portuguese"], lombo: ["portuguese"], lona: ["portuguese"], longe: ["portuguese"], lontra: ["portuguese"], lorde: ["portuguese"], lotado: ["portuguese"], loteria: ["portuguese"], loucura: ["portuguese"], lousa: ["portuguese"], louvar: ["portuguese"], luar: ["portuguese"], lucidez: ["portuguese"], lucro: ["portuguese"], luneta: ["portuguese"], lustre: ["portuguese"], lutador: ["portuguese"], luva: ["portuguese"], macaco: ["portuguese"], macete: ["portuguese"], machado: ["portuguese"], macio: ["portuguese"], madeira: ["portuguese"], madrinha: ["portuguese"], magnata: ["portuguese"], magreza: ["portuguese"], maior: ["portuguese"], mais: ["portuguese"], malandro: ["portuguese"], malha: ["portuguese"], malote: ["portuguese"], maluco: ["portuguese"], mamilo: ["portuguese"], mamoeiro: ["portuguese"], mamute: ["portuguese"], manada: ["portuguese"], mancha: ["portuguese"], mandato: ["portuguese"], manequim: ["portuguese"], manhoso: ["portuguese"], manivela: ["portuguese"], manobrar: ["portuguese"], mansa: ["portuguese"], manter: ["portuguese"], manusear: ["portuguese"], mapeado: ["portuguese"], maquinar: ["portuguese"], marcador: ["portuguese"], maresia: ["portuguese"], marfim: ["portuguese"], margem: ["portuguese"], marinho: ["portuguese"], marmita: ["portuguese"], maroto: ["portuguese"], marquise: ["portuguese"], marreco: ["portuguese"], martelo: ["portuguese"], marujo: ["portuguese"], mascote: ["portuguese"], masmorra: ["portuguese"], massagem: ["portuguese"], mastigar: ["portuguese"], matagal: ["portuguese"], materno: ["portuguese"], matinal: ["portuguese"], matutar: ["portuguese"], maxilar: ["portuguese"], medalha: ["portuguese"], medida: ["portuguese"], medusa: ["portuguese"], megafone: ["portuguese"], meiga: ["portuguese"], melancia: ["portuguese"], melhor: ["portuguese"], membro: ["portuguese"], memorial: ["portuguese"], menino: ["portuguese"], menos: ["portuguese"], mensagem: ["portuguese"], mental: ["portuguese"], merecer: ["portuguese"], mergulho: ["portuguese"], mesada: ["portuguese"], mesclar: ["portuguese"], mesmo: ["portuguese"], mesquita: ["portuguese"], mestre: ["portuguese"], metade: ["portuguese"], meteoro: ["portuguese"], metragem: ["portuguese"], mexer: ["portuguese"], mexicano: ["portuguese"], micro: ["portuguese"], migalha: ["portuguese"], migrar: ["portuguese"], milagre: ["portuguese"], milenar: ["portuguese"], milhar: ["portuguese"], mimado: ["portuguese"], minerar: ["portuguese"], minhoca: ["portuguese"], ministro: ["portuguese"], minoria: ["portuguese"], miolo: ["portuguese"], mirante: ["portuguese"], mirtilo: ["portuguese"], misturar: ["portuguese"], mocidade: ["portuguese"], moderno: ["portuguese"], modular: ["portuguese"], moeda: ["portuguese"], moer: ["portuguese"], moinho: ["portuguese"], moita: ["portuguese"], moldura: ["portuguese"], moleza: ["portuguese"], molho: ["portuguese"], molinete: ["portuguese"], molusco: ["portuguese"], montanha: ["portuguese"], moqueca: ["portuguese"], morango: ["portuguese"], morcego: ["portuguese"], mordomo: ["portuguese"], morena: ["portuguese"], mosaico: ["portuguese"], mosquete: ["portuguese"], mostarda: ["portuguese"], motel: ["portuguese"], motim: ["portuguese"], moto: ["portuguese"], motriz: ["portuguese"], muda: ["portuguese"], muito: ["portuguese"], mulata: ["portuguese"], mulher: ["portuguese"], multar: ["portuguese"], mundial: ["portuguese"], munido: ["portuguese"], muralha: ["portuguese"], murcho: ["portuguese"], muscular: ["portuguese"], museu: ["portuguese"], musical: ["portuguese"], nacional: ["portuguese"], nadador: ["portuguese"], naja: ["portuguese"], namoro: ["portuguese"], narina: ["portuguese"], narrado: ["portuguese"], nascer: ["portuguese"], nativa: ["portuguese"], natureza: ["portuguese"], navalha: ["portuguese"], navegar: ["portuguese"], navio: ["portuguese"], neblina: ["portuguese"], nebuloso: ["portuguese"], negativa: ["portuguese"], negociar: ["portuguese"], negrito: ["portuguese"], nervoso: ["portuguese"], neta: ["portuguese"], neural: ["portuguese"], nevasca: ["portuguese"], nevoeiro: ["portuguese"], ninar: ["portuguese"], ninho: ["portuguese"], nitidez: ["portuguese"], nivelar: ["portuguese"], nobreza: ["portuguese"], noite: ["portuguese"], noiva: ["portuguese"], nomear: ["portuguese"], nominal: ["portuguese"], nordeste: ["portuguese"], nortear: ["portuguese"], notar: ["portuguese"], noticiar: ["portuguese"], noturno: ["portuguese"], novelo: ["portuguese"], novilho: ["portuguese"], novo: ["portuguese"], nublado: ["portuguese"], nudez: ["portuguese"], numeral: ["portuguese"], nupcial: ["portuguese"], nutrir: ["portuguese"], nuvem: ["portuguese"], obcecado: ["portuguese"], obedecer: ["portuguese"], objetivo: ["portuguese"], obrigado: ["portuguese"], obscuro: ["portuguese"], obstetra: ["portuguese"], obter: ["portuguese"], obturar: ["portuguese"], ocidente: ["portuguese"], ocioso: ["portuguese"], ocorrer: ["portuguese"], oculista: ["portuguese"], ocupado: ["portuguese"], ofegante: ["portuguese"], ofensiva: ["portuguese"], oferenda: ["portuguese"], oficina: ["portuguese"], ofuscado: ["portuguese"], ogiva: ["portuguese"], olaria: ["portuguese"], oleoso: ["portuguese"], olhar: ["portuguese"], oliveira: ["portuguese"], ombro: ["portuguese"], omelete: ["portuguese"], omisso: ["portuguese"], omitir: ["portuguese"], ondulado: ["portuguese"], oneroso: ["portuguese"], ontem: ["portuguese"], opcional: ["portuguese"], operador: ["portuguese"], oponente: ["portuguese"], oportuno: ["portuguese"], oposto: ["portuguese"], orar: ["portuguese"], orbitar: ["portuguese"], ordem: ["portuguese"], ordinal: ["portuguese"], orfanato: ["portuguese"], orgasmo: ["portuguese"], orgulho: ["portuguese"], oriental: ["portuguese"], origem: ["portuguese"], oriundo: ["portuguese"], orla: ["portuguese"], ortodoxo: ["portuguese"], orvalho: ["portuguese"], oscilar: ["portuguese"], ossada: ["portuguese"], osso: ["portuguese"], ostentar: ["portuguese"], otimismo: ["portuguese"], ousadia: ["portuguese"], outono: ["portuguese"], outubro: ["portuguese"], ouvido: ["portuguese"], ovelha: ["portuguese"], ovular: ["portuguese"], oxidar: ["portuguese"], oxigenar: ["portuguese"], pacato: ["portuguese"], paciente: ["portuguese"], pacote: ["portuguese"], pactuar: ["portuguese"], padaria: ["portuguese"], padrinho: ["portuguese"], pagar: ["portuguese"], pagode: ["portuguese"], painel: ["portuguese"], pairar: ["portuguese"], paisagem: ["portuguese"], palavra: ["portuguese"], palestra: ["portuguese"], palheta: ["portuguese"], palito: ["portuguese"], palmada: ["portuguese"], palpitar: ["portuguese"], pancada: ["portuguese"], panela: ["portuguese"], panfleto: ["portuguese"], panqueca: ["portuguese"], pantanal: ["portuguese"], papagaio: ["portuguese"], papelada: ["portuguese"], papiro: ["portuguese"], parafina: ["portuguese"], parcial: ["portuguese"], pardal: ["portuguese"], parede: ["portuguese"], partida: ["portuguese"], pasmo: ["portuguese"], passado: ["portuguese"], pastel: ["portuguese"], patamar: ["portuguese"], patente: ["portuguese"], patinar: ["portuguese"], patrono: ["portuguese"], paulada: ["portuguese"], pausar: ["portuguese"], peculiar: ["portuguese"], pedalar: ["portuguese"], pedestre: ["portuguese"], pediatra: ["portuguese"], pedra: ["portuguese"], pegada: ["portuguese"], peitoral: ["portuguese"], peixe: ["portuguese"], pele: ["portuguese"], pelicano: ["portuguese"], penca: ["portuguese"], pendurar: ["portuguese"], peneira: ["portuguese"], penhasco: ["portuguese"], pensador: ["portuguese"], pente: ["portuguese"], perceber: ["portuguese"], perfeito: ["portuguese"], pergunta: ["portuguese"], perito: ["portuguese"], permitir: ["portuguese"], perna: ["portuguese"], perplexo: ["portuguese"], persiana: ["portuguese"], pertence: ["portuguese"], peruca: ["portuguese"], pescado: ["portuguese"], pesquisa: ["portuguese"], pessoa: ["portuguese"], petiscar: ["portuguese"], piada: ["portuguese"], picado: ["portuguese"], piedade: ["portuguese"], pigmento: ["portuguese"], pilastra: ["portuguese"], pilhado: ["portuguese"], pilotar: ["portuguese"], pimenta: ["portuguese"], pincel: ["portuguese"], pinguim: ["portuguese"], pinha: ["portuguese"], pinote: ["portuguese"], pintar: ["portuguese"], pioneiro: ["portuguese"], pipoca: ["portuguese"], piquete: ["portuguese"], piranha: ["portuguese"], pires: ["portuguese"], pirueta: ["portuguese"], piscar: ["portuguese"], pistola: ["portuguese"], pitanga: ["portuguese"], pivete: ["portuguese"], planta: ["portuguese"], plaqueta: ["portuguese"], platina: ["portuguese"], plebeu: ["portuguese"], plumagem: ["portuguese"], pluvial: ["portuguese"], pneu: ["portuguese"], poda: ["portuguese"], poeira: ["portuguese"], poetisa: ["portuguese"], polegada: ["portuguese"], policiar: ["portuguese"], poluente: ["portuguese"], polvilho: ["portuguese"], pomar: ["portuguese"], pomba: ["portuguese"], ponderar: ["portuguese"], pontaria: ["portuguese"], populoso: ["portuguese"], porta: ["portuguese"], possuir: ["portuguese"], postal: ["portuguese"], pote: ["portuguese"], poupar: ["portuguese"], pouso: ["portuguese"], povoar: ["portuguese"], praia: ["portuguese"], prancha: ["portuguese"], prato: ["portuguese"], praxe: ["portuguese"], prece: ["portuguese"], predador: ["portuguese"], prefeito: ["portuguese"], premiar: ["portuguese"], prensar: ["portuguese"], preparar: ["portuguese"], presilha: ["portuguese"], pretexto: ["portuguese"], prevenir: ["portuguese"], prezar: ["portuguese"], primata: ["portuguese"], princesa: ["portuguese"], prisma: ["portuguese"], privado: ["portuguese"], processo: ["portuguese"], produto: ["portuguese"], profeta: ["portuguese"], proibido: ["portuguese"], projeto: ["portuguese"], prometer: ["portuguese"], propagar: ["portuguese"], prosa: ["portuguese"], protetor: ["portuguese"], provador: ["portuguese"], publicar: ["portuguese"], pudim: ["portuguese"], pular: ["portuguese"], pulmonar: ["portuguese"], pulseira: ["portuguese"], punhal: ["portuguese"], punir: ["portuguese"], pupilo: ["portuguese"], pureza: ["portuguese"], puxador: ["portuguese"], quadra: ["portuguese"], quantia: ["portuguese"], quarto: ["portuguese"], quase: ["portuguese"], quebrar: ["portuguese"], queda: ["portuguese"], queijo: ["portuguese"], quente: ["portuguese"], querido: ["portuguese"], quimono: ["portuguese"], quina: ["portuguese"], quiosque: ["portuguese"], rabanada: ["portuguese"], rabisco: ["portuguese"], rachar: ["portuguese"], racionar: ["portuguese"], radial: ["portuguese"], raiar: ["portuguese"], rainha: ["portuguese"], raio: ["portuguese"], raiva: ["portuguese"], rajada: ["portuguese"], ralado: ["portuguese"], ramal: ["portuguese"], ranger: ["portuguese"], ranhura: ["portuguese"], rapadura: ["portuguese"], rapel: ["portuguese"], rapidez: ["portuguese"], raposa: ["portuguese"], raquete: ["portuguese"], raridade: ["portuguese"], rasante: ["portuguese"], rascunho: ["portuguese"], rasgar: ["portuguese"], raspador: ["portuguese"], rasteira: ["portuguese"], rasurar: ["portuguese"], ratazana: ["portuguese"], ratoeira: ["portuguese"], realeza: ["portuguese"], reanimar: ["portuguese"], reaver: ["portuguese"], rebaixar: ["portuguese"], rebelde: ["portuguese"], rebolar: ["portuguese"], recado: ["portuguese"], recente: ["portuguese"], recheio: ["portuguese"], recibo: ["portuguese"], recordar: ["portuguese"], recrutar: ["portuguese"], recuar: ["portuguese"], rede: ["portuguese"], redimir: ["portuguese"], redonda: ["portuguese"], reduzida: ["portuguese"], reenvio: ["portuguese"], refinar: ["portuguese"], refletir: ["portuguese"], refogar: ["portuguese"], refresco: ["portuguese"], refugiar: ["portuguese"], regalia: ["portuguese"], regime: ["portuguese"], regra: ["portuguese"], reinado: ["portuguese"], reitor: ["portuguese"], rejeitar: ["portuguese"], relativo: ["portuguese"], remador: ["portuguese"], remendo: ["portuguese"], remorso: ["portuguese"], renovado: ["portuguese"], reparo: ["portuguese"], repelir: ["portuguese"], repleto: ["portuguese"], repolho: ["portuguese"], represa: ["portuguese"], repudiar: ["portuguese"], requerer: ["portuguese"], resenha: ["portuguese"], resfriar: ["portuguese"], resgatar: ["portuguese"], residir: ["portuguese"], resolver: ["portuguese"], respeito: ["portuguese"], ressaca: ["portuguese"], restante: ["portuguese"], resumir: ["portuguese"], retalho: ["portuguese"], reter: ["portuguese"], retirar: ["portuguese"], retomada: ["portuguese"], retratar: ["portuguese"], revelar: ["portuguese"], revisor: ["portuguese"], revolta: ["portuguese"], riacho: ["portuguese"], rica: ["portuguese"], rigidez: ["portuguese"], rigoroso: ["portuguese"], rimar: ["portuguese"], ringue: ["portuguese"], risada: ["portuguese"], risco: ["portuguese"], risonho: ["portuguese"], robalo: ["portuguese"], rochedo: ["portuguese"], rodada: ["portuguese"], rodeio: ["portuguese"], rodovia: ["portuguese"], roedor: ["portuguese"], roleta: ["portuguese"], romano: ["portuguese"], roncar: ["portuguese"], rosado: ["portuguese"], roseira: ["portuguese"], rosto: ["portuguese"], rota: ["portuguese", "turkish"], roteiro: ["portuguese"], rotina: ["portuguese"], rotular: ["portuguese"], rouco: ["portuguese"], roupa: ["portuguese"], roxo: ["portuguese"], rubro: ["portuguese"], rugido: ["portuguese"], rugoso: ["portuguese"], ruivo: ["portuguese"], rumo: ["portuguese"], rupestre: ["portuguese"], russo: ["portuguese"], sabor: ["portuguese"], saciar: ["portuguese"], sacola: ["portuguese"], sacudir: ["portuguese"], sadio: ["portuguese"], safira: ["portuguese"], saga: ["portuguese"], sagrada: ["portuguese"], saibro: ["portuguese"], salada: ["portuguese"], saleiro: ["portuguese"], salgado: ["portuguese"], saliva: ["portuguese"], salpicar: ["portuguese"], salsicha: ["portuguese"], saltar: ["portuguese"], salvador: ["portuguese"], sambar: ["portuguese"], samurai: ["portuguese"], sanar: ["portuguese"], sanfona: ["portuguese"], sangue: ["portuguese"], sanidade: ["portuguese"], sapato: ["portuguese"], sarda: ["portuguese"], sargento: ["portuguese"], sarjeta: ["portuguese"], saturar: ["portuguese"], saudade: ["portuguese"], saxofone: ["portuguese"], sazonal: ["portuguese"], secar: ["portuguese"], secular: ["portuguese"], seda: ["portuguese", "turkish"], sedento: ["portuguese"], sediado: ["portuguese"], sedoso: ["portuguese"], sedutor: ["portuguese"], segmento: ["portuguese"], segredo: ["portuguese"], segundo: ["portuguese"], seiva: ["portuguese"], seleto: ["portuguese"], selvagem: ["portuguese"], semanal: ["portuguese"], semente: ["portuguese"], senador: ["portuguese"], senhor: ["portuguese"], sensual: ["portuguese"], sentado: ["portuguese"], separado: ["portuguese"], sereia: ["portuguese"], seringa: ["portuguese"], serra: ["portuguese"], servo: ["portuguese"], setembro: ["portuguese"], setor: ["portuguese"], sigilo: ["portuguese"], silhueta: ["portuguese"], silicone: ["portuguese"], simetria: ["portuguese"], simpatia: ["portuguese"], simular: ["portuguese"], sinal: ["portuguese"], sincero: ["portuguese"], singular: ["portuguese"], sinopse: ["portuguese"], sintonia: ["portuguese"], sirene: ["portuguese"], siri: ["portuguese"], situado: ["portuguese"], soberano: ["portuguese"], sobra: ["portuguese"], socorro: ["portuguese"], sogro: ["portuguese"], soja: ["portuguese"], solda: ["portuguese"], soletrar: ["portuguese"], solteiro: ["portuguese"], sombrio: ["portuguese"], sonata: ["portuguese"], sondar: ["portuguese"], sonegar: ["portuguese"], sonhador: ["portuguese"], sono: ["portuguese"], soprano: ["portuguese"], soquete: ["portuguese"], sorrir: ["portuguese"], sorteio: ["portuguese"], sossego: ["portuguese"], sotaque: ["portuguese"], soterrar: ["portuguese"], sovado: ["portuguese"], sozinho: ["portuguese"], suavizar: ["portuguese"], subida: ["portuguese"], submerso: ["portuguese"], subsolo: ["portuguese"], subtrair: ["portuguese"], sucata: ["portuguese"], sucesso: ["portuguese"], suco: ["portuguese"], sudeste: ["portuguese"], sufixo: ["portuguese"], sugador: ["portuguese"], sugerir: ["portuguese"], sujeito: ["portuguese"], sulfato: ["portuguese"], sumir: ["portuguese"], suor: ["portuguese"], superior: ["portuguese"], suplicar: ["portuguese"], suposto: ["portuguese"], suprimir: ["portuguese"], surdina: ["portuguese"], surfista: ["portuguese"], surpresa: ["portuguese"], surreal: ["portuguese"], surtir: ["portuguese"], suspiro: ["portuguese"], sustento: ["portuguese"], tabela: ["portuguese", "turkish"], tablete: ["portuguese"], tabuada: ["portuguese"], tacho: ["portuguese"], tagarela: ["portuguese"], talher: ["portuguese"], talo: ["portuguese"], talvez: ["portuguese"], tamanho: ["portuguese"], tamborim: ["portuguese"], tampa: ["portuguese"], tangente: ["portuguese"], tanto: ["portuguese"], tapar: ["portuguese"], tapioca: ["portuguese"], tardio: ["portuguese"], tarefa: ["portuguese"], tarja: ["portuguese"], tarraxa: ["portuguese"], tatuagem: ["portuguese"], taurino: ["portuguese"], taxativo: ["portuguese"], taxista: ["portuguese"], teatral: ["portuguese"], tecer: ["portuguese"], tecido: ["portuguese"], teclado: ["portuguese"], tedioso: ["portuguese"], teia: ["portuguese"], teimar: ["portuguese"], telefone: ["portuguese"], telhado: ["portuguese"], tempero: ["portuguese"], tenente: ["portuguese"], tensor: ["portuguese"], tentar: ["portuguese"], termal: ["portuguese"], terno: ["portuguese"], terreno: ["portuguese"], tese: ["portuguese"], tesoura: ["portuguese"], testado: ["portuguese"], teto: ["portuguese"], textura: ["portuguese"], texugo: ["portuguese"], tiara: ["portuguese"], tigela: ["portuguese"], tijolo: ["portuguese"], timbrar: ["portuguese"], timidez: ["portuguese"], tingido: ["portuguese"], tinteiro: ["portuguese"], tiragem: ["portuguese"], titular: ["portuguese"], toalha: ["portuguese"], tocha: ["portuguese"], tolerar: ["portuguese"], tolice: ["portuguese"], tomada: ["portuguese"], tomilho: ["portuguese"], tonel: ["portuguese"], tontura: ["portuguese"], topete: ["portuguese"], tora: ["portuguese"], torcido: ["portuguese"], torneio: ["portuguese"], torque: ["portuguese"], torrada: ["portuguese"], torto: ["portuguese"], tostar: ["portuguese"], touca: ["portuguese"], toupeira: ["portuguese"], toxina: ["portuguese"], trabalho: ["portuguese"], tracejar: ["portuguese"], tradutor: ["portuguese"], trafegar: ["portuguese"], trajeto: ["portuguese"], trama: ["portuguese"], trancar: ["portuguese"], trapo: ["portuguese"], traseiro: ["portuguese"], tratador: ["portuguese"], travar: ["portuguese"], treino: ["portuguese"], tremer: ["portuguese"], trepidar: ["portuguese"], trevo: ["portuguese"], triagem: ["portuguese"], tribo: ["portuguese"], triciclo: ["portuguese"], tridente: ["portuguese"], trilogia: ["portuguese"], trindade: ["portuguese"], triplo: ["portuguese"], triturar: ["portuguese"], triunfal: ["portuguese"], trocar: ["portuguese"], trombeta: ["portuguese"], trova: ["portuguese"], trunfo: ["portuguese"], truque: ["portuguese"], tubular: ["portuguese"], tucano: ["portuguese"], tudo: ["portuguese"], tulipa: ["portuguese"], tupi: ["portuguese"], turbo: ["portuguese"], turma: ["portuguese"], turquesa: ["portuguese"], tutelar: ["portuguese"], tutorial: ["portuguese"], uivar: ["portuguese"], umbigo: ["portuguese"], unha: ["portuguese"], unidade: ["portuguese"], uniforme: ["portuguese"], urologia: ["portuguese"], urso: ["portuguese"], urtiga: ["portuguese"], urubu: ["portuguese"], usado: ["portuguese"], usina: ["portuguese"], usufruir: ["portuguese"], vacina: ["portuguese"], vadiar: ["portuguese"], vagaroso: ["portuguese"], vaidoso: ["portuguese"], vala: ["portuguese"], valente: ["portuguese"], validade: ["portuguese"], valores: ["portuguese"], vantagem: ["portuguese"], vaqueiro: ["portuguese"], varanda: ["portuguese"], vareta: ["portuguese"], varrer: ["portuguese"], vascular: ["portuguese"], vasilha: ["portuguese"], vassoura: ["portuguese"], vazar: ["portuguese"], vazio: ["portuguese"], veado: ["portuguese"], vedar: ["portuguese"], vegetar: ["portuguese"], veicular: ["portuguese"], veleiro: ["portuguese"], velhice: ["portuguese"], veludo: ["portuguese"], vencedor: ["portuguese"], vendaval: ["portuguese"], venerar: ["portuguese"], ventre: ["portuguese"], verbal: ["portuguese"], verdade: ["portuguese"], vereador: ["portuguese"], vergonha: ["portuguese"], vermelho: ["portuguese"], verniz: ["portuguese"], versar: ["portuguese"], vertente: ["portuguese"], vespa: ["portuguese"], vestido: ["portuguese"], vetorial: ["portuguese"], viaduto: ["portuguese"], viagem: ["portuguese"], viajar: ["portuguese"], viatura: ["portuguese"], vibrador: ["portuguese"], videira: ["portuguese"], vidraria: ["portuguese"], viela: ["portuguese"], viga: ["portuguese"], vigente: ["portuguese"], vigiar: ["portuguese"], vigorar: ["portuguese"], vilarejo: ["portuguese"], vinco: ["portuguese"], vinheta: ["portuguese"], vinil: ["portuguese"], violeta: ["portuguese"], virada: ["portuguese"], virtude: ["portuguese"], visitar: ["portuguese"], visto: ["portuguese"], vitral: ["portuguese"], viveiro: ["portuguese"], vizinho: ["portuguese"], voador: ["portuguese"], voar: ["portuguese"], vogal: ["portuguese"], volante: ["portuguese"], voleibol: ["portuguese"], voltagem: ["portuguese"], volumoso: ["portuguese"], vontade: ["portuguese"], vulto: ["portuguese"], vuvuzela: ["portuguese"], xadrez: ["portuguese"], xarope: ["portuguese"], xeque: ["portuguese"], xeretar: ["portuguese"], xerife: ["portuguese"], xingar: ["portuguese"], zangado: ["portuguese"], zarpar: ["portuguese"], zebu: ["portuguese"], zelador: ["portuguese"], zombar: ["portuguese"], zoologia: ["portuguese"], zumbido: ["portuguese"], \u0430\u0431\u0437\u0430\u0446: ["russian"], \u0430\u0431\u043E\u043D\u0435\u043D\u0442: ["russian"], \u0430\u0431\u0441\u0443\u0440\u0434: ["russian"], \u0430\u0432\u0430\u043D\u0433\u0430\u0440\u0434: ["russian"], \u0430\u0432\u0430\u0440\u0438\u044F: ["russian"], \u0430\u0432\u0433\u0443\u0441\u0442: ["russian"], \u0430\u0432\u0438\u0430\u0446\u0438\u044F: ["russian"], \u0430\u0432\u0442\u043E\u0440: ["russian"], \u0430\u0433\u0435\u043D\u0442: ["russian"], \u0430\u0433\u0438\u0442\u0430\u0446\u0438\u044F: ["russian"], \u0430\u0433\u0440\u0435\u0433\u0430\u0442: ["russian"], \u0430\u0434\u0432\u043E\u043A\u0430\u0442: ["russian"], \u0430\u0434\u043C\u0438\u0440\u0430\u043B: ["russian"], \u0430\u0434\u0440\u0435\u0441: ["russian"], \u0430\u0437\u0430\u0440\u0442: ["russian"], \u0430\u0437\u043E\u0442: ["russian"], \u0430\u043A\u0430\u0434\u0435\u043C\u0438\u044F: ["russian"], \u0430\u043A\u0432\u0430\u0440\u0438\u0443\u043C: ["russian"], \u0430\u043A\u0441\u0438\u043E\u043C\u0430: ["russian"], \u0430\u043A\u0443\u043B\u0430: ["russian"], \u0430\u043A\u0446\u0435\u043D\u0442: ["russian"], \u0430\u043A\u0446\u0438\u044F: ["russian"], \u0430\u043B\u043B\u0435\u044F: ["russian"], \u0430\u043B\u043C\u0430\u0437: ["russian"], \u0430\u043B\u0442\u0430\u0440\u044C: ["russian"], \u0430\u043B\u044C\u0431\u043E\u043C: ["russian"], \u0430\u043B\u044C\u044F\u043D\u0441: ["russian"], \u0430\u043C\u0431\u0438\u0446\u0438\u044F: ["russian"], \u0430\u043D\u0430\u043B\u0438\u0437: ["russian"], \u0430\u043D\u0435\u043A\u0434\u043E\u0442: ["russian"], \u0430\u043D\u043A\u0435\u0442\u0430: ["russian"], \u0430\u043D\u0441\u0430\u043C\u0431\u043B\u044C: ["russian"], \u0430\u043D\u0442\u0435\u043D\u043D\u0430: ["russian"], \u0430\u043F\u0435\u043B\u044C\u0441\u0438\u043D: ["russian"], \u0430\u043F\u043F\u0430\u0440\u0430\u0442: ["russian"], \u0430\u043F\u043F\u0435\u0442\u0438\u0442: ["russian"], \u0430\u043F\u0440\u0435\u043B\u044C: ["russian"], \u0430\u043F\u0442\u0435\u043A\u0430: ["russian"], \u0430\u0440\u0431\u0443\u0437: ["russian"], \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442: ["russian"], \u0430\u0440\u0435\u043D\u0434\u0430: ["russian"], \u0430\u0440\u0435\u0441\u0442: ["russian"], \u0430\u0440\u043C\u0438\u044F: ["russian"], \u0430\u0440\u043E\u043C\u0430\u0442: ["russian"], \u0430\u0440\u0441\u0435\u043D\u0430\u043B: ["russian"], \u0430\u0440\u0442\u0435\u0440\u0438\u044F: ["russian"], \u0430\u0440\u0442\u0438\u0441\u0442: ["russian"], \u0430\u0440\u0445\u0438\u0432: ["russian"], \u0430\u0441\u043F\u0438\u0440\u0430\u043D\u0442: ["russian"], \u0430\u0441\u0444\u0430\u043B\u044C\u0442: ["russian"], \u0430\u0442\u0430\u043A\u0430: ["russian"], \u0430\u0442\u043E\u043C\u043D\u044B\u0439: ["russian"], \u0430\u0442\u0440\u0438\u0431\u0443\u0442: ["russian"], \u0430\u0443\u043A\u0446\u0438\u043E\u043D: ["russian"], \u0430\u0444\u0438\u0448\u0430: ["russian"], \u0430\u044D\u0440\u043E\u043F\u043E\u0440\u0442: ["russian"], \u0431\u0430\u0431\u043E\u0447\u043A\u0430: ["russian"], \u0431\u0430\u0431\u0443\u0448\u043A\u0430: ["russian"], \u0431\u0430\u0433\u0430\u0436: ["russian"], \u0431\u0430\u0437\u0430: ["russian"], \u0431\u0430\u043A\u0442\u0435\u0440\u0438\u044F: ["russian"], \u0431\u0430\u043B\u0430\u043D\u0441: ["russian"], \u0431\u0430\u043B\u0435\u0440\u0438\u043D\u0430: ["russian"], \u0431\u0430\u043B\u043A\u043E\u043D: ["russian"], \u0431\u0430\u043D\u0434\u0438\u0442: ["russian"], \u0431\u0430\u043D\u043A: ["russian"], \u0431\u0430\u0440\u0430\u0431\u0430\u043D: ["russian"], \u0431\u0430\u0440\u043E\u043D: ["russian"], \u0431\u0430\u0440\u044B\u0448\u043D\u044F: ["russian"], \u0431\u0430\u0440\u044C\u0435\u0440: ["russian"], \u0431\u0430\u0441\u0441\u0435\u0439\u043D: ["russian"], \u0431\u0430\u0442\u0430\u0440\u0435\u044F: ["russian"], \u0431\u0430\u0448\u043C\u0430\u043A: ["russian"], \u0431\u0430\u0448\u043D\u044F: ["russian"], \u0431\u0435\u0434\u043D\u044B\u0439: ["russian"], \u0431\u0435\u0436\u0435\u043D\u0435\u0446: ["russian"], \u0431\u0435\u0437\u0434\u043D\u0430: ["russian"], \u0431\u0435\u043B\u043A\u0430: ["russian"], \u0431\u0435\u043B\u044B\u0439: ["russian"], \u0431\u0435\u043D\u0437\u0438\u043D: ["russian"], \u0431\u0435\u0440\u0435\u0433: ["russian"], \u0431\u0435\u0441\u0435\u0434\u0430: ["russian"], \u0431\u0435\u0448\u0435\u043D\u044B\u0439: ["russian"], \u0431\u0438\u043B\u0435\u0442: ["russian"], \u0431\u0438\u043D\u043E\u043A\u043B\u044C: ["russian"], \u0431\u0438\u0440\u0436\u0430: ["russian"], \u0431\u0438\u0442\u0432\u0430: ["russian"], \u0431\u043B\u0430\u0433\u043E: ["russian"], \u0431\u043B\u0435\u0441\u043A: ["russian"], \u0431\u043B\u0438\u0437\u043A\u0438\u0439: ["russian"], \u0431\u043B\u0438\u043D: ["russian"], \u0431\u043B\u043E\u043A: ["russian"], \u0431\u043B\u044E\u0434\u043E: ["russian"], \u0431\u043E\u0433\u0430\u0442\u044B\u0439: ["russian"], \u0431\u043E\u0434\u0440\u044B\u0439: ["russian"], \u0431\u043E\u0435\u0446: ["russian"], \u0431\u043E\u043A\u0430\u043B: ["russian"], \u0431\u043E\u043A\u043E\u0432\u043E\u0439: ["russian"], \u0431\u043E\u043A\u0441: ["russian"], \u0431\u043E\u043B\u0435\u0435: ["russian"], \u0431\u043E\u043B\u043E\u0442\u043E: ["russian"], \u0431\u043E\u043B\u0442\u0430\u0442\u044C: ["russian"], \u0431\u043E\u043B\u044C\u0448\u043E\u0439: ["russian"], \u0431\u043E\u043C\u0431\u0430: ["russian"], \u0431\u043E\u0440\u0442: ["russian"], \u0431\u043E\u0440\u044C\u0431\u0430: ["russian"], \u0431\u043E\u0441\u043E\u0439: ["russian"], \u0431\u043E\u0442\u0438\u043D\u043E\u043A: ["russian"], \u0431\u043E\u044F\u0442\u044C\u0441\u044F: ["russian"], \u0431\u0440\u0430\u043A: ["russian"], \u0431\u0440\u0430\u0442\u044C: ["russian"], \u0431\u0440\u0435\u0432\u043D\u043E: ["russian"], \u0431\u0440\u0435\u0434: ["russian"], \u0431\u0440\u0438\u0433\u0430\u0434\u0430: ["russian"], \u0431\u0440\u043E\u0434\u044F\u0433\u0430: ["russian"], \u0431\u0440\u043E\u043D\u044F: ["russian"], \u0431\u0440\u043E\u0441\u0438\u0442\u044C: ["russian"], \u0431\u0440\u044B\u0437\u0433\u0438: ["russian"], \u0431\u0440\u044E\u043A\u0438: ["russian"], \u0431\u0440\u044E\u0445\u043E: ["russian"], \u0431\u0443\u0433\u043E\u0440: ["russian"], \u0431\u0443\u0434\u043A\u0430: ["russian"], \u0431\u0443\u0434\u043D\u0438: ["russian"], \u0431\u0443\u0434\u0443\u0449\u0435\u0435: ["russian"], \u0431\u0443\u043A\u0432\u0430: ["russian"], \u0431\u0443\u043A\u0435\u0442: ["russian"], \u0431\u0443\u043B\u044C\u0432\u0430\u0440: ["russian"], \u0431\u0443\u043C\u0430\u0433\u0430: ["russian"], \u0431\u0443\u043D\u0442: ["russian"], \u0431\u0443\u0440\u043D\u044B\u0439: ["russian"], \u0431\u0443\u0440\u044F: ["russian"], \u0431\u0443\u0442\u044B\u043B\u043A\u0430: ["russian"], \u0431\u0443\u0445\u0442\u0430: ["russian"], \u0431\u044B\u0432\u0448\u0438\u0439: ["russian"], \u0431\u044B\u0441\u0442\u0440\u043E: ["russian"], \u0431\u044B\u0442\u043E\u0432\u043E\u0439: ["russian"], \u0431\u044B\u0442\u044C: ["russian"], \u0431\u044E\u0434\u0436\u0435\u0442: ["russian"], \u0431\u044E\u0440\u043E: ["russian"], \u0431\u044E\u0441\u0442: ["russian"], \u0432\u0430\u0433\u043E\u043D: ["russian"], \u0432\u0430\u0436\u043D\u044B\u0439: ["russian"], \u0432\u0430\u043A\u0446\u0438\u043D\u0430: ["russian"], \u0432\u0430\u043B\u0435\u043D\u043E\u043A: ["russian"], \u0432\u0430\u043B\u044C\u0441: ["russian"], \u0432\u0430\u043B\u044E\u0442\u0430: ["russian"], \u0432\u0430\u043D\u043D\u0430\u044F: ["russian"], \u0432\u0430\u0440\u0435\u043D\u044C\u0435: ["russian"], \u0432\u0430\u0440\u0438\u0430\u043D\u0442: ["russian"], \u0432\u0431\u043B\u0438\u0437\u0438: ["russian"], \u0432\u0432\u0435\u0440\u0445: ["russian"], \u0432\u0432\u043E\u0434\u0438\u0442\u044C: ["russian"], \u0432\u0434\u0430\u043B\u0438: ["russian"], \u0432\u0434\u0432\u043E\u0435: ["russian"], \u0432\u0434\u043E\u0432\u0430: ["russian"], \u0432\u0434\u043E\u043B\u044C: ["russian"], \u0432\u0434\u0440\u0443\u0433: ["russian"], \u0432\u0435\u0434\u0440\u043E: ["russian"], \u0432\u0435\u0434\u0443\u0449\u0438\u0439: ["russian"], \u0432\u0435\u0434\u044C\u043C\u0430: ["russian"], \u0432\u0435\u0436\u043B\u0438\u0432\u043E: ["russian"], \u0432\u0435\u0437\u0434\u0435: ["russian"], \u0432\u0435\u043A\u043E: ["russian"], \u0432\u0435\u043A\u0441\u0435\u043B\u044C: ["russian"], \u0432\u0435\u043B\u0435\u0442\u044C: ["russian"], \u0432\u0435\u043B\u0438\u043A\u0438\u0439: ["russian"], \u0432\u0435\u043D\u0435\u0446: ["russian"], \u0432\u0435\u043D\u0438\u043A: ["russian"], \u0432\u0435\u0440\u0430\u043D\u0434\u0430: ["russian"], \u0432\u0435\u0440\u0431\u043B\u044E\u0434: ["russian"], \u0432\u0435\u0440\u0438\u0442\u044C: ["russian"], \u0432\u0435\u0440\u043D\u044B\u0439: ["russian"], \u0432\u0435\u0440\u0441\u0438\u044F: ["russian"], \u0432\u0435\u0440\u0442\u0435\u0442\u044C: ["russian"], \u0432\u0435\u0440\u0445\u043D\u0438\u0439: ["russian"], \u0432\u0435\u0440\u0448\u0438\u043D\u0430: ["russian"], \u0432\u0435\u0441\u0435\u043B\u043E: ["russian"], \u0432\u0435\u0441\u043D\u0430: ["russian"], \u0432\u0435\u0441\u043E\u043C\u044B\u0439: ["russian"], \u0432\u0435\u0441\u0442\u0438: ["russian"], \u0432\u0435\u0441\u044C: ["russian"], \u0432\u0435\u0442\u0435\u0440\u0430\u043D: ["russian"], \u0432\u0435\u0442\u0445\u0438\u0439: ["russian"], \u0432\u0435\u0447\u0435\u0440: ["russian"], \u0432\u0435\u0447\u043D\u043E: ["russian"], \u0432\u0435\u0448\u0430\u043B\u043A\u0430: ["russian"], \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u043E: ["russian"], \u0432\u0437\u0430\u043C\u0435\u043D: ["russian"], \u0432\u0437\u0433\u043B\u044F\u0434: ["russian"], \u0432\u0437\u0434\u043E\u0445: ["russian"], \u0432\u0437\u043D\u043E\u0441: ["russian"], \u0432\u0437\u043E\u0439\u0442\u0438: ["russian"], \u0432\u0437\u043E\u0440: ["russian"], \u0432\u0437\u0440\u044B\u0432: ["russian"], \u0432\u0437\u044F\u0442\u044C: ["russian"], \u0432\u0438\u0434\u0435\u0442\u044C: ["russian"], \u0432\u0438\u0434\u0438\u043C\u043E: ["russian"], \u0432\u0438\u0437\u0433: ["russian"], \u0432\u0438\u0437\u0438\u0442: ["russian"], \u0432\u0438\u043B\u043A\u0430: ["russian"], \u0432\u0438\u043D\u0430: ["russian"], \u0432\u0438\u0440\u0443\u0441: ["russian"], \u0432\u0438\u0441\u043E\u043A: ["russian"], \u0432\u0438\u0442\u0430\u043C\u0438\u043D: ["russian"], \u0432\u0438\u0442\u0440\u0438\u043D\u0430: ["russian"], \u0432\u0438\u0445\u0440\u044C: ["russian"], \u0432\u0438\u0448\u043D\u044F: ["russian"], \u0432\u043A\u0443\u0441: ["russian"], \u0432\u043B\u0430\u0433\u0430: ["russian"], \u0432\u043B\u0430\u0434\u0435\u043B\u0435\u0446: ["russian"], \u0432\u043B\u0430\u0441\u0442\u044C: ["russian"], \u0432\u043B\u0435\u0432\u043E: ["russian"], \u0432\u043B\u0438\u044F\u043D\u0438\u0435: ["russian"], \u0432\u043B\u043E\u0436\u0438\u0442\u044C: ["russian"], \u0432\u043C\u0435\u0441\u0442\u0435: ["russian"], \u0432\u043D\u0435\u0448\u043D\u0438\u0439: ["russian"], \u0432\u043D\u0438\u043A\u0430\u0442\u044C: ["russian"], \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435: ["russian"], \u0432\u043D\u043E\u0432\u044C: ["russian"], \u0432\u043D\u0443\u043A: ["russian"], \u0432\u043D\u0443\u0442\u0440\u0438: ["russian"], \u0432\u043D\u0443\u0447\u043A\u0430: ["russian"], \u0432\u043D\u0443\u0448\u0430\u0442\u044C: ["russian"], \u0432\u043E\u0432\u043B\u0435\u0447\u044C: ["russian"], \u0432\u043E\u0432\u0440\u0435\u043C\u044F: ["russian"], \u0432\u043E\u0432\u0441\u044E: ["russian"], \u0432\u043E\u0434\u0430: ["russian"], \u0432\u043E\u0434\u043E\u0440\u043E\u0434: ["russian"], \u0432\u043E\u0434\u044F\u043D\u043E\u0439: ["russian"], \u0432\u043E\u0435\u0432\u0430\u0442\u044C: ["russian"], \u0432\u043E\u0437\u0432\u0440\u0430\u0442: ["russian"], \u0432\u043E\u0437\u0433\u043B\u0430\u0441: ["russian"], \u0432\u043E\u0437\u0434\u0443\u0445: ["russian"], \u0432\u043E\u0437\u0438\u0442\u044C: ["russian"], \u0432\u043E\u0437\u043B\u0435: ["russian"], \u0432\u043E\u0437\u043D\u044F: ["russian"], \u0432\u043E\u0437\u0440\u0430\u0441\u0442: ["russian"], \u0432\u043E\u0439\u043D\u0430: ["russian"], \u0432\u043E\u0439\u0441\u043A\u043E: ["russian"], \u0432\u043E\u043A\u0437\u0430\u043B: ["russian"], \u0432\u043E\u043B\u043E\u0441: ["russian"], \u0432\u043E\u043B\u0447\u0438\u0439: ["russian"], \u0432\u043E\u043B\u044C\u043D\u044B\u0439: ["russian"], \u0432\u043E\u043B\u044F: ["russian"], \u0432\u043E\u043E\u0431\u0449\u0435: ["russian"], \u0432\u043E\u043F\u043B\u044C: ["russian"], \u0432\u043E\u043F\u0440\u043E\u0441: ["russian"], \u0432\u043E\u0440\u043E\u0442\u0430: ["russian"], \u0432\u043E\u0441\u0435\u043C\u044C: ["russian"], \u0432\u043E\u0441\u0442\u043E\u043A: ["russian"], \u0432\u043F\u043B\u043E\u0442\u044C: ["russian"], \u0432\u043F\u043E\u043B\u043D\u0435: ["russian"], \u0432\u043F\u0440\u0430\u0432\u0435: ["russian"], \u0432\u043F\u0440\u0435\u0434\u044C: ["russian"], \u0432\u043F\u0440\u043E\u0447\u0435\u043C: ["russian"], \u0432\u0440\u0430\u0447: ["russian"], \u0432\u0440\u0435\u0434\u043D\u044B\u0439: ["russian"], \u0432\u0440\u0435\u043C\u044F: ["russian"], \u0432\u0440\u0443\u0447\u0438\u0442\u044C: ["russian"], \u0432\u0441\u0430\u0434\u043D\u0438\u043A: ["russian"], \u0432\u0441\u0435\u0433\u0434\u0430: ["russian"], \u0432\u0441\u043A\u043E\u0440\u0435: ["russian"], \u0432\u0441\u043A\u0440\u044B\u0442\u044C: ["russian"], \u0432\u0441\u043F\u043B\u0435\u0441\u043A: ["russian"], \u0432\u0441\u043F\u044B\u0448\u043A\u0430: ["russian"], \u0432\u0441\u0442\u0440\u0435\u0447\u0430: ["russian"], \u0432\u0441\u044E\u0434\u0443: ["russian"], \u0432\u0441\u044F\u043A\u0438\u0439: ["russian"], \u0432\u0442\u043E\u0440\u043E\u0439: ["russian"], \u0432\u0445\u043E\u0434: ["russian"], \u0432\u0447\u0435\u0440\u0430: ["russian"], \u0432\u044B\u0431\u043E\u0440: ["russian"], \u0432\u044B\u0432\u043E\u0434: ["russian"], \u0432\u044B\u0433\u043D\u0430\u0442\u044C: ["russian"], \u0432\u044B\u0434\u0430\u0442\u044C: ["russian"], \u0432\u044B\u0435\u0445\u0430\u0442\u044C: ["russian"], \u0432\u044B\u0437\u043E\u0432: ["russian"], \u0432\u044B\u0439\u0442\u0438: ["russian"], \u0432\u044B\u043A\u0443\u043F: ["russian"], \u0432\u044B\u043B\u0435\u0437\u0442\u0438: ["russian"], \u0432\u044B\u043C\u044B\u0442\u044C: ["russian"], \u0432\u044B\u043F\u0430\u0441\u0442\u044C: ["russian"], \u0432\u044B\u043F\u0438\u0442\u044C: ["russian"], \u0432\u044B\u043F\u043B\u0430\u0442\u0430: ["russian"], \u0432\u044B\u043F\u0443\u0441\u043A: ["russian"], \u0432\u044B\u0440\u0430\u0441\u0442\u0438: ["russian"], \u0432\u044B\u0440\u0443\u0447\u043A\u0430: ["russian"], \u0432\u044B\u0441\u043B\u0430\u0442\u044C: ["russian"], \u0432\u044B\u0441\u043E\u043A\u0438\u0439: ["russian"], \u0432\u044B\u0441\u0442\u0430\u0432\u043A\u0430: ["russian"], \u0432\u044B\u0448\u043A\u0430: ["russian"], \u0432\u044F\u0437\u0430\u0442\u044C: ["russian"], \u0432\u044F\u043B\u044B\u0439: ["russian"], \u0433\u0430\u0437\u0435\u0442\u0430: ["russian"], \u0433\u0430\u0437\u043E\u0432\u044B\u0439: ["russian"], \u0433\u0430\u043B\u0435\u0440\u0435\u044F: ["russian"], \u0433\u0430\u043B\u0441\u0442\u0443\u043A: ["russian"], \u0433\u0430\u043C\u043C\u0430: ["russian"], \u0433\u0430\u0440\u0430\u043D\u0442\u0438\u044F: ["russian"], \u0433\u0430\u0440\u043C\u043E\u043D\u0438\u044F: ["russian"], \u0433\u0430\u0440\u043D\u0438\u0437\u043E\u043D: ["russian"], \u0433\u0430\u0441\u0442\u0440\u043E\u043B\u0438: ["russian"], \u0433\u0432\u0430\u0440\u0434\u0438\u044F: ["russian"], \u0433\u0432\u043E\u0437\u0434\u044C: ["russian"], \u0433\u0435\u043A\u0442\u0430\u0440: ["russian"], \u0433\u0435\u043D\u0435\u0440\u0430\u043B: ["russian"], \u0433\u0435\u043D\u0438\u0439: ["russian"], \u0433\u0435\u043D\u043E\u043C: ["russian"], \u0433\u0435\u043E\u043B\u043E\u0433: ["russian"], \u0433\u0435\u0440\u0431: ["russian"], \u0433\u0435\u0440\u043E\u0439: ["russian"], \u0433\u0438\u0431\u043A\u0438\u0439: ["russian"], \u0433\u0438\u0433\u0430\u043D\u0442: ["russian"], \u0433\u0438\u043C\u043D: ["russian"], \u0433\u0438\u043F\u043E\u0442\u0435\u0437\u0430: ["russian"], \u0433\u0438\u0442\u0430\u0440\u0430: ["russian"], \u0433\u043B\u0430\u0432\u043D\u044B\u0439: ["russian"], \u0433\u043B\u0430\u0433\u043E\u043B: ["russian"], \u0433\u043B\u0430\u0434\u0438\u0442\u044C: ["russian"], \u0433\u043B\u0430\u0437: ["russian"], \u0433\u043B\u0438\u043D\u0430: ["russian"], \u0433\u043B\u043E\u0442\u043E\u043A: ["russian"], \u0433\u043B\u0443\u0431\u043E\u043A\u0438\u0439: ["russian"], \u0433\u043B\u0443\u043F\u044B\u0439: ["russian"], \u0433\u043B\u0443\u0445\u043E\u0439: ["russian"], \u0433\u043B\u044B\u0431\u0430: ["russian"], \u0433\u043B\u044F\u0434\u0435\u0442\u044C: ["russian"], \u0433\u043D\u0435\u0432: ["russian"], \u0433\u043D\u0435\u0437\u0434\u043E: ["russian"], \u0433\u043D\u0438\u043B\u043E\u0439: ["russian"], \u0433\u043E\u0434\u043E\u0432\u043E\u0439: ["russian"], \u0433\u043E\u043B\u043E\u0432\u0430: ["russian"], \u0433\u043E\u043B\u0443\u0431\u043E\u0439: ["russian"], \u0433\u043E\u043B\u044B\u0439: ["russian"], \u0433\u043E\u043D\u043E\u0440\u0430\u0440: ["russian"], \u0433\u043E\u0440\u0434\u043E\u0441\u0442\u044C: ["russian"], \u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442: ["russian"], \u0433\u043E\u0440\u043B\u043E: ["russian"], \u0433\u043E\u0440\u043D\u044B\u0439: ["russian"], \u0433\u043E\u0440\u043E\u0434: ["russian"], \u0433\u043E\u0440\u0448\u043E\u043A: ["russian"], \u0433\u043E\u0440\u044C\u043A\u0438\u0439: ["russian"], \u0433\u043E\u0440\u044E\u0447\u0435\u0435: ["russian"], \u0433\u043E\u0440\u044F\u0447\u0438\u0439: ["russian"], \u0433\u043E\u0442\u043E\u0432\u044B\u0439: ["russian"], \u0433\u0440\u0430\u0434\u0443\u0441: ["russian"], \u0433\u0440\u0430\u043C\u043C: ["russian"], \u0433\u0440\u0430\u043D\u0438\u0446\u0430: ["russian"], \u0433\u0440\u0430\u0444: ["russian"], \u0433\u0440\u0435\u0431\u0435\u043D\u044C: ["russian"], \u0433\u0440\u0438\u0431: ["russian"], \u0433\u0440\u0438\u043C\u0430\u0441\u0430: ["russian"], \u0433\u0440\u043E\u0437\u0438\u0442\u044C: ["russian"], \u0433\u0440\u043E\u0445\u043E\u0442: ["russian"], \u0433\u0440\u043E\u0448: ["russian"], \u0433\u0440\u0443\u0431\u044B\u0439: ["russian"], \u0433\u0440\u0443\u0434\u044C: ["russian"], \u0433\u0440\u0443\u0437: ["russian"], \u0433\u0440\u0443\u043D\u0442: ["russian"], \u0433\u0440\u0443\u043F\u043F\u0430: ["russian"], \u0433\u0440\u0443\u0448\u0430: ["russian"], \u0433\u0440\u044F\u0437\u043D\u044B\u0439: ["russian"], \u0433\u0443\u0431\u0430: ["russian"], \u0433\u0443\u0434\u043E\u043A: ["russian"], \u0433\u0443\u043B\u043A\u0438\u0439: ["russian"], \u0433\u0443\u043B\u044F\u0442\u044C: ["russian"], \u0433\u0443\u0441\u0435\u043D\u0438\u0446\u0430: ["russian"], \u0433\u0443\u0441\u0442\u043E: ["russian"], \u0433\u0443\u0441\u044C: ["russian"], \u0434\u0430\u0432\u043B\u0435\u043D\u0438\u0435: ["russian"], \u0434\u0430\u0432\u043D\u043E: ["russian"], \u0434\u0430\u0436\u0435: ["russian"], \u0434\u0430\u043B\u044C\u043D\u0438\u0439: ["russian"], \u0434\u0430\u043D\u043D\u044B\u0439: ["russian"], \u0434\u0430\u0440\u0438\u0442\u044C: ["russian"], \u0434\u0430\u0442\u0447\u0438\u043A: ["russian"], \u0434\u0430\u0442\u044C: ["russian"], \u0434\u0430\u0447\u0430: ["russian"], \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C: ["russian"], \u0434\u0432\u0430\u0436\u0434\u044B: ["russian"], \u0434\u0432\u0435\u0440\u044C: ["russian"], \u0434\u0432\u0438\u0433\u0430\u0442\u044C: ["russian"], \u0434\u0432\u0438\u0436\u0435\u043D\u0438\u0435: ["russian"], \u0434\u0432\u043E\u0439\u043D\u043E\u0439: ["russian"], \u0434\u0432\u043E\u0440: ["russian"], \u0434\u0435\u0431\u044E\u0442: ["russian"], \u0434\u0435\u0432\u044F\u0442\u044B\u0439: ["russian"], \u0434\u0435\u0436\u0443\u0440\u043D\u044B\u0439: ["russian"], \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435: ["russian"], \u0434\u0435\u043A\u0430\u0431\u0440\u044C: ["russian"], \u0434\u0435\u043B\u0435\u043D\u0438\u0435: ["russian"], \u0434\u0435\u043B\u043E: ["russian"], \u0434\u0435\u043B\u044C\u0444\u0438\u043D: ["russian"], \u0434\u0435\u043D\u044C: ["russian"], \u0434\u0435\u0440\u0435\u0432\u043E: ["russian"], \u0434\u0435\u0440\u0436\u0430\u0442\u044C: ["russian"], \u0434\u0435\u0440\u0437\u043A\u0438\u0439: ["russian"], \u0434\u0435\u0441\u044F\u0442\u044C: ["russian"], \u0434\u0435\u0442\u0430\u043B\u044C: ["russian"], \u0434\u0435\u0442\u0441\u043A\u0438\u0439: ["russian"], \u0434\u0435\u0444\u0435\u043A\u0442: ["russian"], \u0434\u0435\u0444\u0438\u0446\u0438\u0442: ["russian"], \u0434\u0435\u044F\u0442\u0435\u043B\u044C: ["russian"], \u0434\u0436\u0430\u0437: ["russian"], \u0434\u0436\u0438\u043D\u0441\u044B: ["russian"], \u0434\u0436\u0443\u043D\u0433\u043B\u0438: ["russian"], \u0434\u0438\u0430\u0433\u043D\u043E\u0437: ["russian"], \u0434\u0438\u0430\u043B\u043E\u0433: ["russian"], \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D: ["russian"], \u0434\u0438\u0432\u0430\u043D: ["russian"], \u0434\u0438\u0432\u0438\u0437\u0438\u044F: ["russian"], \u0434\u0438\u0432\u043D\u044B\u0439: ["russian"], \u0434\u0438\u0435\u0442\u0430: ["russian"], \u0434\u0438\u0437\u0430\u0439\u043D: ["russian"], \u0434\u0438\u043A\u0430\u0440\u044C: ["russian"], \u0434\u0438\u043B\u0435\u0440: ["russian"], \u0434\u0438\u043D\u0430\u043C\u0438\u043A\u0430: ["russian"], \u0434\u0438\u043F\u043B\u043E\u043C: ["russian"], \u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440: ["russian"], \u0434\u0438\u0442\u044F: ["russian"], \u0434\u043B\u0438\u043D\u043D\u044B\u0439: ["russian"], \u0434\u043D\u0435\u0432\u043D\u0438\u043A: ["russian"], \u0434\u043E\u0431\u0440\u044B\u0439: ["russian"], \u0434\u043E\u0431\u044B\u0447\u0430: ["russian"], \u0434\u043E\u0432\u0435\u0440\u0438\u0435: ["russian"], \u0434\u043E\u0433\u0430\u0434\u043A\u0430: ["russian"], \u0434\u043E\u0433\u043D\u0430\u0442\u044C: ["russian"], \u0434\u043E\u0436\u0434\u044C: ["russian"], \u0434\u043E\u043A\u043B\u0430\u0434: ["russian"], \u0434\u043E\u043A\u0442\u043E\u0440: ["russian"], \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442: ["russian"], \u0434\u043E\u043B\u0433\u043E: ["russian"], \u0434\u043E\u043B\u0436\u0435\u043D: ["russian"], \u0434\u043E\u043B\u0438\u043D\u0430: ["russian"], \u0434\u043E\u043D\u043E\u0441: ["russian"], \u0434\u043E\u0440\u043E\u0433\u0430: ["russian"], \u0434\u043E\u0441\u0430\u0434\u0430: ["russian"], \u0434\u043E\u0441\u043A\u0430: ["russian"], \u0434\u043E\u0441\u0442\u0430\u0442\u044C: ["russian"], \u0434\u043E\u0441\u0443\u0433: ["russian"], \u0434\u043E\u0445\u043E\u0434: ["russian"], \u0434\u043E\u0446\u0435\u043D\u0442: ["russian"], \u0434\u043E\u0449\u0430\u0442\u044B\u0439: ["russian"], \u0434\u0440\u0430\u043A\u0430: ["russian"], \u0434\u0440\u0435\u0432\u043D\u0438\u0439: ["russian"], \u0434\u0440\u0435\u043C\u0430\u0442\u044C: ["russian"], \u0434\u0440\u043E\u0431\u043D\u044B\u0439: ["russian"], \u0434\u0440\u043E\u0432\u0430: ["russian"], \u0434\u0440\u043E\u0436\u0430\u0442\u044C: ["russian"], \u0434\u0440\u0443\u0433\u043E\u0439: ["russian"], \u0434\u0440\u0443\u0436\u0431\u0430: ["russian"], \u0434\u0443\u0431\u043E\u0432\u044B\u0439: ["russian"], \u0434\u0443\u0433\u0430: ["russian"], \u0434\u0443\u043C\u0430\u0442\u044C: ["russian"], \u0434\u0443\u0440\u043D\u043E\u0439: ["russian"], \u0434\u0443\u0445\u0438: ["russian"], \u0434\u0443\u0448\u043D\u044B\u0439: ["russian"], \u0434\u0443\u044D\u043B\u044C: ["russian"], \u0434\u0443\u044D\u0442: ["russian"], \u0434\u044B\u0440\u0430: ["russian"], \u0434\u044B\u0445\u0430\u043D\u0438\u0435: ["russian"], \u0434\u044E\u0436\u0438\u043D\u0430: ["russian"], \u0434\u044F\u0434\u044F: ["russian"], \u0435\u0434\u0432\u0430: ["russian"], \u0435\u0434\u0438\u043D\u044B\u0439: ["russian"], \u0435\u0440\u0443\u043D\u0434\u0430: ["russian"], \u0435\u0441\u043B\u0438: ["russian"], \u0435\u0445\u0430\u0442\u044C: ["russian"], \u0436\u0430\u0434\u043D\u044B\u0439: ["russian"], \u0436\u0430\u0436\u0434\u0430: ["russian"], \u0436\u0430\u043B\u0435\u0442\u044C: ["russian"], \u0436\u0430\u043B\u043E\u0431\u0430: ["russian"], \u0436\u0430\u043D\u0440: ["russian"], \u0436\u0430\u0440\u0435\u043D\u044B\u0439: ["russian"], \u0436\u0430\u0440\u043A\u0438\u0439: ["russian"], \u0436\u0433\u0443\u0447\u0438\u0439: ["russian"], \u0436\u0435\u0432\u0430\u0442\u044C: ["russian"], \u0436\u0435\u043B\u0430\u043D\u0438\u0435: ["russian"], \u0436\u0435\u043B\u0443\u0434\u043E\u043A: ["russian"], \u0436\u0435\u043D\u0430: ["russian"], \u0436\u0435\u043D\u0449\u0438\u043D\u0430: ["russian"], \u0436\u0435\u0440\u0442\u0432\u0430: ["russian"], \u0436\u0435\u0441\u0442: ["russian"], \u0436\u0438\u0434\u043A\u043E\u0441\u0442\u044C: ["russian"], \u0436\u0438\u0442\u0435\u043B\u044C: ["russian"], \u0436\u0438\u0442\u044C: ["russian"], \u0436\u0440\u0435\u0446: ["russian"], \u0436\u0443\u043B\u0438\u043A: ["russian"], \u0436\u0443\u0440\u043D\u0430\u043B: ["russian"], \u0436\u0443\u0442\u043A\u0438\u0439: ["russian"], \u0437\u0430\u0431\u0440\u0430\u0442\u044C: ["russian"], \u0437\u0430\u0431\u044B\u0442\u044C: ["russian"], \u0437\u0430\u0432\u0435\u0441\u0442\u0438: ["russian"], \u0437\u0430\u0432\u043E\u0434: ["russian"], \u0437\u0430\u0432\u0442\u0440\u0430: ["russian"], \u0437\u0430\u0433\u0430\u0434\u043A\u0430: ["russian"], \u0437\u0430\u0433\u043D\u0430\u0442\u044C: ["russian"], \u0437\u0430\u0433\u043E\u0432\u043E\u0440: ["russian"], \u0437\u0430\u0434\u0430\u0447\u0430: ["russian"], \u0437\u0430\u0434\u0435\u0442\u044C: ["russian"], \u0437\u0430\u0434\u043D\u0438\u0439: ["russian"], \u0437\u0430\u0434\u043E\u043B\u0433\u043E: ["russian"], \u0437\u0430\u0435\u0445\u0430\u0442\u044C: ["russian"], \u0437\u0430\u043A\u0430\u0437: ["russian"], \u0437\u0430\u043A\u043E\u043D: ["russian"], \u0437\u0430\u043A\u0440\u044B\u0442\u044C: ["russian"], \u0437\u0430\u043A\u0443\u0441\u043A\u0430: ["russian"], \u0437\u0430\u043B\u0435\u0437\u0442\u044C: ["russian"], \u0437\u0430\u043B\u0438\u0442\u044C: ["russian"], \u0437\u0430\u043B\u043F: ["russian"], \u0437\u0430\u043C\u043E\u043A: ["russian"], \u0437\u0430\u043C\u0443\u0436: ["russian"], \u0437\u0430\u043C\u044B\u0441\u0435\u043B: ["russian"], \u0437\u0430\u043D\u0430\u0432\u0435\u0441: ["russian"], \u0437\u0430\u043D\u043E\u0432\u043E: ["russian"], \u0437\u0430\u043D\u044F\u0442\u044C: ["russian"], \u0437\u0430\u043E\u0434\u043D\u043E: ["russian"], \u0437\u0430\u043F\u0438\u0441\u044C: ["russian"], \u0437\u0430\u043F\u0440\u043E\u0441: ["russian"], \u0437\u0430\u043F\u0443\u0441\u043A: ["russian"], \u0437\u0430\u043F\u044F\u0441\u0442\u044C\u0435: ["russian"], \u0437\u0430\u0440\u0430\u043D\u0435\u0435: ["russian"], \u0437\u0430\u0440\u043E\u0441\u043B\u044C: ["russian"], \u0437\u0430\u0440\u043F\u043B\u0430\u0442\u0430: ["russian"], \u0437\u0430\u0440\u044F: ["russian"], \u0437\u0430\u0441\u0430\u0434\u0430: ["russian"], \u0437\u0430\u0441\u043B\u0443\u0433\u0430: ["russian"], \u0437\u0430\u0441\u043D\u0443\u0442\u044C: ["russian"], \u0437\u0430\u0441\u0442\u0430\u0442\u044C: ["russian"], \u0437\u0430\u0442\u0432\u043E\u0440: ["russian"], \u0437\u0430\u0442\u0435\u044F\u0442\u044C: ["russian"], \u0437\u0430\u0442\u0440\u0430\u0442\u0430: ["russian"], \u0437\u0430\u0442\u044B\u043B\u043E\u043A: ["russian"], \u0437\u0430\u0445\u0432\u0430\u0442: ["russian"], \u0437\u0430\u0447\u0435\u043C: ["russian"], \u0437\u0430\u0449\u0438\u0442\u0430: ["russian"], \u0437\u0430\u044F\u0432\u0438\u0442\u044C: ["russian"], \u0437\u0430\u044F\u0446: ["russian"], \u0437\u0432\u0435\u0437\u0434\u0430: ["russian"], \u0437\u0432\u0435\u043D\u043E: ["russian"], \u0437\u0432\u043E\u043D\u0438\u0442\u044C: ["russian"], \u0437\u0434\u0435\u0441\u044C: ["russian"], \u0437\u0435\u043B\u0435\u043D\u044C: ["russian"], \u0437\u0435\u043C\u043B\u044F: ["russian"], \u0437\u0435\u0440\u043A\u0430\u043B\u043E: ["russian"], \u0437\u0435\u0440\u043D\u043E: ["russian"], \u0437\u0438\u043C\u0430: ["russian"], \u0437\u043B\u043E\u0439: ["russian"], \u0437\u043C\u0435\u044F: ["russian"], \u0437\u043D\u0430\u043C\u044F: ["russian"], \u0437\u043D\u0430\u043D\u0438\u0435: ["russian"], \u0437\u043D\u0430\u0447\u0438\u0442: ["russian"], \u0437\u043E\u043B\u043E\u0442\u043E\u0439: ["russian"], \u0437\u043E\u043D\u0430: ["russian"], \u0437\u043E\u043D\u0442\u0438\u043A: ["russian"], \u0437\u043E\u043E\u043F\u0430\u0440\u043A: ["russian"], \u0437\u0440\u0430\u0447\u043E\u043A: ["russian"], \u0437\u0440\u0435\u043D\u0438\u0435: ["russian"], \u0437\u0440\u0438\u0442\u0435\u043B\u044C: ["russian"], \u0437\u0443\u0431\u043D\u043E\u0439: ["russian"], \u0437\u0443\u0431\u0440: ["russian"], \u0438\u0433\u043B\u0430: ["russian"], \u0438\u0434\u0435\u0430\u043B: ["russian"], \u0438\u0434\u0435\u043E\u043B\u043E\u0433: ["russian"], \u0438\u0434\u0435\u044F: ["russian"], \u0438\u0434\u043E\u043B: ["russian"], \u0438\u0434\u0442\u0438: ["russian"], \u0438\u0437\u0431\u0430: ["russian"], \u0438\u0437\u0431\u0438\u0442\u044C: ["russian"], \u0438\u0437\u0431\u0440\u0430\u0442\u044C: ["russian"], \u0438\u0437\u0431\u044B\u0442\u043E\u043A: ["russian"], \u0438\u0437\u0432\u043B\u0435\u0447\u044C: ["russian"], \u0438\u0437\u0432\u043D\u0435: ["russian"], \u0438\u0437\u0433\u0438\u0431: ["russian"], \u0438\u0437\u0433\u043D\u0430\u0442\u044C: ["russian"], \u0438\u0437\u0434\u0430\u043D\u0438\u0435: ["russian"], \u0438\u0437\u0434\u0435\u043B\u0438\u0435: ["russian"], \u0438\u0437\u043D\u0443\u0442\u0440\u0438: ["russian"], \u0438\u0437\u043E\u0431\u0438\u043B\u0438\u0435: ["russian"], \u0438\u0437\u043E\u043B\u044F\u0446\u0438\u044F: ["russian"], \u0438\u0437\u0440\u0435\u0434\u043A\u0430: ["russian"], \u0438\u0437\u0440\u044F\u0434\u043D\u043E: ["russian"], \u0438\u0437\u0443\u0447\u0435\u043D\u0438\u0435: ["russian"], \u0438\u0437\u044A\u044F\u0442\u044C: ["russian"], \u0438\u0437\u044F\u0449\u043D\u044B\u0439: ["russian"], \u0438\u043A\u043E\u043D\u0430: ["russian"], \u0438\u043A\u0440\u0430: ["russian"], \u0438\u043B\u043B\u044E\u0437\u0438\u044F: ["russian"], \u0438\u043C\u0435\u043D\u043D\u043E: ["russian"], \u0438\u043C\u0435\u0442\u044C: ["russian"], \u0438\u043C\u0438\u0434\u0436: ["russian"], \u0438\u043C\u043F\u0435\u0440\u0438\u044F: ["russian"], \u0438\u043C\u043F\u0443\u043B\u044C\u0441: ["russian"], \u0438\u043D\u0430\u0447\u0435: ["russian"], \u0438\u043D\u0432\u0430\u043B\u0438\u0434: ["russian"], \u0438\u043D\u0434\u0435\u043A\u0441: ["russian"], \u0438\u043D\u0434\u0438\u0432\u0438\u0434: ["russian"], \u0438\u043D\u0435\u0440\u0446\u0438\u044F: ["russian"], \u0438\u043D\u0436\u0435\u043D\u0435\u0440: ["russian"], \u0438\u043D\u043E\u0433\u0434\u0430: ["russian"], \u0438\u043D\u043E\u0439: ["russian"], \u0438\u043D\u0441\u0442\u0438\u0442\u0443\u0442: ["russian"], \u0438\u043D\u0442\u0435\u0440\u0435\u0441: ["russian"], \u0438\u043D\u0442\u0440\u0438\u0433\u0430: ["russian"], \u0438\u043D\u0442\u0443\u0438\u0446\u0438\u044F: ["russian"], \u0438\u043D\u0444\u0430\u0440\u043A\u0442: ["russian"], \u0438\u043D\u0446\u0438\u0434\u0435\u043D\u0442: ["russian"], \u0438\u0440\u043E\u043D\u0438\u044F: ["russian"], \u0438\u0441\u043A\u0430\u0442\u044C: ["russian"], \u0438\u0441\u043F\u0443\u0433: ["russian"], \u0438\u0441\u0442\u043E\u0440\u0438\u044F: ["russian"], \u0438\u0442\u043E\u0433: ["russian"], \u0438\u044E\u043D\u044C: ["russian"], \u043A\u0430\u0431\u0435\u043B\u044C: ["russian"], \u043A\u0430\u0431\u0438\u043D\u0435\u0442: ["russian"], \u043A\u0430\u0431\u043B\u0443\u043A: ["russian"], \u043A\u0430\u0432\u0430\u043B\u0435\u0440: ["russian"], \u043A\u0430\u0434\u0440: ["russian"], \u043A\u0430\u0436\u0434\u044B\u0439: ["russian"], \u043A\u0430\u0436\u0435\u0442\u0441\u044F: ["russian"], \u043A\u0430\u0437\u0438\u043D\u043E: ["russian"], \u043A\u0430\u043B\u0438\u0442\u043A\u0430: ["russian"], \u043A\u0430\u043C\u0435\u043D\u044C: ["russian"], \u043A\u0430\u043C\u0438\u043D: ["russian"], \u043A\u0430\u043D\u0430\u043B: ["russian"], \u043A\u0430\u043D\u0434\u0438\u0434\u0430\u0442: ["russian"], \u043A\u0430\u043D\u0438\u043A\u0443\u043B\u044B: ["russian"], \u043A\u0430\u043D\u043E\u043D: ["russian"], \u043A\u0430\u043F\u0438\u0442\u0430\u043D: ["russian"], \u043A\u0430\u043F\u043B\u044F: ["russian"], \u043A\u0430\u043F\u043E\u0442: ["russian"], \u043A\u0430\u043F\u0443\u0441\u0442\u0430: ["russian"], \u043A\u0430\u0440\u0430\u043D\u0434\u0430\u0448: ["russian"], \u043A\u0430\u0440\u0435\u0442\u0430: ["russian"], \u043A\u0430\u0440\u043A\u0430\u0441: ["russian"], \u043A\u0430\u0440\u043C\u0430\u043D: ["russian"], \u043A\u0430\u0440\u0442\u0438\u043D\u0430: ["russian"], \u043A\u0430\u0440\u044C\u0435\u0440\u0430: ["russian"], \u043A\u0430\u0441\u043A\u0430: ["russian"], \u043A\u0430\u0441\u0441\u0435\u0442\u0430: ["russian"], \u043A\u0430\u0441\u0442\u0440\u044E\u043B\u044F: ["russian"], \u043A\u0430\u0442\u0430\u043B\u043E\u0433: ["russian"], \u043A\u0430\u0442\u0435\u0440: ["russian"], \u043A\u0430\u0442\u043E\u043A: ["russian"], \u043A\u0430\u0442\u0443\u0448\u043A\u0430: ["russian"], \u043A\u0430\u0444\u0435\u0434\u0440\u0430: ["russian"], \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u043E: ["russian"], \u043A\u0430\u0448\u0430: ["russian"], \u043A\u0430\u0448\u043B\u044F\u0442\u044C: ["russian"], \u043A\u0430\u044E\u0442\u0430: ["russian"], \u043A\u0432\u0430\u0434\u0440\u0430\u0442: ["russian"], \u043A\u0432\u0430\u0440\u0442\u0438\u0440\u0430: ["russian"], \u043A\u0432\u043E\u0442\u0430: ["russian"], \u043A\u0435\u043F\u043A\u0430: ["russian"], \u043A\u0438\u0432\u043D\u0443\u0442\u044C: ["russian"], \u043A\u0438\u043B\u043E\u043C\u0435\u0442\u0440: ["russian"], \u043A\u0438\u043D\u043E: ["russian"], \u043A\u0438\u043E\u0441\u043A: ["russian"], \u043A\u0438\u043F\u044F\u0442\u043E\u043A: ["russian"], \u043A\u0438\u0440\u043F\u0438\u0447: ["russian"], \u043A\u0438\u0441\u043B\u043E\u0442\u0430: ["russian"], \u043A\u0438\u0441\u0442\u044C: ["russian"], \u043A\u043B\u0430\u0432\u0438\u0448\u0430: ["russian"], \u043A\u043B\u0430\u043F\u0430\u043D: ["russian"], \u043A\u043B\u0430\u0441\u0441: ["russian"], \u043A\u043B\u0435\u0439: ["russian"], \u043A\u043B\u0435\u0442\u043A\u0430: ["russian"], \u043A\u043B\u0438\u0435\u043D\u0442: ["russian"], \u043A\u043B\u0438\u043C\u0430\u0442: ["russian"], \u043A\u043B\u0438\u043D\u0438\u043A\u0430: ["russian"], \u043A\u043B\u0438\u0447\u043A\u0430: ["russian"], \u043A\u043B\u043E\u0443\u043D: ["russian"], \u043A\u043B\u043E\u0447\u043E\u043A: ["russian"], \u043A\u043B\u0443\u0431: ["russian"], \u043A\u043B\u0443\u043C\u0431\u0430: ["russian"], \u043A\u043B\u044E\u0447: ["russian"], \u043A\u043D\u0438\u0433\u0430: ["russian"], \u043A\u043D\u043E\u043F\u043A\u0430: ["russian"], \u043A\u043D\u0443\u0442: ["russian"], \u043A\u043D\u044F\u0433\u0438\u043D\u044F: ["russian"], \u043A\u043D\u044F\u0437\u044C: ["russian"], \u043A\u043E\u0431\u0443\u0440\u0430: ["russian"], \u043A\u043E\u0433\u0434\u0430: ["russian"], \u043A\u043E\u0434\u0435\u043A\u0441: ["russian"], \u043A\u043E\u0436\u0430: ["russian"], \u043A\u043E\u043A\u0442\u0435\u0439\u043B\u044C: ["russian"], \u043A\u043E\u043B\u0435\u043D\u043E: ["russian"], \u043A\u043E\u043B\u043B\u0435\u0433\u0430: ["russian"], \u043A\u043E\u043B\u043E\u043D\u043D\u0430: ["russian"], \u043A\u043E\u043B\u043F\u0430\u043A: ["russian"], \u043A\u043E\u043B\u044C\u0446\u043E: ["russian"], \u043A\u043E\u043B\u044E\u0447\u0438\u0439: ["russian"], \u043A\u043E\u043B\u044F\u0441\u043A\u0430: ["russian"], \u043A\u043E\u043C\u0430\u043D\u0434\u0430: ["russian"], \u043A\u043E\u043C\u0435\u0434\u0438\u044F: ["russian"], \u043A\u043E\u043C\u0438\u0441\u0441\u0438\u044F: ["russian"], \u043A\u043E\u043C\u043C\u0443\u043D\u0430: ["russian"], \u043A\u043E\u043C\u043D\u0430\u0442\u0430: ["russian"], \u043A\u043E\u043C\u043E\u043A: ["russian"], \u043A\u043E\u043C\u043F\u0430\u043D\u0438\u044F: ["russian"], \u043A\u043E\u043C\u0444\u043E\u0440\u0442: ["russian"], \u043A\u043E\u043D\u0432\u0435\u0439\u0435\u0440: ["russian"], \u043A\u043E\u043D\u0433\u0440\u0435\u0441\u0441: ["russian"], \u043A\u043E\u043D\u0435\u0447\u043D\u043E: ["russian"], \u043A\u043E\u043D\u043A\u0443\u0440\u0441: ["russian"], \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u044C: ["russian"], \u043A\u043E\u043D\u0446\u0435\u0440\u0442: ["russian"], \u043A\u043E\u043D\u044C: ["russian"], \u043A\u043E\u043D\u044E\u0448\u043D\u044F: ["russian"], \u043A\u043E\u043F\u0430\u0442\u044C: ["russian"], \u043A\u043E\u043F\u0435\u0439\u043A\u0430: ["russian"], \u043A\u043E\u043F\u044B\u0442\u043E: ["russian"], \u043A\u043E\u0440\u0430\u0431\u043B\u044C: ["russian"], \u043A\u043E\u0440\u0435\u043D\u044C: ["russian"], \u043A\u043E\u0440\u0437\u0438\u043D\u0430: ["russian"], \u043A\u043E\u0440\u0438\u0434\u043E\u0440: ["russian"], \u043A\u043E\u0440\u043C\u0438\u0442\u044C: ["russian"], \u043A\u043E\u0440\u043F\u0443\u0441: ["russian"], \u043A\u043E\u0441\u043C\u043E\u0441: ["russian"], \u043A\u043E\u0441\u0442\u044E\u043C: ["russian"], \u043A\u043E\u0441\u044F\u043A: ["russian"], \u043A\u043E\u0442\u0435\u043B: ["russian"], \u043A\u043E\u0442\u043B\u0435\u0442\u0430: ["russian"], \u043A\u043E\u0442\u043E\u0440\u044B\u0439: ["russian"], \u043A\u043E\u0442\u0442\u0435\u0434\u0436: ["russian"], \u043A\u043E\u0444\u0435: ["russian"], \u043A\u043E\u0444\u0442\u0430: ["russian"], \u043A\u043E\u0448\u043A\u0430: ["russian"], \u043A\u0440\u0430\u0436\u0430: ["russian"], \u043A\u0440\u0430\u0439: ["russian"], \u043A\u0440\u0430\u0441\u043D\u044B\u0439: ["russian"], \u043A\u0440\u0430\u0442\u043A\u0438\u0439: ["russian"], \u043A\u0440\u0435\u0434\u0438\u0442: ["russian"], \u043A\u0440\u0435\u043C: ["russian"], \u043A\u0440\u0435\u043F\u043A\u0438\u0439: ["russian"], \u043A\u0440\u0435\u0441\u043B\u043E: ["russian"], \u043A\u0440\u0438\u0432\u043E\u0439: ["russian"], \u043A\u0440\u0438\u0437\u0438\u0441: ["russian"], \u043A\u0440\u0438\u0441\u0442\u0430\u043B\u043B: ["russian"], \u043A\u0440\u0438\u0442\u0435\u0440\u0438\u0439: ["russian"], \u043A\u0440\u0438\u0447\u0430\u0442\u044C: ["russian"], \u043A\u0440\u043E\u0432\u044C: ["russian"], \u043A\u0440\u043E\u043A\u043E\u0434\u0438\u043B: ["russian"], \u043A\u0440\u043E\u043B\u0438\u043A: ["russian"], \u043A\u0440\u043E\u043C\u0435: ["russian"], \u043A\u0440\u043E\u043D\u0430: ["russian"], \u043A\u0440\u0443\u0433: ["russian"], \u043A\u0440\u0443\u0436\u043A\u0430: ["russian"], \u043A\u0440\u0443\u043F\u043D\u044B\u0439: ["russian"], \u043A\u0440\u0443\u0442\u043E\u0439: ["russian"], \u043A\u0440\u0443\u0448\u0435\u043D\u0438\u0435: ["russian"], \u043A\u0440\u044B\u043B\u043E: ["russian"], \u043A\u0440\u044B\u0448\u0430: ["russian"], \u043A\u0440\u044E\u0447\u043E\u043A: ["russian"], \u043A\u0441\u0442\u0430\u0442\u0438: ["russian"], \u043A\u0443\u0431\u0438\u043A: ["russian"], \u043A\u0443\u0434\u0430: ["russian"], \u043A\u0443\u0437\u043E\u0432: ["russian"], \u043A\u0443\u043A\u043B\u0430: ["russian"], \u043A\u0443\u043B\u0430\u043A: ["russian"], \u043A\u0443\u043B\u0438\u0441\u0430: ["russian"], \u043A\u0443\u043B\u044C\u0442\u0443\u0440\u0430: ["russian"], \u043A\u0443\u043C\u0438\u0440: ["russian"], \u043A\u0443\u043F\u0435: ["russian"], \u043A\u0443\u043F\u0438\u0442\u044C: ["russian"], \u043A\u0443\u043F\u043E\u043B: ["russian"], \u043A\u0443\u043F\u044E\u0440\u0430: ["russian"], \u043A\u0443\u0440\u0438\u0446\u0430: ["russian"], \u043A\u0443\u0440\u043E\u0440\u0442: ["russian"], \u043A\u0443\u0440\u0441: ["russian"], \u043A\u0443\u0440\u0442\u043A\u0430: ["russian"], \u043A\u0443\u0441\u043E\u043A: ["russian"], \u043A\u0443\u0441\u0442: ["russian"], \u043A\u0443\u0445\u043D\u044F: ["russian"], \u043A\u0443\u0448\u0430\u0442\u044C: ["russian"], \u043B\u0430\u0431\u0438\u0440\u0438\u043D\u0442: ["russian"], \u043B\u0430\u0432\u043A\u0430: ["russian"], \u043B\u0430\u0433\u0435\u0440\u044C: ["russian"], \u043B\u0430\u0434\u043D\u043E: ["russian"], \u043B\u0430\u0434\u043E\u043D\u044C: ["russian"], \u043B\u0430\u043F\u0430: ["russian"], \u043B\u0430\u0443\u0440\u0435\u0430\u0442: ["russian"], \u043B\u0433\u0430\u0442\u044C: ["russian"], \u043B\u0435\u0431\u0435\u0434\u044C: ["russian"], \u043B\u0435\u0432\u044B\u0439: ["russian"], \u043B\u0435\u0433\u0435\u043D\u0434\u0430: ["russian"], \u043B\u0435\u0433\u043A\u0438\u0439: ["russian"], \u043B\u0435\u0434\u044F\u043D\u043E\u0439: ["russian"], \u043B\u0435\u0436\u0430\u0442\u044C: ["russian"], \u043B\u0435\u0437\u0432\u0438\u0435: ["russian"], \u043B\u0435\u0437\u0442\u044C: ["russian"], \u043B\u0435\u043A\u0446\u0438\u044F: ["russian"], \u043B\u0435\u043D\u0438\u0432\u044B\u0439: ["russian"], \u043B\u0435\u043D\u0442\u0430: ["russian"], \u043B\u0435\u043F\u0435\u0441\u0442\u043E\u043A: ["russian"], \u043B\u0435\u0441\u043D\u043E\u0439: ["russian"], \u043B\u0435\u0441\u0442\u043D\u0438\u0446\u0430: ["russian"], \u043B\u0435\u0442\u0435\u0442\u044C: ["russian"], \u043B\u0435\u0442\u043E: ["russian"], \u043B\u0435\u0447\u0438\u0442\u044C: ["russian"], \u043B\u0438\u0433\u0430: ["russian"], \u043B\u0438\u0434\u0435\u0440: ["russian"], \u043B\u0438\u043B\u043E\u0432\u044B\u0439: ["russian"], \u043B\u0438\u043C\u043E\u043D: ["russian"], \u043B\u0438\u043D\u0438\u044F: ["russian"], \u043B\u0438\u043F\u043A\u0438\u0439: ["russian"], \u043B\u0438\u0441\u0442: ["russian"], \u043B\u0438\u0442\u0440: ["russian"], \u043B\u0438\u0445\u043E\u0439: ["russian"], \u043B\u0438\u0446\u043E: ["russian"], \u043B\u0438\u0448\u0438\u0442\u044C: ["russian"], \u043B\u0438\u0448\u043D\u0438\u0439: ["russian"], \u043B\u043E\u0432\u0438\u0442\u044C: ["russian"], \u043B\u043E\u0433\u0438\u043A\u0430: ["russian"], \u043B\u043E\u0434\u043A\u0430: ["russian"], \u043B\u043E\u0436\u044C: ["russian"], \u043B\u043E\u0437\u0443\u043D\u0433: ["russian"], \u043B\u043E\u043A\u043E\u0442\u044C: ["russian"], \u043B\u043E\u043F\u0430\u0442\u0430: ["russian"], \u043B\u043E\u0448\u0430\u0434\u044C: ["russian"], \u043B\u0443\u043A\u0430\u0432\u044B\u0439: ["russian"], \u043B\u0443\u043D\u0430: ["russian"], \u043B\u0443\u0447\u0448\u0438\u0439: ["russian"], \u043B\u044B\u0441\u044B\u0439: ["russian"], \u043B\u044C\u0433\u043E\u0442\u0430: ["russian"], \u043B\u044E\u0431\u0438\u0442\u044C: ["russian"], \u043B\u044E\u0431\u043E\u0439: ["russian"], \u043B\u044E\u0434\u0441\u043A\u043E\u0439: ["russian"], \u043B\u044E\u0441\u0442\u0440\u0430: ["russian"], \u043B\u044E\u0442\u044B\u0439: ["russian"], \u043B\u044F\u0433\u0443\u0448\u043A\u0430: ["russian"], \u043C\u0430\u0433\u0430\u0437\u0438\u043D: ["russian"], \u043C\u0430\u0433\u0438\u044F: ["russian"], \u043C\u0430\u0439\u043E\u0440: ["russian"], \u043C\u0430\u0439\u0441\u043A\u0438\u0439: ["russian"], \u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C: ["russian"], \u043C\u0430\u043A\u0443\u0448\u043A\u0430: ["russian"], \u043C\u0430\u043B\u043E: ["russian"], \u043C\u0430\u043B\u044C\u0447\u0438\u043A: ["russian"], \u043C\u0430\u043C\u0430: ["russian"], \u043C\u0430\u043D\u0435\u0440\u0430: ["russian"], \u043C\u0430\u0440\u043A\u0430: ["russian"], \u043C\u0430\u0440\u0442: ["russian"], \u043C\u0430\u0440\u0448\u0440\u0443\u0442: ["russian"], \u043C\u0430\u0441\u0441\u0430: ["russian"], \u043C\u0430\u0441\u0442\u0435\u0440: ["russian"], \u043C\u0430\u0441\u0448\u0442\u0430\u0431: ["russian"], \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B: ["russian"], \u043C\u0430\u0442\u0447: ["russian"], \u043C\u0430\u0445\u0430\u0442\u044C: ["russian"], \u043C\u0430\u0448\u0438\u043D\u0430: ["russian"], \u043C\u0430\u044F\u043A: ["russian"], \u043C\u0435\u0431\u0435\u043B\u044C: ["russian"], \u043C\u0435\u0434\u0430\u043B\u044C: ["russian"], \u043C\u0435\u0434\u0432\u0435\u0434\u044C: ["russian"], \u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0430: ["russian"], \u043C\u0435\u0434\u044C: ["russian"], \u043C\u0435\u0436\u0434\u0443: ["russian"], \u043C\u0435\u043B\u043A\u0438\u0439: ["russian"], \u043C\u0435\u043B\u043E\u0447\u044C: ["russian"], \u043C\u0435\u043C\u0443\u0430\u0440\u044B: ["russian"], \u043C\u0435\u043D\u044C\u0448\u0435: ["russian"], \u043C\u0435\u043D\u044E: ["russian"], \u043C\u0435\u043D\u044F\u0442\u044C: ["russian"], \u043C\u0435\u0440\u0430: ["russian"], \u043C\u0435\u0440\u0446\u0430\u0442\u044C: ["russian"], \u043C\u0435\u0441\u0442\u043E: ["russian"], \u043C\u0435\u0441\u044F\u0446: ["russian"], \u043C\u0435\u0442\u0430\u043B\u043B: ["russian"], \u043C\u0435\u0442\u043E\u0434: ["russian"], \u043C\u0435\u0442\u0440: ["russian"], \u043C\u0435\u0445\u0430\u043D\u0438\u0437\u043C: ["russian"], \u043C\u0435\u0445\u043E\u0432\u043E\u0439: ["russian"], \u043C\u0435\u0447\u0442\u0430\u0442\u044C: ["russian"], \u043C\u0435\u0448\u0430\u0442\u044C: ["russian"], \u043C\u0435\u0448\u043E\u043A: ["russian"], \u043C\u0438\u0433\u0440\u0430\u0446\u0438\u044F: ["russian"], \u043C\u0438\u043A\u0440\u043E\u0444\u043E\u043D: ["russian"], \u043C\u0438\u043B\u0438\u0446\u0438\u044F: ["russian"], \u043C\u0438\u043B\u043B\u0438\u043E\u043D: ["russian"], \u043C\u0438\u043B\u043E\u0441\u0442\u044C: ["russian"], \u043C\u0438\u043B\u044F: ["russian"], \u043C\u0438\u043C\u043E: ["russian"], \u043C\u0438\u043D\u0435\u0440\u0430\u043B: ["russian"], \u043C\u0438\u043D\u0438\u0441\u0442\u0440: ["russian"], \u043C\u0438\u043D\u0443\u0442\u0430: ["russian"], \u043C\u0438\u0440\u043D\u044B\u0439: ["russian"], \u043C\u0438\u0441\u043A\u0430: ["russian"], \u043C\u0438\u0441\u0441\u0438\u044F: ["russian"], \u043C\u0438\u0442\u0438\u043D\u0433: ["russian"], \u043C\u0438\u0448\u0435\u043D\u044C: ["russian"], \u043C\u043B\u0430\u0434\u0448\u0438\u0439: ["russian"], \u043C\u043D\u0435\u043D\u0438\u0435: ["russian"], \u043C\u043D\u0438\u043C\u044B\u0439: ["russian"], \u043C\u043D\u043E\u0433\u043E: ["russian"], \u043C\u043E\u0433\u0443\u0447\u0438\u0439: ["russian"], \u043C\u043E\u0434\u0435\u043B\u044C: ["russian"], \u043C\u043E\u0436\u0435\u0442: ["russian"], \u043C\u043E\u0437\u0433: ["russian"], \u043C\u043E\u043A\u0440\u044B\u0439: ["russian"], \u043C\u043E\u043B\u0435\u043A\u0443\u043B\u0430: ["russian"], \u043C\u043E\u043B\u043D\u0438\u044F: ["russian"], \u043C\u043E\u043B\u043E\u0434\u043E\u0439: ["russian"], \u043C\u043E\u043B\u0447\u0430\u0442\u044C: ["russian"], \u043C\u043E\u043C\u0435\u043D\u0442: ["russian"], \u043C\u043E\u043D\u0435\u0442\u0430: ["russian"], \u043C\u043E\u043D\u0438\u0442\u043E\u0440: ["russian"], \u043C\u043E\u043D\u043E\u043B\u043E\u0433: ["russian"], \u043C\u043E\u043D\u0441\u0442\u0440: ["russian"], \u043C\u043E\u043D\u0442\u0430\u0436: ["russian"], \u043C\u043E\u0440\u0430\u043B\u044C: ["russian"], \u043C\u043E\u0440\u0435: ["russian"], \u043C\u043E\u0440\u043A\u043E\u0432\u044C: ["russian"], \u043C\u043E\u0440\u043E\u0437: ["russian"], \u043C\u043E\u0440\u0449\u0438\u043D\u0430: ["russian"], \u043C\u043E\u0441\u0442\u043E\u0432\u0430\u044F: ["russian"], \u043C\u043E\u0442\u0430\u0442\u044C: ["russian"], \u043C\u043E\u0442\u0438\u0432: ["russian"], \u043C\u043E\u0442\u043E\u0440: ["russian"], \u043C\u043E\u0445\u043D\u0430\u0442\u044B\u0439: ["russian"], \u043C\u0440\u0430\u043C\u043E\u0440: ["russian"], \u043C\u0440\u0430\u0447\u043D\u044B\u0439: ["russian"], \u043C\u0441\u0442\u0438\u0442\u044C: ["russian"], \u043C\u0443\u0434\u0440\u044B\u0439: ["russian"], \u043C\u0443\u0436\u0435\u0441\u0442\u0432\u043E: ["russian"], \u043C\u0443\u0436\u0447\u0438\u043D\u0430: ["russian"], \u043C\u0443\u0437\u0435\u0439: ["russian"], \u043C\u0443\u0437\u044B\u043A\u0430: ["russian"], \u043C\u0443\u043D\u0434\u0438\u0440: ["russian"], \u043C\u0443\u0440\u0430\u0432\u0435\u0439: ["russian"], \u043C\u0443\u0441\u043E\u0440: ["russian"], \u043C\u0443\u0445\u0430: ["russian"], \u043C\u0447\u0430\u0442\u044C\u0441\u044F: ["russian"], \u043C\u044B\u0441\u043B\u044C: ["russian"], \u043C\u044B\u0442\u044C\u0441\u044F: ["russian"], \u043C\u044B\u0448\u0446\u0430: ["russian"], \u043C\u044B\u0448\u044C: ["russian"], \u043C\u044E\u0437\u0438\u043A\u043B: ["russian"], \u043C\u044F\u0433\u043A\u0438\u0439: ["russian"], \u043C\u044F\u0441\u043E: ["russian"], \u043D\u0430\u0431\u043E\u0440: ["russian"], \u043D\u0430\u0432\u044B\u043A: ["russian"], \u043D\u0430\u0433\u043B\u044B\u0439: ["russian"], \u043D\u0430\u0433\u0440\u0443\u0437\u043A\u0430: ["russian"], \u043D\u0430\u0434\u0435\u0436\u0434\u0430: ["russian"], \u043D\u0430\u0434\u0437\u043E\u0440: ["russian"], \u043D\u0430\u0434\u043E: ["russian"], \u043D\u0430\u0435\u0434\u0438\u043D\u0435: ["russian"], \u043D\u0430\u0437\u0430\u0434: ["russian"], \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435: ["russian"], \u043D\u0430\u0437\u043B\u043E: ["russian"], \u043D\u0430\u0438\u0432\u043D\u044B\u0439: ["russian"], \u043D\u0430\u0439\u0442\u0438: ["russian"], \u043D\u0430\u043A\u043E\u043D\u0435\u0446: ["russian"], \u043D\u0430\u043B\u0435\u0432\u043E: ["russian"], \u043D\u0430\u043B\u0438\u0447\u0438\u0435: ["russian"], \u043D\u0430\u043B\u043E\u0433: ["russian"], \u043D\u0430\u043C\u0435\u0440\u0435\u043D: ["russian"], \u043D\u0430\u043D\u0435\u0441\u0442\u0438: ["russian"], \u043D\u0430\u043F\u0430\u0441\u0442\u044C: ["russian"], \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: ["russian"], \u043D\u0430\u0440\u043E\u0434: ["russian"], \u043D\u0430\u0441\u043B\u0435\u0434\u0438\u0435: ["russian"], \u043D\u0430\u0442\u0443\u0440\u0430: ["russian"], \u043D\u0430\u0443\u043A\u0430: ["russian"], \u043D\u0430\u0443\u0442\u0440\u043E: ["russian"], \u043D\u0430\u0447\u0430\u0442\u044C: ["russian"], \u043D\u0435\u0431\u043E: ["russian"], \u043D\u0435\u0432\u0430\u0436\u043D\u043E: ["russian"], \u043D\u0435\u0432\u0435\u0441\u0442\u0430: ["russian"], \u043D\u0435\u0433\u043E\u0434\u044F\u0439: ["russian"], \u043D\u0435\u0434\u0430\u0432\u043D\u043E: ["russian"], \u043D\u0435\u0434\u0435\u043B\u044F: ["russian"], \u043D\u0435\u0434\u043E\u043B\u0433\u043E: ["russian"], \u043D\u0435\u0434\u0440\u0430: ["russian"], \u043D\u0435\u0434\u0443\u0433: ["russian"], \u043D\u0435\u0436\u043D\u044B\u0439: ["russian"], \u043D\u0435\u0437\u0430\u0447\u0435\u043C: ["russian"], \u043D\u0435\u043A\u0442\u043E: ["russian"], \u043D\u0435\u043B\u0435\u043F\u044B\u0439: ["russian"], \u043D\u0435\u043B\u043E\u0432\u043A\u043E: ["russian"], \u043D\u0435\u043B\u044C\u0437\u044F: ["russian"], \u043D\u0435\u043C\u0430\u043B\u043E: ["russian"], \u043D\u0435\u043C\u043E\u0439: ["russian"], \u043D\u0435\u043F\u043B\u043E\u0445\u043E: ["russian"], \u043D\u0435\u0440\u0432\u043D\u044B\u0439: ["russian"], \u043D\u0435\u0440\u0435\u0434\u043A\u043E: ["russian"], \u043D\u0435\u0441\u0442\u0438\u0441\u044C: ["russian"], \u043D\u0435\u0443\u0434\u0430\u0447\u0430: ["russian"], \u043D\u0435\u0443\u0436\u0435\u043B\u0438: ["russian"], \u043D\u0435\u0444\u0442\u044C: ["russian"], \u043D\u0435\u044F\u0441\u043D\u044B\u0439: ["russian"], \u043D\u0438\u0433\u0434\u0435: ["russian"], \u043D\u0438\u0437\u043A\u0438\u0439: ["russian"], \u043D\u0438\u043A\u0430\u043A\u043E\u0439: ["russian"], \u043D\u0438\u043A\u043E\u0433\u0434\u0430: ["russian"], \u043D\u0438\u043A\u0443\u0434\u0430: ["russian"], \u043D\u0438\u0447\u0442\u043E: ["russian"], \u043D\u0438\u0447\u0443\u0442\u044C: ["russian"], \u043D\u0438\u0448\u0430: ["russian"], \u043D\u0438\u0449\u0438\u0439: ["russian"], \u043D\u043E\u0432\u043E\u0441\u0442\u044C: ["russian"], \u043D\u043E\u0432\u044B\u0439: ["russian"], \u043D\u043E\u0433\u0430: ["russian"], \u043D\u043E\u0433\u043E\u0442\u044C: ["russian"], \u043D\u043E\u0436\u043D\u0438\u0446\u044B: ["russian"], \u043D\u043E\u0437\u0434\u0440\u044F: ["russian"], \u043D\u043E\u043C\u0435\u0440: ["russian"], \u043D\u043E\u0441\u0438\u0442\u044C: ["russian"], \u043D\u043E\u0441\u043E\u043A: ["russian"], \u043D\u043E\u0447\u044C: ["russian"], \u043D\u043E\u044F\u0431\u0440\u044C: ["russian"], \u043D\u0440\u0430\u0432: ["russian"], \u043D\u0443\u043B\u044C: ["russian"], \u043D\u044B\u043D\u0447\u0435: ["russian"], \u043D\u044B\u0440\u044F\u0442\u044C: ["russian"], \u043D\u044E\u0430\u043D\u0441: ["russian"], \u043D\u044F\u043D\u044F: ["russian"], \u043E\u0431\u0430\u044F\u043D\u0438\u0435: ["russian"], \u043E\u0431\u0435\u0434: ["russian"], \u043E\u0431\u0435\u0437\u044C\u044F\u043D\u0430: ["russian"], \u043E\u0431\u0435\u0449\u0430\u0442\u044C: ["russian"], \u043E\u0431\u0436\u0435\u0447\u044C: ["russian"], \u043E\u0431\u0437\u043E\u0440: ["russian"], \u043E\u0431\u0438\u043B\u0438\u0435: ["russian"], \u043E\u0431\u0438\u0442\u0430\u0442\u044C: ["russian"], \u043E\u0431\u043B\u0430\u0441\u0442\u044C: ["russian"], \u043E\u0431\u043B\u0438\u043A: ["russian"], \u043E\u0431\u043B\u043E\u0436\u043A\u0430: ["russian"], \u043E\u0431\u043C\u0435\u043D: ["russian"], \u043E\u0431\u043C\u043E\u0440\u043E\u043A: ["russian"], \u043E\u0431\u043E\u0436\u0430\u0442\u044C: ["russian"], \u043E\u0431\u043E\u0438: ["russian"], \u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0430: ["russian"], \u043E\u0431\u043E\u0440\u043E\u043D\u0430: ["russian"], \u043E\u0431\u043E\u0447\u0438\u043D\u0430: ["russian"], \u043E\u0431\u0440\u0430\u0437: ["russian"], \u043E\u0431\u0440\u0435\u0441\u0442\u0438: ["russian"], \u043E\u0431\u0440\u044B\u0432: ["russian"], \u043E\u0431\u0443\u0432\u044C: ["russian"], \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u0435: ["russian"], \u043E\u0431\u0445\u043E\u0434: ["russian"], \u043E\u0431\u0449\u0435\u0441\u0442\u0432\u043E: ["russian"], \u043E\u0431\u0449\u0438\u0439: ["russian"], \u043E\u0431\u044A\u0435\u043A\u0442: ["russian"], \u043E\u0431\u044B\u0441\u043A: ["russian"], \u043E\u0431\u044B\u0447\u043D\u043E: ["russian"], \u043E\u0431\u044F\u0437\u0430\u0442\u044C: ["russian"], \u043E\u0432\u043E\u0449\u0438: ["russian"], \u043E\u0432\u0440\u0430\u0433: ["russian"], \u043E\u0432\u0446\u0430: ["russian"], \u043E\u0433\u043E\u0432\u043E\u0440\u043A\u0430: ["russian"], \u043E\u0433\u0440\u0430\u0434\u0430: ["russian"], \u043E\u0433\u0443\u0440\u0435\u0446: ["russian"], \u043E\u0434\u0435\u0436\u0434\u0430: ["russian"], \u043E\u0434\u0435\u044F\u043B\u043E: ["russian"], \u043E\u0434\u0438\u043D: ["russian"], \u043E\u0434\u043D\u0430\u043A\u043E: ["russian"], \u043E\u0434\u043E\u043B\u0435\u0442\u044C: ["russian"], \u043E\u0436\u0438\u0434\u0430\u0442\u044C: ["russian"], \u043E\u0437\u0435\u0440\u043E: ["russian"], \u043E\u043A\u0435\u0430\u043D: ["russian"], \u043E\u043A\u043D\u043E: ["russian"], \u043E\u043A\u043E\u043B\u043E: ["russian"], \u043E\u043A\u043E\u043F: ["russian"], \u043E\u043A\u0440\u0430\u0438\u043D\u0430: ["russian"], \u043E\u043A\u0442\u044F\u0431\u0440\u044C: ["russian"], \u043E\u043F\u0430\u0441\u043D\u044B\u0439: ["russian"], \u043E\u043F\u0435\u043A\u0430: ["russian"], \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F: ["russian"], \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435: ["russian"], \u043E\u043F\u043B\u0430\u0442\u0430: ["russian"], \u043E\u043F\u043E\u0440\u0430: ["russian"], \u043E\u043F\u043F\u043E\u043D\u0435\u043D\u0442: ["russian"], \u043E\u043F\u0442\u0438\u043C\u0438\u0437\u043C: ["russian"], \u043E\u043F\u0442\u043E\u0432\u044B\u0439: ["russian"], \u043E\u043F\u0443\u0445\u043E\u043B\u044C: ["russian"], \u043E\u043F\u044B\u0442: ["russian"], \u043E\u0440\u0430\u0442\u043E\u0440: ["russian"], \u043E\u0440\u0431\u0438\u0442\u0430: ["russian"], \u043E\u0440\u0433\u0430\u043D: ["russian"], \u043E\u0440\u0434\u0435\u043D: ["russian"], \u043E\u0440\u0435\u043B: ["russian"], \u043E\u0440\u0438\u0433\u0438\u043D\u0430\u043B: ["russian"], \u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440: ["russian"], \u043E\u0440\u043A\u0435\u0441\u0442\u0440: ["russian"], \u043E\u0440\u0443\u0436\u0438\u0435: ["russian"], \u043E\u0441\u0435\u043D\u043D\u0438\u0439: ["russian"], \u043E\u0441\u043A\u043E\u043B\u043E\u043A: ["russian"], \u043E\u0441\u043C\u043E\u0442\u0440: ["russian"], \u043E\u0441\u0442\u0440\u043E\u0432: ["russian"], \u043E\u0442\u0431\u043E\u0440: ["russian"], \u043E\u0442\u0431\u044B\u0442\u044C: ["russian"], \u043E\u0442\u0432\u043B\u0435\u0447\u044C: ["russian"], \u043E\u0442\u0434\u0430\u0442\u044C: ["russian"], \u043E\u0442\u0434\u0435\u043B: ["russian"], \u043E\u0442\u0434\u044B\u0445: ["russian"], \u043E\u0442\u0435\u043B\u044C: ["russian"], \u043E\u0442\u0435\u0446: ["russian"], \u043E\u0442\u0437\u044B\u0432: ["russian"], \u043E\u0442\u043A\u0430\u0437: ["russian"], \u043E\u0442\u043A\u043B\u0438\u043A: ["russian"], \u043E\u0442\u043A\u0440\u044B\u0442\u044C: ["russian"], \u043E\u0442\u043A\u0443\u0434\u0430: ["russian"], \u043E\u0442\u043B\u0438\u0447\u0438\u0435: ["russian"], \u043E\u0442\u043D\u044B\u043D\u0435: ["russian"], \u043E\u0442\u043E\u0439\u0442\u0438: ["russian"], \u043E\u0442\u043F\u0443\u0441\u043A: ["russian"], \u043E\u0442\u0440\u0430\u0441\u043B\u044C: ["russian"], \u043E\u0442\u0440\u043E\u0441\u0442\u043E\u043A: ["russian"], \u043E\u0442\u0440\u044B\u0432\u043E\u043A: ["russian"], \u043E\u0442\u0440\u044F\u0434: ["russian"], \u043E\u0442\u0441\u0435\u043A: ["russian"], \u043E\u0442\u0441\u0442\u0430\u0432\u043A\u0430: ["russian"], \u043E\u0442\u0441\u044E\u0434\u0430: ["russian"], \u043E\u0442\u0442\u0435\u043D\u043E\u043A: ["russian"], \u043E\u0442\u0442\u043E\u0433\u043E: ["russian"], \u043E\u0442\u0447\u0435\u0433\u043E: ["russian"], \u043E\u0442\u044A\u0435\u0437\u0434: ["russian"], \u043E\u0444\u0438\u0441: ["russian"], \u043E\u0444\u0438\u0446\u0435\u0440: ["russian"], \u043E\u0445\u043E\u0442\u0430: ["russian"], \u043E\u0445\u0440\u0430\u043D\u0430: ["russian"], \u043E\u0446\u0435\u043D\u043A\u0430: ["russian"], \u043E\u0447\u0430\u0433: ["russian"], \u043E\u0447\u0435\u043D\u044C: ["russian"], \u043E\u0447\u0435\u0440\u0435\u0434\u044C: ["russian"], \u043E\u0447\u0438\u0449\u0430\u0442\u044C: ["russian"], \u043E\u0448\u0438\u0431\u043A\u0430: ["russian"], \u043E\u0449\u0443\u0449\u0435\u043D\u0438\u0435: ["russian"], \u043F\u0430\u0432\u0438\u043B\u044C\u043E\u043D: ["russian"], \u043F\u0430\u0434\u0430\u0442\u044C: ["russian"], \u043F\u0430\u0437\u0443\u0445\u0430: ["russian"], \u043F\u0430\u043A\u0435\u0442: ["russian"], \u043F\u0430\u043B\u0430\u0442\u0430: ["russian"], \u043F\u0430\u043B\u0435\u0446: ["russian"], \u043F\u0430\u043B\u0443\u0431\u0430: ["russian"], \u043F\u0430\u043B\u044C\u0442\u043E: ["russian"], \u043F\u0430\u043C\u044F\u0442\u044C: ["russian"], \u043F\u0430\u043D\u0435\u043B\u044C: ["russian"], \u043F\u0430\u043D\u0438\u043A\u0430: ["russian"], \u043F\u0430\u0440\u0430: ["russian"], \u043F\u0430\u0440\u0435\u043D\u044C: ["russian"], \u043F\u0430\u0440\u043E\u0445\u043E\u0434: ["russian"], \u043F\u0430\u0440\u0442\u0438\u044F: ["russian"], \u043F\u0430\u0440\u0443\u0441: ["russian"], \u043F\u0430\u0441\u043F\u043E\u0440\u0442: ["russian"], \u043F\u0430\u0441\u0441\u0430\u0436\u0438\u0440: ["russian"], \u043F\u0430\u0441\u0442\u0443\u0445: ["russian"], \u043F\u0430\u0442\u0435\u043D\u0442: ["russian"], \u043F\u0430\u0442\u0440\u043E\u043D: ["russian"], \u043F\u0430\u0443\u0437\u0430: ["russian"], \u043F\u0430\u0443\u043A: ["russian"], \u043F\u0430\u0443\u0442\u0438\u043D\u0430: ["russian"], \u043F\u0430\u0444\u043E\u0441: ["russian"], \u043F\u0430\u0445\u043D\u0443\u0442\u044C: ["russian"], \u043F\u0430\u0446\u0438\u0435\u043D\u0442: ["russian"], \u043F\u0430\u0447\u043A\u0430: ["russian"], \u043F\u0435\u0432\u0435\u0446: ["russian"], \u043F\u0435\u0434\u0430\u0433\u043E\u0433: ["russian"], \u043F\u0435\u0439\u0437\u0430\u0436: ["russian"], \u043F\u0435\u043D\u0441\u0438\u044F: ["russian"], \u043F\u0435\u043F\u0435\u043B: ["russian"], \u043F\u0435\u0440\u0432\u044B\u0439: ["russian"], \u043F\u0435\u0440\u0435\u0434: ["russian"], \u043F\u0435\u0440\u0438\u043E\u0434: ["russian"], \u043F\u0435\u0440\u043E: ["russian"], \u043F\u0435\u0440\u0440\u043E\u043D: ["russian"], \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u0436: ["russian"], \u043F\u0435\u0440\u0447\u0430\u0442\u043A\u0430: ["russian"], \u043F\u0435\u0441\u043D\u044F: ["russian"], \u043F\u0435\u0441\u043E\u043A: ["russian"], \u043F\u0435\u0442\u043B\u044F: ["russian"], \u043F\u0435\u0442\u0440\u0443\u0448\u043A\u0430: ["russian"], \u043F\u0435\u0442\u0443\u0445: ["russian"], \u043F\u0435\u0445\u043E\u0442\u0430: ["russian"], \u043F\u0435\u0447\u0430\u0442\u044C: ["russian"], \u043F\u0435\u0447\u0435\u043D\u044C: ["russian"], \u043F\u0435\u0448\u043A\u043E\u043C: ["russian"], \u043F\u0435\u0449\u0435\u0440\u0430: ["russian"], \u043F\u0438\u0430\u043D\u0438\u0441\u0442: ["russian"], \u043F\u0438\u0434\u0436\u0430\u043A: ["russian"], \u043F\u0438\u043B\u043E\u0442: ["russian"], \u043F\u0438\u043E\u043D\u0435\u0440: ["russian"], \u043F\u0438\u0440\u0430\u043C\u0438\u0434\u0430: ["russian"], \u043F\u0438\u0440\u043E\u0436\u043E\u043A: ["russian"], \u043F\u0438\u0441\u044C\u043C\u043E: ["russian"], \u043F\u0438\u0449\u0430: ["russian"], \u043F\u043B\u0430\u0432\u0430\u043D\u0438\u0435: ["russian"], \u043F\u043B\u0430\u043A\u0430\u0442\u044C: ["russian"], \u043F\u043B\u0430\u043C\u044F: ["russian"], \u043F\u043B\u0430\u043D: ["russian"], \u043F\u043B\u0430\u0441\u0442: ["russian"], \u043F\u043B\u0430\u0442\u0438\u0442\u044C: ["russian"], \u043F\u043B\u0435\u043D\u043D\u044B\u0439: ["russian"], \u043F\u043B\u0435\u0447\u043E: ["russian"], \u043F\u043B\u0438\u0442\u0430: ["russian"], \u043F\u043B\u043E\u0434: ["russian"], \u043F\u043B\u043E\u0441\u043A\u0438\u0439: ["russian"], \u043F\u043B\u043E\u0442\u043D\u044B\u0439: ["russian"], \u043F\u043B\u043E\u0445\u043E\u0439: ["russian"], \u043F\u043B\u043E\u0449\u0430\u0434\u044C: ["russian"], \u043F\u043B\u044B\u0442\u044C: ["russian"], \u043F\u043B\u044E\u0441: ["russian"], \u043F\u043B\u044F\u0436: ["russian"], \u043F\u043B\u044F\u0441\u0430\u0442\u044C: ["russian"], \u043F\u043E\u0431\u0435\u0434\u0430: ["russian"], \u043F\u043E\u0432\u0430\u0440: ["russian"], \u043F\u043E\u0432\u043E\u0434: ["russian"], \u043F\u043E\u0432\u0441\u044E\u0434\u0443: ["russian"], \u043F\u043E\u0432\u044F\u0437\u043A\u0430: ["russian"], \u043F\u043E\u0433\u043E\u0434\u0430: ["russian"], \u043F\u043E\u0433\u0440\u0435\u0431: ["russian"], \u043F\u043E\u0434\u0431\u043E\u0440: ["russian"], \u043F\u043E\u0434\u0432\u0438\u0433: ["russian"], \u043F\u043E\u0434\u0434\u0435\u043B\u043A\u0430: ["russian"], \u043F\u043E\u0434\u0436\u0430\u0442\u044C: ["russian"], \u043F\u043E\u0434\u043D\u043E\u0441: ["russian"], \u043F\u043E\u0434\u043F\u0438\u0441\u044C: ["russian"], \u043F\u043E\u0434\u0440\u0443\u0433\u0430: ["russian"], \u043F\u043E\u0434\u0445\u043E\u0434: ["russian"], \u043F\u043E\u0434\u0447\u0430\u0441: ["russian"], \u043F\u043E\u0434\u044A\u0435\u0437\u0434: ["russian"], \u043F\u043E\u0435\u0434\u0438\u043D\u043E\u043A: ["russian"], \u043F\u043E\u0435\u0437\u0434: ["russian"], \u043F\u043E\u0435\u0441\u0442\u044C: ["russian"], \u043F\u043E\u0435\u0445\u0430\u0442\u044C: ["russian"], \u043F\u043E\u0436\u0430\u043B\u0443\u0439: ["russian"], \u043F\u043E\u0436\u0438\u043B\u043E\u0439: ["russian"], \u043F\u043E\u0437\u0430\u0434\u0438: ["russian"], \u043F\u043E\u0437\u0432\u0430\u0442\u044C: ["russian"], \u043F\u043E\u0437\u0434\u043D\u0438\u0439: ["russian"], \u043F\u043E\u0437\u0438\u0446\u0438\u044F: ["russian"], \u043F\u043E\u0437\u043E\u0440: ["russian"], \u043F\u043E\u0438\u0441\u043A: ["russian"], \u043F\u043E\u0439\u043C\u0430\u0442\u044C: ["russian"], \u043F\u043E\u0439\u0442\u0438: ["russian"], \u043F\u043E\u043A\u043B\u043E\u043D: ["russian"], \u043F\u043E\u043A\u043E\u0439: ["russian"], \u043F\u043E\u043A\u0440\u044B\u0442\u044C: ["russian"], \u043F\u043E\u043B\u0434\u0435\u043D\u044C: ["russian"], \u043F\u043E\u043B\u0435\u0437\u043D\u044B\u0439: ["russian"], \u043F\u043E\u043B\u0437\u0442\u0438: ["russian"], \u043F\u043E\u043B\u043A: ["russian"], \u043F\u043E\u043B\u043D\u044B\u0439: ["russian"], \u043F\u043E\u043B\u043E\u0432\u0438\u043D\u0430: ["russian"], \u043F\u043E\u043B\u0442\u043E\u0440\u0430: ["russian"], \u043F\u043E\u043B\u044C\u0437\u0430: ["russian"], \u043F\u043E\u043B\u044F\u043D\u0430: ["russian"], \u043F\u043E\u043C\u0438\u0434\u043E\u0440: ["russian"], \u043F\u043E\u043C\u043D\u0438\u0442\u044C: ["russian"], \u043F\u043E\u043C\u043E\u0449\u044C: ["russian"], \u043F\u043E\u043F\u0430\u0441\u0442\u044C: ["russian"], \u043F\u043E\u043F\u0435\u0440\u0435\u043A: ["russian"], \u043F\u043E\u043F\u043B\u044B\u0442\u044C: ["russian"], \u043F\u043E\u043F\u043E\u043B\u0430\u043C: ["russian"], \u043F\u043E\u043F\u0440\u0430\u0432\u043A\u0430: ["russian"], \u043F\u043E\u043F\u0443\u0433\u0430\u0439: ["russian"], \u043F\u043E\u043F\u044B\u0442\u043A\u0430: ["russian"], \u043F\u043E\u0440\u043E\u0433: ["russian"], \u043F\u043E\u0440\u0442\u0440\u0435\u0442: ["russian"], \u043F\u043E\u0440\u0446\u0438\u044F: ["russian"], \u043F\u043E\u0440\u044B\u0432: ["russian"], \u043F\u043E\u0440\u044F\u0434\u043E\u043A: ["russian"], \u043F\u043E\u0441\u043B\u0435: ["russian"], \u043F\u043E\u0441\u043E\u043B: ["russian"], \u043F\u043E\u0441\u0440\u0435\u0434\u0438: ["russian"], \u043F\u043E\u0441\u0442\u0435\u043B\u044C: ["russian"], \u043F\u043E\u0441\u0443\u0434\u0430: ["russian"], \u043F\u043E\u0442\u043E\u043C: ["russian"], \u043F\u043E\u0445\u0432\u0430\u043B\u0430: ["russian"], \u043F\u043E\u0445\u043E\u0436\u0438\u0439: ["russian"], \u043F\u043E\u0446\u0435\u043B\u0443\u0439: ["russian"], \u043F\u043E\u0447\u0432\u0430: ["russian"], \u043F\u043E\u0447\u0435\u043C\u0443: ["russian"], \u043F\u043E\u0448\u043B\u0438\u043D\u0430: ["russian"], \u043F\u043E\u044D\u043C\u0430: ["russian"], \u043F\u043E\u044D\u0442\u043E\u043C\u0443: ["russian"], \u043F\u0440\u0430\u0432\u043E: ["russian"], \u043F\u0440\u0430\u0437\u0434\u043D\u0438\u043A: ["russian"], \u043F\u0440\u0430\u043A\u0442\u0438\u043A\u0430: ["russian"], \u043F\u0440\u0430\u0445: ["russian"], \u043F\u0440\u0435\u0433\u0440\u0430\u0434\u0430: ["russian"], \u043F\u0440\u0435\u0434\u043C\u0435\u0442: ["russian"], \u043F\u0440\u0435\u0436\u0434\u0435: ["russian"], \u043F\u0440\u0435\u043B\u0435\u0441\u0442\u044C: ["russian"], \u043F\u0440\u0435\u043C\u0438\u044F: ["russian"], \u043F\u0440\u0435\u043F\u0430\u0440\u0430\u0442: ["russian"], \u043F\u0440\u0435\u0441\u0441\u0430: ["russian"], \u043F\u0440\u0438\u0431\u044B\u0442\u044C: ["russian"], \u043F\u0440\u0438\u0436\u0430\u0442\u044C: ["russian"], \u043F\u0440\u0438\u0439\u0442\u0438: ["russian"], \u043F\u0440\u0438\u043A\u0430\u0437: ["russian"], \u043F\u0440\u0438\u043B\u0430\u0432\u043E\u043A: ["russian"], \u043F\u0440\u0438\u043C\u0435\u0440: ["russian"], \u043F\u0440\u0438\u043D\u044F\u0442\u044C: ["russian"], \u043F\u0440\u0438\u0440\u043E\u0434\u0430: ["russian"], \u043F\u0440\u0438\u0442\u043E\u043C: ["russian"], \u043F\u0440\u0438\u0445\u043E\u0436\u0430\u044F: ["russian"], \u043F\u0440\u0438\u0446\u0435\u043B: ["russian"], \u043F\u0440\u0438\u0447\u0438\u043D\u0430: ["russian"], \u043F\u0440\u0438\u044E\u0442: ["russian"], \u043F\u0440\u043E\u0433\u043D\u043E\u0437: ["russian"], \u043F\u0440\u043E\u0434\u0443\u043A\u0442: ["russian"], \u043F\u0440\u043E\u0435\u043A\u0442: ["russian"], \u043F\u0440\u043E\u0436\u0438\u0442\u044C: ["russian"], \u043F\u0440\u043E\u043A\u0430\u0442: ["russian"], \u043F\u0440\u043E\u043C\u044B\u0441\u0435\u043B: ["russian"], \u043F\u0440\u043E\u043F\u0443\u0441\u043A: ["russian"], \u043F\u0440\u043E\u0441\u0442\u043E: ["russian"], \u043F\u0440\u043E\u0442\u0438\u0432: ["russian"], \u043F\u0440\u043E\u0444\u0438\u043B\u044C: ["russian"], \u043F\u0440\u043E\u0446\u0435\u0441\u0441: ["russian"], \u043F\u0440\u043E\u0447\u0438\u0439: ["russian"], \u043F\u0440\u043E\u0448\u043B\u044B\u0439: ["russian"], \u043F\u0440\u043E\u0449\u0430\u0442\u044C: ["russian"], \u043F\u0440\u0443\u0436\u0438\u043D\u0430: ["russian"], \u043F\u0440\u0443\u0442: ["russian"], \u043F\u0440\u044B\u0436\u043E\u043A: ["russian"], \u043F\u0440\u044F\u043C\u043E\u0439: ["russian"], \u043F\u0442\u0438\u0446\u0430: ["russian"], \u043F\u0443\u0431\u043B\u0438\u043A\u0430: ["russian"], \u043F\u0443\u0433\u0430\u0442\u044C: ["russian"], \u043F\u0443\u0433\u043E\u0432\u0438\u0446\u0430: ["russian"], \u043F\u0443\u0437\u044B\u0440\u044C: ["russian"], \u043F\u0443\u043B\u044C\u0442: ["russian"], \u043F\u0443\u043B\u044F: ["russian"], \u043F\u0443\u043D\u043A\u0442: ["russian"], \u043F\u0443\u0441\u043A\u0430\u0442\u044C: ["russian"], \u043F\u0443\u0441\u0442\u043E\u0439: ["russian"], \u043F\u0443\u0442\u044C: ["russian"], \u043F\u0443\u0445\u043B\u044B\u0439: ["russian"], \u043F\u0443\u0447\u043E\u043A: ["russian"], \u043F\u0443\u0448\u0438\u0441\u0442\u044B\u0439: ["russian"], \u043F\u0443\u0448\u043A\u0430: ["russian"], \u043F\u0447\u0435\u043B\u0430: ["russian"], \u043F\u0448\u0435\u043D\u0438\u0446\u0430: ["russian"], \u043F\u044B\u043B\u0430\u0442\u044C: ["russian"], \u043F\u044B\u043B\u044C: ["russian"], \u043F\u044B\u0448\u043D\u044B\u0439: ["russian"], \u043F\u044C\u0435\u0441\u0430: ["russian"], \u043F\u044F\u0442\u043A\u0430: ["russian"], \u043F\u044F\u0442\u043D\u043E: ["russian"], \u043F\u044F\u0442\u044B\u0439: ["russian"], \u043F\u044F\u0442\u044C\u0441\u043E\u0442: ["russian"], \u0440\u0430\u0431\u043E\u0442\u0430: ["russian"], \u0440\u0430\u0432\u043D\u0438\u043D\u0430: ["russian"], \u0440\u0430\u0434\u0438: ["russian"], \u0440\u0430\u0434\u043E\u0441\u0442\u044C: ["russian"], \u0440\u0430\u0434\u0443\u0433\u0430: ["russian"], \u0440\u0430\u0437\u0431\u0438\u0442\u044C: ["russian"], \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435: ["russian"], \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440: ["russian"], \u0440\u0430\u0437\u0434\u0435\u043B: ["russian"], \u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0435: ["russian"], \u0440\u0430\u0437\u043C\u0435\u0440: ["russian"], \u0440\u0430\u0437\u043D\u044B\u0439: ["russian"], \u0440\u0430\u0437\u0440\u044B\u0432: ["russian"], \u0440\u0430\u0437\u0443\u043C: ["russian"], \u0440\u0430\u0439\u043E\u043D: ["russian"], \u0440\u0430\u043A\u0435\u0442\u0430: ["russian"], \u0440\u0430\u043A\u043E\u0432\u0438\u043D\u0430: ["russian"], \u0440\u0430\u043C\u043A\u0430: ["russian"], \u0440\u0430\u043D\u043E: ["russian"], \u0440\u0430\u043F\u043E\u0440\u0442: ["russian"], \u0440\u0430\u0441\u043F\u0430\u0434: ["russian"], \u0440\u0430\u0441\u0441\u043A\u0430\u0437: ["russian"], \u0440\u0430\u0441\u0442\u0438: ["russian"], \u0440\u0430\u0441\u0445\u043E\u0434: ["russian"], \u0440\u0430\u0441\u0446\u0432\u0435\u0442: ["russian"], \u0440\u0430\u0446\u0438\u044F: ["russian"], \u0440\u0432\u0430\u043D\u0443\u0442\u044C: ["russian"], \u0440\u0432\u0430\u0442\u044C\u0441\u044F: ["russian"], \u0440\u0435\u0430\u043A\u0446\u0438\u044F: ["russian"], \u0440\u0435\u0431\u0440\u043E: ["russian"], \u0440\u0435\u0432\u0435\u0442\u044C: ["russian"], \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440: ["russian"], \u0440\u0435\u0434\u043A\u0438\u0439: ["russian"], \u0440\u0435\u0435\u0441\u0442\u0440: ["russian"], \u0440\u0435\u0436\u0438\u043C: ["russian"], \u0440\u0435\u0437\u0430\u0442\u044C: ["russian"], \u0440\u0435\u0437\u0435\u0440\u0432: ["russian"], \u0440\u0435\u0437\u0438\u043D\u0430: ["russian"], \u0440\u0435\u0437\u043A\u043E: ["russian"], \u0440\u0435\u0437\u043D\u043E\u0439: ["russian"], \u0440\u0435\u0439\u0441: ["russian"], \u0440\u0435\u043A\u043B\u0430\u043C\u0430: ["russian"], \u0440\u0435\u043A\u043E\u0440\u0434: ["russian"], \u0440\u0435\u043B\u0438\u0433\u0438\u044F: ["russian"], \u0440\u0435\u043B\u044C\u0441: ["russian"], \u0440\u0435\u043C\u0435\u043D\u044C: ["russian"], \u0440\u0435\u043C\u043E\u043D\u0442: ["russian"], \u0440\u0435\u043F\u043B\u0438\u043A\u0430: ["russian"], \u0440\u0435\u043F\u043E\u0440\u0442\u0430\u0436: ["russian"], \u0440\u0435\u0441\u043D\u0438\u0446\u0430: ["russian"], \u0440\u0435\u0441\u0442\u043E\u0440\u0430\u043D: ["russian"], \u0440\u0435\u0444\u043E\u0440\u043C\u0430: ["russian"], \u0440\u0435\u0446\u0435\u043F\u0442: ["russian"], \u0440\u0435\u0447\u044C: ["russian"], \u0440\u0435\u0448\u0435\u043D\u0438\u0435: ["russian"], \u0440\u0436\u0430\u0432\u044B\u0439: ["russian"], \u0440\u0438\u0441\u043A: ["russian"], \u0440\u0438\u0441\u0443\u043D\u043E\u043A: ["russian"], \u0440\u0438\u0442\u0443\u0430\u043B: ["russian"], \u0440\u0438\u0444\u043C\u0430: ["russian"], \u0440\u043E\u0431\u043A\u043E: ["russian"], \u0440\u043E\u0431\u043E\u0442: ["russian"], \u0440\u043E\u0432\u0435\u0441\u043D\u0438\u043A: ["russian"], \u0440\u043E\u0432\u043D\u043E: ["russian"], \u0440\u043E\u0434\u043D\u043E\u0439: ["russian"], \u0440\u043E\u0436\u0434\u0435\u043D\u0438\u0435: ["russian"], \u0440\u043E\u0437\u0430: ["russian"], \u0440\u043E\u0437\u043E\u0432\u044B\u0439: ["russian"], \u0440\u043E\u0437\u044B\u0441\u043A: ["russian"], \u0440\u043E\u043B\u044C: ["russian"], \u0440\u043E\u043C\u0430\u043D: ["russian"], \u0440\u043E\u0441\u043A\u043E\u0448\u044C: ["russian"], \u0440\u043E\u0441\u043F\u0438\u0441\u044C: ["russian"], \u0440\u043E\u0441\u0442: ["russian"], \u0440\u0443\u0431\u0430\u0448\u043A\u0430: ["russian"], \u0440\u0443\u0431\u0435\u0436: ["russian"], \u0440\u0443\u0431\u0438\u0442\u044C: ["russian"], \u0440\u0443\u0431\u0440\u0438\u043A\u0430: ["russian"], \u0440\u0443\u0434\u043D\u0438\u043A: ["russian"], \u0440\u0443\u043A\u0430: ["russian"], \u0440\u0443\u043A\u043E\u043F\u0438\u0441\u044C: ["russian"], \u0440\u0443\u043C\u044F\u043D\u044B\u0439: ["russian"], \u0440\u0443\u0441\u043B\u043E: ["russian"], \u0440\u0443\u0445\u043D\u0443\u0442\u044C: ["russian"], \u0440\u0443\u0447\u0435\u0439: ["russian"], \u0440\u0443\u0447\u043D\u043E\u0439: ["russian"], \u0440\u044B\u0431\u0430: ["russian"], \u0440\u044B\u0436\u0438\u0439: ["russian"], \u0440\u044B\u043D\u043E\u043A: ["russian"], \u0440\u044B\u0445\u043B\u044B\u0439: ["russian"], \u0440\u044B\u0446\u0430\u0440\u044C: ["russian"], \u0440\u044B\u0447\u0430\u0433: ["russian"], \u0440\u044E\u043A\u0437\u0430\u043A: ["russian"], \u0440\u044F\u0434\u043E\u043C: ["russian"], \u0441\u0430\u0434\u043E\u0432\u044B\u0439: ["russian"], \u0441\u0430\u0436\u0430\u0442\u044C: ["russian"], \u0441\u0430\u043B\u043E\u043D: ["russian"], \u0441\u0430\u043B\u0444\u0435\u0442\u043A\u0430: ["russian"], \u0441\u0430\u043B\u044E\u0442: ["russian"], \u0441\u0430\u043C\u0435\u0446: ["russian"], \u0441\u0430\u043C\u043E\u0432\u0430\u0440: ["russian"], \u0441\u0430\u043C\u044B\u0439: ["russian"], \u0441\u0430\u043D\u0438: ["russian"], \u0441\u0430\u043D\u043A\u0446\u0438\u044F: ["russian"], \u0441\u0430\u043F\u043E\u0433: ["russian"], \u0441\u0430\u0440\u0430\u0439: ["russian"], \u0441\u0430\u0442\u0438\u0440\u0430: ["russian"], \u0441\u0430\u0445\u0430\u0440: ["russian"], \u0441\u0431\u0438\u0442\u044C: ["russian"], \u0441\u0431\u043E\u043A\u0443: ["russian"], \u0441\u0431\u043E\u0440\u043D\u0430\u044F: ["russian"], \u0441\u0431\u044B\u0442: ["russian"], \u0441\u0432\u0430\u0434\u044C\u0431\u0430: ["russian"], \u0441\u0432\u0430\u043B\u043A\u0430: ["russian"], \u0441\u0432\u0430\u0440\u0438\u0442\u044C: ["russian"], \u0441\u0432\u0435\u0436\u0438\u0439: ["russian"], \u0441\u0432\u0435\u0440\u0445\u0443: ["russian"], \u0441\u0432\u0435\u0442: ["russian"], \u0441\u0432\u0435\u0447\u0430: ["russian"], \u0441\u0432\u0438\u043D\u044C\u044F: ["russian"], \u0441\u0432\u0438\u0441\u0442: ["russian"], \u0441\u0432\u0438\u0442\u0435\u0440: ["russian"], \u0441\u0432\u043E\u0431\u043E\u0434\u0430: ["russian"], \u0441\u0432\u043E\u0434\u043A\u0430: ["russian"], \u0441\u0432\u043E\u0439: ["russian"], \u0441\u0432\u044B\u0448\u0435: ["russian"], \u0441\u0432\u044F\u0437\u044C: ["russian"], \u0441\u0434\u0430\u0442\u044C\u0441\u044F: ["russian"], \u0441\u0434\u0435\u043B\u0430\u0442\u044C: ["russian"], \u0441\u0435\u0433\u043C\u0435\u043D\u0442: ["russian"], \u0441\u0435\u0433\u043E\u0434\u043D\u044F: ["russian"], \u0441\u0435\u0434\u043B\u043E: ["russian"], \u0441\u0435\u0434\u043E\u0439: ["russian"], \u0441\u0435\u0434\u044C\u043C\u043E\u0439: ["russian"], \u0441\u0435\u0437\u043E\u043D: ["russian"], \u0441\u0435\u0439\u0444: ["russian"], \u0441\u0435\u0439\u0447\u0430\u0441: ["russian"], \u0441\u0435\u043A\u0440\u0435\u0442: ["russian"], \u0441\u0435\u043A\u0442\u043E\u0440: ["russian"], \u0441\u0435\u043A\u0443\u043D\u0434\u0430: ["russian"], \u0441\u0435\u043C\u0438\u043D\u0430\u0440: ["russian"], \u0441\u0435\u043C\u044C\u044F: ["russian"], \u0441\u0435\u043D\u0430\u0442\u043E\u0440: ["russian"], \u0441\u0435\u043D\u043E: ["russian"], \u0441\u0435\u043D\u0441\u0430\u0446\u0438\u044F: ["russian"], \u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C: ["russian"], \u0441\u0435\u0440\u0432\u0438\u0441: ["russian"], \u0441\u0435\u0440\u0434\u0446\u0435: ["russian"], \u0441\u0435\u0440\u0435\u0434\u0438\u043D\u0430: ["russian"], \u0441\u0435\u0440\u0436\u0430\u043D\u0442: ["russian"], \u0441\u0435\u0440\u0438\u044F: ["russian"], \u0441\u0435\u0440\u044B\u0439: ["russian"], \u0441\u0435\u0441\u0441\u0438\u044F: ["russian"], \u0441\u0435\u0441\u0442\u044C: ["russian"], \u0441\u0435\u0442\u0435\u0432\u043E\u0439: ["russian"], \u0441\u0436\u0430\u0442\u044B\u0439: ["russian"], \u0441\u0436\u0435\u0447\u044C: ["russian"], \u0441\u0437\u0430\u0434\u0438: ["russian"], \u0441\u0438\u0433\u043D\u0430\u043B: ["russian"], \u0441\u0438\u0434\u0435\u043D\u044C\u0435: ["russian"], \u0441\u0438\u043B\u0430: ["russian"], \u0441\u0438\u043B\u0443\u044D\u0442: ["russian"], \u0441\u0438\u043B\u044C\u043D\u044B\u0439: ["russian"], \u0441\u0438\u043C\u0432\u043E\u043B: ["russian"], \u0441\u0438\u043C\u043F\u0430\u0442\u0438\u044F: ["russian"], \u0441\u0438\u043C\u0444\u043E\u043D\u0438\u044F: ["russian"], \u0441\u0438\u043D\u0438\u0439: ["russian"], \u0441\u0438\u043D\u0442\u0435\u0437: ["russian"], \u0441\u0438\u043D\u044F\u043A: ["russian"], \u0441\u0438\u0440\u0435\u043D\u044C: ["russian"], \u0441\u0438\u0441\u0442\u0435\u043C\u0430: ["russian"], \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044F: ["russian"], \u0441\u0438\u044F\u043D\u0438\u0435: ["russian"], \u0441\u043A\u0430\u0437\u0430\u0442\u044C: ["russian"], \u0441\u043A\u0430\u043B\u0430: ["russian"], \u0441\u043A\u0430\u043C\u0435\u0439\u043A\u0430: ["russian"], \u0441\u043A\u0430\u043D\u0434\u0430\u043B: ["russian"], \u0441\u043A\u0430\u0442\u0435\u0440\u0442\u044C: ["russian"], \u0441\u043A\u0430\u0447\u043E\u043A: ["russian"], \u0441\u043A\u0432\u0430\u0436\u0438\u043D\u0430: ["russian"], \u0441\u043A\u0432\u0435\u0440: ["russian"], \u0441\u043A\u0432\u043E\u0437\u044C: ["russian"], \u0441\u043A\u0435\u043B\u0435\u0442: ["russian"], \u0441\u043A\u0438\u0434\u043A\u0430: ["russian"], \u0441\u043A\u043B\u0430\u0434: ["russian"], \u0441\u043A\u043E\u043B\u044C\u043A\u043E: ["russian"], \u0441\u043A\u043E\u0440\u044B\u0439: ["russian"], \u0441\u043A\u043E\u0441\u0438\u0442\u044C: ["russian"], \u0441\u043A\u043E\u0442: ["russian"], \u0441\u043A\u0440\u0438\u043F\u043A\u0430: ["russian"], \u0441\u043A\u0443\u0434\u043D\u044B\u0439: ["russian"], \u0441\u043A\u0443\u043A\u0430: ["russian"], \u0441\u043B\u0430\u0431\u044B\u0439: ["russian"], \u0441\u043B\u0430\u0432\u0430: ["russian"], \u0441\u043B\u0430\u0434\u043A\u0438\u0439: ["russian"], \u0441\u043B\u0435\u0433\u043A\u0430: ["russian"], \u0441\u043B\u0435\u0434: ["russian"], \u0441\u043B\u0435\u0437\u0430: ["russian"], \u0441\u043B\u0435\u043F\u043E\u0439: ["russian"], \u0441\u043B\u0435\u0441\u0430\u0440\u044C: ["russian"], \u0441\u043B\u0438\u0448\u043A\u043E\u043C: ["russian"], \u0441\u043B\u043E\u0432\u043E: ["russian"], \u0441\u043B\u043E\u0433: ["russian"], \u0441\u043B\u043E\u0436\u043D\u044B\u0439: ["russian"], \u0441\u043B\u043E\u043C\u0430\u0442\u044C: ["russian"], \u0441\u043B\u0443\u0436\u0431\u0430: ["russian"], \u0441\u043B\u0443\u0445: ["russian"], \u0441\u043B\u0443\u0447\u0430\u0439: ["russian"], \u0441\u043B\u044B\u0448\u0430\u0442\u044C: ["russian"], \u0441\u043B\u044E\u043D\u0430: ["russian"], \u0441\u043C\u0435\u0436\u043D\u044B\u0439: ["russian"], \u0441\u043C\u0435\u043B\u044B\u0439: ["russian"], \u0441\u043C\u0435\u043D\u0438\u0442\u044C: ["russian"], \u0441\u043C\u0435\u0441\u044C: ["russian"], \u0441\u043C\u0435\u0442\u0430\u043D\u0430: ["russian"], \u0441\u043C\u0435\u0445: ["russian"], \u0441\u043C\u043E\u043B\u0430: ["russian"], \u0441\u043C\u0443\u0433\u043B\u044B\u0439: ["russian"], \u0441\u043C\u0443\u0442\u043D\u044B\u0439: ["russian"], \u0441\u043C\u0443\u0449\u0430\u0442\u044C: ["russian"], \u0441\u043C\u044B\u0441\u043B: ["russian"], \u0441\u043D\u0430\u0439\u043F\u0435\u0440: ["russian"], \u0441\u043D\u0430\u0440\u044F\u0434: ["russian"], \u0441\u043D\u0430\u0447\u0430\u043B\u0430: ["russian"], \u0441\u043D\u0435\u0433: ["russian"], \u0441\u043D\u0438\u0437\u0443: ["russian"], \u0441\u043D\u0438\u0442\u044C\u0441\u044F: ["russian"], "\u0441\u043D\u043E\uFFFD\uFFFD\u0430": ["russian"], \u0441\u043D\u044F\u0442\u044C: ["russian"], \u0441\u043E\u0431\u0430\u043A\u0430: ["russian"], \u0441\u043E\u0431\u043B\u0430\u0437\u043D: ["russian"], \u0441\u043E\u0431\u0440\u0430\u043D\u0438\u0435: ["russian"], \u0441\u043E\u0431\u044B\u0442\u0438\u0435: ["russian"], \u0441\u043E\u0432\u0435\u0441\u0442\u044C: ["russian"], \u0441\u043E\u0432\u0441\u0435\u043C: ["russian"], \u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0435: ["russian"], \u0441\u043E\u0437\u0434\u0430\u0442\u044C: ["russian"], \u0441\u043E\u0437\u043D\u0430\u043D\u0438\u0435: ["russian"], \u0441\u043E\u0437\u0440\u0435\u0442\u044C: ["russian"], \u0441\u043E\u0439\u0442\u0438\u0441\u044C: ["russian"], \u0441\u043E\u043A\u043E\u043B: ["russian"], \u0441\u043E\u043B\u0434\u0430\u0442: ["russian"], \u0441\u043E\u043B\u0435\u043D\u044B\u0439: ["russian"], \u0441\u043E\u043B\u043D\u0446\u0435: ["russian"], \u0441\u043E\u043B\u043E\u043C\u0430: ["russian"], \u0441\u043E\u043C\u043D\u0435\u043D\u0438\u0435: ["russian"], \u0441\u043E\u043D\u043D\u044B\u0439: ["russian"], \u0441\u043E\u043F\u0435\u0440\u043D\u0438\u043A: ["russian"], \u0441\u043E\u0440\u0430\u0442\u043D\u0438\u043A: ["russian"], \u0441\u043E\u0440\u0432\u0430\u0442\u044C: ["russian"], \u0441\u043E\u0441\u0435\u0434: ["russian"], \u0441\u043E\u0441\u0438\u0441\u043A\u0430: ["russian"], \u0441\u043E\u0441\u0442\u0430\u0432: ["russian"], \u0441\u043E\u0442\u043D\u044F: ["russian"], \u0441\u043E\u0443\u0441: ["russian"], \u0441\u043E\u044E\u0437: ["russian"], \u0441\u043F\u0430\u0434: ["russian"], \u0441\u043F\u0430\u043B\u044C\u043D\u044F: ["russian"], \u0441\u043F\u0430\u0441\u0442\u0438: ["russian"], \u0441\u043F\u0435\u043A\u0442\u0440: ["russian"], \u0441\u043F\u0435\u0440\u0432\u0430: ["russian"], \u0441\u043F\u0435\u0448\u0438\u0442\u044C: ["russian"], \u0441\u043F\u0438\u043D\u0430: ["russian"], \u0441\u043F\u0438\u0440\u0442: ["russian"], \u0441\u043F\u0438\u0441\u043E\u043A: ["russian"], \u0441\u043F\u0438\u0447\u043A\u0430: ["russian"], \u0441\u043F\u043B\u0430\u0432: ["russian"], \u0441\u043F\u043E\u043D\u0441\u043E\u0440: ["russian"], \u0441\u043F\u043E\u0440: ["russian"], \u0441\u043F\u043E\u0441\u043E\u0431: ["russian"], \u0441\u043F\u0440\u0430\u0432\u043A\u0430: ["russian"], \u0441\u043F\u0443\u0441\u0442\u044F: ["russian"], \u0441\u043F\u0443\u0442\u043D\u0438\u043A: ["russian"], \u0441\u0440\u0430\u0437\u0443: ["russian"], \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E: ["russian"], \u0441\u0440\u043E\u043A: ["russian"], \u0441\u0440\u044B\u0432: ["russian"], \u0441\u0441\u043E\u0440\u0430: ["russian"], \u0441\u0441\u044B\u043B\u043A\u0430: ["russian"], \u0441\u0442\u0430\u0432\u0438\u0442\u044C: ["russian"], \u0441\u0442\u0430\u0434\u0438\u044F: ["russian"], \u0441\u0442\u0430\u043A\u0430\u043D: ["russian"], \u0441\u0442\u0430\u043D\u0446\u0438\u044F: ["russian"], \u0441\u0442\u0430\u0440\u044B\u0439: ["russian"], \u0441\u0442\u0430\u044F: ["russian"], \u0441\u0442\u0435\u0431\u0435\u043B\u044C: ["russian"], \u0441\u0442\u0435\u043A\u043B\u043E: ["russian"], \u0441\u0442\u0435\u043D\u0430: ["russian"], \u0441\u0442\u0435\u043F\u0435\u043D\u044C: ["russian"], \u0441\u0442\u0435\u0440\u0435\u0442\u044C: ["russian"], \u0441\u0442\u0438\u043B\u044C: ["russian"], \u0441\u0442\u0438\u043C\u0443\u043B: ["russian"], \u0441\u0442\u0438\u0440\u0430\u0442\u044C: ["russian"], \u0441\u0442\u0438\u0445\u0438: ["russian"], \u0441\u0442\u043E\u0438\u0442\u044C: ["russian"], \u0441\u0442\u043E\u0439\u043A\u0430: ["russian"], \u0441\u0442\u043E\u043B: ["russian"], \u0441\u0442\u043E\u043D\u0430\u0442\u044C: ["russian"], \u0441\u0442\u043E\u043F\u0430: ["russian"], \u0441\u0442\u043E\u0440\u043E\u043D\u0430: ["russian"], \u0441\u0442\u043E\u044F\u043D\u043A\u0430: ["russian"], \u0441\u0442\u0440\u0430\u043D\u0430: ["russian"], \u0441\u0442\u0440\u0438\u0447\u044C: ["russian"], \u0441\u0442\u0440\u043E\u0433\u0438\u0439: ["russian"], \u0441\u0442\u0440\u0443\u044F: ["russian"], \u0441\u0442\u0443\u0434\u0435\u043D\u0442: ["russian"], \u0441\u0442\u0443\u043A: ["russian"], \u0441\u0442\u0443\u043F\u043D\u044F: ["russian"], \u0441\u0442\u044B\u0434\u043D\u043E: ["russian"], \u0441\u0443\u0431\u0431\u043E\u0442\u0430: ["russian"], \u0441\u0443\u0431\u044A\u0435\u043A\u0442: ["russian"], \u0441\u0443\u0432\u0435\u043D\u0438\u0440: ["russian"], \u0441\u0443\u0433\u0440\u043E\u0431: ["russian"], \u0441\u0443\u0433\u0443\u0431\u043E: ["russian"], \u0441\u0443\u0434\u0438\u0442\u044C: ["russian"], \u0441\u0443\u0434\u043D\u043E: ["russian"], \u0441\u0443\u0434\u044C\u0431\u0430: ["russian"], \u0441\u0443\u0435\u0442\u0430: ["russian"], \u0441\u0443\u043C\u0435\u0442\u044C: ["russian"], \u0441\u0443\u043C\u043C\u0430: ["russian"], \u0441\u0443\u043C\u0440\u0430\u043A: ["russian"], \u0441\u0443\u043D\u0434\u0443\u043A: ["russian"], \u0441\u0443\u043F\u0440\u0443\u0433: ["russian"], \u0441\u0443\u0440\u043E\u0432\u044B\u0439: ["russian"], \u0441\u0443\u0442\u043A\u0438: ["russian"], \u0441\u0443\u0445\u043E\u0439: ["russian"], \u0441\u0443\u0448\u0430: ["russian"], \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043E: ["russian"], \u0441\u0444\u0435\u0440\u0430: ["russian"], \u0441\u0445\u0435\u043C\u0430: ["russian"], \u0441\u0445\u043E\u0436\u0438\u0439: ["russian"], \u0441\u0446\u0435\u043D\u0430\u0440\u0438\u0439: ["russian"], \u0441\u0447\u0430\u0441\u0442\u044C\u0435: ["russian"], \u0441\u0447\u0438\u0442\u0430\u0442\u044C: ["russian"], \u0441\u044A\u0435\u0437\u0434: ["russian"], \u0441\u044B\u0433\u0440\u0430\u0442\u044C: ["russian"], \u0441\u044B\u0440\u043E\u0439: ["russian"], \u0441\u044B\u0442\u044B\u0439: ["russian"], \u0441\u044B\u0449\u0438\u043A: ["russian"], \u0441\u044E\u0434\u0430: ["russian"], \u0441\u044E\u0436\u0435\u0442: ["russian"], \u0441\u044E\u0440\u043F\u0440\u0438\u0437: ["russian"], \u0442\u0430\u0439\u043D\u0430: ["russian"], \u0442\u0430\u043A\u0436\u0435: ["russian"], \u0442\u0430\u043A\u043E\u0439: ["russian"], \u0442\u0430\u043A\u0441\u0438: ["russian"], \u0442\u0430\u043A\u0442\u0438\u043A\u0430: ["russian"], \u0442\u0430\u043B\u0438\u044F: ["russian"], \u0442\u0430\u043C\u043E\u0436\u043D\u044F: ["russian"], \u0442\u0430\u043D\u0435\u0446: ["russian"], \u0442\u0430\u0440\u0430\u043A\u0430\u043D: ["russian"], \u0442\u0430\u0440\u0435\u043B\u043A\u0430: ["russian"], \u0442\u0430\u0440\u0438\u0444: ["russian"], \u0442\u0430\u0449\u0438\u0442\u044C: ["russian"], \u0442\u0430\u044F\u0442\u044C: ["russian"], \u0442\u0432\u0430\u0440\u044C: ["russian"], \u0442\u0435\u0430\u0442\u0440: ["russian"], \u0442\u0435\u0437\u0438\u0441: ["russian"], \u0442\u0435\u043A\u0441\u0442: ["russian"], \u0442\u0435\u043A\u0443\u0449\u0438\u0439: ["russian"], \u0442\u0435\u043B\u0435\u0444\u043E\u043D: ["russian"], \u0442\u0435\u043C\u0430: ["russian"], \u0442\u0435\u043C\u043D\u043E\u0442\u0430: ["russian"], \u0442\u0435\u043D\u0435\u0432\u043E\u0439: ["russian"], \u0442\u0435\u043D\u043D\u0438\u0441: ["russian"], \u0442\u0435\u043E\u0440\u0438\u044F: ["russian"], \u0442\u0435\u043F\u0435\u0440\u044C: ["russian"], \u0442\u0435\u043F\u043B\u043E: ["russian"], \u0442\u0435\u0440\u0430\u043F\u0438\u044F: ["russian"], \u0442\u0435\u0440\u0437\u0430\u0442\u044C: ["russian"], \u0442\u0435\u0440\u043C\u0438\u043D: ["russian"], \u0442\u0435\u0440\u043F\u0435\u0442\u044C: ["russian"], \u0442\u0435\u0440\u0440\u0430\u0441\u0430: ["russian"], \u0442\u0435\u0440\u044F\u0442\u044C: ["russian"], \u0442\u0435\u0441\u043D\u044B\u0439: ["russian"], \u0442\u0435\u0442\u0440\u0430\u0434\u044C: ["russian"], \u0442\u0435\u0445\u043D\u0438\u043A\u0430: ["russian"], \u0442\u0435\u0447\u0435\u043D\u0438\u0435: ["russian"], \u0442\u0438\u0433\u0440: ["russian"], \u0442\u0438\u043F\u043E\u0432\u043E\u0439: ["russian"], \u0442\u0438\u0440\u0430\u0436: ["russian"], \u0442\u0438\u0442\u0443\u043B: ["russian"], \u0442\u0438\u0445\u0438\u0439: ["russian"], \u0442\u043A\u0430\u043D\u044C: ["russian"], \u0442\u043E\u0432\u0430\u0440\u0438\u0449: ["russian"], \u0442\u043E\u0436\u0435: ["russian"], \u0442\u043E\u043B\u043F\u0430: ["russian"], \u0442\u043E\u043B\u0441\u0442\u044B\u0439: ["russian"], \u0442\u043E\u043B\u0447\u043E\u043A: ["russian"], \u0442\u043E\u043B\u0449\u0438\u043D\u0430: ["russian"], \u0442\u043E\u043B\u044C\u043A\u043E: ["russian"], \u0442\u043E\u043D\u043A\u0438\u0439: ["russian"], \u0442\u043E\u043D\u043D\u0430: ["russian"], \u0442\u043E\u043F\u0438\u0442\u044C: ["russian"], \u0442\u043E\u043F\u043E\u0440: ["russian"], \u0442\u043E\u0440\u0433\u043E\u0432\u043B\u044F: ["russian"], \u0442\u043E\u0440\u043C\u043E\u0437: ["russian"], \u0442\u043E\u0440\u0447\u0430\u0442\u044C: ["russian"], \u0442\u043E\u0442\u0447\u0430\u0441: ["russian"], \u0442\u043E\u0447\u043A\u0430: ["russian"], \u0442\u043E\u0447\u043D\u043E: ["russian"], \u0442\u043E\u0449\u0438\u0439: ["russian"], \u0442\u0440\u0430\u0432\u0430: ["russian"], \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044F: ["russian"], \u0442\u0440\u0430\u043A\u0442\u043E\u0440: ["russian"], \u0442\u0440\u0430\u043C\u0432\u0430\u0439: ["russian"], \u0442\u0440\u0430\u043D\u0448\u0435\u044F: ["russian"], \u0442\u0440\u0430\u0441\u0441\u0430: ["russian"], \u0442\u0440\u0435\u0432\u043E\u0433\u0430: ["russian"], \u0442\u0440\u0435\u0437\u0432\u044B\u0439: ["russian"], \u0442\u0440\u0435\u043D\u0435\u0440: ["russian"], \u0442\u0440\u0435\u043F\u0435\u0442: ["russian"], \u0442\u0440\u0435\u0441\u043A: ["russian"], \u0442\u0440\u0435\u0442\u0438\u0439: ["russian"], \u0442\u0440\u0435\u0449\u0438\u043D\u0430: ["russian"], \u0442\u0440\u0438\u0431\u0443\u043D\u0430: ["russian"], \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C: ["russian"], \u0442\u0440\u0438\u0441\u0442\u0430: ["russian"], \u0442\u0440\u0438\u0443\u043C\u0444: ["russian"], \u0442\u0440\u043E\u0433\u0430\u0442\u044C: ["russian"], \u0442\u0440\u043E\u0439\u043A\u0430: ["russian"], \u0442\u0440\u043E\u043D\u0443\u0442\u044C: ["russian"], \u0442\u0440\u043E\u043F\u0430: ["russian"], \u0442\u0440\u043E\u0442\u0443\u0430\u0440: ["russian"], \u0442\u0440\u0443\u0431\u043A\u0430: ["russian"], \u0442\u0440\u0443\u0434: ["russian"], \u0442\u0440\u044E\u043A: ["russian"], \u0442\u0440\u044F\u043F\u043A\u0430: ["russian"], \u0442\u0443\u0433\u043E: ["russian"], \u0442\u0443\u043B\u043E\u0432\u0438\u0449\u0435: ["russian"], \u0442\u0443\u043C\u0430\u043D: ["russian"], \u0442\u0443\u043C\u0431\u043E\u0447\u043A\u0430: ["russian"], \u0442\u0443\u043D\u0434\u0440\u0430: ["russian"], \u0442\u0443\u043F\u0438\u043A: ["russian"], \u0442\u0443\u0440\u0438\u0441\u0442: ["russian"], \u0442\u0443\u0440\u043D\u0438\u0440: ["russian"], \u0442\u0443\u0441\u043A\u043B\u044B\u0439: ["russian"], \u0442\u0443\u0444\u043B\u044F: ["russian"], \u0442\u0443\u0447\u0430: ["russian"], \u0442\u044B\u0441\u044F\u0447\u0430: ["russian"], \u0442\u044F\u0433\u0430: ["russian"], \u0442\u044F\u0436\u0435\u043B\u043E: ["russian"], \u0443\u0431\u0435\u0436\u0430\u0442\u044C: ["russian"], \u0443\u0431\u043E\u0433\u0438\u0439: ["russian"], \u0443\u0431\u043E\u0440\u043A\u0430: ["russian"], \u0443\u0432\u0430\u0436\u0435\u043D\u0438\u0435: ["russian"], \u0443\u0432\u0435\u0437\u0442\u0438: ["russian"], \u0443\u0432\u043E\u043B\u0438\u0442\u044C: ["russian"], \u0443\u0433\u0430\u0434\u0430\u0442\u044C: ["russian"], \u0443\u0433\u043E\u043B: ["russian"], \u0443\u0433\u043E\u0449\u0430\u0442\u044C: ["russian"], \u0443\u0433\u0440\u043E\u0437\u0430: ["russian"], \u0443\u0433\u0440\u044E\u043C\u044B\u0439: ["russian"], \u0443\u0434\u0430\u0440: ["russian"], \u0443\u0434\u0430\u0447\u043D\u044B\u0439: ["russian"], \u0443\u0434\u0435\u043B\u044F\u0442\u044C: ["russian"], \u0443\u0434\u0438\u0432\u0438\u0442\u044C: ["russian"], \u0443\u0434\u043E\u0431\u043D\u044B\u0439: ["russian"], \u0443\u0434\u043E\u0447\u043A\u0430: ["russian"], \u0443\u0435\u0437\u0436\u0430\u0442\u044C: ["russian"], \u0443\u0436\u0438\u043D: ["russian"], \u0443\u0437\u0435\u043B: ["russian"], \u0443\u0437\u043A\u0438\u0439: ["russian"], \u0443\u0439\u0442\u0438: ["russian"], \u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0435: ["russian"], \u0443\u043A\u043B\u043E\u043D: ["russian"], \u0443\u043A\u0440\u0430\u0441\u0442\u044C: ["russian"], \u0443\u043A\u0443\u0441\u0438\u0442\u044C: ["russian"], \u0443\u043B\u0435\u0442\u0430\u0442\u044C: ["russian"], \u0443\u043B\u0438\u0446\u0430: ["russian"], \u0443\u043B\u044B\u0431\u043A\u0430: ["russian"], \u0443\u043C\u0435\u043B\u043E: ["russian"], \u0443\u043C\u0435\u043D\u0438\u0435: ["russian"], \u0443\u043C\u043D\u044B\u0439: ["russian"], \u0443\u043C\u043E\u043B\u044F\u0442\u044C: ["russian"], \u0443\u043D\u0435\u0441\u0442\u0438: ["russian"], \u0443\u043D\u0438\u0436\u0430\u0442\u044C: ["russian"], \u0443\u043D\u044B\u043B\u044B\u0439: ["russian"], \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0430: ["russian"], \u0443\u043F\u0430\u0441\u0442\u044C: ["russian"], \u0443\u043F\u043E\u0440\u043D\u043E: ["russian"], \u0443\u043F\u0440\u0435\u043A: ["russian"], \u0443\u0440\u043D\u0430: ["russian"], \u0443\u0440\u043E\u0432\u0435\u043D\u044C: ["russian"], \u0443\u0440\u043E\u0436\u0430\u0439: ["russian"], \u0443\u0440\u043E\u043D\u0438\u0442\u044C: ["russian"], \u0443\u0441\u0430\u0434\u044C\u0431\u0430: ["russian"], \u0443\u0441\u0430\u0442\u044B\u0439: ["russian"], \u0443\u0441\u0432\u043E\u0438\u0442\u044C: ["russian"], \u0443\u0441\u0438\u043B\u0438\u0435: ["russian"], \u0443\u0441\u043B\u043E\u0432\u0438\u0435: ["russian"], \u0443\u0441\u043B\u0443\u0433\u0430: ["russian"], \u0443\u0441\u043C\u0435\u0448\u043A\u0430: ["russian"], \u0443\u0441\u043F\u0435\u0442\u044C: ["russian"], \u0443\u0441\u0442\u0430\u0432: ["russian"], \u0443\u0441\u0442\u043E\u044F\u0442\u044C: ["russian"], \u0443\u0442\u0435\u0447\u043A\u0430: ["russian"], \u0443\u0442\u0435\u0448\u0430\u0442\u044C: ["russian"], \u0443\u0442\u0440\u043E: ["russian"], \u0443\u0446\u0435\u043B\u0435\u0442\u044C: ["russian"], \u0443\u0447\u0430\u0441\u0442\u0438\u0435: ["russian"], \u0443\u0447\u0435\u043D\u0438\u043A: ["russian"], \u0443\u0447\u0435\u0441\u0442\u044C: ["russian"], \u0443\u0449\u0435\u043B\u044C\u0435: ["russian"], \u0443\u0449\u0435\u0440\u0431: ["russian"], \u0443\u044E\u0442\u043D\u044B\u0439: ["russian"], \u0444\u0430\u0431\u0440\u0438\u043A\u0430: ["russian"], \u0444\u0430\u0432\u043E\u0440\u0438\u0442: ["russian"], \u0444\u0430\u043A\u0435\u043B: ["russian"], \u0444\u0430\u043A\u0442: ["russian"], \u0444\u0430\u043C\u0438\u043B\u0438\u044F: ["russian"], \u0444\u0430\u043D\u0442\u0430\u0437\u0438\u044F: ["russian"], \u0444\u0430\u0441\u0430\u0434: ["russian"], \u0444\u0435\u0432\u0440\u0430\u043B\u044C: ["russian"], \u0444\u0435\u043D\u043E\u043C\u0435\u043D: ["russian"], \u0444\u0435\u0440\u043C\u0435\u0440: ["russian"], \u0444\u0438\u0433\u0443\u0440\u0430: ["russian"], \u0444\u0438\u0437\u0438\u043A\u0430: ["russian"], \u0444\u0438\u043B\u0438\u0430\u043B: ["russian"], \u0444\u0438\u043B\u043E\u0441\u043E\u0444: ["russian"], \u0444\u0438\u043B\u044C\u043C: ["russian"], \u0444\u0438\u043D\u0430\u043B: ["russian"], \u0444\u043B\u0430\u0433: ["russian"], \u0444\u043B\u043E\u0442: ["russian"], \u0444\u043E\u0439\u0435: ["russian"], \u0444\u043E\u043A\u0443\u0441: ["russian"], \u0444\u043E\u043D\u0430\u0440\u044C: ["russian"], \u0444\u043E\u043D\u0434: ["russian"], \u0444\u043E\u043D\u0442\u0430\u043D: ["russian"], \u0444\u043E\u0440\u043C\u0430: ["russian"], \u0444\u043E\u0440\u0443\u043C: ["russian"], \u0444\u043E\u0442\u043E: ["russian"], \u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442: ["russian"], \u0444\u0440\u0430\u0437\u0430: ["russian"], \u0444\u0440\u0430\u043A\u0446\u0438\u044F: ["russian"], \u0444\u0440\u043E\u043D\u0442: ["russian"], \u0444\u0440\u0443\u043A\u0442: ["russian"], \u0444\u0443\u043D\u043A\u0446\u0438\u044F: ["russian"], \u0444\u0443\u0440\u0430\u0436\u043A\u0430: ["russian"], \u0444\u0443\u0442\u0431\u043E\u043B: ["russian"], \u0444\u0443\u0442\u043B\u044F\u0440: ["russian"], \u0445\u0430\u043B\u0430\u0442: ["russian"], \u0445\u0430\u043E\u0441: ["russian"], \u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440: ["russian"], \u0445\u0430\u0442\u0430: ["russian"], \u0445\u0432\u0430\u043B\u0438\u0442\u044C: ["russian"], \u0445\u0432\u0430\u0442\u0430\u0442\u044C: ["russian"], \u0445\u0432\u043E\u0439\u043D\u044B\u0439: ["russian"], \u0445\u0432\u043E\u0441\u0442: ["russian"], \u0445\u0438\u043C\u0438\u044F: ["russian"], \u0445\u0438\u0440\u0443\u0440\u0433: ["russian"], \u0445\u0438\u0442\u0440\u044B\u0439: ["russian"], \u0445\u0438\u0449\u043D\u0438\u043A: ["russian"], \u0445\u043B\u0435\u0431: ["russian"], \u0445\u043B\u044B\u043D\u0443\u0442\u044C: ["russian"], \u0445\u043C\u0443\u0440\u044B\u0439: ["russian"], \u0445\u043E\u0434\u0438\u0442\u044C: ["russian"], \u0445\u043E\u0437\u044F\u0438\u043D: ["russian"], \u0445\u043E\u043A\u043A\u0435\u0439: ["russian"], \u0445\u043E\u043B\u043C: ["russian"], \u0445\u043E\u043B\u0441\u0442: ["russian"], \u0445\u043E\u0440\u043E\u0448\u043E: ["russian"], \u0445\u043E\u0442\u0435\u0442\u044C: ["russian"], \u0445\u0440\u0430\u0431\u0440\u044B\u0439: ["russian"], \u0445\u0440\u0430\u043C: ["russian"], \u0445\u0440\u0430\u043D\u0438\u0442\u044C: ["russian"], \u0445\u0440\u0435\u0431\u0435\u0442: ["russian"], \u0445\u0440\u0435\u043D: ["russian"], \u0445\u0440\u0438\u043F\u043B\u043E: ["russian"], \u0445\u0440\u043E\u043D\u0438\u043A\u0430: ["russian"], \u0445\u0440\u0443\u043F\u043A\u0438\u0439: ["russian"], \u0445\u0443\u0434\u043E\u0436\u043D\u0438\u043A: ["russian"], \u0445\u0443\u0434\u0448\u0438\u0439: ["russian"], \u0445\u0443\u043B\u0438\u0433\u0430\u043D: ["russian"], \u0445\u0443\u0442\u043E\u0440: ["russian"], \u0446\u0430\u0440\u044C: ["russian"], \u0446\u0432\u0435\u0442\u043E\u043A: ["russian"], \u0446\u0435\u043B\u0435\u0432\u043E\u0439: ["russian"], \u0446\u0435\u043B\u0438\u043A\u043E\u043C: ["russian"], \u0446\u0435\u043B\u043E\u0435: ["russian"], \u0446\u0435\u043B\u044C: ["russian"], \u0446\u0435\u043D\u0437\u0443\u0440\u0430: ["russian"], \u0446\u0435\u043D\u0438\u0442\u044C: ["russian"], \u0446\u0435\u043D\u0442\u0440: ["russian"], \u0446\u0435\u043F\u043D\u043E\u0439: ["russian"], \u0446\u0438\u043A\u043B: ["russian"], \u0446\u0438\u043B\u0438\u043D\u0434\u0440: ["russian"], \u0446\u0438\u0440\u043A: ["russian"], \u0446\u0438\u0442\u0430\u0442\u0430: ["russian"], \u0446\u0438\u0444\u0440\u0430: ["russian"], \u0447\u0430\u0439\u043D\u0438\u043A: ["russian"], \u0447\u0430\u0441\u044B: ["russian"], \u0447\u0430\u0448\u043A\u0430: ["russian"], \u0447\u0435\u043B\u043E\u0432\u0435\u043A: ["russian"], \u0447\u0435\u043B\u044E\u0441\u0442\u044C: ["russian"], \u0447\u0435\u043C\u043E\u0434\u0430\u043D: ["russian"], \u0447\u0435\u043C\u043F\u0438\u043E\u043D: ["russian"], \u0447\u0435\u043F\u0443\u0445\u0430: ["russian"], \u0447\u0435\u0440\u0432\u044C: ["russian"], \u0447\u0435\u0440\u0434\u0430\u043A: ["russian"], \u0447\u0435\u0440\u0435\u0437: ["russian"], \u0447\u0435\u0440\u043D\u0438\u043B\u0430: ["russian"], \u0447\u0435\u0440\u0442\u0430: ["russian"], \u0447\u0435\u0441\u043D\u043E\u043A: ["russian"], \u0447\u0435\u0441\u0442\u043D\u043E: ["russian"], \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044C: ["russian"], \u0447\u0435\u0442\u044B\u0440\u0435: ["russian"], \u0447\u0438\u0441\u043B\u043E: ["russian"], \u0447\u0438\u0441\u0442\u044B\u0439: ["russian"], \u0447\u0438\u0442\u0430\u0442\u0435\u043B\u044C: ["russian"], \u0447\u0442\u0435\u043D\u0438\u0435: ["russian"], \u0447\u0442\u043E\u0431\u044B: ["russian"], \u0447\u0443\u0432\u0441\u0442\u0432\u043E: ["russian"], \u0447\u0443\u0434\u0430\u043A: ["russian"], \u0447\u0443\u0434\u043D\u044B\u0439: ["russian"], \u0447\u0443\u0434\u043E: ["russian"], \u0447\u0443\u0436\u043E\u0439: ["russian"], \u0447\u0443\u043B\u043E\u043A: ["russian"], \u0447\u0443\u043C\u0430: ["russian"], \u0447\u0443\u0448\u044C: ["russian"], \u0447\u0443\u044F\u0442\u044C: ["russian"], \u0448\u0430\u0433\u0430\u0442\u044C: ["russian"], \u0448\u0430\u043D\u0441: ["russian"], \u0448\u0430\u043F\u043A\u0430: ["russian"], \u0448\u0430\u0440\u0438\u043A: ["russian"], \u0448\u0430\u0440\u0444: ["russian"], \u0448\u0430\u0445\u043C\u0430\u0442\u044B: ["russian"], \u0448\u0430\u0448\u043B\u044B\u043A: ["russian"], \u0448\u0435\u0434\u0435\u0432\u0440: ["russian"], \u0448\u0435\u043F\u0442\u0430\u0442\u044C: ["russian"], \u0448\u0435\u0440\u0441\u0442\u044C: ["russian"], \u0448\u0435\u0441\u0442\u043E\u0439: ["russian"], \u0448\u0438\u043D\u0435\u043B\u044C: ["russian"], \u0448\u0438\u0440\u0438\u043D\u0430: ["russian"], \u0448\u0438\u0448\u043A\u0430: ["russian"], \u0448\u043A\u0430\u0444: ["russian"], \u0448\u043A\u043E\u043B\u0430: ["russian"], \u0448\u043A\u0443\u0440\u0430: ["russian"], \u0448\u043B\u0430\u043D\u0433: ["russian"], \u0448\u043B\u0435\u043C: ["russian"], \u0448\u043D\u0443\u0440: ["russian"], \u0448\u043E\u043A\u043E\u043B\u0430\u0434: ["russian"], \u0448\u043E\u0440\u043E\u0445: ["russian"], \u0448\u043E\u0441\u0441\u0435: ["russian"], \u0448\u043F\u0438\u043E\u043D: ["russian"], \u0448\u043F\u0440\u0438\u0446: ["russian"], \u0448\u0442\u0430\u0431: ["russian"], \u0448\u0442\u0430\u043C\u043C: ["russian"], \u0448\u0442\u0430\u043D\u044B: ["russian"], \u0448\u0442\u0430\u0442\u043D\u044B\u0439: ["russian"], \u0448\u0442\u043E\u0440\u0430: ["russian"], \u0448\u0442\u0440\u0430\u0444: ["russian"], \u0448\u0442\u0443\u0440\u043C: ["russian"], \u0448\u0442\u044B\u043A: ["russian"], \u0448\u0443\u043C\u043D\u043E: ["russian"], \u0448\u0443\u0440\u0448\u0430\u0442\u044C: ["russian"], \u0448\u0443\u0442\u0438\u0442\u044C: ["russian"], \u0448\u0443\u0442\u043A\u0430: ["russian"], \u0449\u0435\u0434\u0440\u044B\u0439: ["russian"], \u0449\u0435\u043A\u0430: ["russian"], \u0449\u0435\u043D\u043E\u043A: ["russian"], \u044D\u043A\u0437\u0430\u043C\u0435\u043D: ["russian"], \u044D\u043A\u0438\u043F\u0430\u0436: ["russian"], \u044D\u043A\u043E\u043D\u043E\u043C\u0438\u044F: ["russian"], \u044D\u043A\u0440\u0430\u043D: ["russian"], \u044D\u043A\u0441\u043F\u0435\u0440\u0442: ["russian"], \u044D\u043B\u0435\u043C\u0435\u043D\u0442: ["russian"], \u044D\u043B\u0438\u0442\u043D\u044B\u0439: ["russian"], \u044D\u043C\u043E\u0446\u0438\u044F: ["russian"], \u044D\u043D\u0435\u0440\u0433\u0438\u044F: ["russian"], \u044D\u043F\u0438\u0437\u043E\u0434: ["russian"], \u044D\u043F\u043E\u0445\u0430: ["russian"], \u044D\u0441\u043A\u0438\u0437: ["russian"], \u044D\u0441\u0442\u0440\u0430\u0434\u0430: ["russian"], \u044D\u0442\u0430\u043F: ["russian"], \u044D\u0442\u0438\u043A\u0430: ["russian"], \u044D\u0442\u043E\u0442: ["russian"], \u044D\u0444\u0438\u0440: ["russian"], \u044D\u0444\u0444\u0435\u043A\u0442: ["russian"], \u044D\u0448\u0435\u043B\u043E\u043D: ["russian"], \u044E\u0431\u0438\u043B\u0435\u0439: ["russian"], \u044E\u0431\u043A\u0430: ["russian"], \u044E\u0436\u043D\u044B\u0439: ["russian"], \u044E\u043C\u043E\u0440: ["russian"], \u044E\u043D\u043E\u0441\u0442\u044C: ["russian"], \u044E\u0440\u0438\u0441\u0442: ["russian"], \u044E\u0441\u0442\u0438\u0446\u0438\u044F: ["russian"], \u044F\u0431\u043B\u043E\u043A\u043E: ["russian"], \u044F\u0432\u043B\u0435\u043D\u0438\u0435: ["russian"], \u044F\u0433\u043E\u0434\u0430: ["russian"], \u044F\u0434\u0440\u043E: ["russian"], \u044F\u0437\u044B\u043A: ["russian"], \u044F\u0439\u0446\u043E: ["russian"], \u044F\u043A\u043E\u0431\u044B: ["russian"], \u044F\u043A\u043E\u0440\u044C: ["russian"], \u044F\u043D\u0432\u0430\u0440\u044C: ["russian"], \u044F\u0440\u043A\u0438\u0439: ["russian"], \u044F\u0440\u043C\u0430\u0440\u043A\u0430: ["russian"], \u044F\u0440\u043E\u0441\u0442\u044C: ["russian"], \u044F\u0441\u043D\u044B\u0439: ["russian"], \u044F\u0445\u0442\u0430: ["russian"], \u044F\u0447\u0435\u0439\u043A\u0430: ["russian"], \u044F\u0449\u0438\u043A: ["russian"], a\u0301baco: ["spanish"], abdomen: ["spanish"], abeja: ["spanish"], abierto: ["spanish"], abogado: ["spanish"], abono: ["spanish"], aborto: ["spanish"], abrazo: ["spanish"], abrir: ["spanish"], abuelo: ["spanish"], abuso: ["spanish"], acabar: ["spanish"], academia: ["spanish"], acceso: ["spanish"], accio\u0301n: ["spanish"], aceite: ["spanish"], acelga: ["spanish"], acento: ["spanish"], aceptar: ["spanish"], a\u0301cido: ["spanish"], aclarar: ["spanish"], acne\u0301: ["spanish"], acoger: ["spanish"], acoso: ["spanish"], activo: ["spanish"], acto: ["spanish"], actriz: ["spanish"], actuar: ["spanish"], acudir: ["spanish"], acuerdo: ["spanish"], acusar: ["spanish"], adicto: ["spanish"], admitir: ["spanish"], adoptar: ["spanish"], adorno: ["spanish"], aduana: ["spanish"], adulto: ["spanish"], ae\u0301reo: ["spanish"], afectar: ["spanish"], aficio\u0301n: ["spanish"], afinar: ["spanish"], afirmar: ["spanish"], a\u0301gil: ["spanish"], agitar: ["spanish"], agoni\u0301a: ["spanish"], agosto: ["spanish"], agotar: ["spanish"], agregar: ["spanish"], agrio: ["spanish"], agua: ["spanish"], agudo: ["spanish"], a\u0301guila: ["spanish"], aguja: ["spanish"], ahogo: ["spanish"], ahorro: ["spanish"], aire: ["spanish"], aislar: ["spanish"], ajedrez: ["spanish"], ajeno: ["spanish"], ajuste: ["spanish"], alacra\u0301n: ["spanish"], alambre: ["spanish"], alarma: ["spanish"], alba: ["spanish"], a\u0301lbum: ["spanish"], alcalde: ["spanish"], aldea: ["spanish"], alegre: ["spanish"], alejar: ["spanish"], alerta: ["spanish"], aleta: ["spanish"], alfiler: ["spanish"], alga: ["spanish"], algodo\u0301n: ["spanish"], aliado: ["spanish"], aliento: ["spanish"], alivio: ["spanish"], alma: ["spanish"], almeja: ["spanish"], almi\u0301bar: ["spanish"], altar: ["spanish"], alteza: ["spanish"], altivo: ["spanish"], alto: ["spanish"], altura: ["spanish"], alumno: ["spanish"], alzar: ["spanish"], amable: ["spanish"], amante: ["spanish"], amapola: ["spanish"], amargo: ["spanish"], amasar: ["spanish"], a\u0301mbar: ["spanish"], a\u0301mbito: ["spanish"], ameno: ["spanish"], amigo: ["spanish", "turkish"], amistad: ["spanish"], amor: ["spanish"], amparo: ["spanish"], amplio: ["spanish"], ancho: ["spanish"], anciano: ["spanish"], ancla: ["spanish"], andar: ["spanish"], ande\u0301n: ["spanish"], anemia: ["spanish"], a\u0301ngulo: ["spanish"], anillo: ["spanish"], a\u0301nimo: ["spanish"], ani\u0301s: ["spanish"], anotar: ["spanish"], antena: ["spanish"], antiguo: ["spanish"], antojo: ["spanish"], anual: ["spanish"], anular: ["spanish"], anuncio: ["spanish"], an\u0303adir: ["spanish"], an\u0303ejo: ["spanish"], an\u0303o: ["spanish"], apagar: ["spanish"], aparato: ["spanish"], apetito: ["spanish"], apio: ["spanish"], aplicar: ["spanish"], apodo: ["spanish"], aporte: ["spanish"], apoyo: ["spanish"], aprender: ["spanish"], aprobar: ["spanish"], apuesta: ["spanish"], apuro: ["spanish"], arado: ["spanish"], aran\u0303a: ["spanish"], arar: ["spanish"], a\u0301rbitro: ["spanish"], a\u0301rbol: ["spanish"], arbusto: ["spanish"], archivo: ["spanish"], arco: ["spanish"], arder: ["spanish"], ardilla: ["spanish"], arduo: ["spanish"], a\u0301rea: ["spanish"], a\u0301rido: ["spanish"], aries: ["spanish"], armoni\u0301a: ["spanish"], arne\u0301s: ["spanish"], aroma: ["spanish", "turkish"], arpa: ["spanish"], arpo\u0301n: ["spanish"], arreglo: ["spanish"], arroz: ["spanish"], arruga: ["spanish"], arte: ["spanish"], artista: ["spanish"], asa: ["spanish"], asado: ["spanish"], asalto: ["spanish"], ascenso: ["spanish"], asegurar: ["spanish"], aseo: ["spanish"], asesor: ["spanish"], asiento: ["spanish"], asilo: ["spanish"], asistir: ["spanish"], asno: ["spanish"], asombro: ["spanish"], a\u0301spero: ["spanish"], astilla: ["spanish"], astro: ["spanish"], astuto: ["spanish"], asumir: ["spanish"], asunto: ["spanish"], atajo: ["spanish"], ataque: ["spanish"], atar: ["spanish"], atento: ["spanish"], ateo: ["spanish"], a\u0301tico: ["spanish"], atleta: ["spanish"], a\u0301tomo: ["spanish"], atraer: ["spanish"], atroz: ["spanish"], atu\u0301n: ["spanish"], audaz: ["spanish"], audio: ["spanish"], auge: ["spanish"], aula: ["spanish"], aumento: ["spanish"], ausente: ["spanish"], autor: ["spanish"], aval: ["spanish"], avance: ["spanish"], avaro: ["spanish"], ave: ["spanish"], avellana: ["spanish"], avena: ["spanish"], avestruz: ["spanish"], avio\u0301n: ["spanish"], aviso: ["spanish"], ayer: ["spanish"], ayuda: ["spanish"], ayuno: ["spanish"], azafra\u0301n: ["spanish"], azar: ["spanish"], azote: ["spanish"], azu\u0301car: ["spanish"], azufre: ["spanish"], azul: ["spanish"], baba: ["spanish"], babor: ["spanish"], bache: ["spanish"], bahi\u0301a: ["spanish"], baile: ["spanish"], bajar: ["spanish"], balanza: ["spanish"], balco\u0301n: ["spanish"], balde: ["spanish"], bambu\u0301: ["spanish"], banco: ["spanish"], banda: ["spanish"], ban\u0303o: ["spanish"], barba: ["spanish"], barco: ["spanish"], barniz: ["spanish"], barro: ["spanish"], ba\u0301scula: ["spanish"], basto\u0301n: ["spanish"], basura: ["spanish"], batalla: ["spanish"], bateri\u0301a: ["spanish"], batir: ["spanish"], batuta: ["spanish"], bau\u0301l: ["spanish"], bazar: ["spanish"], bebe\u0301: ["spanish"], bebida: ["spanish"], bello: ["spanish"], besar: ["spanish"], beso: ["spanish"], bestia: ["spanish"], bicho: ["spanish"], bien: ["spanish"], bingo: ["spanish"], blanco: ["spanish"], bloque: ["spanish"], blusa: ["spanish"], boa: ["spanish"], bobina: ["spanish"], bobo: ["spanish"], boca: ["spanish"], bocina: ["spanish"], boda: ["spanish"], bodega: ["spanish"], boina: ["spanish"], bola: ["spanish"], bolero: ["spanish", "turkish"], bolsa: ["spanish"], bomba: ["spanish"], bondad: ["spanish"], bonito: ["spanish"], bono: ["spanish"], bonsa\u0301i: ["spanish"], borde: ["spanish"], borrar: ["spanish"], bosque: ["spanish"], bote: ["spanish"], boti\u0301n: ["spanish"], bo\u0301veda: ["spanish"], bozal: ["spanish"], bravo: ["spanish"], brazo: ["spanish"], brecha: ["spanish"], breve: ["spanish"], brillo: ["spanish"], brinco: ["spanish"], brisa: ["spanish"], broca: ["spanish"], broma: ["spanish"], bronce: ["spanish"], brote: ["spanish"], bruja: ["spanish"], brusco: ["spanish"], bruto: ["spanish"], buceo: ["spanish"], bucle: ["spanish"], bueno: ["spanish"], buey: ["spanish"], bufanda: ["spanish"], bufo\u0301n: ["spanish"], bu\u0301ho: ["spanish"], buitre: ["spanish"], bulto: ["spanish"], burbuja: ["spanish"], burla: ["spanish"], burro: ["spanish"], buscar: ["spanish"], butaca: ["spanish"], buzo\u0301n: ["spanish"], caballo: ["spanish"], cabeza: ["spanish"], cabina: ["spanish"], cabra: ["spanish"], cacao: ["spanish"], cada\u0301ver: ["spanish"], cadena: ["spanish"], caer: ["spanish"], cafe\u0301: ["spanish"], cai\u0301da: ["spanish"], caima\u0301n: ["spanish"], caja: ["spanish"], cajo\u0301n: ["spanish"], cal: ["spanish"], calamar: ["spanish"], calcio: ["spanish"], caldo: ["spanish"], calidad: ["spanish"], calle: ["spanish"], calma: ["spanish"], calor: ["spanish"], calvo: ["spanish"], cama: ["spanish"], cambio: ["spanish"], camello: ["spanish"], camino: ["spanish"], campo: ["spanish"], ca\u0301ncer: ["spanish"], candil: ["spanish"], canela: ["spanish"], canguro: ["spanish"], canica: ["spanish"], canto: ["spanish"], can\u0303a: ["spanish"], can\u0303o\u0301n: ["spanish"], caoba: ["spanish"], caos: ["spanish"], capaz: ["spanish"], capita\u0301n: ["spanish"], capote: ["spanish"], captar: ["spanish"], capucha: ["spanish"], cara: ["spanish"], carbo\u0301n: ["spanish"], ca\u0301rcel: ["spanish"], careta: ["spanish"], carga: ["spanish"], carin\u0303o: ["spanish"], carne: ["spanish"], carpeta: ["spanish"], carro: ["spanish"], carta: ["spanish"], casa: ["spanish"], casco: ["spanish"], casero: ["spanish"], caspa: ["spanish"], castor: ["spanish"], catorce: ["spanish"], catre: ["spanish"], caudal: ["spanish"], causa: ["spanish"], cazo: ["spanish"], cebolla: ["spanish"], ceder: ["spanish"], cedro: ["spanish"], celda: ["spanish"], ce\u0301lebre: ["spanish"], celoso: ["spanish"], ce\u0301lula: ["spanish"], cemento: ["spanish"], ceniza: ["spanish"], centro: ["spanish"], cerca: ["spanish"], cerdo: ["spanish"], cereza: ["spanish"], cero: ["spanish"], cerrar: ["spanish"], certeza: ["spanish"], ce\u0301sped: ["spanish"], cetro: ["spanish"], chacal: ["spanish"], chaleco: ["spanish"], champu\u0301: ["spanish"], chancla: ["spanish"], chapa: ["spanish"], charla: ["spanish"], chico: ["spanish"], chiste: ["spanish"], chivo: ["spanish"], choque: ["spanish"], choza: ["spanish"], chuleta: ["spanish"], chupar: ["spanish"], ciclo\u0301n: ["spanish"], ciego: ["spanish"], cielo: ["spanish"], cien: ["spanish"], cierto: ["spanish"], cifra: ["spanish"], cigarro: ["spanish"], cima: ["spanish"], cinco: ["spanish"], cine: ["spanish"], cinta: ["spanish"], cipre\u0301s: ["spanish"], circo: ["spanish"], ciruela: ["spanish"], cisne: ["spanish"], cita: ["spanish"], ciudad: ["spanish"], clamor: ["spanish"], clan: ["spanish"], claro: ["spanish"], clase: ["spanish"], clave: ["spanish"], cliente: ["spanish"], clima: ["spanish"], cli\u0301nica: ["spanish"], cobre: ["spanish"], coccio\u0301n: ["spanish"], cochino: ["spanish"], cocina: ["spanish"], coco: ["spanish"], co\u0301digo: ["spanish"], codo: ["spanish"], cofre: ["spanish"], coger: ["spanish"], cohete: ["spanish"], coji\u0301n: ["spanish"], cojo: ["spanish"], cola: ["spanish"], colcha: ["spanish"], colegio: ["spanish"], colgar: ["spanish"], colina: ["spanish"], collar: ["spanish"], colmo: ["spanish"], columna: ["spanish"], combate: ["spanish"], comer: ["spanish"], comida: ["spanish"], co\u0301modo: ["spanish"], compra: ["spanish"], conde: ["spanish"], conejo: ["spanish"], conga: ["spanish"], conocer: ["spanish"], consejo: ["spanish"], contar: ["spanish"], copa: ["spanish"], copia: ["spanish"], corazo\u0301n: ["spanish"], corbata: ["spanish"], corcho: ["spanish"], cordo\u0301n: ["spanish"], corona: ["spanish"], correr: ["spanish"], coser: ["spanish"], cosmos: ["spanish"], costa: ["spanish"], cra\u0301neo: ["spanish"], cra\u0301ter: ["spanish"], crear: ["spanish"], crecer: ["spanish"], crei\u0301do: ["spanish"], crema: ["spanish"], cri\u0301a: ["spanish"], crimen: ["spanish"], cripta: ["spanish"], crisis: ["spanish"], cromo: ["spanish"], cro\u0301nica: ["spanish"], croqueta: ["spanish"], crudo: ["spanish"], cruz: ["spanish"], cuadro: ["spanish"], cuarto: ["spanish"], cuatro: ["spanish"], cubo: ["spanish"], cubrir: ["spanish"], cuchara: ["spanish"], cuello: ["spanish"], cuento: ["spanish"], cuerda: ["spanish"], cuesta: ["spanish"], cueva: ["spanish"], cuidar: ["spanish"], culebra: ["spanish"], culpa: ["spanish"], culto: ["spanish"], cumbre: ["spanish"], cumplir: ["spanish"], cuna: ["spanish"], cuneta: ["spanish"], cuota: ["spanish"], cupo\u0301n: ["spanish"], cu\u0301pula: ["spanish"], curar: ["spanish"], curioso: ["spanish"], curso: ["spanish"], curva: ["spanish"], cutis: ["spanish"], dama: ["spanish"], danza: ["spanish"], dar: ["spanish"], dardo: ["spanish"], da\u0301til: ["spanish"], deber: ["spanish"], de\u0301bil: ["spanish"], de\u0301cada: ["spanish"], decir: ["spanish"], dedo: ["spanish"], defensa: ["spanish"], definir: ["spanish"], dejar: ["spanish"], delfi\u0301n: ["spanish"], delgado: ["spanish"], delito: ["spanish"], demora: ["spanish"], denso: ["spanish"], dental: ["spanish"], deporte: ["spanish"], derecho: ["spanish"], derrota: ["spanish"], desayuno: ["spanish"], deseo: ["spanish"], desfile: ["spanish"], desnudo: ["spanish"], destino: ["spanish"], desvi\u0301o: ["spanish"], detalle: ["spanish"], detener: ["spanish"], deuda: ["spanish"], di\u0301a: ["spanish"], diablo: ["spanish"], diadema: ["spanish"], diamante: ["spanish"], diana: ["spanish"], diario: ["spanish"], dibujo: ["spanish"], dictar: ["spanish"], diente: ["spanish"], dieta: ["spanish"], diez: ["spanish"], difi\u0301cil: ["spanish"], digno: ["spanish"], dilema: ["spanish"], diluir: ["spanish"], dinero: ["spanish"], directo: ["spanish"], dirigir: ["spanish"], disco: ["spanish"], disen\u0303o: ["spanish"], disfraz: ["spanish"], diva: ["spanish"], divino: ["spanish"], doble: ["spanish"], doce: ["spanish"], dolor: ["spanish"], domingo: ["spanish"], don: ["spanish"], donar: ["spanish"], dorado: ["spanish"], dormir: ["spanish"], dorso: ["spanish"], dos: ["spanish"], dosis: ["spanish"], drago\u0301n: ["spanish"], droga: ["spanish"], ducha: ["spanish"], duda: ["spanish"], duelo: ["spanish"], duen\u0303o: ["spanish"], dulce: ["spanish"], du\u0301o: ["spanish"], duque: ["spanish"], durar: ["spanish"], dureza: ["spanish"], duro: ["spanish"], e\u0301bano: ["spanish"], ebrio: ["spanish"], echar: ["spanish"], eco: ["spanish"], ecuador: ["spanish"], edad: ["spanish"], edicio\u0301n: ["spanish"], edificio: ["spanish"], editor: ["spanish"], educar: ["spanish"], efecto: ["spanish"], eficaz: ["spanish"], eje: ["spanish"], ejemplo: ["spanish"], elefante: ["spanish"], elegir: ["spanish"], elemento: ["spanish"], elevar: ["spanish"], elipse: ["spanish"], e\u0301lite: ["spanish"], elixir: ["spanish"], elogio: ["spanish"], eludir: ["spanish"], embudo: ["spanish"], emitir: ["spanish"], emocio\u0301n: ["spanish"], empate: ["spanish"], empen\u0303o: ["spanish"], empleo: ["spanish"], empresa: ["spanish"], enano: ["spanish"], encargo: ["spanish"], enchufe: ["spanish"], enci\u0301a: ["spanish"], enemigo: ["spanish"], enero: ["spanish"], enfado: ["spanish"], enfermo: ["spanish"], engan\u0303o: ["spanish"], enigma: ["spanish"], enlace: ["spanish"], enorme: ["spanish"], enredo: ["spanish"], ensayo: ["spanish"], ensen\u0303ar: ["spanish"], entero: ["spanish"], entrar: ["spanish"], envase: ["spanish"], envi\u0301o: ["spanish"], e\u0301poca: ["spanish"], equipo: ["spanish"], erizo: ["spanish"], escala: ["spanish"], escena: ["spanish"], escolar: ["spanish"], escribir: ["spanish"], escudo: ["spanish"], esencia: ["spanish"], esfera: ["spanish"], esfuerzo: ["spanish"], espada: ["spanish"], espejo: ["spanish"], espi\u0301a: ["spanish"], esposa: ["spanish"], espuma: ["spanish"], esqui\u0301: ["spanish"], estar: ["spanish"], este: ["spanish"], estilo: ["spanish"], estufa: ["spanish"], etapa: ["spanish"], eterno: ["spanish"], e\u0301tica: ["spanish"], etnia: ["spanish"], evadir: ["spanish"], evaluar: ["spanish"], evento: ["spanish"], evitar: ["spanish"], exacto: ["spanish"], examen: ["spanish"], exceso: ["spanish"], excusa: ["spanish"], exento: ["spanish"], exigir: ["spanish"], exilio: ["spanish"], existir: ["spanish"], e\u0301xito: ["spanish"], experto: ["spanish"], explicar: ["spanish"], exponer: ["spanish"], extremo: ["spanish"], fa\u0301brica: ["spanish"], fa\u0301bula: ["spanish"], fachada: ["spanish"], fa\u0301cil: ["spanish"], factor: ["spanish"], faena: ["spanish"], faja: ["spanish"], falda: ["spanish"], fallo: ["spanish"], falso: ["spanish"], faltar: ["spanish"], fama: ["spanish"], familia: ["spanish"], famoso: ["spanish"], farao\u0301n: ["spanish"], farmacia: ["spanish"], farol: ["spanish"], farsa: ["spanish"], fase: ["spanish"], fatiga: ["spanish"], fauna: ["spanish", "turkish"], favor: ["spanish"], fax: ["spanish"], febrero: ["spanish"], fecha: ["spanish"], feliz: ["spanish"], feo: ["spanish"], feria: ["spanish"], feroz: ["spanish"], fe\u0301rtil: ["spanish"], fervor: ["spanish"], festi\u0301n: ["spanish"], fiable: ["spanish"], fianza: ["spanish"], fiar: ["spanish"], fibra: ["spanish"], ficcio\u0301n: ["spanish"], ficha: ["spanish"], fideo: ["spanish"], fiebre: ["spanish"], fiel: ["spanish"], fiera: ["spanish"], fiesta: ["spanish"], figura: ["spanish"], fijar: ["spanish"], fijo: ["spanish"], fila: ["spanish"], filete: ["spanish"], filial: ["spanish"], filtro: ["spanish"], fin: ["spanish"], finca: ["spanish"], fingir: ["spanish"], finito: ["spanish"], firma: ["spanish"], flaco: ["spanish"], flauta: ["spanish"], flecha: ["spanish"], flor: ["spanish"], flota: ["spanish"], fluir: ["spanish"], flujo: ["spanish"], flu\u0301or: ["spanish"], fobia: ["spanish"], foca: ["spanish"], fogata: ["spanish"], fogo\u0301n: ["spanish"], folio: ["spanish"], folleto: ["spanish"], fondo: ["spanish"], forma: ["spanish"], forro: ["spanish"], fortuna: ["spanish"], forzar: ["spanish"], fosa: ["spanish"], foto: ["spanish"], fracaso: ["spanish"], fra\u0301gil: ["spanish"], franja: ["spanish"], frase: ["spanish"], fraude: ["spanish"], frei\u0301r: ["spanish"], freno: ["spanish"], fresa: ["spanish"], fri\u0301o: ["spanish"], frito: ["spanish"], fruta: ["spanish"], fuego: ["spanish"], fuente: ["spanish"], fuerza: ["spanish"], fuga: ["spanish"], fumar: ["spanish"], funcio\u0301n: ["spanish"], funda: ["spanish"], furgo\u0301n: ["spanish"], furia: ["spanish"], fusil: ["spanish"], fu\u0301tbol: ["spanish"], futuro: ["spanish"], gacela: ["spanish"], gafas: ["spanish"], gaita: ["spanish"], gajo: ["spanish"], gala: ["spanish"], galeri\u0301a: ["spanish"], gallo: ["spanish"], gamba: ["spanish"], ganar: ["spanish"], gancho: ["spanish"], ganga: ["spanish"], ganso: ["spanish"], garaje: ["spanish"], garza: ["spanish"], gasolina: ["spanish"], gastar: ["spanish"], gato: ["spanish"], gavila\u0301n: ["spanish"], gemelo: ["spanish"], gemir: ["spanish"], gen: ["spanish"], ge\u0301nero: ["spanish"], genio: ["spanish"], gente: ["spanish"], geranio: ["spanish"], gerente: ["spanish"], germen: ["spanish"], gesto: ["spanish"], gigante: ["spanish"], gimnasio: ["spanish"], girar: ["spanish"], giro: ["spanish"], glaciar: ["spanish"], globo: ["spanish"], gloria: ["spanish"], gol: ["spanish"], golfo: ["spanish"], goloso: ["spanish"], golpe: ["spanish"], goma: ["spanish"], gordo: ["spanish"], gorila: ["spanish"], gorra: ["spanish"], gota: ["spanish"], goteo: ["spanish"], gozar: ["spanish"], grada: ["spanish"], gra\u0301fico: ["spanish"], grano: ["spanish"], grasa: ["spanish"], gratis: ["spanish"], grave: ["spanish"], grieta: ["spanish"], grillo: ["spanish"], gripe: ["spanish"], gris: ["spanish"], grito: ["spanish"], grosor: ["spanish"], gru\u0301a: ["spanish"], grueso: ["spanish"], grumo: ["spanish"], grupo: ["spanish"], guante: ["spanish"], guapo: ["spanish"], guardia: ["spanish"], guerra: ["spanish"], gui\u0301a: ["spanish"], guin\u0303o: ["spanish"], guion: ["spanish"], guiso: ["spanish"], guitarra: ["spanish"], gusano: ["spanish"], gustar: ["spanish"], haber: ["spanish", "turkish"], ha\u0301bil: ["spanish"], hablar: ["spanish"], hacer: ["spanish"], hacha: ["spanish"], hada: ["spanish"], hallar: ["spanish"], hamaca: ["spanish"], harina: ["spanish"], haz: ["spanish"], hazan\u0303a: ["spanish"], hebilla: ["spanish"], hebra: ["spanish"], hecho: ["spanish"], helado: ["spanish"], helio: ["spanish"], hembra: ["spanish"], herir: ["spanish"], hermano: ["spanish"], he\u0301roe: ["spanish"], hervir: ["spanish"], hielo: ["spanish"], hierro: ["spanish"], hi\u0301gado: ["spanish"], higiene: ["spanish"], hijo: ["spanish"], himno: ["spanish"], historia: ["spanish"], hocico: ["spanish"], hogar: ["spanish"], hoguera: ["spanish"], hoja: ["spanish"], hombre: ["spanish"], hongo: ["spanish"], honor: ["spanish"], honra: ["spanish"], hora: ["spanish"], hormiga: ["spanish"], horno: ["spanish"], hostil: ["spanish"], hoyo: ["spanish"], hueco: ["spanish"], huelga: ["spanish"], huerta: ["spanish"], hueso: ["spanish"], huevo: ["spanish"], huida: ["spanish"], huir: ["spanish"], humano: ["spanish"], hu\u0301medo: ["spanish"], humilde: ["spanish"], humo: ["spanish"], hundir: ["spanish"], huraca\u0301n: ["spanish"], hurto: ["spanish"], icono: ["spanish"], ideal: ["spanish"], idioma: ["spanish"], i\u0301dolo: ["spanish"], iglesia: ["spanish"], iglu\u0301: ["spanish"], igual: ["spanish"], ilegal: ["spanish"], ilusio\u0301n: ["spanish"], imagen: ["spanish"], ima\u0301n: ["spanish"], imitar: ["spanish"], impar: ["spanish"], imperio: ["spanish"], imponer: ["spanish"], impulso: ["spanish"], incapaz: ["spanish"], i\u0301ndice: ["spanish"], inerte: ["spanish"], infiel: ["spanish"], informe: ["spanish"], ingenio: ["spanish"], inicio: ["spanish"], inmenso: ["spanish"], inmune: ["spanish"], innato: ["spanish"], insecto: ["spanish"], instante: ["spanish"], intere\u0301s: ["spanish"], i\u0301ntimo: ["spanish"], intuir: ["spanish"], inu\u0301til: ["spanish"], invierno: ["spanish"], ira: ["spanish"], iris: ["spanish"], ironi\u0301a: ["spanish"], isla: ["spanish"], islote: ["spanish"], jabali\u0301: ["spanish"], jabo\u0301n: ["spanish"], jamo\u0301n: ["spanish"], jarabe: ["spanish"], jardi\u0301n: ["spanish"], jarra: ["spanish"], jaula: ["spanish"], jazmi\u0301n: ["spanish"], jefe: ["spanish"], jeringa: ["spanish"], jinete: ["spanish"], jornada: ["spanish"], joroba: ["spanish"], joven: ["spanish"], joya: ["spanish"], juerga: ["spanish"], jueves: ["spanish"], juez: ["spanish"], jugador: ["spanish"], jugo: ["spanish"], juguete: ["spanish"], juicio: ["spanish"], junco: ["spanish"], jungla: ["spanish"], junio: ["spanish"], juntar: ["spanish"], ju\u0301piter: ["spanish"], jurar: ["spanish"], justo: ["spanish"], juvenil: ["spanish"], juzgar: ["spanish"], kilo: ["spanish"], koala: ["spanish"], labio: ["spanish"], lacio: ["spanish"], lacra: ["spanish"], lado: ["spanish"], ladro\u0301n: ["spanish"], lagarto: ["spanish"], la\u0301grima: ["spanish"], laguna: ["spanish"], laico: ["spanish"], lamer: ["spanish"], la\u0301mina: ["spanish"], la\u0301mpara: ["spanish"], lana: ["spanish"], lancha: ["spanish"], langosta: ["spanish"], lanza: ["spanish"], la\u0301piz: ["spanish"], largo: ["spanish"], larva: ["spanish"], la\u0301stima: ["spanish"], lata: ["spanish"], la\u0301tex: ["spanish"], latir: ["spanish"], laurel: ["spanish"], lavar: ["spanish"], lazo: ["spanish"], leal: ["spanish"], leccio\u0301n: ["spanish"], leche: ["spanish"], lector: ["spanish"], leer: ["spanish"], legio\u0301n: ["spanish"], legumbre: ["spanish"], lejano: ["spanish"], lengua: ["spanish"], lento: ["spanish"], len\u0303a: ["spanish"], leo\u0301n: ["spanish"], leopardo: ["spanish"], lesio\u0301n: ["spanish"], letal: ["spanish"], letra: ["spanish"], leve: ["spanish"], leyenda: ["spanish"], libertad: ["spanish"], libro: ["spanish"], licor: ["spanish"], li\u0301der: ["spanish"], lidiar: ["spanish"], lienzo: ["spanish"], liga: ["spanish"], ligero: ["spanish"], lima: ["spanish"], li\u0301mite: ["spanish"], limo\u0301n: ["spanish"], limpio: ["spanish"], lince: ["spanish"], lindo: ["spanish"], li\u0301nea: ["spanish"], lingote: ["spanish"], lino: ["spanish"], linterna: ["spanish"], li\u0301quido: ["spanish"], liso: ["spanish"], lista: ["spanish"], litera: ["spanish"], litio: ["spanish"], litro: ["spanish"], llaga: ["spanish"], llama: ["spanish"], llanto: ["spanish"], llave: ["spanish"], llegar: ["spanish"], llenar: ["spanish"], llevar: ["spanish"], llorar: ["spanish"], llover: ["spanish"], lluvia: ["spanish"], lobo: ["spanish"], locio\u0301n: ["spanish"], loco: ["spanish"], locura: ["spanish"], lo\u0301gica: ["spanish"], logro: ["spanish"], lombriz: ["spanish"], lomo: ["spanish"], lonja: ["spanish"], lote: ["spanish"], lucha: ["spanish"], lucir: ["spanish"], lugar: ["spanish"], lujo: ["spanish"], luna: ["spanish"], lunes: ["spanish"], lupa: ["spanish"], lustro: ["spanish"], luto: ["spanish"], luz: ["spanish"], maceta: ["spanish"], macho: ["spanish"], madera: ["spanish"], madre: ["spanish"], maduro: ["spanish"], maestro: ["spanish"], mafia: ["spanish"], magia: ["spanish"], mago: ["spanish"], mai\u0301z: ["spanish"], maldad: ["spanish"], maleta: ["spanish"], malla: ["spanish"], malo: ["spanish"], mama\u0301: ["spanish"], mambo: ["spanish"], mamut: ["spanish"], manco: ["spanish"], mando: ["spanish"], manejar: ["spanish"], manga: ["spanish"], maniqui\u0301: ["spanish"], manjar: ["spanish"], mano: ["spanish"], manso: ["spanish"], manta: ["spanish"], man\u0303ana: ["spanish"], mapa: ["spanish"], ma\u0301quina: ["spanish"], mar: ["spanish"], marco: ["spanish"], marea: ["spanish"], marfil: ["spanish"], margen: ["spanish"], marido: ["spanish"], ma\u0301rmol: ["spanish"], marro\u0301n: ["spanish"], martes: ["spanish"], marzo: ["spanish"], masa: ["spanish"], ma\u0301scara: ["spanish"], masivo: ["spanish"], matar: ["spanish"], materia: ["spanish"], matiz: ["spanish"], matriz: ["spanish"], ma\u0301ximo: ["spanish"], mayor: ["spanish"], mazorca: ["spanish"], mecha: ["spanish"], medalla: ["spanish"], medio: ["spanish"], me\u0301dula: ["spanish"], mejilla: ["spanish"], mejor: ["spanish"], melena: ["spanish"], melo\u0301n: ["spanish"], memoria: ["spanish"], menor: ["spanish"], mensaje: ["spanish"], mente: ["spanish"], menu\u0301: ["spanish"], mercado: ["spanish"], merengue: ["spanish"], me\u0301rito: ["spanish"], mes: ["spanish"], meso\u0301n: ["spanish"], meta: ["spanish"], meter: ["spanish"], me\u0301todo: ["spanish"], metro: ["spanish"], mezcla: ["spanish"], miedo: ["spanish"], miel: ["spanish"], miembro: ["spanish"], miga: ["spanish"], mil: ["spanish"], milagro: ["spanish"], militar: ["spanish"], millo\u0301n: ["spanish"], mimo: ["spanish"], mina: ["spanish"], minero: ["spanish"], mi\u0301nimo: ["spanish"], minuto: ["spanish"], miope: ["spanish"], mirar: ["spanish"], misa: ["spanish"], miseria: ["spanish"], misil: ["spanish"], mismo: ["spanish"], mitad: ["spanish"], mito: ["spanish"], mochila: ["spanish"], mocio\u0301n: ["spanish"], moda: ["spanish"], modelo: ["spanish"], moho: ["spanish"], mojar: ["spanish"], molde: ["spanish"], moler: ["spanish"], molino: ["spanish"], momento: ["spanish"], momia: ["spanish"], monarca: ["spanish"], moneda: ["spanish"], monja: ["spanish"], monto: ["spanish"], mon\u0303o: ["spanish"], morada: ["spanish"], morder: ["spanish"], moreno: ["spanish"], morir: ["spanish"], morro: ["spanish"], morsa: ["spanish"], mortal: ["spanish"], mosca: ["spanish"], mostrar: ["spanish"], motivo: ["spanish"], mover: ["spanish"], mo\u0301vil: ["spanish"], mozo: ["spanish"], mucho: ["spanish"], mudar: ["spanish"], mueble: ["spanish"], muela: ["spanish"], muerte: ["spanish"], muestra: ["spanish"], mugre: ["spanish"], mujer: ["spanish"], mula: ["spanish"], muleta: ["spanish"], multa: ["spanish"], mundo: ["spanish"], mun\u0303eca: ["spanish"], mural: ["spanish"], muro: ["spanish"], mu\u0301sculo: ["spanish"], museo: ["spanish"], musgo: ["spanish"], mu\u0301sica: ["spanish"], muslo: ["spanish"], na\u0301car: ["spanish"], nacio\u0301n: ["spanish"], nadar: ["spanish"], naipe: ["spanish"], naranja: ["spanish"], nariz: ["spanish"], narrar: ["spanish"], nasal: ["spanish"], natal: ["spanish"], nativo: ["spanish"], natural: ["spanish"], na\u0301usea: ["spanish"], naval: ["spanish"], nave: ["spanish"], navidad: ["spanish"], necio: ["spanish"], ne\u0301ctar: ["spanish"], negar: ["spanish"], negocio: ["spanish"], negro: ["spanish"], neo\u0301n: ["spanish"], nervio: ["spanish"], neto: ["spanish"], neutro: ["spanish"], nevar: ["spanish"], nevera: ["spanish"], nicho: ["spanish"], nido: ["spanish"], niebla: ["spanish"], nieto: ["spanish"], nin\u0303ez: ["spanish"], nin\u0303o: ["spanish"], ni\u0301tido: ["spanish"], nivel: ["spanish"], nobleza: ["spanish"], noche: ["spanish"], no\u0301mina: ["spanish"], noria: ["spanish"], norma: ["spanish"], norte: ["spanish"], nota: ["spanish"], noticia: ["spanish"], novato: ["spanish"], novela: ["spanish"], novio: ["spanish"], nube: ["spanish"], nuca: ["spanish"], nu\u0301cleo: ["spanish"], nudillo: ["spanish"], nudo: ["spanish"], nuera: ["spanish"], nueve: ["spanish"], nuez: ["spanish"], nulo: ["spanish"], nu\u0301mero: ["spanish"], nutria: ["spanish"], oasis: ["spanish"], obeso: ["spanish"], obispo: ["spanish"], objeto: ["spanish"], obra: ["spanish"], obrero: ["spanish"], observar: ["spanish"], obtener: ["spanish"], obvio: ["spanish"], oca: ["spanish"], ocaso: ["spanish"], oce\u0301ano: ["spanish"], ochenta: ["spanish"], ocho: ["spanish"], ocio: ["spanish"], ocre: ["spanish"], octavo: ["spanish"], octubre: ["spanish"], oculto: ["spanish"], ocupar: ["spanish"], ocurrir: ["spanish"], odiar: ["spanish"], odio: ["spanish"], odisea: ["spanish"], oeste: ["spanish"], ofensa: ["spanish"], oferta: ["spanish"], oficio: ["spanish"], ofrecer: ["spanish"], ogro: ["spanish"], oi\u0301do: ["spanish"], oi\u0301r: ["spanish"], ojo: ["spanish"], ola: ["spanish"], oleada: ["spanish"], olfato: ["spanish"], olivo: ["spanish"], olla: ["spanish"], olmo: ["spanish"], olor: ["spanish"], olvido: ["spanish"], ombligo: ["spanish"], onda: ["spanish"], onza: ["spanish"], opaco: ["spanish"], opcio\u0301n: ["spanish"], o\u0301pera: ["spanish"], opinar: ["spanish"], oponer: ["spanish"], optar: ["spanish"], o\u0301ptica: ["spanish"], opuesto: ["spanish"], oracio\u0301n: ["spanish"], orador: ["spanish"], oral: ["spanish", "turkish"], o\u0301rbita: ["spanish"], orca: ["spanish"], orden: ["spanish"], oreja: ["spanish"], o\u0301rgano: ["spanish"], orgi\u0301a: ["spanish"], orgullo: ["spanish"], oriente: ["spanish"], origen: ["spanish"], orilla: ["spanish"], oro: ["spanish"], orquesta: ["spanish"], oruga: ["spanish"], osadi\u0301a: ["spanish"], oscuro: ["spanish"], osezno: ["spanish"], oso: ["spanish"], ostra: ["spanish"], oton\u0303o: ["spanish"], otro: ["spanish"], oveja: ["spanish"], o\u0301vulo: ["spanish"], o\u0301xido: ["spanish"], oxi\u0301geno: ["spanish"], oyente: ["spanish"], ozono: ["spanish"], pacto: ["spanish"], padre: ["spanish"], paella: ["spanish"], pa\u0301gina: ["spanish"], pago: ["spanish"], pai\u0301s: ["spanish"], pa\u0301jaro: ["spanish"], palabra: ["spanish"], palco: ["spanish"], paleta: ["spanish"], pa\u0301lido: ["spanish"], palma: ["spanish"], paloma: ["spanish"], palpar: ["spanish"], pan: ["spanish"], panal: ["spanish"], pa\u0301nico: ["spanish"], pantera: ["spanish"], pan\u0303uelo: ["spanish"], papa\u0301: ["spanish"], papel: ["spanish"], papilla: ["spanish"], paquete: ["spanish"], parar: ["spanish"], parcela: ["spanish"], pared: ["spanish"], parir: ["spanish"], paro: ["spanish"], pa\u0301rpado: ["spanish"], parque: ["spanish"], pa\u0301rrafo: ["spanish"], parte: ["spanish"], pasar: ["spanish"], paseo: ["spanish"], pasio\u0301n: ["spanish"], paso: ["spanish"], pasta: ["spanish"], pata: ["spanish"], patio: ["spanish"], patria: ["spanish"], pausa: ["spanish"], pauta: ["spanish"], pavo: ["spanish"], payaso: ["spanish"], peato\u0301n: ["spanish"], pecado: ["spanish"], pecera: ["spanish"], pecho: ["spanish"], pedal: ["spanish", "turkish"], pedir: ["spanish"], pegar: ["spanish"], peine: ["spanish"], pelar: ["spanish"], peldan\u0303o: ["spanish"], pelea: ["spanish"], peligro: ["spanish"], pellejo: ["spanish"], pelo: ["spanish"], peluca: ["spanish"], pena: ["spanish", "turkish"], pensar: ["spanish"], pen\u0303o\u0301n: ["spanish"], peo\u0301n: ["spanish"], peor: ["spanish"], pepino: ["spanish"], pequen\u0303o: ["spanish"], pera: ["spanish"], percha: ["spanish"], perder: ["spanish"], pereza: ["spanish"], perfil: ["spanish"], perico: ["spanish"], perla: ["spanish"], permiso: ["spanish"], perro: ["spanish"], persona: ["spanish"], pesa: ["spanish"], pesca: ["spanish"], pe\u0301simo: ["spanish"], pestan\u0303a: ["spanish"], pe\u0301talo: ["spanish"], petro\u0301leo: ["spanish"], pez: ["spanish"], pezun\u0303a: ["spanish"], picar: ["spanish"], picho\u0301n: ["spanish"], pie: ["spanish"], piedra: ["spanish"], pierna: ["spanish"], pieza: ["spanish"], pijama: ["spanish"], pilar: ["spanish"], piloto: ["spanish"], pimienta: ["spanish"], pino: ["spanish"], pintor: ["spanish"], pinza: ["spanish"], pin\u0303a: ["spanish"], piojo: ["spanish"], pipa: ["spanish"], pirata: ["spanish"], pisar: ["spanish"], piscina: ["spanish"], piso: ["spanish"], pista: ["spanish"], pito\u0301n: ["spanish"], pizca: ["spanish"], placa: ["spanish"], plan: ["spanish"], plata: ["spanish"], playa: ["spanish"], plaza: ["spanish"], pleito: ["spanish"], pleno: ["spanish"], plomo: ["spanish"], pluma: ["spanish"], plural: ["spanish"], pobre: ["spanish"], poco: ["spanish"], poder: ["spanish"], podio: ["spanish"], poema: ["spanish"], poesi\u0301a: ["spanish"], poeta: ["spanish"], polen: ["spanish", "turkish"], polici\u0301a: ["spanish"], pollo: ["spanish"], polvo: ["spanish"], pomada: ["spanish"], pomelo: ["spanish"], pomo: ["spanish"], pompa: ["spanish", "turkish"], poner: ["spanish"], porcio\u0301n: ["spanish"], portal: ["spanish"], posada: ["spanish"], poseer: ["spanish"], posible: ["spanish"], poste: ["spanish"], potencia: ["spanish"], potro: ["spanish"], pozo: ["spanish"], prado: ["spanish"], precoz: ["spanish"], pregunta: ["spanish"], premio: ["spanish"], prensa: ["spanish"], preso: ["spanish"], previo: ["spanish"], primo: ["spanish"], pri\u0301ncipe: ["spanish"], prisio\u0301n: ["spanish"], privar: ["spanish"], proa: ["spanish"], probar: ["spanish"], proceso: ["spanish"], producto: ["spanish"], proeza: ["spanish"], profesor: ["spanish"], programa: ["spanish"], prole: ["spanish"], promesa: ["spanish"], pronto: ["spanish"], propio: ["spanish"], pro\u0301ximo: ["spanish"], prueba: ["spanish"], pu\u0301blico: ["spanish"], puchero: ["spanish"], pudor: ["spanish"], pueblo: ["spanish"], puerta: ["spanish"], puesto: ["spanish"], pulga: ["spanish"], pulir: ["spanish"], pulmo\u0301n: ["spanish"], pulpo: ["spanish"], pulso: ["spanish"], puma: ["spanish"], punto: ["spanish"], pun\u0303al: ["spanish"], pun\u0303o: ["spanish"], pupa: ["spanish"], pupila: ["spanish"], pure\u0301: ["spanish"], quedar: ["spanish"], queja: ["spanish"], quemar: ["spanish"], querer: ["spanish"], queso: ["spanish"], quieto: ["spanish"], qui\u0301mica: ["spanish"], quince: ["spanish"], quitar: ["spanish"], ra\u0301bano: ["spanish"], rabia: ["spanish"], rabo: ["spanish"], racio\u0301n: ["spanish"], radical: ["spanish"], rai\u0301z: ["spanish"], rama: ["spanish"], rampa: ["spanish", "turkish"], rancho: ["spanish"], rango: ["spanish"], rapaz: ["spanish"], ra\u0301pido: ["spanish"], rapto: ["spanish"], rasgo: ["spanish"], raspa: ["spanish"], rato: ["spanish"], rayo: ["spanish"], raza: ["spanish"], razo\u0301n: ["spanish"], reaccio\u0301n: ["spanish"], realidad: ["spanish"], reban\u0303o: ["spanish"], rebote: ["spanish"], recaer: ["spanish"], receta: ["spanish"], rechazo: ["spanish"], recoger: ["spanish"], recreo: ["spanish"], recto: ["spanish"], recurso: ["spanish"], red: ["spanish"], redondo: ["spanish"], reducir: ["spanish"], reflejo: ["spanish"], reforma: ["spanish"], refra\u0301n: ["spanish"], refugio: ["spanish"], regalo: ["spanish"], regir: ["spanish"], regla: ["spanish"], regreso: ["spanish"], rehe\u0301n: ["spanish"], reino: ["spanish"], rei\u0301r: ["spanish"], reja: ["spanish"], relato: ["spanish"], relevo: ["spanish"], relieve: ["spanish"], relleno: ["spanish"], reloj: ["spanish"], remar: ["spanish"], remedio: ["spanish"], remo: ["spanish"], rencor: ["spanish"], rendir: ["spanish"], renta: ["spanish"], reparto: ["spanish"], repetir: ["spanish"], reposo: ["spanish"], reptil: ["spanish"], res: ["spanish"], rescate: ["spanish"], resina: ["spanish"], respeto: ["spanish"], resto: ["spanish"], resumen: ["spanish"], retiro: ["spanish"], retorno: ["spanish"], retrato: ["spanish"], reunir: ["spanish"], reve\u0301s: ["spanish"], revista: ["spanish"], rey: ["spanish"], rezar: ["spanish"], rico: ["spanish"], riego: ["spanish"], rienda: ["spanish"], riesgo: ["spanish"], rifa: ["spanish"], ri\u0301gido: ["spanish"], rigor: ["spanish"], rinco\u0301n: ["spanish"], rin\u0303o\u0301n: ["spanish"], ri\u0301o: ["spanish"], riqueza: ["spanish"], risa: ["spanish"], ritmo: ["spanish"], rito: ["spanish"], rizo: ["spanish"], roble: ["spanish"], roce: ["spanish"], rociar: ["spanish"], rodar: ["spanish"], rodeo: ["spanish"], rodilla: ["spanish"], roer: ["spanish"], rojizo: ["spanish"], rojo: ["spanish"], romero: ["spanish"], romper: ["spanish"], ron: ["spanish"], ronco: ["spanish"], ronda: ["spanish"], ropa: ["spanish"], ropero: ["spanish"], rosa: ["spanish"], rosca: ["spanish"], rostro: ["spanish"], rotar: ["spanish"], rubi\u0301: ["spanish"], rubor: ["spanish"], rudo: ["spanish"], rueda: ["spanish"], rugir: ["spanish"], ruido: ["spanish"], ruina: ["spanish"], ruleta: ["spanish"], rulo: ["spanish", "turkish"], rumbo: ["spanish"], rumor: ["spanish"], ruptura: ["spanish"], ruta: ["spanish"], rutina: ["spanish"], sa\u0301bado: ["spanish"], saber: ["spanish"], sabio: ["spanish"], sable: ["spanish"], sacar: ["spanish"], sagaz: ["spanish"], sagrado: ["spanish"], sala: ["spanish"], saldo: ["spanish"], salero: ["spanish"], salir: ["spanish"], salmo\u0301n: ["spanish"], salo\u0301n: ["spanish"], salsa: ["spanish"], salto: ["spanish"], salud: ["spanish"], salvar: ["spanish"], samba: ["spanish"], sancio\u0301n: ["spanish"], sandi\u0301a: ["spanish"], sanear: ["spanish"], sangre: ["spanish"], sanidad: ["spanish"], sano: ["spanish"], santo: ["spanish"], sapo: ["spanish"], saque: ["spanish"], sardina: ["spanish"], sarte\u0301n: ["spanish"], sastre: ["spanish"], sata\u0301n: ["spanish"], sauna: ["spanish"], saxofo\u0301n: ["spanish"], seccio\u0301n: ["spanish"], seco: ["spanish"], secreto: ["spanish"], secta: ["spanish"], sed: ["spanish"], seguir: ["spanish"], seis: ["spanish"], sello: ["spanish"], selva: ["spanish"], semana: ["spanish"], semilla: ["spanish"], senda: ["spanish"], sensor: ["spanish"], sen\u0303al: ["spanish"], sen\u0303or: ["spanish"], separar: ["spanish"], sepia: ["spanish"], sequi\u0301a: ["spanish"], ser: ["spanish"], serie: ["spanish"], sermo\u0301n: ["spanish"], servir: ["spanish"], sesenta: ["spanish"], sesio\u0301n: ["spanish"], seta: ["spanish"], setenta: ["spanish"], severo: ["spanish"], sexo: ["spanish"], sexto: ["spanish"], sidra: ["spanish"], siesta: ["spanish"], siete: ["spanish"], siglo: ["spanish"], signo: ["spanish"], si\u0301laba: ["spanish"], silbar: ["spanish"], silencio: ["spanish"], silla: ["spanish"], si\u0301mbolo: ["spanish"], simio: ["spanish"], sirena: ["spanish"], sistema: ["spanish"], sitio: ["spanish"], situar: ["spanish"], sobre: ["spanish"], socio: ["spanish"], sodio: ["spanish"], sol: ["spanish"], solapa: ["spanish"], soldado: ["spanish"], soledad: ["spanish"], so\u0301lido: ["spanish"], soltar: ["spanish"], solucio\u0301n: ["spanish"], sombra: ["spanish"], sondeo: ["spanish"], sonido: ["spanish"], sonoro: ["spanish"], sonrisa: ["spanish"], sopa: ["spanish"], soplar: ["spanish"], soporte: ["spanish"], sordo: ["spanish"], sorpresa: ["spanish"], sorteo: ["spanish"], soste\u0301n: ["spanish"], so\u0301tano: ["spanish"], suave: ["spanish"], subir: ["spanish"], suceso: ["spanish"], sudor: ["spanish"], suegra: ["spanish"], suelo: ["spanish"], suen\u0303o: ["spanish"], suerte: ["spanish"], sufrir: ["spanish"], sujeto: ["spanish"], sulta\u0301n: ["spanish"], sumar: ["spanish"], superar: ["spanish"], suplir: ["spanish"], suponer: ["spanish"], supremo: ["spanish"], sur: ["spanish"], surco: ["spanish"], suren\u0303o: ["spanish"], surgir: ["spanish"], susto: ["spanish"], sutil: ["spanish"], tabaco: ["spanish"], tabique: ["spanish"], tabla: ["spanish"], tabu\u0301: ["spanish"], taco: ["spanish"], tacto: ["spanish"], tajo: ["spanish"], talar: ["spanish"], talco: ["spanish"], talento: ["spanish"], talla: ["spanish"], talo\u0301n: ["spanish"], taman\u0303o: ["spanish"], tambor: ["spanish"], tango: ["spanish"], tanque: ["spanish"], tapa: ["spanish"], tapete: ["spanish"], tapia: ["spanish"], tapo\u0301n: ["spanish"], taquilla: ["spanish"], tarde: ["spanish"], tarea: ["spanish"], tarifa: ["spanish"], tarjeta: ["spanish"], tarot: ["spanish"], tarro: ["spanish"], tarta: ["spanish"], tatuaje: ["spanish"], tauro: ["spanish"], taza: ["spanish"], tazo\u0301n: ["spanish"], teatro: ["spanish"], techo: ["spanish"], tecla: ["spanish"], te\u0301cnica: ["spanish"], tejado: ["spanish"], tejer: ["spanish"], tejido: ["spanish"], tela: ["spanish"], tele\u0301fono: ["spanish"], tema: ["spanish"], temor: ["spanish"], templo: ["spanish"], tenaz: ["spanish"], tender: ["spanish"], tener: ["spanish"], tenis: ["spanish"], tenso: ["spanish"], teori\u0301a: ["spanish"], terapia: ["spanish"], terco: ["spanish"], te\u0301rmino: ["spanish"], ternura: ["spanish"], terror: ["spanish"], tesis: ["spanish"], tesoro: ["spanish"], testigo: ["spanish"], tetera: ["spanish"], texto: ["spanish"], tez: ["spanish"], tibio: ["spanish"], tiburo\u0301n: ["spanish"], tiempo: ["spanish"], tienda: ["spanish"], tierra: ["spanish"], tieso: ["spanish"], tigre: ["spanish"], tijera: ["spanish"], tilde: ["spanish"], timbre: ["spanish"], ti\u0301mido: ["spanish"], timo: ["spanish"], tinta: ["spanish"], ti\u0301o: ["spanish"], ti\u0301pico: ["spanish"], tipo: ["spanish"], tira: ["spanish"], tiro\u0301n: ["spanish"], tita\u0301n: ["spanish"], ti\u0301tere: ["spanish"], ti\u0301tulo: ["spanish"], tiza: ["spanish"], toalla: ["spanish"], tobillo: ["spanish"], tocar: ["spanish"], tocino: ["spanish"], todo: ["spanish"], toga: ["spanish"], toldo: ["spanish"], tomar: ["spanish", "turkish"], tono: ["spanish"], tonto: ["spanish"], topar: ["spanish"], tope: ["spanish"], toque: ["spanish"], to\u0301rax: ["spanish"], torero: ["spanish"], tormenta: ["spanish"], torneo: ["spanish"], toro: ["spanish"], torpedo: ["spanish"], torre: ["spanish"], torso: ["spanish"], tortuga: ["spanish"], tos: ["spanish"], tosco: ["spanish"], toser: ["spanish"], to\u0301xico: ["spanish"], trabajo: ["spanish"], tractor: ["spanish"], traer: ["spanish"], tra\u0301fico: ["spanish"], trago: ["spanish"], traje: ["spanish"], tramo: ["spanish"], trance: ["spanish"], trato: ["spanish"], trauma: ["spanish"], trazar: ["spanish"], tre\u0301bol: ["spanish"], tregua: ["spanish"], treinta: ["spanish"], tren: ["spanish"], trepar: ["spanish"], tres: ["spanish"], tribu: ["spanish"], trigo: ["spanish"], tripa: ["spanish"], triste: ["spanish"], triunfo: ["spanish"], trofeo: ["spanish"], trompa: ["spanish"], tronco: ["spanish"], tropa: ["spanish"], trote: ["spanish"], trozo: ["spanish"], truco: ["spanish"], trueno: ["spanish"], trufa: ["spanish"], tuberi\u0301a: ["spanish"], tubo: ["spanish"], tuerto: ["spanish"], tumba: ["spanish"], tumor: ["spanish"], tu\u0301nel: ["spanish"], tu\u0301nica: ["spanish"], turbina: ["spanish"], turismo: ["spanish"], turno: ["spanish"], tutor: ["spanish"], ubicar: ["spanish"], u\u0301lcera: ["spanish"], umbral: ["spanish"], unidad: ["spanish"], unir: ["spanish"], universo: ["spanish"], uno: ["spanish"], untar: ["spanish"], un\u0303a: ["spanish"], urbano: ["spanish"], urbe: ["spanish"], urgente: ["spanish"], urna: ["spanish"], usar: ["spanish"], usuario: ["spanish"], u\u0301til: ["spanish"], utopi\u0301a: ["spanish"], uva: ["spanish"], vaca: ["spanish"], vaci\u0301o: ["spanish"], vacuna: ["spanish"], vagar: ["spanish"], vago: ["spanish"], vaina: ["spanish"], vajilla: ["spanish"], vale: ["spanish"], va\u0301lido: ["spanish"], valle: ["spanish"], valor: ["spanish"], va\u0301lvula: ["spanish"], vampiro: ["spanish"], vara: ["spanish"], variar: ["spanish"], varo\u0301n: ["spanish"], vaso: ["spanish"], vecino: ["spanish"], vector: ["spanish"], vehi\u0301culo: ["spanish"], veinte: ["spanish"], vejez: ["spanish"], vela: ["spanish"], velero: ["spanish"], veloz: ["spanish"], vena: ["spanish"], vencer: ["spanish"], venda: ["spanish"], veneno: ["spanish"], vengar: ["spanish"], venir: ["spanish"], venta: ["spanish"], venus: ["spanish"], ver: ["spanish"], verano: ["spanish"], verbo: ["spanish"], verde: ["spanish"], vereda: ["spanish"], verja: ["spanish"], verso: ["spanish"], verter: ["spanish"], vi\u0301a: ["spanish"], viaje: ["spanish"], vibrar: ["spanish"], vicio: ["spanish"], vi\u0301ctima: ["spanish"], vida: ["spanish"], vi\u0301deo: ["spanish"], vidrio: ["spanish"], viejo: ["spanish"], viernes: ["spanish"], vigor: ["spanish"], vil: ["spanish"], villa: ["spanish"], vinagre: ["spanish"], vino: ["spanish"], vin\u0303edo: ["spanish"], violi\u0301n: ["spanish"], viral: ["spanish"], virgo: ["spanish"], virtud: ["spanish"], visor: ["spanish"], vi\u0301spera: ["spanish"], vista: ["spanish"], vitamina: ["spanish"], viudo: ["spanish"], vivaz: ["spanish"], vivero: ["spanish"], vivir: ["spanish"], vivo: ["spanish"], volca\u0301n: ["spanish"], volumen: ["spanish"], volver: ["spanish"], voraz: ["spanish"], votar: ["spanish"], voto: ["spanish"], voz: ["spanish"], vuelo: ["spanish"], vulgar: ["spanish"], yacer: ["spanish"], yate: ["spanish"], yegua: ["spanish"], yema: ["spanish"], yerno: ["spanish"], yeso: ["spanish"], yodo: ["spanish"], yoga: ["spanish"], yogur: ["spanish"], zafiro: ["spanish"], zanja: ["spanish"], zapato: ["spanish"], zarza: ["spanish"], zona: ["spanish"], zorro: ["spanish"], zumo: ["spanish"], zurdo: ["spanish"], abajur: ["turkish"], abak\u00FCs: ["turkish"], abart\u0131: ["turkish"], abdal: ["turkish"], abdest: ["turkish"], abiye: ["turkish"], abluka: ["turkish"], abone: ["turkish"], absorbe: ["turkish"], abs\u00FCrt: ["turkish"], acayip: ["turkish"], acele: ["turkish"], acemi: ["turkish"], a\u00E7\u0131kg\u00F6z: ["turkish"], adalet: ["turkish"], adam: ["turkish"], adezyon: ["turkish"], adisyon: ["turkish"], adliye: ["turkish"], adres: ["turkish"], afacan: ["turkish"], afili: ["turkish"], afi\u015F: ["turkish"], afiyet: ["turkish"], aforizm: ["turkish"], afra: ["turkish"], a\u011Fa\u00E7: ["turkish"], a\u011F\u0131r: ["turkish"], ahbap: ["turkish"], ahkam: ["turkish"], ahlak: ["turkish"], ahtapot: ["turkish"], aidat: ["turkish"], aile: ["turkish"], ajan: ["turkish"], akademi: ["turkish"], akarsu: ["turkish"], akba\u015F: ["turkish"], akci\u011Fer: ["turkish"], akdeniz: ["turkish"], ak\u0131bet: ["turkish"], ak\u0131l: ["turkish"], ak\u0131nt\u0131: ["turkish"], akide: ["turkish"], akrep: ["turkish"], akrobasi: ["turkish"], aksiyon: ["turkish"], ak\u015Fam: ["turkish"], aktif: ["turkish"], akt\u00F6r: ["turkish"], aktris: ["turkish"], akustik: ["turkish"], alaca: ["turkish"], alb\u00FCm: ["turkish"], al\u00E7ak: ["turkish"], aldanma: ["turkish"], aleni: ["turkish"], alet: ["turkish"], alfabe: ["turkish"], alg\u0131lama: ["turkish"], al\u0131ngan: ["turkish"], alk\u0131\u015F: ["turkish"], alkol: ["turkish"], alpay: ["turkish"], alperen: ["turkish"], alt\u0131n: ["turkish"], alt\u00FCst: ["turkish"], altyap\u0131: ["turkish"], alyuvar: ["turkish"], amade: ["turkish"], amat\u00F6r: ["turkish"], amazon: ["turkish"], ambalaj: ["turkish"], amblem: ["turkish"], ambulans: ["turkish"], amca: ["turkish"], amel: ["turkish"], amir: ["turkish"], amiyane: ["turkish"], amorti: ["turkish"], ampul: ["turkish"], anadolu: ["turkish"], anahtar: ["turkish"], anakonda: ["turkish"], anaokul: ["turkish"], anapara: ["turkish"], anar\u015Fi: ["turkish"], anatomi: ["turkish"], anayasa: ["turkish"], anekdot: ["turkish"], anestezi: ["turkish"], angaje: ["turkish"], anka: ["turkish"], anket: ["turkish"], anlaml\u0131: ["turkish"], anne: ["turkish"], anomali: ["turkish"], anonim: ["turkish"], anten: ["turkish"], antla\u015Fma: ["turkish"], apse: ["turkish"], araba: ["turkish"], arac\u0131: ["turkish"], araf: ["turkish"], arbede: ["turkish"], arda: ["turkish"], arefe: ["turkish"], argo: ["turkish"], arg\u00FCman: ["turkish"], arkada\u015F: ["turkish"], armoni: ["turkish"], arsa: ["turkish"], ars\u0131z: ["turkish"], art\u0131: ["turkish"], aruz: ["turkish"], asans\u00F6r: ["turkish"], asayi\u015F: ["turkish"], asgari: ["turkish"], asil: ["turkish"], asker: ["turkish"], ask\u0131: ["turkish"], aslan: ["turkish"], asosyal: ["turkish"], astsubay: ["turkish"], asya: ["turkish"], a\u015F\u00E7\u0131: ["turkish"], a\u015F\u0131r\u0131: ["turkish"], a\u015Fure: ["turkish"], atabey: ["turkish"], ataman: ["turkish"], ate\u015F: ["turkish"], atmaca: ["turkish"], atmosfer: ["turkish"], at\u00F6lye: ["turkish"], avc\u0131: ["turkish"], avdet: ["turkish"], avize: ["turkish"], avlu: ["turkish"], avokado: ["turkish"], avrupa: ["turkish"], avukat: ["turkish"], ayaz: ["turkish"], ay\u00E7i\u00E7e\u011Fi: ["turkish"], ayd\u0131n: ["turkish"], ayg\u0131t: ["turkish"], ayna: ["turkish"], ayran: ["turkish"], ayr\u0131nt\u0131: ["turkish"], azim: ["turkish"], baca: ["turkish"], bagaj: ["turkish"], ba\u011Flant\u0131: ["turkish"], bahad\u0131r: ["turkish"], bah\u00E7e: ["turkish"], baki: ["turkish"], bakkal: ["turkish"], baklava: ["turkish"], bakteri: ["turkish"], bal\u00E7\u0131k: ["turkish"], balina: ["turkish"], balo: ["turkish"], balta: ["turkish"], bant: ["turkish"], banyo: ["turkish"], bardak: ["turkish"], bar\u0131\u015F: ["turkish"], ba\u015Fbu\u011F: ["turkish"], ba\u015F\u0131bo\u015F: ["turkish"], ba\u015Fkan: ["turkish"], ba\u015Fl\u0131k: ["turkish"], bavul: ["turkish"], bay\u0131nd\u0131r: ["turkish"], bayku\u015F: ["turkish"], bazlama: ["turkish"], bedel: ["turkish"], beg\u00FCm: ["turkish"], bek\u00E7i: ["turkish"], bekle: ["turkish"], belge: ["turkish"], belki: ["turkish"], bencil: ["turkish"], benek: ["turkish"], bengi: ["turkish"], berjer: ["turkish"], berk: ["turkish"], berrak: ["turkish"], be\u015Fik: ["turkish"], beyin: ["turkish"], beyo\u011Flu: ["turkish"], b\u0131\u00E7ak: ["turkish"], biberiye: ["turkish"], bidon: ["turkish"], bihaber: ["turkish"], bikini: ["turkish"], bilezik: ["turkish"], bilin\u00E7: ["turkish"], bilye: ["turkish"], bina: ["turkish"], binba\u015F\u0131: ["turkish"], biny\u0131l: ["turkish"], bisiklet: ["turkish"], bisk\u00FCvi: ["turkish"], bitki: ["turkish"], bizzat: ["turkish"], bodrum: ["turkish"], bo\u011Faz: ["turkish"], boh\u00E7a: ["turkish"], boncuk: ["turkish"], bonfile: ["turkish"], borsa: ["turkish"], boru: ["turkish"], bostan: ["turkish"], bo\u015Fbo\u011Faz: ["turkish"], botanik: ["turkish"], boya: ["turkish"], boykot: ["turkish"], boynuz: ["turkish"], bozgun: ["turkish"], bozk\u0131r: ["turkish"], b\u00F6l\u00FCm: ["turkish"], b\u00F6rek: ["turkish"], bu\u00E7uk: ["turkish"], bug\u00FCn: ["turkish"], bu\u011Fday: ["turkish"], buhar: ["turkish"], buhran: ["turkish"], bulvar: ["turkish"], buram: ["turkish"], bur\u00E7ak: ["turkish"], burs: ["turkish"], burun: ["turkish"], buzda\u011F\u0131: ["turkish"], buzk\u0131ran: ["turkish"], b\u00FCc\u00FCr: ["turkish"], b\u00FCfe: ["turkish"], b\u00FClten: ["turkish"], b\u00FCt\u00E7e: ["turkish"], b\u00FCt\u00FCn: ["turkish"], b\u00FCy\u00FCk: ["turkish"], cac\u0131k: ["turkish"], cad\u0131: ["turkish"], cahil: ["turkish"], cambaz: ["turkish"], canh\u0131ra\u015F: ["turkish"], casus: ["turkish"], cazibe: ["turkish"], cehalet: ["turkish"], cehennem: ["turkish"], ceket: ["turkish"], cemre: ["turkish"], cenin: ["turkish"], cennet: ["turkish"], cepken: ["turkish"], cerrah: ["turkish"], cesur: ["turkish"], cetvel: ["turkish"], cevher: ["turkish"], ceylan: ["turkish"], c\u0131l\u0131z: ["turkish"], c\u0131va: ["turkish"], cilt: ["turkish"], cisim: ["turkish"], ciyak: ["turkish"], co\u011Frafya: ["turkish"], c\u00F6mert: ["turkish"], cumba: ["turkish"], c\u00FCzdan: ["turkish"], \u00E7abucak: ["turkish"], \u00E7ad\u0131r: ["turkish"], \u00E7a\u011Fda\u015F: ["turkish"], \u00E7a\u011Flayan: ["turkish"], \u00E7a\u011Fr\u0131: ["turkish"], \u00E7akmak: ["turkish"], \u00E7al\u0131\u015Fkan: ["turkish"], \u00E7ama\u015F\u0131r: ["turkish"], \u00E7apa: ["turkish"], \u00E7aput: ["turkish"], \u00E7ar\u0131k: ["turkish"], \u00E7arpan: ["turkish"], \u00E7ar\u015Faf: ["turkish"], \u00E7ayhane: ["turkish"], \u00E7ekirdek: ["turkish"], \u00E7elebi: ["turkish"], \u00E7ember: ["turkish"], \u00E7enet: ["turkish"], \u00E7engel: ["turkish"], \u00E7er\u00E7eve: ["turkish"], \u00E7erez: ["turkish"], \u00E7e\u015Fit: ["turkish"], \u00E7e\u015Fme: ["turkish"], \u00E7ete: ["turkish"], \u00E7evre: ["turkish"], \u00E7eyiz: ["turkish"], \u00E7eyrek: ["turkish"], \u00E7\u0131\u011F\u0131r: ["turkish"], \u00E7\u0131lg\u0131n: ["turkish"], \u00E7\u0131ng\u0131rak: ["turkish"], \u00E7ift: ["turkish"], \u00E7i\u011Fdem: ["turkish"], \u00E7ikolata: ["turkish"], \u00E7ilek: ["turkish"], \u00E7imen: ["turkish"], \u00E7ivi: ["turkish"], \u00E7oban: ["turkish"], \u00E7ocuk: ["turkish"], \u00E7okgen: ["turkish"], \u00E7omak: ["turkish"], \u00E7orba: ["turkish"], \u00E7\u00F6zelti: ["turkish"], \u00E7ubuk: ["turkish"], \u00E7ukur: ["turkish"], \u00E7uval: ["turkish"], \u00E7\u00FCr\u00FCk: ["turkish"], da\u011Fba\u015F\u0131: ["turkish"], da\u011F\u0131l\u0131m: ["turkish"], daktilo: ["turkish"], dald\u0131r\u0131\u015F: ["turkish"], dalga: ["turkish"], dalkavuk: ["turkish"], damak: ["turkish"], dam\u0131tma: ["turkish"], damla: ["turkish"], dana: ["turkish"], dandik: ["turkish"], dan\u0131\u015Fman: ["turkish"], daniska: ["turkish"], dantel: ["turkish"], darge\u00E7it: ["turkish"], darphane: ["turkish"], davet: ["turkish"], day\u0131: ["turkish"], defter: ["turkish"], de\u011Fer: ["turkish"], de\u011Firmen: ["turkish"], deh\u015Fet: ["turkish"], delge\u00E7: ["turkish"], demir: ["turkish"], deneyim: ["turkish"], denge: ["turkish"], depo: ["turkish"], deprem: ["turkish"], derdest: ["turkish"], dere: ["turkish"], derhal: ["turkish"], derman: ["turkish"], dernek: ["turkish"], dervi\u015F: ["turkish"], desen: ["turkish"], destan: ["turkish"], d\u0131\u015Far\u0131: ["turkish"], d\u0131\u015Fb\u00FCkey: ["turkish"], dijital: ["turkish"], dikba\u015Fl\u0131: ["turkish"], dilek\u00E7e: ["turkish"], dima\u011F: ["turkish"], dinamik: ["turkish"], dindar: ["turkish"], dinleme: ["turkish"], dinozor: ["turkish"], dip\u00E7ik: ["turkish"], dipnot: ["turkish"], direni\u015F: ["turkish"], dirsek: ["turkish"], disiplin: ["turkish"], divri\u011Fi: ["turkish"], diz\u00FCst\u00FC: ["turkish"], dobra: ["turkish"], dodurga: ["turkish"], do\u011Falgaz: ["turkish"], dok\u00FCman: ["turkish"], dolap: ["turkish"], donan\u0131m: ["turkish"], dondurma: ["turkish"], don\u00F6r: ["turkish"], doruk: ["turkish"], dosdo\u011Fru: ["turkish"], dost: ["turkish"], dosya: ["turkish"], dozer: ["turkish"], d\u00F6k\u00FCm: ["turkish"], d\u00F6nence: ["turkish"], d\u00F6rtyol: ["turkish"], d\u00F6vme: ["turkish"], dram: ["turkish"], dublaj: ["turkish"], durum: ["turkish"], duvak: ["turkish"], duyarga: ["turkish"], duyma: ["turkish"], duyuru: ["turkish"], d\u00FC\u011Fme: ["turkish"], d\u00FC\u011F\u00FCm: ["turkish"], d\u00FCkkan: ["turkish"], d\u00FCn\u00FCr: ["turkish"], d\u00FCped\u00FCz: ["turkish"], d\u00FCrb\u00FCn: ["turkish"], d\u00FC\u015F\u00FCn\u00FCr: ["turkish"], d\u00FCzayak: ["turkish"], d\u00FCzeltme: ["turkish"], ebeveyn: ["turkish"], ebru: ["turkish"], ecel: ["turkish"], ecnebi: ["turkish"], ecza: ["turkish"], edat: ["turkish"], edilgen: ["turkish"], efendi: ["turkish"], efor: ["turkish"], efsane: ["turkish"], egemen: ["turkish"], egzersiz: ["turkish"], e\u011Frelti: ["turkish"], ekarte: ["turkish"], ekip: ["turkish"], eklem: ["turkish"], ekmek: ["turkish"], ekol: ["turkish"], ekonomi: ["turkish"], ekose: ["turkish"], ekran: ["turkish"], ekvator: ["turkish"], elaman: ["turkish"], elastik: ["turkish"], elbet: ["turkish"], elbise: ["turkish"], el\u00E7i: ["turkish"], eldiven: ["turkish"], eleba\u015F\u0131: ["turkish"], ele\u015Ftiri: ["turkish"], elma: ["turkish"], elo\u011Flu: ["turkish"], elveda: ["turkish"], emare: ["turkish"], emek\u00E7i: ["turkish"], emisyon: ["turkish"], emniyet: ["turkish"], empati: ["turkish"], emsal: ["turkish"], emzik: ["turkish"], end\u00FCstri: ["turkish"], enerji: ["turkish"], engebe: ["turkish"], eni\u015Fte: ["turkish"], enkaz: ["turkish"], entari: ["turkish"], entegre: ["turkish"], entrika: ["turkish"], enzim: ["turkish"], erdem: ["turkish"], ergen: ["turkish"], erguvan: ["turkish"], erkek: ["turkish"], erozyon: ["turkish"], ertesi: ["turkish"], erzak: ["turkish"], esaret: ["turkish"], esenlik: ["turkish"], eser: ["turkish"], eski: ["turkish"], esnek: ["turkish"], e\u015Farp: ["turkish"], e\u015Fofman: ["turkish"], e\u015Fraf: ["turkish"], e\u015Fya: ["turkish"], e\u015Fzaman: ["turkish"], etik: ["turkish"], etken: ["turkish"], etkinlik: ["turkish"], et\u00FCt: ["turkish"], evet: ["turkish"], evire: ["turkish"], evrak: ["turkish"], evrim: ["turkish"], eyalet: ["turkish"], eyvah: ["turkish"], ezber: ["turkish"], fabrika: ["turkish"], fanus: ["turkish"], fason: ["turkish"], fasulye: ["turkish"], fatih: ["turkish"], fatura: ["turkish"], fayans: ["turkish"], fayton: ["turkish"], faz\u0131l: ["turkish"], fazilet: ["turkish"], felsefe: ["turkish"], fener: ["turkish"], feribot: ["turkish"], fersah: ["turkish"], fesih: ["turkish"], feveran: ["turkish"], feza: ["turkish"], f\u0131\u00E7\u0131: ["turkish"], f\u0131ld\u0131r: ["turkish"], f\u0131nd\u0131k: ["turkish"], f\u0131r\u00E7a: ["turkish"], f\u0131rsat: ["turkish"], f\u0131rt\u0131na: ["turkish"], f\u0131t\u0131k: ["turkish"], fidan: ["turkish"], fidye: ["turkish"], fig\u00FCr: ["turkish"], fihrist: ["turkish"], fikir: ["turkish"], fildi\u015Fi: ["turkish"], filtre: ["turkish"], fincan: ["turkish"], firuze: ["turkish"], fitil: ["turkish"], fiyaka: ["turkish"], fizik: ["turkish"], fla\u015F: ["turkish"], fl\u00FCt: ["turkish"], fosil: ["turkish"], fren: ["turkish"], fukara: ["turkish"], futbol: ["turkish"], garabet: ["turkish"], gariban: ["turkish"], garnit\u00FCr: ["turkish"], gazi: ["turkish"], gece: ["turkish"], gedik: ["turkish"], gelenek: ["turkish"], gelin: ["turkish"], gemi: ["turkish"], gen\u00E7: ["turkish"], geni\u015F: ["turkish"], geometri: ["turkish"], ger\u00E7ek: ["turkish"], gevrek: ["turkish"], gezegen: ["turkish"], gezgin: ["turkish"], geziyolu: ["turkish"], g\u0131c\u0131k: ["turkish"], g\u0131da: ["turkish"], g\u0131ybet: ["turkish"], girdap: ["turkish"], giri\u015Fim: ["turkish"], gitar: ["turkish"], giyecek: ["turkish"], giysi: ["turkish"], gizem: ["turkish"], gofret: ["turkish"], goril: ["turkish"], g\u00F6bek: ["turkish"], g\u00F6\u00E7ebe: ["turkish"], g\u00F6\u011F\u00FCs: ["turkish"], g\u00F6kdelen: ["turkish"], g\u00F6kmen: ["turkish"], g\u00F6ky\u00FCz\u00FC: ["turkish"], g\u00F6lge: ["turkish"], g\u00F6mlek: ["turkish"], g\u00F6n\u00FCl: ["turkish"], g\u00F6renek: ["turkish"], g\u00F6rkemli: ["turkish"], g\u00F6rsel: ["turkish"], g\u00F6steri: ["turkish"], g\u00F6vde: ["turkish"], g\u00F6zalt\u0131: ["turkish"], g\u00F6zc\u00FC: ["turkish"], g\u00F6zda\u011F\u0131: ["turkish"], g\u00F6zleme: ["turkish"], g\u00F6zya\u015F\u0131: ["turkish"], grup: ["turkish"], gurbet: ["turkish"], gus\u00FCl: ["turkish"], g\u00FCbre: ["turkish"], g\u00FCfte: ["turkish"], g\u00FCm\u00FC\u015F: ["turkish"], g\u00FCnayd\u0131n: ["turkish"], g\u00FCncel: ["turkish"], g\u00FCnd\u00FCz: ["turkish"], g\u00FCne\u015F: ["turkish"], g\u00FCny\u00FCz\u00FC: ["turkish"], g\u00FCrb\u00FCz: ["turkish"], g\u00FCvercin: ["turkish"], g\u00FCzel: ["turkish"], hacamat: ["turkish"], hacim: ["turkish"], hademe: ["turkish"], haf\u0131z: ["turkish"], hafriyat: ["turkish"], hafta: ["turkish"], hakan: ["turkish"], hakem: ["turkish"], hakikat: ["turkish"], haksever: ["turkish"], hal\u0131: ["turkish"], han\u00E7er: ["turkish"], hane: ["turkish"], hapis: ["turkish"], hap\u015F\u0131r\u0131k: ["turkish"], harf: ["turkish"], haseki: ["turkish"], hasret: ["turkish"], hatun: ["turkish"], havu\u00E7: ["turkish"], haylaz: ["turkish"], haysiyet: ["turkish"], hayvan: ["turkish"], hedef: ["turkish"], hemen: ["turkish"], hemfikir: ["turkish"], hendek: ["turkish"], hepsi: ["turkish"], hergele: ["turkish"], herhangi: ["turkish"], hesap: ["turkish"], heyecan: ["turkish"], heykel: ["turkish"], hezimet: ["turkish"], h\u0131\u00E7k\u0131r\u0131k: ["turkish"], h\u0131z\u00F6l\u00E7er: ["turkish"], hicviye: ["turkish"], hikaye: ["turkish"], hikmet: ["turkish"], hile: ["turkish"], hisse: ["turkish"], hobi: ["turkish"], hoca: ["turkish"], horlama: ["turkish"], ho\u015Fbe\u015F: ["turkish"], ho\u015Fg\u00F6r\u00FC: ["turkish"], hoyrat: ["turkish"], h\u00F6rg\u00FC\u00E7: ["turkish"], h\u00F6y\u00FCk: ["turkish"], hudut: ["turkish"], hukuk: ["turkish"], hunhar: ["turkish"], hurda: ["turkish"], huysuz: ["turkish"], huzur: ["turkish"], h\u00FCcum: ["turkish"], h\u00FCk\u00FCmet: ["turkish"], h\u00FCnkar: ["turkish"], h\u00FCviyet: ["turkish"], \u0131rmak: ["turkish"], \u0131s\u0131\u00F6l\u00E7er: ["turkish"], \u0131s\u0131t\u0131c\u0131: ["turkish"], \u0131spanak: ["turkish"], \u0131srar: ["turkish"], \u0131\u015F\u0131ldak: ["turkish"], \u0131zd\u0131rap: ["turkish"], \u0131zgara: ["turkish"], ibadet: ["turkish"], icat: ["turkish"], i\u00E7b\u00FCkey: ["turkish"], i\u00E7ecek: ["turkish"], i\u00E7g\u00FCd\u00FC: ["turkish"], i\u00E7sel: ["turkish"], idman: ["turkish"], iftihar: ["turkish"], i\u011Fne: ["turkish"], ihanet: ["turkish"], ihbar: ["turkish"], ihdas: ["turkish"], ihmal: ["turkish"], ihracat: ["turkish"], ihsan: ["turkish"], ikilem: ["turkish"], ikindi: ["turkish"], ikircik: ["turkish"], iklim: ["turkish"], iksir: ["turkish"], iktibas: ["turkish"], ila\u00E7: ["turkish"], il\u00E7e: ["turkish"], ileri: ["turkish"], ileti\u015Fim: ["turkish"], ilgi: ["turkish"], ilhak: ["turkish"], ilkbahar: ["turkish"], ilkokul: ["turkish"], ilmek: ["turkish"], imkan: ["turkish"], imle\u00E7: ["turkish"], imsak: ["turkish"], imtihan: ["turkish"], imza: ["turkish"], ince: ["turkish"], inkar: ["turkish"], in\u015Fa: ["turkish"], ipek: ["turkish"], ipucu: ["turkish"], irade: ["turkish"], irfan: ["turkish"], irmik: ["turkish"], isabet: ["turkish"], iskele: ["turkish"], israf: ["turkish"], isyan: ["turkish"], i\u015F\u00E7i: ["turkish"], i\u015Fgal: ["turkish"], i\u015Fg\u00FCzar: ["turkish"], i\u015Flem: ["turkish"], itibar: ["turkish"], itiraf: ["turkish"], ivedi: ["turkish"], ivme: ["turkish"], iyile\u015Fme: ["turkish"], iyimser: ["turkish"], izbandut: ["turkish"], izci: ["turkish"], izdiham: ["turkish"], izin: ["turkish"], jakoben: ["turkish"], jandarma: ["turkish"], jargon: ["turkish"], kabaday\u0131: ["turkish"], kablo: ["turkish"], kabus: ["turkish"], ka\u00E7amak: ["turkish"], kadeh: ["turkish"], kad\u0131n: ["turkish"], kadraj: ["turkish"], kafa: ["turkish"], kafkas: ["turkish"], ka\u011F\u0131t: ["turkish"], ka\u011Fn\u0131: ["turkish"], kahkaha: ["turkish"], kahraman: ["turkish"], kahvalt\u0131: ["turkish"], kak\u00FCl: ["turkish"], kald\u0131r\u0131m: ["turkish"], kale: ["turkish"], kalibre: ["turkish"], kalkan: ["turkish"], kalpak: ["turkish"], kam\u0131\u015F: ["turkish"], kamyon: ["turkish"], kanat: ["turkish"], kanda\u015F: ["turkish"], kanepe: ["turkish"], kanser: ["turkish"], kanun: ["turkish"], kaos: ["turkish"], kap\u0131: ["turkish"], kapl\u0131ca: ["turkish"], kaptan: ["turkish"], karanl\u0131k: ["turkish"], karde\u015F: ["turkish"], karga: ["turkish"], kar\u0131nca: ["turkish"], karma\u015Fa: ["turkish"], kar\u015F\u0131t: ["turkish"], kas\u0131rga: ["turkish"], kask: ["turkish"], kasvet: ["turkish"], katk\u0131: ["turkish"], katman: ["turkish"], kavram: ["turkish"], kaygan: ["turkish"], kaynak\u00E7a: ["turkish"], kayyum: ["turkish"], kedi: ["turkish"], kehanet: ["turkish"], kekik: ["turkish"], kelebek: ["turkish"], kenar: ["turkish"], kerkenez: ["turkish"], kerpi\u00E7: ["turkish"], kesirli: ["turkish"], kesmece: ["turkish"], kestane: ["turkish"], ke\u015Fkek: ["turkish"], ket\u00E7ap: ["turkish"], keyfiyet: ["turkish"], k\u0131ble: ["turkish"], k\u0131demli: ["turkish"], k\u0131lavuz: ["turkish"], k\u0131l\u00E7\u0131k: ["turkish"], k\u0131l\u0131f: ["turkish"], k\u0131ra\u00E7: ["turkish"], k\u0131rm\u0131z\u0131: ["turkish"], k\u0131rsal: ["turkish"], k\u0131sayol: ["turkish"], k\u0131s\u0131m: ["turkish"], k\u0131skan\u00E7: ["turkish"], k\u0131smet: ["turkish"], k\u0131\u015Fla: ["turkish"], k\u0131van\u00E7: ["turkish"], k\u0131v\u0131lc\u0131m: ["turkish"], k\u0131vr\u0131k: ["turkish"], k\u0131yafet: ["turkish"], k\u0131ymetli: ["turkish"], k\u0131zak: ["turkish"], k\u0131z\u0131lc\u0131k: ["turkish"], kibar: ["turkish"], kinaye: ["turkish"], kira: ["turkish"], kiremit: ["turkish"], kirli: ["turkish"], kirpik: ["turkish"], ki\u015Fisel: ["turkish"], kitap: ["turkish"], ko\u00E7ba\u015F\u0131: ["turkish"], kodaman: ["turkish"], ko\u011Fu\u015F: ["turkish"], kokteyl: ["turkish"], kolayc\u0131: ["turkish"], kolbast\u0131: ["turkish"], kolonya: ["turkish"], koltuk: ["turkish"], kolye: ["turkish"], kombine: ["turkish"], komedyen: ["turkish"], komiser: ["turkish"], komposto: ["turkish"], kom\u015Fu: ["turkish"], komuta: ["turkish"], konak: ["turkish"], konfor: ["turkish"], koni: ["turkish"], kons\u00FCl: ["turkish"], kopya: ["turkish"], korkusuz: ["turkish"], korna: ["turkish"], korse: ["turkish"], korunak: ["turkish"], korvet: ["turkish"], kost\u00FCm: ["turkish"], ko\u015Ful: ["turkish"], koyu: ["turkish"], kozmik: ["turkish"], k\u00F6fte: ["turkish"], k\u00F6kensel: ["turkish"], k\u00F6pr\u00FCc\u00FCk: ["turkish"], k\u00F6p\u00FCk: ["turkish"], k\u00F6rd\u00FC\u011F\u00FCm: ["turkish"], k\u00F6rfez: ["turkish"], k\u00F6stebek: ["turkish"], k\u00F6\u015Fegen: ["turkish"], k\u00F6t\u00FC: ["turkish"], kravat: ["turkish"], kriter: ["turkish"], kuantum: ["turkish"], kudurma: ["turkish"], kulu\u00E7ka: ["turkish"], kul\u00FCbe: ["turkish"], kumanya: ["turkish"], kumbara: ["turkish"], kumlu: ["turkish"], kumpir: ["turkish"], kumral: ["turkish"], kundura: ["turkish"], kupa: ["turkish"], kupkuru: ["turkish"], kuramsal: ["turkish"], kurba\u011Fa: ["turkish"], kurdele: ["turkish"], kurgu: ["turkish"], kurmay: ["turkish"], kur\u015Fun: ["turkish"], kurtulu\u015F: ["turkish"], kurultay: ["turkish"], kurye: ["turkish"], kusursuz: ["turkish"], ku\u015Fak: ["turkish"], ku\u015Fba\u015F\u0131: ["turkish"], ku\u015Fkulu: ["turkish"], kutlama: ["turkish"], kutsal: ["turkish"], kutup: ["turkish"], kuver: ["turkish"], kuyruk: ["turkish"], kuzey: ["turkish"], kuzgun: ["turkish"], k\u00FC\u00E7\u00FCk: ["turkish"], k\u00FCl\u00E7e: ["turkish"], k\u00FClfet: ["turkish"], k\u00FClliye: ["turkish"], k\u00FClt\u00FCrel: ["turkish"], k\u00FCmes: ["turkish"], k\u00FCnefe: ["turkish"], k\u00FCresel: ["turkish"], k\u00FCtle: ["turkish"], lahana: ["turkish"], lahmacun: ["turkish"], lamba: ["turkish"], lansman: ["turkish"], lava\u015F: ["turkish"], lay\u0131k: ["turkish"], le\u011Fen: ["turkish"], levent: ["turkish"], leziz: ["turkish"], lezzet: ["turkish"], lider: ["turkish"], likide: ["turkish"], liman: ["turkish"], liste: ["turkish"], litre: ["turkish"], liyakat: ["turkish"], lodos: ["turkish"], lokanta: ["turkish"], lokman: ["turkish"], lokum: ["turkish"], lunapark: ["turkish"], l\u00FCtfen: ["turkish"], l\u00FCzum: ["turkish"], nokta: ["turkish"], mabet: ["turkish"], macera: ["turkish"], macun: ["turkish"], madalya: ["turkish"], madde: ["turkish"], madem: ["turkish"], ma\u011Fara: ["turkish"], ma\u011Fdur: ["turkish"], ma\u011Ffiret: ["turkish"], ma\u011Flup: ["turkish"], mahalle: ["turkish"], mahcup: ["turkish"], mahir: ["turkish"], mahkeme: ["turkish"], mahlas: ["turkish"], mahrum: ["turkish"], mahsul: ["turkish"], makas: ["turkish"], makbuz: ["turkish"], makine: ["turkish"], makro: ["turkish"], maksat: ["turkish"], makul: ["turkish"], maliye: ["turkish"], manav: ["turkish"], mangal: ["turkish"], manidar: ["turkish"], manken: ["turkish"], mant\u0131k: ["turkish"], manzara: ["turkish"], mare\u015Fal: ["turkish"], margarin: ["turkish"], marifet: ["turkish"], marmelat: ["turkish"], masa\u00FCst\u00FC: ["turkish"], masmavi: ["turkish"], masraf: ["turkish"], masum: ["turkish"], matah: ["turkish"], materyal: ["turkish"], matrak: ["turkish"], maval: ["turkish"], mavra: ["turkish"], maydanoz: ["turkish"], mayho\u015F: ["turkish"], maytap: ["turkish"], mazbata: ["turkish"], mazeret: ["turkish"], mazlum: ["turkish"], mazot: ["turkish"], mazur: ["turkish"], mebla\u011F: ["turkish"], mebus: ["turkish"], mecaz: ["turkish"], mecbur: ["turkish"], meclis: ["turkish"], mecmua: ["turkish"], mecnun: ["turkish"], me\u00E7hul: ["turkish"], medeni: ["turkish"], mehtap: ["turkish"], mekanik: ["turkish"], melodi: ["turkish"], meltem: ["turkish"], memur: ["turkish"], mendil: ["turkish"], menek\u015Fe: ["turkish"], mente\u015Fe: ["turkish"], merakl\u0131: ["turkish"], mercek: ["turkish"], merdiven: ["turkish"], merhaba: ["turkish"], merinos: ["turkish"], merkez: ["turkish"], mermi: ["turkish"], mert: ["turkish"], mesafe: ["turkish"], mesele: ["turkish"], mesken: ["turkish"], meslek: ["turkish"], me\u015Fale: ["turkish"], me\u015Fgul: ["turkish"], me\u015Fhur: ["turkish"], metafor: ["turkish"], metin: ["turkish"], metre: ["turkish"], mevcut: ["turkish"], mevkida\u015F: ["turkish"], meydan: ["turkish"], meyil: ["turkish"], meyve: ["turkish"], meziyet: ["turkish"], mezun: ["turkish"], m\u0131knat\u0131s: ["turkish"], m\u0131sra: ["turkish"], m\u0131z\u0131ka: ["turkish"], mi\u011Ffer: ["turkish"], mihrak: ["turkish"], miktar: ["turkish"], milat: ["turkish"], milli: ["turkish"], mimar: ["turkish"], minare: ["turkish"], mineral: ["turkish"], minik: ["turkish"], minyon: ["turkish"], mirliva: ["turkish"], misafir: ["turkish"], miskin: ["turkish"], miting: ["turkish"], miyop: ["turkish"], mizah: ["turkish"], mobilya: ["turkish"], monit\u00F6r: ["turkish"], mor\u00F6tesi: ["turkish"], motive: ["turkish"], mozaik: ["turkish"], muavin: ["turkish"], mucize: ["turkish"], muhaf\u0131z: ["turkish"], muhte\u015Fem: ["turkish"], mukayese: ["turkish"], mumya: ["turkish"], musluk: ["turkish"], mu\u015Famba: ["turkish"], mutab\u0131k: ["turkish"], mutfak: ["turkish"], mutlu: ["turkish"], muzaffer: ["turkish"], muzdarip: ["turkish"], m\u00FCbarek: ["turkish"], m\u00FCcadele: ["turkish"], m\u00FCd\u00FCr: ["turkish"], m\u00FCfredat: ["turkish"], m\u00FCft\u00FC: ["turkish"], m\u00FChendis: ["turkish"], m\u00FChim: ["turkish"], m\u00FChlet: ["turkish"], m\u00FCkemmel: ["turkish"], m\u00FClk: ["turkish"], m\u00FCmk\u00FCn: ["turkish"], m\u00FCmtaz: ["turkish"], m\u00FCsrif: ["turkish"], m\u00FCstesna: ["turkish"], m\u00FC\u015Fahit: ["turkish"], m\u00FC\u015Fteri: ["turkish"], m\u00FCtercim: ["turkish"], m\u00FCthi\u015F: ["turkish"], m\u00FCze: ["turkish"], m\u00FCzik: ["turkish"], nab\u0131z: ["turkish"], nadas: ["turkish"], nadir: ["turkish"], naho\u015F: ["turkish"], nakarat: ["turkish"], nak\u0131\u015F: ["turkish"], nalbur: ["turkish"], namlu: ["turkish"], namus: ["turkish"], nank\u00F6r: ["turkish"], nargile: ["turkish"], narkoz: ["turkish"], nas\u0131l: ["turkish"], nasip: ["turkish"], naylon: ["turkish"], nazar: ["turkish"], naz\u0131m: ["turkish"], nazik: ["turkish"], neden: ["turkish"], nefes: ["turkish"], negatif: ["turkish"], neon: ["turkish"], nept\u00FCn: ["turkish"], nerede: ["turkish"], nesil: ["turkish"], nesnel: ["turkish"], ne\u015Feli: ["turkish"], netice: ["turkish"], nevresim: ["turkish"], neyse: ["turkish"], neyzen: ["turkish"], nezaket: ["turkish"], nezih: ["turkish"], nezle: ["turkish"], nicel: ["turkish"], nil\u00FCfer: ["turkish"], nimet: ["turkish"], nisan: ["turkish"], nispet: ["turkish"], nitekim: ["turkish"], nizam: ["turkish"], nohut: ["turkish"], noksan: ["turkish"], nostalji: ["turkish"], noter: ["turkish"], n\u00F6bet: ["turkish"], numara: ["turkish"], numune: ["turkish"], nutuk: ["turkish"], n\u00FCfus: ["turkish"], obaba\u015F\u0131: ["turkish"], obez: ["turkish"], obje: ["turkish"], ocak: ["turkish"], odun: ["turkish"], ofansif: ["turkish"], ofis: ["turkish"], o\u011Flak: ["turkish"], o\u011Fuz: ["turkish"], ok\u00E7u: ["turkish"], oklava: ["turkish"], oksijen: ["turkish"], okul: ["turkish"], okumu\u015F: ["turkish"], okutman: ["turkish"], okuyucu: ["turkish"], okyanus: ["turkish"], ola\u011Fan: ["turkish"], olanak: ["turkish"], olas\u0131: ["turkish"], olay: ["turkish"], olgun: ["turkish"], olimpik: ["turkish"], olumlu: ["turkish"], omlet: ["turkish"], omurga: ["turkish"], onar\u0131m: ["turkish"], onursal: ["turkish"], optik: ["turkish"], orant\u0131: ["turkish"], ordu: ["turkish"], organik: ["turkish"], orijin: ["turkish"], orkide: ["turkish"], orman: ["turkish"], orta: ["turkish"], oru\u00E7: ["turkish"], ota\u011F: ["turkish"], otantik: ["turkish"], otel: ["turkish"], otoban: ["turkish"], otogar: ["turkish"], otomobil: ["turkish"], otonom: ["turkish"], otopark: ["turkish"], otorite: ["turkish"], otoyol: ["turkish"], oturum: ["turkish"], oyuk: ["turkish"], oyuncak: ["turkish"], ozan: ["turkish"], \u00F6deme: ["turkish"], \u00F6denek: ["turkish"], \u00F6dev: ["turkish"], \u00F6d\u00FCl: ["turkish"], \u00F6d\u00FCn\u00E7: ["turkish"], \u00F6fke: ["turkish"], \u00F6\u011Flen: ["turkish"], \u00F6\u011Frenci: ["turkish"], \u00F6\u011F\u00FCn: ["turkish"], \u00F6\u011F\u00FCt\u00FCc\u00FC: ["turkish"], \u00F6ks\u00FCr\u00FCk: ["turkish"], \u00F6l\u00E7me: ["turkish"], \u00F6l\u00E7\u00FC: ["turkish"], \u00F6l\u00FCms\u00FCz: ["turkish"], \u00F6m\u00FCr: ["turkish"], \u00F6nayak: ["turkish"], \u00F6nc\u00FC: ["turkish"], \u00F6nder: ["turkish"], \u00F6nem: ["turkish"], \u00F6nerge: ["turkish"], \u00F6ng\u00F6r\u00FC: ["turkish"], \u00F6nl\u00FCk: ["turkish"], \u00F6nsezi: ["turkish"], \u00F6p\u00FCc\u00FCk: ["turkish"], \u00F6rdek: ["turkish"], \u00F6rg\u00FC: ["turkish"], \u00F6rtbas: ["turkish"], \u00F6rtme: ["turkish"], \u00F6rt\u00FC: ["turkish"], \u00F6r\u00FCmcek: ["turkish"], \u00F6r\u00FCnt\u00FC: ["turkish"], \u00F6teberi: ["turkish"], \u00F6teki: ["turkish"], \u00F6v\u00FCn\u00E7: ["turkish"], \u00F6yk\u00FC: ["turkish"], \u00F6yleyse: ["turkish"], \u00F6z\u00E7ekim: ["turkish"], \u00F6zdeyi\u015F: ["turkish"], \u00F6zel: ["turkish"], \u00F6zenti: ["turkish"], \u00F6zerk: ["turkish"], \u00F6zg\u00FCrl\u00FCk: ["turkish"], \u00F6zlem: ["turkish"], \u00F6zl\u00FC: ["turkish"], \u00F6zne: ["turkish"], \u00F6zsever: ["turkish"], \u00F6z\u00FCmseme: ["turkish"], \u00F6z\u00FCr: ["turkish"], \u00F6zveri: ["turkish"], pabu\u00E7: ["turkish"], padi\u015Fah: ["turkish"], palamut: ["turkish"], palmiye: ["turkish"], palto: ["turkish"], palya\u00E7o: ["turkish"], pamuk: ["turkish"], panay\u0131r: ["turkish"], pancar: ["turkish"], panik: ["turkish"], panjur: ["turkish"], pankart: ["turkish"], pano: ["turkish"], pansuman: ["turkish"], pantolon: ["turkish"], panzehir: ["turkish"], papatya: ["turkish"], papyon: ["turkish"], para\u015F\u00FCt: ["turkish"], par\u00E7a: ["turkish"], pard\u00F6s\u00FC: ["turkish"], parf\u00FCm: ["turkish"], par\u0131lt\u0131: ["turkish"], parkur: ["turkish"], parmak: ["turkish"], parodi: ["turkish"], parsel: ["turkish"], partner: ["turkish"], pasaport: ["turkish"], pasif: ["turkish"], paskalya: ["turkish"], past\u0131rma: ["turkish"], pa\u015Fa: ["turkish"], patates: ["turkish"], paten: ["turkish"], patika: ["turkish"], patl\u0131can: ["turkish"], patolog: ["turkish"], payanda: ["turkish"], payda\u015F: ["turkish"], payidar: ["turkish"], payla\u015Fma: ["turkish"], paytak: ["turkish"], pe\u00E7ete: ["turkish"], peder: ["turkish"], pehlivan: ["turkish"], pekala: ["turkish"], pekmez: ["turkish"], pelerin: ["turkish"], pelikan: ["turkish"], pel\u00FC\u015F: ["turkish"], pembe: ["turkish"], pencere: ["turkish"], pense: ["turkish"], per\u00E7in: ["turkish"], perde: ["turkish"], pergel: ["turkish"], peri\u015Fan: ["turkish"], peron: ["turkish"], personel: ["turkish"], per\u015Fembe: ["turkish"], peruk: ["turkish"], pervane: ["turkish"], pespaye: ["turkish"], pestil: ["turkish"], pe\u015Fin: ["turkish"], petek: ["turkish"], petrol: ["turkish"], petunya: ["turkish"], peynir: ["turkish"], peyzaj: ["turkish"], p\u0131nar: ["turkish"], p\u0131rasa: ["turkish"], p\u0131rlanta: ["turkish"], pide: ["turkish"], pikap: ["turkish"], pilav: ["turkish"], pili\u00E7: ["turkish"], pipet: ["turkish"], pipo: ["turkish"], piramit: ["turkish"], pirin\u00E7: ["turkish"], pirzola: ["turkish"], pist: ["turkish"], pi\u015Fik: ["turkish"], pi\u015Fman: ["turkish"], piyasa: ["turkish"], piyes: ["turkish"], plaj: ["turkish"], plaket: ["turkish"], planlama: ["turkish"], platform: ["turkish"], plazma: ["turkish"], podyum: ["turkish"], po\u011Fa\u00E7a: ["turkish"], polat: ["turkish"], politika: ["turkish"], pop\u00FCler: ["turkish"], porselen: ["turkish"], portakal: ["turkish"], poster: ["turkish"], po\u015Fet: ["turkish"], poyraz: ["turkish"], pozitif: ["turkish"], pranga: ["turkish"], pratik: ["turkish"], prenses: ["turkish"], prim: ["turkish"], profil: ["turkish"], proje: ["turkish"], protokol: ["turkish"], puan: ["turkish"], pudra: ["turkish"], pusula: ["turkish"], p\u00FCre: ["turkish"], p\u00FCr\u00FCz: ["turkish"], p\u00FCst\u00FCl: ["turkish"], p\u00FCs\u00FCr: ["turkish"], racon: ["turkish"], radikal: ["turkish"], radyo: ["turkish"], rafadan: ["turkish"], rafine: ["turkish"], ra\u011Fbet: ["turkish"], rahat: ["turkish"], rahle: ["turkish"], rakam: ["turkish"], raket: ["turkish"], rakip: ["turkish"], rakun: ["turkish"], ralli: ["turkish"], randevu: ["turkish"], ranza: ["turkish"], rapor: ["turkish"], rastgele: ["turkish"], rasyonel: ["turkish"], raz\u0131: ["turkish"], realite: ["turkish"], re\u00E7ine: ["turkish"], refah: ["turkish"], referans: ["turkish"], refik: ["turkish"], rehber: ["turkish"], rehin: ["turkish"], reis: ["turkish"], rekabet: ["turkish"], reklam: ["turkish"], rekor: ["turkish"], rekt\u00F6r: ["turkish"], renk: ["turkish"], resim: ["turkish"], resmen: ["turkish"], restoran: ["turkish"], retorik: ["turkish"], reva\u00E7: ["turkish"], reyon: ["turkish"], rezalet: ["turkish"], rezerv: ["turkish"], rezil: ["turkish"], r\u0131ht\u0131m: ["turkish"], r\u0131za: ["turkish"], ritim: ["turkish"], rit\u00FCel: ["turkish"], rivayet: ["turkish"], roman: ["turkish"], rozet: ["turkish"], r\u00F6portaj: ["turkish"], r\u00F6tar: ["turkish"], ruble: ["turkish"], ruhban: ["turkish"], ruhsat: ["turkish"], rulet: ["turkish"], runik: ["turkish"], rutin: ["turkish"], rutubet: ["turkish"], r\u00FC\u015Fvet: ["turkish"], r\u00FCtbe: ["turkish"], r\u00FCya: ["turkish"], r\u00FCzgar: ["turkish"], sabah: ["turkish"], sab\u0131ka: ["turkish"], sabit: ["turkish"], sabun: ["turkish"], sa\u00E7ma: ["turkish"], sade: ["turkish"], sad\u0131k: ["turkish"], safahat: ["turkish"], safdil: ["turkish"], safkan: ["turkish"], sa\u011Fanak: ["turkish"], sa\u011Fduyu: ["turkish"], sa\u011Flam: ["turkish"], saha: ["turkish"], sahiden: ["turkish"], sahne: ["turkish"], sakal: ["turkish"], sak\u0131z: ["turkish"], sakin: ["turkish"], saklama: ["turkish"], saksa\u011Fan: ["turkish"], salamura: ["turkish"], sal\u00E7a: ["turkish"], salg\u0131: ["turkish"], sal\u0131n\u0131m: ["turkish"], salk\u0131m: ["turkish"], saltanat: ["turkish"], sanat\u00E7\u0131: ["turkish"], sancak: ["turkish"], sandalye: ["turkish"], saniye: ["turkish"], saplant\u0131: ["turkish"], saps\u0131z: ["turkish"], saray: ["turkish"], sar\u0131\u015F\u0131n: ["turkish"], sark\u0131k: ["turkish"], sarma\u015F\u0131k: ["turkish"], sat\u0131r: ["turkish"], sava\u015F\u0131m: ["turkish"], savunma: ["turkish"], saydam: ["turkish"], sayfa: ["turkish"], sayg\u0131n: ["turkish"], say\u0131sal: ["turkish"], sebep: ["turkish"], se\u00E7enek: ["turkish"], se\u00E7im: ["turkish"], se\u00E7kin: ["turkish"], se\u00E7men: ["turkish"], sedir: ["turkish"], sedye: ["turkish"], sefer: ["turkish"], sehpa: ["turkish"], sekizgen: ["turkish"], selekt\u00F6r: ["turkish"], selvi: ["turkish"], semavi: ["turkish"], sembol: ["turkish"], seminer: ["turkish"], senaryo: ["turkish"], sendika: ["turkish"], senkron: ["turkish"], sens\u00F6r: ["turkish"], sentez: ["turkish"], sepet: ["turkish"], seramik: ["turkish"], serbest: ["turkish"], serdar: ["turkish"], seremoni: ["turkish"], sergi: ["turkish"], serhat: ["turkish"], serin: ["turkish"], sermaye: ["turkish"], serpu\u015F: ["turkish"], sersem: ["turkish"], ser\u00FCven: ["turkish"], sesli: ["turkish"], seste\u015F: ["turkish"], sevap: ["turkish"], seviye: ["turkish"], seyahat: ["turkish"], seyirci: ["turkish"], sezon: ["turkish"], s\u0131cak: ["turkish"], s\u0131fat: ["turkish"], s\u0131hhi: ["turkish"], s\u0131nanma: ["turkish"], s\u0131n\u0131r: ["turkish"], s\u0131radan: ["turkish"], s\u0131rda\u015F: ["turkish"], s\u0131rma: ["turkish"], s\u0131rt\u00FCst\u00FC: ["turkish"], s\u0131zg\u0131t: ["turkish"], siftah: ["turkish"], sigorta: ["turkish"], sihirbaz: ["turkish"], silah: ["turkish"], silecek: ["turkish"], silindir: ["turkish"], simetri: ["turkish"], simge: ["turkish"], simit: ["turkish"], sincap: ["turkish"], sindirim: ["turkish"], sinema: ["turkish"], sinirli: ["turkish"], sipari\u015F: ["turkish"], sirke: ["turkish"], siroz: ["turkish"], sistem: ["turkish"], sivilce: ["turkish"], siyasi: ["turkish"], soba: ["turkish"], sofra: ["turkish"], so\u011Fuk: ["turkish"], sohbet: ["turkish"], sokak: ["turkish"], solfej: ["turkish"], solunum: ["turkish"], somut: ["turkish"], sonbahar: ["turkish"], sonraki: ["turkish"], sonsuz: ["turkish"], sorunsuz: ["turkish"], sosyete: ["turkish"], soya\u011Fac\u0131: ["turkish"], soyda\u015F: ["turkish"], soygun: ["turkish"], soytar\u0131: ["turkish"], s\u00F6\u011F\u00FC\u015F: ["turkish"], s\u00F6m\u00FCrge: ["turkish"], s\u00F6n\u00FCk: ["turkish"], s\u00F6ylem: ["turkish"], s\u00F6zc\u00FCk: ["turkish"], s\u00F6zde: ["turkish"], spatula: ["turkish"], spektrum: ["turkish"], spiker: ["turkish"], sporcu: ["turkish"], sprey: ["turkish"], stabil: ["turkish"], stat\u00FC: ["turkish"], stok: ["turkish"], stopaj: ["turkish"], strateji: ["turkish"], subay: ["turkish"], sucuk: ["turkish"], su\u00E7\u00FCst\u00FC: ["turkish"], suhulet: ["turkish"], sulama: ["turkish"], sungur: ["turkish"], sunucu: ["turkish"], surat: ["turkish"], susam: ["turkish"], suskun: ["turkish"], s\u00FCkse: ["turkish"], s\u00FCkut: ["turkish"], s\u00FClale: ["turkish"], s\u00FCnger: ["turkish"], s\u00FCp\u00FCrge: ["turkish"], s\u00FCrahi: ["turkish"], s\u00FCre\u00E7: ["turkish"], s\u00FCrg\u00FCn: ["turkish"], s\u00FCr\u00FCm: ["turkish"], s\u00FCsleme: ["turkish"], s\u00FCtanne: ["turkish"], s\u00FCtla\u00E7: ["turkish"], s\u00FCtun: ["turkish"], s\u00FCvari: ["turkish"], \u015Fahane: ["turkish"], \u015Fahbaz: ["turkish"], \u015Fahit: ["turkish"], \u015Fahsiyet: ["turkish"], \u015Fak\u0131ma: ["turkish"], \u015Faklaban: ["turkish"], \u015Fakrak: ["turkish"], \u015Famar: ["turkish"], \u015Fampiyon: ["turkish"], \u015Fansl\u0131: ["turkish"], \u015Fantiye: ["turkish"], \u015Fapka: ["turkish"], \u015Fark\u0131c\u0131: ["turkish"], \u015Fartname: ["turkish"], \u015Fa\u015F\u0131rma: ["turkish"], \u015Fa\u015Fk\u0131n: ["turkish"], \u015Fatafat: ["turkish"], \u015Fayet: ["turkish"], \u015Febeke: ["turkish"], \u015Fefkat: ["turkish"], \u015Feftali: ["turkish"], \u015Fehir: ["turkish"], \u015Fehvet: ["turkish"], \u015Feker: ["turkish"], \u015Fekil: ["turkish"], \u015Felale: ["turkish"], \u015Fema: ["turkish"], \u015Femsiye: ["turkish"], \u015Ferbet: ["turkish"], \u015Feref: ["turkish"], \u015Ferit: ["turkish"], \u015F\u0131mar\u0131k: ["turkish"], \u015F\u0131p\u0131d\u0131k: ["turkish"], \u015Fifre: ["turkish"], \u015Fimdi: ["turkish"], \u015Fim\u015Fek: ["turkish"], \u015Fip\u015Fak: ["turkish"], \u015Firin: ["turkish"], \u015Fi\u015Fe: ["turkish"], \u015Fi\u015Firme: ["turkish"], \u015Fofben: ["turkish"], \u015F\u00F6hret: ["turkish"], \u015F\u00F6len: ["turkish"], \u015F\u00FCphe: ["turkish"], tabaka: ["turkish"], tabure: ["turkish"], tadilat: ["turkish"], taharet: ["turkish"], tah\u0131l: ["turkish"], tahkim: ["turkish"], tahlil: ["turkish"], tahmin: ["turkish"], tahrifat: ["turkish"], tahsilat: ["turkish"], tahta: ["turkish"], taklit: ["turkish"], takoz: ["turkish"], taksici: ["turkish"], taktik: ["turkish"], takvim: ["turkish"], talebe: ["turkish"], talip: ["turkish"], tamamen: ["turkish"], tamirci: ["turkish"], tamtak\u0131r: ["turkish"], tand\u0131r: ["turkish"], tanecik: ["turkish"], tan\u0131t\u0131m: ["turkish"], tanr\u0131: ["turkish"], tansiyon: ["turkish"], tapan: ["turkish"], tap\u0131nak: ["turkish"], taptaze: ["turkish"], tapu: ["turkish"], tarafgir: ["turkish"], tarhana: ["turkish"], tar\u0131m: ["turkish"], tarih: ["turkish"], tarla: ["turkish"], tartak: ["turkish"], tarumar: ["turkish"], tasar\u0131m: ["turkish"], tasdik: ["turkish"], taslak: ["turkish"], tastamam: ["turkish"], ta\u015Feron: ["turkish"], ta\u015F\u0131nmaz: ["turkish"], ta\u015Fra: ["turkish"], tatava: ["turkish"], tatbikat: ["turkish"], tatil: ["turkish"], tatl\u0131: ["turkish"], tavsiye: ["turkish"], tav\u015Fan: ["turkish"], tavuk: ["turkish"], taze: ["turkish"], taziye: ["turkish"], tazminat: ["turkish"], tebe\u015Fir: ["turkish"], tebrik: ["turkish"], tecr\u00FCbe: ["turkish"], te\u00E7hizat: ["turkish"], tedarik: ["turkish"], tedbir: ["turkish"], tefti\u015F: ["turkish"], te\u011Fet: ["turkish"], te\u011Fmen: ["turkish"], tehdit: ["turkish"], tehlike: ["turkish"], tekd\u00FCze: ["turkish"], tekerlek: ["turkish"], tekme: ["turkish"], teknik: ["turkish"], tekrar: ["turkish"], telef: ["turkish"], telsiz: ["turkish"], telve: ["turkish"], temas: ["turkish"], tembel: ["turkish"], temiz: ["turkish"], temkin: ["turkish"], temsilci: ["turkish"], tendon: ["turkish"], teneke: ["turkish"], tenha: ["turkish"], tenkit: ["turkish"], tepeg\u00F6z: ["turkish"], tepki: ["turkish"], terazi: ["turkish"], terbiye: ["turkish"], tercih: ["turkish"], tereya\u011F\u0131: ["turkish"], terfi: ["turkish"], terim: ["turkish"], terminal: ["turkish"], tersane: ["turkish"], tertip: ["turkish"], tesad\u00FCf: ["turkish"], tescil: ["turkish"], tesir: ["turkish"], teslimat: ["turkish"], tespit: ["turkish"], testere: ["turkish"], te\u015Fekk\u00FCr: ["turkish"], te\u015Fhir: ["turkish"], te\u015Frif: ["turkish"], te\u015Fvik: ["turkish"], teyze: ["turkish"], tezah\u00FCr: ["turkish"], tezgah: ["turkish"], t\u0131bbi: ["turkish"], t\u0131ka\u00E7: ["turkish"], t\u0131k\u0131\u015F\u0131k: ["turkish"], t\u0131knaz: ["turkish"], t\u0131ls\u0131m: ["turkish"], t\u0131pk\u0131: ["turkish"], t\u0131ra\u015F: ["turkish"], t\u0131r\u0131\u015Fka: ["turkish"], t\u0131rman\u0131\u015F: ["turkish"], t\u0131rnak: ["turkish"], t\u0131rpan: ["turkish"], t\u0131slama: ["turkish"], ticaret: ["turkish"], tilki: ["turkish"], tiryaki: ["turkish"], titre\u015Fim: ["turkish"], tohum: ["turkish"], tokat: ["turkish"], tolere: ["turkish"], tombak: ["turkish"], tomurcuk: ["turkish"], topa\u00E7: ["turkish"], toplum: ["turkish"], toprak: ["turkish"], toptan: ["turkish"], toraman: ["turkish"], torpido: ["turkish"], tortu: ["turkish"], tosba\u011Fa: ["turkish"], toynak: ["turkish"], t\u00F6ren: ["turkish"], trafik: ["turkish"], trajedi: ["turkish"], tramvay: ["turkish"], trib\u00FCn: ["turkish"], triko: ["turkish"], tugay: ["turkish"], tu\u011Fla: ["turkish"], tu\u011Frul: ["turkish"], tuhaf: ["turkish"], tulumba: ["turkish"], tun\u00E7: ["turkish"], turan: ["turkish"], turkuaz: ["turkish"], turnusol: ["turkish"], tur\u015Fu: ["turkish"], turuncu: ["turkish"], tutanak: ["turkish"], tutkal: ["turkish"], tutsak: ["turkish"], tutum: ["turkish"], tuyu\u011F: ["turkish"], tuzlu: ["turkish"], t\u00FCccar: ["turkish"], t\u00FCfek: ["turkish"], t\u00FCkenmez: ["turkish"], t\u00FClbent: ["turkish"], t\u00FCmle\u00E7: ["turkish"], t\u00FCnel: ["turkish"], t\u00FCrbin: ["turkish"], t\u00FCrev: ["turkish"], t\u00FCrk: ["turkish"], t\u00FCz\u00FCk: ["turkish"], ucube: ["turkish"], ucuz: ["turkish"], u\u00E7ak: ["turkish"], u\u00E7urtma: ["turkish"], ufuk: ["turkish"], u\u011Frak: ["turkish"], u\u011Fur: ["turkish"], ukala: ["turkish"], ula\u015F\u0131m: ["turkish"], ulema: ["turkish"], ulus: ["turkish"], ulvi: ["turkish"], umursama: ["turkish"], umut: ["turkish"], unutkan: ["turkish"], uslu: ["turkish"], ustaba\u015F\u0131: ["turkish"], ustura: ["turkish"], usul: ["turkish"], utanga\u00E7: ["turkish"], uyan\u0131k: ["turkish"], uyar\u0131: ["turkish"], uydu: ["turkish"], uygar: ["turkish"], uygulama: ["turkish"], uykusuz: ["turkish"], uysal: ["turkish"], uyu\u015Fma: ["turkish"], uzant\u0131: ["turkish"], uzay: ["turkish"], uzg\u00F6ren: ["turkish"], uzla\u015Fma: ["turkish"], uzman: ["turkish"], uzun: ["turkish"], \u00FCcra: ["turkish"], \u00FCcret: ["turkish"], \u00FC\u00E7budak: ["turkish"], \u00FC\u00E7gen: ["turkish"], \u00FC\u00E7ka\u011F\u0131t: ["turkish"], \u00FC\u00E7leme: ["turkish"], \u00FCf\u00FCr\u00FCk: ["turkish"], \u00FClke: ["turkish"], \u00FCmit: ["turkish"], \u00FCniforma: ["turkish"], \u00FCnite: ["turkish"], \u00FCnlem: ["turkish"], \u00FCretken: ["turkish"], \u00FCr\u00FCn: ["turkish"], \u00FCslup: ["turkish"], \u00FCstel: ["turkish"], \u00FCst\u00FCn: ["turkish"], \u00FC\u015Fenge\u00E7: ["turkish"], \u00FC\u015F\u00FCme: ["turkish"], \u00FCtopya: ["turkish"], \u00FCvey: ["turkish"], \u00FCzengi: ["turkish"], \u00FCzg\u00FCn: ["turkish"], \u00FCz\u00FCm: ["turkish"], vaka: ["turkish"], vakfiye: ["turkish"], vak\u0131f: ["turkish"], vakit: ["turkish"], vakum: ["turkish"], vapur: ["turkish"], varil: ["turkish"], varl\u0131k: ["turkish"], varsay\u0131m: ["turkish"], varyemez: ["turkish"], vas\u0131ta: ["turkish"], vasiyet: ["turkish"], vatanda\u015F: ["turkish"], vazife: ["turkish"], vazo: ["turkish"], veciz: ["turkish"], vefa: ["turkish"], vehim: ["turkish"], veliaht: ["turkish"], veresiye: ["turkish"], verimli: ["turkish"], verka\u00E7: ["turkish"], vernik: ["turkish"], vertigo: ["turkish"], vesait: ["turkish"], vesika: ["turkish"], vestiyer: ["turkish"], veznedar: ["turkish"], vicdan: ["turkish"], vilayet: ["turkish"], virane: ["turkish"], virg\u00FCl: ["turkish"], vi\u015Fne: ["turkish"], vites: ["turkish"], vokal: ["turkish"], volkan: ["turkish"], vurma: ["turkish"], vurucu: ["turkish"], v\u00FCcut: ["turkish"], yabanc\u0131: ["turkish"], yabgu: ["turkish"], ya\u011F\u0131\u015F: ["turkish"], ya\u011Fl\u0131: ["turkish"], ya\u011Fmur: ["turkish"], yakamoz: ["turkish"], yak\u0131n: ["turkish"], yakla\u015F\u0131k: ["turkish"], yal\u00E7\u0131n: ["turkish"], yal\u0131t\u0131m: ["turkish"], yaman: ["turkish"], yanarda\u011F: ["turkish"], yang\u0131n: ["turkish"], yan\u0131t: ["turkish"], yank\u0131: ["turkish"], yanl\u0131\u015F: ["turkish"], yans\u0131ma: ["turkish"], yapay: ["turkish"], yapboz: ["turkish"], yap\u0131mc\u0131: ["turkish"], yaprak: ["turkish"], yarat\u0131k: ["turkish"], yarbay: ["turkish"], yard\u0131m: ["turkish"], yarg\u0131\u00E7: ["turkish"], yar\u0131\u00E7ap: ["turkish"], yasemin: ["turkish"], yast\u0131k: ["turkish"], ya\u015Fam: ["turkish"], yatak: ["turkish"], yat\u0131r\u0131m: ["turkish"], yavru: ["turkish"], yaygara: ["turkish"], yay\u0131nc\u0131: ["turkish"], yayla: ["turkish"], yaz\u0131l\u0131m: ["turkish"], yekpare: ["turkish"], yekv\u00FCcut: ["turkish"], yelkovan: ["turkish"], yelpaze: ["turkish"], yemek: ["turkish"], yemi\u015F: ["turkish"], yenge\u00E7: ["turkish"], yeni\u00E7eri: ["turkish"], yeralt\u0131: ["turkish"], yerk\u00FCre: ["turkish"], yerle\u015Fke: ["turkish"], yery\u00FCz\u00FC: ["turkish"], ye\u015Fil: ["turkish"], yetenek: ["turkish"], yetkili: ["turkish"], y\u0131\u011F\u0131nak: ["turkish"], y\u0131kama: ["turkish"], y\u0131lba\u015F\u0131: ["turkish"], y\u0131ld\u0131r\u0131m: ["turkish"], y\u0131lk\u0131: ["turkish"], y\u0131lmaz: ["turkish"], y\u0131rt\u0131c\u0131: ["turkish"], yi\u011Fit: ["turkish"], yo\u011Furt: ["turkish"], yoku\u015F: ["turkish"], yolcu: ["turkish"], yolda\u015F: ["turkish"], yolge\u00E7en: ["turkish"], yolkesen: ["turkish"], yol\u00FCst\u00FC: ["turkish"], yordam: ["turkish"], yorgan: ["turkish"], yorumcu: ["turkish"], yosun: ["turkish"], y\u00F6nde\u015F: ["turkish"], y\u00F6netim: ["turkish"], y\u00F6nl\u00FC: ["turkish"], y\u00F6ntem: ["turkish"], y\u00F6resel: ["turkish"], y\u00F6r\u00FCnge: ["turkish"], yufka: ["turkish"], yukar\u0131: ["turkish"], yumruk: ["turkish"], yumurta: ["turkish"], yuvarlak: ["turkish"], y\u00FCcelme: ["turkish"], y\u00FCk\u00E7eker: ["turkish"], y\u00FCklem: ["turkish"], y\u00FCksek: ["turkish"], y\u00FCrek: ["turkish"], y\u00FCr\u00FCtme: ["turkish"], y\u00FCzde: ["turkish"], y\u00FCzeysel: ["turkish"], y\u00FCzge\u00E7: ["turkish"], y\u00FCz\u00FCst\u00FC: ["turkish"], y\u00FCzy\u0131l: ["turkish"], zab\u0131ta: ["turkish"], zafer: ["turkish"], zahmet: ["turkish"], zambak: ["turkish"], zaptiye: ["turkish"], zarafet: ["turkish"], zaruret: ["turkish"], zeka: ["turkish"], zekice: ["turkish"], zemberek: ["turkish"], zemin: ["turkish"], zencefil: ["turkish"], zeplin: ["turkish"], zeytin: ["turkish"], z\u0131b\u0131n: ["turkish"], z\u0131lg\u0131t: ["turkish"], z\u0131mb\u0131rt\u0131: ["turkish"], z\u0131mpara: ["turkish"], z\u0131pk\u0131n: ["turkish"], zigon: ["turkish"], zihinsel: ["turkish"], zihniyet: ["turkish"], zincir: ["turkish"], zindan: ["turkish"], zirzop: ["turkish"], ziyaret: ["turkish"], ziynet: ["turkish"], zoraki: ["turkish"], zorlu: ["turkish"], zorunlu: ["turkish"], z\u00FC\u011F\u00FCrt: ["turkish"], z\u00FCmre: ["turkish"] };
  }
});

// node_modules/bip39-mnemonic/wordlist/chinese_simplified.json
var require_chinese_simplified = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/chinese_simplified.json"(exports2, module2) {
    module2.exports = ["\u7684", "\u4E00", "\u662F", "\u5728", "\u4E0D", "\u4E86", "\u6709", "\u548C", "\u4EBA", "\u8FD9", "\u4E2D", "\u5927", "\u4E3A", "\u4E0A", "\u4E2A", "\u56FD", "\u6211", "\u4EE5", "\u8981", "\u4ED6", "\u65F6", "\u6765", "\u7528", "\u4EEC", "\u751F", "\u5230", "\u4F5C", "\u5730", "\u4E8E", "\u51FA", "\u5C31", "\u5206", "\u5BF9", "\u6210", "\u4F1A", "\u53EF", "\u4E3B", "\u53D1", "\u5E74", "\u52A8", "\u540C", "\u5DE5", "\u4E5F", "\u80FD", "\u4E0B", "\u8FC7", "\u5B50", "\u8BF4", "\u4EA7", "\u79CD", "\u9762", "\u800C", "\u65B9", "\u540E", "\u591A", "\u5B9A", "\u884C", "\u5B66", "\u6CD5", "\u6240", "\u6C11", "\u5F97", "\u7ECF", "\u5341", "\u4E09", "\u4E4B", "\u8FDB", "\u7740", "\u7B49", "\u90E8", "\u5EA6", "\u5BB6", "\u7535", "\u529B", "\u91CC", "\u5982", "\u6C34", "\u5316", "\u9AD8", "\u81EA", "\u4E8C", "\u7406", "\u8D77", "\u5C0F", "\u7269", "\u73B0", "\u5B9E", "\u52A0", "\u91CF", "\u90FD", "\u4E24", "\u4F53", "\u5236", "\u673A", "\u5F53", "\u4F7F", "\u70B9", "\u4ECE", "\u4E1A", "\u672C", "\u53BB", "\u628A", "\u6027", "\u597D", "\u5E94", "\u5F00", "\u5B83", "\u5408", "\u8FD8", "\u56E0", "\u7531", "\u5176", "\u4E9B", "\u7136", "\u524D", "\u5916", "\u5929", "\u653F", "\u56DB", "\u65E5", "\u90A3", "\u793E", "\u4E49", "\u4E8B", "\u5E73", "\u5F62", "\u76F8", "\u5168", "\u8868", "\u95F4", "\u6837", "\u4E0E", "\u5173", "\u5404", "\u91CD", "\u65B0", "\u7EBF", "\u5185", "\u6570", "\u6B63", "\u5FC3", "\u53CD", "\u4F60", "\u660E", "\u770B", "\u539F", "\u53C8", "\u4E48", "\u5229", "\u6BD4", "\u6216", "\u4F46", "\u8D28", "\u6C14", "\u7B2C", "\u5411", "\u9053", "\u547D", "\u6B64", "\u53D8", "\u6761", "\u53EA", "\u6CA1", "\u7ED3", "\u89E3", "\u95EE", "\u610F", "\u5EFA", "\u6708", "\u516C", "\u65E0", "\u7CFB", "\u519B", "\u5F88", "\u60C5", "\u8005", "\u6700", "\u7ACB", "\u4EE3", "\u60F3", "\u5DF2", "\u901A", "\u5E76", "\u63D0", "\u76F4", "\u9898", "\u515A", "\u7A0B", "\u5C55", "\u4E94", "\u679C", "\u6599", "\u8C61", "\u5458", "\u9769", "\u4F4D", "\u5165", "\u5E38", "\u6587", "\u603B", "\u6B21", "\u54C1", "\u5F0F", "\u6D3B", "\u8BBE", "\u53CA", "\u7BA1", "\u7279", "\u4EF6", "\u957F", "\u6C42", "\u8001", "\u5934", "\u57FA", "\u8D44", "\u8FB9", "\u6D41", "\u8DEF", "\u7EA7", "\u5C11", "\u56FE", "\u5C71", "\u7EDF", "\u63A5", "\u77E5", "\u8F83", "\u5C06", "\u7EC4", "\u89C1", "\u8BA1", "\u522B", "\u5979", "\u624B", "\u89D2", "\u671F", "\u6839", "\u8BBA", "\u8FD0", "\u519C", "\u6307", "\u51E0", "\u4E5D", "\u533A", "\u5F3A", "\u653E", "\u51B3", "\u897F", "\u88AB", "\u5E72", "\u505A", "\u5FC5", "\u6218", "\u5148", "\u56DE", "\u5219", "\u4EFB", "\u53D6", "\u636E", "\u5904", "\u961F", "\u5357", "\u7ED9", "\u8272", "\u5149", "\u95E8", "\u5373", "\u4FDD", "\u6CBB", "\u5317", "\u9020", "\u767E", "\u89C4", "\u70ED", "\u9886", "\u4E03", "\u6D77", "\u53E3", "\u4E1C", "\u5BFC", "\u5668", "\u538B", "\u5FD7", "\u4E16", "\u91D1", "\u589E", "\u4E89", "\u6D4E", "\u9636", "\u6CB9", "\u601D", "\u672F", "\u6781", "\u4EA4", "\u53D7", "\u8054", "\u4EC0", "\u8BA4", "\u516D", "\u5171", "\u6743", "\u6536", "\u8BC1", "\u6539", "\u6E05", "\u7F8E", "\u518D", "\u91C7", "\u8F6C", "\u66F4", "\u5355", "\u98CE", "\u5207", "\u6253", "\u767D", "\u6559", "\u901F", "\u82B1", "\u5E26", "\u5B89", "\u573A", "\u8EAB", "\u8F66", "\u4F8B", "\u771F", "\u52A1", "\u5177", "\u4E07", "\u6BCF", "\u76EE", "\u81F3", "\u8FBE", "\u8D70", "\u79EF", "\u793A", "\u8BAE", "\u58F0", "\u62A5", "\u6597", "\u5B8C", "\u7C7B", "\u516B", "\u79BB", "\u534E", "\u540D", "\u786E", "\u624D", "\u79D1", "\u5F20", "\u4FE1", "\u9A6C", "\u8282", "\u8BDD", "\u7C73", "\u6574", "\u7A7A", "\u5143", "\u51B5", "\u4ECA", "\u96C6", "\u6E29", "\u4F20", "\u571F", "\u8BB8", "\u6B65", "\u7FA4", "\u5E7F", "\u77F3", "\u8BB0", "\u9700", "\u6BB5", "\u7814", "\u754C", "\u62C9", "\u6797", "\u5F8B", "\u53EB", "\u4E14", "\u7A76", "\u89C2", "\u8D8A", "\u7EC7", "\u88C5", "\u5F71", "\u7B97", "\u4F4E", "\u6301", "\u97F3", "\u4F17", "\u4E66", "\u5E03", "\u590D", "\u5BB9", "\u513F", "\u987B", "\u9645", "\u5546", "\u975E", "\u9A8C", "\u8FDE", "\u65AD", "\u6DF1", "\u96BE", "\u8FD1", "\u77FF", "\u5343", "\u5468", "\u59D4", "\u7D20", "\u6280", "\u5907", "\u534A", "\u529E", "\u9752", "\u7701", "\u5217", "\u4E60", "\u54CD", "\u7EA6", "\u652F", "\u822C", "\u53F2", "\u611F", "\u52B3", "\u4FBF", "\u56E2", "\u5F80", "\u9178", "\u5386", "\u5E02", "\u514B", "\u4F55", "\u9664", "\u6D88", "\u6784", "\u5E9C", "\u79F0", "\u592A", "\u51C6", "\u7CBE", "\u503C", "\u53F7", "\u7387", "\u65CF", "\u7EF4", "\u5212", "\u9009", "\u6807", "\u5199", "\u5B58", "\u5019", "\u6BDB", "\u4EB2", "\u5FEB", "\u6548", "\u65AF", "\u9662", "\u67E5", "\u6C5F", "\u578B", "\u773C", "\u738B", "\u6309", "\u683C", "\u517B", "\u6613", "\u7F6E", "\u6D3E", "\u5C42", "\u7247", "\u59CB", "\u5374", "\u4E13", "\u72B6", "\u80B2", "\u5382", "\u4EAC", "\u8BC6", "\u9002", "\u5C5E", "\u5706", "\u5305", "\u706B", "\u4F4F", "\u8C03", "\u6EE1", "\u53BF", "\u5C40", "\u7167", "\u53C2", "\u7EA2", "\u7EC6", "\u5F15", "\u542C", "\u8BE5", "\u94C1", "\u4EF7", "\u4E25", "\u9996", "\u5E95", "\u6DB2", "\u5B98", "\u5FB7", "\u968F", "\u75C5", "\u82CF", "\u5931", "\u5C14", "\u6B7B", "\u8BB2", "\u914D", "\u5973", "\u9EC4", "\u63A8", "\u663E", "\u8C08", "\u7F6A", "\u795E", "\u827A", "\u5462", "\u5E2D", "\u542B", "\u4F01", "\u671B", "\u5BC6", "\u6279", "\u8425", "\u9879", "\u9632", "\u4E3E", "\u7403", "\u82F1", "\u6C27", "\u52BF", "\u544A", "\u674E", "\u53F0", "\u843D", "\u6728", "\u5E2E", "\u8F6E", "\u7834", "\u4E9A", "\u5E08", "\u56F4", "\u6CE8", "\u8FDC", "\u5B57", "\u6750", "\u6392", "\u4F9B", "\u6CB3", "\u6001", "\u5C01", "\u53E6", "\u65BD", "\u51CF", "\u6811", "\u6EB6", "\u600E", "\u6B62", "\u6848", "\u8A00", "\u58EB", "\u5747", "\u6B66", "\u56FA", "\u53F6", "\u9C7C", "\u6CE2", "\u89C6", "\u4EC5", "\u8D39", "\u7D27", "\u7231", "\u5DE6", "\u7AE0", "\u65E9", "\u671D", "\u5BB3", "\u7EED", "\u8F7B", "\u670D", "\u8BD5", "\u98DF", "\u5145", "\u5175", "\u6E90", "\u5224", "\u62A4", "\u53F8", "\u8DB3", "\u67D0", "\u7EC3", "\u5DEE", "\u81F4", "\u677F", "\u7530", "\u964D", "\u9ED1", "\u72AF", "\u8D1F", "\u51FB", "\u8303", "\u7EE7", "\u5174", "\u4F3C", "\u4F59", "\u575A", "\u66F2", "\u8F93", "\u4FEE", "\u6545", "\u57CE", "\u592B", "\u591F", "\u9001", "\u7B14", "\u8239", "\u5360", "\u53F3", "\u8D22", "\u5403", "\u5BCC", "\u6625", "\u804C", "\u89C9", "\u6C49", "\u753B", "\u529F", "\u5DF4", "\u8DDF", "\u867D", "\u6742", "\u98DE", "\u68C0", "\u5438", "\u52A9", "\u5347", "\u9633", "\u4E92", "\u521D", "\u521B", "\u6297", "\u8003", "\u6295", "\u574F", "\u7B56", "\u53E4", "\u5F84", "\u6362", "\u672A", "\u8DD1", "\u7559", "\u94A2", "\u66FE", "\u7AEF", "\u8D23", "\u7AD9", "\u7B80", "\u8FF0", "\u94B1", "\u526F", "\u5C3D", "\u5E1D", "\u5C04", "\u8349", "\u51B2", "\u627F", "\u72EC", "\u4EE4", "\u9650", "\u963F", "\u5BA3", "\u73AF", "\u53CC", "\u8BF7", "\u8D85", "\u5FAE", "\u8BA9", "\u63A7", "\u5DDE", "\u826F", "\u8F74", "\u627E", "\u5426", "\u7EAA", "\u76CA", "\u4F9D", "\u4F18", "\u9876", "\u7840", "\u8F7D", "\u5012", "\u623F", "\u7A81", "\u5750", "\u7C89", "\u654C", "\u7565", "\u5BA2", "\u8881", "\u51B7", "\u80DC", "\u7EDD", "\u6790", "\u5757", "\u5242", "\u6D4B", "\u4E1D", "\u534F", "\u8BC9", "\u5FF5", "\u9648", "\u4ECD", "\u7F57", "\u76D0", "\u53CB", "\u6D0B", "\u9519", "\u82E6", "\u591C", "\u5211", "\u79FB", "\u9891", "\u9010", "\u9760", "\u6DF7", "\u6BCD", "\u77ED", "\u76AE", "\u7EC8", "\u805A", "\u6C7D", "\u6751", "\u4E91", "\u54EA", "\u65E2", "\u8DDD", "\u536B", "\u505C", "\u70C8", "\u592E", "\u5BDF", "\u70E7", "\u8FC5", "\u5883", "\u82E5", "\u5370", "\u6D32", "\u523B", "\u62EC", "\u6FC0", "\u5B54", "\u641E", "\u751A", "\u5BA4", "\u5F85", "\u6838", "\u6821", "\u6563", "\u4FB5", "\u5427", "\u7532", "\u6E38", "\u4E45", "\u83DC", "\u5473", "\u65E7", "\u6A21", "\u6E56", "\u8D27", "\u635F", "\u9884", "\u963B", "\u6BEB", "\u666E", "\u7A33", "\u4E59", "\u5988", "\u690D", "\u606F", "\u6269", "\u94F6", "\u8BED", "\u6325", "\u9152", "\u5B88", "\u62FF", "\u5E8F", "\u7EB8", "\u533B", "\u7F3A", "\u96E8", "\u5417", "\u9488", "\u5218", "\u554A", "\u6025", "\u5531", "\u8BEF", "\u8BAD", "\u613F", "\u5BA1", "\u9644", "\u83B7", "\u8336", "\u9C9C", "\u7CAE", "\u65A4", "\u5B69", "\u8131", "\u786B", "\u80A5", "\u5584", "\u9F99", "\u6F14", "\u7236", "\u6E10", "\u8840", "\u6B22", "\u68B0", "\u638C", "\u6B4C", "\u6C99", "\u521A", "\u653B", "\u8C13", "\u76FE", "\u8BA8", "\u665A", "\u7C92", "\u4E71", "\u71C3", "\u77DB", "\u4E4E", "\u6740", "\u836F", "\u5B81", "\u9C81", "\u8D35", "\u949F", "\u7164", "\u8BFB", "\u73ED", "\u4F2F", "\u9999", "\u4ECB", "\u8FEB", "\u53E5", "\u4E30", "\u57F9", "\u63E1", "\u5170", "\u62C5", "\u5F26", "\u86CB", "\u6C89", "\u5047", "\u7A7F", "\u6267", "\u7B54", "\u4E50", "\u8C01", "\u987A", "\u70DF", "\u7F29", "\u5F81", "\u8138", "\u559C", "\u677E", "\u811A", "\u56F0", "\u5F02", "\u514D", "\u80CC", "\u661F", "\u798F", "\u4E70", "\u67D3", "\u4E95", "\u6982", "\u6162", "\u6015", "\u78C1", "\u500D", "\u7956", "\u7687", "\u4FC3", "\u9759", "\u8865", "\u8BC4", "\u7FFB", "\u8089", "\u8DF5", "\u5C3C", "\u8863", "\u5BBD", "\u626C", "\u68C9", "\u5E0C", "\u4F24", "\u64CD", "\u5782", "\u79CB", "\u5B9C", "\u6C22", "\u5957", "\u7763", "\u632F", "\u67B6", "\u4EAE", "\u672B", "\u5BAA", "\u5E86", "\u7F16", "\u725B", "\u89E6", "\u6620", "\u96F7", "\u9500", "\u8BD7", "\u5EA7", "\u5C45", "\u6293", "\u88C2", "\u80DE", "\u547C", "\u5A18", "\u666F", "\u5A01", "\u7EFF", "\u6676", "\u539A", "\u76DF", "\u8861", "\u9E21", "\u5B59", "\u5EF6", "\u5371", "\u80F6", "\u5C4B", "\u4E61", "\u4E34", "\u9646", "\u987E", "\u6389", "\u5440", "\u706F", "\u5C81", "\u63AA", "\u675F", "\u8010", "\u5267", "\u7389", "\u8D75", "\u8DF3", "\u54E5", "\u5B63", "\u8BFE", "\u51EF", "\u80E1", "\u989D", "\u6B3E", "\u7ECD", "\u5377", "\u9F50", "\u4F1F", "\u84B8", "\u6B96", "\u6C38", "\u5B97", "\u82D7", "\u5DDD", "\u7089", "\u5CA9", "\u5F31", "\u96F6", "\u6768", "\u594F", "\u6CBF", "\u9732", "\u6746", "\u63A2", "\u6ED1", "\u9547", "\u996D", "\u6D53", "\u822A", "\u6000", "\u8D76", "\u5E93", "\u593A", "\u4F0A", "\u7075", "\u7A0E", "\u9014", "\u706D", "\u8D5B", "\u5F52", "\u53EC", "\u9F13", "\u64AD", "\u76D8", "\u88C1", "\u9669", "\u5EB7", "\u552F", "\u5F55", "\u83CC", "\u7EAF", "\u501F", "\u7CD6", "\u76D6", "\u6A2A", "\u7B26", "\u79C1", "\u52AA", "\u5802", "\u57DF", "\u67AA", "\u6DA6", "\u5E45", "\u54C8", "\u7ADF", "\u719F", "\u866B", "\u6CFD", "\u8111", "\u58E4", "\u78B3", "\u6B27", "\u904D", "\u4FA7", "\u5BE8", "\u6562", "\u5F7B", "\u8651", "\u659C", "\u8584", "\u5EAD", "\u7EB3", "\u5F39", "\u9972", "\u4F38", "\u6298", "\u9EA6", "\u6E7F", "\u6697", "\u8377", "\u74E6", "\u585E", "\u5E8A", "\u7B51", "\u6076", "\u6237", "\u8BBF", "\u5854", "\u5947", "\u900F", "\u6881", "\u5200", "\u65CB", "\u8FF9", "\u5361", "\u6C2F", "\u9047", "\u4EFD", "\u6BD2", "\u6CE5", "\u9000", "\u6D17", "\u6446", "\u7070", "\u5F69", "\u5356", "\u8017", "\u590F", "\u62E9", "\u5FD9", "\u94DC", "\u732E", "\u786C", "\u4E88", "\u7E41", "\u5708", "\u96EA", "\u51FD", "\u4EA6", "\u62BD", "\u7BC7", "\u9635", "\u9634", "\u4E01", "\u5C3A", "\u8FFD", "\u5806", "\u96C4", "\u8FCE", "\u6CDB", "\u7238", "\u697C", "\u907F", "\u8C0B", "\u5428", "\u91CE", "\u732A", "\u65D7", "\u7D2F", "\u504F", "\u5178", "\u9986", "\u7D22", "\u79E6", "\u8102", "\u6F6E", "\u7237", "\u8C46", "\u5FFD", "\u6258", "\u60CA", "\u5851", "\u9057", "\u6108", "\u6731", "\u66FF", "\u7EA4", "\u7C97", "\u503E", "\u5C1A", "\u75DB", "\u695A", "\u8C22", "\u594B", "\u8D2D", "\u78E8", "\u541B", "\u6C60", "\u65C1", "\u788E", "\u9AA8", "\u76D1", "\u6355", "\u5F1F", "\u66B4", "\u5272", "\u8D2F", "\u6B8A", "\u91CA", "\u8BCD", "\u4EA1", "\u58C1", "\u987F", "\u5B9D", "\u5348", "\u5C18", "\u95FB", "\u63ED", "\u70AE", "\u6B8B", "\u51AC", "\u6865", "\u5987", "\u8B66", "\u7EFC", "\u62DB", "\u5434", "\u4ED8", "\u6D6E", "\u906D", "\u5F90", "\u60A8", "\u6447", "\u8C37", "\u8D5E", "\u7BB1", "\u9694", "\u8BA2", "\u7537", "\u5439", "\u56ED", "\u7EB7", "\u5510", "\u8D25", "\u5B8B", "\u73BB", "\u5DE8", "\u8015", "\u5766", "\u8363", "\u95ED", "\u6E7E", "\u952E", "\u51E1", "\u9A7B", "\u9505", "\u6551", "\u6069", "\u5265", "\u51DD", "\u78B1", "\u9F7F", "\u622A", "\u70BC", "\u9EBB", "\u7EBA", "\u7981", "\u5E9F", "\u76DB", "\u7248", "\u7F13", "\u51C0", "\u775B", "\u660C", "\u5A5A", "\u6D89", "\u7B52", "\u5634", "\u63D2", "\u5CB8", "\u6717", "\u5E84", "\u8857", "\u85CF", "\u59D1", "\u8D38", "\u8150", "\u5974", "\u5566", "\u60EF", "\u4E58", "\u4F19", "\u6062", "\u5300", "\u7EB1", "\u624E", "\u8FA9", "\u8033", "\u5F6A", "\u81E3", "\u4EBF", "\u7483", "\u62B5", "\u8109", "\u79C0", "\u8428", "\u4FC4", "\u7F51", "\u821E", "\u5E97", "\u55B7", "\u7EB5", "\u5BF8", "\u6C57", "\u6302", "\u6D2A", "\u8D3A", "\u95EA", "\u67EC", "\u7206", "\u70EF", "\u6D25", "\u7A3B", "\u5899", "\u8F6F", "\u52C7", "\u50CF", "\u6EDA", "\u5398", "\u8499", "\u82B3", "\u80AF", "\u5761", "\u67F1", "\u8361", "\u817F", "\u4EEA", "\u65C5", "\u5C3E", "\u8F67", "\u51B0", "\u8D21", "\u767B", "\u9ECE", "\u524A", "\u94BB", "\u52D2", "\u9003", "\u969C", "\u6C28", "\u90ED", "\u5CF0", "\u5E01", "\u6E2F", "\u4F0F", "\u8F68", "\u4EA9", "\u6BD5", "\u64E6", "\u83AB", "\u523A", "\u6D6A", "\u79D8", "\u63F4", "\u682A", "\u5065", "\u552E", "\u80A1", "\u5C9B", "\u7518", "\u6CE1", "\u7761", "\u7AE5", "\u94F8", "\u6C64", "\u9600", "\u4F11", "\u6C47", "\u820D", "\u7267", "\u7ED5", "\u70B8", "\u54F2", "\u78F7", "\u7EE9", "\u670B", "\u6DE1", "\u5C16", "\u542F", "\u9677", "\u67F4", "\u5448", "\u5F92", "\u989C", "\u6CEA", "\u7A0D", "\u5FD8", "\u6CF5", "\u84DD", "\u62D6", "\u6D1E", "\u6388", "\u955C", "\u8F9B", "\u58EE", "\u950B", "\u8D2B", "\u865A", "\u5F2F", "\u6469", "\u6CF0", "\u5E7C", "\u5EF7", "\u5C0A", "\u7A97", "\u7EB2", "\u5F04", "\u96B6", "\u7591", "\u6C0F", "\u5BAB", "\u59D0", "\u9707", "\u745E", "\u602A", "\u5C24", "\u7434", "\u5FAA", "\u63CF", "\u819C", "\u8FDD", "\u5939", "\u8170", "\u7F18", "\u73E0", "\u7A77", "\u68EE", "\u679D", "\u7AF9", "\u6C9F", "\u50AC", "\u7EF3", "\u5FC6", "\u90A6", "\u5269", "\u5E78", "\u6D46", "\u680F", "\u62E5", "\u7259", "\u8D2E", "\u793C", "\u6EE4", "\u94A0", "\u7EB9", "\u7F62", "\u62CD", "\u54B1", "\u558A", "\u8896", "\u57C3", "\u52E4", "\u7F5A", "\u7126", "\u6F5C", "\u4F0D", "\u58A8", "\u6B32", "\u7F1D", "\u59D3", "\u520A", "\u9971", "\u4EFF", "\u5956", "\u94DD", "\u9B3C", "\u4E3D", "\u8DE8", "\u9ED8", "\u6316", "\u94FE", "\u626B", "\u559D", "\u888B", "\u70AD", "\u6C61", "\u5E55", "\u8BF8", "\u5F27", "\u52B1", "\u6885", "\u5976", "\u6D01", "\u707E", "\u821F", "\u9274", "\u82EF", "\u8BBC", "\u62B1", "\u6BC1", "\u61C2", "\u5BD2", "\u667A", "\u57D4", "\u5BC4", "\u5C4A", "\u8DC3", "\u6E21", "\u6311", "\u4E39", "\u8270", "\u8D1D", "\u78B0", "\u62D4", "\u7239", "\u6234", "\u7801", "\u68A6", "\u82BD", "\u7194", "\u8D64", "\u6E14", "\u54ED", "\u656C", "\u9897", "\u5954", "\u94C5", "\u4EF2", "\u864E", "\u7A00", "\u59B9", "\u4E4F", "\u73CD", "\u7533", "\u684C", "\u9075", "\u5141", "\u9686", "\u87BA", "\u4ED3", "\u9B4F", "\u9510", "\u6653", "\u6C2E", "\u517C", "\u9690", "\u788D", "\u8D6B", "\u62E8", "\u5FE0", "\u8083", "\u7F38", "\u7275", "\u62A2", "\u535A", "\u5DE7", "\u58F3", "\u5144", "\u675C", "\u8BAF", "\u8BDA", "\u78A7", "\u7965", "\u67EF", "\u9875", "\u5DE1", "\u77E9", "\u60B2", "\u704C", "\u9F84", "\u4F26", "\u7968", "\u5BFB", "\u6842", "\u94FA", "\u5723", "\u6050", "\u6070", "\u90D1", "\u8DA3", "\u62AC", "\u8352", "\u817E", "\u8D34", "\u67D4", "\u6EF4", "\u731B", "\u9614", "\u8F86", "\u59BB", "\u586B", "\u64A4", "\u50A8", "\u7B7E", "\u95F9", "\u6270", "\u7D2B", "\u7802", "\u9012", "\u620F", "\u540A", "\u9676", "\u4F10", "\u5582", "\u7597", "\u74F6", "\u5A46", "\u629A", "\u81C2", "\u6478", "\u5FCD", "\u867E", "\u8721", "\u90BB", "\u80F8", "\u5DE9", "\u6324", "\u5076", "\u5F03", "\u69FD", "\u52B2", "\u4E73", "\u9093", "\u5409", "\u4EC1", "\u70C2", "\u7816", "\u79DF", "\u4E4C", "\u8230", "\u4F34", "\u74DC", "\u6D45", "\u4E19", "\u6682", "\u71E5", "\u6A61", "\u67F3", "\u8FF7", "\u6696", "\u724C", "\u79E7", "\u80C6", "\u8BE6", "\u7C27", "\u8E0F", "\u74F7", "\u8C31", "\u5446", "\u5BBE", "\u7CCA", "\u6D1B", "\u8F89", "\u6124", "\u7ADE", "\u9699", "\u6012", "\u7C98", "\u4E43", "\u7EEA", "\u80A9", "\u7C4D", "\u654F", "\u6D82", "\u7199", "\u7686", "\u4FA6", "\u60AC", "\u6398", "\u4EAB", "\u7EA0", "\u9192", "\u72C2", "\u9501", "\u6DC0", "\u6068", "\u7272", "\u9738", "\u722C", "\u8D4F", "\u9006", "\u73A9", "\u9675", "\u795D", "\u79D2", "\u6D59", "\u8C8C", "\u5F79", "\u5F7C", "\u6089", "\u9E2D", "\u8D8B", "\u51E4", "\u6668", "\u755C", "\u8F88", "\u79E9", "\u5375", "\u7F72", "\u68AF", "\u708E", "\u6EE9", "\u68CB", "\u9A71", "\u7B5B", "\u5CE1", "\u5192", "\u5565", "\u5BFF", "\u8BD1", "\u6D78", "\u6CC9", "\u5E3D", "\u8FDF", "\u7845", "\u7586", "\u8D37", "\u6F0F", "\u7A3F", "\u51A0", "\u5AE9", "\u80C1", "\u82AF", "\u7262", "\u53DB", "\u8680", "\u5965", "\u9E23", "\u5CAD", "\u7F8A", "\u51ED", "\u4E32", "\u5858", "\u7ED8", "\u9175", "\u878D", "\u76C6", "\u9521", "\u5E99", "\u7B79", "\u51BB", "\u8F85", "\u6444", "\u88AD", "\u7B4B", "\u62D2", "\u50DA", "\u65F1", "\u94BE", "\u9E1F", "\u6F06", "\u6C88", "\u7709", "\u758F", "\u6DFB", "\u68D2", "\u7A57", "\u785D", "\u97E9", "\u903C", "\u626D", "\u4FA8", "\u51C9", "\u633A", "\u7897", "\u683D", "\u7092", "\u676F", "\u60A3", "\u998F", "\u529D", "\u8C6A", "\u8FBD", "\u52C3", "\u9E3F", "\u65E6", "\u540F", "\u62DC", "\u72D7", "\u57CB", "\u8F8A", "\u63A9", "\u996E", "\u642C", "\u9A82", "\u8F9E", "\u52FE", "\u6263", "\u4F30", "\u848B", "\u7ED2", "\u96FE", "\u4E08", "\u6735", "\u59C6", "\u62DF", "\u5B87", "\u8F91", "\u9655", "\u96D5", "\u507F", "\u84C4", "\u5D07", "\u526A", "\u5021", "\u5385", "\u54AC", "\u9A76", "\u85AF", "\u5237", "\u65A5", "\u756A", "\u8D4B", "\u5949", "\u4F5B", "\u6D47", "\u6F2B", "\u66FC", "\u6247", "\u9499", "\u6843", "\u6276", "\u4ED4", "\u8FD4", "\u4FD7", "\u4E8F", "\u8154", "\u978B", "\u68F1", "\u8986", "\u6846", "\u6084", "\u53D4", "\u649E", "\u9A97", "\u52D8", "\u65FA", "\u6CB8", "\u5B64", "\u5410", "\u5B5F", "\u6E20", "\u5C48", "\u75BE", "\u5999", "\u60DC", "\u4EF0", "\u72E0", "\u80C0", "\u8C10", "\u629B", "\u9709", "\u6851", "\u5C97", "\u561B", "\u8870", "\u76D7", "\u6E17", "\u810F", "\u8D56", "\u6D8C", "\u751C", "\u66F9", "\u9605", "\u808C", "\u54E9", "\u5389", "\u70C3", "\u7EAC", "\u6BC5", "\u6628", "\u4F2A", "\u75C7", "\u716E", "\u53F9", "\u9489", "\u642D", "\u830E", "\u7B3C", "\u9177", "\u5077", "\u5F13", "\u9525", "\u6052", "\u6770", "\u5751", "\u9F3B", "\u7FFC", "\u7EB6", "\u53D9", "\u72F1", "\u902E", "\u7F50", "\u7EDC", "\u68DA", "\u6291", "\u81A8", "\u852C", "\u5BFA", "\u9AA4", "\u7A46", "\u51B6", "\u67AF", "\u518C", "\u5C38", "\u51F8", "\u7EC5", "\u576F", "\u727A", "\u7130", "\u8F70", "\u6B23", "\u664B", "\u7626", "\u5FA1", "\u952D", "\u9526", "\u4E27", "\u65EC", "\u953B", "\u5784", "\u641C", "\u6251", "\u9080", "\u4EAD", "\u916F", "\u8FC8", "\u8212", "\u8106", "\u9176", "\u95F2", "\u5FE7", "\u915A", "\u987D", "\u7FBD", "\u6DA8", "\u5378", "\u4ED7", "\u966A", "\u8F9F", "\u60E9", "\u676D", "\u59DA", "\u809A", "\u6349", "\u98D8", "\u6F02", "\u6606", "\u6B3A", "\u543E", "\u90CE", "\u70F7", "\u6C41", "\u5475", "\u9970", "\u8427", "\u96C5", "\u90AE", "\u8FC1", "\u71D5", "\u6492", "\u59FB", "\u8D74", "\u5BB4", "\u70E6", "\u503A", "\u5E10", "\u6591", "\u94C3", "\u65E8", "\u9187", "\u8463", "\u997C", "\u96CF", "\u59FF", "\u62CC", "\u5085", "\u8179", "\u59A5", "\u63C9", "\u8D24", "\u62C6", "\u6B6A", "\u8461", "\u80FA", "\u4E22", "\u6D69", "\u5FBD", "\u6602", "\u57AB", "\u6321", "\u89C8", "\u8D2A", "\u6170", "\u7F34", "\u6C6A", "\u614C", "\u51AF", "\u8BFA", "\u59DC", "\u8C0A", "\u51F6", "\u52A3", "\u8BEC", "\u8000", "\u660F", "\u8EBA", "\u76C8", "\u9A91", "\u4E54", "\u6EAA", "\u4E1B", "\u5362", "\u62B9", "\u95F7", "\u54A8", "\u522E", "\u9A7E", "\u7F06", "\u609F", "\u6458", "\u94D2", "\u63B7", "\u9887", "\u5E7B", "\u67C4", "\u60E0", "\u60E8", "\u4F73", "\u4EC7", "\u814A", "\u7A9D", "\u6DA4", "\u5251", "\u77A7", "\u5821", "\u6CFC", "\u8471", "\u7F69", "\u970D", "\u635E", "\u80CE", "\u82CD", "\u6EE8", "\u4FE9", "\u6345", "\u6E58", "\u780D", "\u971E", "\u90B5", "\u8404", "\u75AF", "\u6DEE", "\u9042", "\u718A", "\u7CAA", "\u70D8", "\u5BBF", "\u6863", "\u6208", "\u9A73", "\u5AC2", "\u88D5", "\u5F99", "\u7BAD", "\u6350", "\u80A0", "\u6491", "\u6652", "\u8FA8", "\u6BBF", "\u83B2", "\u644A", "\u6405", "\u9171", "\u5C4F", "\u75AB", "\u54C0", "\u8521", "\u5835", "\u6CAB", "\u76B1", "\u7545", "\u53E0", "\u9601", "\u83B1", "\u6572", "\u8F96", "\u94A9", "\u75D5", "\u575D", "\u5DF7", "\u997F", "\u7978", "\u4E18", "\u7384", "\u6E9C", "\u66F0", "\u903B", "\u5F6D", "\u5C1D", "\u537F", "\u59A8", "\u8247", "\u541E", "\u97E6", "\u6028", "\u77EE", "\u6B47"];
  }
});

// node_modules/bip39-mnemonic/wordlist/chinese_traditional.json
var require_chinese_traditional = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/chinese_traditional.json"(exports2, module2) {
    module2.exports = ["\u7684", "\u4E00", "\u662F", "\u5728", "\u4E0D", "\u4E86", "\u6709", "\u548C", "\u4EBA", "\u9019", "\u4E2D", "\u5927", "\u70BA", "\u4E0A", "\u500B", "\u570B", "\u6211", "\u4EE5", "\u8981", "\u4ED6", "\u6642", "\u4F86", "\u7528", "\u5011", "\u751F", "\u5230", "\u4F5C", "\u5730", "\u65BC", "\u51FA", "\u5C31", "\u5206", "\u5C0D", "\u6210", "\u6703", "\u53EF", "\u4E3B", "\u767C", "\u5E74", "\u52D5", "\u540C", "\u5DE5", "\u4E5F", "\u80FD", "\u4E0B", "\u904E", "\u5B50", "\u8AAA", "\u7522", "\u7A2E", "\u9762", "\u800C", "\u65B9", "\u5F8C", "\u591A", "\u5B9A", "\u884C", "\u5B78", "\u6CD5", "\u6240", "\u6C11", "\u5F97", "\u7D93", "\u5341", "\u4E09", "\u4E4B", "\u9032", "\u8457", "\u7B49", "\u90E8", "\u5EA6", "\u5BB6", "\u96FB", "\u529B", "\u88E1", "\u5982", "\u6C34", "\u5316", "\u9AD8", "\u81EA", "\u4E8C", "\u7406", "\u8D77", "\u5C0F", "\u7269", "\u73FE", "\u5BE6", "\u52A0", "\u91CF", "\u90FD", "\u5169", "\u9AD4", "\u5236", "\u6A5F", "\u7576", "\u4F7F", "\u9EDE", "\u5F9E", "\u696D", "\u672C", "\u53BB", "\u628A", "\u6027", "\u597D", "\u61C9", "\u958B", "\u5B83", "\u5408", "\u9084", "\u56E0", "\u7531", "\u5176", "\u4E9B", "\u7136", "\u524D", "\u5916", "\u5929", "\u653F", "\u56DB", "\u65E5", "\u90A3", "\u793E", "\u7FA9", "\u4E8B", "\u5E73", "\u5F62", "\u76F8", "\u5168", "\u8868", "\u9593", "\u6A23", "\u8207", "\u95DC", "\u5404", "\u91CD", "\u65B0", "\u7DDA", "\u5167", "\u6578", "\u6B63", "\u5FC3", "\u53CD", "\u4F60", "\u660E", "\u770B", "\u539F", "\u53C8", "\u9EBC", "\u5229", "\u6BD4", "\u6216", "\u4F46", "\u8CEA", "\u6C23", "\u7B2C", "\u5411", "\u9053", "\u547D", "\u6B64", "\u8B8A", "\u689D", "\u53EA", "\u6C92", "\u7D50", "\u89E3", "\u554F", "\u610F", "\u5EFA", "\u6708", "\u516C", "\u7121", "\u7CFB", "\u8ECD", "\u5F88", "\u60C5", "\u8005", "\u6700", "\u7ACB", "\u4EE3", "\u60F3", "\u5DF2", "\u901A", "\u4E26", "\u63D0", "\u76F4", "\u984C", "\u9EE8", "\u7A0B", "\u5C55", "\u4E94", "\u679C", "\u6599", "\u8C61", "\u54E1", "\u9769", "\u4F4D", "\u5165", "\u5E38", "\u6587", "\u7E3D", "\u6B21", "\u54C1", "\u5F0F", "\u6D3B", "\u8A2D", "\u53CA", "\u7BA1", "\u7279", "\u4EF6", "\u9577", "\u6C42", "\u8001", "\u982D", "\u57FA", "\u8CC7", "\u908A", "\u6D41", "\u8DEF", "\u7D1A", "\u5C11", "\u5716", "\u5C71", "\u7D71", "\u63A5", "\u77E5", "\u8F03", "\u5C07", "\u7D44", "\u898B", "\u8A08", "\u5225", "\u5979", "\u624B", "\u89D2", "\u671F", "\u6839", "\u8AD6", "\u904B", "\u8FB2", "\u6307", "\u5E7E", "\u4E5D", "\u5340", "\u5F37", "\u653E", "\u6C7A", "\u897F", "\u88AB", "\u5E79", "\u505A", "\u5FC5", "\u6230", "\u5148", "\u56DE", "\u5247", "\u4EFB", "\u53D6", "\u64DA", "\u8655", "\u968A", "\u5357", "\u7D66", "\u8272", "\u5149", "\u9580", "\u5373", "\u4FDD", "\u6CBB", "\u5317", "\u9020", "\u767E", "\u898F", "\u71B1", "\u9818", "\u4E03", "\u6D77", "\u53E3", "\u6771", "\u5C0E", "\u5668", "\u58D3", "\u5FD7", "\u4E16", "\u91D1", "\u589E", "\u722D", "\u6FDF", "\u968E", "\u6CB9", "\u601D", "\u8853", "\u6975", "\u4EA4", "\u53D7", "\u806F", "\u4EC0", "\u8A8D", "\u516D", "\u5171", "\u6B0A", "\u6536", "\u8B49", "\u6539", "\u6E05", "\u7F8E", "\u518D", "\u63A1", "\u8F49", "\u66F4", "\u55AE", "\u98A8", "\u5207", "\u6253", "\u767D", "\u6559", "\u901F", "\u82B1", "\u5E36", "\u5B89", "\u5834", "\u8EAB", "\u8ECA", "\u4F8B", "\u771F", "\u52D9", "\u5177", "\u842C", "\u6BCF", "\u76EE", "\u81F3", "\u9054", "\u8D70", "\u7A4D", "\u793A", "\u8B70", "\u8072", "\u5831", "\u9B25", "\u5B8C", "\u985E", "\u516B", "\u96E2", "\u83EF", "\u540D", "\u78BA", "\u624D", "\u79D1", "\u5F35", "\u4FE1", "\u99AC", "\u7BC0", "\u8A71", "\u7C73", "\u6574", "\u7A7A", "\u5143", "\u6CC1", "\u4ECA", "\u96C6", "\u6EAB", "\u50B3", "\u571F", "\u8A31", "\u6B65", "\u7FA4", "\u5EE3", "\u77F3", "\u8A18", "\u9700", "\u6BB5", "\u7814", "\u754C", "\u62C9", "\u6797", "\u5F8B", "\u53EB", "\u4E14", "\u7A76", "\u89C0", "\u8D8A", "\u7E54", "\u88DD", "\u5F71", "\u7B97", "\u4F4E", "\u6301", "\u97F3", "\u773E", "\u66F8", "\u5E03", "\u590D", "\u5BB9", "\u5152", "\u9808", "\u969B", "\u5546", "\u975E", "\u9A57", "\u9023", "\u65B7", "\u6DF1", "\u96E3", "\u8FD1", "\u7926", "\u5343", "\u9031", "\u59D4", "\u7D20", "\u6280", "\u5099", "\u534A", "\u8FA6", "\u9752", "\u7701", "\u5217", "\u7FD2", "\u97FF", "\u7D04", "\u652F", "\u822C", "\u53F2", "\u611F", "\u52DE", "\u4FBF", "\u5718", "\u5F80", "\u9178", "\u6B77", "\u5E02", "\u514B", "\u4F55", "\u9664", "\u6D88", "\u69CB", "\u5E9C", "\u7A31", "\u592A", "\u6E96", "\u7CBE", "\u503C", "\u865F", "\u7387", "\u65CF", "\u7DAD", "\u5283", "\u9078", "\u6A19", "\u5BEB", "\u5B58", "\u5019", "\u6BDB", "\u89AA", "\u5FEB", "\u6548", "\u65AF", "\u9662", "\u67E5", "\u6C5F", "\u578B", "\u773C", "\u738B", "\u6309", "\u683C", "\u990A", "\u6613", "\u7F6E", "\u6D3E", "\u5C64", "\u7247", "\u59CB", "\u537B", "\u5C08", "\u72C0", "\u80B2", "\u5EE0", "\u4EAC", "\u8B58", "\u9069", "\u5C6C", "\u5713", "\u5305", "\u706B", "\u4F4F", "\u8ABF", "\u6EFF", "\u7E23", "\u5C40", "\u7167", "\u53C3", "\u7D05", "\u7D30", "\u5F15", "\u807D", "\u8A72", "\u9435", "\u50F9", "\u56B4", "\u9996", "\u5E95", "\u6DB2", "\u5B98", "\u5FB7", "\u96A8", "\u75C5", "\u8607", "\u5931", "\u723E", "\u6B7B", "\u8B1B", "\u914D", "\u5973", "\u9EC3", "\u63A8", "\u986F", "\u8AC7", "\u7F6A", "\u795E", "\u85DD", "\u5462", "\u5E2D", "\u542B", "\u4F01", "\u671B", "\u5BC6", "\u6279", "\u71DF", "\u9805", "\u9632", "\u8209", "\u7403", "\u82F1", "\u6C27", "\u52E2", "\u544A", "\u674E", "\u53F0", "\u843D", "\u6728", "\u5E6B", "\u8F2A", "\u7834", "\u4E9E", "\u5E2B", "\u570D", "\u6CE8", "\u9060", "\u5B57", "\u6750", "\u6392", "\u4F9B", "\u6CB3", "\u614B", "\u5C01", "\u53E6", "\u65BD", "\u6E1B", "\u6A39", "\u6EB6", "\u600E", "\u6B62", "\u6848", "\u8A00", "\u58EB", "\u5747", "\u6B66", "\u56FA", "\u8449", "\u9B5A", "\u6CE2", "\u8996", "\u50C5", "\u8CBB", "\u7DCA", "\u611B", "\u5DE6", "\u7AE0", "\u65E9", "\u671D", "\u5BB3", "\u7E8C", "\u8F15", "\u670D", "\u8A66", "\u98DF", "\u5145", "\u5175", "\u6E90", "\u5224", "\u8B77", "\u53F8", "\u8DB3", "\u67D0", "\u7DF4", "\u5DEE", "\u81F4", "\u677F", "\u7530", "\u964D", "\u9ED1", "\u72AF", "\u8CA0", "\u64CA", "\u8303", "\u7E7C", "\u8208", "\u4F3C", "\u9918", "\u5805", "\u66F2", "\u8F38", "\u4FEE", "\u6545", "\u57CE", "\u592B", "\u5920", "\u9001", "\u7B46", "\u8239", "\u4F54", "\u53F3", "\u8CA1", "\u5403", "\u5BCC", "\u6625", "\u8077", "\u89BA", "\u6F22", "\u756B", "\u529F", "\u5DF4", "\u8DDF", "\u96D6", "\u96DC", "\u98DB", "\u6AA2", "\u5438", "\u52A9", "\u6607", "\u967D", "\u4E92", "\u521D", "\u5275", "\u6297", "\u8003", "\u6295", "\u58DE", "\u7B56", "\u53E4", "\u5F91", "\u63DB", "\u672A", "\u8DD1", "\u7559", "\u92FC", "\u66FE", "\u7AEF", "\u8CAC", "\u7AD9", "\u7C21", "\u8FF0", "\u9322", "\u526F", "\u76E1", "\u5E1D", "\u5C04", "\u8349", "\u885D", "\u627F", "\u7368", "\u4EE4", "\u9650", "\u963F", "\u5BA3", "\u74B0", "\u96D9", "\u8ACB", "\u8D85", "\u5FAE", "\u8B93", "\u63A7", "\u5DDE", "\u826F", "\u8EF8", "\u627E", "\u5426", "\u7D00", "\u76CA", "\u4F9D", "\u512A", "\u9802", "\u790E", "\u8F09", "\u5012", "\u623F", "\u7A81", "\u5750", "\u7C89", "\u6575", "\u7565", "\u5BA2", "\u8881", "\u51B7", "\u52DD", "\u7D55", "\u6790", "\u584A", "\u5291", "\u6E2C", "\u7D72", "\u5354", "\u8A34", "\u5FF5", "\u9673", "\u4ECD", "\u7F85", "\u9E7D", "\u53CB", "\u6D0B", "\u932F", "\u82E6", "\u591C", "\u5211", "\u79FB", "\u983B", "\u9010", "\u9760", "\u6DF7", "\u6BCD", "\u77ED", "\u76AE", "\u7D42", "\u805A", "\u6C7D", "\u6751", "\u96F2", "\u54EA", "\u65E2", "\u8DDD", "\u885B", "\u505C", "\u70C8", "\u592E", "\u5BDF", "\u71D2", "\u8FC5", "\u5883", "\u82E5", "\u5370", "\u6D32", "\u523B", "\u62EC", "\u6FC0", "\u5B54", "\u641E", "\u751A", "\u5BA4", "\u5F85", "\u6838", "\u6821", "\u6563", "\u4FB5", "\u5427", "\u7532", "\u904A", "\u4E45", "\u83DC", "\u5473", "\u820A", "\u6A21", "\u6E56", "\u8CA8", "\u640D", "\u9810", "\u963B", "\u6BEB", "\u666E", "\u7A69", "\u4E59", "\u5ABD", "\u690D", "\u606F", "\u64F4", "\u9280", "\u8A9E", "\u63EE", "\u9152", "\u5B88", "\u62FF", "\u5E8F", "\u7D19", "\u91AB", "\u7F3A", "\u96E8", "\u55CE", "\u91DD", "\u5289", "\u554A", "\u6025", "\u5531", "\u8AA4", "\u8A13", "\u9858", "\u5BE9", "\u9644", "\u7372", "\u8336", "\u9BAE", "\u7CE7", "\u65A4", "\u5B69", "\u812B", "\u786B", "\u80A5", "\u5584", "\u9F8D", "\u6F14", "\u7236", "\u6F38", "\u8840", "\u6B61", "\u68B0", "\u638C", "\u6B4C", "\u6C99", "\u525B", "\u653B", "\u8B02", "\u76FE", "\u8A0E", "\u665A", "\u7C92", "\u4E82", "\u71C3", "\u77DB", "\u4E4E", "\u6BBA", "\u85E5", "\u5BE7", "\u9B6F", "\u8CB4", "\u9418", "\u7164", "\u8B80", "\u73ED", "\u4F2F", "\u9999", "\u4ECB", "\u8FEB", "\u53E5", "\u8C50", "\u57F9", "\u63E1", "\u862D", "\u64D4", "\u5F26", "\u86CB", "\u6C89", "\u5047", "\u7A7F", "\u57F7", "\u7B54", "\u6A02", "\u8AB0", "\u9806", "\u7159", "\u7E2E", "\u5FB5", "\u81C9", "\u559C", "\u677E", "\u8173", "\u56F0", "\u7570", "\u514D", "\u80CC", "\u661F", "\u798F", "\u8CB7", "\u67D3", "\u4E95", "\u6982", "\u6162", "\u6015", "\u78C1", "\u500D", "\u7956", "\u7687", "\u4FC3", "\u975C", "\u88DC", "\u8A55", "\u7FFB", "\u8089", "\u8E10", "\u5C3C", "\u8863", "\u5BEC", "\u63DA", "\u68C9", "\u5E0C", "\u50B7", "\u64CD", "\u5782", "\u79CB", "\u5B9C", "\u6C2B", "\u5957", "\u7763", "\u632F", "\u67B6", "\u4EAE", "\u672B", "\u61B2", "\u6176", "\u7DE8", "\u725B", "\u89F8", "\u6620", "\u96F7", "\u92B7", "\u8A69", "\u5EA7", "\u5C45", "\u6293", "\u88C2", "\u80DE", "\u547C", "\u5A18", "\u666F", "\u5A01", "\u7DA0", "\u6676", "\u539A", "\u76DF", "\u8861", "\u96DE", "\u5B6B", "\u5EF6", "\u5371", "\u81A0", "\u5C4B", "\u9109", "\u81E8", "\u9678", "\u9867", "\u6389", "\u5440", "\u71C8", "\u6B72", "\u63AA", "\u675F", "\u8010", "\u5287", "\u7389", "\u8D99", "\u8DF3", "\u54E5", "\u5B63", "\u8AB2", "\u51F1", "\u80E1", "\u984D", "\u6B3E", "\u7D39", "\u5377", "\u9F4A", "\u5049", "\u84B8", "\u6B96", "\u6C38", "\u5B97", "\u82D7", "\u5DDD", "\u7210", "\u5CA9", "\u5F31", "\u96F6", "\u694A", "\u594F", "\u6CBF", "\u9732", "\u687F", "\u63A2", "\u6ED1", "\u93AE", "\u98EF", "\u6FC3", "\u822A", "\u61F7", "\u8D95", "\u5EAB", "\u596A", "\u4F0A", "\u9748", "\u7A05", "\u9014", "\u6EC5", "\u8CFD", "\u6B78", "\u53EC", "\u9F13", "\u64AD", "\u76E4", "\u88C1", "\u96AA", "\u5EB7", "\u552F", "\u9304", "\u83CC", "\u7D14", "\u501F", "\u7CD6", "\u84CB", "\u6A6B", "\u7B26", "\u79C1", "\u52AA", "\u5802", "\u57DF", "\u69CD", "\u6F64", "\u5E45", "\u54C8", "\u7ADF", "\u719F", "\u87F2", "\u6FA4", "\u8166", "\u58E4", "\u78B3", "\u6B50", "\u904D", "\u5074", "\u5BE8", "\u6562", "\u5FB9", "\u616E", "\u659C", "\u8584", "\u5EAD", "\u7D0D", "\u5F48", "\u98FC", "\u4F38", "\u6298", "\u9EA5", "\u6FD5", "\u6697", "\u8377", "\u74E6", "\u585E", "\u5E8A", "\u7BC9", "\u60E1", "\u6236", "\u8A2A", "\u5854", "\u5947", "\u900F", "\u6881", "\u5200", "\u65CB", "\u8DE1", "\u5361", "\u6C2F", "\u9047", "\u4EFD", "\u6BD2", "\u6CE5", "\u9000", "\u6D17", "\u64FA", "\u7070", "\u5F69", "\u8CE3", "\u8017", "\u590F", "\u64C7", "\u5FD9", "\u9285", "\u737B", "\u786C", "\u4E88", "\u7E41", "\u5708", "\u96EA", "\u51FD", "\u4EA6", "\u62BD", "\u7BC7", "\u9663", "\u9670", "\u4E01", "\u5C3A", "\u8FFD", "\u5806", "\u96C4", "\u8FCE", "\u6CDB", "\u7238", "\u6A13", "\u907F", "\u8B00", "\u5678", "\u91CE", "\u8C6C", "\u65D7", "\u7D2F", "\u504F", "\u5178", "\u9928", "\u7D22", "\u79E6", "\u8102", "\u6F6E", "\u723A", "\u8C46", "\u5FFD", "\u6258", "\u9A5A", "\u5851", "\u907A", "\u6108", "\u6731", "\u66FF", "\u7E96", "\u7C97", "\u50BE", "\u5C1A", "\u75DB", "\u695A", "\u8B1D", "\u596E", "\u8CFC", "\u78E8", "\u541B", "\u6C60", "\u65C1", "\u788E", "\u9AA8", "\u76E3", "\u6355", "\u5F1F", "\u66B4", "\u5272", "\u8CAB", "\u6B8A", "\u91CB", "\u8A5E", "\u4EA1", "\u58C1", "\u9813", "\u5BF6", "\u5348", "\u5875", "\u805E", "\u63ED", "\u70AE", "\u6B98", "\u51AC", "\u6A4B", "\u5A66", "\u8B66", "\u7D9C", "\u62DB", "\u5433", "\u4ED8", "\u6D6E", "\u906D", "\u5F90", "\u60A8", "\u6416", "\u8C37", "\u8D0A", "\u7BB1", "\u9694", "\u8A02", "\u7537", "\u5439", "\u5712", "\u7D1B", "\u5510", "\u6557", "\u5B8B", "\u73BB", "\u5DE8", "\u8015", "\u5766", "\u69AE", "\u9589", "\u7063", "\u9375", "\u51E1", "\u99D0", "\u934B", "\u6551", "\u6069", "\u525D", "\u51DD", "\u9E7C", "\u9F52", "\u622A", "\u7149", "\u9EBB", "\u7D21", "\u7981", "\u5EE2", "\u76DB", "\u7248", "\u7DE9", "\u6DE8", "\u775B", "\u660C", "\u5A5A", "\u6D89", "\u7B52", "\u5634", "\u63D2", "\u5CB8", "\u6717", "\u838A", "\u8857", "\u85CF", "\u59D1", "\u8CBF", "\u8150", "\u5974", "\u5566", "\u6163", "\u4E58", "\u5925", "\u6062", "\u52FB", "\u7D17", "\u624E", "\u8FAF", "\u8033", "\u5F6A", "\u81E3", "\u5104", "\u7483", "\u62B5", "\u8108", "\u79C0", "\u85A9", "\u4FC4", "\u7DB2", "\u821E", "\u5E97", "\u5674", "\u7E31", "\u5BF8", "\u6C57", "\u639B", "\u6D2A", "\u8CC0", "\u9583", "\u67EC", "\u7206", "\u70EF", "\u6D25", "\u7A3B", "\u7246", "\u8EDF", "\u52C7", "\u50CF", "\u6EFE", "\u5398", "\u8499", "\u82B3", "\u80AF", "\u5761", "\u67F1", "\u76EA", "\u817F", "\u5100", "\u65C5", "\u5C3E", "\u8ECB", "\u51B0", "\u8CA2", "\u767B", "\u9ECE", "\u524A", "\u947D", "\u52D2", "\u9003", "\u969C", "\u6C28", "\u90ED", "\u5CF0", "\u5E63", "\u6E2F", "\u4F0F", "\u8ECC", "\u755D", "\u7562", "\u64E6", "\u83AB", "\u523A", "\u6D6A", "\u79D8", "\u63F4", "\u682A", "\u5065", "\u552E", "\u80A1", "\u5CF6", "\u7518", "\u6CE1", "\u7761", "\u7AE5", "\u9444", "\u6E6F", "\u95A5", "\u4F11", "\u532F", "\u820D", "\u7267", "\u7E5E", "\u70B8", "\u54F2", "\u78F7", "\u7E3E", "\u670B", "\u6DE1", "\u5C16", "\u555F", "\u9677", "\u67F4", "\u5448", "\u5F92", "\u984F", "\u6DDA", "\u7A0D", "\u5FD8", "\u6CF5", "\u85CD", "\u62D6", "\u6D1E", "\u6388", "\u93E1", "\u8F9B", "\u58EF", "\u92D2", "\u8CA7", "\u865B", "\u5F4E", "\u6469", "\u6CF0", "\u5E7C", "\u5EF7", "\u5C0A", "\u7A97", "\u7DB1", "\u5F04", "\u96B8", "\u7591", "\u6C0F", "\u5BAE", "\u59D0", "\u9707", "\u745E", "\u602A", "\u5C24", "\u7434", "\u5FAA", "\u63CF", "\u819C", "\u9055", "\u593E", "\u8170", "\u7DE3", "\u73E0", "\u7AAE", "\u68EE", "\u679D", "\u7AF9", "\u6E9D", "\u50AC", "\u7E69", "\u61B6", "\u90A6", "\u5269", "\u5E78", "\u6F3F", "\u6B04", "\u64C1", "\u7259", "\u8CAF", "\u79AE", "\u6FFE", "\u9209", "\u7D0B", "\u7F77", "\u62CD", "\u54B1", "\u558A", "\u8896", "\u57C3", "\u52E4", "\u7F70", "\u7126", "\u6F5B", "\u4F0D", "\u58A8", "\u6B32", "\u7E2B", "\u59D3", "\u520A", "\u98FD", "\u4EFF", "\u734E", "\u92C1", "\u9B3C", "\u9E97", "\u8DE8", "\u9ED8", "\u6316", "\u93C8", "\u6383", "\u559D", "\u888B", "\u70AD", "\u6C61", "\u5E55", "\u8AF8", "\u5F27", "\u52F5", "\u6885", "\u5976", "\u6F54", "\u707D", "\u821F", "\u9451", "\u82EF", "\u8A1F", "\u62B1", "\u6BC0", "\u61C2", "\u5BD2", "\u667A", "\u57D4", "\u5BC4", "\u5C46", "\u8E8D", "\u6E21", "\u6311", "\u4E39", "\u8271", "\u8C9D", "\u78B0", "\u62D4", "\u7239", "\u6234", "\u78BC", "\u5922", "\u82BD", "\u7194", "\u8D64", "\u6F01", "\u54ED", "\u656C", "\u9846", "\u5954", "\u925B", "\u4EF2", "\u864E", "\u7A00", "\u59B9", "\u4E4F", "\u73CD", "\u7533", "\u684C", "\u9075", "\u5141", "\u9686", "\u87BA", "\u5009", "\u9B4F", "\u92B3", "\u66C9", "\u6C2E", "\u517C", "\u96B1", "\u7919", "\u8D6B", "\u64A5", "\u5FE0", "\u8085", "\u7F38", "\u727D", "\u6436", "\u535A", "\u5DE7", "\u6BBC", "\u5144", "\u675C", "\u8A0A", "\u8AA0", "\u78A7", "\u7965", "\u67EF", "\u9801", "\u5DE1", "\u77E9", "\u60B2", "\u704C", "\u9F61", "\u502B", "\u7968", "\u5C0B", "\u6842", "\u92EA", "\u8056", "\u6050", "\u6070", "\u912D", "\u8DA3", "\u62AC", "\u8352", "\u9A30", "\u8CBC", "\u67D4", "\u6EF4", "\u731B", "\u95CA", "\u8F1B", "\u59BB", "\u586B", "\u64A4", "\u5132", "\u7C3D", "\u9B27", "\u64FE", "\u7D2B", "\u7802", "\u905E", "\u6232", "\u540A", "\u9676", "\u4F10", "\u9935", "\u7642", "\u74F6", "\u5A46", "\u64AB", "\u81C2", "\u6478", "\u5FCD", "\u8766", "\u881F", "\u9130", "\u80F8", "\u978F", "\u64E0", "\u5076", "\u68C4", "\u69FD", "\u52C1", "\u4E73", "\u9127", "\u5409", "\u4EC1", "\u721B", "\u78DA", "\u79DF", "\u70CF", "\u8266", "\u4F34", "\u74DC", "\u6DFA", "\u4E19", "\u66AB", "\u71E5", "\u6A61", "\u67F3", "\u8FF7", "\u6696", "\u724C", "\u79E7", "\u81BD", "\u8A73", "\u7C27", "\u8E0F", "\u74F7", "\u8B5C", "\u5446", "\u8CD3", "\u7CCA", "\u6D1B", "\u8F1D", "\u61A4", "\u7AF6", "\u9699", "\u6012", "\u7C98", "\u4E43", "\u7DD2", "\u80A9", "\u7C4D", "\u654F", "\u5857", "\u7199", "\u7686", "\u5075", "\u61F8", "\u6398", "\u4EAB", "\u7CFE", "\u9192", "\u72C2", "\u9396", "\u6DC0", "\u6068", "\u7272", "\u9738", "\u722C", "\u8CDE", "\u9006", "\u73A9", "\u9675", "\u795D", "\u79D2", "\u6D59", "\u8C8C", "\u5F79", "\u5F7C", "\u6089", "\u9D28", "\u8DA8", "\u9CF3", "\u6668", "\u755C", "\u8F29", "\u79E9", "\u5375", "\u7F72", "\u68AF", "\u708E", "\u7058", "\u68CB", "\u9A45", "\u7BE9", "\u5CFD", "\u5192", "\u5565", "\u58FD", "\u8B6F", "\u6D78", "\u6CC9", "\u5E3D", "\u9072", "\u77FD", "\u7586", "\u8CB8", "\u6F0F", "\u7A3F", "\u51A0", "\u5AE9", "\u8105", "\u82AF", "\u7262", "\u53DB", "\u8755", "\u5967", "\u9CF4", "\u5DBA", "\u7F8A", "\u6191", "\u4E32", "\u5858", "\u7E6A", "\u9175", "\u878D", "\u76C6", "\u932B", "\u5EDF", "\u7C4C", "\u51CD", "\u8F14", "\u651D", "\u8972", "\u7B4B", "\u62D2", "\u50DA", "\u65F1", "\u9240", "\u9CE5", "\u6F06", "\u6C88", "\u7709", "\u758F", "\u6DFB", "\u68D2", "\u7A57", "\u785D", "\u97D3", "\u903C", "\u626D", "\u50D1", "\u6DBC", "\u633A", "\u7897", "\u683D", "\u7092", "\u676F", "\u60A3", "\u993E", "\u52F8", "\u8C6A", "\u907C", "\u52C3", "\u9D3B", "\u65E6", "\u540F", "\u62DC", "\u72D7", "\u57CB", "\u8F25", "\u63A9", "\u98F2", "\u642C", "\u7F75", "\u8FAD", "\u52FE", "\u6263", "\u4F30", "\u8523", "\u7D68", "\u9727", "\u4E08", "\u6735", "\u59C6", "\u64EC", "\u5B87", "\u8F2F", "\u965D", "\u96D5", "\u511F", "\u84C4", "\u5D07", "\u526A", "\u5021", "\u5EF3", "\u54AC", "\u99DB", "\u85AF", "\u5237", "\u65A5", "\u756A", "\u8CE6", "\u5949", "\u4F5B", "\u6F86", "\u6F2B", "\u66FC", "\u6247", "\u9223", "\u6843", "\u6276", "\u4ED4", "\u8FD4", "\u4FD7", "\u8667", "\u8154", "\u978B", "\u68F1", "\u8986", "\u6846", "\u6084", "\u53D4", "\u649E", "\u9A19", "\u52D8", "\u65FA", "\u6CB8", "\u5B64", "\u5410", "\u5B5F", "\u6E20", "\u5C48", "\u75BE", "\u5999", "\u60DC", "\u4EF0", "\u72E0", "\u8139", "\u8AE7", "\u62CB", "\u9EF4", "\u6851", "\u5D17", "\u561B", "\u8870", "\u76DC", "\u6EF2", "\u81DF", "\u8CF4", "\u6E67", "\u751C", "\u66F9", "\u95B1", "\u808C", "\u54E9", "\u53B2", "\u70F4", "\u7DEF", "\u6BC5", "\u6628", "\u507D", "\u75C7", "\u716E", "\u5606", "\u91D8", "\u642D", "\u8396", "\u7C60", "\u9177", "\u5077", "\u5F13", "\u9310", "\u6046", "\u5091", "\u5751", "\u9F3B", "\u7FFC", "\u7DB8", "\u6558", "\u7344", "\u902E", "\u7F50", "\u7D61", "\u68DA", "\u6291", "\u81A8", "\u852C", "\u5BFA", "\u9A5F", "\u7A46", "\u51B6", "\u67AF", "\u518A", "\u5C4D", "\u51F8", "\u7D33", "\u576F", "\u72A7", "\u7130", "\u8F5F", "\u6B23", "\u6649", "\u7626", "\u79A6", "\u9320", "\u9326", "\u55AA", "\u65EC", "\u935B", "\u58DF", "\u641C", "\u64B2", "\u9080", "\u4EAD", "\u916F", "\u9081", "\u8212", "\u8106", "\u9176", "\u9592", "\u6182", "\u915A", "\u9811", "\u7FBD", "\u6F32", "\u5378", "\u4ED7", "\u966A", "\u95E2", "\u61F2", "\u676D", "\u59DA", "\u809A", "\u6349", "\u98C4", "\u6F02", "\u6606", "\u6B3A", "\u543E", "\u90CE", "\u70F7", "\u6C41", "\u5475", "\u98FE", "\u856D", "\u96C5", "\u90F5", "\u9077", "\u71D5", "\u6492", "\u59FB", "\u8D74", "\u5BB4", "\u7169", "\u50B5", "\u5E33", "\u6591", "\u9234", "\u65E8", "\u9187", "\u8463", "\u9905", "\u96DB", "\u59FF", "\u62CC", "\u5085", "\u8179", "\u59A5", "\u63C9", "\u8CE2", "\u62C6", "\u6B6A", "\u8461", "\u80FA", "\u4E1F", "\u6D69", "\u5FBD", "\u6602", "\u588A", "\u64CB", "\u89BD", "\u8CAA", "\u6170", "\u7E73", "\u6C6A", "\u614C", "\u99AE", "\u8AFE", "\u59DC", "\u8ABC", "\u5147", "\u52A3", "\u8AA3", "\u8000", "\u660F", "\u8EBA", "\u76C8", "\u9A0E", "\u55AC", "\u6EAA", "\u53E2", "\u76E7", "\u62B9", "\u60B6", "\u8AEE", "\u522E", "\u99D5", "\u7E9C", "\u609F", "\u6458", "\u927A", "\u64F2", "\u9817", "\u5E7B", "\u67C4", "\u60E0", "\u6158", "\u4F73", "\u4EC7", "\u81D8", "\u7AA9", "\u6ECC", "\u528D", "\u77A7", "\u5821", "\u6F51", "\u8525", "\u7F69", "\u970D", "\u6488", "\u80CE", "\u84BC", "\u6FF1", "\u5006", "\u6345", "\u6E58", "\u780D", "\u971E", "\u90B5", "\u8404", "\u760B", "\u6DEE", "\u9042", "\u718A", "\u7CDE", "\u70D8", "\u5BBF", "\u6A94", "\u6208", "\u99C1", "\u5AC2", "\u88D5", "\u5F99", "\u7BAD", "\u6350", "\u8178", "\u6490", "\u66EC", "\u8FA8", "\u6BBF", "\u84EE", "\u6524", "\u652A", "\u91AC", "\u5C4F", "\u75AB", "\u54C0", "\u8521", "\u5835", "\u6CAB", "\u76BA", "\u66A2", "\u758A", "\u95A3", "\u840A", "\u6572", "\u8F44", "\u9264", "\u75D5", "\u58E9", "\u5DF7", "\u9913", "\u798D", "\u4E18", "\u7384", "\u6E9C", "\u66F0", "\u908F", "\u5F6D", "\u5617", "\u537F", "\u59A8", "\u8247", "\u541E", "\u97CB", "\u6028", "\u77EE", "\u6B47"];
  }
});

// node_modules/bip39-mnemonic/wordlist/czech.json
var require_czech = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/czech.json"(exports2, module2) {
    module2.exports = ["abdikace", "abeceda", "adresa", "agrese", "akce", "aktovka", "alej", "alkohol", "amputace", "ananas", "andulka", "anekdota", "anketa", "antika", "anulovat", "archa", "arogance", "asfalt", "asistent", "aspirace", "astma", "astronom", "atlas", "atletika", "atol", "autobus", "azyl", "babka", "bachor", "bacil", "baculka", "badatel", "bageta", "bagr", "bahno", "bakterie", "balada", "baletka", "balkon", "balonek", "balvan", "balza", "bambus", "bankomat", "barbar", "baret", "barman", "baroko", "barva", "baterka", "batoh", "bavlna", "bazalka", "bazilika", "bazuka", "bedna", "beran", "beseda", "bestie", "beton", "bezinka", "bezmoc", "beztak", "bicykl", "bidlo", "biftek", "bikiny", "bilance", "biograf", "biolog", "bitva", "bizon", "blahobyt", "blatouch", "blecha", "bledule", "blesk", "blikat", "blizna", "blokovat", "bloudit", "blud", "bobek", "bobr", "bodlina", "bodnout", "bohatost", "bojkot", "bojovat", "bokorys", "bolest", "borec", "borovice", "bota", "boubel", "bouchat", "bouda", "boule", "bourat", "boxer", "bradavka", "brambora", "branka", "bratr", "brepta", "briketa", "brko", "brloh", "bronz", "broskev", "brunetka", "brusinka", "brzda", "brzy", "bublina", "bubnovat", "buchta", "buditel", "budka", "budova", "bufet", "bujarost", "bukvice", "buldok", "bulva", "bunda", "bunkr", "burza", "butik", "buvol", "buzola", "bydlet", "bylina", "bytovka", "bzukot", "capart", "carevna", "cedr", "cedule", "cejch", "cejn", "cela", "celer", "celkem", "celnice", "cenina", "cennost", "cenovka", "centrum", "cenzor", "cestopis", "cetka", "chalupa", "chapadlo", "charita", "chata", "chechtat", "chemie", "chichot", "chirurg", "chlad", "chleba", "chlubit", "chmel", "chmura", "chobot", "chochol", "chodba", "cholera", "chomout", "chopit", "choroba", "chov", "chrapot", "chrlit", "chrt", "chrup", "chtivost", "chudina", "chutnat", "chvat", "chvilka", "chvost", "chyba", "chystat", "chytit", "cibule", "cigareta", "cihelna", "cihla", "cinkot", "cirkus", "cisterna", "citace", "citrus", "cizinec", "cizost", "clona", "cokoliv", "couvat", "ctitel", "ctnost", "cudnost", "cuketa", "cukr", "cupot", "cvaknout", "cval", "cvik", "cvrkot", "cyklista", "daleko", "dareba", "datel", "datum", "dcera", "debata", "dechovka", "decibel", "deficit", "deflace", "dekl", "dekret", "demokrat", "deprese", "derby", "deska", "detektiv", "dikobraz", "diktovat", "dioda", "diplom", "disk", "displej", "divadlo", "divoch", "dlaha", "dlouho", "dluhopis", "dnes", "dobro", "dobytek", "docent", "dochutit", "dodnes", "dohled", "dohoda", "dohra", "dojem", "dojnice", "doklad", "dokola", "doktor", "dokument", "dolar", "doleva", "dolina", "doma", "dominant", "domluvit", "domov", "donutit", "dopad", "dopis", "doplnit", "doposud", "doprovod", "dopustit", "dorazit", "dorost", "dort", "dosah", "doslov", "dostatek", "dosud", "dosyta", "dotaz", "dotek", "dotknout", "doufat", "doutnat", "dovozce", "dozadu", "doznat", "dozorce", "drahota", "drak", "dramatik", "dravec", "draze", "drdol", "drobnost", "drogerie", "drozd", "drsnost", "drtit", "drzost", "duben", "duchovno", "dudek", "duha", "duhovka", "dusit", "dusno", "dutost", "dvojice", "dvorec", "dynamit", "ekolog", "ekonomie", "elektron", "elipsa", "email", "emise", "emoce", "empatie", "epizoda", "epocha", "epopej", "epos", "esej", "esence", "eskorta", "eskymo", "etiketa", "euforie", "evoluce", "exekuce", "exkurze", "expedice", "exploze", "export", "extrakt", "facka", "fajfka", "fakulta", "fanatik", "fantazie", "farmacie", "favorit", "fazole", "federace", "fejeton", "fenka", "fialka", "figurant", "filozof", "filtr", "finance", "finta", "fixace", "fjord", "flanel", "flirt", "flotila", "fond", "fosfor", "fotbal", "fotka", "foton", "frakce", "freska", "fronta", "fukar", "funkce", "fyzika", "galeje", "garant", "genetika", "geolog", "gilotina", "glazura", "glejt", "golem", "golfista", "gotika", "graf", "gramofon", "granule", "grep", "gril", "grog", "groteska", "guma", "hadice", "hadr", "hala", "halenka", "hanba", "hanopis", "harfa", "harpuna", "havran", "hebkost", "hejkal", "hejno", "hejtman", "hektar", "helma", "hematom", "herec", "herna", "heslo", "hezky", "historik", "hladovka", "hlasivky", "hlava", "hledat", "hlen", "hlodavec", "hloh", "hloupost", "hltat", "hlubina", "hluchota", "hmat", "hmota", "hmyz", "hnis", "hnojivo", "hnout", "hoblina", "hoboj", "hoch", "hodiny", "hodlat", "hodnota", "hodovat", "hojnost", "hokej", "holinka", "holka", "holub", "homole", "honitba", "honorace", "horal", "horda", "horizont", "horko", "horlivec", "hormon", "hornina", "horoskop", "horstvo", "hospoda", "hostina", "hotovost", "houba", "houf", "houpat", "houska", "hovor", "hradba", "hranice", "hravost", "hrazda", "hrbolek", "hrdina", "hrdlo", "hrdost", "hrnek", "hrobka", "hromada", "hrot", "hrouda", "hrozen", "hrstka", "hrubost", "hryzat", "hubenost", "hubnout", "hudba", "hukot", "humr", "husita", "hustota", "hvozd", "hybnost", "hydrant", "hygiena", "hymna", "hysterik", "idylka", "ihned", "ikona", "iluze", "imunita", "infekce", "inflace", "inkaso", "inovace", "inspekce", "internet", "invalida", "investor", "inzerce", "ironie", "jablko", "jachta", "jahoda", "jakmile", "jakost", "jalovec", "jantar", "jarmark", "jaro", "jasan", "jasno", "jatka", "javor", "jazyk", "jedinec", "jedle", "jednatel", "jehlan", "jekot", "jelen", "jelito", "jemnost", "jenom", "jepice", "jeseter", "jevit", "jezdec", "jezero", "jinak", "jindy", "jinoch", "jiskra", "jistota", "jitrnice", "jizva", "jmenovat", "jogurt", "jurta", "kabaret", "kabel", "kabinet", "kachna", "kadet", "kadidlo", "kahan", "kajak", "kajuta", "kakao", "kaktus", "kalamita", "kalhoty", "kalibr", "kalnost", "kamera", "kamkoliv", "kamna", "kanibal", "kanoe", "kantor", "kapalina", "kapela", "kapitola", "kapka", "kaple", "kapota", "kapr", "kapusta", "kapybara", "karamel", "karotka", "karton", "kasa", "katalog", "katedra", "kauce", "kauza", "kavalec", "kazajka", "kazeta", "kazivost", "kdekoliv", "kdesi", "kedluben", "kemp", "keramika", "kino", "klacek", "kladivo", "klam", "klapot", "klasika", "klaun", "klec", "klenba", "klepat", "klesnout", "klid", "klima", "klisna", "klobouk", "klokan", "klopa", "kloub", "klubovna", "klusat", "kluzkost", "kmen", "kmitat", "kmotr", "kniha", "knot", "koalice", "koberec", "kobka", "kobliha", "kobyla", "kocour", "kohout", "kojenec", "kokos", "koktejl", "kolaps", "koleda", "kolize", "kolo", "komando", "kometa", "komik", "komnata", "komora", "kompas", "komunita", "konat", "koncept", "kondice", "konec", "konfese", "kongres", "konina", "konkurs", "kontakt", "konzerva", "kopanec", "kopie", "kopnout", "koprovka", "korbel", "korektor", "kormidlo", "koroptev", "korpus", "koruna", "koryto", "korzet", "kosatec", "kostka", "kotel", "kotleta", "kotoul", "koukat", "koupelna", "kousek", "kouzlo", "kovboj", "koza", "kozoroh", "krabice", "krach", "krajina", "kralovat", "krasopis", "kravata", "kredit", "krejcar", "kresba", "kreveta", "kriket", "kritik", "krize", "krkavec", "krmelec", "krmivo", "krocan", "krok", "kronika", "kropit", "kroupa", "krovka", "krtek", "kruhadlo", "krupice", "krutost", "krvinka", "krychle", "krypta", "krystal", "kryt", "kudlanka", "kufr", "kujnost", "kukla", "kulajda", "kulich", "kulka", "kulomet", "kultura", "kuna", "kupodivu", "kurt", "kurzor", "kutil", "kvalita", "kvasinka", "kvestor", "kynolog", "kyselina", "kytara", "kytice", "kytka", "kytovec", "kyvadlo", "labrador", "lachtan", "ladnost", "laik", "lakomec", "lamela", "lampa", "lanovka", "lasice", "laso", "lastura", "latinka", "lavina", "lebka", "leckdy", "leden", "lednice", "ledovka", "ledvina", "legenda", "legie", "legrace", "lehce", "lehkost", "lehnout", "lektvar", "lenochod", "lentilka", "lepenka", "lepidlo", "letadlo", "letec", "letmo", "letokruh", "levhart", "levitace", "levobok", "libra", "lichotka", "lidojed", "lidskost", "lihovina", "lijavec", "lilek", "limetka", "linie", "linka", "linoleum", "listopad", "litina", "litovat", "lobista", "lodivod", "logika", "logoped", "lokalita", "loket", "lomcovat", "lopata", "lopuch", "lord", "losos", "lotr", "loudal", "louh", "louka", "louskat", "lovec", "lstivost", "lucerna", "lucifer", "lump", "lusk", "lustrace", "lvice", "lyra", "lyrika", "lysina", "madam", "madlo", "magistr", "mahagon", "majetek", "majitel", "majorita", "makak", "makovice", "makrela", "malba", "malina", "malovat", "malvice", "maminka", "mandle", "manko", "marnost", "masakr", "maskot", "masopust", "matice", "matrika", "maturita", "mazanec", "mazivo", "mazlit", "mazurka", "mdloba", "mechanik", "meditace", "medovina", "melasa", "meloun", "mentolka", "metla", "metoda", "metr", "mezera", "migrace", "mihnout", "mihule", "mikina", "mikrofon", "milenec", "milimetr", "milost", "mimika", "mincovna", "minibar", "minomet", "minulost", "miska", "mistr", "mixovat", "mladost", "mlha", "mlhovina", "mlok", "mlsat", "mluvit", "mnich", "mnohem", "mobil", "mocnost", "modelka", "modlitba", "mohyla", "mokro", "molekula", "momentka", "monarcha", "monokl", "monstrum", "montovat", "monzun", "mosaz", "moskyt", "most", "motivace", "motorka", "motyka", "moucha", "moudrost", "mozaika", "mozek", "mozol", "mramor", "mravenec", "mrkev", "mrtvola", "mrzet", "mrzutost", "mstitel", "mudrc", "muflon", "mulat", "mumie", "munice", "muset", "mutace", "muzeum", "muzikant", "myslivec", "mzda", "nabourat", "nachytat", "nadace", "nadbytek", "nadhoz", "nadobro", "nadpis", "nahlas", "nahnat", "nahodile", "nahradit", "naivita", "najednou", "najisto", "najmout", "naklonit", "nakonec", "nakrmit", "nalevo", "namazat", "namluvit", "nanometr", "naoko", "naopak", "naostro", "napadat", "napevno", "naplnit", "napnout", "naposled", "naprosto", "narodit", "naruby", "narychlo", "nasadit", "nasekat", "naslepo", "nastat", "natolik", "navenek", "navrch", "navzdory", "nazvat", "nebe", "nechat", "necky", "nedaleko", "nedbat", "neduh", "negace", "nehet", "nehoda", "nejen", "nejprve", "neklid", "nelibost", "nemilost", "nemoc", "neochota", "neonka", "nepokoj", "nerost", "nerv", "nesmysl", "nesoulad", "netvor", "neuron", "nevina", "nezvykle", "nicota", "nijak", "nikam", "nikdy", "nikl", "nikterak", "nitro", "nocleh", "nohavice", "nominace", "nora", "norek", "nositel", "nosnost", "nouze", "noviny", "novota", "nozdra", "nuda", "nudle", "nuget", "nutit", "nutnost", "nutrie", "nymfa", "obal", "obarvit", "obava", "obdiv", "obec", "obehnat", "obejmout", "obezita", "obhajoba", "obilnice", "objasnit", "objekt", "obklopit", "oblast", "oblek", "obliba", "obloha", "obluda", "obnos", "obohatit", "obojek", "obout", "obrazec", "obrna", "obruba", "obrys", "obsah", "obsluha", "obstarat", "obuv", "obvaz", "obvinit", "obvod", "obvykle", "obyvatel", "obzor", "ocas", "ocel", "ocenit", "ochladit", "ochota", "ochrana", "ocitnout", "odboj", "odbyt", "odchod", "odcizit", "odebrat", "odeslat", "odevzdat", "odezva", "odhadce", "odhodit", "odjet", "odjinud", "odkaz", "odkoupit", "odliv", "odluka", "odmlka", "odolnost", "odpad", "odpis", "odplout", "odpor", "odpustit", "odpykat", "odrazka", "odsoudit", "odstup", "odsun", "odtok", "odtud", "odvaha", "odveta", "odvolat", "odvracet", "odznak", "ofina", "ofsajd", "ohlas", "ohnisko", "ohrada", "ohrozit", "ohryzek", "okap", "okenice", "oklika", "okno", "okouzlit", "okovy", "okrasa", "okres", "okrsek", "okruh", "okupant", "okurka", "okusit", "olejnina", "olizovat", "omak", "omeleta", "omezit", "omladina", "omlouvat", "omluva", "omyl", "onehdy", "opakovat", "opasek", "operace", "opice", "opilost", "opisovat", "opora", "opozice", "opravdu", "oproti", "orbital", "orchestr", "orgie", "orlice", "orloj", "ortel", "osada", "oschnout", "osika", "osivo", "oslava", "oslepit", "oslnit", "oslovit", "osnova", "osoba", "osolit", "ospalec", "osten", "ostraha", "ostuda", "ostych", "osvojit", "oteplit", "otisk", "otop", "otrhat", "otrlost", "otrok", "otruby", "otvor", "ovanout", "ovar", "oves", "ovlivnit", "ovoce", "oxid", "ozdoba", "pachatel", "pacient", "padouch", "pahorek", "pakt", "palanda", "palec", "palivo", "paluba", "pamflet", "pamlsek", "panenka", "panika", "panna", "panovat", "panstvo", "pantofle", "paprika", "parketa", "parodie", "parta", "paruka", "paryba", "paseka", "pasivita", "pastelka", "patent", "patrona", "pavouk", "pazneht", "pazourek", "pecka", "pedagog", "pejsek", "peklo", "peloton", "penalta", "pendrek", "penze", "periskop", "pero", "pestrost", "petarda", "petice", "petrolej", "pevnina", "pexeso", "pianista", "piha", "pijavice", "pikle", "piknik", "pilina", "pilnost", "pilulka", "pinzeta", "pipeta", "pisatel", "pistole", "pitevna", "pivnice", "pivovar", "placenta", "plakat", "plamen", "planeta", "plastika", "platit", "plavidlo", "plaz", "plech", "plemeno", "plenta", "ples", "pletivo", "plevel", "plivat", "plnit", "plno", "plocha", "plodina", "plomba", "plout", "pluk", "plyn", "pobavit", "pobyt", "pochod", "pocit", "poctivec", "podat", "podcenit", "podepsat", "podhled", "podivit", "podklad", "podmanit", "podnik", "podoba", "podpora", "podraz", "podstata", "podvod", "podzim", "poezie", "pohanka", "pohnutka", "pohovor", "pohroma", "pohyb", "pointa", "pojistka", "pojmout", "pokazit", "pokles", "pokoj", "pokrok", "pokuta", "pokyn", "poledne", "polibek", "polknout", "poloha", "polynom", "pomalu", "pominout", "pomlka", "pomoc", "pomsta", "pomyslet", "ponechat", "ponorka", "ponurost", "popadat", "popel", "popisek", "poplach", "poprosit", "popsat", "popud", "poradce", "porce", "porod", "porucha", "poryv", "posadit", "posed", "posila", "poskok", "poslanec", "posoudit", "pospolu", "postava", "posudek", "posyp", "potah", "potkan", "potlesk", "potomek", "potrava", "potupa", "potvora", "poukaz", "pouto", "pouzdro", "povaha", "povidla", "povlak", "povoz", "povrch", "povstat", "povyk", "povzdech", "pozdrav", "pozemek", "poznatek", "pozor", "pozvat", "pracovat", "prahory", "praktika", "prales", "praotec", "praporek", "prase", "pravda", "princip", "prkno", "probudit", "procento", "prodej", "profese", "prohra", "projekt", "prolomit", "promile", "pronikat", "propad", "prorok", "prosba", "proton", "proutek", "provaz", "prskavka", "prsten", "prudkost", "prut", "prvek", "prvohory", "psanec", "psovod", "pstruh", "ptactvo", "puberta", "puch", "pudl", "pukavec", "puklina", "pukrle", "pult", "pumpa", "punc", "pupen", "pusa", "pusinka", "pustina", "putovat", "putyka", "pyramida", "pysk", "pytel", "racek", "rachot", "radiace", "radnice", "radon", "raft", "ragby", "raketa", "rakovina", "rameno", "rampouch", "rande", "rarach", "rarita", "rasovna", "rastr", "ratolest", "razance", "razidlo", "reagovat", "reakce", "recept", "redaktor", "referent", "reflex", "rejnok", "reklama", "rekord", "rekrut", "rektor", "reputace", "revize", "revma", "revolver", "rezerva", "riskovat", "riziko", "robotika", "rodokmen", "rohovka", "rokle", "rokoko", "romaneto", "ropovod", "ropucha", "rorejs", "rosol", "rostlina", "rotmistr", "rotoped", "rotunda", "roubenka", "roucho", "roup", "roura", "rovina", "rovnice", "rozbor", "rozchod", "rozdat", "rozeznat", "rozhodce", "rozinka", "rozjezd", "rozkaz", "rozloha", "rozmar", "rozpad", "rozruch", "rozsah", "roztok", "rozum", "rozvod", "rubrika", "ruchadlo", "rukavice", "rukopis", "ryba", "rybolov", "rychlost", "rydlo", "rypadlo", "rytina", "ryzost", "sadista", "sahat", "sako", "samec", "samizdat", "samota", "sanitka", "sardinka", "sasanka", "satelit", "sazba", "sazenice", "sbor", "schovat", "sebranka", "secese", "sedadlo", "sediment", "sedlo", "sehnat", "sejmout", "sekera", "sekta", "sekunda", "sekvoje", "semeno", "seno", "servis", "sesadit", "seshora", "seskok", "seslat", "sestra", "sesuv", "sesypat", "setba", "setina", "setkat", "setnout", "setrvat", "sever", "seznam", "shoda", "shrnout", "sifon", "silnice", "sirka", "sirotek", "sirup", "situace", "skafandr", "skalisko", "skanzen", "skaut", "skeptik", "skica", "skladba", "sklenice", "sklo", "skluz", "skoba", "skokan", "skoro", "skripta", "skrz", "skupina", "skvost", "skvrna", "slabika", "sladidlo", "slanina", "slast", "slavnost", "sledovat", "slepec", "sleva", "slezina", "slib", "slina", "sliznice", "slon", "sloupek", "slovo", "sluch", "sluha", "slunce", "slupka", "slza", "smaragd", "smetana", "smilstvo", "smlouva", "smog", "smrad", "smrk", "smrtka", "smutek", "smysl", "snad", "snaha", "snob", "sobota", "socha", "sodovka", "sokol", "sopka", "sotva", "souboj", "soucit", "soudce", "souhlas", "soulad", "soumrak", "souprava", "soused", "soutok", "souviset", "spalovna", "spasitel", "spis", "splav", "spodek", "spojenec", "spolu", "sponzor", "spornost", "spousta", "sprcha", "spustit", "sranda", "sraz", "srdce", "srna", "srnec", "srovnat", "srpen", "srst", "srub", "stanice", "starosta", "statika", "stavba", "stehno", "stezka", "stodola", "stolek", "stopa", "storno", "stoupat", "strach", "stres", "strhnout", "strom", "struna", "studna", "stupnice", "stvol", "styk", "subjekt", "subtropy", "suchar", "sudost", "sukno", "sundat", "sunout", "surikata", "surovina", "svah", "svalstvo", "svetr", "svatba", "svazek", "svisle", "svitek", "svoboda", "svodidlo", "svorka", "svrab", "sykavka", "sykot", "synek", "synovec", "sypat", "sypkost", "syrovost", "sysel", "sytost", "tabletka", "tabule", "tahoun", "tajemno", "tajfun", "tajga", "tajit", "tajnost", "taktika", "tamhle", "tampon", "tancovat", "tanec", "tanker", "tapeta", "tavenina", "tazatel", "technika", "tehdy", "tekutina", "telefon", "temnota", "tendence", "tenista", "tenor", "teplota", "tepna", "teprve", "terapie", "termoska", "textil", "ticho", "tiskopis", "titulek", "tkadlec", "tkanina", "tlapka", "tleskat", "tlukot", "tlupa", "tmel", "toaleta", "topinka", "topol", "torzo", "touha", "toulec", "tradice", "traktor", "tramp", "trasa", "traverza", "trefit", "trest", "trezor", "trhavina", "trhlina", "trochu", "trojice", "troska", "trouba", "trpce", "trpitel", "trpkost", "trubec", "truchlit", "truhlice", "trus", "trvat", "tudy", "tuhnout", "tuhost", "tundra", "turista", "turnaj", "tuzemsko", "tvaroh", "tvorba", "tvrdost", "tvrz", "tygr", "tykev", "ubohost", "uboze", "ubrat", "ubrousek", "ubrus", "ubytovna", "ucho", "uctivost", "udivit", "uhradit", "ujednat", "ujistit", "ujmout", "ukazatel", "uklidnit", "uklonit", "ukotvit", "ukrojit", "ulice", "ulita", "ulovit", "umyvadlo", "unavit", "uniforma", "uniknout", "upadnout", "uplatnit", "uplynout", "upoutat", "upravit", "uran", "urazit", "usednout", "usilovat", "usmrtit", "usnadnit", "usnout", "usoudit", "ustlat", "ustrnout", "utahovat", "utkat", "utlumit", "utonout", "utopenec", "utrousit", "uvalit", "uvolnit", "uvozovka", "uzdravit", "uzel", "uzenina", "uzlina", "uznat", "vagon", "valcha", "valoun", "vana", "vandal", "vanilka", "varan", "varhany", "varovat", "vcelku", "vchod", "vdova", "vedro", "vegetace", "vejce", "velbloud", "veletrh", "velitel", "velmoc", "velryba", "venkov", "veranda", "verze", "veselka", "veskrze", "vesnice", "vespodu", "vesta", "veterina", "veverka", "vibrace", "vichr", "videohra", "vidina", "vidle", "vila", "vinice", "viset", "vitalita", "vize", "vizitka", "vjezd", "vklad", "vkus", "vlajka", "vlak", "vlasec", "vlevo", "vlhkost", "vliv", "vlnovka", "vloupat", "vnucovat", "vnuk", "voda", "vodivost", "vodoznak", "vodstvo", "vojensky", "vojna", "vojsko", "volant", "volba", "volit", "volno", "voskovka", "vozidlo", "vozovna", "vpravo", "vrabec", "vracet", "vrah", "vrata", "vrba", "vrcholek", "vrhat", "vrstva", "vrtule", "vsadit", "vstoupit", "vstup", "vtip", "vybavit", "vybrat", "vychovat", "vydat", "vydra", "vyfotit", "vyhledat", "vyhnout", "vyhodit", "vyhradit", "vyhubit", "vyjasnit", "vyjet", "vyjmout", "vyklopit", "vykonat", "vylekat", "vymazat", "vymezit", "vymizet", "vymyslet", "vynechat", "vynikat", "vynutit", "vypadat", "vyplatit", "vypravit", "vypustit", "vyrazit", "vyrovnat", "vyrvat", "vyslovit", "vysoko", "vystavit", "vysunout", "vysypat", "vytasit", "vytesat", "vytratit", "vyvinout", "vyvolat", "vyvrhel", "vyzdobit", "vyznat", "vzadu", "vzbudit", "vzchopit", "vzdor", "vzduch", "vzdychat", "vzestup", "vzhledem", "vzkaz", "vzlykat", "vznik", "vzorek", "vzpoura", "vztah", "vztek", "xylofon", "zabrat", "zabydlet", "zachovat", "zadarmo", "zadusit", "zafoukat", "zahltit", "zahodit", "zahrada", "zahynout", "zajatec", "zajet", "zajistit", "zaklepat", "zakoupit", "zalepit", "zamezit", "zamotat", "zamyslet", "zanechat", "zanikat", "zaplatit", "zapojit", "zapsat", "zarazit", "zastavit", "zasunout", "zatajit", "zatemnit", "zatknout", "zaujmout", "zavalit", "zavelet", "zavinit", "zavolat", "zavrtat", "zazvonit", "zbavit", "zbrusu", "zbudovat", "zbytek", "zdaleka", "zdarma", "zdatnost", "zdivo", "zdobit", "zdroj", "zdvih", "zdymadlo", "zelenina", "zeman", "zemina", "zeptat", "zezadu", "zezdola", "zhatit", "zhltnout", "zhluboka", "zhotovit", "zhruba", "zima", "zimnice", "zjemnit", "zklamat", "zkoumat", "zkratka", "zkumavka", "zlato", "zlehka", "zloba", "zlom", "zlost", "zlozvyk", "zmapovat", "zmar", "zmatek", "zmije", "zmizet", "zmocnit", "zmodrat", "zmrzlina", "zmutovat", "znak", "znalost", "znamenat", "znovu", "zobrazit", "zotavit", "zoubek", "zoufale", "zplodit", "zpomalit", "zprava", "zprostit", "zprudka", "zprvu", "zrada", "zranit", "zrcadlo", "zrnitost", "zrno", "zrovna", "zrychlit", "zrzavost", "zticha", "ztratit", "zubovina", "zubr", "zvednout", "zvenku", "zvesela", "zvon", "zvrat", "zvukovod", "zvyk"];
  }
});

// node_modules/bip39-mnemonic/wordlist/english.json
var require_english = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/english.json"(exports2, module2) {
    module2.exports = ["abandon", "ability", "able", "about", "above", "absent", "absorb", "abstract", "absurd", "abuse", "access", "accident", "account", "accuse", "achieve", "acid", "acoustic", "acquire", "across", "act", "action", "actor", "actress", "actual", "adapt", "add", "addict", "address", "adjust", "admit", "adult", "advance", "advice", "aerobic", "affair", "afford", "afraid", "again", "age", "agent", "agree", "ahead", "aim", "air", "airport", "aisle", "alarm", "album", "alcohol", "alert", "alien", "all", "alley", "allow", "almost", "alone", "alpha", "already", "also", "alter", "always", "amateur", "amazing", "among", "amount", "amused", "analyst", "anchor", "ancient", "anger", "angle", "angry", "animal", "ankle", "announce", "annual", "another", "answer", "antenna", "antique", "anxiety", "any", "apart", "apology", "appear", "apple", "approve", "april", "arch", "arctic", "area", "arena", "argue", "arm", "armed", "armor", "army", "around", "arrange", "arrest", "arrive", "arrow", "art", "artefact", "artist", "artwork", "ask", "aspect", "assault", "asset", "assist", "assume", "asthma", "athlete", "atom", "attack", "attend", "attitude", "attract", "auction", "audit", "august", "aunt", "author", "auto", "autumn", "average", "avocado", "avoid", "awake", "aware", "away", "awesome", "awful", "awkward", "axis", "baby", "bachelor", "bacon", "badge", "bag", "balance", "balcony", "ball", "bamboo", "banana", "banner", "bar", "barely", "bargain", "barrel", "base", "basic", "basket", "battle", "beach", "bean", "beauty", "because", "become", "beef", "before", "begin", "behave", "behind", "believe", "below", "belt", "bench", "benefit", "best", "betray", "better", "between", "beyond", "bicycle", "bid", "bike", "bind", "biology", "bird", "birth", "bitter", "black", "blade", "blame", "blanket", "blast", "bleak", "bless", "blind", "blood", "blossom", "blouse", "blue", "blur", "blush", "board", "boat", "body", "boil", "bomb", "bone", "bonus", "book", "boost", "border", "boring", "borrow", "boss", "bottom", "bounce", "box", "boy", "bracket", "brain", "brand", "brass", "brave", "bread", "breeze", "brick", "bridge", "brief", "bright", "bring", "brisk", "broccoli", "broken", "bronze", "broom", "brother", "brown", "brush", "bubble", "buddy", "budget", "buffalo", "build", "bulb", "bulk", "bullet", "bundle", "bunker", "burden", "burger", "burst", "bus", "business", "busy", "butter", "buyer", "buzz", "cabbage", "cabin", "cable", "cactus", "cage", "cake", "call", "calm", "camera", "camp", "can", "canal", "cancel", "candy", "cannon", "canoe", "canvas", "canyon", "capable", "capital", "captain", "car", "carbon", "card", "cargo", "carpet", "carry", "cart", "case", "cash", "casino", "castle", "casual", "cat", "catalog", "catch", "category", "cattle", "caught", "cause", "caution", "cave", "ceiling", "celery", "cement", "census", "century", "cereal", "certain", "chair", "chalk", "champion", "change", "chaos", "chapter", "charge", "chase", "chat", "cheap", "check", "cheese", "chef", "cherry", "chest", "chicken", "chief", "child", "chimney", "choice", "choose", "chronic", "chuckle", "chunk", "churn", "cigar", "cinnamon", "circle", "citizen", "city", "civil", "claim", "clap", "clarify", "claw", "clay", "clean", "clerk", "clever", "click", "client", "cliff", "climb", "clinic", "clip", "clock", "clog", "close", "cloth", "cloud", "clown", "club", "clump", "cluster", "clutch", "coach", "coast", "coconut", "code", "coffee", "coil", "coin", "collect", "color", "column", "combine", "come", "comfort", "comic", "common", "company", "concert", "conduct", "confirm", "congress", "connect", "consider", "control", "convince", "cook", "cool", "copper", "copy", "coral", "core", "corn", "correct", "cost", "cotton", "couch", "country", "couple", "course", "cousin", "cover", "coyote", "crack", "cradle", "craft", "cram", "crane", "crash", "crater", "crawl", "crazy", "cream", "credit", "creek", "crew", "cricket", "crime", "crisp", "critic", "crop", "cross", "crouch", "crowd", "crucial", "cruel", "cruise", "crumble", "crunch", "crush", "cry", "crystal", "cube", "culture", "cup", "cupboard", "curious", "current", "curtain", "curve", "cushion", "custom", "cute", "cycle", "dad", "damage", "damp", "dance", "danger", "daring", "dash", "daughter", "dawn", "day", "deal", "debate", "debris", "decade", "december", "decide", "decline", "decorate", "decrease", "deer", "defense", "define", "defy", "degree", "delay", "deliver", "demand", "demise", "denial", "dentist", "deny", "depart", "depend", "deposit", "depth", "deputy", "derive", "describe", "desert", "design", "desk", "despair", "destroy", "detail", "detect", "develop", "device", "devote", "diagram", "dial", "diamond", "diary", "dice", "diesel", "diet", "differ", "digital", "dignity", "dilemma", "dinner", "dinosaur", "direct", "dirt", "disagree", "discover", "disease", "dish", "dismiss", "disorder", "display", "distance", "divert", "divide", "divorce", "dizzy", "doctor", "document", "dog", "doll", "dolphin", "domain", "donate", "donkey", "donor", "door", "dose", "double", "dove", "draft", "dragon", "drama", "drastic", "draw", "dream", "dress", "drift", "drill", "drink", "drip", "drive", "drop", "drum", "dry", "duck", "dumb", "dune", "during", "dust", "dutch", "duty", "dwarf", "dynamic", "eager", "eagle", "early", "earn", "earth", "easily", "east", "easy", "echo", "ecology", "economy", "edge", "edit", "educate", "effort", "egg", "eight", "either", "elbow", "elder", "electric", "elegant", "element", "elephant", "elevator", "elite", "else", "embark", "embody", "embrace", "emerge", "emotion", "employ", "empower", "empty", "enable", "enact", "end", "endless", "endorse", "enemy", "energy", "enforce", "engage", "engine", "enhance", "enjoy", "enlist", "enough", "enrich", "enroll", "ensure", "enter", "entire", "entry", "envelope", "episode", "equal", "equip", "era", "erase", "erode", "erosion", "error", "erupt", "escape", "essay", "essence", "estate", "eternal", "ethics", "evidence", "evil", "evoke", "evolve", "exact", "example", "excess", "exchange", "excite", "exclude", "excuse", "execute", "exercise", "exhaust", "exhibit", "exile", "exist", "exit", "exotic", "expand", "expect", "expire", "explain", "expose", "express", "extend", "extra", "eye", "eyebrow", "fabric", "face", "faculty", "fade", "faint", "faith", "fall", "false", "fame", "family", "famous", "fan", "fancy", "fantasy", "farm", "fashion", "fat", "fatal", "father", "fatigue", "fault", "favorite", "feature", "february", "federal", "fee", "feed", "feel", "female", "fence", "festival", "fetch", "fever", "few", "fiber", "fiction", "field", "figure", "file", "film", "filter", "final", "find", "fine", "finger", "finish", "fire", "firm", "first", "fiscal", "fish", "fit", "fitness", "fix", "flag", "flame", "flash", "flat", "flavor", "flee", "flight", "flip", "float", "flock", "floor", "flower", "fluid", "flush", "fly", "foam", "focus", "fog", "foil", "fold", "follow", "food", "foot", "force", "forest", "forget", "fork", "fortune", "forum", "forward", "fossil", "foster", "found", "fox", "fragile", "frame", "frequent", "fresh", "friend", "fringe", "frog", "front", "frost", "frown", "frozen", "fruit", "fuel", "fun", "funny", "furnace", "fury", "future", "gadget", "gain", "galaxy", "gallery", "game", "gap", "garage", "garbage", "garden", "garlic", "garment", "gas", "gasp", "gate", "gather", "gauge", "gaze", "general", "genius", "genre", "gentle", "genuine", "gesture", "ghost", "giant", "gift", "giggle", "ginger", "giraffe", "girl", "give", "glad", "glance", "glare", "glass", "glide", "glimpse", "globe", "gloom", "glory", "glove", "glow", "glue", "goat", "goddess", "gold", "good", "goose", "gorilla", "gospel", "gossip", "govern", "gown", "grab", "grace", "grain", "grant", "grape", "grass", "gravity", "great", "green", "grid", "grief", "grit", "grocery", "group", "grow", "grunt", "guard", "guess", "guide", "guilt", "guitar", "gun", "gym", "habit", "hair", "half", "hammer", "hamster", "hand", "happy", "harbor", "hard", "harsh", "harvest", "hat", "have", "hawk", "hazard", "head", "health", "heart", "heavy", "hedgehog", "height", "hello", "helmet", "help", "hen", "hero", "hidden", "high", "hill", "hint", "hip", "hire", "history", "hobby", "hockey", "hold", "hole", "holiday", "hollow", "home", "honey", "hood", "hope", "horn", "horror", "horse", "hospital", "host", "hotel", "hour", "hover", "hub", "huge", "human", "humble", "humor", "hundred", "hungry", "hunt", "hurdle", "hurry", "hurt", "husband", "hybrid", "ice", "icon", "idea", "identify", "idle", "ignore", "ill", "illegal", "illness", "image", "imitate", "immense", "immune", "impact", "impose", "improve", "impulse", "inch", "include", "income", "increase", "index", "indicate", "indoor", "industry", "infant", "inflict", "inform", "inhale", "inherit", "initial", "inject", "injury", "inmate", "inner", "innocent", "input", "inquiry", "insane", "insect", "inside", "inspire", "install", "intact", "interest", "into", "invest", "invite", "involve", "iron", "island", "isolate", "issue", "item", "ivory", "jacket", "jaguar", "jar", "jazz", "jealous", "jeans", "jelly", "jewel", "job", "join", "joke", "journey", "joy", "judge", "juice", "jump", "jungle", "junior", "junk", "just", "kangaroo", "keen", "keep", "ketchup", "key", "kick", "kid", "kidney", "kind", "kingdom", "kiss", "kit", "kitchen", "kite", "kitten", "kiwi", "knee", "knife", "knock", "know", "lab", "label", "labor", "ladder", "lady", "lake", "lamp", "language", "laptop", "large", "later", "latin", "laugh", "laundry", "lava", "law", "lawn", "lawsuit", "layer", "lazy", "leader", "leaf", "learn", "leave", "lecture", "left", "leg", "legal", "legend", "leisure", "lemon", "lend", "length", "lens", "leopard", "lesson", "letter", "level", "liar", "liberty", "library", "license", "life", "lift", "light", "like", "limb", "limit", "link", "lion", "liquid", "list", "little", "live", "lizard", "load", "loan", "lobster", "local", "lock", "logic", "lonely", "long", "loop", "lottery", "loud", "lounge", "love", "loyal", "lucky", "luggage", "lumber", "lunar", "lunch", "luxury", "lyrics", "machine", "mad", "magic", "magnet", "maid", "mail", "main", "major", "make", "mammal", "man", "manage", "mandate", "mango", "mansion", "manual", "maple", "marble", "march", "margin", "marine", "market", "marriage", "mask", "mass", "master", "match", "material", "math", "matrix", "matter", "maximum", "maze", "meadow", "mean", "measure", "meat", "mechanic", "medal", "media", "melody", "melt", "member", "memory", "mention", "menu", "mercy", "merge", "merit", "merry", "mesh", "message", "metal", "method", "middle", "midnight", "milk", "million", "mimic", "mind", "minimum", "minor", "minute", "miracle", "mirror", "misery", "miss", "mistake", "mix", "mixed", "mixture", "mobile", "model", "modify", "mom", "moment", "monitor", "monkey", "monster", "month", "moon", "moral", "more", "morning", "mosquito", "mother", "motion", "motor", "mountain", "mouse", "move", "movie", "much", "muffin", "mule", "multiply", "muscle", "museum", "mushroom", "music", "must", "mutual", "myself", "mystery", "myth", "naive", "name", "napkin", "narrow", "nasty", "nation", "nature", "near", "neck", "need", "negative", "neglect", "neither", "nephew", "nerve", "nest", "net", "network", "neutral", "never", "news", "next", "nice", "night", "noble", "noise", "nominee", "noodle", "normal", "north", "nose", "notable", "note", "nothing", "notice", "novel", "now", "nuclear", "number", "nurse", "nut", "oak", "obey", "object", "oblige", "obscure", "observe", "obtain", "obvious", "occur", "ocean", "october", "odor", "off", "offer", "office", "often", "oil", "okay", "old", "olive", "olympic", "omit", "once", "one", "onion", "online", "only", "open", "opera", "opinion", "oppose", "option", "orange", "orbit", "orchard", "order", "ordinary", "organ", "orient", "original", "orphan", "ostrich", "other", "outdoor", "outer", "output", "outside", "oval", "oven", "over", "own", "owner", "oxygen", "oyster", "ozone", "pact", "paddle", "page", "pair", "palace", "palm", "panda", "panel", "panic", "panther", "paper", "parade", "parent", "park", "parrot", "party", "pass", "patch", "path", "patient", "patrol", "pattern", "pause", "pave", "payment", "peace", "peanut", "pear", "peasant", "pelican", "pen", "penalty", "pencil", "people", "pepper", "perfect", "permit", "person", "pet", "phone", "photo", "phrase", "physical", "piano", "picnic", "picture", "piece", "pig", "pigeon", "pill", "pilot", "pink", "pioneer", "pipe", "pistol", "pitch", "pizza", "place", "planet", "plastic", "plate", "play", "please", "pledge", "pluck", "plug", "plunge", "poem", "poet", "point", "polar", "pole", "police", "pond", "pony", "pool", "popular", "portion", "position", "possible", "post", "potato", "pottery", "poverty", "powder", "power", "practice", "praise", "predict", "prefer", "prepare", "present", "pretty", "prevent", "price", "pride", "primary", "print", "priority", "prison", "private", "prize", "problem", "process", "produce", "profit", "program", "project", "promote", "proof", "property", "prosper", "protect", "proud", "provide", "public", "pudding", "pull", "pulp", "pulse", "pumpkin", "punch", "pupil", "puppy", "purchase", "purity", "purpose", "purse", "push", "put", "puzzle", "pyramid", "quality", "quantum", "quarter", "question", "quick", "quit", "quiz", "quote", "rabbit", "raccoon", "race", "rack", "radar", "radio", "rail", "rain", "raise", "rally", "ramp", "ranch", "random", "range", "rapid", "rare", "rate", "rather", "raven", "raw", "razor", "ready", "real", "reason", "rebel", "rebuild", "recall", "receive", "recipe", "record", "recycle", "reduce", "reflect", "reform", "refuse", "region", "regret", "regular", "reject", "relax", "release", "relief", "rely", "remain", "remember", "remind", "remove", "render", "renew", "rent", "reopen", "repair", "repeat", "replace", "report", "require", "rescue", "resemble", "resist", "resource", "response", "result", "retire", "retreat", "return", "reunion", "reveal", "review", "reward", "rhythm", "rib", "ribbon", "rice", "rich", "ride", "ridge", "rifle", "right", "rigid", "ring", "riot", "ripple", "risk", "ritual", "rival", "river", "road", "roast", "robot", "robust", "rocket", "romance", "roof", "rookie", "room", "rose", "rotate", "rough", "round", "route", "royal", "rubber", "rude", "rug", "rule", "run", "runway", "rural", "sad", "saddle", "sadness", "safe", "sail", "salad", "salmon", "salon", "salt", "salute", "same", "sample", "sand", "satisfy", "satoshi", "sauce", "sausage", "save", "say", "scale", "scan", "scare", "scatter", "scene", "scheme", "school", "science", "scissors", "scorpion", "scout", "scrap", "screen", "script", "scrub", "sea", "search", "season", "seat", "second", "secret", "section", "security", "seed", "seek", "segment", "select", "sell", "seminar", "senior", "sense", "sentence", "series", "service", "session", "settle", "setup", "seven", "shadow", "shaft", "shallow", "share", "shed", "shell", "sheriff", "shield", "shift", "shine", "ship", "shiver", "shock", "shoe", "shoot", "shop", "short", "shoulder", "shove", "shrimp", "shrug", "shuffle", "shy", "sibling", "sick", "side", "siege", "sight", "sign", "silent", "silk", "silly", "silver", "similar", "simple", "since", "sing", "siren", "sister", "situate", "six", "size", "skate", "sketch", "ski", "skill", "skin", "skirt", "skull", "slab", "slam", "sleep", "slender", "slice", "slide", "slight", "slim", "slogan", "slot", "slow", "slush", "small", "smart", "smile", "smoke", "smooth", "snack", "snake", "snap", "sniff", "snow", "soap", "soccer", "social", "sock", "soda", "soft", "solar", "soldier", "solid", "solution", "solve", "someone", "song", "soon", "sorry", "sort", "soul", "sound", "soup", "source", "south", "space", "spare", "spatial", "spawn", "speak", "special", "speed", "spell", "spend", "sphere", "spice", "spider", "spike", "spin", "spirit", "split", "spoil", "sponsor", "spoon", "sport", "spot", "spray", "spread", "spring", "spy", "square", "squeeze", "squirrel", "stable", "stadium", "staff", "stage", "stairs", "stamp", "stand", "start", "state", "stay", "steak", "steel", "stem", "step", "stereo", "stick", "still", "sting", "stock", "stomach", "stone", "stool", "story", "stove", "strategy", "street", "strike", "strong", "struggle", "student", "stuff", "stumble", "style", "subject", "submit", "subway", "success", "such", "sudden", "suffer", "sugar", "suggest", "suit", "summer", "sun", "sunny", "sunset", "super", "supply", "supreme", "sure", "surface", "surge", "surprise", "surround", "survey", "suspect", "sustain", "swallow", "swamp", "swap", "swarm", "swear", "sweet", "swift", "swim", "swing", "switch", "sword", "symbol", "symptom", "syrup", "system", "table", "tackle", "tag", "tail", "talent", "talk", "tank", "tape", "target", "task", "taste", "tattoo", "taxi", "teach", "team", "tell", "ten", "tenant", "tennis", "tent", "term", "test", "text", "thank", "that", "theme", "then", "theory", "there", "they", "thing", "this", "thought", "three", "thrive", "throw", "thumb", "thunder", "ticket", "tide", "tiger", "tilt", "timber", "time", "tiny", "tip", "tired", "tissue", "title", "toast", "tobacco", "today", "toddler", "toe", "together", "toilet", "token", "tomato", "tomorrow", "tone", "tongue", "tonight", "tool", "tooth", "top", "topic", "topple", "torch", "tornado", "tortoise", "toss", "total", "tourist", "toward", "tower", "town", "toy", "track", "trade", "traffic", "tragic", "train", "transfer", "trap", "trash", "travel", "tray", "treat", "tree", "trend", "trial", "tribe", "trick", "trigger", "trim", "trip", "trophy", "trouble", "truck", "true", "truly", "trumpet", "trust", "truth", "try", "tube", "tuition", "tumble", "tuna", "tunnel", "turkey", "turn", "turtle", "twelve", "twenty", "twice", "twin", "twist", "two", "type", "typical", "ugly", "umbrella", "unable", "unaware", "uncle", "uncover", "under", "undo", "unfair", "unfold", "unhappy", "uniform", "unique", "unit", "universe", "unknown", "unlock", "until", "unusual", "unveil", "update", "upgrade", "uphold", "upon", "upper", "upset", "urban", "urge", "usage", "use", "used", "useful", "useless", "usual", "utility", "vacant", "vacuum", "vague", "valid", "valley", "valve", "van", "vanish", "vapor", "various", "vast", "vault", "vehicle", "velvet", "vendor", "venture", "venue", "verb", "verify", "version", "very", "vessel", "veteran", "viable", "vibrant", "vicious", "victory", "video", "view", "village", "vintage", "violin", "virtual", "virus", "visa", "visit", "visual", "vital", "vivid", "vocal", "voice", "void", "volcano", "volume", "vote", "voyage", "wage", "wagon", "wait", "walk", "wall", "walnut", "want", "warfare", "warm", "warrior", "wash", "wasp", "waste", "water", "wave", "way", "wealth", "weapon", "wear", "weasel", "weather", "web", "wedding", "weekend", "weird", "welcome", "west", "wet", "whale", "what", "wheat", "wheel", "when", "where", "whip", "whisper", "wide", "width", "wife", "wild", "will", "win", "window", "wine", "wing", "wink", "winner", "winter", "wire", "wisdom", "wise", "wish", "witness", "wolf", "woman", "wonder", "wood", "wool", "word", "work", "world", "worry", "worth", "wrap", "wreck", "wrestle", "wrist", "write", "wrong", "yard", "year", "yellow", "you", "young", "youth", "zebra", "zero", "zone", "zoo"];
  }
});

// node_modules/bip39-mnemonic/wordlist/french.json
var require_french = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/french.json"(exports2, module2) {
    module2.exports = ["abaisser", "abandon", "abdiquer", "abeille", "abolir", "aborder", "aboutir", "aboyer", "abrasif", "abreuver", "abriter", "abroger", "abrupt", "absence", "absolu", "absurde", "abusif", "abyssal", "acade\u0301mie", "acajou", "acarien", "accabler", "accepter", "acclamer", "accolade", "accroche", "accuser", "acerbe", "achat", "acheter", "aciduler", "acier", "acompte", "acque\u0301rir", "acronyme", "acteur", "actif", "actuel", "adepte", "ade\u0301quat", "adhe\u0301sif", "adjectif", "adjuger", "admettre", "admirer", "adopter", "adorer", "adoucir", "adresse", "adroit", "adulte", "adverbe", "ae\u0301rer", "ae\u0301ronef", "affaire", "affecter", "affiche", "affreux", "affubler", "agacer", "agencer", "agile", "agiter", "agrafer", "agre\u0301able", "agrume", "aider", "aiguille", "ailier", "aimable", "aisance", "ajouter", "ajuster", "alarmer", "alchimie", "alerte", "alge\u0300bre", "algue", "alie\u0301ner", "aliment", "alle\u0301ger", "alliage", "allouer", "allumer", "alourdir", "alpaga", "altesse", "alve\u0301ole", "amateur", "ambigu", "ambre", "ame\u0301nager", "amertume", "amidon", "amiral", "amorcer", "amour", "amovible", "amphibie", "ampleur", "amusant", "analyse", "anaphore", "anarchie", "anatomie", "ancien", "ane\u0301antir", "angle", "angoisse", "anguleux", "animal", "annexer", "annonce", "annuel", "anodin", "anomalie", "anonyme", "anormal", "antenne", "antidote", "anxieux", "apaiser", "ape\u0301ritif", "aplanir", "apologie", "appareil", "appeler", "apporter", "appuyer", "aquarium", "aqueduc", "arbitre", "arbuste", "ardeur", "ardoise", "argent", "arlequin", "armature", "armement", "armoire", "armure", "arpenter", "arracher", "arriver", "arroser", "arsenic", "arte\u0301riel", "article", "aspect", "asphalte", "aspirer", "assaut", "asservir", "assiette", "associer", "assurer", "asticot", "astre", "astuce", "atelier", "atome", "atrium", "atroce", "attaque", "attentif", "attirer", "attraper", "aubaine", "auberge", "audace", "audible", "augurer", "aurore", "automne", "autruche", "avaler", "avancer", "avarice", "avenir", "averse", "aveugle", "aviateur", "avide", "avion", "aviser", "avoine", "avouer", "avril", "axial", "axiome", "badge", "bafouer", "bagage", "baguette", "baignade", "balancer", "balcon", "baleine", "balisage", "bambin", "bancaire", "bandage", "banlieue", "bannie\u0300re", "banquier", "barbier", "baril", "baron", "barque", "barrage", "bassin", "bastion", "bataille", "bateau", "batterie", "baudrier", "bavarder", "belette", "be\u0301lier", "belote", "be\u0301ne\u0301fice", "berceau", "berger", "berline", "bermuda", "besace", "besogne", "be\u0301tail", "beurre", "biberon", "bicycle", "bidule", "bijou", "bilan", "bilingue", "billard", "binaire", "biologie", "biopsie", "biotype", "biscuit", "bison", "bistouri", "bitume", "bizarre", "blafard", "blague", "blanchir", "blessant", "blinder", "blond", "bloquer", "blouson", "bobard", "bobine", "boire", "boiser", "bolide", "bonbon", "bondir", "bonheur", "bonifier", "bonus", "bordure", "borne", "botte", "boucle", "boueux", "bougie", "boulon", "bouquin", "bourse", "boussole", "boutique", "boxeur", "branche", "brasier", "brave", "brebis", "bre\u0300che", "breuvage", "bricoler", "brigade", "brillant", "brioche", "brique", "brochure", "broder", "bronzer", "brousse", "broyeur", "brume", "brusque", "brutal", "bruyant", "buffle", "buisson", "bulletin", "bureau", "burin", "bustier", "butiner", "butoir", "buvable", "buvette", "cabanon", "cabine", "cachette", "cadeau", "cadre", "cafe\u0301ine", "caillou", "caisson", "calculer", "calepin", "calibre", "calmer", "calomnie", "calvaire", "camarade", "came\u0301ra", "camion", "campagne", "canal", "caneton", "canon", "cantine", "canular", "capable", "caporal", "caprice", "capsule", "capter", "capuche", "carabine", "carbone", "caresser", "caribou", "carnage", "carotte", "carreau", "carton", "cascade", "casier", "casque", "cassure", "causer", "caution", "cavalier", "caverne", "caviar", "ce\u0301dille", "ceinture", "ce\u0301leste", "cellule", "cendrier", "censurer", "central", "cercle", "ce\u0301re\u0301bral", "cerise", "cerner", "cerveau", "cesser", "chagrin", "chaise", "chaleur", "chambre", "chance", "chapitre", "charbon", "chasseur", "chaton", "chausson", "chavirer", "chemise", "chenille", "che\u0301quier", "chercher", "cheval", "chien", "chiffre", "chignon", "chime\u0300re", "chiot", "chlorure", "chocolat", "choisir", "chose", "chouette", "chrome", "chute", "cigare", "cigogne", "cimenter", "cine\u0301ma", "cintrer", "circuler", "cirer", "cirque", "citerne", "citoyen", "citron", "civil", "clairon", "clameur", "claquer", "classe", "clavier", "client", "cligner", "climat", "clivage", "cloche", "clonage", "cloporte", "cobalt", "cobra", "cocasse", "cocotier", "coder", "codifier", "coffre", "cogner", "cohe\u0301sion", "coiffer", "coincer", "cole\u0300re", "colibri", "colline", "colmater", "colonel", "combat", "come\u0301die", "commande", "compact", "concert", "conduire", "confier", "congeler", "connoter", "consonne", "contact", "convexe", "copain", "copie", "corail", "corbeau", "cordage", "corniche", "corpus", "correct", "corte\u0300ge", "cosmique", "costume", "coton", "coude", "coupure", "courage", "couteau", "couvrir", "coyote", "crabe", "crainte", "cravate", "crayon", "cre\u0301ature", "cre\u0301diter", "cre\u0301meux", "creuser", "crevette", "cribler", "crier", "cristal", "crite\u0300re", "croire", "croquer", "crotale", "crucial", "cruel", "crypter", "cubique", "cueillir", "cuille\u0300re", "cuisine", "cuivre", "culminer", "cultiver", "cumuler", "cupide", "curatif", "curseur", "cyanure", "cycle", "cylindre", "cynique", "daigner", "damier", "danger", "danseur", "dauphin", "de\u0301battre", "de\u0301biter", "de\u0301border", "de\u0301brider", "de\u0301butant", "de\u0301caler", "de\u0301cembre", "de\u0301chirer", "de\u0301cider", "de\u0301clarer", "de\u0301corer", "de\u0301crire", "de\u0301cupler", "de\u0301dale", "de\u0301ductif", "de\u0301esse", "de\u0301fensif", "de\u0301filer", "de\u0301frayer", "de\u0301gager", "de\u0301givrer", "de\u0301glutir", "de\u0301grafer", "de\u0301jeuner", "de\u0301lice", "de\u0301loger", "demander", "demeurer", "de\u0301molir", "de\u0301nicher", "de\u0301nouer", "dentelle", "de\u0301nuder", "de\u0301part", "de\u0301penser", "de\u0301phaser", "de\u0301placer", "de\u0301poser", "de\u0301ranger", "de\u0301rober", "de\u0301sastre", "descente", "de\u0301sert", "de\u0301signer", "de\u0301sobe\u0301ir", "dessiner", "destrier", "de\u0301tacher", "de\u0301tester", "de\u0301tourer", "de\u0301tresse", "devancer", "devenir", "deviner", "devoir", "diable", "dialogue", "diamant", "dicter", "diffe\u0301rer", "dige\u0301rer", "digital", "digne", "diluer", "dimanche", "diminuer", "dioxyde", "directif", "diriger", "discuter", "disposer", "dissiper", "distance", "divertir", "diviser", "docile", "docteur", "dogme", "doigt", "domaine", "domicile", "dompter", "donateur", "donjon", "donner", "dopamine", "dortoir", "dorure", "dosage", "doseur", "dossier", "dotation", "douanier", "double", "douceur", "douter", "doyen", "dragon", "draper", "dresser", "dribbler", "droiture", "duperie", "duplexe", "durable", "durcir", "dynastie", "e\u0301blouir", "e\u0301carter", "e\u0301charpe", "e\u0301chelle", "e\u0301clairer", "e\u0301clipse", "e\u0301clore", "e\u0301cluse", "e\u0301cole", "e\u0301conomie", "e\u0301corce", "e\u0301couter", "e\u0301craser", "e\u0301cre\u0301mer", "e\u0301crivain", "e\u0301crou", "e\u0301cume", "e\u0301cureuil", "e\u0301difier", "e\u0301duquer", "effacer", "effectif", "effigie", "effort", "effrayer", "effusion", "e\u0301galiser", "e\u0301garer", "e\u0301jecter", "e\u0301laborer", "e\u0301largir", "e\u0301lectron", "e\u0301le\u0301gant", "e\u0301le\u0301phant", "e\u0301le\u0300ve", "e\u0301ligible", "e\u0301litisme", "e\u0301loge", "e\u0301lucider", "e\u0301luder", "emballer", "embellir", "embryon", "e\u0301meraude", "e\u0301mission", "emmener", "e\u0301motion", "e\u0301mouvoir", "empereur", "employer", "emporter", "emprise", "e\u0301mulsion", "encadrer", "enche\u0300re", "enclave", "encoche", "endiguer", "endosser", "endroit", "enduire", "e\u0301nergie", "enfance", "enfermer", "enfouir", "engager", "engin", "englober", "e\u0301nigme", "enjamber", "enjeu", "enlever", "ennemi", "ennuyeux", "enrichir", "enrobage", "enseigne", "entasser", "entendre", "entier", "entourer", "entraver", "e\u0301nume\u0301rer", "envahir", "enviable", "envoyer", "enzyme", "e\u0301olien", "e\u0301paissir", "e\u0301pargne", "e\u0301patant", "e\u0301paule", "e\u0301picerie", "e\u0301pide\u0301mie", "e\u0301pier", "e\u0301pilogue", "e\u0301pine", "e\u0301pisode", "e\u0301pitaphe", "e\u0301poque", "e\u0301preuve", "e\u0301prouver", "e\u0301puisant", "e\u0301querre", "e\u0301quipe", "e\u0301riger", "e\u0301rosion", "erreur", "e\u0301ruption", "escalier", "espadon", "espe\u0300ce", "espie\u0300gle", "espoir", "esprit", "esquiver", "essayer", "essence", "essieu", "essorer", "estime", "estomac", "estrade", "e\u0301tage\u0300re", "e\u0301taler", "e\u0301tanche", "e\u0301tatique", "e\u0301teindre", "e\u0301tendoir", "e\u0301ternel", "e\u0301thanol", "e\u0301thique", "ethnie", "e\u0301tirer", "e\u0301toffer", "e\u0301toile", "e\u0301tonnant", "e\u0301tourdir", "e\u0301trange", "e\u0301troit", "e\u0301tude", "euphorie", "e\u0301valuer", "e\u0301vasion", "e\u0301ventail", "e\u0301vidence", "e\u0301viter", "e\u0301volutif", "e\u0301voquer", "exact", "exage\u0301rer", "exaucer", "exceller", "excitant", "exclusif", "excuse", "exe\u0301cuter", "exemple", "exercer", "exhaler", "exhorter", "exigence", "exiler", "exister", "exotique", "expe\u0301dier", "explorer", "exposer", "exprimer", "exquis", "extensif", "extraire", "exulter", "fable", "fabuleux", "facette", "facile", "facture", "faiblir", "falaise", "fameux", "famille", "farceur", "farfelu", "farine", "farouche", "fasciner", "fatal", "fatigue", "faucon", "fautif", "faveur", "favori", "fe\u0301brile", "fe\u0301conder", "fe\u0301de\u0301rer", "fe\u0301lin", "femme", "fe\u0301mur", "fendoir", "fe\u0301odal", "fermer", "fe\u0301roce", "ferveur", "festival", "feuille", "feutre", "fe\u0301vrier", "fiasco", "ficeler", "fictif", "fide\u0300le", "figure", "filature", "filetage", "filie\u0300re", "filleul", "filmer", "filou", "filtrer", "financer", "finir", "fiole", "firme", "fissure", "fixer", "flairer", "flamme", "flasque", "flatteur", "fle\u0301au", "fle\u0300che", "fleur", "flexion", "flocon", "flore", "fluctuer", "fluide", "fluvial", "folie", "fonderie", "fongible", "fontaine", "forcer", "forgeron", "formuler", "fortune", "fossile", "foudre", "fouge\u0300re", "fouiller", "foulure", "fourmi", "fragile", "fraise", "franchir", "frapper", "frayeur", "fre\u0301gate", "freiner", "frelon", "fre\u0301mir", "fre\u0301ne\u0301sie", "fre\u0300re", "friable", "friction", "frisson", "frivole", "froid", "fromage", "frontal", "frotter", "fruit", "fugitif", "fuite", "fureur", "furieux", "furtif", "fusion", "futur", "gagner", "galaxie", "galerie", "gambader", "garantir", "gardien", "garnir", "garrigue", "gazelle", "gazon", "ge\u0301ant", "ge\u0301latine", "ge\u0301lule", "gendarme", "ge\u0301ne\u0301ral", "ge\u0301nie", "genou", "gentil", "ge\u0301ologie", "ge\u0301ome\u0300tre", "ge\u0301ranium", "germe", "gestuel", "geyser", "gibier", "gicler", "girafe", "givre", "glace", "glaive", "glisser", "globe", "gloire", "glorieux", "golfeur", "gomme", "gonfler", "gorge", "gorille", "goudron", "gouffre", "goulot", "goupille", "gourmand", "goutte", "graduel", "graffiti", "graine", "grand", "grappin", "gratuit", "gravir", "grenat", "griffure", "griller", "grimper", "grogner", "gronder", "grotte", "groupe", "gruger", "grutier", "gruye\u0300re", "gue\u0301pard", "guerrier", "guide", "guimauve", "guitare", "gustatif", "gymnaste", "gyrostat", "habitude", "hachoir", "halte", "hameau", "hangar", "hanneton", "haricot", "harmonie", "harpon", "hasard", "he\u0301lium", "he\u0301matome", "herbe", "he\u0301risson", "hermine", "he\u0301ron", "he\u0301siter", "heureux", "hiberner", "hibou", "hilarant", "histoire", "hiver", "homard", "hommage", "homoge\u0300ne", "honneur", "honorer", "honteux", "horde", "horizon", "horloge", "hormone", "horrible", "houleux", "housse", "hublot", "huileux", "humain", "humble", "humide", "humour", "hurler", "hydromel", "hygie\u0300ne", "hymne", "hypnose", "idylle", "ignorer", "iguane", "illicite", "illusion", "image", "imbiber", "imiter", "immense", "immobile", "immuable", "impact", "impe\u0301rial", "implorer", "imposer", "imprimer", "imputer", "incarner", "incendie", "incident", "incliner", "incolore", "indexer", "indice", "inductif", "ine\u0301dit", "ineptie", "inexact", "infini", "infliger", "informer", "infusion", "inge\u0301rer", "inhaler", "inhiber", "injecter", "injure", "innocent", "inoculer", "inonder", "inscrire", "insecte", "insigne", "insolite", "inspirer", "instinct", "insulter", "intact", "intense", "intime", "intrigue", "intuitif", "inutile", "invasion", "inventer", "inviter", "invoquer", "ironique", "irradier", "irre\u0301el", "irriter", "isoler", "ivoire", "ivresse", "jaguar", "jaillir", "jambe", "janvier", "jardin", "jauger", "jaune", "javelot", "jetable", "jeton", "jeudi", "jeunesse", "joindre", "joncher", "jongler", "joueur", "jouissif", "journal", "jovial", "joyau", "joyeux", "jubiler", "jugement", "junior", "jupon", "juriste", "justice", "juteux", "juve\u0301nile", "kayak", "kimono", "kiosque", "label", "labial", "labourer", "lace\u0301rer", "lactose", "lagune", "laine", "laisser", "laitier", "lambeau", "lamelle", "lampe", "lanceur", "langage", "lanterne", "lapin", "largeur", "larme", "laurier", "lavabo", "lavoir", "lecture", "le\u0301gal", "le\u0301ger", "le\u0301gume", "lessive", "lettre", "levier", "lexique", "le\u0301zard", "liasse", "libe\u0301rer", "libre", "licence", "licorne", "lie\u0300ge", "lie\u0300vre", "ligature", "ligoter", "ligue", "limer", "limite", "limonade", "limpide", "line\u0301aire", "lingot", "lionceau", "liquide", "lisie\u0300re", "lister", "lithium", "litige", "littoral", "livreur", "logique", "lointain", "loisir", "lombric", "loterie", "louer", "lourd", "loutre", "louve", "loyal", "lubie", "lucide", "lucratif", "lueur", "lugubre", "luisant", "lumie\u0300re", "lunaire", "lundi", "luron", "lutter", "luxueux", "machine", "magasin", "magenta", "magique", "maigre", "maillon", "maintien", "mairie", "maison", "majorer", "malaxer", "male\u0301fice", "malheur", "malice", "mallette", "mammouth", "mandater", "maniable", "manquant", "manteau", "manuel", "marathon", "marbre", "marchand", "mardi", "maritime", "marqueur", "marron", "marteler", "mascotte", "massif", "mate\u0301riel", "matie\u0300re", "matraque", "maudire", "maussade", "mauve", "maximal", "me\u0301chant", "me\u0301connu", "me\u0301daille", "me\u0301decin", "me\u0301diter", "me\u0301duse", "meilleur", "me\u0301lange", "me\u0301lodie", "membre", "me\u0301moire", "menacer", "mener", "menhir", "mensonge", "mentor", "mercredi", "me\u0301rite", "merle", "messager", "mesure", "me\u0301tal", "me\u0301te\u0301ore", "me\u0301thode", "me\u0301tier", "meuble", "miauler", "microbe", "miette", "mignon", "migrer", "milieu", "million", "mimique", "mince", "mine\u0301ral", "minimal", "minorer", "minute", "miracle", "miroiter", "missile", "mixte", "mobile", "moderne", "moelleux", "mondial", "moniteur", "monnaie", "monotone", "monstre", "montagne", "monument", "moqueur", "morceau", "morsure", "mortier", "moteur", "motif", "mouche", "moufle", "moulin", "mousson", "mouton", "mouvant", "multiple", "munition", "muraille", "mure\u0300ne", "murmure", "muscle", "muse\u0301um", "musicien", "mutation", "muter", "mutuel", "myriade", "myrtille", "myste\u0300re", "mythique", "nageur", "nappe", "narquois", "narrer", "natation", "nation", "nature", "naufrage", "nautique", "navire", "ne\u0301buleux", "nectar", "ne\u0301faste", "ne\u0301gation", "ne\u0301gliger", "ne\u0301gocier", "neige", "nerveux", "nettoyer", "neurone", "neutron", "neveu", "niche", "nickel", "nitrate", "niveau", "noble", "nocif", "nocturne", "noirceur", "noisette", "nomade", "nombreux", "nommer", "normatif", "notable", "notifier", "notoire", "nourrir", "nouveau", "novateur", "novembre", "novice", "nuage", "nuancer", "nuire", "nuisible", "nume\u0301ro", "nuptial", "nuque", "nutritif", "obe\u0301ir", "objectif", "obliger", "obscur", "observer", "obstacle", "obtenir", "obturer", "occasion", "occuper", "oce\u0301an", "octobre", "octroyer", "octupler", "oculaire", "odeur", "odorant", "offenser", "officier", "offrir", "ogive", "oiseau", "oisillon", "olfactif", "olivier", "ombrage", "omettre", "onctueux", "onduler", "one\u0301reux", "onirique", "opale", "opaque", "ope\u0301rer", "opinion", "opportun", "opprimer", "opter", "optique", "orageux", "orange", "orbite", "ordonner", "oreille", "organe", "orgueil", "orifice", "ornement", "orque", "ortie", "osciller", "osmose", "ossature", "otarie", "ouragan", "ourson", "outil", "outrager", "ouvrage", "ovation", "oxyde", "oxyge\u0300ne", "ozone", "paisible", "palace", "palmare\u0300s", "palourde", "palper", "panache", "panda", "pangolin", "paniquer", "panneau", "panorama", "pantalon", "papaye", "papier", "papoter", "papyrus", "paradoxe", "parcelle", "paresse", "parfumer", "parler", "parole", "parrain", "parsemer", "partager", "parure", "parvenir", "passion", "paste\u0300que", "paternel", "patience", "patron", "pavillon", "pavoiser", "payer", "paysage", "peigne", "peintre", "pelage", "pe\u0301lican", "pelle", "pelouse", "peluche", "pendule", "pe\u0301ne\u0301trer", "pe\u0301nible", "pensif", "pe\u0301nurie", "pe\u0301pite", "pe\u0301plum", "perdrix", "perforer", "pe\u0301riode", "permuter", "perplexe", "persil", "perte", "peser", "pe\u0301tale", "petit", "pe\u0301trir", "peuple", "pharaon", "phobie", "phoque", "photon", "phrase", "physique", "piano", "pictural", "pie\u0300ce", "pierre", "pieuvre", "pilote", "pinceau", "pipette", "piquer", "pirogue", "piscine", "piston", "pivoter", "pixel", "pizza", "placard", "plafond", "plaisir", "planer", "plaque", "plastron", "plateau", "pleurer", "plexus", "pliage", "plomb", "plonger", "pluie", "plumage", "pochette", "poe\u0301sie", "poe\u0300te", "pointe", "poirier", "poisson", "poivre", "polaire", "policier", "pollen", "polygone", "pommade", "pompier", "ponctuel", "ponde\u0301rer", "poney", "portique", "position", "posse\u0301der", "posture", "potager", "poteau", "potion", "pouce", "poulain", "poumon", "pourpre", "poussin", "pouvoir", "prairie", "pratique", "pre\u0301cieux", "pre\u0301dire", "pre\u0301fixe", "pre\u0301lude", "pre\u0301nom", "pre\u0301sence", "pre\u0301texte", "pre\u0301voir", "primitif", "prince", "prison", "priver", "proble\u0300me", "proce\u0301der", "prodige", "profond", "progre\u0300s", "proie", "projeter", "prologue", "promener", "propre", "prospe\u0300re", "prote\u0301ger", "prouesse", "proverbe", "prudence", "pruneau", "psychose", "public", "puceron", "puiser", "pulpe", "pulsar", "punaise", "punitif", "pupitre", "purifier", "puzzle", "pyramide", "quasar", "querelle", "question", "quie\u0301tude", "quitter", "quotient", "racine", "raconter", "radieux", "ragondin", "raideur", "raisin", "ralentir", "rallonge", "ramasser", "rapide", "rasage", "ratisser", "ravager", "ravin", "rayonner", "re\u0301actif", "re\u0301agir", "re\u0301aliser", "re\u0301animer", "recevoir", "re\u0301citer", "re\u0301clamer", "re\u0301colter", "recruter", "reculer", "recycler", "re\u0301diger", "redouter", "refaire", "re\u0301flexe", "re\u0301former", "refrain", "refuge", "re\u0301galien", "re\u0301gion", "re\u0301glage", "re\u0301gulier", "re\u0301ite\u0301rer", "rejeter", "rejouer", "relatif", "relever", "relief", "remarque", "reme\u0300de", "remise", "remonter", "remplir", "remuer", "renard", "renfort", "renifler", "renoncer", "rentrer", "renvoi", "replier", "reporter", "reprise", "reptile", "requin", "re\u0301serve", "re\u0301sineux", "re\u0301soudre", "respect", "rester", "re\u0301sultat", "re\u0301tablir", "retenir", "re\u0301ticule", "retomber", "retracer", "re\u0301union", "re\u0301ussir", "revanche", "revivre", "re\u0301volte", "re\u0301vulsif", "richesse", "rideau", "rieur", "rigide", "rigoler", "rincer", "riposter", "risible", "risque", "rituel", "rival", "rivie\u0300re", "rocheux", "romance", "rompre", "ronce", "rondin", "roseau", "rosier", "rotatif", "rotor", "rotule", "rouge", "rouille", "rouleau", "routine", "royaume", "ruban", "rubis", "ruche", "ruelle", "rugueux", "ruiner", "ruisseau", "ruser", "rustique", "rythme", "sabler", "saboter", "sabre", "sacoche", "safari", "sagesse", "saisir", "salade", "salive", "salon", "saluer", "samedi", "sanction", "sanglier", "sarcasme", "sardine", "saturer", "saugrenu", "saumon", "sauter", "sauvage", "savant", "savonner", "scalpel", "scandale", "sce\u0301le\u0301rat", "sce\u0301nario", "sceptre", "sche\u0301ma", "science", "scinder", "score", "scrutin", "sculpter", "se\u0301ance", "se\u0301cable", "se\u0301cher", "secouer", "se\u0301cre\u0301ter", "se\u0301datif", "se\u0301duire", "seigneur", "se\u0301jour", "se\u0301lectif", "semaine", "sembler", "semence", "se\u0301minal", "se\u0301nateur", "sensible", "sentence", "se\u0301parer", "se\u0301quence", "serein", "sergent", "se\u0301rieux", "serrure", "se\u0301rum", "service", "se\u0301same", "se\u0301vir", "sevrage", "sextuple", "side\u0301ral", "sie\u0300cle", "sie\u0301ger", "siffler", "sigle", "signal", "silence", "silicium", "simple", "since\u0300re", "sinistre", "siphon", "sirop", "sismique", "situer", "skier", "social", "socle", "sodium", "soigneux", "soldat", "soleil", "solitude", "soluble", "sombre", "sommeil", "somnoler", "sonde", "songeur", "sonnette", "sonore", "sorcier", "sortir", "sosie", "sottise", "soucieux", "soudure", "souffle", "soulever", "soupape", "source", "soutirer", "souvenir", "spacieux", "spatial", "spe\u0301cial", "sphe\u0300re", "spiral", "stable", "station", "sternum", "stimulus", "stipuler", "strict", "studieux", "stupeur", "styliste", "sublime", "substrat", "subtil", "subvenir", "succe\u0300s", "sucre", "suffixe", "sugge\u0301rer", "suiveur", "sulfate", "superbe", "supplier", "surface", "suricate", "surmener", "surprise", "sursaut", "survie", "suspect", "syllabe", "symbole", "syme\u0301trie", "synapse", "syntaxe", "syste\u0300me", "tabac", "tablier", "tactile", "tailler", "talent", "talisman", "talonner", "tambour", "tamiser", "tangible", "tapis", "taquiner", "tarder", "tarif", "tartine", "tasse", "tatami", "tatouage", "taupe", "taureau", "taxer", "te\u0301moin", "temporel", "tenaille", "tendre", "teneur", "tenir", "tension", "terminer", "terne", "terrible", "te\u0301tine", "texte", "the\u0300me", "the\u0301orie", "the\u0301rapie", "thorax", "tibia", "tie\u0300de", "timide", "tirelire", "tiroir", "tissu", "titane", "titre", "tituber", "toboggan", "tole\u0301rant", "tomate", "tonique", "tonneau", "toponyme", "torche", "tordre", "tornade", "torpille", "torrent", "torse", "tortue", "totem", "toucher", "tournage", "tousser", "toxine", "traction", "trafic", "tragique", "trahir", "train", "trancher", "travail", "tre\u0300fle", "tremper", "tre\u0301sor", "treuil", "triage", "tribunal", "tricoter", "trilogie", "triomphe", "tripler", "triturer", "trivial", "trombone", "tronc", "tropical", "troupeau", "tuile", "tulipe", "tumulte", "tunnel", "turbine", "tuteur", "tutoyer", "tuyau", "tympan", "typhon", "typique", "tyran", "ubuesque", "ultime", "ultrason", "unanime", "unifier", "union", "unique", "unitaire", "univers", "uranium", "urbain", "urticant", "usage", "usine", "usuel", "usure", "utile", "utopie", "vacarme", "vaccin", "vagabond", "vague", "vaillant", "vaincre", "vaisseau", "valable", "valise", "vallon", "valve", "vampire", "vanille", "vapeur", "varier", "vaseux", "vassal", "vaste", "vecteur", "vedette", "ve\u0301ge\u0301tal", "ve\u0301hicule", "veinard", "ve\u0301loce", "vendredi", "ve\u0301ne\u0301rer", "venger", "venimeux", "ventouse", "verdure", "ve\u0301rin", "vernir", "verrou", "verser", "vertu", "veston", "ve\u0301te\u0301ran", "ve\u0301tuste", "vexant", "vexer", "viaduc", "viande", "victoire", "vidange", "vide\u0301o", "vignette", "vigueur", "vilain", "village", "vinaigre", "violon", "vipe\u0300re", "virement", "virtuose", "virus", "visage", "viseur", "vision", "visqueux", "visuel", "vital", "vitesse", "viticole", "vitrine", "vivace", "vivipare", "vocation", "voguer", "voile", "voisin", "voiture", "volaille", "volcan", "voltiger", "volume", "vorace", "vortex", "voter", "vouloir", "voyage", "voyelle", "wagon", "xe\u0301non", "yacht", "ze\u0300bre", "ze\u0301nith", "zeste", "zoologie"];
  }
});

// node_modules/bip39-mnemonic/wordlist/italian.json
var require_italian = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/italian.json"(exports2, module2) {
    module2.exports = ["abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno", "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio", "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso", "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare", "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume", "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro", "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio", "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba", "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare", "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare", "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio", "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo", "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro", "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato", "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico", "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta", "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno", "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire", "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco", "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino", "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta", "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole", "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga", "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto", "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco", "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto", "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone", "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta", "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata", "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina", "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo", "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello", "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre", "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia", "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra", "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino", "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente", "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando", "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere", "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato", "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato", "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi", "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato", "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino", "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino", "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta", "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio", "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale", "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo", "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto", "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare", "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio", "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi", "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio", "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa", "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico", "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale", "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe", "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito", "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso", "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo", "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco", "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia", "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa", "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta", "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore", "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro", "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico", "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare", "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo", "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante", "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile", "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano", "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina", "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio", "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone", "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito", "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare", "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno", "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo", "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere", "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego", "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso", "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto", "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano", "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido", "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato", "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto", "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso", "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero", "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva", "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua", "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica", "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca", "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero", "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso", "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra", "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera", "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate", "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio", "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare", "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa", "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza", "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole", "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso", "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo", "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto", "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro", "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi", "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve", "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico", "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero", "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo", "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare", "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva", "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice", "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino", "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo", "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite", "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale", "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico", "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude", "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari", "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume", "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto", "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena", "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso", "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza", "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota", "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi", "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo", "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere", "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa", "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica", "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima", "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome", "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica", "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro", "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo", "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso", "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto", "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione", "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro", "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica", "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma", "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio", "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato", "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso", "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva", "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio", "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante", "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo", "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma", "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno", "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato", "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato", "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso", "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere", "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta", "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare", "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato", "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire", "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina", "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato", "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare", "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra", "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro", "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno", "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato", "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne", "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero", "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro", "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire", "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso", "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo", "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera", "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato", "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro", "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato", "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista", "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone", "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna", "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero", "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro", "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio", "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo", "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire", "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano", "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio", "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola", "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta", "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse", "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono", "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito", "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga", "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano", "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto", "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace", "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano", "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto", "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento", "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido", "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna", "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco", "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa"];
  }
});

// node_modules/bip39-mnemonic/wordlist/japanese.json
var require_japanese = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/japanese.json"(exports2, module2) {
    module2.exports = ["\u3042\u3044\u3053\u304F\u3057\u3093", "\u3042\u3044\u3055\u3064", "\u3042\u3044\u305F\u3099", "\u3042\u304A\u305D\u3099\u3089", "\u3042\u304B\u3061\u3083\u3093", "\u3042\u304D\u308B", "\u3042\u3051\u304B\u3099\u305F", "\u3042\u3051\u308B", "\u3042\u3053\u304B\u3099\u308C\u308B", "\u3042\u3055\u3044", "\u3042\u3055\u3072", "\u3042\u3057\u3042\u3068", "\u3042\u3057\u3099\u308F\u3046", "\u3042\u3059\u3099\u304B\u308B", "\u3042\u3059\u3099\u304D", "\u3042\u305D\u3075\u3099", "\u3042\u305F\u3048\u308B", "\u3042\u305F\u305F\u3081\u308B", "\u3042\u305F\u308A\u307E\u3048", "\u3042\u305F\u308B", "\u3042\u3064\u3044", "\u3042\u3064\u304B\u3046", "\u3042\u3063\u3057\u3085\u304F", "\u3042\u3064\u307E\u308A", "\u3042\u3064\u3081\u308B", "\u3042\u3066\u306A", "\u3042\u3066\u306F\u307E\u308B", "\u3042\u3072\u308B", "\u3042\u3075\u3099\u3089", "\u3042\u3075\u3099\u308B", "\u3042\u3075\u308C\u308B", "\u3042\u307E\u3044", "\u3042\u307E\u3068\u3099", "\u3042\u307E\u3084\u304B\u3059", "\u3042\u307E\u308A", "\u3042\u307F\u3082\u306E", "\u3042\u3081\u308A\u304B", "\u3042\u3084\u307E\u308B", "\u3042\u3086\u3080", "\u3042\u3089\u3044\u304F\u3099\u307E", "\u3042\u3089\u3057", "\u3042\u3089\u3059\u3057\u3099", "\u3042\u3089\u305F\u3081\u308B", "\u3042\u3089\u3086\u308B", "\u3042\u3089\u308F\u3059", "\u3042\u308A\u304B\u3099\u3068\u3046", "\u3042\u308F\u305B\u308B", "\u3042\u308F\u3066\u308B", "\u3042\u3093\u3044", "\u3042\u3093\u304B\u3099\u3044", "\u3042\u3093\u3053", "\u3042\u3093\u305B\u3099\u3093", "\u3042\u3093\u3066\u3044", "\u3042\u3093\u306A\u3044", "\u3042\u3093\u307E\u308A", "\u3044\u3044\u305F\u3099\u3059", "\u3044\u304A\u3093", "\u3044\u304B\u3099\u3044", "\u3044\u304B\u3099\u304F", "\u3044\u304D\u304A\u3044", "\u3044\u304D\u306A\u308A", "\u3044\u304D\u3082\u306E", "\u3044\u304D\u308B", "\u3044\u304F\u3057\u3099", "\u3044\u304F\u3075\u3099\u3093", "\u3044\u3051\u306F\u3099\u306A", "\u3044\u3051\u3093", "\u3044\u3053\u3046", "\u3044\u3053\u304F", "\u3044\u3053\u3064", "\u3044\u3055\u307E\u3057\u3044", "\u3044\u3055\u3093", "\u3044\u3057\u304D", "\u3044\u3057\u3099\u3085\u3046", "\u3044\u3057\u3099\u3087\u3046", "\u3044\u3057\u3099\u308F\u308B", "\u3044\u3059\u3099\u307F", "\u3044\u3059\u3099\u308C", "\u3044\u305B\u3044", "\u3044\u305B\u3048\u3072\u3099", "\u3044\u305B\u304B\u3044", "\u3044\u305B\u304D", "\u3044\u305B\u3099\u3093", "\u3044\u305D\u3046\u308D\u3046", "\u3044\u305D\u304B\u3099\u3057\u3044", "\u3044\u305F\u3099\u3044", "\u3044\u305F\u3099\u304F", "\u3044\u305F\u3059\u3099\u3089", "\u3044\u305F\u307F", "\u3044\u305F\u308A\u3042", "\u3044\u3061\u304A\u3046", "\u3044\u3061\u3057\u3099", "\u3044\u3061\u3068\u3099", "\u3044\u3061\u306F\u3099", "\u3044\u3061\u3075\u3099", "\u3044\u3061\u308A\u3085\u3046", "\u3044\u3064\u304B", "\u3044\u3063\u3057\u3085\u3093", "\u3044\u3063\u305B\u3044", "\u3044\u3063\u305D\u3046", "\u3044\u3063\u305F\u3093", "\u3044\u3063\u3061", "\u3044\u3063\u3066\u3044", "\u3044\u3063\u307B\u309A\u3046", "\u3044\u3066\u3055\u3099", "\u3044\u3066\u3093", "\u3044\u3068\u3099\u3046", "\u3044\u3068\u3053", "\u3044\u306A\u3044", "\u3044\u306A\u304B", "\u3044\u306D\u3080\u308A", "\u3044\u306E\u3061", "\u3044\u306E\u308B", "\u3044\u306F\u3064", "\u3044\u306F\u3099\u308B", "\u3044\u306F\u3093", "\u3044\u3072\u3099\u304D", "\u3044\u3072\u3093", "\u3044\u3075\u304F", "\u3044\u3078\u3093", "\u3044\u307B\u3046", "\u3044\u307F\u3093", "\u3044\u3082\u3046\u3068", "\u3044\u3082\u305F\u308C", "\u3044\u3082\u308A", "\u3044\u3084\u304B\u3099\u308B", "\u3044\u3084\u3059", "\u3044\u3088\u304B\u3093", "\u3044\u3088\u304F", "\u3044\u3089\u3044", "\u3044\u3089\u3059\u3068", "\u3044\u308A\u304F\u3099\u3061", "\u3044\u308A\u3087\u3046", "\u3044\u308C\u3044", "\u3044\u308C\u3082\u306E", "\u3044\u308C\u308B", "\u3044\u308D\u3048\u3093\u3072\u309A\u3064", "\u3044\u308F\u3044", "\u3044\u308F\u3046", "\u3044\u308F\u304B\u3093", "\u3044\u308F\u306F\u3099", "\u3044\u308F\u3086\u308B", "\u3044\u3093\u3051\u3099\u3093\u307E\u3081", "\u3044\u3093\u3055\u3064", "\u3044\u3093\u3057\u3087\u3046", "\u3044\u3093\u3088\u3046", "\u3046\u3048\u304D", "\u3046\u3048\u308B", "\u3046\u304A\u3055\u3099", "\u3046\u304B\u3099\u3044", "\u3046\u304B\u3075\u3099", "\u3046\u304B\u3078\u3099\u308B", "\u3046\u304D\u308F", "\u3046\u304F\u3089\u3044\u306A", "\u3046\u304F\u308C\u308C", "\u3046\u3051\u305F\u307E\u308F\u308B", "\u3046\u3051\u3064\u3051", "\u3046\u3051\u3068\u308B", "\u3046\u3051\u3082\u3064", "\u3046\u3051\u308B", "\u3046\u3053\u3099\u304B\u3059", "\u3046\u3053\u3099\u304F", "\u3046\u3053\u3093", "\u3046\u3055\u304D\u3099", "\u3046\u3057\u306A\u3046", "\u3046\u3057\u308D\u304B\u3099\u307F", "\u3046\u3059\u3044", "\u3046\u3059\u304D\u3099", "\u3046\u3059\u304F\u3099\u3089\u3044", "\u3046\u3059\u3081\u308B", "\u3046\u305B\u3064", "\u3046\u3061\u3042\u308F\u305B", "\u3046\u3061\u304B\u3099\u308F", "\u3046\u3061\u304D", "\u3046\u3061\u3085\u3046", "\u3046\u3063\u304B\u308A", "\u3046\u3064\u304F\u3057\u3044", "\u3046\u3063\u305F\u3048\u308B", "\u3046\u3064\u308B", "\u3046\u3068\u3099\u3093", "\u3046\u306A\u304D\u3099", "\u3046\u306A\u3057\u3099", "\u3046\u306A\u3059\u3099\u304F", "\u3046\u306A\u308B", "\u3046\u306D\u308B", "\u3046\u306E\u3046", "\u3046\u3075\u3099\u3051\u3099", "\u3046\u3075\u3099\u3053\u3099\u3048", "\u3046\u307E\u308C\u308B", "\u3046\u3081\u308B", "\u3046\u3082\u3046", "\u3046\u3084\u307E\u3046", "\u3046\u3088\u304F", "\u3046\u3089\u304B\u3099\u3048\u3059", "\u3046\u3089\u304F\u3099\u3061", "\u3046\u3089\u306A\u3044", "\u3046\u308A\u3042\u3051\u3099", "\u3046\u308A\u304D\u308C", "\u3046\u308B\u3055\u3044", "\u3046\u308C\u3057\u3044", "\u3046\u308C\u3086\u304D", "\u3046\u308C\u308B", "\u3046\u308D\u3053", "\u3046\u308F\u304D", "\u3046\u308F\u3055", "\u3046\u3093\u3053\u3046", "\u3046\u3093\u3061\u3093", "\u3046\u3093\u3066\u3093", "\u3046\u3093\u3068\u3099\u3046", "\u3048\u3044\u3048\u3093", "\u3048\u3044\u304B\u3099", "\u3048\u3044\u304D\u3087\u3046", "\u3048\u3044\u3053\u3099", "\u3048\u3044\u305B\u3044", "\u3048\u3044\u3075\u3099\u3093", "\u3048\u3044\u3088\u3046", "\u3048\u3044\u308F", "\u3048\u304A\u308A", "\u3048\u304B\u3099\u304A", "\u3048\u304B\u3099\u304F", "\u3048\u304D\u305F\u3044", "\u3048\u304F\u305B\u308B", "\u3048\u3057\u3083\u304F", "\u3048\u3059\u3066", "\u3048\u3064\u3089\u3093", "\u3048\u306E\u304F\u3099", "\u3048\u307B\u3046\u307E\u304D", "\u3048\u307B\u3093", "\u3048\u307E\u304D", "\u3048\u3082\u3057\u3099", "\u3048\u3082\u306E", "\u3048\u3089\u3044", "\u3048\u3089\u3075\u3099", "\u3048\u308A\u3042", "\u3048\u3093\u3048\u3093", "\u3048\u3093\u304B\u3044", "\u3048\u3093\u304D\u3099", "\u3048\u3093\u3051\u3099\u304D", "\u3048\u3093\u3057\u3085\u3046", "\u3048\u3093\u305B\u3099\u3064", "\u3048\u3093\u305D\u304F", "\u3048\u3093\u3061\u3087\u3046", "\u3048\u3093\u3068\u3064", "\u304A\u3044\u304B\u3051\u308B", "\u304A\u3044\u3053\u3059", "\u304A\u3044\u3057\u3044", "\u304A\u3044\u3064\u304F", "\u304A\u3046\u3048\u3093", "\u304A\u3046\u3055\u307E", "\u304A\u3046\u3057\u3099", "\u304A\u3046\u305B\u3064", "\u304A\u3046\u305F\u3044", "\u304A\u3046\u3075\u304F", "\u304A\u3046\u3078\u3099\u3044", "\u304A\u3046\u3088\u3046", "\u304A\u3048\u308B", "\u304A\u304A\u3044", "\u304A\u304A\u3046", "\u304A\u304A\u3068\u3099\u304A\u308A", "\u304A\u304A\u3084", "\u304A\u304A\u3088\u305D", "\u304A\u304B\u3048\u308A", "\u304A\u304B\u3059\u3099", "\u304A\u304B\u3099\u3080", "\u304A\u304B\u308F\u308A", "\u304A\u304D\u3099\u306A\u3046", "\u304A\u304D\u308B", "\u304A\u304F\u3055\u307E", "\u304A\u304F\u3057\u3099\u3087\u3046", "\u304A\u304F\u308A\u304B\u3099\u306A", "\u304A\u304F\u308B", "\u304A\u304F\u308C\u308B", "\u304A\u3053\u3059", "\u304A\u3053\u306A\u3046", "\u304A\u3053\u308B", "\u304A\u3055\u3048\u308B", "\u304A\u3055\u306A\u3044", "\u304A\u3055\u3081\u308B", "\u304A\u3057\u3044\u308C", "\u304A\u3057\u3048\u308B", "\u304A\u3057\u3099\u304D\u3099", "\u304A\u3057\u3099\u3055\u3093", "\u304A\u3057\u3083\u308C", "\u304A\u305D\u3089\u304F", "\u304A\u305D\u308F\u308B", "\u304A\u305F\u304B\u3099\u3044", "\u304A\u305F\u304F", "\u304A\u305F\u3099\u3084\u304B", "\u304A\u3061\u3064\u304F", "\u304A\u3063\u3068", "\u304A\u3064\u308A", "\u304A\u3066\u3099\u304B\u3051", "\u304A\u3068\u3057\u3082\u306E", "\u304A\u3068\u306A\u3057\u3044", "\u304A\u3068\u3099\u308A", "\u304A\u3068\u3099\u308D\u304B\u3059", "\u304A\u306F\u3099\u3055\u3093", "\u304A\u307E\u3044\u308A", "\u304A\u3081\u3066\u3099\u3068\u3046", "\u304A\u3082\u3044\u3066\u3099", "\u304A\u3082\u3046", "\u304A\u3082\u305F\u3044", "\u304A\u3082\u3061\u3083", "\u304A\u3084\u3064", "\u304A\u3084\u3086\u3072\u3099", "\u304A\u3088\u307B\u3099\u3059", "\u304A\u3089\u3093\u305F\u3099", "\u304A\u308D\u3059", "\u304A\u3093\u304B\u3099\u304F", "\u304A\u3093\u3051\u3044", "\u304A\u3093\u3057\u3083", "\u304A\u3093\u305B\u3093", "\u304A\u3093\u305F\u3099\u3093", "\u304A\u3093\u3061\u3085\u3046", "\u304A\u3093\u3068\u3099\u3051\u3044", "\u304B\u3042\u3064", "\u304B\u3044\u304B\u3099", "\u304B\u3099\u3044\u304D", "\u304B\u3099\u3044\u3051\u3093", "\u304B\u3099\u3044\u3053\u3046", "\u304B\u3044\u3055\u3064", "\u304B\u3044\u3057\u3083", "\u304B\u3044\u3059\u3044\u3088\u304F", "\u304B\u3044\u305B\u3099\u3093", "\u304B\u3044\u305D\u3099\u3046\u3068\u3099", "\u304B\u3044\u3064\u3046", "\u304B\u3044\u3066\u3093", "\u304B\u3044\u3068\u3046", "\u304B\u3044\u3075\u304F", "\u304B\u3099\u3044\u3078\u304D", "\u304B\u3044\u307B\u3046", "\u304B\u3044\u3088\u3046", "\u304B\u3099\u3044\u3089\u3044", "\u304B\u3044\u308F", "\u304B\u3048\u308B", "\u304B\u304A\u308A", "\u304B\u304B\u3048\u308B", "\u304B\u304B\u3099\u304F", "\u304B\u304B\u3099\u3057", "\u304B\u304B\u3099\u307F", "\u304B\u304F\u3053\u3099", "\u304B\u304F\u3068\u304F", "\u304B\u3055\u3099\u308B", "\u304B\u3099\u305D\u3099\u3046", "\u304B\u305F\u3044", "\u304B\u305F\u3061", "\u304B\u3099\u3061\u3087\u3046", "\u304B\u3099\u3063\u304D\u3085\u3046", "\u304B\u3099\u3063\u3053\u3046", "\u304B\u3099\u3063\u3055\u3093", "\u304B\u3099\u3063\u3057\u3087\u3046", "\u304B\u306A\u3055\u3099\u308F\u3057", "\u304B\u306E\u3046", "\u304B\u3099\u306F\u304F", "\u304B\u3075\u3099\u304B", "\u304B\u307B\u3046", "\u304B\u307B\u3053\u3099", "\u304B\u307E\u3046", "\u304B\u307E\u307B\u3099\u3053", "\u304B\u3081\u308C\u304A\u3093", "\u304B\u3086\u3044", "\u304B\u3088\u3046\u3072\u3099", "\u304B\u3089\u3044", "\u304B\u308B\u3044", "\u304B\u308D\u3046", "\u304B\u308F\u304F", "\u304B\u308F\u3089", "\u304B\u3099\u3093\u304B", "\u304B\u3093\u3051\u3044", "\u304B\u3093\u3053\u3046", "\u304B\u3093\u3057\u3083", "\u304B\u3093\u305D\u3046", "\u304B\u3093\u305F\u3093", "\u304B\u3093\u3061", "\u304B\u3099\u3093\u306F\u3099\u308B", "\u304D\u3042\u3044", "\u304D\u3042\u3064", "\u304D\u3044\u308D", "\u304D\u3099\u3044\u3093", "\u304D\u3046\u3044", "\u304D\u3046\u3093", "\u304D\u3048\u308B", "\u304D\u304A\u3046", "\u304D\u304A\u304F", "\u304D\u304A\u3061", "\u304D\u304A\u3093", "\u304D\u304B\u3044", "\u304D\u304B\u304F", "\u304D\u304B\u3093\u3057\u3083", "\u304D\u304D\u3066", "\u304D\u304F\u306F\u3099\u308A", "\u304D\u304F\u3089\u3051\u3099", "\u304D\u3051\u3093\u305B\u3044", "\u304D\u3053\u3046", "\u304D\u3053\u3048\u308B", "\u304D\u3053\u304F", "\u304D\u3055\u3044", "\u304D\u3055\u304F", "\u304D\u3055\u307E", "\u304D\u3055\u3089\u304D\u3099", "\u304D\u3099\u3057\u3099\u304B\u304B\u3099\u304F", "\u304D\u3099\u3057\u304D", "\u304D\u3099\u3057\u3099\u305F\u3044\u3051\u3093", "\u304D\u3099\u3057\u3099\u306B\u3063\u3066\u3044", "\u304D\u3099\u3057\u3099\u3085\u3064\u3057\u3083", "\u304D\u3059\u3046", "\u304D\u305B\u3044", "\u304D\u305B\u304D", "\u304D\u305B\u3064", "\u304D\u305D\u3046", "\u304D\u305D\u3099\u304F", "\u304D\u305D\u3099\u3093", "\u304D\u305F\u3048\u308B", "\u304D\u3061\u3087\u3046", "\u304D\u3064\u3048\u3093", "\u304D\u3099\u3063\u3061\u308A", "\u304D\u3064\u3064\u304D", "\u304D\u3064\u306D", "\u304D\u3066\u3044", "\u304D\u3068\u3099\u3046", "\u304D\u3068\u3099\u304F", "\u304D\u306A\u3044", "\u304D\u306A\u304B\u3099", "\u304D\u306A\u3053", "\u304D\u306C\u3053\u3099\u3057", "\u304D\u306D\u3093", "\u304D\u306E\u3046", "\u304D\u306E\u3057\u305F", "\u304D\u306F\u304F", "\u304D\u3072\u3099\u3057\u3044", "\u304D\u3072\u3093", "\u304D\u3075\u304F", "\u304D\u3075\u3099\u3093", "\u304D\u307B\u3099\u3046", "\u304D\u307B\u3093", "\u304D\u307E\u308B", "\u304D\u307F\u3064", "\u304D\u3080\u3059\u3099\u304B\u3057\u3044", "\u304D\u3081\u308B", "\u304D\u3082\u305F\u3099\u3081\u3057", "\u304D\u3082\u3061", "\u304D\u3082\u306E", "\u304D\u3083\u304F", "\u304D\u3084\u304F", "\u304D\u3099\u3085\u3046\u306B\u304F", "\u304D\u3088\u3046", "\u304D\u3087\u3046\u308A\u3085\u3046", "\u304D\u3089\u3044", "\u304D\u3089\u304F", "\u304D\u308A\u3093", "\u304D\u308C\u3044", "\u304D\u308C\u3064", "\u304D\u308D\u304F", "\u304D\u3099\u308D\u3093", "\u304D\u308F\u3081\u308B", "\u304D\u3099\u3093\u3044\u308D", "\u304D\u3093\u304B\u304F\u3057\u3099", "\u304D\u3093\u3057\u3099\u3087", "\u304D\u3093\u3088\u3046\u3072\u3099", "\u304F\u3099\u3042\u3044", "\u304F\u3044\u3059\u3099", "\u304F\u3046\u304B\u3093", "\u304F\u3046\u304D", "\u304F\u3046\u304F\u3099\u3093", "\u304F\u3046\u3053\u3046", "\u304F\u3099\u3046\u305B\u3044", "\u304F\u3046\u305D\u3046", "\u304F\u3099\u3046\u305F\u3089", "\u304F\u3046\u3075\u304F", "\u304F\u3046\u307B\u3099", "\u304F\u304B\u3093", "\u304F\u304D\u3087\u3046", "\u304F\u3051\u3099\u3093", "\u304F\u3099\u3053\u3046", "\u304F\u3055\u3044", "\u304F\u3055\u304D", "\u304F\u3055\u306F\u3099\u306A", "\u304F\u3055\u308B", "\u304F\u3057\u3083\u307F", "\u304F\u3057\u3087\u3046", "\u304F\u3059\u306E\u304D", "\u304F\u3059\u308A\u3086\u3072\u3099", "\u304F\u305B\u3051\u3099", "\u304F\u305B\u3093", "\u304F\u3099\u305F\u3044\u3066\u304D", "\u304F\u305F\u3099\u3055\u308B", "\u304F\u305F\u3072\u3099\u308C\u308B", "\u304F\u3061\u3053\u307F", "\u304F\u3061\u3055\u304D", "\u304F\u3064\u3057\u305F", "\u304F\u3099\u3063\u3059\u308A", "\u304F\u3064\u308D\u304F\u3099", "\u304F\u3068\u3046\u3066\u3093", "\u304F\u3068\u3099\u304F", "\u304F\u306A\u3093", "\u304F\u306D\u304F\u306D", "\u304F\u306E\u3046", "\u304F\u3075\u3046", "\u304F\u307F\u3042\u308F\u305B", "\u304F\u307F\u305F\u3066\u308B", "\u304F\u3081\u308B", "\u304F\u3084\u304F\u3057\u3087", "\u304F\u3089\u3059", "\u304F\u3089\u3078\u3099\u308B", "\u304F\u308B\u307E", "\u304F\u308C\u308B", "\u304F\u308D\u3046", "\u304F\u308F\u3057\u3044", "\u304F\u3099\u3093\u304B\u3093", "\u304F\u3099\u3093\u3057\u3087\u304F", "\u304F\u3099\u3093\u305F\u3044", "\u304F\u3099\u3093\u3066", "\u3051\u3042\u306A", "\u3051\u3044\u304B\u304F", "\u3051\u3044\u3051\u3093", "\u3051\u3044\u3053", "\u3051\u3044\u3055\u3064", "\u3051\u3099\u3044\u3057\u3099\u3085\u3064", "\u3051\u3044\u305F\u3044", "\u3051\u3099\u3044\u306E\u3046\u3057\u3099\u3093", "\u3051\u3044\u308C\u304D", "\u3051\u3044\u308D", "\u3051\u304A\u3068\u3059", "\u3051\u304A\u308A\u3082\u306E", "\u3051\u3099\u304D\u304B", "\u3051\u3099\u304D\u3051\u3099\u3093", "\u3051\u3099\u304D\u305F\u3099\u3093", "\u3051\u3099\u304D\u3061\u3093", "\u3051\u3099\u304D\u3068\u3064", "\u3051\u3099\u304D\u306F", "\u3051\u3099\u304D\u3084\u304F", "\u3051\u3099\u3053\u3046", "\u3051\u3099\u3053\u304F\u3057\u3099\u3087\u3046", "\u3051\u3099\u3055\u3099\u3044", "\u3051\u3055\u304D", "\u3051\u3099\u3055\u3099\u3093", "\u3051\u3057\u304D", "\u3051\u3057\u3053\u3099\u3080", "\u3051\u3057\u3087\u3046", "\u3051\u3099\u3059\u3068", "\u3051\u305F\u306F\u3099", "\u3051\u3061\u3083\u3063\u3075\u309A", "\u3051\u3061\u3089\u3059", "\u3051\u3064\u3042\u3064", "\u3051\u3064\u3044", "\u3051\u3064\u3048\u304D", "\u3051\u3063\u3053\u3093", "\u3051\u3064\u3057\u3099\u3087", "\u3051\u3063\u305B\u304D", "\u3051\u3063\u3066\u3044", "\u3051\u3064\u307E\u3064", "\u3051\u3099\u3064\u3088\u3046\u3072\u3099", "\u3051\u3099\u3064\u308C\u3044", "\u3051\u3064\u308D\u3093", "\u3051\u3099\u3068\u3099\u304F", "\u3051\u3068\u306F\u3099\u3059", "\u3051\u3068\u308B", "\u3051\u306A\u3051\u3099", "\u3051\u306A\u3059", "\u3051\u306A\u307F", "\u3051\u306C\u304D", "\u3051\u3099\u306D\u3064", "\u3051\u306D\u3093", "\u3051\u306F\u3044", "\u3051\u3099\u3072\u3093", "\u3051\u3075\u3099\u304B\u3044", "\u3051\u3099\u307B\u3099\u304F", "\u3051\u307E\u308A", "\u3051\u307F\u304B\u308B", "\u3051\u3080\u3057", "\u3051\u3080\u308A", "\u3051\u3082\u306E", "\u3051\u3089\u3044", "\u3051\u308D\u3051\u308D", "\u3051\u308F\u3057\u3044", "\u3051\u3093\u3044", "\u3051\u3093\u3048\u3064", "\u3051\u3093\u304A", "\u3051\u3093\u304B", "\u3051\u3099\u3093\u304D", "\u3051\u3093\u3051\u3099\u3093", "\u3051\u3093\u3053\u3046", "\u3051\u3093\u3055\u304F", "\u3051\u3093\u3057\u3085\u3046", "\u3051\u3093\u3059\u3046", "\u3051\u3099\u3093\u305D\u3046", "\u3051\u3093\u3061\u304F", "\u3051\u3093\u3066\u3044", "\u3051\u3093\u3068\u3046", "\u3051\u3093\u306A\u3044", "\u3051\u3093\u306B\u3093", "\u3051\u3099\u3093\u3075\u3099\u3064", "\u3051\u3093\u307E", "\u3051\u3093\u307F\u3093", "\u3051\u3093\u3081\u3044", "\u3051\u3093\u3089\u3093", "\u3051\u3093\u308A", "\u3053\u3042\u304F\u307E", "\u3053\u3044\u306C", "\u3053\u3044\u3072\u3099\u3068", "\u3053\u3099\u3046\u3044", "\u3053\u3046\u3048\u3093", "\u3053\u3046\u304A\u3093", "\u3053\u3046\u304B\u3093", "\u3053\u3099\u3046\u304D\u3085\u3046", "\u3053\u3099\u3046\u3051\u3044", "\u3053\u3046\u3053\u3046", "\u3053\u3046\u3055\u3044", "\u3053\u3046\u3057\u3099", "\u3053\u3046\u3059\u3044", "\u3053\u3099\u3046\u305B\u3044", "\u3053\u3046\u305D\u304F", "\u3053\u3046\u305F\u3044", "\u3053\u3046\u3061\u3083", "\u3053\u3046\u3064\u3046", "\u3053\u3046\u3066\u3044", "\u3053\u3046\u3068\u3099\u3046", "\u3053\u3046\u306A\u3044", "\u3053\u3046\u306F\u3044", "\u3053\u3099\u3046\u307B\u3046", "\u3053\u3099\u3046\u307E\u3093", "\u3053\u3046\u3082\u304F", "\u3053\u3046\u308A\u3064", "\u3053\u3048\u308B", "\u3053\u304A\u308A", "\u3053\u3099\u304B\u3044", "\u3053\u3099\u304B\u3099\u3064", "\u3053\u3099\u304B\u3093", "\u3053\u304F\u3053\u3099", "\u3053\u304F\u3055\u3044", "\u3053\u304F\u3068\u3046", "\u3053\u304F\u306A\u3044", "\u3053\u304F\u306F\u304F", "\u3053\u304F\u3099\u307E", "\u3053\u3051\u3044", "\u3053\u3051\u308B", "\u3053\u3053\u306E\u304B", "\u3053\u3053\u308D", "\u3053\u3055\u3081", "\u3053\u3057\u3064", "\u3053\u3059\u3046", "\u3053\u305B\u3044", "\u3053\u305B\u304D", "\u3053\u305B\u3099\u3093", "\u3053\u305D\u305F\u3099\u3066", "\u3053\u305F\u3044", "\u3053\u305F\u3048\u308B", "\u3053\u305F\u3064", "\u3053\u3061\u3087\u3046", "\u3053\u3063\u304B", "\u3053\u3064\u3053\u3064", "\u3053\u3064\u306F\u3099\u3093", "\u3053\u3064\u3075\u3099", "\u3053\u3066\u3044", "\u3053\u3066\u3093", "\u3053\u3068\u304B\u3099\u3089", "\u3053\u3068\u3057", "\u3053\u3068\u306F\u3099", "\u3053\u3068\u308A", "\u3053\u306A\u3053\u3099\u306A", "\u3053\u306D\u3053\u306D", "\u3053\u306E\u307E\u307E", "\u3053\u306E\u307F", "\u3053\u306E\u3088", "\u3053\u3099\u306F\u3093", "\u3053\u3072\u3064\u3057\u3099", "\u3053\u3075\u3046", "\u3053\u3075\u3093", "\u3053\u307B\u3099\u308C\u308B", "\u3053\u3099\u307E\u3042\u3075\u3099\u3089", "\u3053\u307E\u304B\u3044", "\u3053\u3099\u307E\u3059\u308A", "\u3053\u307E\u3064\u306A", "\u3053\u307E\u308B", "\u3053\u3080\u304D\u3099\u3053", "\u3053\u3082\u3057\u3099", "\u3053\u3082\u3061", "\u3053\u3082\u306E", "\u3053\u3082\u3093", "\u3053\u3084\u304F", "\u3053\u3084\u307E", "\u3053\u3086\u3046", "\u3053\u3086\u3072\u3099", "\u3053\u3088\u3044", "\u3053\u3088\u3046", "\u3053\u308A\u308B", "\u3053\u308C\u304F\u3057\u3087\u3093", "\u3053\u308D\u3063\u3051", "\u3053\u308F\u3082\u3066", "\u3053\u308F\u308C\u308B", "\u3053\u3093\u3044\u3093", "\u3053\u3093\u304B\u3044", "\u3053\u3093\u304D", "\u3053\u3093\u3057\u3085\u3046", "\u3053\u3093\u3059\u3044", "\u3053\u3093\u305F\u3099\u3066", "\u3053\u3093\u3068\u3093", "\u3053\u3093\u306A\u3093", "\u3053\u3093\u3072\u3099\u306B", "\u3053\u3093\u307B\u309A\u3093", "\u3053\u3093\u307E\u3051", "\u3053\u3093\u3084", "\u3053\u3093\u308C\u3044", "\u3053\u3093\u308F\u304F", "\u3055\u3099\u3044\u3048\u304D", "\u3055\u3044\u304B\u3044", "\u3055\u3044\u304D\u3093", "\u3055\u3099\u3044\u3051\u3099\u3093", "\u3055\u3099\u3044\u3053", "\u3055\u3044\u3057\u3087", "\u3055\u3044\u305B\u3044", "\u3055\u3099\u3044\u305F\u304F", "\u3055\u3099\u3044\u3061\u3085\u3046", "\u3055\u3044\u3066\u304D", "\u3055\u3099\u3044\u308A\u3087\u3046", "\u3055\u3046\u306A", "\u3055\u304B\u3044\u3057", "\u3055\u304B\u3099\u3059", "\u3055\u304B\u306A", "\u3055\u304B\u307F\u3061", "\u3055\u304B\u3099\u308B", "\u3055\u304D\u3099\u3087\u3046", "\u3055\u304F\u3057", "\u3055\u304F\u3072\u3093", "\u3055\u304F\u3089", "\u3055\u3053\u304F", "\u3055\u3053\u3064", "\u3055\u3059\u3099\u304B\u308B", "\u3055\u3099\u305B\u304D", "\u3055\u305F\u3093", "\u3055\u3064\u3048\u3044", "\u3055\u3099\u3064\u304A\u3093", "\u3055\u3099\u3063\u304B", "\u3055\u3099\u3064\u304B\u3099\u304F", "\u3055\u3063\u304D\u3087\u304F", "\u3055\u3099\u3063\u3057", "\u3055\u3064\u3057\u3099\u3093", "\u3055\u3099\u3063\u305D\u3046", "\u3055\u3064\u305F\u306F\u3099", "\u3055\u3064\u307E\u3044\u3082", "\u3055\u3066\u3044", "\u3055\u3068\u3044\u3082", "\u3055\u3068\u3046", "\u3055\u3068\u304A\u3084", "\u3055\u3068\u3057", "\u3055\u3068\u308B", "\u3055\u306E\u3046", "\u3055\u306F\u3099\u304F", "\u3055\u3072\u3099\u3057\u3044", "\u3055\u3078\u3099\u3064", "\u3055\u307B\u3046", "\u3055\u307B\u3068\u3099", "\u3055\u307E\u3059", "\u3055\u307F\u3057\u3044", "\u3055\u307F\u305F\u3099\u308C", "\u3055\u3080\u3051", "\u3055\u3081\u308B", "\u3055\u3084\u3048\u3093\u3068\u3099\u3046", "\u3055\u3086\u3046", "\u3055\u3088\u3046", "\u3055\u3088\u304F", "\u3055\u3089\u305F\u3099", "\u3055\u3099\u308B\u305D\u306F\u3099", "\u3055\u308F\u3084\u304B", "\u3055\u308F\u308B", "\u3055\u3093\u3044\u3093", "\u3055\u3093\u304B", "\u3055\u3093\u304D\u3083\u304F", "\u3055\u3093\u3053\u3046", "\u3055\u3093\u3055\u3044", "\u3055\u3099\u3093\u3057\u3087", "\u3055\u3093\u3059\u3046", "\u3055\u3093\u305B\u3044", "\u3055\u3093\u305D", "\u3055\u3093\u3061", "\u3055\u3093\u307E", "\u3055\u3093\u307F", "\u3055\u3093\u3089\u3093", "\u3057\u3042\u3044", "\u3057\u3042\u3051\u3099", "\u3057\u3042\u3055\u3063\u3066", "\u3057\u3042\u308F\u305B", "\u3057\u3044\u304F", "\u3057\u3044\u3093", "\u3057\u3046\u3061", "\u3057\u3048\u3044", "\u3057\u304A\u3051", "\u3057\u304B\u3044", "\u3057\u304B\u304F", "\u3057\u3099\u304B\u3093", "\u3057\u3053\u3099\u3068", "\u3057\u3059\u3046", "\u3057\u3099\u305F\u3099\u3044", "\u3057\u305F\u3046\u3051", "\u3057\u305F\u304D\u3099", "\u3057\u305F\u3066", "\u3057\u305F\u307F", "\u3057\u3061\u3087\u3046", "\u3057\u3061\u308A\u3093", "\u3057\u3063\u304B\u308A", "\u3057\u3064\u3057\u3099", "\u3057\u3064\u3082\u3093", "\u3057\u3066\u3044", "\u3057\u3066\u304D", "\u3057\u3066\u3064", "\u3057\u3099\u3066\u3093", "\u3057\u3099\u3068\u3099\u3046", "\u3057\u306A\u304D\u3099\u308C", "\u3057\u306A\u3082\u306E", "\u3057\u306A\u3093", "\u3057\u306D\u307E", "\u3057\u306D\u3093", "\u3057\u306E\u304F\u3099", "\u3057\u306E\u3075\u3099", "\u3057\u306F\u3044", "\u3057\u306F\u3099\u304B\u308A", "\u3057\u306F\u3064", "\u3057\u306F\u3089\u3044", "\u3057\u306F\u3093", "\u3057\u3072\u3087\u3046", "\u3057\u3075\u304F", "\u3057\u3099\u3075\u3099\u3093", "\u3057\u3078\u3044", "\u3057\u307B\u3046", "\u3057\u307B\u3093", "\u3057\u307E\u3046", "\u3057\u307E\u308B", "\u3057\u307F\u3093", "\u3057\u3080\u3051\u308B", "\u3057\u3099\u3080\u3057\u3087", "\u3057\u3081\u3044", "\u3057\u3081\u308B", "\u3057\u3082\u3093", "\u3057\u3083\u3044\u3093", "\u3057\u3083\u3046\u3093", "\u3057\u3083\u304A\u3093", "\u3057\u3099\u3083\u304B\u3099\u3044\u3082", "\u3057\u3084\u304F\u3057\u3087", "\u3057\u3083\u304F\u307B\u3046", "\u3057\u3083\u3051\u3093", "\u3057\u3083\u3053", "\u3057\u3083\u3055\u3099\u3044", "\u3057\u3083\u3057\u3093", "\u3057\u3083\u305B\u3093", "\u3057\u3083\u305D\u3046", "\u3057\u3083\u305F\u3044", "\u3057\u3083\u3061\u3087\u3046", "\u3057\u3083\u3063\u304D\u3093", "\u3057\u3099\u3083\u307E", "\u3057\u3083\u308A\u3093", "\u3057\u3083\u308C\u3044", "\u3057\u3099\u3086\u3046", "\u3057\u3099\u3085\u3046\u3057\u3087", "\u3057\u3085\u304F\u306F\u304F", "\u3057\u3099\u3085\u3057\u3093", "\u3057\u3085\u3063\u305B\u304D", "\u3057\u3085\u307F", "\u3057\u3085\u3089\u306F\u3099", "\u3057\u3099\u3085\u3093\u306F\u3099\u3093", "\u3057\u3087\u3046\u304B\u3044", "\u3057\u3087\u304F\u305F\u304F", "\u3057\u3087\u3063\u3051\u3093", "\u3057\u3087\u3068\u3099\u3046", "\u3057\u3087\u3082\u3064", "\u3057\u3089\u305B\u308B", "\u3057\u3089\u3078\u3099\u308B", "\u3057\u3093\u304B", "\u3057\u3093\u3053\u3046", "\u3057\u3099\u3093\u3057\u3099\u3083", "\u3057\u3093\u305B\u3044\u3057\u3099", "\u3057\u3093\u3061\u304F", "\u3057\u3093\u308A\u3093", "\u3059\u3042\u3051\u3099", "\u3059\u3042\u3057", "\u3059\u3042\u306A", "\u3059\u3099\u3042\u3093", "\u3059\u3044\u3048\u3044", "\u3059\u3044\u304B", "\u3059\u3044\u3068\u3046", "\u3059\u3099\u3044\u3075\u3099\u3093", "\u3059\u3044\u3088\u3046\u3072\u3099", "\u3059\u3046\u304B\u3099\u304F", "\u3059\u3046\u3057\u3099\u3064", "\u3059\u3046\u305B\u3093", "\u3059\u304A\u3068\u3099\u308A", "\u3059\u304D\u307E", "\u3059\u304F\u3046", "\u3059\u304F\u306A\u3044", "\u3059\u3051\u308B", "\u3059\u3053\u3099\u3044", "\u3059\u3053\u3057", "\u3059\u3099\u3055\u3093", "\u3059\u3059\u3099\u3057\u3044", "\u3059\u3059\u3080", "\u3059\u3059\u3081\u308B", "\u3059\u3063\u304B\u308A", "\u3059\u3099\u3063\u3057\u308A", "\u3059\u3099\u3063\u3068", "\u3059\u3066\u304D", "\u3059\u3066\u308B", "\u3059\u306D\u308B", "\u3059\u306E\u3053", "\u3059\u306F\u305F\u3099", "\u3059\u306F\u3099\u3089\u3057\u3044", "\u3059\u3099\u3072\u3087\u3046", "\u3059\u3099\u3075\u3099\u306C\u308C", "\u3059\u3075\u3099\u308A", "\u3059\u3075\u308C", "\u3059\u3078\u3099\u3066", "\u3059\u3078\u3099\u308B", "\u3059\u3099\u307B\u3046", "\u3059\u307B\u3099\u3093", "\u3059\u307E\u3044", "\u3059\u3081\u3057", "\u3059\u3082\u3046", "\u3059\u3084\u304D", "\u3059\u3089\u3059\u3089", "\u3059\u308B\u3081", "\u3059\u308C\u3061\u304B\u3099\u3046", "\u3059\u308D\u3063\u3068", "\u3059\u308F\u308B", "\u3059\u3093\u305B\u3099\u3093", "\u3059\u3093\u307B\u309A\u3046", "\u305B\u3042\u3075\u3099\u3089", "\u305B\u3044\u304B\u3064", "\u305B\u3044\u3051\u3099\u3093", "\u305B\u3044\u3057\u3099", "\u305B\u3044\u3088\u3046", "\u305B\u304A\u3046", "\u305B\u304B\u3044\u304B\u3093", "\u305B\u304D\u306B\u3093", "\u305B\u304D\u3080", "\u305B\u304D\u3086", "\u305B\u304D\u3089\u3093\u3046\u3093", "\u305B\u3051\u3093", "\u305B\u3053\u3046", "\u305B\u3059\u3057\u3099", "\u305B\u305F\u3044", "\u305B\u305F\u3051", "\u305B\u3063\u304B\u304F", "\u305B\u3063\u304D\u3083\u304F", "\u305B\u3099\u3063\u304F", "\u305B\u3063\u3051\u3093", "\u305B\u3063\u3053\u3064", "\u305B\u3063\u3055\u305F\u304F\u307E", "\u305B\u3064\u305D\u3099\u304F", "\u305B\u3064\u305F\u3099\u3093", "\u305B\u3064\u3066\u3099\u3093", "\u305B\u3063\u306F\u309A\u3093", "\u305B\u3064\u3072\u3099", "\u305B\u3064\u3075\u3099\u3093", "\u305B\u3064\u3081\u3044", "\u305B\u3064\u308A\u3064", "\u305B\u306A\u304B", "\u305B\u306E\u3072\u3099", "\u305B\u306F\u306F\u3099", "\u305B\u3072\u3099\u308D", "\u305B\u307B\u3099\u306D", "\u305B\u307E\u3044", "\u305B\u307E\u308B", "\u305B\u3081\u308B", "\u305B\u3082\u305F\u308C", "\u305B\u308A\u3075", "\u305B\u3099\u3093\u3042\u304F", "\u305B\u3093\u3044", "\u305B\u3093\u3048\u3044", "\u305B\u3093\u304B", "\u305B\u3093\u304D\u3087", "\u305B\u3093\u304F", "\u305B\u3093\u3051\u3099\u3093", "\u305B\u3099\u3093\u3053\u3099", "\u305B\u3093\u3055\u3044", "\u305B\u3093\u3057\u3085", "\u305B\u3093\u3059\u3044", "\u305B\u3093\u305B\u3044", "\u305B\u3093\u305D\u3099", "\u305B\u3093\u305F\u304F", "\u305B\u3093\u3061\u3087\u3046", "\u305B\u3093\u3066\u3044", "\u305B\u3093\u3068\u3046", "\u305B\u3093\u306C\u304D", "\u305B\u3093\u306D\u3093", "\u305B\u3093\u306F\u309A\u3044", "\u305B\u3099\u3093\u3075\u3099", "\u305B\u3099\u3093\u307B\u309A\u3046", "\u305B\u3093\u3080", "\u305B\u3093\u3081\u3093\u3057\u3099\u3087", "\u305B\u3093\u3082\u3093", "\u305B\u3093\u3084\u304F", "\u305B\u3093\u3086\u3046", "\u305B\u3093\u3088\u3046", "\u305B\u3099\u3093\u3089", "\u305B\u3099\u3093\u308A\u3083\u304F", "\u305B\u3093\u308C\u3044", "\u305B\u3093\u308D", "\u305D\u3042\u304F", "\u305D\u3044\u3068\u3051\u3099\u308B", "\u305D\u3044\u306D", "\u305D\u3046\u304B\u3099\u3093\u304D\u3087\u3046", "\u305D\u3046\u304D", "\u305D\u3046\u3053\u3099", "\u305D\u3046\u3057\u3093", "\u305D\u3046\u305F\u3099\u3093", "\u305D\u3046\u306A\u3093", "\u305D\u3046\u3072\u3099", "\u305D\u3046\u3081\u3093", "\u305D\u3046\u308A", "\u305D\u3048\u3082\u306E", "\u305D\u3048\u3093", "\u305D\u304B\u3099\u3044", "\u305D\u3051\u3099\u304D", "\u305D\u3053\u3046", "\u305D\u3053\u305D\u3053", "\u305D\u3055\u3099\u3044", "\u305D\u3057\u306A", "\u305D\u305B\u3044", "\u305D\u305B\u3093", "\u305D\u305D\u304F\u3099", "\u305D\u305F\u3099\u3066\u308B", "\u305D\u3064\u3046", "\u305D\u3064\u3048\u3093", "\u305D\u3063\u304B\u3093", "\u305D\u3064\u304D\u3099\u3087\u3046", "\u305D\u3063\u3051\u3064", "\u305D\u3063\u3053\u3046", "\u305D\u3063\u305B\u3093", "\u305D\u3063\u3068", "\u305D\u3068\u304B\u3099\u308F", "\u305D\u3068\u3064\u3099\u3089", "\u305D\u306A\u3048\u308B", "\u305D\u306A\u305F", "\u305D\u3075\u307B\u3099", "\u305D\u307B\u3099\u304F", "\u305D\u307B\u3099\u308D", "\u305D\u307E\u3064", "\u305D\u307E\u308B", "\u305D\u3080\u304F", "\u305D\u3080\u308A\u3048", "\u305D\u3081\u308B", "\u305D\u3082\u305D\u3082", "\u305D\u3088\u304B\u305B\u3099", "\u305D\u3089\u307E\u3081", "\u305D\u308D\u3046", "\u305D\u3093\u304B\u3044", "\u305D\u3093\u3051\u3044", "\u305D\u3093\u3055\u3099\u3044", "\u305D\u3093\u3057\u3064", "\u305D\u3093\u305D\u3099\u304F", "\u305D\u3093\u3061\u3087\u3046", "\u305D\u3099\u3093\u3072\u3099", "\u305D\u3099\u3093\u3075\u3099\u3093", "\u305D\u3093\u307F\u3093", "\u305F\u3042\u3044", "\u305F\u3044\u3044\u3093", "\u305F\u3044\u3046\u3093", "\u305F\u3044\u3048\u304D", "\u305F\u3044\u304A\u3046", "\u305F\u3099\u3044\u304B\u3099\u304F", "\u305F\u3044\u304D", "\u305F\u3044\u304F\u3099\u3046", "\u305F\u3044\u3051\u3093", "\u305F\u3044\u3053", "\u305F\u3044\u3055\u3099\u3044", "\u305F\u3099\u3044\u3057\u3099\u3087\u3046\u3075\u3099", "\u305F\u3099\u3044\u3059\u304D", "\u305F\u3044\u305B\u3064", "\u305F\u3044\u305D\u3046", "\u305F\u3099\u3044\u305F\u3044", "\u305F\u3044\u3061\u3087\u3046", "\u305F\u3044\u3066\u3044", "\u305F\u3099\u3044\u3068\u3099\u3053\u308D", "\u305F\u3044\u306A\u3044", "\u305F\u3044\u306D\u3064", "\u305F\u3044\u306E\u3046", "\u305F\u3044\u306F\u3093", "\u305F\u3099\u3044\u3072\u3087\u3046", "\u305F\u3044\u3075\u3046", "\u305F\u3044\u3078\u3093", "\u305F\u3044\u307B", "\u305F\u3044\u307E\u3064\u306F\u3099\u306A", "\u305F\u3044\u307F\u3093\u304F\u3099", "\u305F\u3044\u3080", "\u305F\u3044\u3081\u3093", "\u305F\u3044\u3084\u304D", "\u305F\u3044\u3088\u3046", "\u305F\u3044\u3089", "\u305F\u3044\u308A\u3087\u304F", "\u305F\u3044\u308B", "\u305F\u3044\u308F\u3093", "\u305F\u3046\u3048", "\u305F\u3048\u308B", "\u305F\u304A\u3059", "\u305F\u304A\u308B", "\u305F\u304A\u308C\u308B", "\u305F\u304B\u3044", "\u305F\u304B\u306D", "\u305F\u304D\u3072\u3099", "\u305F\u304F\u3055\u3093", "\u305F\u3053\u304F", "\u305F\u3053\u3084\u304D", "\u305F\u3055\u3044", "\u305F\u3057\u3055\u3099\u3093", "\u305F\u3099\u3057\u3099\u3083\u308C", "\u305F\u3059\u3051\u308B", "\u305F\u3059\u3099\u3055\u308F\u308B", "\u305F\u305D\u304B\u3099\u308C", "\u305F\u305F\u304B\u3046", "\u305F\u305F\u304F", "\u305F\u305F\u3099\u3057\u3044", "\u305F\u305F\u307F", "\u305F\u3061\u306F\u3099\u306A", "\u305F\u3099\u3063\u304B\u3044", "\u305F\u3099\u3063\u304D\u3083\u304F", "\u305F\u3099\u3063\u3053", "\u305F\u3099\u3063\u3057\u3085\u3064", "\u305F\u3099\u3063\u305F\u3044", "\u305F\u3066\u308B", "\u305F\u3068\u3048\u308B", "\u305F\u306A\u306F\u3099\u305F", "\u305F\u306B\u3093", "\u305F\u306C\u304D", "\u305F\u306E\u3057\u307F", "\u305F\u306F\u3064", "\u305F\u3075\u3099\u3093", "\u305F\u3078\u3099\u308B", "\u305F\u307B\u3099\u3046", "\u305F\u307E\u3053\u3099", "\u305F\u307E\u308B", "\u305F\u3099\u3080\u308B", "\u305F\u3081\u3044\u304D", "\u305F\u3081\u3059", "\u305F\u3081\u308B", "\u305F\u3082\u3064", "\u305F\u3084\u3059\u3044", "\u305F\u3088\u308B", "\u305F\u3089\u3059", "\u305F\u308A\u304D\u307B\u3093\u304B\u3099\u3093", "\u305F\u308A\u3087\u3046", "\u305F\u308A\u308B", "\u305F\u308B\u3068", "\u305F\u308C\u308B", "\u305F\u308C\u3093\u3068", "\u305F\u308D\u3063\u3068", "\u305F\u308F\u3080\u308C\u308B", "\u305F\u3099\u3093\u3042\u3064", "\u305F\u3093\u3044", "\u305F\u3093\u304A\u3093", "\u305F\u3093\u304B", "\u305F\u3093\u304D", "\u305F\u3093\u3051\u3093", "\u305F\u3093\u3053\u3099", "\u305F\u3093\u3055\u3093", "\u305F\u3093\u3057\u3099\u3087\u3046\u3072\u3099", "\u305F\u3099\u3093\u305B\u3044", "\u305F\u3093\u305D\u304F", "\u305F\u3093\u305F\u3044", "\u305F\u3099\u3093\u3061", "\u305F\u3093\u3066\u3044", "\u305F\u3093\u3068\u3046", "\u305F\u3099\u3093\u306A", "\u305F\u3093\u306B\u3093", "\u305F\u3099\u3093\u306D\u3064", "\u305F\u3093\u306E\u3046", "\u305F\u3093\u3072\u309A\u3093", "\u305F\u3099\u3093\u307B\u3099\u3046", "\u305F\u3093\u307E\u3064", "\u305F\u3093\u3081\u3044", "\u305F\u3099\u3093\u308C\u3064", "\u305F\u3099\u3093\u308D", "\u305F\u3099\u3093\u308F", "\u3061\u3042\u3044", "\u3061\u3042\u3093", "\u3061\u3044\u304D", "\u3061\u3044\u3055\u3044", "\u3061\u3048\u3093", "\u3061\u304B\u3044", "\u3061\u304B\u3089", "\u3061\u304D\u3085\u3046", "\u3061\u304D\u3093", "\u3061\u3051\u3044\u3059\u3099", "\u3061\u3051\u3093", "\u3061\u3053\u304F", "\u3061\u3055\u3044", "\u3061\u3057\u304D", "\u3061\u3057\u308A\u3087\u3046", "\u3061\u305B\u3044", "\u3061\u305D\u3046", "\u3061\u305F\u3044", "\u3061\u305F\u3093", "\u3061\u3061\u304A\u3084", "\u3061\u3064\u3057\u3099\u3087", "\u3061\u3066\u304D", "\u3061\u3066\u3093", "\u3061\u306C\u304D", "\u3061\u306C\u308A", "\u3061\u306E\u3046", "\u3061\u3072\u3087\u3046", "\u3061\u3078\u3044\u305B\u3093", "\u3061\u307B\u3046", "\u3061\u307E\u305F", "\u3061\u307F\u3064", "\u3061\u307F\u3068\u3099\u308D", "\u3061\u3081\u3044\u3068\u3099", "\u3061\u3083\u3093\u3053\u306A\u3078\u3099", "\u3061\u3085\u3046\u3044", "\u3061\u3086\u308A\u3087\u304F", "\u3061\u3087\u3046\u3057", "\u3061\u3087\u3055\u304F\u3051\u3093", "\u3061\u3089\u3057", "\u3061\u3089\u307F", "\u3061\u308A\u304B\u3099\u307F", "\u3061\u308A\u3087\u3046", "\u3061\u308B\u3068\u3099", "\u3061\u308F\u308F", "\u3061\u3093\u305F\u3044", "\u3061\u3093\u3082\u304F", "\u3064\u3044\u304B", "\u3064\u3044\u305F\u3061", "\u3064\u3046\u304B", "\u3064\u3046\u3057\u3099\u3087\u3046", "\u3064\u3046\u306F\u3093", "\u3064\u3046\u308F", "\u3064\u304B\u3046", "\u3064\u304B\u308C\u308B", "\u3064\u304F\u306D", "\u3064\u304F\u308B", "\u3064\u3051\u306D", "\u3064\u3051\u308B", "\u3064\u3053\u3099\u3046", "\u3064\u305F\u3048\u308B", "\u3064\u3064\u3099\u304F", "\u3064\u3064\u3057\u3099", "\u3064\u3064\u3080", "\u3064\u3068\u3081\u308B", "\u3064\u306A\u304B\u3099\u308B", "\u3064\u306A\u307F", "\u3064\u306D\u3064\u3099\u306D", "\u3064\u306E\u308B", "\u3064\u3075\u3099\u3059", "\u3064\u307E\u3089\u306A\u3044", "\u3064\u307E\u308B", "\u3064\u307F\u304D", "\u3064\u3081\u305F\u3044", "\u3064\u3082\u308A", "\u3064\u3082\u308B", "\u3064\u3088\u3044", "\u3064\u308B\u307B\u3099", "\u3064\u308B\u307F\u304F", "\u3064\u308F\u3082\u306E", "\u3064\u308F\u308A", "\u3066\u3042\u3057", "\u3066\u3042\u3066", "\u3066\u3042\u307F", "\u3066\u3044\u304A\u3093", "\u3066\u3044\u304B", "\u3066\u3044\u304D", "\u3066\u3044\u3051\u3044", "\u3066\u3044\u3053\u304F", "\u3066\u3044\u3055\u3064", "\u3066\u3044\u3057", "\u3066\u3044\u305B\u3044", "\u3066\u3044\u305F\u3044", "\u3066\u3044\u3068\u3099", "\u3066\u3044\u306D\u3044", "\u3066\u3044\u3072\u3087\u3046", "\u3066\u3044\u3078\u3093", "\u3066\u3044\u307B\u3099\u3046", "\u3066\u3046\u3061", "\u3066\u304A\u304F\u308C", "\u3066\u304D\u3068\u3046", "\u3066\u304F\u3072\u3099", "\u3066\u3099\u3053\u307B\u3099\u3053", "\u3066\u3055\u304D\u3099\u3087\u3046", "\u3066\u3055\u3051\u3099", "\u3066\u3059\u308A", "\u3066\u305D\u3046", "\u3066\u3061\u304B\u3099\u3044", "\u3066\u3061\u3087\u3046", "\u3066\u3064\u304B\u3099\u304F", "\u3066\u3064\u3064\u3099\u304D", "\u3066\u3099\u3063\u306F\u309A", "\u3066\u3064\u307B\u3099\u3046", "\u3066\u3064\u3084", "\u3066\u3099\u306C\u304B\u3048", "\u3066\u306C\u304D", "\u3066\u306C\u304F\u3099\u3044", "\u3066\u306E\u3072\u3089", "\u3066\u306F\u3044", "\u3066\u3075\u3099\u304F\u308D", "\u3066\u3075\u305F\u3099", "\u3066\u307B\u3068\u3099\u304D", "\u3066\u307B\u3093", "\u3066\u307E\u3048", "\u3066\u307E\u304D\u3059\u3099\u3057", "\u3066\u307F\u3057\u3099\u304B", "\u3066\u307F\u3084\u3051\u3099", "\u3066\u3089\u3059", "\u3066\u308C\u3072\u3099", "\u3066\u308F\u3051", "\u3066\u308F\u305F\u3057", "\u3066\u3099\u3093\u3042\u3064", "\u3066\u3093\u3044\u3093", "\u3066\u3093\u304B\u3044", "\u3066\u3093\u304D", "\u3066\u3093\u304F\u3099", "\u3066\u3093\u3051\u3093", "\u3066\u3093\u3053\u3099\u304F", "\u3066\u3093\u3055\u3044", "\u3066\u3093\u3057", "\u3066\u3093\u3059\u3046", "\u3066\u3099\u3093\u3061", "\u3066\u3093\u3066\u304D", "\u3066\u3093\u3068\u3046", "\u3066\u3093\u306A\u3044", "\u3066\u3093\u3075\u309A\u3089", "\u3066\u3093\u307B\u3099\u3046\u305F\u3099\u3044", "\u3066\u3093\u3081\u3064", "\u3066\u3093\u3089\u3093\u304B\u3044", "\u3066\u3099\u3093\u308A\u3087\u304F", "\u3066\u3099\u3093\u308F", "\u3068\u3099\u3042\u3044", "\u3068\u3044\u308C", "\u3068\u3099\u3046\u304B\u3093", "\u3068\u3046\u304D\u3085\u3046", "\u3068\u3099\u3046\u304F\u3099", "\u3068\u3046\u3057", "\u3068\u3046\u3080\u304D\u3099", "\u3068\u304A\u3044", "\u3068\u304A\u304B", "\u3068\u304A\u304F", "\u3068\u304A\u3059", "\u3068\u304A\u308B", "\u3068\u304B\u3044", "\u3068\u304B\u3059", "\u3068\u304D\u304A\u308A", "\u3068\u304D\u3068\u3099\u304D", "\u3068\u304F\u3044", "\u3068\u304F\u3057\u3085\u3046", "\u3068\u304F\u3066\u3093", "\u3068\u304F\u306B", "\u3068\u304F\u3078\u3099\u3064", "\u3068\u3051\u3044", "\u3068\u3051\u308B", "\u3068\u3053\u3084", "\u3068\u3055\u304B", "\u3068\u3057\u3087\u304B\u3093", "\u3068\u305D\u3046", "\u3068\u305F\u3093", "\u3068\u3061\u3085\u3046", "\u3068\u3063\u304D\u3085\u3046", "\u3068\u3063\u304F\u3093", "\u3068\u3064\u305B\u3099\u3093", "\u3068\u3064\u306B\u3085\u3046", "\u3068\u3068\u3099\u3051\u308B", "\u3068\u3068\u306E\u3048\u308B", "\u3068\u306A\u3044", "\u3068\u306A\u3048\u308B", "\u3068\u306A\u308A", "\u3068\u306E\u3055\u307E", "\u3068\u306F\u3099\u3059", "\u3068\u3099\u3075\u3099\u304B\u3099\u308F", "\u3068\u307B\u3046", "\u3068\u307E\u308B", "\u3068\u3081\u308B", "\u3068\u3082\u305F\u3099\u3061", "\u3068\u3082\u308B", "\u3068\u3099\u3088\u3046\u3072\u3099", "\u3068\u3089\u3048\u308B", "\u3068\u3093\u304B\u3064", "\u3068\u3099\u3093\u3075\u3099\u308A", "\u306A\u3044\u304B\u304F", "\u306A\u3044\u3053\u3046", "\u306A\u3044\u3057\u3087", "\u306A\u3044\u3059", "\u306A\u3044\u305B\u3093", "\u306A\u3044\u305D\u3046", "\u306A\u304A\u3059", "\u306A\u304B\u3099\u3044", "\u306A\u304F\u3059", "\u306A\u3051\u3099\u308B", "\u306A\u3053\u3046\u3068\u3099", "\u306A\u3055\u3051", "\u306A\u305F\u3066\u3099\u3053\u3053", "\u306A\u3063\u3068\u3046", "\u306A\u3064\u3084\u3059\u307F", "\u306A\u306A\u304A\u3057", "\u306A\u306B\u3053\u3099\u3068", "\u306A\u306B\u3082\u306E", "\u306A\u306B\u308F", "\u306A\u306E\u304B", "\u306A\u3075\u305F\u3099", "\u306A\u307E\u3044\u304D", "\u306A\u307E\u3048", "\u306A\u307E\u307F", "\u306A\u307F\u305F\u3099", "\u306A\u3081\u3089\u304B", "\u306A\u3081\u308B", "\u306A\u3084\u3080", "\u306A\u3089\u3046", "\u306A\u3089\u3072\u3099", "\u306A\u3089\u3075\u3099", "\u306A\u308C\u308B", "\u306A\u308F\u3068\u3072\u3099", "\u306A\u308F\u306F\u3099\u308A", "\u306B\u3042\u3046", "\u306B\u3044\u304B\u3099\u305F", "\u306B\u3046\u3051", "\u306B\u304A\u3044", "\u306B\u304B\u3044", "\u306B\u304B\u3099\u3066", "\u306B\u304D\u3072\u3099", "\u306B\u304F\u3057\u307F", "\u306B\u304F\u307E\u3093", "\u306B\u3051\u3099\u308B", "\u306B\u3055\u3093\u304B\u305F\u3093\u305D", "\u306B\u3057\u304D", "\u306B\u305B\u3082\u306E", "\u306B\u3061\u3057\u3099\u3087\u3046", "\u306B\u3061\u3088\u3046\u3072\u3099", "\u306B\u3063\u304B", "\u306B\u3063\u304D", "\u306B\u3063\u3051\u3044", "\u306B\u3063\u3053\u3046", "\u306B\u3063\u3055\u3093", "\u306B\u3063\u3057\u3087\u304F", "\u306B\u3063\u3059\u3046", "\u306B\u3063\u305B\u304D", "\u306B\u3063\u3066\u3044", "\u306B\u306A\u3046", "\u306B\u307B\u3093", "\u306B\u307E\u3081", "\u306B\u3082\u3064", "\u306B\u3084\u308A", "\u306B\u3085\u3046\u3044\u3093", "\u306B\u308A\u3093\u3057\u3083", "\u306B\u308F\u3068\u308A", "\u306B\u3093\u3044", "\u306B\u3093\u304B", "\u306B\u3093\u304D", "\u306B\u3093\u3051\u3099\u3093", "\u306B\u3093\u3057\u304D", "\u306B\u3093\u3059\u3099\u3046", "\u306B\u3093\u305D\u3046", "\u306B\u3093\u305F\u3044", "\u306B\u3093\u3061", "\u306B\u3093\u3066\u3044", "\u306B\u3093\u306B\u304F", "\u306B\u3093\u3075\u309A", "\u306B\u3093\u307E\u308A", "\u306B\u3093\u3080", "\u306B\u3093\u3081\u3044", "\u306B\u3093\u3088\u3046", "\u306C\u3044\u304F\u304D\u3099", "\u306C\u304B\u3059", "\u306C\u304F\u3099\u3044\u3068\u308B", "\u306C\u304F\u3099\u3046", "\u306C\u304F\u3082\u308A", "\u306C\u3059\u3080", "\u306C\u307E\u3048\u3072\u3099", "\u306C\u3081\u308A", "\u306C\u3089\u3059", "\u306C\u3093\u3061\u3083\u304F", "\u306D\u3042\u3051\u3099", "\u306D\u3044\u304D", "\u306D\u3044\u308B", "\u306D\u3044\u308D", "\u306D\u304F\u3099\u305B", "\u306D\u304F\u305F\u3044", "\u306D\u304F\u3089", "\u306D\u3053\u305B\u3099", "\u306D\u3053\u3080", "\u306D\u3055\u3051\u3099", "\u306D\u3059\u3053\u3099\u3059", "\u306D\u305D\u3078\u3099\u308B", "\u306D\u305F\u3099\u3093", "\u306D\u3064\u3044", "\u306D\u3063\u3057\u3093", "\u306D\u3064\u305D\u3099\u3046", "\u306D\u3063\u305F\u3044\u304D\u3099\u3087", "\u306D\u3075\u3099\u305D\u304F", "\u306D\u3075\u305F\u3099", "\u306D\u307B\u3099\u3046", "\u306D\u307B\u308A\u306F\u307B\u308A", "\u306D\u307E\u304D", "\u306D\u307E\u308F\u3057", "\u306D\u307F\u307F", "\u306D\u3080\u3044", "\u306D\u3080\u305F\u3044", "\u306D\u3082\u3068", "\u306D\u3089\u3046", "\u306D\u308F\u3055\u3099", "\u306D\u3093\u3044\u308A", "\u306D\u3093\u304A\u3057", "\u306D\u3093\u304B\u3093", "\u306D\u3093\u304D\u3093", "\u306D\u3093\u304F\u3099", "\u306D\u3093\u3055\u3099", "\u306D\u3093\u3057", "\u306D\u3093\u3061\u3083\u304F", "\u306D\u3093\u3068\u3099", "\u306D\u3093\u3072\u309A", "\u306D\u3093\u3075\u3099\u3064", "\u306D\u3093\u307E\u3064", "\u306D\u3093\u308A\u3087\u3046", "\u306D\u3093\u308C\u3044", "\u306E\u3044\u3059\u3099", "\u306E\u304A\u3064\u3099\u307E", "\u306E\u304B\u3099\u3059", "\u306E\u304D\u306A\u307F", "\u306E\u3053\u304D\u3099\u308A", "\u306E\u3053\u3059", "\u306E\u3053\u308B", "\u306E\u305B\u308B", "\u306E\u305D\u3099\u304F", "\u306E\u305D\u3099\u3080", "\u306E\u305F\u307E\u3046", "\u306E\u3061\u307B\u3068\u3099", "\u306E\u3063\u304F", "\u306E\u306F\u3099\u3059", "\u306E\u306F\u3089", "\u306E\u3078\u3099\u308B", "\u306E\u307B\u3099\u308B", "\u306E\u307F\u3082\u306E", "\u306E\u3084\u307E", "\u306E\u3089\u3044\u306C", "\u306E\u3089\u306D\u3053", "\u306E\u308A\u3082\u306E", "\u306E\u308A\u3086\u304D", "\u306E\u308C\u3093", "\u306E\u3093\u304D", "\u306F\u3099\u3042\u3044", "\u306F\u3042\u304F", "\u306F\u3099\u3042\u3055\u3093", "\u306F\u3099\u3044\u304B", "\u306F\u3099\u3044\u304F", "\u306F\u3044\u3051\u3093", "\u306F\u3044\u3053\u3099", "\u306F\u3044\u3057\u3093", "\u306F\u3044\u3059\u3044", "\u306F\u3044\u305B\u3093", "\u306F\u3044\u305D\u3046", "\u306F\u3044\u3061", "\u306F\u3099\u3044\u306F\u3099\u3044", "\u306F\u3044\u308C\u3064", "\u306F\u3048\u308B", "\u306F\u304A\u308B", "\u306F\u304B\u3044", "\u306F\u3099\u304B\u308A", "\u306F\u304B\u308B", "\u306F\u304F\u3057\u3085", "\u306F\u3051\u3093", "\u306F\u3053\u3075\u3099", "\u306F\u3055\u307F", "\u306F\u3055\u3093", "\u306F\u3057\u3053\u3099", "\u306F\u3099\u3057\u3087", "\u306F\u3057\u308B", "\u306F\u305B\u308B", "\u306F\u309A\u305D\u3053\u3093", "\u306F\u305D\u3093", "\u306F\u305F\u3093", "\u306F\u3061\u307F\u3064", "\u306F\u3064\u304A\u3093", "\u306F\u3063\u304B\u304F", "\u306F\u3064\u3099\u304D", "\u306F\u3063\u304D\u308A", "\u306F\u3063\u304F\u3064", "\u306F\u3063\u3051\u3093", "\u306F\u3063\u3053\u3046", "\u306F\u3063\u3055\u3093", "\u306F\u3063\u3057\u3093", "\u306F\u3063\u305F\u3064", "\u306F\u3063\u3061\u3085\u3046", "\u306F\u3063\u3066\u3093", "\u306F\u3063\u3072\u309A\u3087\u3046", "\u306F\u3063\u307B\u309A\u3046", "\u306F\u306A\u3059", "\u306F\u306A\u3072\u3099", "\u306F\u306B\u304B\u3080", "\u306F\u3075\u3099\u3089\u3057", "\u306F\u307F\u304B\u3099\u304D", "\u306F\u3080\u304B\u3046", "\u306F\u3081\u3064", "\u306F\u3084\u3044", "\u306F\u3084\u3057", "\u306F\u3089\u3046", "\u306F\u308D\u3046\u3043\u3093", "\u306F\u308F\u3044", "\u306F\u3093\u3044", "\u306F\u3093\u3048\u3044", "\u306F\u3093\u304A\u3093", "\u306F\u3093\u304B\u304F", "\u306F\u3093\u304D\u3087\u3046", "\u306F\u3099\u3093\u304F\u3099\u307F", "\u306F\u3093\u3053", "\u306F\u3093\u3057\u3083", "\u306F\u3093\u3059\u3046", "\u306F\u3093\u305F\u3099\u3093", "\u306F\u309A\u3093\u3061", "\u306F\u309A\u3093\u3064", "\u306F\u3093\u3066\u3044", "\u306F\u3093\u3068\u3057", "\u306F\u3093\u306E\u3046", "\u306F\u3093\u306F\u309A", "\u306F\u3093\u3075\u3099\u3093", "\u306F\u3093\u3078\u309A\u3093", "\u306F\u3093\u307B\u3099\u3046\u304D", "\u306F\u3093\u3081\u3044", "\u306F\u3093\u3089\u3093", "\u306F\u3093\u308D\u3093", "\u3072\u3044\u304D", "\u3072\u3046\u3093", "\u3072\u3048\u308B", "\u3072\u304B\u304F", "\u3072\u304B\u308A", "\u3072\u304B\u308B", "\u3072\u304B\u3093", "\u3072\u304F\u3044", "\u3072\u3051\u3064", "\u3072\u3053\u3046\u304D", "\u3072\u3053\u304F", "\u3072\u3055\u3044", "\u3072\u3055\u3057\u3075\u3099\u308A", "\u3072\u3055\u3093", "\u3072\u3099\u3057\u3099\u3085\u3064\u304B\u3093", "\u3072\u3057\u3087", "\u3072\u305D\u304B", "\u3072\u305D\u3080", "\u3072\u305F\u3080\u304D", "\u3072\u305F\u3099\u308A", "\u3072\u305F\u308B", "\u3072\u3064\u304D\u3099", "\u3072\u3063\u3053\u3057", "\u3072\u3063\u3057", "\u3072\u3064\u3057\u3099\u3085\u3072\u3093", "\u3072\u3063\u3059", "\u3072\u3064\u305B\u3099\u3093", "\u3072\u309A\u3063\u305F\u308A", "\u3072\u309A\u3063\u3061\u308A", "\u3072\u3064\u3088\u3046", "\u3072\u3066\u3044", "\u3072\u3068\u3053\u3099\u307F", "\u3072\u306A\u307E\u3064\u308A", "\u3072\u306A\u3093", "\u3072\u306D\u308B", "\u3072\u306F\u3093", "\u3072\u3072\u3099\u304F", "\u3072\u3072\u3087\u3046", "\u3072\u307B\u3046", "\u3072\u307E\u308F\u308A", "\u3072\u307E\u3093", "\u3072\u307F\u3064", "\u3072\u3081\u3044", "\u3072\u3081\u3057\u3099\u3057", "\u3072\u3084\u3051", "\u3072\u3084\u3059", "\u3072\u3088\u3046", "\u3072\u3099\u3087\u3046\u304D", "\u3072\u3089\u304B\u3099\u306A", "\u3072\u3089\u304F", "\u3072\u308A\u3064", "\u3072\u308A\u3087\u3046", "\u3072\u308B\u307E", "\u3072\u308B\u3084\u3059\u307F", "\u3072\u308C\u3044", "\u3072\u308D\u3044", "\u3072\u308D\u3046", "\u3072\u308D\u304D", "\u3072\u308D\u3086\u304D", "\u3072\u3093\u304B\u304F", "\u3072\u3093\u3051\u3064", "\u3072\u3093\u3053\u3093", "\u3072\u3093\u3057\u3085", "\u3072\u3093\u305D\u3046", "\u3072\u309A\u3093\u3061", "\u3072\u3093\u306F\u309A\u3093", "\u3072\u3099\u3093\u307B\u3099\u3046", "\u3075\u3042\u3093", "\u3075\u3044\u3046\u3061", "\u3075\u3046\u3051\u3044", "\u3075\u3046\u305B\u3093", "\u3075\u309A\u3046\u305F\u308D\u3046", "\u3075\u3046\u3068\u3046", "\u3075\u3046\u3075", "\u3075\u3048\u308B", "\u3075\u304A\u3093", "\u3075\u304B\u3044", "\u3075\u304D\u3093", "\u3075\u304F\u3055\u3099\u3064", "\u3075\u304F\u3075\u3099\u304F\u308D", "\u3075\u3053\u3046", "\u3075\u3055\u3044", "\u3075\u3057\u304D\u3099", "\u3075\u3057\u3099\u307F", "\u3075\u3059\u307E", "\u3075\u305B\u3044", "\u3075\u305B\u304F\u3099", "\u3075\u305D\u304F", "\u3075\u3099\u305F\u306B\u304F", "\u3075\u305F\u3093", "\u3075\u3061\u3087\u3046", "\u3075\u3064\u3046", "\u3075\u3064\u304B", "\u3075\u3063\u304B\u3064", "\u3075\u3063\u304D", "\u3075\u3063\u3053\u304F", "\u3075\u3099\u3068\u3099\u3046", "\u3075\u3068\u308B", "\u3075\u3068\u3093", "\u3075\u306E\u3046", "\u3075\u306F\u3044", "\u3075\u3072\u3087\u3046", "\u3075\u3078\u3093", "\u3075\u307E\u3093", "\u3075\u307F\u3093", "\u3075\u3081\u3064", "\u3075\u3081\u3093", "\u3075\u3088\u3046", "\u3075\u308A\u3053", "\u3075\u308A\u308B", "\u3075\u308B\u3044", "\u3075\u3093\u3044\u304D", "\u3075\u3099\u3093\u304B\u3099\u304F", "\u3075\u3099\u3093\u304F\u3099", "\u3075\u3093\u3057\u3064", "\u3075\u3099\u3093\u305B\u304D", "\u3075\u3093\u305D\u3046", "\u3075\u3099\u3093\u307B\u309A\u3046", "\u3078\u3044\u3042\u3093", "\u3078\u3044\u304A\u3093", "\u3078\u3044\u304B\u3099\u3044", "\u3078\u3044\u304D", "\u3078\u3044\u3051\u3099\u3093", "\u3078\u3044\u3053\u3046", "\u3078\u3044\u3055", "\u3078\u3044\u3057\u3083", "\u3078\u3044\u305B\u3064", "\u3078\u3044\u305D", "\u3078\u3044\u305F\u304F", "\u3078\u3044\u3066\u3093", "\u3078\u3044\u306D\u3064", "\u3078\u3044\u308F", "\u3078\u304D\u304B\u3099", "\u3078\u3053\u3080", "\u3078\u3099\u306B\u3044\u308D", "\u3078\u3099\u306B\u3057\u3087\u3046\u304B\u3099", "\u3078\u3089\u3059", "\u3078\u3093\u304B\u3093", "\u3078\u3099\u3093\u304D\u3087\u3046", "\u3078\u3099\u3093\u3053\u3099\u3057", "\u3078\u3093\u3055\u3044", "\u3078\u3093\u305F\u3044", "\u3078\u3099\u3093\u308A", "\u307B\u3042\u3093", "\u307B\u3044\u304F", "\u307B\u3099\u3046\u304D\u3099\u3087", "\u307B\u3046\u3053\u304F", "\u307B\u3046\u305D\u3046", "\u307B\u3046\u307B\u3046", "\u307B\u3046\u3082\u3093", "\u307B\u3046\u308A\u3064", "\u307B\u3048\u308B", "\u307B\u304A\u3093", "\u307B\u304B\u3093", "\u307B\u304D\u3087\u3046", "\u307B\u3099\u304D\u3093", "\u307B\u304F\u308D", "\u307B\u3051\u3064", "\u307B\u3051\u3093", "\u307B\u3053\u3046", "\u307B\u3053\u308B", "\u307B\u3057\u3044", "\u307B\u3057\u3064", "\u307B\u3057\u3085", "\u307B\u3057\u3087\u3046", "\u307B\u305B\u3044", "\u307B\u305D\u3044", "\u307B\u305D\u304F", "\u307B\u305F\u3066", "\u307B\u305F\u308B", "\u307B\u309A\u3061\u3075\u3099\u304F\u308D", "\u307B\u3063\u304D\u3087\u304F", "\u307B\u3063\u3055", "\u307B\u3063\u305F\u3093", "\u307B\u3068\u3093\u3068\u3099", "\u307B\u3081\u308B", "\u307B\u3093\u3044", "\u307B\u3093\u304D", "\u307B\u3093\u3051", "\u307B\u3093\u3057\u3064", "\u307B\u3093\u3084\u304F", "\u307E\u3044\u306B\u3061", "\u307E\u304B\u3044", "\u307E\u304B\u305B\u308B", "\u307E\u304B\u3099\u308B", "\u307E\u3051\u308B", "\u307E\u3053\u3068", "\u307E\u3055\u3064", "\u307E\u3057\u3099\u3081", "\u307E\u3059\u304F", "\u307E\u305B\u3099\u308B", "\u307E\u3064\u308A", "\u307E\u3068\u3081", "\u307E\u306A\u3075\u3099", "\u307E\u306C\u3051", "\u307E\u306D\u304F", "\u307E\u307B\u3046", "\u307E\u3082\u308B", "\u307E\u3086\u3051\u3099", "\u307E\u3088\u3046", "\u307E\u308D\u3084\u304B", "\u307E\u308F\u3059", "\u307E\u308F\u308A", "\u307E\u308F\u308B", "\u307E\u3093\u304B\u3099", "\u307E\u3093\u304D\u3064", "\u307E\u3093\u305D\u3099\u304F", "\u307E\u3093\u306A\u304B", "\u307F\u3044\u3089", "\u307F\u3046\u3061", "\u307F\u3048\u308B", "\u307F\u304B\u3099\u304F", "\u307F\u304B\u305F", "\u307F\u304B\u3093", "\u307F\u3051\u3093", "\u307F\u3053\u3093", "\u307F\u3057\u3099\u304B\u3044", "\u307F\u3059\u3044", "\u307F\u3059\u3048\u308B", "\u307F\u305B\u308B", "\u307F\u3063\u304B", "\u307F\u3064\u304B\u308B", "\u307F\u3064\u3051\u308B", "\u307F\u3066\u3044", "\u307F\u3068\u3081\u308B", "\u307F\u306A\u3068", "\u307F\u306A\u307F\u304B\u3055\u3044", "\u307F\u306D\u3089\u308B", "\u307F\u306E\u3046", "\u307F\u306E\u304B\u3099\u3059", "\u307F\u307B\u3093", "\u307F\u3082\u3068", "\u307F\u3084\u3051\u3099", "\u307F\u3089\u3044", "\u307F\u308A\u3087\u304F", "\u307F\u308F\u304F", "\u307F\u3093\u304B", "\u307F\u3093\u305D\u3099\u304F", "\u3080\u3044\u304B", "\u3080\u3048\u304D", "\u3080\u3048\u3093", "\u3080\u304B\u3044", "\u3080\u304B\u3046", "\u3080\u304B\u3048", "\u3080\u304B\u3057", "\u3080\u304D\u3099\u3061\u3083", "\u3080\u3051\u308B", "\u3080\u3051\u3099\u3093", "\u3080\u3055\u307B\u3099\u308B", "\u3080\u3057\u3042\u3064\u3044", "\u3080\u3057\u306F\u3099", "\u3080\u3057\u3099\u3085\u3093", "\u3080\u3057\u308D", "\u3080\u3059\u3046", "\u3080\u3059\u3053", "\u3080\u3059\u3075\u3099", "\u3080\u3059\u3081", "\u3080\u305B\u308B", "\u3080\u305B\u3093", "\u3080\u3061\u3085\u3046", "\u3080\u306A\u3057\u3044", "\u3080\u306E\u3046", "\u3080\u3084\u307F", "\u3080\u3088\u3046", "\u3080\u3089\u3055\u304D", "\u3080\u308A\u3087\u3046", "\u3080\u308D\u3093", "\u3081\u3044\u3042\u3093", "\u3081\u3044\u3046\u3093", "\u3081\u3044\u3048\u3093", "\u3081\u3044\u304B\u304F", "\u3081\u3044\u304D\u3087\u304F", "\u3081\u3044\u3055\u3044", "\u3081\u3044\u3057", "\u3081\u3044\u305D\u3046", "\u3081\u3044\u3075\u3099\u3064", "\u3081\u3044\u308C\u3044", "\u3081\u3044\u308F\u304F", "\u3081\u304F\u3099\u307E\u308C\u308B", "\u3081\u3055\u3099\u3059", "\u3081\u3057\u305F", "\u3081\u3059\u3099\u3089\u3057\u3044", "\u3081\u305F\u3099\u3064", "\u3081\u307E\u3044", "\u3081\u3084\u3059", "\u3081\u3093\u304D\u3087", "\u3081\u3093\u305B\u304D", "\u3081\u3093\u3068\u3099\u3046", "\u3082\u3046\u3057\u3042\u3051\u3099\u308B", "\u3082\u3046\u3068\u3099\u3046\u3051\u3093", "\u3082\u3048\u308B", "\u3082\u304F\u3057", "\u3082\u304F\u3066\u304D", "\u3082\u304F\u3088\u3046\u3072\u3099", "\u3082\u3061\u308D\u3093", "\u3082\u3068\u3099\u308B", "\u3082\u3089\u3046", "\u3082\u3093\u304F", "\u3082\u3093\u305F\u3099\u3044", "\u3084\u304A\u3084", "\u3084\u3051\u308B", "\u3084\u3055\u3044", "\u3084\u3055\u3057\u3044", "\u3084\u3059\u3044", "\u3084\u3059\u305F\u308D\u3046", "\u3084\u3059\u307F", "\u3084\u305B\u308B", "\u3084\u305D\u3046", "\u3084\u305F\u3044", "\u3084\u3061\u3093", "\u3084\u3063\u3068", "\u3084\u3063\u306F\u309A\u308A", "\u3084\u3075\u3099\u308B", "\u3084\u3081\u308B", "\u3084\u3084\u3053\u3057\u3044", "\u3084\u3088\u3044", "\u3084\u308F\u3089\u304B\u3044", "\u3086\u3046\u304D", "\u3086\u3046\u3072\u3099\u3093\u304D\u3087\u304F", "\u3086\u3046\u3078\u3099", "\u3086\u3046\u3081\u3044", "\u3086\u3051\u3064", "\u3086\u3057\u3085\u3064", "\u3086\u305B\u3093", "\u3086\u305D\u3046", "\u3086\u305F\u304B", "\u3086\u3061\u3083\u304F", "\u3086\u3066\u3099\u308B", "\u3086\u306B\u3085\u3046", "\u3086\u3072\u3099\u308F", "\u3086\u3089\u3044", "\u3086\u308C\u308B", "\u3088\u3046\u3044", "\u3088\u3046\u304B", "\u3088\u3046\u304D\u3085\u3046", "\u3088\u3046\u3057\u3099", "\u3088\u3046\u3059", "\u3088\u3046\u3061\u3048\u3093", "\u3088\u304B\u305B\u3099", "\u3088\u304B\u3093", "\u3088\u304D\u3093", "\u3088\u304F\u305B\u3044", "\u3088\u304F\u307B\u3099\u3046", "\u3088\u3051\u3044", "\u3088\u3053\u3099\u308C\u308B", "\u3088\u3055\u3093", "\u3088\u3057\u3085\u3046", "\u3088\u305D\u3046", "\u3088\u305D\u304F", "\u3088\u3063\u304B", "\u3088\u3066\u3044", "\u3088\u3068\u3099\u304B\u3099\u308F\u304F", "\u3088\u306D\u3064", "\u3088\u3084\u304F", "\u3088\u3086\u3046", "\u3088\u308D\u3053\u3075\u3099", "\u3088\u308D\u3057\u3044", "\u3089\u3044\u3046", "\u3089\u304F\u304B\u3099\u304D", "\u3089\u304F\u3053\u3099", "\u3089\u304F\u3055\u3064", "\u3089\u304F\u305F\u3099", "\u3089\u3057\u3093\u306F\u3099\u3093", "\u3089\u305B\u3093", "\u3089\u305D\u3099\u304F", "\u3089\u305F\u3044", "\u3089\u3063\u304B", "\u3089\u308C\u3064", "\u308A\u3048\u304D", "\u308A\u304B\u3044", "\u308A\u304D\u3055\u304F", "\u308A\u304D\u305B\u3064", "\u308A\u304F\u304F\u3099\u3093", "\u308A\u304F\u3064", "\u308A\u3051\u3093", "\u308A\u3053\u3046", "\u308A\u305B\u3044", "\u308A\u305D\u3046", "\u308A\u305D\u304F", "\u308A\u3066\u3093", "\u308A\u306D\u3093", "\u308A\u3086\u3046", "\u308A\u3085\u3046\u304B\u3099\u304F", "\u308A\u3088\u3046", "\u308A\u3087\u3046\u308A", "\u308A\u3087\u304B\u3093", "\u308A\u3087\u304F\u3061\u3083", "\u308A\u3087\u3053\u3046", "\u308A\u308A\u304F", "\u308A\u308C\u304D", "\u308A\u308D\u3093", "\u308A\u3093\u3053\u3099", "\u308B\u3044\u3051\u3044", "\u308B\u3044\u3055\u3044", "\u308B\u3044\u3057\u3099", "\u308B\u3044\u305B\u304D", "\u308B\u3059\u306F\u3099\u3093", "\u308B\u308A\u304B\u3099\u308F\u3089", "\u308C\u3044\u304B\u3093", "\u308C\u3044\u304D\u3099", "\u308C\u3044\u305B\u3044", "\u308C\u3044\u305D\u3099\u3046\u3053", "\u308C\u3044\u3068\u3046", "\u308C\u3044\u307B\u3099\u3046", "\u308C\u304D\u3057", "\u308C\u304D\u305F\u3099\u3044", "\u308C\u3093\u3042\u3044", "\u308C\u3093\u3051\u3044", "\u308C\u3093\u3053\u3093", "\u308C\u3093\u3055\u3044", "\u308C\u3093\u3057\u3085\u3046", "\u308C\u3093\u305D\u3099\u304F", "\u308C\u3093\u3089\u304F", "\u308D\u3046\u304B", "\u308D\u3046\u3053\u3099", "\u308D\u3046\u3057\u3099\u3093", "\u308D\u3046\u305D\u304F", "\u308D\u304F\u304B\u3099", "\u308D\u3053\u3064", "\u308D\u3057\u3099\u3046\u3089", "\u308D\u3057\u3085\u3064", "\u308D\u305B\u3093", "\u308D\u3066\u3093", "\u308D\u3081\u3093", "\u308D\u308C\u3064", "\u308D\u3093\u304D\u3099", "\u308D\u3093\u306F\u309A", "\u308D\u3093\u3075\u3099\u3093", "\u308D\u3093\u308A", "\u308F\u304B\u3059", "\u308F\u304B\u3081", "\u308F\u304B\u3084\u307E", "\u308F\u304B\u308C\u308B", "\u308F\u3057\u3064", "\u308F\u3057\u3099\u307E\u3057", "\u308F\u3059\u308C\u3082\u306E", "\u308F\u3089\u3046", "\u308F\u308C\u308B"];
  }
});

// node_modules/bip39-mnemonic/wordlist/korean.json
var require_korean = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/korean.json"(exports2, module2) {
    module2.exports = ["\u1100\u1161\u1100\u1167\u11A8", "\u1100\u1161\u1101\u1173\u11B7", "\u1100\u1161\u1102\u1161\u11AB", "\u1100\u1161\u1102\u1173\u11BC", "\u1100\u1161\u1103\u1173\u11A8", "\u1100\u1161\u1105\u1173\u110E\u1175\u11B7", "\u1100\u1161\u1106\u116E\u11B7", "\u1100\u1161\u1107\u1161\u11BC", "\u1100\u1161\u1109\u1161\u11BC", "\u1100\u1161\u1109\u1173\u11B7", "\u1100\u1161\u110B\u116E\u11AB\u1103\u1166", "\u1100\u1161\u110B\u1173\u11AF", "\u1100\u1161\u110B\u1175\u1103\u1173", "\u1100\u1161\u110B\u1175\u11B8", "\u1100\u1161\u110C\u1161\u11BC", "\u1100\u1161\u110C\u1165\u11BC", "\u1100\u1161\u110C\u1169\u11A8", "\u1100\u1161\u110C\u116E\u11A8", "\u1100\u1161\u11A8\u110B\u1169", "\u1100\u1161\u11A8\u110C\u1161", "\u1100\u1161\u11AB\u1100\u1167\u11A8", "\u1100\u1161\u11AB\u1107\u116E", "\u1100\u1161\u11AB\u1109\u1165\u11B8", "\u1100\u1161\u11AB\u110C\u1161\u11BC", "\u1100\u1161\u11AB\u110C\u1165\u11B8", "\u1100\u1161\u11AB\u1111\u1161\u11AB", "\u1100\u1161\u11AF\u1103\u1173\u11BC", "\u1100\u1161\u11AF\u1107\u1175", "\u1100\u1161\u11AF\u1109\u1162\u11A8", "\u1100\u1161\u11AF\u110C\u1173\u11BC", "\u1100\u1161\u11B7\u1100\u1161\u11A8", "\u1100\u1161\u11B7\u1100\u1175", "\u1100\u1161\u11B7\u1109\u1169", "\u1100\u1161\u11B7\u1109\u116E\u1109\u1165\u11BC", "\u1100\u1161\u11B7\u110C\u1161", "\u1100\u1161\u11B7\u110C\u1165\u11BC", "\u1100\u1161\u11B8\u110C\u1161\u1100\u1175", "\u1100\u1161\u11BC\u1102\u1161\u11B7", "\u1100\u1161\u11BC\u1103\u1161\u11BC", "\u1100\u1161\u11BC\u1103\u1169", "\u1100\u1161\u11BC\u1105\u1167\u11A8\u1112\u1175", "\u1100\u1161\u11BC\u1107\u1167\u11AB", "\u1100\u1161\u11BC\u1107\u116E\u11A8", "\u1100\u1161\u11BC\u1109\u1161", "\u1100\u1161\u11BC\u1109\u116E\u1105\u1163\u11BC", "\u1100\u1161\u11BC\u110B\u1161\u110C\u1175", "\u1100\u1161\u11BC\u110B\u116F\u11AB\u1103\u1169", "\u1100\u1161\u11BC\u110B\u1174", "\u1100\u1161\u11BC\u110C\u1166", "\u1100\u1161\u11BC\u110C\u1169", "\u1100\u1161\u11C0\u110B\u1175", "\u1100\u1162\u1100\u116E\u1105\u1175", "\u1100\u1162\u1102\u1161\u1105\u1175", "\u1100\u1162\u1107\u1161\u11BC", "\u1100\u1162\u1107\u1167\u11AF", "\u1100\u1162\u1109\u1165\u11AB", "\u1100\u1162\u1109\u1165\u11BC", "\u1100\u1162\u110B\u1175\u11AB", "\u1100\u1162\u11A8\u1100\u116A\u11AB\u110C\u1165\u11A8", "\u1100\u1165\u1109\u1175\u11AF", "\u1100\u1165\u110B\u1162\u11A8", "\u1100\u1165\u110B\u116E\u11AF", "\u1100\u1165\u110C\u1175\u11BA", "\u1100\u1165\u1111\u116E\u11B7", "\u1100\u1165\u11A8\u110C\u1165\u11BC", "\u1100\u1165\u11AB\u1100\u1161\u11BC", "\u1100\u1165\u11AB\u1106\u116E\u11AF", "\u1100\u1165\u11AB\u1109\u1165\u11AF", "\u1100\u1165\u11AB\u110C\u1169", "\u1100\u1165\u11AB\u110E\u116E\u11A8", "\u1100\u1165\u11AF\u110B\u1173\u11B7", "\u1100\u1165\u11B7\u1109\u1161", "\u1100\u1165\u11B7\u1110\u1169", "\u1100\u1166\u1109\u1175\u1111\u1161\u11AB", "\u1100\u1166\u110B\u1175\u11B7", "\u1100\u1167\u110B\u116E\u11AF", "\u1100\u1167\u11AB\u1112\u1162", "\u1100\u1167\u11AF\u1100\u116A", "\u1100\u1167\u11AF\u1100\u116E\u11A8", "\u1100\u1167\u11AF\u1105\u1169\u11AB", "\u1100\u1167\u11AF\u1109\u1165\u11A8", "\u1100\u1167\u11AF\u1109\u1173\u11BC", "\u1100\u1167\u11AF\u1109\u1175\u11B7", "\u1100\u1167\u11AF\u110C\u1165\u11BC", "\u1100\u1167\u11AF\u1112\u1169\u11AB", "\u1100\u1167\u11BC\u1100\u1168", "\u1100\u1167\u11BC\u1100\u1169", "\u1100\u1167\u11BC\u1100\u1175", "\u1100\u1167\u11BC\u1105\u1167\u11A8", "\u1100\u1167\u11BC\u1107\u1169\u11A8\u1100\u116E\u11BC", "\u1100\u1167\u11BC\u1107\u1175", "\u1100\u1167\u11BC\u1109\u1161\u11BC\u1103\u1169", "\u1100\u1167\u11BC\u110B\u1167\u11BC", "\u1100\u1167\u11BC\u110B\u116E", "\u1100\u1167\u11BC\u110C\u1162\u11BC", "\u1100\u1167\u11BC\u110C\u1166", "\u1100\u1167\u11BC\u110C\u116E", "\u1100\u1167\u11BC\u110E\u1161\u11AF", "\u1100\u1167\u11BC\u110E\u1175", "\u1100\u1167\u11BC\u1112\u1163\u11BC", "\u1100\u1167\u11BC\u1112\u1165\u11B7", "\u1100\u1168\u1100\u1169\u11A8", "\u1100\u1168\u1103\u1161\u11AB", "\u1100\u1168\u1105\u1161\u11AB", "\u1100\u1168\u1109\u1161\u11AB", "\u1100\u1168\u1109\u1169\u11A8", "\u1100\u1168\u110B\u1163\u11A8", "\u1100\u1168\u110C\u1165\u11AF", "\u1100\u1168\u110E\u1173\u11BC", "\u1100\u1168\u1112\u116C\u11A8", "\u1100\u1169\u1100\u1162\u11A8", "\u1100\u1169\u1100\u116E\u1105\u1167", "\u1100\u1169\u1100\u116E\u11BC", "\u1100\u1169\u1100\u1173\u11B8", "\u1100\u1169\u1103\u1173\u11BC\u1112\u1161\u11A8\u1109\u1162\u11BC", "\u1100\u1169\u1106\u116E\u1109\u1175\u11AB", "\u1100\u1169\u1106\u1175\u11AB", "\u1100\u1169\u110B\u1163\u11BC\u110B\u1175", "\u1100\u1169\u110C\u1161\u11BC", "\u1100\u1169\u110C\u1165\u11AB", "\u1100\u1169\u110C\u1175\u11B8", "\u1100\u1169\u110E\u116E\u11BA\u1100\u1161\u1105\u116E", "\u1100\u1169\u1110\u1169\u11BC", "\u1100\u1169\u1112\u1163\u11BC", "\u1100\u1169\u11A8\u1109\u1175\u11A8", "\u1100\u1169\u11AF\u1106\u1169\u11A8", "\u1100\u1169\u11AF\u110D\u1161\u1100\u1175", "\u1100\u1169\u11AF\u1111\u1173", "\u1100\u1169\u11BC\u1100\u1161\u11AB", "\u1100\u1169\u11BC\u1100\u1162", "\u1100\u1169\u11BC\u1100\u1167\u11A8", "\u1100\u1169\u11BC\u1100\u116E\u11AB", "\u1100\u1169\u11BC\u1100\u1173\u11B8", "\u1100\u1169\u11BC\u1100\u1175", "\u1100\u1169\u11BC\u1103\u1169\u11BC", "\u1100\u1169\u11BC\u1106\u116E\u110B\u116F\u11AB", "\u1100\u1169\u11BC\u1107\u116E", "\u1100\u1169\u11BC\u1109\u1161", "\u1100\u1169\u11BC\u1109\u1175\u11A8", "\u1100\u1169\u11BC\u110B\u1165\u11B8", "\u1100\u1169\u11BC\u110B\u1167\u11AB", "\u1100\u1169\u11BC\u110B\u116F\u11AB", "\u1100\u1169\u11BC\u110C\u1161\u11BC", "\u1100\u1169\u11BC\u110D\u1161", "\u1100\u1169\u11BC\u110E\u1162\u11A8", "\u1100\u1169\u11BC\u1110\u1169\u11BC", "\u1100\u1169\u11BC\u1111\u1169", "\u1100\u1169\u11BC\u1112\u1161\u11BC", "\u1100\u1169\u11BC\u1112\u1172\u110B\u1175\u11AF", "\u1100\u116A\u1106\u1169\u11A8", "\u1100\u116A\u110B\u1175\u11AF", "\u1100\u116A\u110C\u1161\u11BC", "\u1100\u116A\u110C\u1165\u11BC", "\u1100\u116A\u1112\u1161\u11A8", "\u1100\u116A\u11AB\u1100\u1162\u11A8", "\u1100\u116A\u11AB\u1100\u1168", "\u1100\u116A\u11AB\u1100\u116A\u11BC", "\u1100\u116A\u11AB\u1102\u1167\u11B7", "\u1100\u116A\u11AB\u1105\u1161\u11B7", "\u1100\u116A\u11AB\u1105\u1167\u11AB", "\u1100\u116A\u11AB\u1105\u1175", "\u1100\u116A\u11AB\u1109\u1173\u11B8", "\u1100\u116A\u11AB\u1109\u1175\u11B7", "\u1100\u116A\u11AB\u110C\u1165\u11B7", "\u1100\u116A\u11AB\u110E\u1161\u11AF", "\u1100\u116A\u11BC\u1100\u1167\u11BC", "\u1100\u116A\u11BC\u1100\u1169", "\u1100\u116A\u11BC\u110C\u1161\u11BC", "\u1100\u116A\u11BC\u110C\u116E", "\u1100\u116C\u1105\u1169\u110B\u116E\u11B7", "\u1100\u116C\u11BC\u110C\u1161\u11BC\u1112\u1175", "\u1100\u116D\u1100\u116A\u1109\u1165", "\u1100\u116D\u1106\u116E\u11AB", "\u1100\u116D\u1107\u1169\u11A8", "\u1100\u116D\u1109\u1175\u11AF", "\u1100\u116D\u110B\u1163\u11BC", "\u1100\u116D\u110B\u1172\u11A8", "\u1100\u116D\u110C\u1161\u11BC", "\u1100\u116D\u110C\u1175\u11A8", "\u1100\u116D\u1110\u1169\u11BC", "\u1100\u116D\u1112\u116A\u11AB", "\u1100\u116D\u1112\u116E\u11AB", "\u1100\u116E\u1100\u1167\u11BC", "\u1100\u116E\u1105\u1173\u11B7", "\u1100\u116E\u1106\u1165\u11BC", "\u1100\u116E\u1107\u1167\u11AF", "\u1100\u116E\u1107\u116E\u11AB", "\u1100\u116E\u1109\u1165\u11A8", "\u1100\u116E\u1109\u1165\u11BC", "\u1100\u116E\u1109\u1169\u11A8", "\u1100\u116E\u110B\u1167\u11A8", "\u1100\u116E\u110B\u1175\u11B8", "\u1100\u116E\u110E\u1165\u11BC", "\u1100\u116E\u110E\u1166\u110C\u1165\u11A8", "\u1100\u116E\u11A8\u1100\u1161", "\u1100\u116E\u11A8\u1100\u1175", "\u1100\u116E\u11A8\u1102\u1162", "\u1100\u116E\u11A8\u1105\u1175\u11B8", "\u1100\u116E\u11A8\u1106\u116E\u11AF", "\u1100\u116E\u11A8\u1106\u1175\u11AB", "\u1100\u116E\u11A8\u1109\u116E", "\u1100\u116E\u11A8\u110B\u1165", "\u1100\u116E\u11A8\u110B\u116A\u11BC", "\u1100\u116E\u11A8\u110C\u1165\u11A8", "\u1100\u116E\u11A8\u110C\u1166", "\u1100\u116E\u11A8\u1112\u116C", "\u1100\u116E\u11AB\u1103\u1162", "\u1100\u116E\u11AB\u1109\u1161", "\u1100\u116E\u11AB\u110B\u1175\u11AB", "\u1100\u116E\u11BC\u1100\u1173\u11A8\u110C\u1165\u11A8", "\u1100\u116F\u11AB\u1105\u1175", "\u1100\u116F\u11AB\u110B\u1171", "\u1100\u116F\u11AB\u1110\u116E", "\u1100\u1171\u1100\u116E\u11A8", "\u1100\u1171\u1109\u1175\u11AB", "\u1100\u1172\u110C\u1165\u11BC", "\u1100\u1172\u110E\u1175\u11A8", "\u1100\u1172\u11AB\u1112\u1167\u11BC", "\u1100\u1173\u1102\u1161\u11AF", "\u1100\u1173\u1102\u1163\u11BC", "\u1100\u1173\u1102\u1173\u11AF", "\u1100\u1173\u1105\u1165\u1102\u1161", "\u1100\u1173\u1105\u116E\u11B8", "\u1100\u1173\u1105\u1173\u11BA", "\u1100\u1173\u1105\u1175\u11B7", "\u1100\u1173\u110C\u1166\u1109\u1165\u110B\u1163", "\u1100\u1173\u1110\u1169\u1105\u1169\u11A8", "\u1100\u1173\u11A8\u1107\u1169\u11A8", "\u1100\u1173\u11A8\u1112\u1175", "\u1100\u1173\u11AB\u1100\u1165", "\u1100\u1173\u11AB\u1100\u116D", "\u1100\u1173\u11AB\u1105\u1162", "\u1100\u1173\u11AB\u1105\u1169", "\u1100\u1173\u11AB\u1106\u116E", "\u1100\u1173\u11AB\u1107\u1169\u11AB", "\u1100\u1173\u11AB\u110B\u116F\u11AB", "\u1100\u1173\u11AB\u110B\u1172\u11A8", "\u1100\u1173\u11AB\u110E\u1165", "\u1100\u1173\u11AF\u110A\u1175", "\u1100\u1173\u11AF\u110C\u1161", "\u1100\u1173\u11B7\u1100\u1161\u11BC\u1109\u1161\u11AB", "\u1100\u1173\u11B7\u1100\u1169", "\u1100\u1173\u11B7\u1102\u1167\u11AB", "\u1100\u1173\u11B7\u1106\u1166\u1103\u1161\u11AF", "\u1100\u1173\u11B7\u110B\u1162\u11A8", "\u1100\u1173\u11B7\u110B\u1167\u11AB", "\u1100\u1173\u11B7\u110B\u116D\u110B\u1175\u11AF", "\u1100\u1173\u11B7\u110C\u1175", "\u1100\u1173\u11BC\u110C\u1165\u11BC\u110C\u1165\u11A8", "\u1100\u1175\u1100\u1161\u11AB", "\u1100\u1175\u1100\u116A\u11AB", "\u1100\u1175\u1102\u1167\u11B7", "\u1100\u1175\u1102\u1173\u11BC", "\u1100\u1175\u1103\u1169\u11A8\u1100\u116D", "\u1100\u1175\u1103\u116E\u11BC", "\u1100\u1175\u1105\u1169\u11A8", "\u1100\u1175\u1105\u1173\u11B7", "\u1100\u1175\u1107\u1165\u11B8", "\u1100\u1175\u1107\u1169\u11AB", "\u1100\u1175\u1107\u116E\u11AB", "\u1100\u1175\u1108\u1173\u11B7", "\u1100\u1175\u1109\u116E\u11A8\u1109\u1161", "\u1100\u1175\u1109\u116E\u11AF", "\u1100\u1175\u110B\u1165\u11A8", "\u1100\u1175\u110B\u1165\u11B8", "\u1100\u1175\u110B\u1169\u11AB", "\u1100\u1175\u110B\u116E\u11AB", "\u1100\u1175\u110B\u116F\u11AB", "\u1100\u1175\u110C\u1165\u11A8", "\u1100\u1175\u110C\u116E\u11AB", "\u1100\u1175\u110E\u1175\u11B7", "\u1100\u1175\u1112\u1169\u11AB", "\u1100\u1175\u1112\u116C\u11A8", "\u1100\u1175\u11AB\u1100\u1173\u11B8", "\u1100\u1175\u11AB\u110C\u1161\u11BC", "\u1100\u1175\u11AF\u110B\u1175", "\u1100\u1175\u11B7\u1107\u1161\u11B8", "\u1100\u1175\u11B7\u110E\u1175", "\u1100\u1175\u11B7\u1111\u1169\u1100\u1169\u11BC\u1112\u1161\u11BC", "\u1101\u1161\u11A8\u1103\u116E\u1100\u1175", "\u1101\u1161\u11B7\u1108\u1161\u11A8", "\u1101\u1162\u1103\u1161\u11AF\u110B\u1173\u11B7", "\u1101\u1162\u1109\u1169\u1100\u1173\u11B7", "\u1101\u1165\u11B8\u110C\u1175\u11AF", "\u1101\u1169\u11A8\u1103\u1162\u1100\u1175", "\u1101\u1169\u11BE\u110B\u1175\u11C1", "\u1102\u1161\u1103\u1173\u11AF\u110B\u1175", "\u1102\u1161\u1105\u1161\u11AB\u1112\u1175", "\u1102\u1161\u1106\u1165\u110C\u1175", "\u1102\u1161\u1106\u116E\u11AF", "\u1102\u1161\u110E\u1175\u11B7\u1107\u1161\u11AB", "\u1102\u1161\u1112\u1173\u11AF", "\u1102\u1161\u11A8\u110B\u1167\u11B8", "\u1102\u1161\u11AB\u1107\u1161\u11BC", "\u1102\u1161\u11AF\u1100\u1162", "\u1102\u1161\u11AF\u110A\u1175", "\u1102\u1161\u11AF\u110D\u1161", "\u1102\u1161\u11B7\u1102\u1167", "\u1102\u1161\u11B7\u1103\u1162\u1106\u116E\u11AB", "\u1102\u1161\u11B7\u1106\u1162", "\u1102\u1161\u11B7\u1109\u1161\u11AB", "\u1102\u1161\u11B7\u110C\u1161", "\u1102\u1161\u11B7\u1111\u1167\u11AB", "\u1102\u1161\u11B7\u1112\u1161\u11A8\u1109\u1162\u11BC", "\u1102\u1161\u11BC\u1107\u1175", "\u1102\u1161\u11C0\u1106\u1161\u11AF", "\u1102\u1162\u1102\u1167\u11AB", "\u1102\u1162\u110B\u116D\u11BC", "\u1102\u1162\u110B\u1175\u11AF", "\u1102\u1162\u11B7\u1107\u1175", "\u1102\u1162\u11B7\u1109\u1162", "\u1102\u1162\u11BA\u1106\u116E\u11AF", "\u1102\u1162\u11BC\u1103\u1169\u11BC", "\u1102\u1162\u11BC\u1106\u1167\u11AB", "\u1102\u1162\u11BC\u1107\u1161\u11BC", "\u1102\u1162\u11BC\u110C\u1161\u11BC\u1100\u1169", "\u1102\u1166\u11A8\u1110\u1161\u110B\u1175", "\u1102\u1166\u11BA\u110D\u1162", "\u1102\u1169\u1103\u1169\u11BC", "\u1102\u1169\u1105\u1161\u11AB\u1109\u1162\u11A8", "\u1102\u1169\u1105\u1167\u11A8", "\u1102\u1169\u110B\u1175\u11AB", "\u1102\u1169\u11A8\u110B\u1173\u11B7", "\u1102\u1169\u11A8\u110E\u1161", "\u1102\u1169\u11A8\u1112\u116A", "\u1102\u1169\u11AB\u1105\u1175", "\u1102\u1169\u11AB\u1106\u116E\u11AB", "\u1102\u1169\u11AB\u110C\u1162\u11BC", "\u1102\u1169\u11AF\u110B\u1175", "\u1102\u1169\u11BC\u1100\u116E", "\u1102\u1169\u11BC\u1103\u1161\u11B7", "\u1102\u1169\u11BC\u1106\u1175\u11AB", "\u1102\u1169\u11BC\u1107\u116E", "\u1102\u1169\u11BC\u110B\u1165\u11B8", "\u1102\u1169\u11BC\u110C\u1161\u11BC", "\u1102\u1169\u11BC\u110E\u1169\u11AB", "\u1102\u1169\u11C1\u110B\u1175", "\u1102\u116E\u11AB\u1103\u1169\u11BC\u110C\u1161", "\u1102\u116E\u11AB\u1106\u116E\u11AF", "\u1102\u116E\u11AB\u110A\u1165\u11B8", "\u1102\u1172\u110B\u116D\u11A8", "\u1102\u1173\u1101\u1175\u11B7", "\u1102\u1173\u11A8\u1103\u1162", "\u1102\u1173\u11BC\u1103\u1169\u11BC\u110C\u1165\u11A8", "\u1102\u1173\u11BC\u1105\u1167\u11A8", "\u1103\u1161\u1107\u1161\u11BC", "\u1103\u1161\u110B\u1163\u11BC\u1109\u1165\u11BC", "\u1103\u1161\u110B\u1173\u11B7", "\u1103\u1161\u110B\u1175\u110B\u1165\u1110\u1173", "\u1103\u1161\u1112\u1162\u11BC", "\u1103\u1161\u11AB\u1100\u1168", "\u1103\u1161\u11AB\u1100\u1169\u11AF", "\u1103\u1161\u11AB\u1103\u1169\u11A8", "\u1103\u1161\u11AB\u1106\u1161\u11BA", "\u1103\u1161\u11AB\u1109\u116E\u11AB", "\u1103\u1161\u11AB\u110B\u1165", "\u1103\u1161\u11AB\u110B\u1171", "\u1103\u1161\u11AB\u110C\u1165\u11B7", "\u1103\u1161\u11AB\u110E\u1166", "\u1103\u1161\u11AB\u110E\u116E", "\u1103\u1161\u11AB\u1111\u1167\u11AB", "\u1103\u1161\u11AB\u1111\u116E\u11BC", "\u1103\u1161\u11AF\u1100\u1163\u11AF", "\u1103\u1161\u11AF\u1105\u1165", "\u1103\u1161\u11AF\u1105\u1167\u11A8", "\u1103\u1161\u11AF\u1105\u1175", "\u1103\u1161\u11B0\u1100\u1169\u1100\u1175", "\u1103\u1161\u11B7\u1103\u1161\u11BC", "\u1103\u1161\u11B7\u1107\u1162", "\u1103\u1161\u11B7\u110B\u116D", "\u1103\u1161\u11B7\u110B\u1175\u11B7", "\u1103\u1161\u11B8\u1107\u1167\u11AB", "\u1103\u1161\u11B8\u110C\u1161\u11BC", "\u1103\u1161\u11BC\u1100\u1173\u11AB", "\u1103\u1161\u11BC\u1107\u116E\u11AB\u1100\u1161\u11AB", "\u1103\u1161\u11BC\u110B\u1167\u11AB\u1112\u1175", "\u1103\u1161\u11BC\u110C\u1161\u11BC", "\u1103\u1162\u1100\u1172\u1106\u1169", "\u1103\u1162\u1102\u1161\u11BD", "\u1103\u1162\u1103\u1161\u11AB\u1112\u1175", "\u1103\u1162\u1103\u1161\u11B8", "\u1103\u1162\u1103\u1169\u1109\u1175", "\u1103\u1162\u1105\u1163\u11A8", "\u1103\u1162\u1105\u1163\u11BC", "\u1103\u1162\u1105\u1172\u11A8", "\u1103\u1162\u1106\u116E\u11AB", "\u1103\u1162\u1107\u116E\u1107\u116E\u11AB", "\u1103\u1162\u1109\u1175\u11AB", "\u1103\u1162\u110B\u1173\u11BC", "\u1103\u1162\u110C\u1161\u11BC", "\u1103\u1162\u110C\u1165\u11AB", "\u1103\u1162\u110C\u1165\u11B8", "\u1103\u1162\u110C\u116E\u11BC", "\u1103\u1162\u110E\u1162\u11A8", "\u1103\u1162\u110E\u116E\u11AF", "\u1103\u1162\u110E\u116E\u11BC", "\u1103\u1162\u1110\u1169\u11BC\u1105\u1167\u11BC", "\u1103\u1162\u1112\u1161\u11A8", "\u1103\u1162\u1112\u1161\u11AB\u1106\u1175\u11AB\u1100\u116E\u11A8", "\u1103\u1162\u1112\u1161\u11B8\u1109\u1175\u11AF", "\u1103\u1162\u1112\u1167\u11BC", "\u1103\u1165\u11BC\u110B\u1165\u1105\u1175", "\u1103\u1166\u110B\u1175\u1110\u1173", "\u1103\u1169\u1103\u1162\u110E\u1166", "\u1103\u1169\u1103\u1165\u11A8", "\u1103\u1169\u1103\u116E\u11A8", "\u1103\u1169\u1106\u1161\u11BC", "\u1103\u1169\u1109\u1165\u1100\u116A\u11AB", "\u1103\u1169\u1109\u1175\u11B7", "\u1103\u1169\u110B\u116E\u11B7", "\u1103\u1169\u110B\u1175\u11B8", "\u1103\u1169\u110C\u1161\u1100\u1175", "\u1103\u1169\u110C\u1165\u1112\u1175", "\u1103\u1169\u110C\u1165\u11AB", "\u1103\u1169\u110C\u116E\u11BC", "\u1103\u1169\u110E\u1161\u11A8", "\u1103\u1169\u11A8\u1100\u1161\u11B7", "\u1103\u1169\u11A8\u1105\u1175\u11B8", "\u1103\u1169\u11A8\u1109\u1165", "\u1103\u1169\u11A8\u110B\u1175\u11AF", "\u1103\u1169\u11A8\u110E\u1161\u11BC\u110C\u1165\u11A8", "\u1103\u1169\u11BC\u1112\u116A\u110E\u1162\u11A8", "\u1103\u1171\u11BA\u1106\u1169\u1109\u1173\u11B8", "\u1103\u1171\u11BA\u1109\u1161\u11AB", "\u1104\u1161\u11AF\u110B\u1161\u110B\u1175", "\u1106\u1161\u1102\u116E\u1105\u1161", "\u1106\u1161\u1102\u1173\u11AF", "\u1106\u1161\u1103\u1161\u11BC", "\u1106\u1161\u1105\u1161\u1110\u1169\u11AB", "\u1106\u1161\u1105\u1167\u11AB", "\u1106\u1161\u1106\u116E\u1105\u1175", "\u1106\u1161\u1109\u1161\u110C\u1175", "\u1106\u1161\u110B\u1163\u11A8", "\u1106\u1161\u110B\u116D\u1102\u1166\u110C\u1173", "\u1106\u1161\u110B\u1173\u11AF", "\u1106\u1161\u110B\u1173\u11B7", "\u1106\u1161\u110B\u1175\u110F\u1173", "\u1106\u1161\u110C\u116E\u11BC", "\u1106\u1161\u110C\u1175\u1106\u1161\u11A8", "\u1106\u1161\u110E\u1161\u11AB\u1100\u1161\u110C\u1175", "\u1106\u1161\u110E\u1161\u11AF", "\u1106\u1161\u1112\u1173\u11AB", "\u1106\u1161\u11A8\u1100\u1165\u11AF\u1105\u1175", "\u1106\u1161\u11A8\u1102\u1162", "\u1106\u1161\u11A8\u1109\u1161\u11BC", "\u1106\u1161\u11AB\u1102\u1161\u11B7", "\u1106\u1161\u11AB\u1103\u116E", "\u1106\u1161\u11AB\u1109\u1166", "\u1106\u1161\u11AB\u110B\u1163\u11A8", "\u1106\u1161\u11AB\u110B\u1175\u11AF", "\u1106\u1161\u11AB\u110C\u1165\u11B7", "\u1106\u1161\u11AB\u110C\u1169\u11A8", "\u1106\u1161\u11AB\u1112\u116A", "\u1106\u1161\u11AD\u110B\u1175", "\u1106\u1161\u11AF\u1100\u1175", "\u1106\u1161\u11AF\u110A\u1173\u11B7", "\u1106\u1161\u11AF\u1110\u116E", "\u1106\u1161\u11B7\u1103\u1162\u1105\u1169", "\u1106\u1161\u11BC\u110B\u116F\u11AB\u1100\u1167\u11BC", "\u1106\u1162\u1102\u1167\u11AB", "\u1106\u1162\u1103\u1161\u11AF", "\u1106\u1162\u1105\u1167\u11A8", "\u1106\u1162\u1107\u1165\u11AB", "\u1106\u1162\u1109\u1173\u110F\u1165\u11B7", "\u1106\u1162\u110B\u1175\u11AF", "\u1106\u1162\u110C\u1161\u11BC", "\u1106\u1162\u11A8\u110C\u116E", "\u1106\u1165\u11A8\u110B\u1175", "\u1106\u1165\u11AB\u110C\u1165", "\u1106\u1165\u11AB\u110C\u1175", "\u1106\u1165\u11AF\u1105\u1175", "\u1106\u1166\u110B\u1175\u11AF", "\u1106\u1167\u1102\u1173\u1105\u1175", "\u1106\u1167\u110E\u1175\u11AF", "\u1106\u1167\u11AB\u1103\u1161\u11B7", "\u1106\u1167\u11AF\u110E\u1175", "\u1106\u1167\u11BC\u1103\u1161\u11AB", "\u1106\u1167\u11BC\u1105\u1167\u11BC", "\u1106\u1167\u11BC\u110B\u1168", "\u1106\u1167\u11BC\u110B\u1174", "\u1106\u1167\u11BC\u110C\u1165\u11AF", "\u1106\u1167\u11BC\u110E\u1175\u11BC", "\u1106\u1167\u11BC\u1112\u1161\u11B7", "\u1106\u1169\u1100\u1173\u11B7", "\u1106\u1169\u1102\u1175\u1110\u1165", "\u1106\u1169\u1103\u1166\u11AF", "\u1106\u1169\u1103\u1173\u11AB", "\u1106\u1169\u1107\u1165\u11B7", "\u1106\u1169\u1109\u1173\u11B8", "\u1106\u1169\u110B\u1163\u11BC", "\u1106\u1169\u110B\u1175\u11B7", "\u1106\u1169\u110C\u1169\u1105\u1175", "\u1106\u1169\u110C\u1175\u11B8", "\u1106\u1169\u1110\u116E\u11BC\u110B\u1175", "\u1106\u1169\u11A8\u1100\u1165\u11AF\u110B\u1175", "\u1106\u1169\u11A8\u1105\u1169\u11A8", "\u1106\u1169\u11A8\u1109\u1161", "\u1106\u1169\u11A8\u1109\u1169\u1105\u1175", "\u1106\u1169\u11A8\u1109\u116E\u11B7", "\u1106\u1169\u11A8\u110C\u1165\u11A8", "\u1106\u1169\u11A8\u1111\u116D", "\u1106\u1169\u11AF\u1105\u1162", "\u1106\u1169\u11B7\u1106\u1162", "\u1106\u1169\u11B7\u1106\u116E\u1100\u1166", "\u1106\u1169\u11B7\u1109\u1161\u11AF", "\u1106\u1169\u11B7\u1109\u1169\u11A8", "\u1106\u1169\u11B7\u110C\u1175\u11BA", "\u1106\u1169\u11B7\u1110\u1169\u11BC", "\u1106\u1169\u11B8\u1109\u1175", "\u1106\u116E\u1100\u116A\u11AB\u1109\u1175\u11B7", "\u1106\u116E\u1100\u116E\u11BC\u1112\u116A", "\u1106\u116E\u1103\u1165\u110B\u1171", "\u1106\u116E\u1103\u1165\u11B7", "\u1106\u116E\u1105\u1173\u11C1", "\u1106\u116E\u1109\u1173\u11AB", "\u1106\u116E\u110B\u1165\u11BA", "\u1106\u116E\u110B\u1167\u11A8", "\u1106\u116E\u110B\u116D\u11BC", "\u1106\u116E\u110C\u1169\u1100\u1165\u11AB", "\u1106\u116E\u110C\u1175\u1100\u1162", "\u1106\u116E\u110E\u1165\u11A8", "\u1106\u116E\u11AB\u1100\u116E", "\u1106\u116E\u11AB\u1103\u1173\u11A8", "\u1106\u116E\u11AB\u1107\u1165\u11B8", "\u1106\u116E\u11AB\u1109\u1165", "\u1106\u116E\u11AB\u110C\u1166", "\u1106\u116E\u11AB\u1112\u1161\u11A8", "\u1106\u116E\u11AB\u1112\u116A", "\u1106\u116E\u11AF\u1100\u1161", "\u1106\u116E\u11AF\u1100\u1165\u11AB", "\u1106\u116E\u11AF\u1100\u1167\u11AF", "\u1106\u116E\u11AF\u1100\u1169\u1100\u1175", "\u1106\u116E\u11AF\u1105\u1169\u11AB", "\u1106\u116E\u11AF\u1105\u1175\u1112\u1161\u11A8", "\u1106\u116E\u11AF\u110B\u1173\u11B7", "\u1106\u116E\u11AF\u110C\u1175\u11AF", "\u1106\u116E\u11AF\u110E\u1166", "\u1106\u1175\u1100\u116E\u11A8", "\u1106\u1175\u1103\u1175\u110B\u1165", "\u1106\u1175\u1109\u1161\u110B\u1175\u11AF", "\u1106\u1175\u1109\u116E\u11AF", "\u1106\u1175\u110B\u1167\u11A8", "\u1106\u1175\u110B\u116D\u11BC\u1109\u1175\u11AF", "\u1106\u1175\u110B\u116E\u11B7", "\u1106\u1175\u110B\u1175\u11AB", "\u1106\u1175\u1110\u1175\u11BC", "\u1106\u1175\u1112\u1169\u11AB", "\u1106\u1175\u11AB\u1100\u1161\u11AB", "\u1106\u1175\u11AB\u110C\u1169\u11A8", "\u1106\u1175\u11AB\u110C\u116E", "\u1106\u1175\u11AE\u110B\u1173\u11B7", "\u1106\u1175\u11AF\u1100\u1161\u1105\u116E", "\u1106\u1175\u11AF\u1105\u1175\u1106\u1175\u1110\u1165", "\u1106\u1175\u11C0\u1107\u1161\u1103\u1161\u11A8", "\u1107\u1161\u1100\u1161\u110C\u1175", "\u1107\u1161\u1100\u116E\u1102\u1175", "\u1107\u1161\u1102\u1161\u1102\u1161", "\u1107\u1161\u1102\u1173\u11AF", "\u1107\u1161\u1103\u1161\u11A8", "\u1107\u1161\u1103\u1161\u11BA\u1100\u1161", "\u1107\u1161\u1105\u1161\u11B7", "\u1107\u1161\u110B\u1175\u1105\u1165\u1109\u1173", "\u1107\u1161\u1110\u1161\u11BC", "\u1107\u1161\u11A8\u1106\u116E\u11AF\u1100\u116A\u11AB", "\u1107\u1161\u11A8\u1109\u1161", "\u1107\u1161\u11A8\u1109\u116E", "\u1107\u1161\u11AB\u1103\u1162", "\u1107\u1161\u11AB\u1103\u1173\u1109\u1175", "\u1107\u1161\u11AB\u1106\u1161\u11AF", "\u1107\u1161\u11AB\u1107\u1161\u11AF", "\u1107\u1161\u11AB\u1109\u1165\u11BC", "\u1107\u1161\u11AB\u110B\u1173\u11BC", "\u1107\u1161\u11AB\u110C\u1161\u11BC", "\u1107\u1161\u11AB\u110C\u116E\u11A8", "\u1107\u1161\u11AB\u110C\u1175", "\u1107\u1161\u11AB\u110E\u1161\u11AB", "\u1107\u1161\u11AE\u110E\u1175\u11B7", "\u1107\u1161\u11AF\u1100\u1161\u1105\u1161\u11A8", "\u1107\u1161\u11AF\u1100\u1165\u11AF\u110B\u1173\u11B7", "\u1107\u1161\u11AF\u1100\u1167\u11AB", "\u1107\u1161\u11AF\u1103\u1161\u11AF", "\u1107\u1161\u11AF\u1105\u1166", "\u1107\u1161\u11AF\u1106\u1169\u11A8", "\u1107\u1161\u11AF\u1107\u1161\u1103\u1161\u11A8", "\u1107\u1161\u11AF\u1109\u1162\u11BC", "\u1107\u1161\u11AF\u110B\u1173\u11B7", "\u1107\u1161\u11AF\u110C\u1161\u1100\u116E\u11A8", "\u1107\u1161\u11AF\u110C\u1165\u11AB", "\u1107\u1161\u11AF\u1110\u1169\u11B8", "\u1107\u1161\u11AF\u1111\u116D", "\u1107\u1161\u11B7\u1112\u1161\u1102\u1173\u11AF", "\u1107\u1161\u11B8\u1100\u1173\u1105\u1173\u11BA", "\u1107\u1161\u11B8\u1106\u1161\u11BA", "\u1107\u1161\u11B8\u1109\u1161\u11BC", "\u1107\u1161\u11B8\u1109\u1169\u11C0", "\u1107\u1161\u11BC\u1100\u1173\u11B7", "\u1107\u1161\u11BC\u1106\u1167\u11AB", "\u1107\u1161\u11BC\u1106\u116E\u11AB", "\u1107\u1161\u11BC\u1107\u1161\u1103\u1161\u11A8", "\u1107\u1161\u11BC\u1107\u1165\u11B8", "\u1107\u1161\u11BC\u1109\u1169\u11BC", "\u1107\u1161\u11BC\u1109\u1175\u11A8", "\u1107\u1161\u11BC\u110B\u1161\u11AB", "\u1107\u1161\u11BC\u110B\u116E\u11AF", "\u1107\u1161\u11BC\u110C\u1175", "\u1107\u1161\u11BC\u1112\u1161\u11A8", "\u1107\u1161\u11BC\u1112\u1162", "\u1107\u1161\u11BC\u1112\u1163\u11BC", "\u1107\u1162\u1100\u1167\u11BC", "\u1107\u1162\u1101\u1169\u11B8", "\u1107\u1162\u1103\u1161\u11AF", "\u1107\u1162\u1103\u1173\u1106\u1175\u11AB\u1110\u1165\u11AB", "\u1107\u1162\u11A8\u1103\u116E\u1109\u1161\u11AB", "\u1107\u1162\u11A8\u1109\u1162\u11A8", "\u1107\u1162\u11A8\u1109\u1165\u11BC", "\u1107\u1162\u11A8\u110B\u1175\u11AB", "\u1107\u1162\u11A8\u110C\u1166", "\u1107\u1162\u11A8\u1112\u116A\u110C\u1165\u11B7", "\u1107\u1165\u1105\u1173\u11BA", "\u1107\u1165\u1109\u1165\u11BA", "\u1107\u1165\u1110\u1173\u11AB", "\u1107\u1165\u11AB\u1100\u1162", "\u1107\u1165\u11AB\u110B\u1167\u11A8", "\u1107\u1165\u11AB\u110C\u1175", "\u1107\u1165\u11AB\u1112\u1169", "\u1107\u1165\u11AF\u1100\u1173\u11B7", "\u1107\u1165\u11AF\u1105\u1166", "\u1107\u1165\u11AF\u110A\u1165", "\u1107\u1165\u11B7\u110B\u1171", "\u1107\u1165\u11B7\u110B\u1175\u11AB", "\u1107\u1165\u11B7\u110C\u116C", "\u1107\u1165\u11B8\u1105\u1172\u11AF", "\u1107\u1165\u11B8\u110B\u116F\u11AB", "\u1107\u1165\u11B8\u110C\u1165\u11A8", "\u1107\u1165\u11B8\u110E\u1175\u11A8", "\u1107\u1166\u110B\u1175\u110C\u1175\u11BC", "\u1107\u1166\u11AF\u1110\u1173", "\u1107\u1167\u11AB\u1100\u1167\u11BC", "\u1107\u1167\u11AB\u1103\u1169\u11BC", "\u1107\u1167\u11AB\u1106\u1167\u11BC", "\u1107\u1167\u11AB\u1109\u1175\u11AB", "\u1107\u1167\u11AB\u1112\u1169\u1109\u1161", "\u1107\u1167\u11AB\u1112\u116A", "\u1107\u1167\u11AF\u1103\u1169", "\u1107\u1167\u11AF\u1106\u1167\u11BC", "\u1107\u1167\u11AF\u110B\u1175\u11AF", "\u1107\u1167\u11BC\u1109\u1175\u11AF", "\u1107\u1167\u11BC\u110B\u1161\u1105\u1175", "\u1107\u1167\u11BC\u110B\u116F\u11AB", "\u1107\u1169\u1100\u116A\u11AB", "\u1107\u1169\u1102\u1165\u1109\u1173", "\u1107\u1169\u1105\u1161\u1109\u1162\u11A8", "\u1107\u1169\u1105\u1161\u11B7", "\u1107\u1169\u1105\u1173\u11B7", "\u1107\u1169\u1109\u1161\u11BC", "\u1107\u1169\u110B\u1161\u11AB", "\u1107\u1169\u110C\u1161\u1100\u1175", "\u1107\u1169\u110C\u1161\u11BC", "\u1107\u1169\u110C\u1165\u11AB", "\u1107\u1169\u110C\u1169\u11AB", "\u1107\u1169\u1110\u1169\u11BC", "\u1107\u1169\u1111\u1167\u11AB\u110C\u1165\u11A8", "\u1107\u1169\u1112\u1165\u11B7", "\u1107\u1169\u11A8\u1103\u1169", "\u1107\u1169\u11A8\u1109\u1161", "\u1107\u1169\u11A8\u1109\u116E\u11BC\u110B\u1161", "\u1107\u1169\u11A8\u1109\u1173\u11B8", "\u1107\u1169\u11A9\u110B\u1173\u11B7", "\u1107\u1169\u11AB\u1100\u1167\u11A8\u110C\u1165\u11A8", "\u1107\u1169\u11AB\u1105\u1162", "\u1107\u1169\u11AB\u1107\u116E", "\u1107\u1169\u11AB\u1109\u1161", "\u1107\u1169\u11AB\u1109\u1165\u11BC", "\u1107\u1169\u11AB\u110B\u1175\u11AB", "\u1107\u1169\u11AB\u110C\u1175\u11AF", "\u1107\u1169\u11AF\u1111\u1166\u11AB", "\u1107\u1169\u11BC\u1109\u1161", "\u1107\u1169\u11BC\u110C\u1175", "\u1107\u1169\u11BC\u1110\u116E", "\u1107\u116E\u1100\u1173\u11AB", "\u1107\u116E\u1101\u1173\u1105\u1165\u110B\u116E\u11B7", "\u1107\u116E\u1103\u1161\u11B7", "\u1107\u116E\u1103\u1169\u11BC\u1109\u1161\u11AB", "\u1107\u116E\u1106\u116E\u11AB", "\u1107\u116E\u1107\u116E\u11AB", "\u1107\u116E\u1109\u1161\u11AB", "\u1107\u116E\u1109\u1161\u11BC", "\u1107\u116E\u110B\u1165\u11BF", "\u1107\u116E\u110B\u1175\u11AB", "\u1107\u116E\u110C\u1161\u11A8\u110B\u116D\u11BC", "\u1107\u116E\u110C\u1161\u11BC", "\u1107\u116E\u110C\u1165\u11BC", "\u1107\u116E\u110C\u1169\u11A8", "\u1107\u116E\u110C\u1175\u1105\u1165\u11AB\u1112\u1175", "\u1107\u116E\u110E\u1175\u11AB", "\u1107\u116E\u1110\u1161\u11A8", "\u1107\u116E\u1111\u116E\u11B7", "\u1107\u116E\u1112\u116C\u110C\u1161\u11BC", "\u1107\u116E\u11A8\u1107\u116E", "\u1107\u116E\u11A8\u1112\u1161\u11AB", "\u1107\u116E\u11AB\u1102\u1169", "\u1107\u116E\u11AB\u1105\u1163\u11BC", "\u1107\u116E\u11AB\u1105\u1175", "\u1107\u116E\u11AB\u1106\u1167\u11BC", "\u1107\u116E\u11AB\u1109\u1165\u11A8", "\u1107\u116E\u11AB\u110B\u1163", "\u1107\u116E\u11AB\u110B\u1171\u1100\u1175", "\u1107\u116E\u11AB\u1111\u1175\u11AF", "\u1107\u116E\u11AB\u1112\u1169\u11BC\u1109\u1162\u11A8", "\u1107\u116E\u11AF\u1100\u1169\u1100\u1175", "\u1107\u116E\u11AF\u1100\u116A", "\u1107\u116E\u11AF\u1100\u116D", "\u1107\u116E\u11AF\u1101\u1169\u11BE", "\u1107\u116E\u11AF\u1106\u1161\u11AB", "\u1107\u116E\u11AF\u1107\u1165\u11B8", "\u1107\u116E\u11AF\u1107\u1175\u11BE", "\u1107\u116E\u11AF\u110B\u1161\u11AB", "\u1107\u116E\u11AF\u110B\u1175\u110B\u1175\u11A8", "\u1107\u116E\u11AF\u1112\u1162\u11BC", "\u1107\u1173\u1105\u1162\u11AB\u1103\u1173", "\u1107\u1175\u1100\u1173\u11A8", "\u1107\u1175\u1102\u1161\u11AB", "\u1107\u1175\u1102\u1175\u11AF", "\u1107\u1175\u1103\u116E\u11AF\u1100\u1175", "\u1107\u1175\u1103\u1175\u110B\u1169", "\u1107\u1175\u1105\u1169\u1109\u1169", "\u1107\u1175\u1106\u1161\u11AB", "\u1107\u1175\u1106\u1167\u11BC", "\u1107\u1175\u1106\u1175\u11AF", "\u1107\u1175\u1107\u1161\u1105\u1161\u11B7", "\u1107\u1175\u1107\u1175\u11B7\u1107\u1161\u11B8", "\u1107\u1175\u1109\u1161\u11BC", "\u1107\u1175\u110B\u116D\u11BC", "\u1107\u1175\u110B\u1172\u11AF", "\u1107\u1175\u110C\u116E\u11BC", "\u1107\u1175\u1110\u1161\u1106\u1175\u11AB", "\u1107\u1175\u1111\u1161\u11AB", "\u1107\u1175\u11AF\u1103\u1175\u11BC", "\u1107\u1175\u11BA\u1106\u116E\u11AF", "\u1107\u1175\u11BA\u1107\u1161\u11BC\u110B\u116E\u11AF", "\u1107\u1175\u11BA\u110C\u116E\u11AF\u1100\u1175", "\u1107\u1175\u11BE\u1101\u1161\u11AF", "\u1108\u1161\u11AF\u1100\u1161\u11AB\u1109\u1162\u11A8", "\u1108\u1161\u11AF\u1105\u1162", "\u1108\u1161\u11AF\u1105\u1175", "\u1109\u1161\u1100\u1165\u11AB", "\u1109\u1161\u1100\u1168\u110C\u1165\u11AF", "\u1109\u1161\u1102\u1161\u110B\u1175", "\u1109\u1161\u1102\u1163\u11BC", "\u1109\u1161\u1105\u1161\u11B7", "\u1109\u1161\u1105\u1161\u11BC", "\u1109\u1161\u1105\u1175\u11B8", "\u1109\u1161\u1106\u1169\u1102\u1175\u11B7", "\u1109\u1161\u1106\u116E\u11AF", "\u1109\u1161\u1107\u1161\u11BC", "\u1109\u1161\u1109\u1161\u11BC", "\u1109\u1161\u1109\u1162\u11BC\u1112\u116A\u11AF", "\u1109\u1161\u1109\u1165\u11AF", "\u1109\u1161\u1109\u1173\u11B7", "\u1109\u1161\u1109\u1175\u11AF", "\u1109\u1161\u110B\u1165\u11B8", "\u1109\u1161\u110B\u116D\u11BC", "\u1109\u1161\u110B\u116F\u11AF", "\u1109\u1161\u110C\u1161\u11BC", "\u1109\u1161\u110C\u1165\u11AB", "\u1109\u1161\u110C\u1175\u11AB", "\u1109\u1161\u110E\u1169\u11AB", "\u1109\u1161\u110E\u116E\u11AB\u1100\u1175", "\u1109\u1161\u1110\u1161\u11BC", "\u1109\u1161\u1110\u116E\u1105\u1175", "\u1109\u1161\u1112\u1173\u11AF", "\u1109\u1161\u11AB\u1100\u1175\u11AF", "\u1109\u1161\u11AB\u1107\u116E\u110B\u1175\u11AB\u1100\u116A", "\u1109\u1161\u11AB\u110B\u1165\u11B8", "\u1109\u1161\u11AB\u110E\u1162\u11A8", "\u1109\u1161\u11AF\u1105\u1175\u11B7", "\u1109\u1161\u11AF\u110B\u1175\u11AB", "\u1109\u1161\u11AF\u110D\u1161\u11A8", "\u1109\u1161\u11B7\u1100\u1168\u1110\u1161\u11BC", "\u1109\u1161\u11B7\u1100\u116E\u11A8", "\u1109\u1161\u11B7\u1109\u1175\u11B8", "\u1109\u1161\u11B7\u110B\u116F\u11AF", "\u1109\u1161\u11B7\u110E\u1169\u11AB", "\u1109\u1161\u11BC\u1100\u116A\u11AB", "\u1109\u1161\u11BC\u1100\u1173\u11B7", "\u1109\u1161\u11BC\u1103\u1162", "\u1109\u1161\u11BC\u1105\u1172", "\u1109\u1161\u11BC\u1107\u1161\u11AB\u1100\u1175", "\u1109\u1161\u11BC\u1109\u1161\u11BC", "\u1109\u1161\u11BC\u1109\u1175\u11A8", "\u1109\u1161\u11BC\u110B\u1165\u11B8", "\u1109\u1161\u11BC\u110B\u1175\u11AB", "\u1109\u1161\u11BC\u110C\u1161", "\u1109\u1161\u11BC\u110C\u1165\u11B7", "\u1109\u1161\u11BC\u110E\u1165", "\u1109\u1161\u11BC\u110E\u116E", "\u1109\u1161\u11BC\u1110\u1162", "\u1109\u1161\u11BC\u1111\u116D", "\u1109\u1161\u11BC\u1111\u116E\u11B7", "\u1109\u1161\u11BC\u1112\u116A\u11BC", "\u1109\u1162\u1107\u1167\u11A8", "\u1109\u1162\u11A8\u1101\u1161\u11AF", "\u1109\u1162\u11A8\u110B\u1167\u11AB\u1111\u1175\u11AF", "\u1109\u1162\u11BC\u1100\u1161\u11A8", "\u1109\u1162\u11BC\u1106\u1167\u11BC", "\u1109\u1162\u11BC\u1106\u116E\u11AF", "\u1109\u1162\u11BC\u1107\u1161\u11BC\u1109\u1169\u11BC", "\u1109\u1162\u11BC\u1109\u1161\u11AB", "\u1109\u1162\u11BC\u1109\u1165\u11AB", "\u1109\u1162\u11BC\u1109\u1175\u11AB", "\u1109\u1162\u11BC\u110B\u1175\u11AF", "\u1109\u1162\u11BC\u1112\u116A\u11AF", "\u1109\u1165\u1105\u1161\u11B8", "\u1109\u1165\u1105\u1173\u11AB", "\u1109\u1165\u1106\u1167\u11BC", "\u1109\u1165\u1106\u1175\u11AB", "\u1109\u1165\u1107\u1175\u1109\u1173", "\u1109\u1165\u110B\u1163\u11BC", "\u1109\u1165\u110B\u116E\u11AF", "\u1109\u1165\u110C\u1165\u11A8", "\u1109\u1165\u110C\u1165\u11B7", "\u1109\u1165\u110D\u1169\u11A8", "\u1109\u1165\u110F\u1173\u11AF", "\u1109\u1165\u11A8\u1109\u1161", "\u1109\u1165\u11A8\u110B\u1172", "\u1109\u1165\u11AB\u1100\u1165", "\u1109\u1165\u11AB\u1106\u116E\u11AF", "\u1109\u1165\u11AB\u1107\u1162", "\u1109\u1165\u11AB\u1109\u1162\u11BC", "\u1109\u1165\u11AB\u1109\u116E", "\u1109\u1165\u11AB\u110B\u116F\u11AB", "\u1109\u1165\u11AB\u110C\u1161\u11BC", "\u1109\u1165\u11AB\u110C\u1165\u11AB", "\u1109\u1165\u11AB\u1110\u1162\u11A8", "\u1109\u1165\u11AB\u1111\u116E\u11BC\u1100\u1175", "\u1109\u1165\u11AF\u1100\u1165\u110C\u1175", "\u1109\u1165\u11AF\u1102\u1161\u11AF", "\u1109\u1165\u11AF\u1105\u1165\u11BC\u1110\u1161\u11BC", "\u1109\u1165\u11AF\u1106\u1167\u11BC", "\u1109\u1165\u11AF\u1106\u116E\u11AB", "\u1109\u1165\u11AF\u1109\u1161", "\u1109\u1165\u11AF\u110B\u1161\u11A8\u1109\u1161\u11AB", "\u1109\u1165\u11AF\u110E\u1175", "\u1109\u1165\u11AF\u1110\u1161\u11BC", "\u1109\u1165\u11B8\u110A\u1175", "\u1109\u1165\u11BC\u1100\u1169\u11BC", "\u1109\u1165\u11BC\u1103\u1161\u11BC", "\u1109\u1165\u11BC\u1106\u1167\u11BC", "\u1109\u1165\u11BC\u1107\u1167\u11AF", "\u1109\u1165\u11BC\u110B\u1175\u11AB", "\u1109\u1165\u11BC\u110C\u1161\u11BC", "\u1109\u1165\u11BC\u110C\u1165\u11A8", "\u1109\u1165\u11BC\u110C\u1175\u11AF", "\u1109\u1165\u11BC\u1112\u1161\u11B7", "\u1109\u1166\u1100\u1173\u11B7", "\u1109\u1166\u1106\u1175\u1102\u1161", "\u1109\u1166\u1109\u1161\u11BC", "\u1109\u1166\u110B\u116F\u11AF", "\u1109\u1166\u110C\u1169\u11BC\u1103\u1162\u110B\u116A\u11BC", "\u1109\u1166\u1110\u1161\u11A8", "\u1109\u1166\u11AB\u1110\u1165", "\u1109\u1166\u11AB\u1110\u1175\u1106\u1175\u1110\u1165", "\u1109\u1166\u11BA\u110D\u1162", "\u1109\u1169\u1100\u1172\u1106\u1169", "\u1109\u1169\u1100\u1173\u11A8\u110C\u1165\u11A8", "\u1109\u1169\u1100\u1173\u11B7", "\u1109\u1169\u1102\u1161\u1100\u1175", "\u1109\u1169\u1102\u1167\u11AB", "\u1109\u1169\u1103\u1173\u11A8", "\u1109\u1169\u1106\u1161\u11BC", "\u1109\u1169\u1106\u116E\u11AB", "\u1109\u1169\u1109\u1165\u11AF", "\u1109\u1169\u1109\u1169\u11A8", "\u1109\u1169\u110B\u1161\u1100\u116A", "\u1109\u1169\u110B\u116D\u11BC", "\u1109\u1169\u110B\u116F\u11AB", "\u1109\u1169\u110B\u1173\u11B7", "\u1109\u1169\u110C\u116E\u11BC\u1112\u1175", "\u1109\u1169\u110C\u1175\u1111\u116E\u11B7", "\u1109\u1169\u110C\u1175\u11AF", "\u1109\u1169\u1111\u116E\u11BC", "\u1109\u1169\u1112\u1167\u11BC", "\u1109\u1169\u11A8\u1103\u1161\u11B7", "\u1109\u1169\u11A8\u1103\u1169", "\u1109\u1169\u11A8\u110B\u1169\u11BA", "\u1109\u1169\u11AB\u1100\u1161\u1105\u1161\u11A8", "\u1109\u1169\u11AB\u1100\u1175\u11AF", "\u1109\u1169\u11AB\u1102\u1167", "\u1109\u1169\u11AB\u1102\u1175\u11B7", "\u1109\u1169\u11AB\u1103\u1173\u11BC", "\u1109\u1169\u11AB\u1106\u1169\u11A8", "\u1109\u1169\u11AB\u1108\u1167\u11A8", "\u1109\u1169\u11AB\u1109\u1175\u11AF", "\u1109\u1169\u11AB\u110C\u1175\u11AF", "\u1109\u1169\u11AB\u1110\u1169\u11B8", "\u1109\u1169\u11AB\u1112\u1162", "\u1109\u1169\u11AF\u110C\u1175\u11A8\u1112\u1175", "\u1109\u1169\u11B7\u110A\u1175", "\u1109\u1169\u11BC\u110B\u1161\u110C\u1175", "\u1109\u1169\u11BC\u110B\u1175", "\u1109\u1169\u11BC\u1111\u1167\u11AB", "\u1109\u116C\u1100\u1169\u1100\u1175", "\u1109\u116D\u1111\u1175\u11BC", "\u1109\u116E\u1100\u1165\u11AB", "\u1109\u116E\u1102\u1167\u11AB", "\u1109\u116E\u1103\u1161\u11AB", "\u1109\u116E\u1103\u1169\u11BA\u1106\u116E\u11AF", "\u1109\u116E\u1103\u1169\u11BC\u110C\u1165\u11A8", "\u1109\u116E\u1106\u1167\u11AB", "\u1109\u116E\u1106\u1167\u11BC", "\u1109\u116E\u1107\u1161\u11A8", "\u1109\u116E\u1109\u1161\u11BC", "\u1109\u116E\u1109\u1165\u11A8", "\u1109\u116E\u1109\u116E\u11AF", "\u1109\u116E\u1109\u1175\u1105\u1169", "\u1109\u116E\u110B\u1165\u11B8", "\u1109\u116E\u110B\u1167\u11B7", "\u1109\u116E\u110B\u1167\u11BC", "\u1109\u116E\u110B\u1175\u11B8", "\u1109\u116E\u110C\u116E\u11AB", "\u1109\u116E\u110C\u1175\u11B8", "\u1109\u116E\u110E\u116E\u11AF", "\u1109\u116E\u110F\u1165\u11BA", "\u1109\u116E\u1111\u1175\u11AF", "\u1109\u116E\u1112\u1161\u11A8", "\u1109\u116E\u1112\u1165\u11B7\u1109\u1162\u11BC", "\u1109\u116E\u1112\u116A\u1100\u1175", "\u1109\u116E\u11A8\u1102\u1167", "\u1109\u116E\u11A8\u1109\u1169", "\u1109\u116E\u11A8\u110C\u1166", "\u1109\u116E\u11AB\u1100\u1161\u11AB", "\u1109\u116E\u11AB\u1109\u1165", "\u1109\u116E\u11AB\u1109\u116E", "\u1109\u116E\u11AB\u1109\u1175\u11A8\u1100\u1161\u11AB", "\u1109\u116E\u11AB\u110B\u1171", "\u1109\u116E\u11AE\u1100\u1161\u1105\u1161\u11A8", "\u1109\u116E\u11AF\u1107\u1167\u11BC", "\u1109\u116E\u11AF\u110C\u1175\u11B8", "\u1109\u116E\u11BA\u110C\u1161", "\u1109\u1173\u1102\u1175\u11B7", "\u1109\u1173\u1106\u116E\u11AF", "\u1109\u1173\u1109\u1173\u1105\u1169", "\u1109\u1173\u1109\u1173\u11BC", "\u1109\u1173\u110B\u1170\u1110\u1165", "\u1109\u1173\u110B\u1171\u110E\u1175", "\u1109\u1173\u110F\u1166\u110B\u1175\u1110\u1173", "\u1109\u1173\u1110\u1172\u1103\u1175\u110B\u1169", "\u1109\u1173\u1110\u1173\u1105\u1166\u1109\u1173", "\u1109\u1173\u1111\u1169\u110E\u1173", "\u1109\u1173\u11AF\u110D\u1165\u11A8", "\u1109\u1173\u11AF\u1111\u1173\u11B7", "\u1109\u1173\u11B8\u1100\u116A\u11AB", "\u1109\u1173\u11B8\u1100\u1175", "\u1109\u1173\u11BC\u1100\u1162\u11A8", "\u1109\u1173\u11BC\u1105\u1175", "\u1109\u1173\u11BC\u1107\u116E", "\u1109\u1173\u11BC\u110B\u116D\u11BC\u110E\u1161", "\u1109\u1173\u11BC\u110C\u1175\u11AB", "\u1109\u1175\u1100\u1161\u11A8", "\u1109\u1175\u1100\u1161\u11AB", "\u1109\u1175\u1100\u1169\u11AF", "\u1109\u1175\u1100\u1173\u11B7\u110E\u1175", "\u1109\u1175\u1102\u1161\u1105\u1175\u110B\u1169", "\u1109\u1175\u1103\u1162\u11A8", "\u1109\u1175\u1105\u1175\u110C\u1173", "\u1109\u1175\u1106\u1166\u11AB\u1110\u1173", "\u1109\u1175\u1106\u1175\u11AB", "\u1109\u1175\u1107\u116E\u1106\u1169", "\u1109\u1175\u1109\u1165\u11AB", "\u1109\u1175\u1109\u1165\u11AF", "\u1109\u1175\u1109\u1173\u1110\u1166\u11B7", "\u1109\u1175\u110B\u1161\u1107\u1165\u110C\u1175", "\u1109\u1175\u110B\u1165\u1106\u1165\u1102\u1175", "\u1109\u1175\u110B\u116F\u11AF", "\u1109\u1175\u110B\u1175\u11AB", "\u1109\u1175\u110B\u1175\u11AF", "\u1109\u1175\u110C\u1161\u11A8", "\u1109\u1175\u110C\u1161\u11BC", "\u1109\u1175\u110C\u1165\u11AF", "\u1109\u1175\u110C\u1165\u11B7", "\u1109\u1175\u110C\u116E\u11BC", "\u1109\u1175\u110C\u1173\u11AB", "\u1109\u1175\u110C\u1175\u11B8", "\u1109\u1175\u110E\u1165\u11BC", "\u1109\u1175\u1112\u1161\u11B8", "\u1109\u1175\u1112\u1165\u11B7", "\u1109\u1175\u11A8\u1100\u116E", "\u1109\u1175\u11A8\u1100\u1175", "\u1109\u1175\u11A8\u1103\u1161\u11BC", "\u1109\u1175\u11A8\u1105\u1163\u11BC", "\u1109\u1175\u11A8\u1105\u116D\u1111\u116E\u11B7", "\u1109\u1175\u11A8\u1106\u116E\u11AF", "\u1109\u1175\u11A8\u1108\u1161\u11BC", "\u1109\u1175\u11A8\u1109\u1161", "\u1109\u1175\u11A8\u1109\u1162\u11BC\u1112\u116A\u11AF", "\u1109\u1175\u11A8\u110E\u1169", "\u1109\u1175\u11A8\u1110\u1161\u11A8", "\u1109\u1175\u11A8\u1111\u116E\u11B7", "\u1109\u1175\u11AB\u1100\u1169", "\u1109\u1175\u11AB\u1100\u1172", "\u1109\u1175\u11AB\u1102\u1167\u11B7", "\u1109\u1175\u11AB\u1106\u116E\u11AB", "\u1109\u1175\u11AB\u1107\u1161\u11AF", "\u1109\u1175\u11AB\u1107\u1175", "\u1109\u1175\u11AB\u1109\u1161", "\u1109\u1175\u11AB\u1109\u1166", "\u1109\u1175\u11AB\u110B\u116D\u11BC", "\u1109\u1175\u11AB\u110C\u1166\u1111\u116E\u11B7", "\u1109\u1175\u11AB\u110E\u1165\u11BC", "\u1109\u1175\u11AB\u110E\u1166", "\u1109\u1175\u11AB\u1112\u116A", "\u1109\u1175\u11AF\u1100\u1161\u11B7", "\u1109\u1175\u11AF\u1102\u1162", "\u1109\u1175\u11AF\u1105\u1167\u11A8", "\u1109\u1175\u11AF\u1105\u1168", "\u1109\u1175\u11AF\u1106\u1161\u11BC", "\u1109\u1175\u11AF\u1109\u116E", "\u1109\u1175\u11AF\u1109\u1173\u11B8", "\u1109\u1175\u11AF\u1109\u1175", "\u1109\u1175\u11AF\u110C\u1161\u11BC", "\u1109\u1175\u11AF\u110C\u1165\u11BC", "\u1109\u1175\u11AF\u110C\u1175\u11AF\u110C\u1165\u11A8", "\u1109\u1175\u11AF\u110E\u1165\u11AB", "\u1109\u1175\u11AF\u110E\u1166", "\u1109\u1175\u11AF\u110F\u1165\u11BA", "\u1109\u1175\u11AF\u1110\u1162", "\u1109\u1175\u11AF\u1111\u1162", "\u1109\u1175\u11AF\u1112\u1165\u11B7", "\u1109\u1175\u11AF\u1112\u1167\u11AB", "\u1109\u1175\u11B7\u1105\u1175", "\u1109\u1175\u11B7\u1107\u116E\u1105\u1173\u11B7", "\u1109\u1175\u11B7\u1109\u1161", "\u1109\u1175\u11B7\u110C\u1161\u11BC", "\u1109\u1175\u11B7\u110C\u1165\u11BC", "\u1109\u1175\u11B7\u1111\u1161\u11AB", "\u110A\u1161\u11BC\u1103\u116E\u11BC\u110B\u1175", "\u110A\u1175\u1105\u1173\u11B7", "\u110A\u1175\u110B\u1161\u11BA", "\u110B\u1161\u1100\u1161\u110A\u1175", "\u110B\u1161\u1102\u1161\u110B\u116E\u11AB\u1109\u1165", "\u110B\u1161\u1103\u1173\u1102\u1175\u11B7", "\u110B\u1161\u1103\u1173\u11AF", "\u110B\u1161\u1109\u1171\u110B\u116E\u11B7", "\u110B\u1161\u1109\u1173\u1111\u1161\u11AF\u1110\u1173", "\u110B\u1161\u1109\u1175\u110B\u1161", "\u110B\u1161\u110B\u116E\u11AF\u1105\u1165", "\u110B\u1161\u110C\u1165\u110A\u1175", "\u110B\u1161\u110C\u116E\u11B7\u1106\u1161", "\u110B\u1161\u110C\u1175\u11A8", "\u110B\u1161\u110E\u1175\u11B7", "\u110B\u1161\u1111\u1161\u1110\u1173", "\u110B\u1161\u1111\u1173\u1105\u1175\u110F\u1161", "\u110B\u1161\u1111\u1173\u11B7", "\u110B\u1161\u1112\u1169\u11B8", "\u110B\u1161\u1112\u1173\u11AB", "\u110B\u1161\u11A8\u1100\u1175", "\u110B\u1161\u11A8\u1106\u1169\u11BC", "\u110B\u1161\u11A8\u1109\u116E", "\u110B\u1161\u11AB\u1100\u1162", "\u110B\u1161\u11AB\u1100\u1167\u11BC", "\u110B\u1161\u11AB\u1100\u116A", "\u110B\u1161\u11AB\u1102\u1162", "\u110B\u1161\u11AB\u1102\u1167\u11BC", "\u110B\u1161\u11AB\u1103\u1169\u11BC", "\u110B\u1161\u11AB\u1107\u1161\u11BC", "\u110B\u1161\u11AB\u1107\u116E", "\u110B\u1161\u11AB\u110C\u116E", "\u110B\u1161\u11AF\u1105\u116E\u1106\u1175\u1102\u1172\u11B7", "\u110B\u1161\u11AF\u110F\u1169\u110B\u1169\u11AF", "\u110B\u1161\u11B7\u1109\u1175", "\u110B\u1161\u11B7\u110F\u1165\u11BA", "\u110B\u1161\u11B8\u1105\u1167\u11A8", "\u110B\u1161\u11C1\u1102\u1161\u11AF", "\u110B\u1161\u11C1\u1106\u116E\u11AB", "\u110B\u1162\u110B\u1175\u11AB", "\u110B\u1162\u110C\u1165\u11BC", "\u110B\u1162\u11A8\u1109\u116E", "\u110B\u1162\u11AF\u1107\u1165\u11B7", "\u110B\u1163\u1100\u1161\u11AB", "\u110B\u1163\u1103\u1161\u11AB", "\u110B\u1163\u110B\u1169\u11BC", "\u110B\u1163\u11A8\u1100\u1161\u11AB", "\u110B\u1163\u11A8\u1100\u116E\u11A8", "\u110B\u1163\u11A8\u1109\u1169\u11A8", "\u110B\u1163\u11A8\u1109\u116E", "\u110B\u1163\u11A8\u110C\u1165\u11B7", "\u110B\u1163\u11A8\u1111\u116E\u11B7", "\u110B\u1163\u11A8\u1112\u1169\u11AB\u1102\u1167", "\u110B\u1163\u11BC\u1102\u1167\u11B7", "\u110B\u1163\u11BC\u1105\u1167\u11A8", "\u110B\u1163\u11BC\u1106\u1161\u11AF", "\u110B\u1163\u11BC\u1107\u1162\u110E\u116E", "\u110B\u1163\u11BC\u110C\u116E", "\u110B\u1163\u11BC\u1111\u1161", "\u110B\u1165\u1103\u116E\u11B7", "\u110B\u1165\u1105\u1167\u110B\u116E\u11B7", "\u110B\u1165\u1105\u1173\u11AB", "\u110B\u1165\u110C\u1166\u11BA\u1107\u1161\u11B7", "\u110B\u1165\u110D\u1162\u11BB\u1103\u1173\u11AB", "\u110B\u1165\u110D\u1165\u1103\u1161\u1100\u1161", "\u110B\u1165\u110D\u1165\u11AB\u110C\u1175", "\u110B\u1165\u11AB\u1102\u1175", "\u110B\u1165\u11AB\u1103\u1165\u11A8", "\u110B\u1165\u11AB\u1105\u1169\u11AB", "\u110B\u1165\u11AB\u110B\u1165", "\u110B\u1165\u11AF\u1100\u116E\u11AF", "\u110B\u1165\u11AF\u1105\u1173\u11AB", "\u110B\u1165\u11AF\u110B\u1173\u11B7", "\u110B\u1165\u11AF\u1111\u1175\u11BA", "\u110B\u1165\u11B7\u1106\u1161", "\u110B\u1165\u11B8\u1106\u116E", "\u110B\u1165\u11B8\u110C\u1169\u11BC", "\u110B\u1165\u11B8\u110E\u1166", "\u110B\u1165\u11BC\u1103\u1165\u11BC\u110B\u1175", "\u110B\u1165\u11BC\u1106\u1161\u11BC", "\u110B\u1165\u11BC\u1110\u1165\u1105\u1175", "\u110B\u1165\u11BD\u1100\u1173\u110C\u1166", "\u110B\u1166\u1102\u1165\u110C\u1175", "\u110B\u1166\u110B\u1165\u110F\u1165\u11AB", "\u110B\u1166\u11AB\u110C\u1175\u11AB", "\u110B\u1167\u1100\u1165\u11AB", "\u110B\u1167\u1100\u1169\u1109\u1162\u11BC", "\u110B\u1167\u1100\u116A\u11AB", "\u110B\u1167\u1100\u116E\u11AB", "\u110B\u1167\u1100\u116F\u11AB", "\u110B\u1167\u1103\u1162\u1109\u1162\u11BC", "\u110B\u1167\u1103\u1165\u11B2", "\u110B\u1167\u1103\u1169\u11BC\u1109\u1162\u11BC", "\u110B\u1167\u1103\u1173\u11AB", "\u110B\u1167\u1105\u1169\u11AB", "\u110B\u1167\u1105\u1173\u11B7", "\u110B\u1167\u1109\u1165\u11BA", "\u110B\u1167\u1109\u1165\u11BC", "\u110B\u1167\u110B\u116A\u11BC", "\u110B\u1167\u110B\u1175\u11AB", "\u110B\u1167\u110C\u1165\u11AB\u1112\u1175", "\u110B\u1167\u110C\u1175\u11A8\u110B\u116F\u11AB", "\u110B\u1167\u1112\u1161\u11A8\u1109\u1162\u11BC", "\u110B\u1167\u1112\u1162\u11BC", "\u110B\u1167\u11A8\u1109\u1161", "\u110B\u1167\u11A8\u1109\u1175", "\u110B\u1167\u11A8\u1112\u1161\u11AF", "\u110B\u1167\u11AB\u1100\u1167\u11AF", "\u110B\u1167\u11AB\u1100\u116E", "\u110B\u1167\u11AB\u1100\u1173\u11A8", "\u110B\u1167\u11AB\u1100\u1175", "\u110B\u1167\u11AB\u1105\u1161\u11A8", "\u110B\u1167\u11AB\u1109\u1165\u11AF", "\u110B\u1167\u11AB\u1109\u1166", "\u110B\u1167\u11AB\u1109\u1169\u11A8", "\u110B\u1167\u11AB\u1109\u1173\u11B8", "\u110B\u1167\u11AB\u110B\u1162", "\u110B\u1167\u11AB\u110B\u1168\u110B\u1175\u11AB", "\u110B\u1167\u11AB\u110B\u1175\u11AB", "\u110B\u1167\u11AB\u110C\u1161\u11BC", "\u110B\u1167\u11AB\u110C\u116E", "\u110B\u1167\u11AB\u110E\u116E\u11AF", "\u110B\u1167\u11AB\u1111\u1175\u11AF", "\u110B\u1167\u11AB\u1112\u1161\u11B8", "\u110B\u1167\u11AB\u1112\u1172", "\u110B\u1167\u11AF\u1100\u1175", "\u110B\u1167\u11AF\u1106\u1162", "\u110B\u1167\u11AF\u1109\u116C", "\u110B\u1167\u11AF\u1109\u1175\u11B7\u1112\u1175", "\u110B\u1167\u11AF\u110C\u1165\u11BC", "\u110B\u1167\u11AF\u110E\u1161", "\u110B\u1167\u11AF\u1112\u1173\u11AF", "\u110B\u1167\u11B7\u1105\u1167", "\u110B\u1167\u11B8\u1109\u1165", "\u110B\u1167\u11BC\u1100\u116E\u11A8", "\u110B\u1167\u11BC\u1102\u1161\u11B7", "\u110B\u1167\u11BC\u1109\u1161\u11BC", "\u110B\u1167\u11BC\u110B\u1163\u11BC", "\u110B\u1167\u11BC\u110B\u1167\u11A8", "\u110B\u1167\u11BC\u110B\u116E\u11BC", "\u110B\u1167\u11BC\u110B\u116F\u11AB\u1112\u1175", "\u110B\u1167\u11BC\u1112\u1161", "\u110B\u1167\u11BC\u1112\u1163\u11BC", "\u110B\u1167\u11BC\u1112\u1169\u11AB", "\u110B\u1167\u11BC\u1112\u116A", "\u110B\u1167\u11C1\u1100\u116E\u1105\u1175", "\u110B\u1167\u11C1\u1107\u1161\u11BC", "\u110B\u1167\u11C1\u110C\u1175\u11B8", "\u110B\u1168\u1100\u1161\u11B7", "\u110B\u1168\u1100\u1173\u11B7", "\u110B\u1168\u1107\u1161\u11BC", "\u110B\u1168\u1109\u1161\u11AB", "\u110B\u1168\u1109\u1161\u11BC", "\u110B\u1168\u1109\u1165\u11AB", "\u110B\u1168\u1109\u116E\u11AF", "\u110B\u1168\u1109\u1173\u11B8", "\u110B\u1168\u1109\u1175\u11A8\u110C\u1161\u11BC", "\u110B\u1168\u110B\u1163\u11A8", "\u110B\u1168\u110C\u1165\u11AB", "\u110B\u1168\u110C\u1165\u11AF", "\u110B\u1168\u110C\u1165\u11BC", "\u110B\u1168\u110F\u1165\u11AB\u1103\u1162", "\u110B\u1168\u11BA\u1102\u1161\u11AF", "\u110B\u1169\u1102\u1173\u11AF", "\u110B\u1169\u1105\u1161\u11A8", "\u110B\u1169\u1105\u1162\u11BA\u1103\u1169\u11BC\u110B\u1161\u11AB", "\u110B\u1169\u1105\u1166\u11AB\u110C\u1175", "\u110B\u1169\u1105\u1169\u110C\u1175", "\u110B\u1169\u1105\u1173\u11AB\u1107\u1161\u11AF", "\u110B\u1169\u1107\u1173\u11AB", "\u110B\u1169\u1109\u1175\u11B8", "\u110B\u1169\u110B\u1167\u11B7", "\u110B\u1169\u110B\u116F\u11AF", "\u110B\u1169\u110C\u1165\u11AB", "\u110B\u1169\u110C\u1175\u11A8", "\u110B\u1169\u110C\u1175\u11BC\u110B\u1165", "\u110B\u1169\u1111\u1166\u1105\u1161", "\u110B\u1169\u1111\u1175\u1109\u1173\u1110\u1166\u11AF", "\u110B\u1169\u1112\u1175\u1105\u1167", "\u110B\u1169\u11A8\u1109\u1161\u11BC", "\u110B\u1169\u11A8\u1109\u116E\u1109\u116E", "\u110B\u1169\u11AB\u1100\u1161\u11BD", "\u110B\u1169\u11AB\u1105\u1161\u110B\u1175\u11AB", "\u110B\u1169\u11AB\u1106\u1169\u11B7", "\u110B\u1169\u11AB\u110C\u1169\u11BC\u110B\u1175\u11AF", "\u110B\u1169\u11AB\u1110\u1169\u11BC", "\u110B\u1169\u11AF\u1100\u1161\u110B\u1173\u11AF", "\u110B\u1169\u11AF\u1105\u1175\u11B7\u1111\u1175\u11A8", "\u110B\u1169\u11AF\u1112\u1162", "\u110B\u1169\u11BA\u110E\u1161\u1105\u1175\u11B7", "\u110B\u116A\u110B\u1175\u1109\u1167\u110E\u1173", "\u110B\u116A\u110B\u1175\u11AB", "\u110B\u116A\u11AB\u1109\u1165\u11BC", "\u110B\u116A\u11AB\u110C\u1165\u11AB", "\u110B\u116A\u11BC\u1107\u1175", "\u110B\u116A\u11BC\u110C\u1161", "\u110B\u116B\u1102\u1163\u1112\u1161\u1106\u1167\u11AB", "\u110B\u116B\u11AB\u110C\u1175", "\u110B\u116C\u1100\u1161\u11BA\u110C\u1175\u11B8", "\u110B\u116C\u1100\u116E\u11A8", "\u110B\u116C\u1105\u1169\u110B\u116E\u11B7", "\u110B\u116C\u1109\u1161\u11B7\u110E\u1169\u11AB", "\u110B\u116C\u110E\u116E\u11AF", "\u110B\u116C\u110E\u1175\u11B7", "\u110B\u116C\u1112\u1161\u11AF\u1106\u1165\u1102\u1175", "\u110B\u116C\u11AB\u1107\u1161\u11AF", "\u110B\u116C\u11AB\u1109\u1169\u11AB", "\u110B\u116C\u11AB\u110D\u1169\u11A8", "\u110B\u116D\u1100\u1173\u11B7", "\u110B\u116D\u110B\u1175\u11AF", "\u110B\u116D\u110C\u1173\u11B7", "\u110B\u116D\u110E\u1165\u11BC", "\u110B\u116D\u11BC\u1100\u1175", "\u110B\u116D\u11BC\u1109\u1165", "\u110B\u116D\u11BC\u110B\u1165", "\u110B\u116E\u1109\u1161\u11AB", "\u110B\u116E\u1109\u1165\u11AB", "\u110B\u116E\u1109\u1173\u11BC", "\u110B\u116E\u110B\u1167\u11AB\u1112\u1175", "\u110B\u116E\u110C\u1165\u11BC", "\u110B\u116E\u110E\u1166\u1100\u116E\u11A8", "\u110B\u116E\u1111\u1167\u11AB", "\u110B\u116E\u11AB\u1103\u1169\u11BC", "\u110B\u116E\u11AB\u1106\u1167\u11BC", "\u110B\u116E\u11AB\u1107\u1161\u11AB", "\u110B\u116E\u11AB\u110C\u1165\u11AB", "\u110B\u116E\u11AB\u1112\u1162\u11BC", "\u110B\u116E\u11AF\u1109\u1161\u11AB", "\u110B\u116E\u11AF\u110B\u1173\u11B7", "\u110B\u116E\u11B7\u110C\u1175\u11A8\u110B\u1175\u11B7", "\u110B\u116E\u11BA\u110B\u1165\u1105\u1173\u11AB", "\u110B\u116E\u11BA\u110B\u1173\u11B7", "\u110B\u116F\u1102\u1161\u11A8", "\u110B\u116F\u11AB\u1100\u1169", "\u110B\u116F\u11AB\u1105\u1162", "\u110B\u116F\u11AB\u1109\u1165", "\u110B\u116F\u11AB\u1109\u116E\u11BC\u110B\u1175", "\u110B\u116F\u11AB\u110B\u1175\u11AB", "\u110B\u116F\u11AB\u110C\u1161\u11BC", "\u110B\u116F\u11AB\u1111\u1175\u1109\u1173", "\u110B\u116F\u11AF\u1100\u1173\u11B8", "\u110B\u116F\u11AF\u1103\u1173\u110F\u1165\u11B8", "\u110B\u116F\u11AF\u1109\u1166", "\u110B\u116F\u11AF\u110B\u116D\u110B\u1175\u11AF", "\u110B\u1170\u110B\u1175\u1110\u1165", "\u110B\u1171\u1107\u1161\u11AB", "\u110B\u1171\u1107\u1165\u11B8", "\u110B\u1171\u1109\u1165\u11BC", "\u110B\u1171\u110B\u116F\u11AB", "\u110B\u1171\u1112\u1165\u11B7", "\u110B\u1171\u1112\u1167\u11B8", "\u110B\u1171\u11BA\u1109\u1161\u1105\u1161\u11B7", "\u110B\u1172\u1102\u1161\u11AB\u1112\u1175", "\u110B\u1172\u1105\u1165\u11B8", "\u110B\u1172\u1106\u1167\u11BC", "\u110B\u1172\u1106\u116E\u11AF", "\u110B\u1172\u1109\u1161\u11AB", "\u110B\u1172\u110C\u1165\u11A8", "\u110B\u1172\u110E\u1175\u110B\u116F\u11AB", "\u110B\u1172\u1112\u1161\u11A8", "\u110B\u1172\u1112\u1162\u11BC", "\u110B\u1172\u1112\u1167\u11BC", "\u110B\u1172\u11A8\u1100\u116E\u11AB", "\u110B\u1172\u11A8\u1109\u1161\u11BC", "\u110B\u1172\u11A8\u1109\u1175\u11B8", "\u110B\u1172\u11A8\u110E\u1166", "\u110B\u1173\u11AB\u1112\u1162\u11BC", "\u110B\u1173\u11B7\u1105\u1167\u11A8", "\u110B\u1173\u11B7\u1105\u116D", "\u110B\u1173\u11B7\u1107\u1161\u11AB", "\u110B\u1173\u11B7\u1109\u1165\u11BC", "\u110B\u1173\u11B7\u1109\u1175\u11A8", "\u110B\u1173\u11B7\u110B\u1161\u11A8", "\u110B\u1173\u11B7\u110C\u116E", "\u110B\u1174\u1100\u1167\u11AB", "\u110B\u1174\u1102\u1169\u11AB", "\u110B\u1174\u1106\u116E\u11AB", "\u110B\u1174\u1107\u1169\u11A8", "\u110B\u1174\u1109\u1175\u11A8", "\u110B\u1174\u1109\u1175\u11B7", "\u110B\u1174\u110B\u116C\u1105\u1169", "\u110B\u1174\u110B\u116D\u11A8", "\u110B\u1174\u110B\u116F\u11AB", "\u110B\u1174\u1112\u1161\u11A8", "\u110B\u1175\u1100\u1165\u11BA", "\u110B\u1175\u1100\u1169\u11BA", "\u110B\u1175\u1102\u1167\u11B7", "\u110B\u1175\u1102\u1169\u11B7", "\u110B\u1175\u1103\u1161\u11AF", "\u110B\u1175\u1103\u1162\u1105\u1169", "\u110B\u1175\u1103\u1169\u11BC", "\u110B\u1175\u1105\u1165\u11C2\u1100\u1166", "\u110B\u1175\u1105\u1167\u11A8\u1109\u1165", "\u110B\u1175\u1105\u1169\u11AB\u110C\u1165\u11A8", "\u110B\u1175\u1105\u1173\u11B7", "\u110B\u1175\u1106\u1175\u11AB", "\u110B\u1175\u1107\u1161\u11AF\u1109\u1169", "\u110B\u1175\u1107\u1167\u11AF", "\u110B\u1175\u1107\u116E\u11AF", "\u110B\u1175\u1108\u1161\u11AF", "\u110B\u1175\u1109\u1161\u11BC", "\u110B\u1175\u1109\u1165\u11BC", "\u110B\u1175\u1109\u1173\u11AF", "\u110B\u1175\u110B\u1163\u1100\u1175", "\u110B\u1175\u110B\u116D\u11BC", "\u110B\u1175\u110B\u116E\u11BA", "\u110B\u1175\u110B\u116F\u11AF", "\u110B\u1175\u110B\u1173\u11A8\u1100\u1169", "\u110B\u1175\u110B\u1175\u11A8", "\u110B\u1175\u110C\u1165\u11AB", "\u110B\u1175\u110C\u116E\u11BC", "\u110B\u1175\u1110\u1173\u11AE\u1102\u1161\u11AF", "\u110B\u1175\u1110\u1173\u11AF", "\u110B\u1175\u1112\u1169\u11AB", "\u110B\u1175\u11AB\u1100\u1161\u11AB", "\u110B\u1175\u11AB\u1100\u1167\u11A8", "\u110B\u1175\u11AB\u1100\u1169\u11BC", "\u110B\u1175\u11AB\u1100\u116E", "\u110B\u1175\u11AB\u1100\u1173\u11AB", "\u110B\u1175\u11AB\u1100\u1175", "\u110B\u1175\u11AB\u1103\u1169", "\u110B\u1175\u11AB\u1105\u1172", "\u110B\u1175\u11AB\u1106\u116E\u11AF", "\u110B\u1175\u11AB\u1109\u1162\u11BC", "\u110B\u1175\u11AB\u1109\u116B", "\u110B\u1175\u11AB\u110B\u1167\u11AB", "\u110B\u1175\u11AB\u110B\u116F\u11AB", "\u110B\u1175\u11AB\u110C\u1162", "\u110B\u1175\u11AB\u110C\u1169\u11BC", "\u110B\u1175\u11AB\u110E\u1165\u11AB", "\u110B\u1175\u11AB\u110E\u1166", "\u110B\u1175\u11AB\u1110\u1165\u1102\u1166\u11BA", "\u110B\u1175\u11AB\u1112\u1161", "\u110B\u1175\u11AB\u1112\u1167\u11BC", "\u110B\u1175\u11AF\u1100\u1169\u11B8", "\u110B\u1175\u11AF\u1100\u1175", "\u110B\u1175\u11AF\u1103\u1161\u11AB", "\u110B\u1175\u11AF\u1103\u1162", "\u110B\u1175\u11AF\u1103\u1173\u11BC", "\u110B\u1175\u11AF\u1107\u1161\u11AB", "\u110B\u1175\u11AF\u1107\u1169\u11AB", "\u110B\u1175\u11AF\u1107\u116E", "\u110B\u1175\u11AF\u1109\u1161\u11BC", "\u110B\u1175\u11AF\u1109\u1162\u11BC", "\u110B\u1175\u11AF\u1109\u1169\u11AB", "\u110B\u1175\u11AF\u110B\u116D\u110B\u1175\u11AF", "\u110B\u1175\u11AF\u110B\u116F\u11AF", "\u110B\u1175\u11AF\u110C\u1165\u11BC", "\u110B\u1175\u11AF\u110C\u1169\u11BC", "\u110B\u1175\u11AF\u110C\u116E\u110B\u1175\u11AF", "\u110B\u1175\u11AF\u110D\u1175\u11A8", "\u110B\u1175\u11AF\u110E\u1166", "\u110B\u1175\u11AF\u110E\u1175", "\u110B\u1175\u11AF\u1112\u1162\u11BC", "\u110B\u1175\u11AF\u1112\u116C\u110B\u116D\u11BC", "\u110B\u1175\u11B7\u1100\u1173\u11B7", "\u110B\u1175\u11B7\u1106\u116E", "\u110B\u1175\u11B8\u1103\u1162", "\u110B\u1175\u11B8\u1105\u1167\u11A8", "\u110B\u1175\u11B8\u1106\u1161\u11BA", "\u110B\u1175\u11B8\u1109\u1161", "\u110B\u1175\u11B8\u1109\u116E\u11AF", "\u110B\u1175\u11B8\u1109\u1175", "\u110B\u1175\u11B8\u110B\u116F\u11AB", "\u110B\u1175\u11B8\u110C\u1161\u11BC", "\u110B\u1175\u11B8\u1112\u1161\u11A8", "\u110C\u1161\u1100\u1161\u110B\u116D\u11BC", "\u110C\u1161\u1100\u1167\u11A8", "\u110C\u1161\u1100\u1173\u11A8", "\u110C\u1161\u1103\u1169\u11BC", "\u110C\u1161\u1105\u1161\u11BC", "\u110C\u1161\u1107\u116E\u1109\u1175\u11B7", "\u110C\u1161\u1109\u1175\u11A8", "\u110C\u1161\u1109\u1175\u11AB", "\u110C\u1161\u110B\u1167\u11AB", "\u110C\u1161\u110B\u116F\u11AB", "\u110C\u1161\u110B\u1172\u11AF", "\u110C\u1161\u110C\u1165\u11AB\u1100\u1165", "\u110C\u1161\u110C\u1165\u11BC", "\u110C\u1161\u110C\u1169\u11AB\u1109\u1175\u11B7", "\u110C\u1161\u1111\u1161\u11AB", "\u110C\u1161\u11A8\u1100\u1161", "\u110C\u1161\u11A8\u1102\u1167\u11AB", "\u110C\u1161\u11A8\u1109\u1165\u11BC", "\u110C\u1161\u11A8\u110B\u1165\u11B8", "\u110C\u1161\u11A8\u110B\u116D\u11BC", "\u110C\u1161\u11A8\u110B\u1173\u11AB\u1104\u1161\u11AF", "\u110C\u1161\u11A8\u1111\u116E\u11B7", "\u110C\u1161\u11AB\u1103\u1175", "\u110C\u1161\u11AB\u1104\u1173\u11A8", "\u110C\u1161\u11AB\u110E\u1175", "\u110C\u1161\u11AF\u1106\u1169\u11BA", "\u110C\u1161\u11B7\u1101\u1161\u11AB", "\u110C\u1161\u11B7\u1109\u116E\u1112\u1161\u11B7", "\u110C\u1161\u11B7\u1109\u1175", "\u110C\u1161\u11B7\u110B\u1169\u11BA", "\u110C\u1161\u11B7\u110C\u1161\u1105\u1175", "\u110C\u1161\u11B8\u110C\u1175", "\u110C\u1161\u11BC\u1100\u116A\u11AB", "\u110C\u1161\u11BC\u1100\u116E\u11AB", "\u110C\u1161\u11BC\u1100\u1175\u1100\u1161\u11AB", "\u110C\u1161\u11BC\u1105\u1162", "\u110C\u1161\u11BC\u1105\u1168", "\u110C\u1161\u11BC\u1105\u1173", "\u110C\u1161\u11BC\u1106\u1161", "\u110C\u1161\u11BC\u1106\u1167\u11AB", "\u110C\u1161\u11BC\u1106\u1169", "\u110C\u1161\u11BC\u1106\u1175", "\u110C\u1161\u11BC\u1107\u1175", "\u110C\u1161\u11BC\u1109\u1161", "\u110C\u1161\u11BC\u1109\u1169", "\u110C\u1161\u11BC\u1109\u1175\u11A8", "\u110C\u1161\u11BC\u110B\u1162\u110B\u1175\u11AB", "\u110C\u1161\u11BC\u110B\u1175\u11AB", "\u110C\u1161\u11BC\u110C\u1165\u11B7", "\u110C\u1161\u11BC\u110E\u1161", "\u110C\u1161\u11BC\u1112\u1161\u11A8\u1100\u1173\u11B7", "\u110C\u1162\u1102\u1173\u11BC", "\u110C\u1162\u1108\u1161\u11AF\u1105\u1175", "\u110C\u1162\u1109\u1161\u11AB", "\u110C\u1162\u1109\u1162\u11BC", "\u110C\u1162\u110C\u1161\u11A8\u1102\u1167\u11AB", "\u110C\u1162\u110C\u1165\u11BC", "\u110C\u1162\u110E\u1162\u1100\u1175", "\u110C\u1162\u1111\u1161\u11AB", "\u110C\u1162\u1112\u1161\u11A8", "\u110C\u1162\u1112\u116A\u11AF\u110B\u116D\u11BC", "\u110C\u1165\u1100\u1165\u11BA", "\u110C\u1165\u1100\u1169\u1105\u1175", "\u110C\u1165\u1100\u1169\u11BA", "\u110C\u1165\u1102\u1167\u11A8", "\u110C\u1165\u1105\u1165\u11AB", "\u110C\u1165\u1105\u1165\u11C2\u1100\u1166", "\u110C\u1165\u1107\u1165\u11AB", "\u110C\u1165\u110B\u116E\u11AF", "\u110C\u1165\u110C\u1165\u11AF\u1105\u1169", "\u110C\u1165\u110E\u116E\u11A8", "\u110C\u1165\u11A8\u1100\u1173\u11A8", "\u110C\u1165\u11A8\u1103\u1161\u11BC\u1112\u1175", "\u110C\u1165\u11A8\u1109\u1165\u11BC", "\u110C\u1165\u11A8\u110B\u116D\u11BC", "\u110C\u1165\u11A8\u110B\u1173\u11BC", "\u110C\u1165\u11AB\u1100\u1162", "\u110C\u1165\u11AB\u1100\u1169\u11BC", "\u110C\u1165\u11AB\u1100\u1175", "\u110C\u1165\u11AB\u1103\u1161\u11AF", "\u110C\u1165\u11AB\u1105\u1161\u1103\u1169", "\u110C\u1165\u11AB\u1106\u1161\u11BC", "\u110C\u1165\u11AB\u1106\u116E\u11AB", "\u110C\u1165\u11AB\u1107\u1161\u11AB", "\u110C\u1165\u11AB\u1107\u116E", "\u110C\u1165\u11AB\u1109\u1166", "\u110C\u1165\u11AB\u1109\u1175", "\u110C\u1165\u11AB\u110B\u116D\u11BC", "\u110C\u1165\u11AB\u110C\u1161", "\u110C\u1165\u11AB\u110C\u1162\u11BC", "\u110C\u1165\u11AB\u110C\u116E", "\u110C\u1165\u11AB\u110E\u1165\u11AF", "\u110C\u1165\u11AB\u110E\u1166", "\u110C\u1165\u11AB\u1110\u1169\u11BC", "\u110C\u1165\u11AB\u1112\u1167", "\u110C\u1165\u11AB\u1112\u116E", "\u110C\u1165\u11AF\u1103\u1162", "\u110C\u1165\u11AF\u1106\u1161\u11BC", "\u110C\u1165\u11AF\u1107\u1161\u11AB", "\u110C\u1165\u11AF\u110B\u1163\u11A8", "\u110C\u1165\u11AF\u110E\u1161", "\u110C\u1165\u11B7\u1100\u1165\u11B7", "\u110C\u1165\u11B7\u1109\u116E", "\u110C\u1165\u11B7\u1109\u1175\u11B7", "\u110C\u1165\u11B7\u110B\u116F\u11AB", "\u110C\u1165\u11B7\u110C\u1165\u11B7", "\u110C\u1165\u11B7\u110E\u1161", "\u110C\u1165\u11B8\u1100\u1173\u11AB", "\u110C\u1165\u11B8\u1109\u1175", "\u110C\u1165\u11B8\u110E\u1169\u11A8", "\u110C\u1165\u11BA\u1100\u1161\u1105\u1161\u11A8", "\u110C\u1165\u11BC\u1100\u1165\u110C\u1161\u11BC", "\u110C\u1165\u11BC\u1103\u1169", "\u110C\u1165\u11BC\u1105\u1172\u110C\u1161\u11BC", "\u110C\u1165\u11BC\u1105\u1175", "\u110C\u1165\u11BC\u1106\u1161\u11AF", "\u110C\u1165\u11BC\u1106\u1167\u11AB", "\u110C\u1165\u11BC\u1106\u116E\u11AB", "\u110C\u1165\u11BC\u1107\u1161\u11AB\u1103\u1162", "\u110C\u1165\u11BC\u1107\u1169", "\u110C\u1165\u11BC\u1107\u116E", "\u110C\u1165\u11BC\u1107\u1175", "\u110C\u1165\u11BC\u1109\u1161\u11BC", "\u110C\u1165\u11BC\u1109\u1165\u11BC", "\u110C\u1165\u11BC\u110B\u1169", "\u110C\u1165\u11BC\u110B\u116F\u11AB", "\u110C\u1165\u11BC\u110C\u1161\u11BC", "\u110C\u1165\u11BC\u110C\u1175", "\u110C\u1165\u11BC\u110E\u1175", "\u110C\u1165\u11BC\u1112\u116A\u11A8\u1112\u1175", "\u110C\u1166\u1100\u1169\u11BC", "\u110C\u1166\u1100\u116A\u110C\u1165\u11B7", "\u110C\u1166\u1103\u1162\u1105\u1169", "\u110C\u1166\u1106\u1169\u11A8", "\u110C\u1166\u1107\u1161\u11AF", "\u110C\u1166\u1107\u1165\u11B8", "\u110C\u1166\u1109\u1161\u11BA\u1102\u1161\u11AF", "\u110C\u1166\u110B\u1161\u11AB", "\u110C\u1166\u110B\u1175\u11AF", "\u110C\u1166\u110C\u1161\u11A8", "\u110C\u1166\u110C\u116E\u1103\u1169", "\u110C\u1166\u110E\u116E\u11AF", "\u110C\u1166\u1111\u116E\u11B7", "\u110C\u1166\u1112\u1161\u11AB", "\u110C\u1169\u1100\u1161\u11A8", "\u110C\u1169\u1100\u1165\u11AB", "\u110C\u1169\u1100\u1173\u11B7", "\u110C\u1169\u1100\u1175\u11BC", "\u110C\u1169\u1106\u1167\u11BC", "\u110C\u1169\u1106\u1175\u1105\u116D", "\u110C\u1169\u1109\u1161\u11BC", "\u110C\u1169\u1109\u1165\u11AB", "\u110C\u1169\u110B\u116D\u11BC\u1112\u1175", "\u110C\u1169\u110C\u1165\u11AF", "\u110C\u1169\u110C\u1165\u11BC", "\u110C\u1169\u110C\u1175\u11A8", "\u110C\u1169\u11AB\u1103\u1162\u11BA\u1106\u1161\u11AF", "\u110C\u1169\u11AB\u110C\u1162", "\u110C\u1169\u11AF\u110B\u1165\u11B8", "\u110C\u1169\u11AF\u110B\u1173\u11B7", "\u110C\u1169\u11BC\u1100\u116D", "\u110C\u1169\u11BC\u1105\u1169", "\u110C\u1169\u11BC\u1105\u1172", "\u110C\u1169\u11BC\u1109\u1169\u1105\u1175", "\u110C\u1169\u11BC\u110B\u1165\u11B8\u110B\u116F\u11AB", "\u110C\u1169\u11BC\u110C\u1169\u11BC", "\u110C\u1169\u11BC\u1112\u1161\u11B8", "\u110C\u116A\u1109\u1165\u11A8", "\u110C\u116C\u110B\u1175\u11AB", "\u110C\u116E\u1100\u116A\u11AB\u110C\u1165\u11A8", "\u110C\u116E\u1105\u1173\u11B7", "\u110C\u116E\u1106\u1161\u11AF", "\u110C\u116E\u1106\u1165\u1102\u1175", "\u110C\u116E\u1106\u1165\u11A8", "\u110C\u116E\u1106\u116E\u11AB", "\u110C\u116E\u1106\u1175\u11AB", "\u110C\u116E\u1107\u1161\u11BC", "\u110C\u116E\u1107\u1167\u11AB", "\u110C\u116E\u1109\u1175\u11A8", "\u110C\u116E\u110B\u1175\u11AB", "\u110C\u116E\u110B\u1175\u11AF", "\u110C\u116E\u110C\u1161\u11BC", "\u110C\u116E\u110C\u1165\u11AB\u110C\u1161", "\u110C\u116E\u1110\u1162\u11A8", "\u110C\u116E\u11AB\u1107\u1175", "\u110C\u116E\u11AF\u1100\u1165\u1105\u1175", "\u110C\u116E\u11AF\u1100\u1175", "\u110C\u116E\u11AF\u1106\u116E\u1102\u1174", "\u110C\u116E\u11BC\u1100\u1161\u11AB", "\u110C\u116E\u11BC\u1100\u1168\u1107\u1161\u11BC\u1109\u1169\u11BC", "\u110C\u116E\u11BC\u1100\u116E\u11A8", "\u110C\u116E\u11BC\u1102\u1167\u11AB", "\u110C\u116E\u11BC\u1103\u1161\u11AB", "\u110C\u116E\u11BC\u1103\u1169\u11A8", "\u110C\u116E\u11BC\u1107\u1161\u11AB", "\u110C\u116E\u11BC\u1107\u116E", "\u110C\u116E\u11BC\u1109\u1166", "\u110C\u116E\u11BC\u1109\u1169\u1100\u1175\u110B\u1165\u11B8", "\u110C\u116E\u11BC\u1109\u116E\u11AB", "\u110C\u116E\u11BC\u110B\u1161\u11BC", "\u110C\u116E\u11BC\u110B\u116D", "\u110C\u116E\u11BC\u1112\u1161\u11A8\u1100\u116D", "\u110C\u1173\u11A8\u1109\u1165\u11A8", "\u110C\u1173\u11A8\u1109\u1175", "\u110C\u1173\u11AF\u1100\u1165\u110B\u116E\u11B7", "\u110C\u1173\u11BC\u1100\u1161", "\u110C\u1173\u11BC\u1100\u1165", "\u110C\u1173\u11BC\u1100\u116F\u11AB", "\u110C\u1173\u11BC\u1109\u1161\u11BC", "\u110C\u1173\u11BC\u1109\u1166", "\u110C\u1175\u1100\u1161\u11A8", "\u110C\u1175\u1100\u1161\u11B8", "\u110C\u1175\u1100\u1167\u11BC", "\u110C\u1175\u1100\u1173\u11A8\u1112\u1175", "\u110C\u1175\u1100\u1173\u11B7", "\u110C\u1175\u1100\u1173\u11B8", "\u110C\u1175\u1102\u1173\u11BC", "\u110C\u1175\u1105\u1173\u11B7\u1100\u1175\u11AF", "\u110C\u1175\u1105\u1175\u1109\u1161\u11AB", "\u110C\u1175\u1107\u1161\u11BC", "\u110C\u1175\u1107\u116E\u11BC", "\u110C\u1175\u1109\u1175\u11A8", "\u110C\u1175\u110B\u1167\u11A8", "\u110C\u1175\u110B\u116E\u1100\u1162", "\u110C\u1175\u110B\u116F\u11AB", "\u110C\u1175\u110C\u1165\u11A8", "\u110C\u1175\u110C\u1165\u11B7", "\u110C\u1175\u110C\u1175\u11AB", "\u110C\u1175\u110E\u116E\u11AF", "\u110C\u1175\u11A8\u1109\u1165\u11AB", "\u110C\u1175\u11A8\u110B\u1165\u11B8", "\u110C\u1175\u11A8\u110B\u116F\u11AB", "\u110C\u1175\u11A8\u110C\u1161\u11BC", "\u110C\u1175\u11AB\u1100\u1173\u11B8", "\u110C\u1175\u11AB\u1103\u1169\u11BC", "\u110C\u1175\u11AB\u1105\u1169", "\u110C\u1175\u11AB\u1105\u116D", "\u110C\u1175\u11AB\u1105\u1175", "\u110C\u1175\u11AB\u110D\u1161", "\u110C\u1175\u11AB\u110E\u1161\u11AF", "\u110C\u1175\u11AB\u110E\u116E\u11AF", "\u110C\u1175\u11AB\u1110\u1169\u11BC", "\u110C\u1175\u11AB\u1112\u1162\u11BC", "\u110C\u1175\u11AF\u1106\u116E\u11AB", "\u110C\u1175\u11AF\u1107\u1167\u11BC", "\u110C\u1175\u11AF\u1109\u1165", "\u110C\u1175\u11B7\u110C\u1161\u11A8", "\u110C\u1175\u11B8\u1103\u1161\u11AB", "\u110C\u1175\u11B8\u110B\u1161\u11AB", "\u110C\u1175\u11B8\u110C\u116E\u11BC", "\u110D\u1161\u110C\u1173\u11BC", "\u110D\u1175\u1101\u1165\u1100\u1175", "\u110E\u1161\u1102\u1161\u11B7", "\u110E\u1161\u1105\u1161\u1105\u1175", "\u110E\u1161\u1105\u1163\u11BC", "\u110E\u1161\u1105\u1175\u11B7", "\u110E\u1161\u1107\u1167\u11AF", "\u110E\u1161\u1109\u1165\u11AB", "\u110E\u1161\u110E\u1173\u11B7", "\u110E\u1161\u11A8\u1100\u1161\u11A8", "\u110E\u1161\u11AB\u1106\u116E\u11AF", "\u110E\u1161\u11AB\u1109\u1165\u11BC", "\u110E\u1161\u11B7\u1100\u1161", "\u110E\u1161\u11B7\u1100\u1175\u1105\u1173\u11B7", "\u110E\u1161\u11B7\u1109\u1162", "\u110E\u1161\u11B7\u1109\u1165\u11A8", "\u110E\u1161\u11B7\u110B\u1167", "\u110E\u1161\u11B7\u110B\u116C", "\u110E\u1161\u11B7\u110C\u1169", "\u110E\u1161\u11BA\u110C\u1161\u11AB", "\u110E\u1161\u11BC\u1100\u1161", "\u110E\u1161\u11BC\u1100\u1169", "\u110E\u1161\u11BC\u1100\u116E", "\u110E\u1161\u11BC\u1106\u116E\u11AB", "\u110E\u1161\u11BC\u1107\u1161\u11A9", "\u110E\u1161\u11BC\u110C\u1161\u11A8", "\u110E\u1161\u11BC\u110C\u1169", "\u110E\u1162\u1102\u1165\u11AF", "\u110E\u1162\u110C\u1165\u11B7", "\u110E\u1162\u11A8\u1100\u1161\u1107\u1161\u11BC", "\u110E\u1162\u11A8\u1107\u1161\u11BC", "\u110E\u1162\u11A8\u1109\u1161\u11BC", "\u110E\u1162\u11A8\u110B\u1175\u11B7", "\u110E\u1162\u11B7\u1111\u1175\u110B\u1165\u11AB", "\u110E\u1165\u1107\u1165\u11AF", "\u110E\u1165\u110B\u1173\u11B7", "\u110E\u1165\u11AB\u1100\u116E\u11A8", "\u110E\u1165\u11AB\u1103\u116E\u11BC", "\u110E\u1165\u11AB\u110C\u1161\u11BC", "\u110E\u1165\u11AB\u110C\u1162", "\u110E\u1165\u11AB\u110E\u1165\u11AB\u1112\u1175", "\u110E\u1165\u11AF\u1103\u1169", "\u110E\u1165\u11AF\u110C\u1165\u1112\u1175", "\u110E\u1165\u11AF\u1112\u1161\u11A8", "\u110E\u1165\u11BA\u1102\u1161\u11AF", "\u110E\u1165\u11BA\u110D\u1162", "\u110E\u1165\u11BC\u1102\u1167\u11AB", "\u110E\u1165\u11BC\u1107\u1161\u110C\u1175", "\u110E\u1165\u11BC\u1109\u1169", "\u110E\u1165\u11BC\u110E\u116E\u11AB", "\u110E\u1166\u1100\u1168", "\u110E\u1166\u1105\u1167\u11A8", "\u110E\u1166\u110B\u1169\u11AB", "\u110E\u1166\u110B\u1172\u11A8", "\u110E\u1166\u110C\u116E\u11BC", "\u110E\u1166\u1112\u1165\u11B7", "\u110E\u1169\u1103\u1173\u11BC\u1112\u1161\u11A8\u1109\u1162\u11BC", "\u110E\u1169\u1107\u1161\u11AB", "\u110E\u1169\u1107\u1161\u11B8", "\u110E\u1169\u1109\u1161\u11BC\u1112\u116A", "\u110E\u1169\u1109\u116E\u11AB", "\u110E\u1169\u110B\u1167\u1105\u1173\u11B7", "\u110E\u1169\u110B\u116F\u11AB", "\u110E\u1169\u110C\u1165\u1102\u1167\u11A8", "\u110E\u1169\u110C\u1165\u11B7", "\u110E\u1169\u110E\u1165\u11BC", "\u110E\u1169\u110F\u1169\u11AF\u1105\u1175\u11BA", "\u110E\u1169\u11BA\u1107\u116E\u11AF", "\u110E\u1169\u11BC\u1100\u1161\u11A8", "\u110E\u1169\u11BC\u1105\u1175", "\u110E\u1169\u11BC\u110C\u1161\u11BC", "\u110E\u116A\u11AF\u110B\u1167\u11BC", "\u110E\u116C\u1100\u1173\u11AB", "\u110E\u116C\u1109\u1161\u11BC", "\u110E\u116C\u1109\u1165\u11AB", "\u110E\u116C\u1109\u1175\u11AB", "\u110E\u116C\u110B\u1161\u11A8", "\u110E\u116C\u110C\u1169\u11BC", "\u110E\u116E\u1109\u1165\u11A8", "\u110E\u116E\u110B\u1165\u11A8", "\u110E\u116E\u110C\u1175\u11AB", "\u110E\u116E\u110E\u1165\u11AB", "\u110E\u116E\u110E\u1173\u11A8", "\u110E\u116E\u11A8\u1100\u116E", "\u110E\u116E\u11A8\u1109\u1169", "\u110E\u116E\u11A8\u110C\u1166", "\u110E\u116E\u11A8\u1112\u1161", "\u110E\u116E\u11AF\u1100\u1173\u11AB", "\u110E\u116E\u11AF\u1107\u1161\u11AF", "\u110E\u116E\u11AF\u1109\u1161\u11AB", "\u110E\u116E\u11AF\u1109\u1175\u11AB", "\u110E\u116E\u11AF\u110B\u1167\u11AB", "\u110E\u116E\u11AF\u110B\u1175\u11B8", "\u110E\u116E\u11AF\u110C\u1161\u11BC", "\u110E\u116E\u11AF\u1111\u1161\u11AB", "\u110E\u116E\u11BC\u1100\u1167\u11A8", "\u110E\u116E\u11BC\u1100\u1169", "\u110E\u116E\u11BC\u1103\u1169\u11AF", "\u110E\u116E\u11BC\u1107\u116E\u11AB\u1112\u1175", "\u110E\u116E\u11BC\u110E\u1165\u11BC\u1103\u1169", "\u110E\u1171\u110B\u1165\u11B8", "\u110E\u1171\u110C\u1175\u11A8", "\u110E\u1171\u1112\u1163\u11BC", "\u110E\u1175\u110B\u1163\u11A8", "\u110E\u1175\u11AB\u1100\u116E", "\u110E\u1175\u11AB\u110E\u1165\u11A8", "\u110E\u1175\u11AF\u1109\u1175\u11B8", "\u110E\u1175\u11AF\u110B\u116F\u11AF", "\u110E\u1175\u11AF\u1111\u1161\u11AB", "\u110E\u1175\u11B7\u1103\u1162", "\u110E\u1175\u11B7\u1106\u116E\u11A8", "\u110E\u1175\u11B7\u1109\u1175\u11AF", "\u110E\u1175\u11BA\u1109\u1169\u11AF", "\u110E\u1175\u11BC\u110E\u1161\u11AB", "\u110F\u1161\u1106\u1166\u1105\u1161", "\u110F\u1161\u110B\u116E\u11AB\u1110\u1165", "\u110F\u1161\u11AF\u1100\u116E\u11A8\u1109\u116E", "\u110F\u1162\u1105\u1175\u11A8\u1110\u1165", "\u110F\u1162\u11B7\u1111\u1165\u1109\u1173", "\u110F\u1162\u11B7\u1111\u1166\u110B\u1175\u11AB", "\u110F\u1165\u1110\u1173\u11AB", "\u110F\u1165\u11AB\u1103\u1175\u1109\u1167\u11AB", "\u110F\u1165\u11AF\u1105\u1165", "\u110F\u1165\u11B7\u1111\u1172\u1110\u1165", "\u110F\u1169\u1101\u1175\u1105\u1175", "\u110F\u1169\u1106\u1175\u1103\u1175", "\u110F\u1169\u11AB\u1109\u1165\u1110\u1173", "\u110F\u1169\u11AF\u1105\u1161", "\u110F\u1169\u11B7\u1111\u1173\u11AF\u1105\u1166\u11A8\u1109\u1173", "\u110F\u1169\u11BC\u1102\u1161\u1106\u116E\u11AF", "\u110F\u116B\u1100\u1161\u11B7", "\u110F\u116E\u1103\u1166\u1110\u1161", "\u110F\u1173\u1105\u1175\u11B7", "\u110F\u1173\u11AB\u1100\u1175\u11AF", "\u110F\u1173\u11AB\u1104\u1161\u11AF", "\u110F\u1173\u11AB\u1109\u1169\u1105\u1175", "\u110F\u1173\u11AB\u110B\u1161\u1103\u1173\u11AF", "\u110F\u1173\u11AB\u110B\u1165\u1106\u1165\u1102\u1175", "\u110F\u1173\u11AB\u110B\u1175\u11AF", "\u110F\u1173\u11AB\u110C\u1165\u11AF", "\u110F\u1173\u11AF\u1105\u1162\u1109\u1175\u11A8", "\u110F\u1173\u11AF\u1105\u1165\u11B8", "\u110F\u1175\u11AF\u1105\u1169", "\u1110\u1161\u110B\u1175\u11B8", "\u1110\u1161\u110C\u1161\u1100\u1175", "\u1110\u1161\u11A8\u1100\u116E", "\u1110\u1161\u11A8\u110C\u1161", "\u1110\u1161\u11AB\u1109\u1162\u11BC", "\u1110\u1162\u1100\u116F\u11AB\u1103\u1169", "\u1110\u1162\u110B\u1163\u11BC", "\u1110\u1162\u1111\u116E\u11BC", "\u1110\u1162\u11A8\u1109\u1175", "\u1110\u1162\u11AF\u1105\u1165\u11AB\u1110\u1173", "\u1110\u1165\u1102\u1165\u11AF", "\u1110\u1165\u1106\u1175\u1102\u1165\u11AF", "\u1110\u1166\u1102\u1175\u1109\u1173", "\u1110\u1166\u1109\u1173\u1110\u1173", "\u1110\u1166\u110B\u1175\u1107\u1173\u11AF", "\u1110\u1166\u11AF\u1105\u1166\u1107\u1175\u110C\u1165\u11AB", "\u1110\u1169\u1105\u1169\u11AB", "\u1110\u1169\u1106\u1161\u1110\u1169", "\u1110\u1169\u110B\u116D\u110B\u1175\u11AF", "\u1110\u1169\u11BC\u1100\u1168", "\u1110\u1169\u11BC\u1100\u116A", "\u1110\u1169\u11BC\u1105\u1169", "\u1110\u1169\u11BC\u1109\u1175\u11AB", "\u1110\u1169\u11BC\u110B\u1167\u11A8", "\u1110\u1169\u11BC\u110B\u1175\u11AF", "\u1110\u1169\u11BC\u110C\u1161\u11BC", "\u1110\u1169\u11BC\u110C\u1166", "\u1110\u1169\u11BC\u110C\u1173\u11BC", "\u1110\u1169\u11BC\u1112\u1161\u11B8", "\u1110\u1169\u11BC\u1112\u116A", "\u1110\u116C\u1100\u1173\u11AB", "\u1110\u116C\u110B\u116F\u11AB", "\u1110\u116C\u110C\u1175\u11A8\u1100\u1173\u11B7", "\u1110\u1171\u1100\u1175\u11B7", "\u1110\u1173\u1105\u1165\u11A8", "\u1110\u1173\u11A8\u1100\u1173\u11B8", "\u1110\u1173\u11A8\u1107\u1167\u11AF", "\u1110\u1173\u11A8\u1109\u1165\u11BC", "\u1110\u1173\u11A8\u1109\u116E", "\u1110\u1173\u11A8\u110C\u1175\u11BC", "\u1110\u1173\u11A8\u1112\u1175", "\u1110\u1173\u11AB\u1110\u1173\u11AB\u1112\u1175", "\u1110\u1175\u1109\u1167\u110E\u1173", "\u1111\u1161\u1105\u1161\u11AB\u1109\u1162\u11A8", "\u1111\u1161\u110B\u1175\u11AF", "\u1111\u1161\u110E\u116E\u11AF\u1109\u1169", "\u1111\u1161\u11AB\u1100\u1167\u11AF", "\u1111\u1161\u11AB\u1103\u1161\u11AB", "\u1111\u1161\u11AB\u1106\u1162", "\u1111\u1161\u11AB\u1109\u1161", "\u1111\u1161\u11AF\u1109\u1175\u11B8", "\u1111\u1161\u11AF\u110B\u116F\u11AF", "\u1111\u1161\u11B8\u1109\u1169\u11BC", "\u1111\u1162\u1109\u1167\u11AB", "\u1111\u1162\u11A8\u1109\u1173", "\u1111\u1162\u11A8\u1109\u1175\u1106\u1175\u11AF\u1105\u1175", "\u1111\u1162\u11AB\u1110\u1175", "\u1111\u1165\u1109\u1166\u11AB\u1110\u1173", "\u1111\u1166\u110B\u1175\u11AB\u1110\u1173", "\u1111\u1167\u11AB\u1100\u1167\u11AB", "\u1111\u1167\u11AB\u110B\u1174", "\u1111\u1167\u11AB\u110C\u1175", "\u1111\u1167\u11AB\u1112\u1175", "\u1111\u1167\u11BC\u1100\u1161", "\u1111\u1167\u11BC\u1100\u1172\u11AB", "\u1111\u1167\u11BC\u1109\u1162\u11BC", "\u1111\u1167\u11BC\u1109\u1169", "\u1111\u1167\u11BC\u110B\u1163\u11BC", "\u1111\u1167\u11BC\u110B\u1175\u11AF", "\u1111\u1167\u11BC\u1112\u116A", "\u1111\u1169\u1109\u1173\u1110\u1165", "\u1111\u1169\u110B\u1175\u11AB\u1110\u1173", "\u1111\u1169\u110C\u1161\u11BC", "\u1111\u1169\u1112\u1161\u11B7", "\u1111\u116D\u1106\u1167\u11AB", "\u1111\u116D\u110C\u1165\u11BC", "\u1111\u116D\u110C\u116E\u11AB", "\u1111\u116D\u1112\u1167\u11AB", "\u1111\u116E\u11B7\u1106\u1169\u11A8", "\u1111\u116E\u11B7\u110C\u1175\u11AF", "\u1111\u116E\u11BC\u1100\u1167\u11BC", "\u1111\u116E\u11BC\u1109\u1169\u11A8", "\u1111\u116E\u11BC\u1109\u1173\u11B8", "\u1111\u1173\u1105\u1161\u11BC\u1109\u1173", "\u1111\u1173\u1105\u1175\u11AB\u1110\u1165", "\u1111\u1173\u11AF\u1105\u1161\u1109\u1173\u1110\u1175\u11A8", "\u1111\u1175\u1100\u1169\u11AB", "\u1111\u1175\u1106\u1161\u11BC", "\u1111\u1175\u110B\u1161\u1102\u1169", "\u1111\u1175\u11AF\u1105\u1173\u11B7", "\u1111\u1175\u11AF\u1109\u116E", "\u1111\u1175\u11AF\u110B\u116D", "\u1111\u1175\u11AF\u110C\u1161", "\u1111\u1175\u11AF\u1110\u1169\u11BC", "\u1111\u1175\u11BC\u1100\u1168", "\u1112\u1161\u1102\u1173\u1102\u1175\u11B7", "\u1112\u1161\u1102\u1173\u11AF", "\u1112\u1161\u1103\u1173\u110B\u1170\u110B\u1165", "\u1112\u1161\u1105\u116E\u11BA\u1107\u1161\u11B7", "\u1112\u1161\u1107\u1161\u11AB\u1100\u1175", "\u1112\u1161\u1109\u116E\u11A8\u110C\u1175\u11B8", "\u1112\u1161\u1109\u116E\u11AB", "\u1112\u1161\u110B\u1167\u1110\u1173\u11AB", "\u1112\u1161\u110C\u1175\u1106\u1161\u11AB", "\u1112\u1161\u110E\u1165\u11AB", "\u1112\u1161\u1111\u116E\u11B7", "\u1112\u1161\u1111\u1175\u11AF", "\u1112\u1161\u11A8\u1100\u116A", "\u1112\u1161\u11A8\u1100\u116D", "\u1112\u1161\u11A8\u1100\u1173\u11B8", "\u1112\u1161\u11A8\u1100\u1175", "\u1112\u1161\u11A8\u1102\u1167\u11AB", "\u1112\u1161\u11A8\u1105\u1167\u11A8", "\u1112\u1161\u11A8\u1107\u1165\u11AB", "\u1112\u1161\u11A8\u1107\u116E\u1106\u1169", "\u1112\u1161\u11A8\u1107\u1175", "\u1112\u1161\u11A8\u1109\u1162\u11BC", "\u1112\u1161\u11A8\u1109\u116E\u11AF", "\u1112\u1161\u11A8\u1109\u1173\u11B8", "\u1112\u1161\u11A8\u110B\u116D\u11BC\u1111\u116E\u11B7", "\u1112\u1161\u11A8\u110B\u116F\u11AB", "\u1112\u1161\u11A8\u110B\u1171", "\u1112\u1161\u11A8\u110C\u1161", "\u1112\u1161\u11A8\u110C\u1165\u11B7", "\u1112\u1161\u11AB\u1100\u1168", "\u1112\u1161\u11AB\u1100\u1173\u11AF", "\u1112\u1161\u11AB\u1101\u1165\u1107\u1165\u11AB\u110B\u1166", "\u1112\u1161\u11AB\u1102\u1161\u11BD", "\u1112\u1161\u11AB\u1102\u116E\u11AB", "\u1112\u1161\u11AB\u1103\u1169\u11BC\u110B\u1161\u11AB", "\u1112\u1161\u11AB\u1104\u1162", "\u1112\u1161\u11AB\u1105\u1161\u1109\u1161\u11AB", "\u1112\u1161\u11AB\u1106\u1161\u1103\u1175", "\u1112\u1161\u11AB\u1106\u116E\u11AB", "\u1112\u1161\u11AB\u1107\u1165\u11AB", "\u1112\u1161\u11AB\u1107\u1169\u11A8", "\u1112\u1161\u11AB\u1109\u1175\u11A8", "\u1112\u1161\u11AB\u110B\u1167\u1105\u1173\u11B7", "\u1112\u1161\u11AB\u110D\u1169\u11A8", "\u1112\u1161\u11AF\u1106\u1165\u1102\u1175", "\u1112\u1161\u11AF\u110B\u1161\u1107\u1165\u110C\u1175", "\u1112\u1161\u11AF\u110B\u1175\u11AB", "\u1112\u1161\u11B7\u1101\u1166", "\u1112\u1161\u11B7\u1107\u116E\u1105\u1169", "\u1112\u1161\u11B8\u1100\u1167\u11A8", "\u1112\u1161\u11B8\u1105\u1175\u110C\u1165\u11A8", "\u1112\u1161\u11BC\u1100\u1169\u11BC", "\u1112\u1161\u11BC\u1100\u116E", "\u1112\u1161\u11BC\u1109\u1161\u11BC", "\u1112\u1161\u11BC\u110B\u1174", "\u1112\u1162\u1100\u1167\u11AF", "\u1112\u1162\u1100\u116E\u11AB", "\u1112\u1162\u1103\u1161\u11B8", "\u1112\u1162\u1103\u1161\u11BC", "\u1112\u1162\u1106\u116E\u11AF", "\u1112\u1162\u1109\u1165\u11A8", "\u1112\u1162\u1109\u1165\u11AF", "\u1112\u1162\u1109\u116E\u110B\u116D\u11A8\u110C\u1161\u11BC", "\u1112\u1162\u110B\u1161\u11AB", "\u1112\u1162\u11A8\u1109\u1175\u11B7", "\u1112\u1162\u11AB\u1103\u1173\u1107\u1162\u11A8", "\u1112\u1162\u11B7\u1107\u1165\u1100\u1165", "\u1112\u1162\u11BA\u1107\u1167\u11C0", "\u1112\u1162\u11BA\u1109\u1161\u11AF", "\u1112\u1162\u11BC\u1103\u1169\u11BC", "\u1112\u1162\u11BC\u1107\u1169\u11A8", "\u1112\u1162\u11BC\u1109\u1161", "\u1112\u1162\u11BC\u110B\u116E\u11AB", "\u1112\u1162\u11BC\u110B\u1171", "\u1112\u1163\u11BC\u1100\u1175", "\u1112\u1163\u11BC\u1109\u1161\u11BC", "\u1112\u1163\u11BC\u1109\u116E", "\u1112\u1165\u1105\u1161\u11A8", "\u1112\u1165\u110B\u116D\u11BC", "\u1112\u1166\u11AF\u1100\u1175", "\u1112\u1167\u11AB\u1100\u116A\u11AB", "\u1112\u1167\u11AB\u1100\u1173\u11B7", "\u1112\u1167\u11AB\u1103\u1162", "\u1112\u1167\u11AB\u1109\u1161\u11BC", "\u1112\u1167\u11AB\u1109\u1175\u11AF", "\u1112\u1167\u11AB\u110C\u1161\u11BC", "\u1112\u1167\u11AB\u110C\u1162", "\u1112\u1167\u11AB\u110C\u1175", "\u1112\u1167\u11AF\u110B\u1162\u11A8", "\u1112\u1167\u11B8\u1105\u1167\u11A8", "\u1112\u1167\u11BC\u1107\u116E", "\u1112\u1167\u11BC\u1109\u1161", "\u1112\u1167\u11BC\u1109\u116E", "\u1112\u1167\u11BC\u1109\u1175\u11A8", "\u1112\u1167\u11BC\u110C\u1166", "\u1112\u1167\u11BC\u1110\u1162", "\u1112\u1167\u11BC\u1111\u1167\u11AB", "\u1112\u1168\u1110\u1162\u11A8", "\u1112\u1169\u1100\u1175\u1109\u1175\u11B7", "\u1112\u1169\u1102\u1161\u11B7", "\u1112\u1169\u1105\u1161\u11BC\u110B\u1175", "\u1112\u1169\u1107\u1161\u11A8", "\u1112\u1169\u1110\u1166\u11AF", "\u1112\u1169\u1112\u1173\u11B8", "\u1112\u1169\u11A8\u1109\u1175", "\u1112\u1169\u11AF\u1105\u1169", "\u1112\u1169\u11B7\u1111\u1166\u110B\u1175\u110C\u1175", "\u1112\u1169\u11BC\u1107\u1169", "\u1112\u1169\u11BC\u1109\u116E", "\u1112\u1169\u11BC\u110E\u1161", "\u1112\u116A\u1106\u1167\u11AB", "\u1112\u116A\u1107\u116E\u11AB", "\u1112\u116A\u1109\u1161\u11AF", "\u1112\u116A\u110B\u116D\u110B\u1175\u11AF", "\u1112\u116A\u110C\u1161\u11BC", "\u1112\u116A\u1112\u1161\u11A8", "\u1112\u116A\u11A8\u1107\u1169", "\u1112\u116A\u11A8\u110B\u1175\u11AB", "\u1112\u116A\u11A8\u110C\u1161\u11BC", "\u1112\u116A\u11A8\u110C\u1165\u11BC", "\u1112\u116A\u11AB\u1100\u1161\u11B8", "\u1112\u116A\u11AB\u1100\u1167\u11BC", "\u1112\u116A\u11AB\u110B\u1167\u11BC", "\u1112\u116A\u11AB\u110B\u1172\u11AF", "\u1112\u116A\u11AB\u110C\u1161", "\u1112\u116A\u11AF\u1100\u1175", "\u1112\u116A\u11AF\u1103\u1169\u11BC", "\u1112\u116A\u11AF\u1107\u1161\u11AF\u1112\u1175", "\u1112\u116A\u11AF\u110B\u116D\u11BC", "\u1112\u116A\u11AF\u110D\u1161\u11A8", "\u1112\u116C\u1100\u1167\u11AB", "\u1112\u116C\u1100\u116A\u11AB", "\u1112\u116C\u1107\u1169\u11A8", "\u1112\u116C\u1109\u1162\u11A8", "\u1112\u116C\u110B\u116F\u11AB", "\u1112\u116C\u110C\u1161\u11BC", "\u1112\u116C\u110C\u1165\u11AB", "\u1112\u116C\u11BA\u1109\u116E", "\u1112\u116C\u11BC\u1103\u1161\u11AB\u1107\u1169\u1103\u1169", "\u1112\u116D\u110B\u1172\u11AF\u110C\u1165\u11A8", "\u1112\u116E\u1107\u1161\u11AB", "\u1112\u116E\u110E\u116E\u11BA\u1100\u1161\u1105\u116E", "\u1112\u116E\u11AB\u1105\u1167\u11AB", "\u1112\u116F\u11AF\u110A\u1175\u11AB", "\u1112\u1172\u1109\u1175\u11A8", "\u1112\u1172\u110B\u1175\u11AF", "\u1112\u1172\u11BC\u1102\u1162", "\u1112\u1173\u1105\u1173\u11B7", "\u1112\u1173\u11A8\u1107\u1162\u11A8", "\u1112\u1173\u11A8\u110B\u1175\u11AB", "\u1112\u1173\u11AB\u110C\u1165\u11A8", "\u1112\u1173\u11AB\u1112\u1175", "\u1112\u1173\u11BC\u1106\u1175", "\u1112\u1173\u11BC\u1107\u116E\u11AB", "\u1112\u1174\u1100\u1169\u11A8", "\u1112\u1174\u1106\u1161\u11BC", "\u1112\u1174\u1109\u1162\u11BC", "\u1112\u1174\u11AB\u1109\u1162\u11A8", "\u1112\u1175\u11B7\u1101\u1165\u11BA"];
  }
});

// node_modules/bip39-mnemonic/wordlist/portuguese.json
var require_portuguese = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/portuguese.json"(exports2, module2) {
    module2.exports = ["abacate", "abaixo", "abalar", "abater", "abduzir", "abelha", "aberto", "abismo", "abotoar", "abranger", "abreviar", "abrigar", "abrupto", "absinto", "absoluto", "absurdo", "abutre", "acabado", "acalmar", "acampar", "acanhar", "acaso", "aceitar", "acelerar", "acenar", "acervo", "acessar", "acetona", "achatar", "acidez", "acima", "acionado", "acirrar", "aclamar", "aclive", "acolhida", "acomodar", "acoplar", "acordar", "acumular", "acusador", "adaptar", "adega", "adentro", "adepto", "adequar", "aderente", "adesivo", "adeus", "adiante", "aditivo", "adjetivo", "adjunto", "admirar", "adorar", "adquirir", "adubo", "adverso", "advogado", "aeronave", "afastar", "aferir", "afetivo", "afinador", "afivelar", "aflito", "afluente", "afrontar", "agachar", "agarrar", "agasalho", "agenciar", "agilizar", "agiota", "agitado", "agora", "agradar", "agreste", "agrupar", "aguardar", "agulha", "ajoelhar", "ajudar", "ajustar", "alameda", "alarme", "alastrar", "alavanca", "albergue", "albino", "alcatra", "aldeia", "alecrim", "alegria", "alertar", "alface", "alfinete", "algum", "alheio", "aliar", "alicate", "alienar", "alinhar", "aliviar", "almofada", "alocar", "alpiste", "alterar", "altitude", "alucinar", "alugar", "aluno", "alusivo", "alvo", "amaciar", "amador", "amarelo", "amassar", "ambas", "ambiente", "ameixa", "amenizar", "amido", "amistoso", "amizade", "amolador", "amontoar", "amoroso", "amostra", "amparar", "ampliar", "ampola", "anagrama", "analisar", "anarquia", "anatomia", "andaime", "anel", "anexo", "angular", "animar", "anjo", "anomalia", "anotado", "ansioso", "anterior", "anuidade", "anunciar", "anzol", "apagador", "apalpar", "apanhado", "apego", "apelido", "apertada", "apesar", "apetite", "apito", "aplauso", "aplicada", "apoio", "apontar", "aposta", "aprendiz", "aprovar", "aquecer", "arame", "aranha", "arara", "arcada", "ardente", "areia", "arejar", "arenito", "aresta", "argiloso", "argola", "arma", "arquivo", "arraial", "arrebate", "arriscar", "arroba", "arrumar", "arsenal", "arterial", "artigo", "arvoredo", "asfaltar", "asilado", "aspirar", "assador", "assinar", "assoalho", "assunto", "astral", "atacado", "atadura", "atalho", "atarefar", "atear", "atender", "aterro", "ateu", "atingir", "atirador", "ativo", "atoleiro", "atracar", "atrevido", "atriz", "atual", "atum", "auditor", "aumentar", "aura", "aurora", "autismo", "autoria", "autuar", "avaliar", "avante", "avaria", "avental", "avesso", "aviador", "avisar", "avulso", "axila", "azarar", "azedo", "azeite", "azulejo", "babar", "babosa", "bacalhau", "bacharel", "bacia", "bagagem", "baiano", "bailar", "baioneta", "bairro", "baixista", "bajular", "baleia", "baliza", "balsa", "banal", "bandeira", "banho", "banir", "banquete", "barato", "barbado", "baronesa", "barraca", "barulho", "baseado", "bastante", "batata", "batedor", "batida", "batom", "batucar", "baunilha", "beber", "beijo", "beirada", "beisebol", "beldade", "beleza", "belga", "beliscar", "bendito", "bengala", "benzer", "berimbau", "berlinda", "berro", "besouro", "bexiga", "bezerro", "bico", "bicudo", "bienal", "bifocal", "bifurcar", "bigorna", "bilhete", "bimestre", "bimotor", "biologia", "biombo", "biosfera", "bipolar", "birrento", "biscoito", "bisneto", "bispo", "bissexto", "bitola", "bizarro", "blindado", "bloco", "bloquear", "boato", "bobagem", "bocado", "bocejo", "bochecha", "boicotar", "bolada", "boletim", "bolha", "bolo", "bombeiro", "bonde", "boneco", "bonita", "borbulha", "borda", "boreal", "borracha", "bovino", "boxeador", "branco", "brasa", "braveza", "breu", "briga", "brilho", "brincar", "broa", "brochura", "bronzear", "broto", "bruxo", "bucha", "budismo", "bufar", "bule", "buraco", "busca", "busto", "buzina", "cabana", "cabelo", "cabide", "cabo", "cabrito", "cacau", "cacetada", "cachorro", "cacique", "cadastro", "cadeado", "cafezal", "caiaque", "caipira", "caixote", "cajado", "caju", "calafrio", "calcular", "caldeira", "calibrar", "calmante", "calota", "camada", "cambista", "camisa", "camomila", "campanha", "camuflar", "canavial", "cancelar", "caneta", "canguru", "canhoto", "canivete", "canoa", "cansado", "cantar", "canudo", "capacho", "capela", "capinar", "capotar", "capricho", "captador", "capuz", "caracol", "carbono", "cardeal", "careca", "carimbar", "carneiro", "carpete", "carreira", "cartaz", "carvalho", "casaco", "casca", "casebre", "castelo", "casulo", "catarata", "cativar", "caule", "causador", "cautelar", "cavalo", "caverna", "cebola", "cedilha", "cegonha", "celebrar", "celular", "cenoura", "censo", "centeio", "cercar", "cerrado", "certeiro", "cerveja", "cetim", "cevada", "chacota", "chaleira", "chamado", "chapada", "charme", "chatice", "chave", "chefe", "chegada", "cheiro", "cheque", "chicote", "chifre", "chinelo", "chocalho", "chover", "chumbo", "chutar", "chuva", "cicatriz", "ciclone", "cidade", "cidreira", "ciente", "cigana", "cimento", "cinto", "cinza", "ciranda", "circuito", "cirurgia", "citar", "clareza", "clero", "clicar", "clone", "clube", "coado", "coagir", "cobaia", "cobertor", "cobrar", "cocada", "coelho", "coentro", "coeso", "cogumelo", "coibir", "coifa", "coiote", "colar", "coleira", "colher", "colidir", "colmeia", "colono", "coluna", "comando", "combinar", "comentar", "comitiva", "comover", "complexo", "comum", "concha", "condor", "conectar", "confuso", "congelar", "conhecer", "conjugar", "consumir", "contrato", "convite", "cooperar", "copeiro", "copiador", "copo", "coquetel", "coragem", "cordial", "corneta", "coronha", "corporal", "correio", "cortejo", "coruja", "corvo", "cosseno", "costela", "cotonete", "couro", "couve", "covil", "cozinha", "cratera", "cravo", "creche", "credor", "creme", "crer", "crespo", "criada", "criminal", "crioulo", "crise", "criticar", "crosta", "crua", "cruzeiro", "cubano", "cueca", "cuidado", "cujo", "culatra", "culminar", "culpar", "cultura", "cumprir", "cunhado", "cupido", "curativo", "curral", "cursar", "curto", "cuspir", "custear", "cutelo", "damasco", "datar", "debater", "debitar", "deboche", "debulhar", "decalque", "decimal", "declive", "decote", "decretar", "dedal", "dedicado", "deduzir", "defesa", "defumar", "degelo", "degrau", "degustar", "deitado", "deixar", "delator", "delegado", "delinear", "delonga", "demanda", "demitir", "demolido", "dentista", "depenado", "depilar", "depois", "depressa", "depurar", "deriva", "derramar", "desafio", "desbotar", "descanso", "desenho", "desfiado", "desgaste", "desigual", "deslize", "desmamar", "desova", "despesa", "destaque", "desviar", "detalhar", "detentor", "detonar", "detrito", "deusa", "dever", "devido", "devotado", "dezena", "diagrama", "dialeto", "didata", "difuso", "digitar", "dilatado", "diluente", "diminuir", "dinastia", "dinheiro", "diocese", "direto", "discreta", "disfarce", "disparo", "disquete", "dissipar", "distante", "ditador", "diurno", "diverso", "divisor", "divulgar", "dizer", "dobrador", "dolorido", "domador", "dominado", "donativo", "donzela", "dormente", "dorsal", "dosagem", "dourado", "doutor", "drenagem", "drible", "drogaria", "duelar", "duende", "dueto", "duplo", "duquesa", "durante", "duvidoso", "eclodir", "ecoar", "ecologia", "edificar", "edital", "educado", "efeito", "efetivar", "ejetar", "elaborar", "eleger", "eleitor", "elenco", "elevador", "eliminar", "elogiar", "embargo", "embolado", "embrulho", "embutido", "emenda", "emergir", "emissor", "empatia", "empenho", "empinado", "empolgar", "emprego", "empurrar", "emulador", "encaixe", "encenado", "enchente", "encontro", "endeusar", "endossar", "enfaixar", "enfeite", "enfim", "engajado", "engenho", "englobar", "engomado", "engraxar", "enguia", "enjoar", "enlatar", "enquanto", "enraizar", "enrolado", "enrugar", "ensaio", "enseada", "ensino", "ensopado", "entanto", "enteado", "entidade", "entortar", "entrada", "entulho", "envergar", "enviado", "envolver", "enxame", "enxerto", "enxofre", "enxuto", "epiderme", "equipar", "ereto", "erguido", "errata", "erva", "ervilha", "esbanjar", "esbelto", "escama", "escola", "escrita", "escuta", "esfinge", "esfolar", "esfregar", "esfumado", "esgrima", "esmalte", "espanto", "espelho", "espiga", "esponja", "espreita", "espumar", "esquerda", "estaca", "esteira", "esticar", "estofado", "estrela", "estudo", "esvaziar", "etanol", "etiqueta", "euforia", "europeu", "evacuar", "evaporar", "evasivo", "eventual", "evidente", "evoluir", "exagero", "exalar", "examinar", "exato", "exausto", "excesso", "excitar", "exclamar", "executar", "exemplo", "exibir", "exigente", "exonerar", "expandir", "expelir", "expirar", "explanar", "exposto", "expresso", "expulsar", "externo", "extinto", "extrato", "fabricar", "fabuloso", "faceta", "facial", "fada", "fadiga", "faixa", "falar", "falta", "familiar", "fandango", "fanfarra", "fantoche", "fardado", "farelo", "farinha", "farofa", "farpa", "fartura", "fatia", "fator", "favorita", "faxina", "fazenda", "fechado", "feijoada", "feirante", "felino", "feminino", "fenda", "feno", "fera", "feriado", "ferrugem", "ferver", "festejar", "fetal", "feudal", "fiapo", "fibrose", "ficar", "ficheiro", "figurado", "fileira", "filho", "filme", "filtrar", "firmeza", "fisgada", "fissura", "fita", "fivela", "fixador", "fixo", "flacidez", "flamingo", "flanela", "flechada", "flora", "flutuar", "fluxo", "focal", "focinho", "fofocar", "fogo", "foguete", "foice", "folgado", "folheto", "forjar", "formiga", "forno", "forte", "fosco", "fossa", "fragata", "fralda", "frango", "frasco", "fraterno", "freira", "frente", "fretar", "frieza", "friso", "fritura", "fronha", "frustrar", "fruteira", "fugir", "fulano", "fuligem", "fundar", "fungo", "funil", "furador", "furioso", "futebol", "gabarito", "gabinete", "gado", "gaiato", "gaiola", "gaivota", "galega", "galho", "galinha", "galocha", "ganhar", "garagem", "garfo", "gargalo", "garimpo", "garoupa", "garrafa", "gasoduto", "gasto", "gata", "gatilho", "gaveta", "gazela", "gelado", "geleia", "gelo", "gemada", "gemer", "gemido", "generoso", "gengiva", "genial", "genoma", "genro", "geologia", "gerador", "germinar", "gesso", "gestor", "ginasta", "gincana", "gingado", "girafa", "girino", "glacial", "glicose", "global", "glorioso", "goela", "goiaba", "golfe", "golpear", "gordura", "gorjeta", "gorro", "gostoso", "goteira", "governar", "gracejo", "gradual", "grafite", "gralha", "grampo", "granada", "gratuito", "graveto", "graxa", "grego", "grelhar", "greve", "grilo", "grisalho", "gritaria", "grosso", "grotesco", "grudado", "grunhido", "gruta", "guache", "guarani", "guaxinim", "guerrear", "guiar", "guincho", "guisado", "gula", "guloso", "guru", "habitar", "harmonia", "haste", "haver", "hectare", "herdar", "heresia", "hesitar", "hiato", "hibernar", "hidratar", "hiena", "hino", "hipismo", "hipnose", "hipoteca", "hoje", "holofote", "homem", "honesto", "honrado", "hormonal", "hospedar", "humorado", "iate", "ideia", "idoso", "ignorado", "igreja", "iguana", "ileso", "ilha", "iludido", "iluminar", "ilustrar", "imagem", "imediato", "imenso", "imersivo", "iminente", "imitador", "imortal", "impacto", "impedir", "implante", "impor", "imprensa", "impune", "imunizar", "inalador", "inapto", "inativo", "incenso", "inchar", "incidir", "incluir", "incolor", "indeciso", "indireto", "indutor", "ineficaz", "inerente", "infantil", "infestar", "infinito", "inflamar", "informal", "infrator", "ingerir", "inibido", "inicial", "inimigo", "injetar", "inocente", "inodoro", "inovador", "inox", "inquieto", "inscrito", "inseto", "insistir", "inspetor", "instalar", "insulto", "intacto", "integral", "intimar", "intocado", "intriga", "invasor", "inverno", "invicto", "invocar", "iogurte", "iraniano", "ironizar", "irreal", "irritado", "isca", "isento", "isolado", "isqueiro", "italiano", "janeiro", "jangada", "janta", "jararaca", "jardim", "jarro", "jasmim", "jato", "javali", "jazida", "jejum", "joaninha", "joelhada", "jogador", "joia", "jornal", "jorrar", "jovem", "juba", "judeu", "judoca", "juiz", "julgador", "julho", "jurado", "jurista", "juro", "justa", "labareda", "laboral", "lacre", "lactante", "ladrilho", "lagarta", "lagoa", "laje", "lamber", "lamentar", "laminar", "lampejo", "lanche", "lapidar", "lapso", "laranja", "lareira", "largura", "lasanha", "lastro", "lateral", "latido", "lavanda", "lavoura", "lavrador", "laxante", "lazer", "lealdade", "lebre", "legado", "legendar", "legista", "leigo", "leiloar", "leitura", "lembrete", "leme", "lenhador", "lentilha", "leoa", "lesma", "leste", "letivo", "letreiro", "levar", "leveza", "levitar", "liberal", "libido", "liderar", "ligar", "ligeiro", "limitar", "limoeiro", "limpador", "linda", "linear", "linhagem", "liquidez", "listagem", "lisura", "litoral", "livro", "lixa", "lixeira", "locador", "locutor", "lojista", "lombo", "lona", "longe", "lontra", "lorde", "lotado", "loteria", "loucura", "lousa", "louvar", "luar", "lucidez", "lucro", "luneta", "lustre", "lutador", "luva", "macaco", "macete", "machado", "macio", "madeira", "madrinha", "magnata", "magreza", "maior", "mais", "malandro", "malha", "malote", "maluco", "mamilo", "mamoeiro", "mamute", "manada", "mancha", "mandato", "manequim", "manhoso", "manivela", "manobrar", "mansa", "manter", "manusear", "mapeado", "maquinar", "marcador", "maresia", "marfim", "margem", "marinho", "marmita", "maroto", "marquise", "marreco", "martelo", "marujo", "mascote", "masmorra", "massagem", "mastigar", "matagal", "materno", "matinal", "matutar", "maxilar", "medalha", "medida", "medusa", "megafone", "meiga", "melancia", "melhor", "membro", "memorial", "menino", "menos", "mensagem", "mental", "merecer", "mergulho", "mesada", "mesclar", "mesmo", "mesquita", "mestre", "metade", "meteoro", "metragem", "mexer", "mexicano", "micro", "migalha", "migrar", "milagre", "milenar", "milhar", "mimado", "minerar", "minhoca", "ministro", "minoria", "miolo", "mirante", "mirtilo", "misturar", "mocidade", "moderno", "modular", "moeda", "moer", "moinho", "moita", "moldura", "moleza", "molho", "molinete", "molusco", "montanha", "moqueca", "morango", "morcego", "mordomo", "morena", "mosaico", "mosquete", "mostarda", "motel", "motim", "moto", "motriz", "muda", "muito", "mulata", "mulher", "multar", "mundial", "munido", "muralha", "murcho", "muscular", "museu", "musical", "nacional", "nadador", "naja", "namoro", "narina", "narrado", "nascer", "nativa", "natureza", "navalha", "navegar", "navio", "neblina", "nebuloso", "negativa", "negociar", "negrito", "nervoso", "neta", "neural", "nevasca", "nevoeiro", "ninar", "ninho", "nitidez", "nivelar", "nobreza", "noite", "noiva", "nomear", "nominal", "nordeste", "nortear", "notar", "noticiar", "noturno", "novelo", "novilho", "novo", "nublado", "nudez", "numeral", "nupcial", "nutrir", "nuvem", "obcecado", "obedecer", "objetivo", "obrigado", "obscuro", "obstetra", "obter", "obturar", "ocidente", "ocioso", "ocorrer", "oculista", "ocupado", "ofegante", "ofensiva", "oferenda", "oficina", "ofuscado", "ogiva", "olaria", "oleoso", "olhar", "oliveira", "ombro", "omelete", "omisso", "omitir", "ondulado", "oneroso", "ontem", "opcional", "operador", "oponente", "oportuno", "oposto", "orar", "orbitar", "ordem", "ordinal", "orfanato", "orgasmo", "orgulho", "oriental", "origem", "oriundo", "orla", "ortodoxo", "orvalho", "oscilar", "ossada", "osso", "ostentar", "otimismo", "ousadia", "outono", "outubro", "ouvido", "ovelha", "ovular", "oxidar", "oxigenar", "pacato", "paciente", "pacote", "pactuar", "padaria", "padrinho", "pagar", "pagode", "painel", "pairar", "paisagem", "palavra", "palestra", "palheta", "palito", "palmada", "palpitar", "pancada", "panela", "panfleto", "panqueca", "pantanal", "papagaio", "papelada", "papiro", "parafina", "parcial", "pardal", "parede", "partida", "pasmo", "passado", "pastel", "patamar", "patente", "patinar", "patrono", "paulada", "pausar", "peculiar", "pedalar", "pedestre", "pediatra", "pedra", "pegada", "peitoral", "peixe", "pele", "pelicano", "penca", "pendurar", "peneira", "penhasco", "pensador", "pente", "perceber", "perfeito", "pergunta", "perito", "permitir", "perna", "perplexo", "persiana", "pertence", "peruca", "pescado", "pesquisa", "pessoa", "petiscar", "piada", "picado", "piedade", "pigmento", "pilastra", "pilhado", "pilotar", "pimenta", "pincel", "pinguim", "pinha", "pinote", "pintar", "pioneiro", "pipoca", "piquete", "piranha", "pires", "pirueta", "piscar", "pistola", "pitanga", "pivete", "planta", "plaqueta", "platina", "plebeu", "plumagem", "pluvial", "pneu", "poda", "poeira", "poetisa", "polegada", "policiar", "poluente", "polvilho", "pomar", "pomba", "ponderar", "pontaria", "populoso", "porta", "possuir", "postal", "pote", "poupar", "pouso", "povoar", "praia", "prancha", "prato", "praxe", "prece", "predador", "prefeito", "premiar", "prensar", "preparar", "presilha", "pretexto", "prevenir", "prezar", "primata", "princesa", "prisma", "privado", "processo", "produto", "profeta", "proibido", "projeto", "prometer", "propagar", "prosa", "protetor", "provador", "publicar", "pudim", "pular", "pulmonar", "pulseira", "punhal", "punir", "pupilo", "pureza", "puxador", "quadra", "quantia", "quarto", "quase", "quebrar", "queda", "queijo", "quente", "querido", "quimono", "quina", "quiosque", "rabanada", "rabisco", "rachar", "racionar", "radial", "raiar", "rainha", "raio", "raiva", "rajada", "ralado", "ramal", "ranger", "ranhura", "rapadura", "rapel", "rapidez", "raposa", "raquete", "raridade", "rasante", "rascunho", "rasgar", "raspador", "rasteira", "rasurar", "ratazana", "ratoeira", "realeza", "reanimar", "reaver", "rebaixar", "rebelde", "rebolar", "recado", "recente", "recheio", "recibo", "recordar", "recrutar", "recuar", "rede", "redimir", "redonda", "reduzida", "reenvio", "refinar", "refletir", "refogar", "refresco", "refugiar", "regalia", "regime", "regra", "reinado", "reitor", "rejeitar", "relativo", "remador", "remendo", "remorso", "renovado", "reparo", "repelir", "repleto", "repolho", "represa", "repudiar", "requerer", "resenha", "resfriar", "resgatar", "residir", "resolver", "respeito", "ressaca", "restante", "resumir", "retalho", "reter", "retirar", "retomada", "retratar", "revelar", "revisor", "revolta", "riacho", "rica", "rigidez", "rigoroso", "rimar", "ringue", "risada", "risco", "risonho", "robalo", "rochedo", "rodada", "rodeio", "rodovia", "roedor", "roleta", "romano", "roncar", "rosado", "roseira", "rosto", "rota", "roteiro", "rotina", "rotular", "rouco", "roupa", "roxo", "rubro", "rugido", "rugoso", "ruivo", "rumo", "rupestre", "russo", "sabor", "saciar", "sacola", "sacudir", "sadio", "safira", "saga", "sagrada", "saibro", "salada", "saleiro", "salgado", "saliva", "salpicar", "salsicha", "saltar", "salvador", "sambar", "samurai", "sanar", "sanfona", "sangue", "sanidade", "sapato", "sarda", "sargento", "sarjeta", "saturar", "saudade", "saxofone", "sazonal", "secar", "secular", "seda", "sedento", "sediado", "sedoso", "sedutor", "segmento", "segredo", "segundo", "seiva", "seleto", "selvagem", "semanal", "semente", "senador", "senhor", "sensual", "sentado", "separado", "sereia", "seringa", "serra", "servo", "setembro", "setor", "sigilo", "silhueta", "silicone", "simetria", "simpatia", "simular", "sinal", "sincero", "singular", "sinopse", "sintonia", "sirene", "siri", "situado", "soberano", "sobra", "socorro", "sogro", "soja", "solda", "soletrar", "solteiro", "sombrio", "sonata", "sondar", "sonegar", "sonhador", "sono", "soprano", "soquete", "sorrir", "sorteio", "sossego", "sotaque", "soterrar", "sovado", "sozinho", "suavizar", "subida", "submerso", "subsolo", "subtrair", "sucata", "sucesso", "suco", "sudeste", "sufixo", "sugador", "sugerir", "sujeito", "sulfato", "sumir", "suor", "superior", "suplicar", "suposto", "suprimir", "surdina", "surfista", "surpresa", "surreal", "surtir", "suspiro", "sustento", "tabela", "tablete", "tabuada", "tacho", "tagarela", "talher", "talo", "talvez", "tamanho", "tamborim", "tampa", "tangente", "tanto", "tapar", "tapioca", "tardio", "tarefa", "tarja", "tarraxa", "tatuagem", "taurino", "taxativo", "taxista", "teatral", "tecer", "tecido", "teclado", "tedioso", "teia", "teimar", "telefone", "telhado", "tempero", "tenente", "tensor", "tentar", "termal", "terno", "terreno", "tese", "tesoura", "testado", "teto", "textura", "texugo", "tiara", "tigela", "tijolo", "timbrar", "timidez", "tingido", "tinteiro", "tiragem", "titular", "toalha", "tocha", "tolerar", "tolice", "tomada", "tomilho", "tonel", "tontura", "topete", "tora", "torcido", "torneio", "torque", "torrada", "torto", "tostar", "touca", "toupeira", "toxina", "trabalho", "tracejar", "tradutor", "trafegar", "trajeto", "trama", "trancar", "trapo", "traseiro", "tratador", "travar", "treino", "tremer", "trepidar", "trevo", "triagem", "tribo", "triciclo", "tridente", "trilogia", "trindade", "triplo", "triturar", "triunfal", "trocar", "trombeta", "trova", "trunfo", "truque", "tubular", "tucano", "tudo", "tulipa", "tupi", "turbo", "turma", "turquesa", "tutelar", "tutorial", "uivar", "umbigo", "unha", "unidade", "uniforme", "urologia", "urso", "urtiga", "urubu", "usado", "usina", "usufruir", "vacina", "vadiar", "vagaroso", "vaidoso", "vala", "valente", "validade", "valores", "vantagem", "vaqueiro", "varanda", "vareta", "varrer", "vascular", "vasilha", "vassoura", "vazar", "vazio", "veado", "vedar", "vegetar", "veicular", "veleiro", "velhice", "veludo", "vencedor", "vendaval", "venerar", "ventre", "verbal", "verdade", "vereador", "vergonha", "vermelho", "verniz", "versar", "vertente", "vespa", "vestido", "vetorial", "viaduto", "viagem", "viajar", "viatura", "vibrador", "videira", "vidraria", "viela", "viga", "vigente", "vigiar", "vigorar", "vilarejo", "vinco", "vinheta", "vinil", "violeta", "virada", "virtude", "visitar", "visto", "vitral", "viveiro", "vizinho", "voador", "voar", "vogal", "volante", "voleibol", "voltagem", "volumoso", "vontade", "vulto", "vuvuzela", "xadrez", "xarope", "xeque", "xeretar", "xerife", "xingar", "zangado", "zarpar", "zebu", "zelador", "zombar", "zoologia", "zumbido"];
  }
});

// node_modules/bip39-mnemonic/wordlist/russian.json
var require_russian = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/russian.json"(exports2, module2) {
    module2.exports = ["\u0430\u0431\u0437\u0430\u0446", "\u0430\u0431\u043E\u043D\u0435\u043D\u0442", "\u0430\u0431\u0441\u0443\u0440\u0434", "\u0430\u0432\u0430\u043D\u0433\u0430\u0440\u0434", "\u0430\u0432\u0430\u0440\u0438\u044F", "\u0430\u0432\u0433\u0443\u0441\u0442", "\u0430\u0432\u0438\u0430\u0446\u0438\u044F", "\u0430\u0432\u0442\u043E\u0440", "\u0430\u0433\u0435\u043D\u0442", "\u0430\u0433\u0438\u0442\u0430\u0446\u0438\u044F", "\u0430\u0433\u0440\u0435\u0433\u0430\u0442", "\u0430\u0434\u0432\u043E\u043A\u0430\u0442", "\u0430\u0434\u043C\u0438\u0440\u0430\u043B", "\u0430\u0434\u0440\u0435\u0441", "\u0430\u0437\u0430\u0440\u0442", "\u0430\u0437\u043E\u0442", "\u0430\u043A\u0430\u0434\u0435\u043C\u0438\u044F", "\u0430\u043A\u0432\u0430\u0440\u0438\u0443\u043C", "\u0430\u043A\u0441\u0438\u043E\u043C\u0430", "\u0430\u043A\u0443\u043B\u0430", "\u0430\u043A\u0446\u0435\u043D\u0442", "\u0430\u043A\u0446\u0438\u044F", "\u0430\u043B\u043B\u0435\u044F", "\u0430\u043B\u043C\u0430\u0437", "\u0430\u043B\u0442\u0430\u0440\u044C", "\u0430\u043B\u044C\u0431\u043E\u043C", "\u0430\u043B\u044C\u044F\u043D\u0441", "\u0430\u043C\u0431\u0438\u0446\u0438\u044F", "\u0430\u043D\u0430\u043B\u0438\u0437", "\u0430\u043D\u0435\u043A\u0434\u043E\u0442", "\u0430\u043D\u043A\u0435\u0442\u0430", "\u0430\u043D\u0441\u0430\u043C\u0431\u043B\u044C", "\u0430\u043D\u0442\u0435\u043D\u043D\u0430", "\u0430\u043F\u0435\u043B\u044C\u0441\u0438\u043D", "\u0430\u043F\u043F\u0430\u0440\u0430\u0442", "\u0430\u043F\u043F\u0435\u0442\u0438\u0442", "\u0430\u043F\u0440\u0435\u043B\u044C", "\u0430\u043F\u0442\u0435\u043A\u0430", "\u0430\u0440\u0431\u0443\u0437", "\u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442", "\u0430\u0440\u0435\u043D\u0434\u0430", "\u0430\u0440\u0435\u0441\u0442", "\u0430\u0440\u043C\u0438\u044F", "\u0430\u0440\u043E\u043C\u0430\u0442", "\u0430\u0440\u0441\u0435\u043D\u0430\u043B", "\u0430\u0440\u0442\u0435\u0440\u0438\u044F", "\u0430\u0440\u0442\u0438\u0441\u0442", "\u0430\u0440\u0445\u0438\u0432", "\u0430\u0441\u043F\u0438\u0440\u0430\u043D\u0442", "\u0430\u0441\u0444\u0430\u043B\u044C\u0442", "\u0430\u0442\u0430\u043A\u0430", "\u0430\u0442\u043E\u043C\u043D\u044B\u0439", "\u0430\u0442\u0440\u0438\u0431\u0443\u0442", "\u0430\u0443\u043A\u0446\u0438\u043E\u043D", "\u0430\u0444\u0438\u0448\u0430", "\u0430\u044D\u0440\u043E\u043F\u043E\u0440\u0442", "\u0431\u0430\u0431\u043E\u0447\u043A\u0430", "\u0431\u0430\u0431\u0443\u0448\u043A\u0430", "\u0431\u0430\u0433\u0430\u0436", "\u0431\u0430\u0437\u0430", "\u0431\u0430\u043A\u0442\u0435\u0440\u0438\u044F", "\u0431\u0430\u043B\u0430\u043D\u0441", "\u0431\u0430\u043B\u0435\u0440\u0438\u043D\u0430", "\u0431\u0430\u043B\u043A\u043E\u043D", "\u0431\u0430\u043D\u0434\u0438\u0442", "\u0431\u0430\u043D\u043A", "\u0431\u0430\u0440\u0430\u0431\u0430\u043D", "\u0431\u0430\u0440\u043E\u043D", "\u0431\u0430\u0440\u044B\u0448\u043D\u044F", "\u0431\u0430\u0440\u044C\u0435\u0440", "\u0431\u0430\u0441\u0441\u0435\u0439\u043D", "\u0431\u0430\u0442\u0430\u0440\u0435\u044F", "\u0431\u0430\u0448\u043C\u0430\u043A", "\u0431\u0430\u0448\u043D\u044F", "\u0431\u0435\u0434\u043D\u044B\u0439", "\u0431\u0435\u0436\u0435\u043D\u0435\u0446", "\u0431\u0435\u0437\u0434\u043D\u0430", "\u0431\u0435\u043B\u043A\u0430", "\u0431\u0435\u043B\u044B\u0439", "\u0431\u0435\u043D\u0437\u0438\u043D", "\u0431\u0435\u0440\u0435\u0433", "\u0431\u0435\u0441\u0435\u0434\u0430", "\u0431\u0435\u0448\u0435\u043D\u044B\u0439", "\u0431\u0438\u043B\u0435\u0442", "\u0431\u0438\u043D\u043E\u043A\u043B\u044C", "\u0431\u0438\u0440\u0436\u0430", "\u0431\u0438\u0442\u0432\u0430", "\u0431\u043B\u0430\u0433\u043E", "\u0431\u043B\u0435\u0441\u043A", "\u0431\u043B\u0438\u0437\u043A\u0438\u0439", "\u0431\u043B\u0438\u043D", "\u0431\u043B\u043E\u043A", "\u0431\u043B\u044E\u0434\u043E", "\u0431\u043E\u0433\u0430\u0442\u044B\u0439", "\u0431\u043E\u0434\u0440\u044B\u0439", "\u0431\u043E\u0435\u0446", "\u0431\u043E\u043A\u0430\u043B", "\u0431\u043E\u043A\u043E\u0432\u043E\u0439", "\u0431\u043E\u043A\u0441", "\u0431\u043E\u043B\u0435\u0435", "\u0431\u043E\u043B\u043E\u0442\u043E", "\u0431\u043E\u043B\u0442\u0430\u0442\u044C", "\u0431\u043E\u043B\u044C\u0448\u043E\u0439", "\u0431\u043E\u043C\u0431\u0430", "\u0431\u043E\u0440\u0442", "\u0431\u043E\u0440\u044C\u0431\u0430", "\u0431\u043E\u0441\u043E\u0439", "\u0431\u043E\u0442\u0438\u043D\u043E\u043A", "\u0431\u043E\u044F\u0442\u044C\u0441\u044F", "\u0431\u0440\u0430\u043A", "\u0431\u0440\u0430\u0442\u044C", "\u0431\u0440\u0435\u0432\u043D\u043E", "\u0431\u0440\u0435\u0434", "\u0431\u0440\u0438\u0433\u0430\u0434\u0430", "\u0431\u0440\u043E\u0434\u044F\u0433\u0430", "\u0431\u0440\u043E\u043D\u044F", "\u0431\u0440\u043E\u0441\u0438\u0442\u044C", "\u0431\u0440\u044B\u0437\u0433\u0438", "\u0431\u0440\u044E\u043A\u0438", "\u0431\u0440\u044E\u0445\u043E", "\u0431\u0443\u0433\u043E\u0440", "\u0431\u0443\u0434\u043A\u0430", "\u0431\u0443\u0434\u043D\u0438", "\u0431\u0443\u0434\u0443\u0449\u0435\u0435", "\u0431\u0443\u043A\u0432\u0430", "\u0431\u0443\u043A\u0435\u0442", "\u0431\u0443\u043B\u044C\u0432\u0430\u0440", "\u0431\u0443\u043C\u0430\u0433\u0430", "\u0431\u0443\u043D\u0442", "\u0431\u0443\u0440\u043D\u044B\u0439", "\u0431\u0443\u0440\u044F", "\u0431\u0443\u0442\u044B\u043B\u043A\u0430", "\u0431\u0443\u0445\u0442\u0430", "\u0431\u044B\u0432\u0448\u0438\u0439", "\u0431\u044B\u0441\u0442\u0440\u043E", "\u0431\u044B\u0442\u043E\u0432\u043E\u0439", "\u0431\u044B\u0442\u044C", "\u0431\u044E\u0434\u0436\u0435\u0442", "\u0431\u044E\u0440\u043E", "\u0431\u044E\u0441\u0442", "\u0432\u0430\u0433\u043E\u043D", "\u0432\u0430\u0436\u043D\u044B\u0439", "\u0432\u0430\u043A\u0446\u0438\u043D\u0430", "\u0432\u0430\u043B\u0435\u043D\u043E\u043A", "\u0432\u0430\u043B\u044C\u0441", "\u0432\u0430\u043B\u044E\u0442\u0430", "\u0432\u0430\u043D\u043D\u0430\u044F", "\u0432\u0430\u0440\u0435\u043D\u044C\u0435", "\u0432\u0430\u0440\u0438\u0430\u043D\u0442", "\u0432\u0431\u043B\u0438\u0437\u0438", "\u0432\u0432\u0435\u0440\u0445", "\u0432\u0432\u043E\u0434\u0438\u0442\u044C", "\u0432\u0434\u0430\u043B\u0438", "\u0432\u0434\u0432\u043E\u0435", "\u0432\u0434\u043E\u0432\u0430", "\u0432\u0434\u043E\u043B\u044C", "\u0432\u0434\u0440\u0443\u0433", "\u0432\u0435\u0434\u0440\u043E", "\u0432\u0435\u0434\u0443\u0449\u0438\u0439", "\u0432\u0435\u0434\u044C\u043C\u0430", "\u0432\u0435\u0436\u043B\u0438\u0432\u043E", "\u0432\u0435\u0437\u0434\u0435", "\u0432\u0435\u043A\u043E", "\u0432\u0435\u043A\u0441\u0435\u043B\u044C", "\u0432\u0435\u043B\u0435\u0442\u044C", "\u0432\u0435\u043B\u0438\u043A\u0438\u0439", "\u0432\u0435\u043D\u0435\u0446", "\u0432\u0435\u043D\u0438\u043A", "\u0432\u0435\u0440\u0430\u043D\u0434\u0430", "\u0432\u0435\u0440\u0431\u043B\u044E\u0434", "\u0432\u0435\u0440\u0438\u0442\u044C", "\u0432\u0435\u0440\u043D\u044B\u0439", "\u0432\u0435\u0440\u0441\u0438\u044F", "\u0432\u0435\u0440\u0442\u0435\u0442\u044C", "\u0432\u0435\u0440\u0445\u043D\u0438\u0439", "\u0432\u0435\u0440\u0448\u0438\u043D\u0430", "\u0432\u0435\u0441\u0435\u043B\u043E", "\u0432\u0435\u0441\u043D\u0430", "\u0432\u0435\u0441\u043E\u043C\u044B\u0439", "\u0432\u0435\u0441\u0442\u0438", "\u0432\u0435\u0441\u044C", "\u0432\u0435\u0442\u0435\u0440\u0430\u043D", "\u0432\u0435\u0442\u0445\u0438\u0439", "\u0432\u0435\u0447\u0435\u0440", "\u0432\u0435\u0447\u043D\u043E", "\u0432\u0435\u0448\u0430\u043B\u043A\u0430", "\u0432\u0435\u0449\u0435\u0441\u0442\u0432\u043E", "\u0432\u0437\u0430\u043C\u0435\u043D", "\u0432\u0437\u0433\u043B\u044F\u0434", "\u0432\u0437\u0434\u043E\u0445", "\u0432\u0437\u043D\u043E\u0441", "\u0432\u0437\u043E\u0439\u0442\u0438", "\u0432\u0437\u043E\u0440", "\u0432\u0437\u0440\u044B\u0432", "\u0432\u0437\u044F\u0442\u044C", "\u0432\u0438\u0434\u0435\u0442\u044C", "\u0432\u0438\u0434\u0438\u043C\u043E", "\u0432\u0438\u0437\u0433", "\u0432\u0438\u0437\u0438\u0442", "\u0432\u0438\u043B\u043A\u0430", "\u0432\u0438\u043D\u0430", "\u0432\u0438\u0440\u0443\u0441", "\u0432\u0438\u0441\u043E\u043A", "\u0432\u0438\u0442\u0430\u043C\u0438\u043D", "\u0432\u0438\u0442\u0440\u0438\u043D\u0430", "\u0432\u0438\u0445\u0440\u044C", "\u0432\u0438\u0448\u043D\u044F", "\u0432\u043A\u0443\u0441", "\u0432\u043B\u0430\u0433\u0430", "\u0432\u043B\u0430\u0434\u0435\u043B\u0435\u0446", "\u0432\u043B\u0430\u0441\u0442\u044C", "\u0432\u043B\u0435\u0432\u043E", "\u0432\u043B\u0438\u044F\u043D\u0438\u0435", "\u0432\u043B\u043E\u0436\u0438\u0442\u044C", "\u0432\u043C\u0435\u0441\u0442\u0435", "\u0432\u043D\u0435\u0448\u043D\u0438\u0439", "\u0432\u043D\u0438\u043A\u0430\u0442\u044C", "\u0432\u043D\u0438\u043C\u0430\u043D\u0438\u0435", "\u0432\u043D\u043E\u0432\u044C", "\u0432\u043D\u0443\u043A", "\u0432\u043D\u0443\u0442\u0440\u0438", "\u0432\u043D\u0443\u0447\u043A\u0430", "\u0432\u043D\u0443\u0448\u0430\u0442\u044C", "\u0432\u043E\u0432\u043B\u0435\u0447\u044C", "\u0432\u043E\u0432\u0440\u0435\u043C\u044F", "\u0432\u043E\u0432\u0441\u044E", "\u0432\u043E\u0434\u0430", "\u0432\u043E\u0434\u043E\u0440\u043E\u0434", "\u0432\u043E\u0434\u044F\u043D\u043E\u0439", "\u0432\u043E\u0435\u0432\u0430\u0442\u044C", "\u0432\u043E\u0437\u0432\u0440\u0430\u0442", "\u0432\u043E\u0437\u0433\u043B\u0430\u0441", "\u0432\u043E\u0437\u0434\u0443\u0445", "\u0432\u043E\u0437\u0438\u0442\u044C", "\u0432\u043E\u0437\u043B\u0435", "\u0432\u043E\u0437\u043D\u044F", "\u0432\u043E\u0437\u0440\u0430\u0441\u0442", "\u0432\u043E\u0439\u043D\u0430", "\u0432\u043E\u0439\u0441\u043A\u043E", "\u0432\u043E\u043A\u0437\u0430\u043B", "\u0432\u043E\u043B\u043E\u0441", "\u0432\u043E\u043B\u0447\u0438\u0439", "\u0432\u043E\u043B\u044C\u043D\u044B\u0439", "\u0432\u043E\u043B\u044F", "\u0432\u043E\u043E\u0431\u0449\u0435", "\u0432\u043E\u043F\u043B\u044C", "\u0432\u043E\u043F\u0440\u043E\u0441", "\u0432\u043E\u0440\u043E\u0442\u0430", "\u0432\u043E\u0441\u0435\u043C\u044C", "\u0432\u043E\u0441\u0442\u043E\u043A", "\u0432\u043F\u043B\u043E\u0442\u044C", "\u0432\u043F\u043E\u043B\u043D\u0435", "\u0432\u043F\u0440\u0430\u0432\u0435", "\u0432\u043F\u0440\u0435\u0434\u044C", "\u0432\u043F\u0440\u043E\u0447\u0435\u043C", "\u0432\u0440\u0430\u0447", "\u0432\u0440\u0435\u0434\u043D\u044B\u0439", "\u0432\u0440\u0435\u043C\u044F", "\u0432\u0440\u0443\u0447\u0438\u0442\u044C", "\u0432\u0441\u0430\u0434\u043D\u0438\u043A", "\u0432\u0441\u0435\u0433\u0434\u0430", "\u0432\u0441\u043A\u043E\u0440\u0435", "\u0432\u0441\u043A\u0440\u044B\u0442\u044C", "\u0432\u0441\u043F\u043B\u0435\u0441\u043A", "\u0432\u0441\u043F\u044B\u0448\u043A\u0430", "\u0432\u0441\u0442\u0440\u0435\u0447\u0430", "\u0432\u0441\u044E\u0434\u0443", "\u0432\u0441\u044F\u043A\u0438\u0439", "\u0432\u0442\u043E\u0440\u043E\u0439", "\u0432\u0445\u043E\u0434", "\u0432\u0447\u0435\u0440\u0430", "\u0432\u044B\u0431\u043E\u0440", "\u0432\u044B\u0432\u043E\u0434", "\u0432\u044B\u0433\u043D\u0430\u0442\u044C", "\u0432\u044B\u0434\u0430\u0442\u044C", "\u0432\u044B\u0435\u0445\u0430\u0442\u044C", "\u0432\u044B\u0437\u043E\u0432", "\u0432\u044B\u0439\u0442\u0438", "\u0432\u044B\u043A\u0443\u043F", "\u0432\u044B\u043B\u0435\u0437\u0442\u0438", "\u0432\u044B\u043C\u044B\u0442\u044C", "\u0432\u044B\u043F\u0430\u0441\u0442\u044C", "\u0432\u044B\u043F\u0438\u0442\u044C", "\u0432\u044B\u043F\u043B\u0430\u0442\u0430", "\u0432\u044B\u043F\u0443\u0441\u043A", "\u0432\u044B\u0440\u0430\u0441\u0442\u0438", "\u0432\u044B\u0440\u0443\u0447\u043A\u0430", "\u0432\u044B\u0441\u043B\u0430\u0442\u044C", "\u0432\u044B\u0441\u043E\u043A\u0438\u0439", "\u0432\u044B\u0441\u0442\u0430\u0432\u043A\u0430", "\u0432\u044B\u0448\u043A\u0430", "\u0432\u044F\u0437\u0430\u0442\u044C", "\u0432\u044F\u043B\u044B\u0439", "\u0433\u0430\u0437\u0435\u0442\u0430", "\u0433\u0430\u0437\u043E\u0432\u044B\u0439", "\u0433\u0430\u043B\u0435\u0440\u0435\u044F", "\u0433\u0430\u043B\u0441\u0442\u0443\u043A", "\u0433\u0430\u043C\u043C\u0430", "\u0433\u0430\u0440\u0430\u043D\u0442\u0438\u044F", "\u0433\u0430\u0440\u043C\u043E\u043D\u0438\u044F", "\u0433\u0430\u0440\u043D\u0438\u0437\u043E\u043D", "\u0433\u0430\u0441\u0442\u0440\u043E\u043B\u0438", "\u0433\u0432\u0430\u0440\u0434\u0438\u044F", "\u0433\u0432\u043E\u0437\u0434\u044C", "\u0433\u0435\u043A\u0442\u0430\u0440", "\u0433\u0435\u043D\u0435\u0440\u0430\u043B", "\u0433\u0435\u043D\u0438\u0439", "\u0433\u0435\u043D\u043E\u043C", "\u0433\u0435\u043E\u043B\u043E\u0433", "\u0433\u0435\u0440\u0431", "\u0433\u0435\u0440\u043E\u0439", "\u0433\u0438\u0431\u043A\u0438\u0439", "\u0433\u0438\u0433\u0430\u043D\u0442", "\u0433\u0438\u043C\u043D", "\u0433\u0438\u043F\u043E\u0442\u0435\u0437\u0430", "\u0433\u0438\u0442\u0430\u0440\u0430", "\u0433\u043B\u0430\u0432\u043D\u044B\u0439", "\u0433\u043B\u0430\u0433\u043E\u043B", "\u0433\u043B\u0430\u0434\u0438\u0442\u044C", "\u0433\u043B\u0430\u0437", "\u0433\u043B\u0438\u043D\u0430", "\u0433\u043B\u043E\u0442\u043E\u043A", "\u0433\u043B\u0443\u0431\u043E\u043A\u0438\u0439", "\u0433\u043B\u0443\u043F\u044B\u0439", "\u0433\u043B\u0443\u0445\u043E\u0439", "\u0433\u043B\u044B\u0431\u0430", "\u0433\u043B\u044F\u0434\u0435\u0442\u044C", "\u0433\u043D\u0435\u0432", "\u0433\u043D\u0435\u0437\u0434\u043E", "\u0433\u043D\u0438\u043B\u043E\u0439", "\u0433\u043E\u0434\u043E\u0432\u043E\u0439", "\u0433\u043E\u043B\u043E\u0432\u0430", "\u0433\u043E\u043B\u0443\u0431\u043E\u0439", "\u0433\u043E\u043B\u044B\u0439", "\u0433\u043E\u043D\u043E\u0440\u0430\u0440", "\u0433\u043E\u0440\u0434\u043E\u0441\u0442\u044C", "\u0433\u043E\u0440\u0438\u0437\u043E\u043D\u0442", "\u0433\u043E\u0440\u043B\u043E", "\u0433\u043E\u0440\u043D\u044B\u0439", "\u0433\u043E\u0440\u043E\u0434", "\u0433\u043E\u0440\u0448\u043E\u043A", "\u0433\u043E\u0440\u044C\u043A\u0438\u0439", "\u0433\u043E\u0440\u044E\u0447\u0435\u0435", "\u0433\u043E\u0440\u044F\u0447\u0438\u0439", "\u0433\u043E\u0442\u043E\u0432\u044B\u0439", "\u0433\u0440\u0430\u0434\u0443\u0441", "\u0433\u0440\u0430\u043C\u043C", "\u0433\u0440\u0430\u043D\u0438\u0446\u0430", "\u0433\u0440\u0430\u0444", "\u0433\u0440\u0435\u0431\u0435\u043D\u044C", "\u0433\u0440\u0438\u0431", "\u0433\u0440\u0438\u043C\u0430\u0441\u0430", "\u0433\u0440\u043E\u0437\u0438\u0442\u044C", "\u0433\u0440\u043E\u0445\u043E\u0442", "\u0433\u0440\u043E\u0448", "\u0433\u0440\u0443\u0431\u044B\u0439", "\u0433\u0440\u0443\u0434\u044C", "\u0433\u0440\u0443\u0437", "\u0433\u0440\u0443\u043D\u0442", "\u0433\u0440\u0443\u043F\u043F\u0430", "\u0433\u0440\u0443\u0448\u0430", "\u0433\u0440\u044F\u0437\u043D\u044B\u0439", "\u0433\u0443\u0431\u0430", "\u0433\u0443\u0434\u043E\u043A", "\u0433\u0443\u043B\u043A\u0438\u0439", "\u0433\u0443\u043B\u044F\u0442\u044C", "\u0433\u0443\u0441\u0435\u043D\u0438\u0446\u0430", "\u0433\u0443\u0441\u0442\u043E", "\u0433\u0443\u0441\u044C", "\u0434\u0430\u0432\u043B\u0435\u043D\u0438\u0435", "\u0434\u0430\u0432\u043D\u043E", "\u0434\u0430\u0436\u0435", "\u0434\u0430\u043B\u044C\u043D\u0438\u0439", "\u0434\u0430\u043D\u043D\u044B\u0439", "\u0434\u0430\u0440\u0438\u0442\u044C", "\u0434\u0430\u0442\u0447\u0438\u043A", "\u0434\u0430\u0442\u044C", "\u0434\u0430\u0447\u0430", "\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C", "\u0434\u0432\u0430\u0436\u0434\u044B", "\u0434\u0432\u0435\u0440\u044C", "\u0434\u0432\u0438\u0433\u0430\u0442\u044C", "\u0434\u0432\u0438\u0436\u0435\u043D\u0438\u0435", "\u0434\u0432\u043E\u0439\u043D\u043E\u0439", "\u0434\u0432\u043E\u0440", "\u0434\u0435\u0431\u044E\u0442", "\u0434\u0435\u0432\u044F\u0442\u044B\u0439", "\u0434\u0435\u0436\u0443\u0440\u043D\u044B\u0439", "\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435", "\u0434\u0435\u043A\u0430\u0431\u0440\u044C", "\u0434\u0435\u043B\u0435\u043D\u0438\u0435", "\u0434\u0435\u043B\u043E", "\u0434\u0435\u043B\u044C\u0444\u0438\u043D", "\u0434\u0435\u043D\u044C", "\u0434\u0435\u0440\u0435\u0432\u043E", "\u0434\u0435\u0440\u0436\u0430\u0442\u044C", "\u0434\u0435\u0440\u0437\u043A\u0438\u0439", "\u0434\u0435\u0441\u044F\u0442\u044C", "\u0434\u0435\u0442\u0430\u043B\u044C", "\u0434\u0435\u0442\u0441\u043A\u0438\u0439", "\u0434\u0435\u0444\u0435\u043A\u0442", "\u0434\u0435\u0444\u0438\u0446\u0438\u0442", "\u0434\u0435\u044F\u0442\u0435\u043B\u044C", "\u0434\u0436\u0430\u0437", "\u0434\u0436\u0438\u043D\u0441\u044B", "\u0434\u0436\u0443\u043D\u0433\u043B\u0438", "\u0434\u0438\u0430\u0433\u043D\u043E\u0437", "\u0434\u0438\u0430\u043B\u043E\u0433", "\u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D", "\u0434\u0438\u0432\u0430\u043D", "\u0434\u0438\u0432\u0438\u0437\u0438\u044F", "\u0434\u0438\u0432\u043D\u044B\u0439", "\u0434\u0438\u0435\u0442\u0430", "\u0434\u0438\u0437\u0430\u0439\u043D", "\u0434\u0438\u043A\u0430\u0440\u044C", "\u0434\u0438\u043B\u0435\u0440", "\u0434\u0438\u043D\u0430\u043C\u0438\u043A\u0430", "\u0434\u0438\u043F\u043B\u043E\u043C", "\u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440", "\u0434\u0438\u0442\u044F", "\u0434\u043B\u0438\u043D\u043D\u044B\u0439", "\u0434\u043D\u0435\u0432\u043D\u0438\u043A", "\u0434\u043E\u0431\u0440\u044B\u0439", "\u0434\u043E\u0431\u044B\u0447\u0430", "\u0434\u043E\u0432\u0435\u0440\u0438\u0435", "\u0434\u043E\u0433\u0430\u0434\u043A\u0430", "\u0434\u043E\u0433\u043D\u0430\u0442\u044C", "\u0434\u043E\u0436\u0434\u044C", "\u0434\u043E\u043A\u043B\u0430\u0434", "\u0434\u043E\u043A\u0442\u043E\u0440", "\u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442", "\u0434\u043E\u043B\u0433\u043E", "\u0434\u043E\u043B\u0436\u0435\u043D", "\u0434\u043E\u043B\u0438\u043D\u0430", "\u0434\u043E\u043D\u043E\u0441", "\u0434\u043E\u0440\u043E\u0433\u0430", "\u0434\u043E\u0441\u0430\u0434\u0430", "\u0434\u043E\u0441\u043A\u0430", "\u0434\u043E\u0441\u0442\u0430\u0442\u044C", "\u0434\u043E\u0441\u0443\u0433", "\u0434\u043E\u0445\u043E\u0434", "\u0434\u043E\u0446\u0435\u043D\u0442", "\u0434\u043E\u0449\u0430\u0442\u044B\u0439", "\u0434\u0440\u0430\u043A\u0430", "\u0434\u0440\u0435\u0432\u043D\u0438\u0439", "\u0434\u0440\u0435\u043C\u0430\u0442\u044C", "\u0434\u0440\u043E\u0431\u043D\u044B\u0439", "\u0434\u0440\u043E\u0432\u0430", "\u0434\u0440\u043E\u0436\u0430\u0442\u044C", "\u0434\u0440\u0443\u0433\u043E\u0439", "\u0434\u0440\u0443\u0436\u0431\u0430", "\u0434\u0443\u0431\u043E\u0432\u044B\u0439", "\u0434\u0443\u0433\u0430", "\u0434\u0443\u043C\u0430\u0442\u044C", "\u0434\u0443\u0440\u043D\u043E\u0439", "\u0434\u0443\u0445\u0438", "\u0434\u0443\u0448\u043D\u044B\u0439", "\u0434\u0443\u044D\u043B\u044C", "\u0434\u0443\u044D\u0442", "\u0434\u044B\u0440\u0430", "\u0434\u044B\u0445\u0430\u043D\u0438\u0435", "\u0434\u044E\u0436\u0438\u043D\u0430", "\u0434\u044F\u0434\u044F", "\u0435\u0434\u0432\u0430", "\u0435\u0434\u0438\u043D\u044B\u0439", "\u0435\u0440\u0443\u043D\u0434\u0430", "\u0435\u0441\u043B\u0438", "\u0435\u0445\u0430\u0442\u044C", "\u0436\u0430\u0434\u043D\u044B\u0439", "\u0436\u0430\u0436\u0434\u0430", "\u0436\u0430\u043B\u0435\u0442\u044C", "\u0436\u0430\u043B\u043E\u0431\u0430", "\u0436\u0430\u043D\u0440", "\u0436\u0430\u0440\u0435\u043D\u044B\u0439", "\u0436\u0430\u0440\u043A\u0438\u0439", "\u0436\u0433\u0443\u0447\u0438\u0439", "\u0436\u0435\u0432\u0430\u0442\u044C", "\u0436\u0435\u043B\u0430\u043D\u0438\u0435", "\u0436\u0435\u043B\u0443\u0434\u043E\u043A", "\u0436\u0435\u043D\u0430", "\u0436\u0435\u043D\u0449\u0438\u043D\u0430", "\u0436\u0435\u0440\u0442\u0432\u0430", "\u0436\u0435\u0441\u0442", "\u0436\u0438\u0434\u043A\u043E\u0441\u0442\u044C", "\u0436\u0438\u0442\u0435\u043B\u044C", "\u0436\u0438\u0442\u044C", "\u0436\u0440\u0435\u0446", "\u0436\u0443\u043B\u0438\u043A", "\u0436\u0443\u0440\u043D\u0430\u043B", "\u0436\u0443\u0442\u043A\u0438\u0439", "\u0437\u0430\u0431\u0440\u0430\u0442\u044C", "\u0437\u0430\u0431\u044B\u0442\u044C", "\u0437\u0430\u0432\u0435\u0441\u0442\u0438", "\u0437\u0430\u0432\u043E\u0434", "\u0437\u0430\u0432\u0442\u0440\u0430", "\u0437\u0430\u0433\u0430\u0434\u043A\u0430", "\u0437\u0430\u0433\u043D\u0430\u0442\u044C", "\u0437\u0430\u0433\u043E\u0432\u043E\u0440", "\u0437\u0430\u0434\u0430\u0447\u0430", "\u0437\u0430\u0434\u0435\u0442\u044C", "\u0437\u0430\u0434\u043D\u0438\u0439", "\u0437\u0430\u0434\u043E\u043B\u0433\u043E", "\u0437\u0430\u0435\u0445\u0430\u0442\u044C", "\u0437\u0430\u043A\u0430\u0437", "\u0437\u0430\u043A\u043E\u043D", "\u0437\u0430\u043A\u0440\u044B\u0442\u044C", "\u0437\u0430\u043A\u0443\u0441\u043A\u0430", "\u0437\u0430\u043B\u0435\u0437\u0442\u044C", "\u0437\u0430\u043B\u0438\u0442\u044C", "\u0437\u0430\u043B\u043F", "\u0437\u0430\u043C\u043E\u043A", "\u0437\u0430\u043C\u0443\u0436", "\u0437\u0430\u043C\u044B\u0441\u0435\u043B", "\u0437\u0430\u043D\u0430\u0432\u0435\u0441", "\u0437\u0430\u043D\u043E\u0432\u043E", "\u0437\u0430\u043D\u044F\u0442\u044C", "\u0437\u0430\u043E\u0434\u043D\u043E", "\u0437\u0430\u043F\u0438\u0441\u044C", "\u0437\u0430\u043F\u0440\u043E\u0441", "\u0437\u0430\u043F\u0443\u0441\u043A", "\u0437\u0430\u043F\u044F\u0441\u0442\u044C\u0435", "\u0437\u0430\u0440\u0430\u043D\u0435\u0435", "\u0437\u0430\u0440\u043E\u0441\u043B\u044C", "\u0437\u0430\u0440\u043F\u043B\u0430\u0442\u0430", "\u0437\u0430\u0440\u044F", "\u0437\u0430\u0441\u0430\u0434\u0430", "\u0437\u0430\u0441\u043B\u0443\u0433\u0430", "\u0437\u0430\u0441\u043D\u0443\u0442\u044C", "\u0437\u0430\u0441\u0442\u0430\u0442\u044C", "\u0437\u0430\u0442\u0432\u043E\u0440", "\u0437\u0430\u0442\u0435\u044F\u0442\u044C", "\u0437\u0430\u0442\u0440\u0430\u0442\u0430", "\u0437\u0430\u0442\u044B\u043B\u043E\u043A", "\u0437\u0430\u0445\u0432\u0430\u0442", "\u0437\u0430\u0447\u0435\u043C", "\u0437\u0430\u0449\u0438\u0442\u0430", "\u0437\u0430\u044F\u0432\u0438\u0442\u044C", "\u0437\u0430\u044F\u0446", "\u0437\u0432\u0435\u0437\u0434\u0430", "\u0437\u0432\u0435\u043D\u043E", "\u0437\u0432\u043E\u043D\u0438\u0442\u044C", "\u0437\u0434\u0435\u0441\u044C", "\u0437\u0435\u043B\u0435\u043D\u044C", "\u0437\u0435\u043C\u043B\u044F", "\u0437\u0435\u0440\u043A\u0430\u043B\u043E", "\u0437\u0435\u0440\u043D\u043E", "\u0437\u0438\u043C\u0430", "\u0437\u043B\u043E\u0439", "\u0437\u043C\u0435\u044F", "\u0437\u043D\u0430\u043C\u044F", "\u0437\u043D\u0430\u043D\u0438\u0435", "\u0437\u043D\u0430\u0447\u0438\u0442", "\u0437\u043E\u043B\u043E\u0442\u043E\u0439", "\u0437\u043E\u043D\u0430", "\u0437\u043E\u043D\u0442\u0438\u043A", "\u0437\u043E\u043E\u043F\u0430\u0440\u043A", "\u0437\u0440\u0430\u0447\u043E\u043A", "\u0437\u0440\u0435\u043D\u0438\u0435", "\u0437\u0440\u0438\u0442\u0435\u043B\u044C", "\u0437\u0443\u0431\u043D\u043E\u0439", "\u0437\u0443\u0431\u0440", "\u0438\u0433\u043B\u0430", "\u0438\u0434\u0435\u0430\u043B", "\u0438\u0434\u0435\u043E\u043B\u043E\u0433", "\u0438\u0434\u0435\u044F", "\u0438\u0434\u043E\u043B", "\u0438\u0434\u0442\u0438", "\u0438\u0437\u0431\u0430", "\u0438\u0437\u0431\u0438\u0442\u044C", "\u0438\u0437\u0431\u0440\u0430\u0442\u044C", "\u0438\u0437\u0431\u044B\u0442\u043E\u043A", "\u0438\u0437\u0432\u043B\u0435\u0447\u044C", "\u0438\u0437\u0432\u043D\u0435", "\u0438\u0437\u0433\u0438\u0431", "\u0438\u0437\u0433\u043D\u0430\u0442\u044C", "\u0438\u0437\u0434\u0430\u043D\u0438\u0435", "\u0438\u0437\u0434\u0435\u043B\u0438\u0435", "\u0438\u0437\u043D\u0443\u0442\u0440\u0438", "\u0438\u0437\u043E\u0431\u0438\u043B\u0438\u0435", "\u0438\u0437\u043E\u043B\u044F\u0446\u0438\u044F", "\u0438\u0437\u0440\u0435\u0434\u043A\u0430", "\u0438\u0437\u0440\u044F\u0434\u043D\u043E", "\u0438\u0437\u0443\u0447\u0435\u043D\u0438\u0435", "\u0438\u0437\u044A\u044F\u0442\u044C", "\u0438\u0437\u044F\u0449\u043D\u044B\u0439", "\u0438\u043A\u043E\u043D\u0430", "\u0438\u043A\u0440\u0430", "\u0438\u043B\u043B\u044E\u0437\u0438\u044F", "\u0438\u043C\u0435\u043D\u043D\u043E", "\u0438\u043C\u0435\u0442\u044C", "\u0438\u043C\u0438\u0434\u0436", "\u0438\u043C\u043F\u0435\u0440\u0438\u044F", "\u0438\u043C\u043F\u0443\u043B\u044C\u0441", "\u0438\u043D\u0430\u0447\u0435", "\u0438\u043D\u0432\u0430\u043B\u0438\u0434", "\u0438\u043D\u0434\u0435\u043A\u0441", "\u0438\u043D\u0434\u0438\u0432\u0438\u0434", "\u0438\u043D\u0435\u0440\u0446\u0438\u044F", "\u0438\u043D\u0436\u0435\u043D\u0435\u0440", "\u0438\u043D\u043E\u0433\u0434\u0430", "\u0438\u043D\u043E\u0439", "\u0438\u043D\u0441\u0442\u0438\u0442\u0443\u0442", "\u0438\u043D\u0442\u0435\u0440\u0435\u0441", "\u0438\u043D\u0442\u0440\u0438\u0433\u0430", "\u0438\u043D\u0442\u0443\u0438\u0446\u0438\u044F", "\u0438\u043D\u0444\u0430\u0440\u043A\u0442", "\u0438\u043D\u0446\u0438\u0434\u0435\u043D\u0442", "\u0438\u0440\u043E\u043D\u0438\u044F", "\u0438\u0441\u043A\u0430\u0442\u044C", "\u0438\u0441\u043F\u0443\u0433", "\u0438\u0441\u0442\u043E\u0440\u0438\u044F", "\u0438\u0442\u043E\u0433", "\u0438\u044E\u043D\u044C", "\u043A\u0430\u0431\u0435\u043B\u044C", "\u043A\u0430\u0431\u0438\u043D\u0435\u0442", "\u043A\u0430\u0431\u043B\u0443\u043A", "\u043A\u0430\u0432\u0430\u043B\u0435\u0440", "\u043A\u0430\u0434\u0440", "\u043A\u0430\u0436\u0434\u044B\u0439", "\u043A\u0430\u0436\u0435\u0442\u0441\u044F", "\u043A\u0430\u0437\u0438\u043D\u043E", "\u043A\u0430\u043B\u0438\u0442\u043A\u0430", "\u043A\u0430\u043C\u0435\u043D\u044C", "\u043A\u0430\u043C\u0438\u043D", "\u043A\u0430\u043D\u0430\u043B", "\u043A\u0430\u043D\u0434\u0438\u0434\u0430\u0442", "\u043A\u0430\u043D\u0438\u043A\u0443\u043B\u044B", "\u043A\u0430\u043D\u043E\u043D", "\u043A\u0430\u043F\u0438\u0442\u0430\u043D", "\u043A\u0430\u043F\u043B\u044F", "\u043A\u0430\u043F\u043E\u0442", "\u043A\u0430\u043F\u0443\u0441\u0442\u0430", "\u043A\u0430\u0440\u0430\u043D\u0434\u0430\u0448", "\u043A\u0430\u0440\u0435\u0442\u0430", "\u043A\u0430\u0440\u043A\u0430\u0441", "\u043A\u0430\u0440\u043C\u0430\u043D", "\u043A\u0430\u0440\u0442\u0438\u043D\u0430", "\u043A\u0430\u0440\u044C\u0435\u0440\u0430", "\u043A\u0430\u0441\u043A\u0430", "\u043A\u0430\u0441\u0441\u0435\u0442\u0430", "\u043A\u0430\u0441\u0442\u0440\u044E\u043B\u044F", "\u043A\u0430\u0442\u0430\u043B\u043E\u0433", "\u043A\u0430\u0442\u0435\u0440", "\u043A\u0430\u0442\u043E\u043A", "\u043A\u0430\u0442\u0443\u0448\u043A\u0430", "\u043A\u0430\u0444\u0435\u0434\u0440\u0430", "\u043A\u0430\u0447\u0435\u0441\u0442\u0432\u043E", "\u043A\u0430\u0448\u0430", "\u043A\u0430\u0448\u043B\u044F\u0442\u044C", "\u043A\u0430\u044E\u0442\u0430", "\u043A\u0432\u0430\u0434\u0440\u0430\u0442", "\u043A\u0432\u0430\u0440\u0442\u0438\u0440\u0430", "\u043A\u0432\u043E\u0442\u0430", "\u043A\u0435\u043F\u043A\u0430", "\u043A\u0438\u0432\u043D\u0443\u0442\u044C", "\u043A\u0438\u043B\u043E\u043C\u0435\u0442\u0440", "\u043A\u0438\u043D\u043E", "\u043A\u0438\u043E\u0441\u043A", "\u043A\u0438\u043F\u044F\u0442\u043E\u043A", "\u043A\u0438\u0440\u043F\u0438\u0447", "\u043A\u0438\u0441\u043B\u043E\u0442\u0430", "\u043A\u0438\u0441\u0442\u044C", "\u043A\u043B\u0430\u0432\u0438\u0448\u0430", "\u043A\u043B\u0430\u043F\u0430\u043D", "\u043A\u043B\u0430\u0441\u0441", "\u043A\u043B\u0435\u0439", "\u043A\u043B\u0435\u0442\u043A\u0430", "\u043A\u043B\u0438\u0435\u043D\u0442", "\u043A\u043B\u0438\u043C\u0430\u0442", "\u043A\u043B\u0438\u043D\u0438\u043A\u0430", "\u043A\u043B\u0438\u0447\u043A\u0430", "\u043A\u043B\u043E\u0443\u043D", "\u043A\u043B\u043E\u0447\u043E\u043A", "\u043A\u043B\u0443\u0431", "\u043A\u043B\u0443\u043C\u0431\u0430", "\u043A\u043B\u044E\u0447", "\u043A\u043D\u0438\u0433\u0430", "\u043A\u043D\u043E\u043F\u043A\u0430", "\u043A\u043D\u0443\u0442", "\u043A\u043D\u044F\u0433\u0438\u043D\u044F", "\u043A\u043D\u044F\u0437\u044C", "\u043A\u043E\u0431\u0443\u0440\u0430", "\u043A\u043E\u0433\u0434\u0430", "\u043A\u043E\u0434\u0435\u043A\u0441", "\u043A\u043E\u0436\u0430", "\u043A\u043E\u043A\u0442\u0435\u0439\u043B\u044C", "\u043A\u043E\u043B\u0435\u043D\u043E", "\u043A\u043E\u043B\u043B\u0435\u0433\u0430", "\u043A\u043E\u043B\u043E\u043D\u043D\u0430", "\u043A\u043E\u043B\u043F\u0430\u043A", "\u043A\u043E\u043B\u044C\u0446\u043E", "\u043A\u043E\u043B\u044E\u0447\u0438\u0439", "\u043A\u043E\u043B\u044F\u0441\u043A\u0430", "\u043A\u043E\u043C\u0430\u043D\u0434\u0430", "\u043A\u043E\u043C\u0435\u0434\u0438\u044F", "\u043A\u043E\u043C\u0438\u0441\u0441\u0438\u044F", "\u043A\u043E\u043C\u043C\u0443\u043D\u0430", "\u043A\u043E\u043C\u043D\u0430\u0442\u0430", "\u043A\u043E\u043C\u043E\u043A", "\u043A\u043E\u043C\u043F\u0430\u043D\u0438\u044F", "\u043A\u043E\u043C\u0444\u043E\u0440\u0442", "\u043A\u043E\u043D\u0432\u0435\u0439\u0435\u0440", "\u043A\u043E\u043D\u0433\u0440\u0435\u0441\u0441", "\u043A\u043E\u043D\u0435\u0447\u043D\u043E", "\u043A\u043E\u043D\u043A\u0443\u0440\u0441", "\u043A\u043E\u043D\u0442\u0440\u043E\u043B\u044C", "\u043A\u043E\u043D\u0446\u0435\u0440\u0442", "\u043A\u043E\u043D\u044C", "\u043A\u043E\u043D\u044E\u0448\u043D\u044F", "\u043A\u043E\u043F\u0430\u0442\u044C", "\u043A\u043E\u043F\u0435\u0439\u043A\u0430", "\u043A\u043E\u043F\u044B\u0442\u043E", "\u043A\u043E\u0440\u0430\u0431\u043B\u044C", "\u043A\u043E\u0440\u0435\u043D\u044C", "\u043A\u043E\u0440\u0437\u0438\u043D\u0430", "\u043A\u043E\u0440\u0438\u0434\u043E\u0440", "\u043A\u043E\u0440\u043C\u0438\u0442\u044C", "\u043A\u043E\u0440\u043F\u0443\u0441", "\u043A\u043E\u0441\u043C\u043E\u0441", "\u043A\u043E\u0441\u0442\u044E\u043C", "\u043A\u043E\u0441\u044F\u043A", "\u043A\u043E\u0442\u0435\u043B", "\u043A\u043E\u0442\u043B\u0435\u0442\u0430", "\u043A\u043E\u0442\u043E\u0440\u044B\u0439", "\u043A\u043E\u0442\u0442\u0435\u0434\u0436", "\u043A\u043E\u0444\u0435", "\u043A\u043E\u0444\u0442\u0430", "\u043A\u043E\u0448\u043A\u0430", "\u043A\u0440\u0430\u0436\u0430", "\u043A\u0440\u0430\u0439", "\u043A\u0440\u0430\u0441\u043D\u044B\u0439", "\u043A\u0440\u0430\u0442\u043A\u0438\u0439", "\u043A\u0440\u0435\u0434\u0438\u0442", "\u043A\u0440\u0435\u043C", "\u043A\u0440\u0435\u043F\u043A\u0438\u0439", "\u043A\u0440\u0435\u0441\u043B\u043E", "\u043A\u0440\u0438\u0432\u043E\u0439", "\u043A\u0440\u0438\u0437\u0438\u0441", "\u043A\u0440\u0438\u0441\u0442\u0430\u043B\u043B", "\u043A\u0440\u0438\u0442\u0435\u0440\u0438\u0439", "\u043A\u0440\u0438\u0447\u0430\u0442\u044C", "\u043A\u0440\u043E\u0432\u044C", "\u043A\u0440\u043E\u043A\u043E\u0434\u0438\u043B", "\u043A\u0440\u043E\u043B\u0438\u043A", "\u043A\u0440\u043E\u043C\u0435", "\u043A\u0440\u043E\u043D\u0430", "\u043A\u0440\u0443\u0433", "\u043A\u0440\u0443\u0436\u043A\u0430", "\u043A\u0440\u0443\u043F\u043D\u044B\u0439", "\u043A\u0440\u0443\u0442\u043E\u0439", "\u043A\u0440\u0443\u0448\u0435\u043D\u0438\u0435", "\u043A\u0440\u044B\u043B\u043E", "\u043A\u0440\u044B\u0448\u0430", "\u043A\u0440\u044E\u0447\u043E\u043A", "\u043A\u0441\u0442\u0430\u0442\u0438", "\u043A\u0443\u0431\u0438\u043A", "\u043A\u0443\u0434\u0430", "\u043A\u0443\u0437\u043E\u0432", "\u043A\u0443\u043A\u043B\u0430", "\u043A\u0443\u043B\u0430\u043A", "\u043A\u0443\u043B\u0438\u0441\u0430", "\u043A\u0443\u043B\u044C\u0442\u0443\u0440\u0430", "\u043A\u0443\u043C\u0438\u0440", "\u043A\u0443\u043F\u0435", "\u043A\u0443\u043F\u0438\u0442\u044C", "\u043A\u0443\u043F\u043E\u043B", "\u043A\u0443\u043F\u044E\u0440\u0430", "\u043A\u0443\u0440\u0438\u0446\u0430", "\u043A\u0443\u0440\u043E\u0440\u0442", "\u043A\u0443\u0440\u0441", "\u043A\u0443\u0440\u0442\u043A\u0430", "\u043A\u0443\u0441\u043E\u043A", "\u043A\u0443\u0441\u0442", "\u043A\u0443\u0445\u043D\u044F", "\u043A\u0443\u0448\u0430\u0442\u044C", "\u043B\u0430\u0431\u0438\u0440\u0438\u043D\u0442", "\u043B\u0430\u0432\u043A\u0430", "\u043B\u0430\u0433\u0435\u0440\u044C", "\u043B\u0430\u0434\u043D\u043E", "\u043B\u0430\u0434\u043E\u043D\u044C", "\u043B\u0430\u043F\u0430", "\u043B\u0430\u0443\u0440\u0435\u0430\u0442", "\u043B\u0433\u0430\u0442\u044C", "\u043B\u0435\u0431\u0435\u0434\u044C", "\u043B\u0435\u0432\u044B\u0439", "\u043B\u0435\u0433\u0435\u043D\u0434\u0430", "\u043B\u0435\u0433\u043A\u0438\u0439", "\u043B\u0435\u0434\u044F\u043D\u043E\u0439", "\u043B\u0435\u0436\u0430\u0442\u044C", "\u043B\u0435\u0437\u0432\u0438\u0435", "\u043B\u0435\u0437\u0442\u044C", "\u043B\u0435\u043A\u0446\u0438\u044F", "\u043B\u0435\u043D\u0438\u0432\u044B\u0439", "\u043B\u0435\u043D\u0442\u0430", "\u043B\u0435\u043F\u0435\u0441\u0442\u043E\u043A", "\u043B\u0435\u0441\u043D\u043E\u0439", "\u043B\u0435\u0441\u0442\u043D\u0438\u0446\u0430", "\u043B\u0435\u0442\u0435\u0442\u044C", "\u043B\u0435\u0442\u043E", "\u043B\u0435\u0447\u0438\u0442\u044C", "\u043B\u0438\u0433\u0430", "\u043B\u0438\u0434\u0435\u0440", "\u043B\u0438\u043B\u043E\u0432\u044B\u0439", "\u043B\u0438\u043C\u043E\u043D", "\u043B\u0438\u043D\u0438\u044F", "\u043B\u0438\u043F\u043A\u0438\u0439", "\u043B\u0438\u0441\u0442", "\u043B\u0438\u0442\u0440", "\u043B\u0438\u0445\u043E\u0439", "\u043B\u0438\u0446\u043E", "\u043B\u0438\u0448\u0438\u0442\u044C", "\u043B\u0438\u0448\u043D\u0438\u0439", "\u043B\u043E\u0432\u0438\u0442\u044C", "\u043B\u043E\u0433\u0438\u043A\u0430", "\u043B\u043E\u0434\u043A\u0430", "\u043B\u043E\u0436\u044C", "\u043B\u043E\u0437\u0443\u043D\u0433", "\u043B\u043E\u043A\u043E\u0442\u044C", "\u043B\u043E\u043F\u0430\u0442\u0430", "\u043B\u043E\u0448\u0430\u0434\u044C", "\u043B\u0443\u043A\u0430\u0432\u044B\u0439", "\u043B\u0443\u043D\u0430", "\u043B\u0443\u0447\u0448\u0438\u0439", "\u043B\u044B\u0441\u044B\u0439", "\u043B\u044C\u0433\u043E\u0442\u0430", "\u043B\u044E\u0431\u0438\u0442\u044C", "\u043B\u044E\u0431\u043E\u0439", "\u043B\u044E\u0434\u0441\u043A\u043E\u0439", "\u043B\u044E\u0441\u0442\u0440\u0430", "\u043B\u044E\u0442\u044B\u0439", "\u043B\u044F\u0433\u0443\u0448\u043A\u0430", "\u043C\u0430\u0433\u0430\u0437\u0438\u043D", "\u043C\u0430\u0433\u0438\u044F", "\u043C\u0430\u0439\u043E\u0440", "\u043C\u0430\u0439\u0441\u043A\u0438\u0439", "\u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C", "\u043C\u0430\u043A\u0443\u0448\u043A\u0430", "\u043C\u0430\u043B\u043E", "\u043C\u0430\u043B\u044C\u0447\u0438\u043A", "\u043C\u0430\u043C\u0430", "\u043C\u0430\u043D\u0435\u0440\u0430", "\u043C\u0430\u0440\u043A\u0430", "\u043C\u0430\u0440\u0442", "\u043C\u0430\u0440\u0448\u0440\u0443\u0442", "\u043C\u0430\u0441\u0441\u0430", "\u043C\u0430\u0441\u0442\u0435\u0440", "\u043C\u0430\u0441\u0448\u0442\u0430\u0431", "\u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B", "\u043C\u0430\u0442\u0447", "\u043C\u0430\u0445\u0430\u0442\u044C", "\u043C\u0430\u0448\u0438\u043D\u0430", "\u043C\u0430\u044F\u043A", "\u043C\u0435\u0431\u0435\u043B\u044C", "\u043C\u0435\u0434\u0430\u043B\u044C", "\u043C\u0435\u0434\u0432\u0435\u0434\u044C", "\u043C\u0435\u0434\u0438\u0446\u0438\u043D\u0430", "\u043C\u0435\u0434\u044C", "\u043C\u0435\u0436\u0434\u0443", "\u043C\u0435\u043B\u043A\u0438\u0439", "\u043C\u0435\u043B\u043E\u0447\u044C", "\u043C\u0435\u043C\u0443\u0430\u0440\u044B", "\u043C\u0435\u043D\u044C\u0448\u0435", "\u043C\u0435\u043D\u044E", "\u043C\u0435\u043D\u044F\u0442\u044C", "\u043C\u0435\u0440\u0430", "\u043C\u0435\u0440\u0446\u0430\u0442\u044C", "\u043C\u0435\u0441\u0442\u043E", "\u043C\u0435\u0441\u044F\u0446", "\u043C\u0435\u0442\u0430\u043B\u043B", "\u043C\u0435\u0442\u043E\u0434", "\u043C\u0435\u0442\u0440", "\u043C\u0435\u0445\u0430\u043D\u0438\u0437\u043C", "\u043C\u0435\u0445\u043E\u0432\u043E\u0439", "\u043C\u0435\u0447\u0442\u0430\u0442\u044C", "\u043C\u0435\u0448\u0430\u0442\u044C", "\u043C\u0435\u0448\u043E\u043A", "\u043C\u0438\u0433\u0440\u0430\u0446\u0438\u044F", "\u043C\u0438\u043A\u0440\u043E\u0444\u043E\u043D", "\u043C\u0438\u043B\u0438\u0446\u0438\u044F", "\u043C\u0438\u043B\u043B\u0438\u043E\u043D", "\u043C\u0438\u043B\u043E\u0441\u0442\u044C", "\u043C\u0438\u043B\u044F", "\u043C\u0438\u043C\u043E", "\u043C\u0438\u043D\u0435\u0440\u0430\u043B", "\u043C\u0438\u043D\u0438\u0441\u0442\u0440", "\u043C\u0438\u043D\u0443\u0442\u0430", "\u043C\u0438\u0440\u043D\u044B\u0439", "\u043C\u0438\u0441\u043A\u0430", "\u043C\u0438\u0441\u0441\u0438\u044F", "\u043C\u0438\u0442\u0438\u043D\u0433", "\u043C\u0438\u0448\u0435\u043D\u044C", "\u043C\u043B\u0430\u0434\u0448\u0438\u0439", "\u043C\u043D\u0435\u043D\u0438\u0435", "\u043C\u043D\u0438\u043C\u044B\u0439", "\u043C\u043D\u043E\u0433\u043E", "\u043C\u043E\u0433\u0443\u0447\u0438\u0439", "\u043C\u043E\u0434\u0435\u043B\u044C", "\u043C\u043E\u0436\u0435\u0442", "\u043C\u043E\u0437\u0433", "\u043C\u043E\u043A\u0440\u044B\u0439", "\u043C\u043E\u043B\u0435\u043A\u0443\u043B\u0430", "\u043C\u043E\u043B\u043D\u0438\u044F", "\u043C\u043E\u043B\u043E\u0434\u043E\u0439", "\u043C\u043E\u043B\u0447\u0430\u0442\u044C", "\u043C\u043E\u043C\u0435\u043D\u0442", "\u043C\u043E\u043D\u0435\u0442\u0430", "\u043C\u043E\u043D\u0438\u0442\u043E\u0440", "\u043C\u043E\u043D\u043E\u043B\u043E\u0433", "\u043C\u043E\u043D\u0441\u0442\u0440", "\u043C\u043E\u043D\u0442\u0430\u0436", "\u043C\u043E\u0440\u0430\u043B\u044C", "\u043C\u043E\u0440\u0435", "\u043C\u043E\u0440\u043A\u043E\u0432\u044C", "\u043C\u043E\u0440\u043E\u0437", "\u043C\u043E\u0440\u0449\u0438\u043D\u0430", "\u043C\u043E\u0441\u0442\u043E\u0432\u0430\u044F", "\u043C\u043E\u0442\u0430\u0442\u044C", "\u043C\u043E\u0442\u0438\u0432", "\u043C\u043E\u0442\u043E\u0440", "\u043C\u043E\u0445\u043D\u0430\u0442\u044B\u0439", "\u043C\u0440\u0430\u043C\u043E\u0440", "\u043C\u0440\u0430\u0447\u043D\u044B\u0439", "\u043C\u0441\u0442\u0438\u0442\u044C", "\u043C\u0443\u0434\u0440\u044B\u0439", "\u043C\u0443\u0436\u0435\u0441\u0442\u0432\u043E", "\u043C\u0443\u0436\u0447\u0438\u043D\u0430", "\u043C\u0443\u0437\u0435\u0439", "\u043C\u0443\u0437\u044B\u043A\u0430", "\u043C\u0443\u043D\u0434\u0438\u0440", "\u043C\u0443\u0440\u0430\u0432\u0435\u0439", "\u043C\u0443\u0441\u043E\u0440", "\u043C\u0443\u0445\u0430", "\u043C\u0447\u0430\u0442\u044C\u0441\u044F", "\u043C\u044B\u0441\u043B\u044C", "\u043C\u044B\u0442\u044C\u0441\u044F", "\u043C\u044B\u0448\u0446\u0430", "\u043C\u044B\u0448\u044C", "\u043C\u044E\u0437\u0438\u043A\u043B", "\u043C\u044F\u0433\u043A\u0438\u0439", "\u043C\u044F\u0441\u043E", "\u043D\u0430\u0431\u043E\u0440", "\u043D\u0430\u0432\u044B\u043A", "\u043D\u0430\u0433\u043B\u044B\u0439", "\u043D\u0430\u0433\u0440\u0443\u0437\u043A\u0430", "\u043D\u0430\u0434\u0435\u0436\u0434\u0430", "\u043D\u0430\u0434\u0437\u043E\u0440", "\u043D\u0430\u0434\u043E", "\u043D\u0430\u0435\u0434\u0438\u043D\u0435", "\u043D\u0430\u0437\u0430\u0434", "\u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435", "\u043D\u0430\u0437\u043B\u043E", "\u043D\u0430\u0438\u0432\u043D\u044B\u0439", "\u043D\u0430\u0439\u0442\u0438", "\u043D\u0430\u043A\u043E\u043D\u0435\u0446", "\u043D\u0430\u043B\u0435\u0432\u043E", "\u043D\u0430\u043B\u0438\u0447\u0438\u0435", "\u043D\u0430\u043B\u043E\u0433", "\u043D\u0430\u043C\u0435\u0440\u0435\u043D", "\u043D\u0430\u043D\u0435\u0441\u0442\u0438", "\u043D\u0430\u043F\u0430\u0441\u0442\u044C", "\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440", "\u043D\u0430\u0440\u043E\u0434", "\u043D\u0430\u0441\u043B\u0435\u0434\u0438\u0435", "\u043D\u0430\u0442\u0443\u0440\u0430", "\u043D\u0430\u0443\u043A\u0430", "\u043D\u0430\u0443\u0442\u0440\u043E", "\u043D\u0430\u0447\u0430\u0442\u044C", "\u043D\u0435\u0431\u043E", "\u043D\u0435\u0432\u0430\u0436\u043D\u043E", "\u043D\u0435\u0432\u0435\u0441\u0442\u0430", "\u043D\u0435\u0433\u043E\u0434\u044F\u0439", "\u043D\u0435\u0434\u0430\u0432\u043D\u043E", "\u043D\u0435\u0434\u0435\u043B\u044F", "\u043D\u0435\u0434\u043E\u043B\u0433\u043E", "\u043D\u0435\u0434\u0440\u0430", "\u043D\u0435\u0434\u0443\u0433", "\u043D\u0435\u0436\u043D\u044B\u0439", "\u043D\u0435\u0437\u0430\u0447\u0435\u043C", "\u043D\u0435\u043A\u0442\u043E", "\u043D\u0435\u043B\u0435\u043F\u044B\u0439", "\u043D\u0435\u043B\u043E\u0432\u043A\u043E", "\u043D\u0435\u043B\u044C\u0437\u044F", "\u043D\u0435\u043C\u0430\u043B\u043E", "\u043D\u0435\u043C\u043E\u0439", "\u043D\u0435\u043F\u043B\u043E\u0445\u043E", "\u043D\u0435\u0440\u0432\u043D\u044B\u0439", "\u043D\u0435\u0440\u0435\u0434\u043A\u043E", "\u043D\u0435\u0441\u0442\u0438\u0441\u044C", "\u043D\u0435\u0443\u0434\u0430\u0447\u0430", "\u043D\u0435\u0443\u0436\u0435\u043B\u0438", "\u043D\u0435\u0444\u0442\u044C", "\u043D\u0435\u044F\u0441\u043D\u044B\u0439", "\u043D\u0438\u0433\u0434\u0435", "\u043D\u0438\u0437\u043A\u0438\u0439", "\u043D\u0438\u043A\u0430\u043A\u043E\u0439", "\u043D\u0438\u043A\u043E\u0433\u0434\u0430", "\u043D\u0438\u043A\u0443\u0434\u0430", "\u043D\u0438\u0447\u0442\u043E", "\u043D\u0438\u0447\u0443\u0442\u044C", "\u043D\u0438\u0448\u0430", "\u043D\u0438\u0449\u0438\u0439", "\u043D\u043E\u0432\u043E\u0441\u0442\u044C", "\u043D\u043E\u0432\u044B\u0439", "\u043D\u043E\u0433\u0430", "\u043D\u043E\u0433\u043E\u0442\u044C", "\u043D\u043E\u0436\u043D\u0438\u0446\u044B", "\u043D\u043E\u0437\u0434\u0440\u044F", "\u043D\u043E\u043C\u0435\u0440", "\u043D\u043E\u0441\u0438\u0442\u044C", "\u043D\u043E\u0441\u043E\u043A", "\u043D\u043E\u0447\u044C", "\u043D\u043E\u044F\u0431\u0440\u044C", "\u043D\u0440\u0430\u0432", "\u043D\u0443\u043B\u044C", "\u043D\u044B\u043D\u0447\u0435", "\u043D\u044B\u0440\u044F\u0442\u044C", "\u043D\u044E\u0430\u043D\u0441", "\u043D\u044F\u043D\u044F", "\u043E\u0431\u0430\u044F\u043D\u0438\u0435", "\u043E\u0431\u0435\u0434", "\u043E\u0431\u0435\u0437\u044C\u044F\u043D\u0430", "\u043E\u0431\u0435\u0449\u0430\u0442\u044C", "\u043E\u0431\u0436\u0435\u0447\u044C", "\u043E\u0431\u0437\u043E\u0440", "\u043E\u0431\u0438\u043B\u0438\u0435", "\u043E\u0431\u0438\u0442\u0430\u0442\u044C", "\u043E\u0431\u043B\u0430\u0441\u0442\u044C", "\u043E\u0431\u043B\u0438\u043A", "\u043E\u0431\u043B\u043E\u0436\u043A\u0430", "\u043E\u0431\u043C\u0435\u043D", "\u043E\u0431\u043C\u043E\u0440\u043E\u043A", "\u043E\u0431\u043E\u0436\u0430\u0442\u044C", "\u043E\u0431\u043E\u0438", "\u043E\u0431\u043E\u043B\u043E\u0447\u043A\u0430", "\u043E\u0431\u043E\u0440\u043E\u043D\u0430", "\u043E\u0431\u043E\u0447\u0438\u043D\u0430", "\u043E\u0431\u0440\u0430\u0437", "\u043E\u0431\u0440\u0435\u0441\u0442\u0438", "\u043E\u0431\u0440\u044B\u0432", "\u043E\u0431\u0443\u0432\u044C", "\u043E\u0431\u0443\u0447\u0435\u043D\u0438\u0435", "\u043E\u0431\u0445\u043E\u0434", "\u043E\u0431\u0449\u0435\u0441\u0442\u0432\u043E", "\u043E\u0431\u0449\u0438\u0439", "\u043E\u0431\u044A\u0435\u043A\u0442", "\u043E\u0431\u044B\u0441\u043A", "\u043E\u0431\u044B\u0447\u043D\u043E", "\u043E\u0431\u044F\u0437\u0430\u0442\u044C", "\u043E\u0432\u043E\u0449\u0438", "\u043E\u0432\u0440\u0430\u0433", "\u043E\u0432\u0446\u0430", "\u043E\u0433\u043E\u0432\u043E\u0440\u043A\u0430", "\u043E\u0433\u0440\u0430\u0434\u0430", "\u043E\u0433\u0443\u0440\u0435\u0446", "\u043E\u0434\u0435\u0436\u0434\u0430", "\u043E\u0434\u0435\u044F\u043B\u043E", "\u043E\u0434\u0438\u043D", "\u043E\u0434\u043D\u0430\u043A\u043E", "\u043E\u0434\u043E\u043B\u0435\u0442\u044C", "\u043E\u0436\u0438\u0434\u0430\u0442\u044C", "\u043E\u0437\u0435\u0440\u043E", "\u043E\u043A\u0435\u0430\u043D", "\u043E\u043A\u043D\u043E", "\u043E\u043A\u043E\u043B\u043E", "\u043E\u043A\u043E\u043F", "\u043E\u043A\u0440\u0430\u0438\u043D\u0430", "\u043E\u043A\u0442\u044F\u0431\u0440\u044C", "\u043E\u043F\u0430\u0441\u043D\u044B\u0439", "\u043E\u043F\u0435\u043A\u0430", "\u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F", "\u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435", "\u043E\u043F\u043B\u0430\u0442\u0430", "\u043E\u043F\u043E\u0440\u0430", "\u043E\u043F\u043F\u043E\u043D\u0435\u043D\u0442", "\u043E\u043F\u0442\u0438\u043C\u0438\u0437\u043C", "\u043E\u043F\u0442\u043E\u0432\u044B\u0439", "\u043E\u043F\u0443\u0445\u043E\u043B\u044C", "\u043E\u043F\u044B\u0442", "\u043E\u0440\u0430\u0442\u043E\u0440", "\u043E\u0440\u0431\u0438\u0442\u0430", "\u043E\u0440\u0433\u0430\u043D", "\u043E\u0440\u0434\u0435\u043D", "\u043E\u0440\u0435\u043B", "\u043E\u0440\u0438\u0433\u0438\u043D\u0430\u043B", "\u043E\u0440\u0438\u0435\u043D\u0442\u0438\u0440", "\u043E\u0440\u043A\u0435\u0441\u0442\u0440", "\u043E\u0440\u0443\u0436\u0438\u0435", "\u043E\u0441\u0435\u043D\u043D\u0438\u0439", "\u043E\u0441\u043A\u043E\u043B\u043E\u043A", "\u043E\u0441\u043C\u043E\u0442\u0440", "\u043E\u0441\u0442\u0440\u043E\u0432", "\u043E\u0442\u0431\u043E\u0440", "\u043E\u0442\u0431\u044B\u0442\u044C", "\u043E\u0442\u0432\u043B\u0435\u0447\u044C", "\u043E\u0442\u0434\u0430\u0442\u044C", "\u043E\u0442\u0434\u0435\u043B", "\u043E\u0442\u0434\u044B\u0445", "\u043E\u0442\u0435\u043B\u044C", "\u043E\u0442\u0435\u0446", "\u043E\u0442\u0437\u044B\u0432", "\u043E\u0442\u043A\u0430\u0437", "\u043E\u0442\u043A\u043B\u0438\u043A", "\u043E\u0442\u043A\u0440\u044B\u0442\u044C", "\u043E\u0442\u043A\u0443\u0434\u0430", "\u043E\u0442\u043B\u0438\u0447\u0438\u0435", "\u043E\u0442\u043D\u044B\u043D\u0435", "\u043E\u0442\u043E\u0439\u0442\u0438", "\u043E\u0442\u043F\u0443\u0441\u043A", "\u043E\u0442\u0440\u0430\u0441\u043B\u044C", "\u043E\u0442\u0440\u043E\u0441\u0442\u043E\u043A", "\u043E\u0442\u0440\u044B\u0432\u043E\u043A", "\u043E\u0442\u0440\u044F\u0434", "\u043E\u0442\u0441\u0435\u043A", "\u043E\u0442\u0441\u0442\u0430\u0432\u043A\u0430", "\u043E\u0442\u0441\u044E\u0434\u0430", "\u043E\u0442\u0442\u0435\u043D\u043E\u043A", "\u043E\u0442\u0442\u043E\u0433\u043E", "\u043E\u0442\u0447\u0435\u0433\u043E", "\u043E\u0442\u044A\u0435\u0437\u0434", "\u043E\u0444\u0438\u0441", "\u043E\u0444\u0438\u0446\u0435\u0440", "\u043E\u0445\u043E\u0442\u0430", "\u043E\u0445\u0440\u0430\u043D\u0430", "\u043E\u0446\u0435\u043D\u043A\u0430", "\u043E\u0447\u0430\u0433", "\u043E\u0447\u0435\u043D\u044C", "\u043E\u0447\u0435\u0440\u0435\u0434\u044C", "\u043E\u0447\u0438\u0449\u0430\u0442\u044C", "\u043E\u0448\u0438\u0431\u043A\u0430", "\u043E\u0449\u0443\u0449\u0435\u043D\u0438\u0435", "\u043F\u0430\u0432\u0438\u043B\u044C\u043E\u043D", "\u043F\u0430\u0434\u0430\u0442\u044C", "\u043F\u0430\u0437\u0443\u0445\u0430", "\u043F\u0430\u043A\u0435\u0442", "\u043F\u0430\u043B\u0430\u0442\u0430", "\u043F\u0430\u043B\u0435\u0446", "\u043F\u0430\u043B\u0443\u0431\u0430", "\u043F\u0430\u043B\u044C\u0442\u043E", "\u043F\u0430\u043C\u044F\u0442\u044C", "\u043F\u0430\u043D\u0435\u043B\u044C", "\u043F\u0430\u043D\u0438\u043A\u0430", "\u043F\u0430\u0440\u0430", "\u043F\u0430\u0440\u0435\u043D\u044C", "\u043F\u0430\u0440\u043E\u0445\u043E\u0434", "\u043F\u0430\u0440\u0442\u0438\u044F", "\u043F\u0430\u0440\u0443\u0441", "\u043F\u0430\u0441\u043F\u043E\u0440\u0442", "\u043F\u0430\u0441\u0441\u0430\u0436\u0438\u0440", "\u043F\u0430\u0441\u0442\u0443\u0445", "\u043F\u0430\u0442\u0435\u043D\u0442", "\u043F\u0430\u0442\u0440\u043E\u043D", "\u043F\u0430\u0443\u0437\u0430", "\u043F\u0430\u0443\u043A", "\u043F\u0430\u0443\u0442\u0438\u043D\u0430", "\u043F\u0430\u0444\u043E\u0441", "\u043F\u0430\u0445\u043D\u0443\u0442\u044C", "\u043F\u0430\u0446\u0438\u0435\u043D\u0442", "\u043F\u0430\u0447\u043A\u0430", "\u043F\u0435\u0432\u0435\u0446", "\u043F\u0435\u0434\u0430\u0433\u043E\u0433", "\u043F\u0435\u0439\u0437\u0430\u0436", "\u043F\u0435\u043D\u0441\u0438\u044F", "\u043F\u0435\u043F\u0435\u043B", "\u043F\u0435\u0440\u0432\u044B\u0439", "\u043F\u0435\u0440\u0435\u0434", "\u043F\u0435\u0440\u0438\u043E\u0434", "\u043F\u0435\u0440\u043E", "\u043F\u0435\u0440\u0440\u043E\u043D", "\u043F\u0435\u0440\u0441\u043E\u043D\u0430\u0436", "\u043F\u0435\u0440\u0447\u0430\u0442\u043A\u0430", "\u043F\u0435\u0441\u043D\u044F", "\u043F\u0435\u0441\u043E\u043A", "\u043F\u0435\u0442\u043B\u044F", "\u043F\u0435\u0442\u0440\u0443\u0448\u043A\u0430", "\u043F\u0435\u0442\u0443\u0445", "\u043F\u0435\u0445\u043E\u0442\u0430", "\u043F\u0435\u0447\u0430\u0442\u044C", "\u043F\u0435\u0447\u0435\u043D\u044C", "\u043F\u0435\u0448\u043A\u043E\u043C", "\u043F\u0435\u0449\u0435\u0440\u0430", "\u043F\u0438\u0430\u043D\u0438\u0441\u0442", "\u043F\u0438\u0434\u0436\u0430\u043A", "\u043F\u0438\u043B\u043E\u0442", "\u043F\u0438\u043E\u043D\u0435\u0440", "\u043F\u0438\u0440\u0430\u043C\u0438\u0434\u0430", "\u043F\u0438\u0440\u043E\u0436\u043E\u043A", "\u043F\u0438\u0441\u044C\u043C\u043E", "\u043F\u0438\u0449\u0430", "\u043F\u043B\u0430\u0432\u0430\u043D\u0438\u0435", "\u043F\u043B\u0430\u043A\u0430\u0442\u044C", "\u043F\u043B\u0430\u043C\u044F", "\u043F\u043B\u0430\u043D", "\u043F\u043B\u0430\u0441\u0442", "\u043F\u043B\u0430\u0442\u0438\u0442\u044C", "\u043F\u043B\u0435\u043D\u043D\u044B\u0439", "\u043F\u043B\u0435\u0447\u043E", "\u043F\u043B\u0438\u0442\u0430", "\u043F\u043B\u043E\u0434", "\u043F\u043B\u043E\u0441\u043A\u0438\u0439", "\u043F\u043B\u043E\u0442\u043D\u044B\u0439", "\u043F\u043B\u043E\u0445\u043E\u0439", "\u043F\u043B\u043E\u0449\u0430\u0434\u044C", "\u043F\u043B\u044B\u0442\u044C", "\u043F\u043B\u044E\u0441", "\u043F\u043B\u044F\u0436", "\u043F\u043B\u044F\u0441\u0430\u0442\u044C", "\u043F\u043E\u0431\u0435\u0434\u0430", "\u043F\u043E\u0432\u0430\u0440", "\u043F\u043E\u0432\u043E\u0434", "\u043F\u043E\u0432\u0441\u044E\u0434\u0443", "\u043F\u043E\u0432\u044F\u0437\u043A\u0430", "\u043F\u043E\u0433\u043E\u0434\u0430", "\u043F\u043E\u0433\u0440\u0435\u0431", "\u043F\u043E\u0434\u0431\u043E\u0440", "\u043F\u043E\u0434\u0432\u0438\u0433", "\u043F\u043E\u0434\u0434\u0435\u043B\u043A\u0430", "\u043F\u043E\u0434\u0436\u0430\u0442\u044C", "\u043F\u043E\u0434\u043D\u043E\u0441", "\u043F\u043E\u0434\u043F\u0438\u0441\u044C", "\u043F\u043E\u0434\u0440\u0443\u0433\u0430", "\u043F\u043E\u0434\u0445\u043E\u0434", "\u043F\u043E\u0434\u0447\u0430\u0441", "\u043F\u043E\u0434\u044A\u0435\u0437\u0434", "\u043F\u043E\u0435\u0434\u0438\u043D\u043E\u043A", "\u043F\u043E\u0435\u0437\u0434", "\u043F\u043E\u0435\u0441\u0442\u044C", "\u043F\u043E\u0435\u0445\u0430\u0442\u044C", "\u043F\u043E\u0436\u0430\u043B\u0443\u0439", "\u043F\u043E\u0436\u0438\u043B\u043E\u0439", "\u043F\u043E\u0437\u0430\u0434\u0438", "\u043F\u043E\u0437\u0432\u0430\u0442\u044C", "\u043F\u043E\u0437\u0434\u043D\u0438\u0439", "\u043F\u043E\u0437\u0438\u0446\u0438\u044F", "\u043F\u043E\u0437\u043E\u0440", "\u043F\u043E\u0438\u0441\u043A", "\u043F\u043E\u0439\u043C\u0430\u0442\u044C", "\u043F\u043E\u0439\u0442\u0438", "\u043F\u043E\u043A\u043B\u043E\u043D", "\u043F\u043E\u043A\u043E\u0439", "\u043F\u043E\u043A\u0440\u044B\u0442\u044C", "\u043F\u043E\u043B\u0434\u0435\u043D\u044C", "\u043F\u043E\u043B\u0435\u0437\u043D\u044B\u0439", "\u043F\u043E\u043B\u0437\u0442\u0438", "\u043F\u043E\u043B\u043A", "\u043F\u043E\u043B\u043D\u044B\u0439", "\u043F\u043E\u043B\u043E\u0432\u0438\u043D\u0430", "\u043F\u043E\u043B\u0442\u043E\u0440\u0430", "\u043F\u043E\u043B\u044C\u0437\u0430", "\u043F\u043E\u043B\u044F\u043D\u0430", "\u043F\u043E\u043C\u0438\u0434\u043E\u0440", "\u043F\u043E\u043C\u043D\u0438\u0442\u044C", "\u043F\u043E\u043C\u043E\u0449\u044C", "\u043F\u043E\u043F\u0430\u0441\u0442\u044C", "\u043F\u043E\u043F\u0435\u0440\u0435\u043A", "\u043F\u043E\u043F\u043B\u044B\u0442\u044C", "\u043F\u043E\u043F\u043E\u043B\u0430\u043C", "\u043F\u043E\u043F\u0440\u0430\u0432\u043A\u0430", "\u043F\u043E\u043F\u0443\u0433\u0430\u0439", "\u043F\u043E\u043F\u044B\u0442\u043A\u0430", "\u043F\u043E\u0440\u043E\u0433", "\u043F\u043E\u0440\u0442\u0440\u0435\u0442", "\u043F\u043E\u0440\u0446\u0438\u044F", "\u043F\u043E\u0440\u044B\u0432", "\u043F\u043E\u0440\u044F\u0434\u043E\u043A", "\u043F\u043E\u0441\u043B\u0435", "\u043F\u043E\u0441\u043E\u043B", "\u043F\u043E\u0441\u0440\u0435\u0434\u0438", "\u043F\u043E\u0441\u0442\u0435\u043B\u044C", "\u043F\u043E\u0441\u0443\u0434\u0430", "\u043F\u043E\u0442\u043E\u043C", "\u043F\u043E\u0445\u0432\u0430\u043B\u0430", "\u043F\u043E\u0445\u043E\u0436\u0438\u0439", "\u043F\u043E\u0446\u0435\u043B\u0443\u0439", "\u043F\u043E\u0447\u0432\u0430", "\u043F\u043E\u0447\u0435\u043C\u0443", "\u043F\u043E\u0448\u043B\u0438\u043D\u0430", "\u043F\u043E\u044D\u043C\u0430", "\u043F\u043E\u044D\u0442\u043E\u043C\u0443", "\u043F\u0440\u0430\u0432\u043E", "\u043F\u0440\u0430\u0437\u0434\u043D\u0438\u043A", "\u043F\u0440\u0430\u043A\u0442\u0438\u043A\u0430", "\u043F\u0440\u0430\u0445", "\u043F\u0440\u0435\u0433\u0440\u0430\u0434\u0430", "\u043F\u0440\u0435\u0434\u043C\u0435\u0442", "\u043F\u0440\u0435\u0436\u0434\u0435", "\u043F\u0440\u0435\u043B\u0435\u0441\u0442\u044C", "\u043F\u0440\u0435\u043C\u0438\u044F", "\u043F\u0440\u0435\u043F\u0430\u0440\u0430\u0442", "\u043F\u0440\u0435\u0441\u0441\u0430", "\u043F\u0440\u0438\u0431\u044B\u0442\u044C", "\u043F\u0440\u0438\u0436\u0430\u0442\u044C", "\u043F\u0440\u0438\u0439\u0442\u0438", "\u043F\u0440\u0438\u043A\u0430\u0437", "\u043F\u0440\u0438\u043B\u0430\u0432\u043E\u043A", "\u043F\u0440\u0438\u043C\u0435\u0440", "\u043F\u0440\u0438\u043D\u044F\u0442\u044C", "\u043F\u0440\u0438\u0440\u043E\u0434\u0430", "\u043F\u0440\u0438\u0442\u043E\u043C", "\u043F\u0440\u0438\u0445\u043E\u0436\u0430\u044F", "\u043F\u0440\u0438\u0446\u0435\u043B", "\u043F\u0440\u0438\u0447\u0438\u043D\u0430", "\u043F\u0440\u0438\u044E\u0442", "\u043F\u0440\u043E\u0433\u043D\u043E\u0437", "\u043F\u0440\u043E\u0434\u0443\u043A\u0442", "\u043F\u0440\u043E\u0435\u043A\u0442", "\u043F\u0440\u043E\u0436\u0438\u0442\u044C", "\u043F\u0440\u043E\u043A\u0430\u0442", "\u043F\u0440\u043E\u043C\u044B\u0441\u0435\u043B", "\u043F\u0440\u043E\u043F\u0443\u0441\u043A", "\u043F\u0440\u043E\u0441\u0442\u043E", "\u043F\u0440\u043E\u0442\u0438\u0432", "\u043F\u0440\u043E\u0444\u0438\u043B\u044C", "\u043F\u0440\u043E\u0446\u0435\u0441\u0441", "\u043F\u0440\u043E\u0447\u0438\u0439", "\u043F\u0440\u043E\u0448\u043B\u044B\u0439", "\u043F\u0440\u043E\u0449\u0430\u0442\u044C", "\u043F\u0440\u0443\u0436\u0438\u043D\u0430", "\u043F\u0440\u0443\u0442", "\u043F\u0440\u044B\u0436\u043E\u043A", "\u043F\u0440\u044F\u043C\u043E\u0439", "\u043F\u0442\u0438\u0446\u0430", "\u043F\u0443\u0431\u043B\u0438\u043A\u0430", "\u043F\u0443\u0433\u0430\u0442\u044C", "\u043F\u0443\u0433\u043E\u0432\u0438\u0446\u0430", "\u043F\u0443\u0437\u044B\u0440\u044C", "\u043F\u0443\u043B\u044C\u0442", "\u043F\u0443\u043B\u044F", "\u043F\u0443\u043D\u043A\u0442", "\u043F\u0443\u0441\u043A\u0430\u0442\u044C", "\u043F\u0443\u0441\u0442\u043E\u0439", "\u043F\u0443\u0442\u044C", "\u043F\u0443\u0445\u043B\u044B\u0439", "\u043F\u0443\u0447\u043E\u043A", "\u043F\u0443\u0448\u0438\u0441\u0442\u044B\u0439", "\u043F\u0443\u0448\u043A\u0430", "\u043F\u0447\u0435\u043B\u0430", "\u043F\u0448\u0435\u043D\u0438\u0446\u0430", "\u043F\u044B\u043B\u0430\u0442\u044C", "\u043F\u044B\u043B\u044C", "\u043F\u044B\u0448\u043D\u044B\u0439", "\u043F\u044C\u0435\u0441\u0430", "\u043F\u044F\u0442\u043A\u0430", "\u043F\u044F\u0442\u043D\u043E", "\u043F\u044F\u0442\u044B\u0439", "\u043F\u044F\u0442\u044C\u0441\u043E\u0442", "\u0440\u0430\u0431\u043E\u0442\u0430", "\u0440\u0430\u0432\u043D\u0438\u043D\u0430", "\u0440\u0430\u0434\u0438", "\u0440\u0430\u0434\u043E\u0441\u0442\u044C", "\u0440\u0430\u0434\u0443\u0433\u0430", "\u0440\u0430\u0437\u0431\u0438\u0442\u044C", "\u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435", "\u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440", "\u0440\u0430\u0437\u0434\u0435\u043B", "\u0440\u0430\u0437\u043B\u0438\u0447\u0438\u0435", "\u0440\u0430\u0437\u043C\u0435\u0440", "\u0440\u0430\u0437\u043D\u044B\u0439", "\u0440\u0430\u0437\u0440\u044B\u0432", "\u0440\u0430\u0437\u0443\u043C", "\u0440\u0430\u0439\u043E\u043D", "\u0440\u0430\u043A\u0435\u0442\u0430", "\u0440\u0430\u043A\u043E\u0432\u0438\u043D\u0430", "\u0440\u0430\u043C\u043A\u0430", "\u0440\u0430\u043D\u043E", "\u0440\u0430\u043F\u043E\u0440\u0442", "\u0440\u0430\u0441\u043F\u0430\u0434", "\u0440\u0430\u0441\u0441\u043A\u0430\u0437", "\u0440\u0430\u0441\u0442\u0438", "\u0440\u0430\u0441\u0445\u043E\u0434", "\u0440\u0430\u0441\u0446\u0432\u0435\u0442", "\u0440\u0430\u0446\u0438\u044F", "\u0440\u0432\u0430\u043D\u0443\u0442\u044C", "\u0440\u0432\u0430\u0442\u044C\u0441\u044F", "\u0440\u0435\u0430\u043A\u0446\u0438\u044F", "\u0440\u0435\u0431\u0440\u043E", "\u0440\u0435\u0432\u0435\u0442\u044C", "\u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440", "\u0440\u0435\u0434\u043A\u0438\u0439", "\u0440\u0435\u0435\u0441\u0442\u0440", "\u0440\u0435\u0436\u0438\u043C", "\u0440\u0435\u0437\u0430\u0442\u044C", "\u0440\u0435\u0437\u0435\u0440\u0432", "\u0440\u0435\u0437\u0438\u043D\u0430", "\u0440\u0435\u0437\u043A\u043E", "\u0440\u0435\u0437\u043D\u043E\u0439", "\u0440\u0435\u0439\u0441", "\u0440\u0435\u043A\u043B\u0430\u043C\u0430", "\u0440\u0435\u043A\u043E\u0440\u0434", "\u0440\u0435\u043B\u0438\u0433\u0438\u044F", "\u0440\u0435\u043B\u044C\u0441", "\u0440\u0435\u043C\u0435\u043D\u044C", "\u0440\u0435\u043C\u043E\u043D\u0442", "\u0440\u0435\u043F\u043B\u0438\u043A\u0430", "\u0440\u0435\u043F\u043E\u0440\u0442\u0430\u0436", "\u0440\u0435\u0441\u043D\u0438\u0446\u0430", "\u0440\u0435\u0441\u0442\u043E\u0440\u0430\u043D", "\u0440\u0435\u0444\u043E\u0440\u043C\u0430", "\u0440\u0435\u0446\u0435\u043F\u0442", "\u0440\u0435\u0447\u044C", "\u0440\u0435\u0448\u0435\u043D\u0438\u0435", "\u0440\u0436\u0430\u0432\u044B\u0439", "\u0440\u0438\u0441\u043A", "\u0440\u0438\u0441\u0443\u043D\u043E\u043A", "\u0440\u0438\u0442\u0443\u0430\u043B", "\u0440\u0438\u0444\u043C\u0430", "\u0440\u043E\u0431\u043A\u043E", "\u0440\u043E\u0431\u043E\u0442", "\u0440\u043E\u0432\u0435\u0441\u043D\u0438\u043A", "\u0440\u043E\u0432\u043D\u043E", "\u0440\u043E\u0434\u043D\u043E\u0439", "\u0440\u043E\u0436\u0434\u0435\u043D\u0438\u0435", "\u0440\u043E\u0437\u0430", "\u0440\u043E\u0437\u043E\u0432\u044B\u0439", "\u0440\u043E\u0437\u044B\u0441\u043A", "\u0440\u043E\u043B\u044C", "\u0440\u043E\u043C\u0430\u043D", "\u0440\u043E\u0441\u043A\u043E\u0448\u044C", "\u0440\u043E\u0441\u043F\u0438\u0441\u044C", "\u0440\u043E\u0441\u0442", "\u0440\u0443\u0431\u0430\u0448\u043A\u0430", "\u0440\u0443\u0431\u0435\u0436", "\u0440\u0443\u0431\u0438\u0442\u044C", "\u0440\u0443\u0431\u0440\u0438\u043A\u0430", "\u0440\u0443\u0434\u043D\u0438\u043A", "\u0440\u0443\u043A\u0430", "\u0440\u0443\u043A\u043E\u043F\u0438\u0441\u044C", "\u0440\u0443\u043C\u044F\u043D\u044B\u0439", "\u0440\u0443\u0441\u043B\u043E", "\u0440\u0443\u0445\u043D\u0443\u0442\u044C", "\u0440\u0443\u0447\u0435\u0439", "\u0440\u0443\u0447\u043D\u043E\u0439", "\u0440\u044B\u0431\u0430", "\u0440\u044B\u0436\u0438\u0439", "\u0440\u044B\u043D\u043E\u043A", "\u0440\u044B\u0445\u043B\u044B\u0439", "\u0440\u044B\u0446\u0430\u0440\u044C", "\u0440\u044B\u0447\u0430\u0433", "\u0440\u044E\u043A\u0437\u0430\u043A", "\u0440\u044F\u0434\u043E\u043C", "\u0441\u0430\u0434\u043E\u0432\u044B\u0439", "\u0441\u0430\u0436\u0430\u0442\u044C", "\u0441\u0430\u043B\u043E\u043D", "\u0441\u0430\u043B\u0444\u0435\u0442\u043A\u0430", "\u0441\u0430\u043B\u044E\u0442", "\u0441\u0430\u043C\u0435\u0446", "\u0441\u0430\u043C\u043E\u0432\u0430\u0440", "\u0441\u0430\u043C\u044B\u0439", "\u0441\u0430\u043D\u0438", "\u0441\u0430\u043D\u043A\u0446\u0438\u044F", "\u0441\u0430\u043F\u043E\u0433", "\u0441\u0430\u0440\u0430\u0439", "\u0441\u0430\u0442\u0438\u0440\u0430", "\u0441\u0430\u0445\u0430\u0440", "\u0441\u0431\u0438\u0442\u044C", "\u0441\u0431\u043E\u043A\u0443", "\u0441\u0431\u043E\u0440\u043D\u0430\u044F", "\u0441\u0431\u044B\u0442", "\u0441\u0432\u0430\u0434\u044C\u0431\u0430", "\u0441\u0432\u0430\u043B\u043A\u0430", "\u0441\u0432\u0430\u0440\u0438\u0442\u044C", "\u0441\u0432\u0435\u0436\u0438\u0439", "\u0441\u0432\u0435\u0440\u0445\u0443", "\u0441\u0432\u0435\u0442", "\u0441\u0432\u0435\u0447\u0430", "\u0441\u0432\u0438\u043D\u044C\u044F", "\u0441\u0432\u0438\u0441\u0442", "\u0441\u0432\u0438\u0442\u0435\u0440", "\u0441\u0432\u043E\u0431\u043E\u0434\u0430", "\u0441\u0432\u043E\u0434\u043A\u0430", "\u0441\u0432\u043E\u0439", "\u0441\u0432\u044B\u0448\u0435", "\u0441\u0432\u044F\u0437\u044C", "\u0441\u0434\u0430\u0442\u044C\u0441\u044F", "\u0441\u0434\u0435\u043B\u0430\u0442\u044C", "\u0441\u0435\u0433\u043C\u0435\u043D\u0442", "\u0441\u0435\u0433\u043E\u0434\u043D\u044F", "\u0441\u0435\u0434\u043B\u043E", "\u0441\u0435\u0434\u043E\u0439", "\u0441\u0435\u0434\u044C\u043C\u043E\u0439", "\u0441\u0435\u0437\u043E\u043D", "\u0441\u0435\u0439\u0444", "\u0441\u0435\u0439\u0447\u0430\u0441", "\u0441\u0435\u043A\u0440\u0435\u0442", "\u0441\u0435\u043A\u0442\u043E\u0440", "\u0441\u0435\u043A\u0443\u043D\u0434\u0430", "\u0441\u0435\u043C\u0438\u043D\u0430\u0440", "\u0441\u0435\u043C\u044C\u044F", "\u0441\u0435\u043D\u0430\u0442\u043E\u0440", "\u0441\u0435\u043D\u043E", "\u0441\u0435\u043D\u0441\u0430\u0446\u0438\u044F", "\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C", "\u0441\u0435\u0440\u0432\u0438\u0441", "\u0441\u0435\u0440\u0434\u0446\u0435", "\u0441\u0435\u0440\u0435\u0434\u0438\u043D\u0430", "\u0441\u0435\u0440\u0436\u0430\u043D\u0442", "\u0441\u0435\u0440\u0438\u044F", "\u0441\u0435\u0440\u044B\u0439", "\u0441\u0435\u0441\u0441\u0438\u044F", "\u0441\u0435\u0441\u0442\u044C", "\u0441\u0435\u0442\u0435\u0432\u043E\u0439", "\u0441\u0436\u0430\u0442\u044B\u0439", "\u0441\u0436\u0435\u0447\u044C", "\u0441\u0437\u0430\u0434\u0438", "\u0441\u0438\u0433\u043D\u0430\u043B", "\u0441\u0438\u0434\u0435\u043D\u044C\u0435", "\u0441\u0438\u043B\u0430", "\u0441\u0438\u043B\u0443\u044D\u0442", "\u0441\u0438\u043B\u044C\u043D\u044B\u0439", "\u0441\u0438\u043C\u0432\u043E\u043B", "\u0441\u0438\u043C\u043F\u0430\u0442\u0438\u044F", "\u0441\u0438\u043C\u0444\u043E\u043D\u0438\u044F", "\u0441\u0438\u043D\u0438\u0439", "\u0441\u0438\u043D\u0442\u0435\u0437", "\u0441\u0438\u043D\u044F\u043A", "\u0441\u0438\u0440\u0435\u043D\u044C", "\u0441\u0438\u0441\u0442\u0435\u043C\u0430", "\u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044F", "\u0441\u0438\u044F\u043D\u0438\u0435", "\u0441\u043A\u0430\u0437\u0430\u0442\u044C", "\u0441\u043A\u0430\u043B\u0430", "\u0441\u043A\u0430\u043C\u0435\u0439\u043A\u0430", "\u0441\u043A\u0430\u043D\u0434\u0430\u043B", "\u0441\u043A\u0430\u0442\u0435\u0440\u0442\u044C", "\u0441\u043A\u0430\u0447\u043E\u043A", "\u0441\u043A\u0432\u0430\u0436\u0438\u043D\u0430", "\u0441\u043A\u0432\u0435\u0440", "\u0441\u043A\u0432\u043E\u0437\u044C", "\u0441\u043A\u0435\u043B\u0435\u0442", "\u0441\u043A\u0438\u0434\u043A\u0430", "\u0441\u043A\u043B\u0430\u0434", "\u0441\u043A\u043E\u043B\u044C\u043A\u043E", "\u0441\u043A\u043E\u0440\u044B\u0439", "\u0441\u043A\u043E\u0441\u0438\u0442\u044C", "\u0441\u043A\u043E\u0442", "\u0441\u043A\u0440\u0438\u043F\u043A\u0430", "\u0441\u043A\u0443\u0434\u043D\u044B\u0439", "\u0441\u043A\u0443\u043A\u0430", "\u0441\u043B\u0430\u0431\u044B\u0439", "\u0441\u043B\u0430\u0432\u0430", "\u0441\u043B\u0430\u0434\u043A\u0438\u0439", "\u0441\u043B\u0435\u0433\u043A\u0430", "\u0441\u043B\u0435\u0434", "\u0441\u043B\u0435\u0437\u0430", "\u0441\u043B\u0435\u043F\u043E\u0439", "\u0441\u043B\u0435\u0441\u0430\u0440\u044C", "\u0441\u043B\u0438\u0448\u043A\u043E\u043C", "\u0441\u043B\u043E\u0432\u043E", "\u0441\u043B\u043E\u0433", "\u0441\u043B\u043E\u0436\u043D\u044B\u0439", "\u0441\u043B\u043E\u043C\u0430\u0442\u044C", "\u0441\u043B\u0443\u0436\u0431\u0430", "\u0441\u043B\u0443\u0445", "\u0441\u043B\u0443\u0447\u0430\u0439", "\u0441\u043B\u044B\u0448\u0430\u0442\u044C", "\u0441\u043B\u044E\u043D\u0430", "\u0441\u043C\u0435\u0436\u043D\u044B\u0439", "\u0441\u043C\u0435\u043B\u044B\u0439", "\u0441\u043C\u0435\u043D\u0438\u0442\u044C", "\u0441\u043C\u0435\u0441\u044C", "\u0441\u043C\u0435\u0442\u0430\u043D\u0430", "\u0441\u043C\u0435\u0445", "\u0441\u043C\u043E\u043B\u0430", "\u0441\u043C\u0443\u0433\u043B\u044B\u0439", "\u0441\u043C\u0443\u0442\u043D\u044B\u0439", "\u0441\u043C\u0443\u0449\u0430\u0442\u044C", "\u0441\u043C\u044B\u0441\u043B", "\u0441\u043D\u0430\u0439\u043F\u0435\u0440", "\u0441\u043D\u0430\u0440\u044F\u0434", "\u0441\u043D\u0430\u0447\u0430\u043B\u0430", "\u0441\u043D\u0435\u0433", "\u0441\u043D\u0438\u0437\u0443", "\u0441\u043D\u0438\u0442\u044C\u0441\u044F", "\u0441\u043D\u043E\uFFFD\uFFFD\u0430", "\u0441\u043D\u044F\u0442\u044C", "\u0441\u043E\u0431\u0430\u043A\u0430", "\u0441\u043E\u0431\u043B\u0430\u0437\u043D", "\u0441\u043E\u0431\u0440\u0430\u043D\u0438\u0435", "\u0441\u043E\u0431\u044B\u0442\u0438\u0435", "\u0441\u043E\u0432\u0435\u0441\u0442\u044C", "\u0441\u043E\u0432\u0441\u0435\u043C", "\u0441\u043E\u0433\u043B\u0430\u0441\u0438\u0435", "\u0441\u043E\u0437\u0434\u0430\u0442\u044C", "\u0441\u043E\u0437\u043D\u0430\u043D\u0438\u0435", "\u0441\u043E\u0437\u0440\u0435\u0442\u044C", "\u0441\u043E\u0439\u0442\u0438\u0441\u044C", "\u0441\u043E\u043A\u043E\u043B", "\u0441\u043E\u043B\u0434\u0430\u0442", "\u0441\u043E\u043B\u0435\u043D\u044B\u0439", "\u0441\u043E\u043B\u043D\u0446\u0435", "\u0441\u043E\u043B\u043E\u043C\u0430", "\u0441\u043E\u043C\u043D\u0435\u043D\u0438\u0435", "\u0441\u043E\u043D\u043D\u044B\u0439", "\u0441\u043E\u043F\u0435\u0440\u043D\u0438\u043A", "\u0441\u043E\u0440\u0430\u0442\u043D\u0438\u043A", "\u0441\u043E\u0440\u0432\u0430\u0442\u044C", "\u0441\u043E\u0441\u0435\u0434", "\u0441\u043E\u0441\u0438\u0441\u043A\u0430", "\u0441\u043E\u0441\u0442\u0430\u0432", "\u0441\u043E\u0442\u043D\u044F", "\u0441\u043E\u0443\u0441", "\u0441\u043E\u044E\u0437", "\u0441\u043F\u0430\u0434", "\u0441\u043F\u0430\u043B\u044C\u043D\u044F", "\u0441\u043F\u0430\u0441\u0442\u0438", "\u0441\u043F\u0435\u043A\u0442\u0440", "\u0441\u043F\u0435\u0440\u0432\u0430", "\u0441\u043F\u0435\u0448\u0438\u0442\u044C", "\u0441\u043F\u0438\u043D\u0430", "\u0441\u043F\u0438\u0440\u0442", "\u0441\u043F\u0438\u0441\u043E\u043A", "\u0441\u043F\u0438\u0447\u043A\u0430", "\u0441\u043F\u043B\u0430\u0432", "\u0441\u043F\u043E\u043D\u0441\u043E\u0440", "\u0441\u043F\u043E\u0440", "\u0441\u043F\u043E\u0441\u043E\u0431", "\u0441\u043F\u0440\u0430\u0432\u043A\u0430", "\u0441\u043F\u0443\u0441\u0442\u044F", "\u0441\u043F\u0443\u0442\u043D\u0438\u043A", "\u0441\u0440\u0430\u0437\u0443", "\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043E", "\u0441\u0440\u043E\u043A", "\u0441\u0440\u044B\u0432", "\u0441\u0441\u043E\u0440\u0430", "\u0441\u0441\u044B\u043B\u043A\u0430", "\u0441\u0442\u0430\u0432\u0438\u0442\u044C", "\u0441\u0442\u0430\u0434\u0438\u044F", "\u0441\u0442\u0430\u043A\u0430\u043D", "\u0441\u0442\u0430\u043D\u0446\u0438\u044F", "\u0441\u0442\u0430\u0440\u044B\u0439", "\u0441\u0442\u0430\u044F", "\u0441\u0442\u0435\u0431\u0435\u043B\u044C", "\u0441\u0442\u0435\u043A\u043B\u043E", "\u0441\u0442\u0435\u043D\u0430", "\u0441\u0442\u0435\u043F\u0435\u043D\u044C", "\u0441\u0442\u0435\u0440\u0435\u0442\u044C", "\u0441\u0442\u0438\u043B\u044C", "\u0441\u0442\u0438\u043C\u0443\u043B", "\u0441\u0442\u0438\u0440\u0430\u0442\u044C", "\u0441\u0442\u0438\u0445\u0438", "\u0441\u0442\u043E\u0438\u0442\u044C", "\u0441\u0442\u043E\u0439\u043A\u0430", "\u0441\u0442\u043E\u043B", "\u0441\u0442\u043E\u043D\u0430\u0442\u044C", "\u0441\u0442\u043E\u043F\u0430", "\u0441\u0442\u043E\u0440\u043E\u043D\u0430", "\u0441\u0442\u043E\u044F\u043D\u043A\u0430", "\u0441\u0442\u0440\u0430\u043D\u0430", "\u0441\u0442\u0440\u0438\u0447\u044C", "\u0441\u0442\u0440\u043E\u0433\u0438\u0439", "\u0441\u0442\u0440\u0443\u044F", "\u0441\u0442\u0443\u0434\u0435\u043D\u0442", "\u0441\u0442\u0443\u043A", "\u0441\u0442\u0443\u043F\u043D\u044F", "\u0441\u0442\u044B\u0434\u043D\u043E", "\u0441\u0443\u0431\u0431\u043E\u0442\u0430", "\u0441\u0443\u0431\u044A\u0435\u043A\u0442", "\u0441\u0443\u0432\u0435\u043D\u0438\u0440", "\u0441\u0443\u0433\u0440\u043E\u0431", "\u0441\u0443\u0433\u0443\u0431\u043E", "\u0441\u0443\u0434\u0438\u0442\u044C", "\u0441\u0443\u0434\u043D\u043E", "\u0441\u0443\u0434\u044C\u0431\u0430", "\u0441\u0443\u0435\u0442\u0430", "\u0441\u0443\u043C\u0435\u0442\u044C", "\u0441\u0443\u043C\u043C\u0430", "\u0441\u0443\u043C\u0440\u0430\u043A", "\u0441\u0443\u043D\u0434\u0443\u043A", "\u0441\u0443\u043F\u0440\u0443\u0433", "\u0441\u0443\u0440\u043E\u0432\u044B\u0439", "\u0441\u0443\u0442\u043A\u0438", "\u0441\u0443\u0445\u043E\u0439", "\u0441\u0443\u0448\u0430", "\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043E", "\u0441\u0444\u0435\u0440\u0430", "\u0441\u0445\u0435\u043C\u0430", "\u0441\u0445\u043E\u0436\u0438\u0439", "\u0441\u0446\u0435\u043D\u0430\u0440\u0438\u0439", "\u0441\u0447\u0430\u0441\u0442\u044C\u0435", "\u0441\u0447\u0438\u0442\u0430\u0442\u044C", "\u0441\u044A\u0435\u0437\u0434", "\u0441\u044B\u0433\u0440\u0430\u0442\u044C", "\u0441\u044B\u0440\u043E\u0439", "\u0441\u044B\u0442\u044B\u0439", "\u0441\u044B\u0449\u0438\u043A", "\u0441\u044E\u0434\u0430", "\u0441\u044E\u0436\u0435\u0442", "\u0441\u044E\u0440\u043F\u0440\u0438\u0437", "\u0442\u0430\u0439\u043D\u0430", "\u0442\u0430\u043A\u0436\u0435", "\u0442\u0430\u043A\u043E\u0439", "\u0442\u0430\u043A\u0441\u0438", "\u0442\u0430\u043A\u0442\u0438\u043A\u0430", "\u0442\u0430\u043B\u0438\u044F", "\u0442\u0430\u043C\u043E\u0436\u043D\u044F", "\u0442\u0430\u043D\u0435\u0446", "\u0442\u0430\u0440\u0430\u043A\u0430\u043D", "\u0442\u0430\u0440\u0435\u043B\u043A\u0430", "\u0442\u0430\u0440\u0438\u0444", "\u0442\u0430\u0449\u0438\u0442\u044C", "\u0442\u0430\u044F\u0442\u044C", "\u0442\u0432\u0430\u0440\u044C", "\u0442\u0435\u0430\u0442\u0440", "\u0442\u0435\u0437\u0438\u0441", "\u0442\u0435\u043A\u0441\u0442", "\u0442\u0435\u043A\u0443\u0449\u0438\u0439", "\u0442\u0435\u043B\u0435\u0444\u043E\u043D", "\u0442\u0435\u043C\u0430", "\u0442\u0435\u043C\u043D\u043E\u0442\u0430", "\u0442\u0435\u043D\u0435\u0432\u043E\u0439", "\u0442\u0435\u043D\u043D\u0438\u0441", "\u0442\u0435\u043E\u0440\u0438\u044F", "\u0442\u0435\u043F\u0435\u0440\u044C", "\u0442\u0435\u043F\u043B\u043E", "\u0442\u0435\u0440\u0430\u043F\u0438\u044F", "\u0442\u0435\u0440\u0437\u0430\u0442\u044C", "\u0442\u0435\u0440\u043C\u0438\u043D", "\u0442\u0435\u0440\u043F\u0435\u0442\u044C", "\u0442\u0435\u0440\u0440\u0430\u0441\u0430", "\u0442\u0435\u0440\u044F\u0442\u044C", "\u0442\u0435\u0441\u043D\u044B\u0439", "\u0442\u0435\u0442\u0440\u0430\u0434\u044C", "\u0442\u0435\u0445\u043D\u0438\u043A\u0430", "\u0442\u0435\u0447\u0435\u043D\u0438\u0435", "\u0442\u0438\u0433\u0440", "\u0442\u0438\u043F\u043E\u0432\u043E\u0439", "\u0442\u0438\u0440\u0430\u0436", "\u0442\u0438\u0442\u0443\u043B", "\u0442\u0438\u0445\u0438\u0439", "\u0442\u043A\u0430\u043D\u044C", "\u0442\u043E\u0432\u0430\u0440\u0438\u0449", "\u0442\u043E\u0436\u0435", "\u0442\u043E\u043B\u043F\u0430", "\u0442\u043E\u043B\u0441\u0442\u044B\u0439", "\u0442\u043E\u043B\u0447\u043E\u043A", "\u0442\u043E\u043B\u0449\u0438\u043D\u0430", "\u0442\u043E\u043B\u044C\u043A\u043E", "\u0442\u043E\u043D\u043A\u0438\u0439", "\u0442\u043E\u043D\u043D\u0430", "\u0442\u043E\u043F\u0438\u0442\u044C", "\u0442\u043E\u043F\u043E\u0440", "\u0442\u043E\u0440\u0433\u043E\u0432\u043B\u044F", "\u0442\u043E\u0440\u043C\u043E\u0437", "\u0442\u043E\u0440\u0447\u0430\u0442\u044C", "\u0442\u043E\u0442\u0447\u0430\u0441", "\u0442\u043E\u0447\u043A\u0430", "\u0442\u043E\u0447\u043D\u043E", "\u0442\u043E\u0449\u0438\u0439", "\u0442\u0440\u0430\u0432\u0430", "\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044F", "\u0442\u0440\u0430\u043A\u0442\u043E\u0440", "\u0442\u0440\u0430\u043C\u0432\u0430\u0439", "\u0442\u0440\u0430\u043D\u0448\u0435\u044F", "\u0442\u0440\u0430\u0441\u0441\u0430", "\u0442\u0440\u0435\u0432\u043E\u0433\u0430", "\u0442\u0440\u0435\u0437\u0432\u044B\u0439", "\u0442\u0440\u0435\u043D\u0435\u0440", "\u0442\u0440\u0435\u043F\u0435\u0442", "\u0442\u0440\u0435\u0441\u043A", "\u0442\u0440\u0435\u0442\u0438\u0439", "\u0442\u0440\u0435\u0449\u0438\u043D\u0430", "\u0442\u0440\u0438\u0431\u0443\u043D\u0430", "\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C", "\u0442\u0440\u0438\u0441\u0442\u0430", "\u0442\u0440\u0438\u0443\u043C\u0444", "\u0442\u0440\u043E\u0433\u0430\u0442\u044C", "\u0442\u0440\u043E\u0439\u043A\u0430", "\u0442\u0440\u043E\u043D\u0443\u0442\u044C", "\u0442\u0440\u043E\u043F\u0430", "\u0442\u0440\u043E\u0442\u0443\u0430\u0440", "\u0442\u0440\u0443\u0431\u043A\u0430", "\u0442\u0440\u0443\u0434", "\u0442\u0440\u044E\u043A", "\u0442\u0440\u044F\u043F\u043A\u0430", "\u0442\u0443\u0433\u043E", "\u0442\u0443\u043B\u043E\u0432\u0438\u0449\u0435", "\u0442\u0443\u043C\u0430\u043D", "\u0442\u0443\u043C\u0431\u043E\u0447\u043A\u0430", "\u0442\u0443\u043D\u0434\u0440\u0430", "\u0442\u0443\u043F\u0438\u043A", "\u0442\u0443\u0440\u0438\u0441\u0442", "\u0442\u0443\u0440\u043D\u0438\u0440", "\u0442\u0443\u0441\u043A\u043B\u044B\u0439", "\u0442\u0443\u0444\u043B\u044F", "\u0442\u0443\u0447\u0430", "\u0442\u044B\u0441\u044F\u0447\u0430", "\u0442\u044F\u0433\u0430", "\u0442\u044F\u0436\u0435\u043B\u043E", "\u0443\u0431\u0435\u0436\u0430\u0442\u044C", "\u0443\u0431\u043E\u0433\u0438\u0439", "\u0443\u0431\u043E\u0440\u043A\u0430", "\u0443\u0432\u0430\u0436\u0435\u043D\u0438\u0435", "\u0443\u0432\u0435\u0437\u0442\u0438", "\u0443\u0432\u043E\u043B\u0438\u0442\u044C", "\u0443\u0433\u0430\u0434\u0430\u0442\u044C", "\u0443\u0433\u043E\u043B", "\u0443\u0433\u043E\u0449\u0430\u0442\u044C", "\u0443\u0433\u0440\u043E\u0437\u0430", "\u0443\u0433\u0440\u044E\u043C\u044B\u0439", "\u0443\u0434\u0430\u0440", "\u0443\u0434\u0430\u0447\u043D\u044B\u0439", "\u0443\u0434\u0435\u043B\u044F\u0442\u044C", "\u0443\u0434\u0438\u0432\u0438\u0442\u044C", "\u0443\u0434\u043E\u0431\u043D\u044B\u0439", "\u0443\u0434\u043E\u0447\u043A\u0430", "\u0443\u0435\u0437\u0436\u0430\u0442\u044C", "\u0443\u0436\u0438\u043D", "\u0443\u0437\u0435\u043B", "\u0443\u0437\u043A\u0438\u0439", "\u0443\u0439\u0442\u0438", "\u0443\u043A\u0430\u0437\u0430\u043D\u0438\u0435", "\u0443\u043A\u043B\u043E\u043D", "\u0443\u043A\u0440\u0430\u0441\u0442\u044C", "\u0443\u043A\u0443\u0441\u0438\u0442\u044C", "\u0443\u043B\u0435\u0442\u0430\u0442\u044C", "\u0443\u043B\u0438\u0446\u0430", "\u0443\u043B\u044B\u0431\u043A\u0430", "\u0443\u043C\u0435\u043B\u043E", "\u0443\u043C\u0435\u043D\u0438\u0435", "\u0443\u043C\u043D\u044B\u0439", "\u0443\u043C\u043E\u043B\u044F\u0442\u044C", "\u0443\u043D\u0435\u0441\u0442\u0438", "\u0443\u043D\u0438\u0436\u0430\u0442\u044C", "\u0443\u043D\u044B\u043B\u044B\u0439", "\u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0430", "\u0443\u043F\u0430\u0441\u0442\u044C", "\u0443\u043F\u043E\u0440\u043D\u043E", "\u0443\u043F\u0440\u0435\u043A", "\u0443\u0440\u043D\u0430", "\u0443\u0440\u043E\u0432\u0435\u043D\u044C", "\u0443\u0440\u043E\u0436\u0430\u0439", "\u0443\u0440\u043E\u043D\u0438\u0442\u044C", "\u0443\u0441\u0430\u0434\u044C\u0431\u0430", "\u0443\u0441\u0430\u0442\u044B\u0439", "\u0443\u0441\u0432\u043E\u0438\u0442\u044C", "\u0443\u0441\u0438\u043B\u0438\u0435", "\u0443\u0441\u043B\u043E\u0432\u0438\u0435", "\u0443\u0441\u043B\u0443\u0433\u0430", "\u0443\u0441\u043C\u0435\u0448\u043A\u0430", "\u0443\u0441\u043F\u0435\u0442\u044C", "\u0443\u0441\u0442\u0430\u0432", "\u0443\u0441\u0442\u043E\u044F\u0442\u044C", "\u0443\u0442\u0435\u0447\u043A\u0430", "\u0443\u0442\u0435\u0448\u0430\u0442\u044C", "\u0443\u0442\u0440\u043E", "\u0443\u0446\u0435\u043B\u0435\u0442\u044C", "\u0443\u0447\u0430\u0441\u0442\u0438\u0435", "\u0443\u0447\u0435\u043D\u0438\u043A", "\u0443\u0447\u0435\u0441\u0442\u044C", "\u0443\u0449\u0435\u043B\u044C\u0435", "\u0443\u0449\u0435\u0440\u0431", "\u0443\u044E\u0442\u043D\u044B\u0439", "\u0444\u0430\u0431\u0440\u0438\u043A\u0430", "\u0444\u0430\u0432\u043E\u0440\u0438\u0442", "\u0444\u0430\u043A\u0435\u043B", "\u0444\u0430\u043A\u0442", "\u0444\u0430\u043C\u0438\u043B\u0438\u044F", "\u0444\u0430\u043D\u0442\u0430\u0437\u0438\u044F", "\u0444\u0430\u0441\u0430\u0434", "\u0444\u0435\u0432\u0440\u0430\u043B\u044C", "\u0444\u0435\u043D\u043E\u043C\u0435\u043D", "\u0444\u0435\u0440\u043C\u0435\u0440", "\u0444\u0438\u0433\u0443\u0440\u0430", "\u0444\u0438\u0437\u0438\u043A\u0430", "\u0444\u0438\u043B\u0438\u0430\u043B", "\u0444\u0438\u043B\u043E\u0441\u043E\u0444", "\u0444\u0438\u043B\u044C\u043C", "\u0444\u0438\u043D\u0430\u043B", "\u0444\u043B\u0430\u0433", "\u0444\u043B\u043E\u0442", "\u0444\u043E\u0439\u0435", "\u0444\u043E\u043A\u0443\u0441", "\u0444\u043E\u043D\u0430\u0440\u044C", "\u0444\u043E\u043D\u0434", "\u0444\u043E\u043D\u0442\u0430\u043D", "\u0444\u043E\u0440\u043C\u0430", "\u0444\u043E\u0440\u0443\u043C", "\u0444\u043E\u0442\u043E", "\u0444\u0440\u0430\u0433\u043C\u0435\u043D\u0442", "\u0444\u0440\u0430\u0437\u0430", "\u0444\u0440\u0430\u043A\u0446\u0438\u044F", "\u0444\u0440\u043E\u043D\u0442", "\u0444\u0440\u0443\u043A\u0442", "\u0444\u0443\u043D\u043A\u0446\u0438\u044F", "\u0444\u0443\u0440\u0430\u0436\u043A\u0430", "\u0444\u0443\u0442\u0431\u043E\u043B", "\u0444\u0443\u0442\u043B\u044F\u0440", "\u0445\u0430\u043B\u0430\u0442", "\u0445\u0430\u043E\u0441", "\u0445\u0430\u0440\u0430\u043A\u0442\u0435\u0440", "\u0445\u0430\u0442\u0430", "\u0445\u0432\u0430\u043B\u0438\u0442\u044C", "\u0445\u0432\u0430\u0442\u0430\u0442\u044C", "\u0445\u0432\u043E\u0439\u043D\u044B\u0439", "\u0445\u0432\u043E\u0441\u0442", "\u0445\u0438\u043C\u0438\u044F", "\u0445\u0438\u0440\u0443\u0440\u0433", "\u0445\u0438\u0442\u0440\u044B\u0439", "\u0445\u0438\u0449\u043D\u0438\u043A", "\u0445\u043B\u0435\u0431", "\u0445\u043B\u044B\u043D\u0443\u0442\u044C", "\u0445\u043C\u0443\u0440\u044B\u0439", "\u0445\u043E\u0434\u0438\u0442\u044C", "\u0445\u043E\u0437\u044F\u0438\u043D", "\u0445\u043E\u043A\u043A\u0435\u0439", "\u0445\u043E\u043B\u043C", "\u0445\u043E\u043B\u0441\u0442", "\u0445\u043E\u0440\u043E\u0448\u043E", "\u0445\u043E\u0442\u0435\u0442\u044C", "\u0445\u0440\u0430\u0431\u0440\u044B\u0439", "\u0445\u0440\u0430\u043C", "\u0445\u0440\u0430\u043D\u0438\u0442\u044C", "\u0445\u0440\u0435\u0431\u0435\u0442", "\u0445\u0440\u0435\u043D", "\u0445\u0440\u0438\u043F\u043B\u043E", "\u0445\u0440\u043E\u043D\u0438\u043A\u0430", "\u0445\u0440\u0443\u043F\u043A\u0438\u0439", "\u0445\u0443\u0434\u043E\u0436\u043D\u0438\u043A", "\u0445\u0443\u0434\u0448\u0438\u0439", "\u0445\u0443\u043B\u0438\u0433\u0430\u043D", "\u0445\u0443\u0442\u043E\u0440", "\u0446\u0430\u0440\u044C", "\u0446\u0432\u0435\u0442\u043E\u043A", "\u0446\u0435\u043B\u0435\u0432\u043E\u0439", "\u0446\u0435\u043B\u0438\u043A\u043E\u043C", "\u0446\u0435\u043B\u043E\u0435", "\u0446\u0435\u043B\u044C", "\u0446\u0435\u043D\u0437\u0443\u0440\u0430", "\u0446\u0435\u043D\u0438\u0442\u044C", "\u0446\u0435\u043D\u0442\u0440", "\u0446\u0435\u043F\u043D\u043E\u0439", "\u0446\u0438\u043A\u043B", "\u0446\u0438\u043B\u0438\u043D\u0434\u0440", "\u0446\u0438\u0440\u043A", "\u0446\u0438\u0442\u0430\u0442\u0430", "\u0446\u0438\u0444\u0440\u0430", "\u0447\u0430\u0439\u043D\u0438\u043A", "\u0447\u0430\u0441\u044B", "\u0447\u0430\u0448\u043A\u0430", "\u0447\u0435\u043B\u043E\u0432\u0435\u043A", "\u0447\u0435\u043B\u044E\u0441\u0442\u044C", "\u0447\u0435\u043C\u043E\u0434\u0430\u043D", "\u0447\u0435\u043C\u043F\u0438\u043E\u043D", "\u0447\u0435\u043F\u0443\u0445\u0430", "\u0447\u0435\u0440\u0432\u044C", "\u0447\u0435\u0440\u0434\u0430\u043A", "\u0447\u0435\u0440\u0435\u0437", "\u0447\u0435\u0440\u043D\u0438\u043B\u0430", "\u0447\u0435\u0440\u0442\u0430", "\u0447\u0435\u0441\u043D\u043E\u043A", "\u0447\u0435\u0441\u0442\u043D\u043E", "\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044C", "\u0447\u0435\u0442\u044B\u0440\u0435", "\u0447\u0438\u0441\u043B\u043E", "\u0447\u0438\u0441\u0442\u044B\u0439", "\u0447\u0438\u0442\u0430\u0442\u0435\u043B\u044C", "\u0447\u0442\u0435\u043D\u0438\u0435", "\u0447\u0442\u043E\u0431\u044B", "\u0447\u0443\u0432\u0441\u0442\u0432\u043E", "\u0447\u0443\u0434\u0430\u043A", "\u0447\u0443\u0434\u043D\u044B\u0439", "\u0447\u0443\u0434\u043E", "\u0447\u0443\u0436\u043E\u0439", "\u0447\u0443\u043B\u043E\u043A", "\u0447\u0443\u043C\u0430", "\u0447\u0443\u0448\u044C", "\u0447\u0443\u044F\u0442\u044C", "\u0448\u0430\u0433\u0430\u0442\u044C", "\u0448\u0430\u043D\u0441", "\u0448\u0430\u043F\u043A\u0430", "\u0448\u0430\u0440\u0438\u043A", "\u0448\u0430\u0440\u0444", "\u0448\u0430\u0445\u043C\u0430\u0442\u044B", "\u0448\u0430\u0448\u043B\u044B\u043A", "\u0448\u0435\u0434\u0435\u0432\u0440", "\u0448\u0435\u043F\u0442\u0430\u0442\u044C", "\u0448\u0435\u0440\u0441\u0442\u044C", "\u0448\u0435\u0441\u0442\u043E\u0439", "\u0448\u0438\u043D\u0435\u043B\u044C", "\u0448\u0438\u0440\u0438\u043D\u0430", "\u0448\u0438\u0448\u043A\u0430", "\u0448\u043A\u0430\u0444", "\u0448\u043A\u043E\u043B\u0430", "\u0448\u043A\u0443\u0440\u0430", "\u0448\u043B\u0430\u043D\u0433", "\u0448\u043B\u0435\u043C", "\u0448\u043D\u0443\u0440", "\u0448\u043E\u043A\u043E\u043B\u0430\u0434", "\u0448\u043E\u0440\u043E\u0445", "\u0448\u043E\u0441\u0441\u0435", "\u0448\u043F\u0438\u043E\u043D", "\u0448\u043F\u0440\u0438\u0446", "\u0448\u0442\u0430\u0431", "\u0448\u0442\u0430\u043C\u043C", "\u0448\u0442\u0430\u043D\u044B", "\u0448\u0442\u0430\u0442\u043D\u044B\u0439", "\u0448\u0442\u043E\u0440\u0430", "\u0448\u0442\u0440\u0430\u0444", "\u0448\u0442\u0443\u0440\u043C", "\u0448\u0442\u044B\u043A", "\u0448\u0443\u043C\u043D\u043E", "\u0448\u0443\u0440\u0448\u0430\u0442\u044C", "\u0448\u0443\u0442\u0438\u0442\u044C", "\u0448\u0443\u0442\u043A\u0430", "\u0449\u0435\u0434\u0440\u044B\u0439", "\u0449\u0435\u043A\u0430", "\u0449\u0435\u043D\u043E\u043A", "\u044D\u043A\u0437\u0430\u043C\u0435\u043D", "\u044D\u043A\u0438\u043F\u0430\u0436", "\u044D\u043A\u043E\u043D\u043E\u043C\u0438\u044F", "\u044D\u043A\u0440\u0430\u043D", "\u044D\u043A\u0441\u043F\u0435\u0440\u0442", "\u044D\u043B\u0435\u043C\u0435\u043D\u0442", "\u044D\u043B\u0438\u0442\u043D\u044B\u0439", "\u044D\u043C\u043E\u0446\u0438\u044F", "\u044D\u043D\u0435\u0440\u0433\u0438\u044F", "\u044D\u043F\u0438\u0437\u043E\u0434", "\u044D\u043F\u043E\u0445\u0430", "\u044D\u0441\u043A\u0438\u0437", "\u044D\u0441\u0442\u0440\u0430\u0434\u0430", "\u044D\u0442\u0430\u043F", "\u044D\u0442\u0438\u043A\u0430", "\u044D\u0442\u043E\u0442", "\u044D\u0444\u0438\u0440", "\u044D\u0444\u0444\u0435\u043A\u0442", "\u044D\u0448\u0435\u043B\u043E\u043D", "\u044E\u0431\u0438\u043B\u0435\u0439", "\u044E\u0431\u043A\u0430", "\u044E\u0436\u043D\u044B\u0439", "\u044E\u043C\u043E\u0440", "\u044E\u043D\u043E\u0441\u0442\u044C", "\u044E\u0440\u0438\u0441\u0442", "\u044E\u0441\u0442\u0438\u0446\u0438\u044F", "\u044F\u0431\u043B\u043E\u043A\u043E", "\u044F\u0432\u043B\u0435\u043D\u0438\u0435", "\u044F\u0433\u043E\u0434\u0430", "\u044F\u0434\u0440\u043E", "\u044F\u0437\u044B\u043A", "\u044F\u0439\u0446\u043E", "\u044F\u043A\u043E\u0431\u044B", "\u044F\u043A\u043E\u0440\u044C", "\u044F\u043D\u0432\u0430\u0440\u044C", "\u044F\u0440\u043A\u0438\u0439", "\u044F\u0440\u043C\u0430\u0440\u043A\u0430", "\u044F\u0440\u043E\u0441\u0442\u044C", "\u044F\u0441\u043D\u044B\u0439", "\u044F\u0445\u0442\u0430", "\u044F\u0447\u0435\u0439\u043A\u0430", "\u044F\u0449\u0438\u043A"];
  }
});

// node_modules/bip39-mnemonic/wordlist/spanish.json
var require_spanish = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/spanish.json"(exports2, module2) {
    module2.exports = ["a\u0301baco", "abdomen", "abeja", "abierto", "abogado", "abono", "aborto", "abrazo", "abrir", "abuelo", "abuso", "acabar", "academia", "acceso", "accio\u0301n", "aceite", "acelga", "acento", "aceptar", "a\u0301cido", "aclarar", "acne\u0301", "acoger", "acoso", "activo", "acto", "actriz", "actuar", "acudir", "acuerdo", "acusar", "adicto", "admitir", "adoptar", "adorno", "aduana", "adulto", "ae\u0301reo", "afectar", "aficio\u0301n", "afinar", "afirmar", "a\u0301gil", "agitar", "agoni\u0301a", "agosto", "agotar", "agregar", "agrio", "agua", "agudo", "a\u0301guila", "aguja", "ahogo", "ahorro", "aire", "aislar", "ajedrez", "ajeno", "ajuste", "alacra\u0301n", "alambre", "alarma", "alba", "a\u0301lbum", "alcalde", "aldea", "alegre", "alejar", "alerta", "aleta", "alfiler", "alga", "algodo\u0301n", "aliado", "aliento", "alivio", "alma", "almeja", "almi\u0301bar", "altar", "alteza", "altivo", "alto", "altura", "alumno", "alzar", "amable", "amante", "amapola", "amargo", "amasar", "a\u0301mbar", "a\u0301mbito", "ameno", "amigo", "amistad", "amor", "amparo", "amplio", "ancho", "anciano", "ancla", "andar", "ande\u0301n", "anemia", "a\u0301ngulo", "anillo", "a\u0301nimo", "ani\u0301s", "anotar", "antena", "antiguo", "antojo", "anual", "anular", "anuncio", "an\u0303adir", "an\u0303ejo", "an\u0303o", "apagar", "aparato", "apetito", "apio", "aplicar", "apodo", "aporte", "apoyo", "aprender", "aprobar", "apuesta", "apuro", "arado", "aran\u0303a", "arar", "a\u0301rbitro", "a\u0301rbol", "arbusto", "archivo", "arco", "arder", "ardilla", "arduo", "a\u0301rea", "a\u0301rido", "aries", "armoni\u0301a", "arne\u0301s", "aroma", "arpa", "arpo\u0301n", "arreglo", "arroz", "arruga", "arte", "artista", "asa", "asado", "asalto", "ascenso", "asegurar", "aseo", "asesor", "asiento", "asilo", "asistir", "asno", "asombro", "a\u0301spero", "astilla", "astro", "astuto", "asumir", "asunto", "atajo", "ataque", "atar", "atento", "ateo", "a\u0301tico", "atleta", "a\u0301tomo", "atraer", "atroz", "atu\u0301n", "audaz", "audio", "auge", "aula", "aumento", "ausente", "autor", "aval", "avance", "avaro", "ave", "avellana", "avena", "avestruz", "avio\u0301n", "aviso", "ayer", "ayuda", "ayuno", "azafra\u0301n", "azar", "azote", "azu\u0301car", "azufre", "azul", "baba", "babor", "bache", "bahi\u0301a", "baile", "bajar", "balanza", "balco\u0301n", "balde", "bambu\u0301", "banco", "banda", "ban\u0303o", "barba", "barco", "barniz", "barro", "ba\u0301scula", "basto\u0301n", "basura", "batalla", "bateri\u0301a", "batir", "batuta", "bau\u0301l", "bazar", "bebe\u0301", "bebida", "bello", "besar", "beso", "bestia", "bicho", "bien", "bingo", "blanco", "bloque", "blusa", "boa", "bobina", "bobo", "boca", "bocina", "boda", "bodega", "boina", "bola", "bolero", "bolsa", "bomba", "bondad", "bonito", "bono", "bonsa\u0301i", "borde", "borrar", "bosque", "bote", "boti\u0301n", "bo\u0301veda", "bozal", "bravo", "brazo", "brecha", "breve", "brillo", "brinco", "brisa", "broca", "broma", "bronce", "brote", "bruja", "brusco", "bruto", "buceo", "bucle", "bueno", "buey", "bufanda", "bufo\u0301n", "bu\u0301ho", "buitre", "bulto", "burbuja", "burla", "burro", "buscar", "butaca", "buzo\u0301n", "caballo", "cabeza", "cabina", "cabra", "cacao", "cada\u0301ver", "cadena", "caer", "cafe\u0301", "cai\u0301da", "caima\u0301n", "caja", "cajo\u0301n", "cal", "calamar", "calcio", "caldo", "calidad", "calle", "calma", "calor", "calvo", "cama", "cambio", "camello", "camino", "campo", "ca\u0301ncer", "candil", "canela", "canguro", "canica", "canto", "can\u0303a", "can\u0303o\u0301n", "caoba", "caos", "capaz", "capita\u0301n", "capote", "captar", "capucha", "cara", "carbo\u0301n", "ca\u0301rcel", "careta", "carga", "carin\u0303o", "carne", "carpeta", "carro", "carta", "casa", "casco", "casero", "caspa", "castor", "catorce", "catre", "caudal", "causa", "cazo", "cebolla", "ceder", "cedro", "celda", "ce\u0301lebre", "celoso", "ce\u0301lula", "cemento", "ceniza", "centro", "cerca", "cerdo", "cereza", "cero", "cerrar", "certeza", "ce\u0301sped", "cetro", "chacal", "chaleco", "champu\u0301", "chancla", "chapa", "charla", "chico", "chiste", "chivo", "choque", "choza", "chuleta", "chupar", "ciclo\u0301n", "ciego", "cielo", "cien", "cierto", "cifra", "cigarro", "cima", "cinco", "cine", "cinta", "cipre\u0301s", "circo", "ciruela", "cisne", "cita", "ciudad", "clamor", "clan", "claro", "clase", "clave", "cliente", "clima", "cli\u0301nica", "cobre", "coccio\u0301n", "cochino", "cocina", "coco", "co\u0301digo", "codo", "cofre", "coger", "cohete", "coji\u0301n", "cojo", "cola", "colcha", "colegio", "colgar", "colina", "collar", "colmo", "columna", "combate", "comer", "comida", "co\u0301modo", "compra", "conde", "conejo", "conga", "conocer", "consejo", "contar", "copa", "copia", "corazo\u0301n", "corbata", "corcho", "cordo\u0301n", "corona", "correr", "coser", "cosmos", "costa", "cra\u0301neo", "cra\u0301ter", "crear", "crecer", "crei\u0301do", "crema", "cri\u0301a", "crimen", "cripta", "crisis", "cromo", "cro\u0301nica", "croqueta", "crudo", "cruz", "cuadro", "cuarto", "cuatro", "cubo", "cubrir", "cuchara", "cuello", "cuento", "cuerda", "cuesta", "cueva", "cuidar", "culebra", "culpa", "culto", "cumbre", "cumplir", "cuna", "cuneta", "cuota", "cupo\u0301n", "cu\u0301pula", "curar", "curioso", "curso", "curva", "cutis", "dama", "danza", "dar", "dardo", "da\u0301til", "deber", "de\u0301bil", "de\u0301cada", "decir", "dedo", "defensa", "definir", "dejar", "delfi\u0301n", "delgado", "delito", "demora", "denso", "dental", "deporte", "derecho", "derrota", "desayuno", "deseo", "desfile", "desnudo", "destino", "desvi\u0301o", "detalle", "detener", "deuda", "di\u0301a", "diablo", "diadema", "diamante", "diana", "diario", "dibujo", "dictar", "diente", "dieta", "diez", "difi\u0301cil", "digno", "dilema", "diluir", "dinero", "directo", "dirigir", "disco", "disen\u0303o", "disfraz", "diva", "divino", "doble", "doce", "dolor", "domingo", "don", "donar", "dorado", "dormir", "dorso", "dos", "dosis", "drago\u0301n", "droga", "ducha", "duda", "duelo", "duen\u0303o", "dulce", "du\u0301o", "duque", "durar", "dureza", "duro", "e\u0301bano", "ebrio", "echar", "eco", "ecuador", "edad", "edicio\u0301n", "edificio", "editor", "educar", "efecto", "eficaz", "eje", "ejemplo", "elefante", "elegir", "elemento", "elevar", "elipse", "e\u0301lite", "elixir", "elogio", "eludir", "embudo", "emitir", "emocio\u0301n", "empate", "empen\u0303o", "empleo", "empresa", "enano", "encargo", "enchufe", "enci\u0301a", "enemigo", "enero", "enfado", "enfermo", "engan\u0303o", "enigma", "enlace", "enorme", "enredo", "ensayo", "ensen\u0303ar", "entero", "entrar", "envase", "envi\u0301o", "e\u0301poca", "equipo", "erizo", "escala", "escena", "escolar", "escribir", "escudo", "esencia", "esfera", "esfuerzo", "espada", "espejo", "espi\u0301a", "esposa", "espuma", "esqui\u0301", "estar", "este", "estilo", "estufa", "etapa", "eterno", "e\u0301tica", "etnia", "evadir", "evaluar", "evento", "evitar", "exacto", "examen", "exceso", "excusa", "exento", "exigir", "exilio", "existir", "e\u0301xito", "experto", "explicar", "exponer", "extremo", "fa\u0301brica", "fa\u0301bula", "fachada", "fa\u0301cil", "factor", "faena", "faja", "falda", "fallo", "falso", "faltar", "fama", "familia", "famoso", "farao\u0301n", "farmacia", "farol", "farsa", "fase", "fatiga", "fauna", "favor", "fax", "febrero", "fecha", "feliz", "feo", "feria", "feroz", "fe\u0301rtil", "fervor", "festi\u0301n", "fiable", "fianza", "fiar", "fibra", "ficcio\u0301n", "ficha", "fideo", "fiebre", "fiel", "fiera", "fiesta", "figura", "fijar", "fijo", "fila", "filete", "filial", "filtro", "fin", "finca", "fingir", "finito", "firma", "flaco", "flauta", "flecha", "flor", "flota", "fluir", "flujo", "flu\u0301or", "fobia", "foca", "fogata", "fogo\u0301n", "folio", "folleto", "fondo", "forma", "forro", "fortuna", "forzar", "fosa", "foto", "fracaso", "fra\u0301gil", "franja", "frase", "fraude", "frei\u0301r", "freno", "fresa", "fri\u0301o", "frito", "fruta", "fuego", "fuente", "fuerza", "fuga", "fumar", "funcio\u0301n", "funda", "furgo\u0301n", "furia", "fusil", "fu\u0301tbol", "futuro", "gacela", "gafas", "gaita", "gajo", "gala", "galeri\u0301a", "gallo", "gamba", "ganar", "gancho", "ganga", "ganso", "garaje", "garza", "gasolina", "gastar", "gato", "gavila\u0301n", "gemelo", "gemir", "gen", "ge\u0301nero", "genio", "gente", "geranio", "gerente", "germen", "gesto", "gigante", "gimnasio", "girar", "giro", "glaciar", "globo", "gloria", "gol", "golfo", "goloso", "golpe", "goma", "gordo", "gorila", "gorra", "gota", "goteo", "gozar", "grada", "gra\u0301fico", "grano", "grasa", "gratis", "grave", "grieta", "grillo", "gripe", "gris", "grito", "grosor", "gru\u0301a", "grueso", "grumo", "grupo", "guante", "guapo", "guardia", "guerra", "gui\u0301a", "guin\u0303o", "guion", "guiso", "guitarra", "gusano", "gustar", "haber", "ha\u0301bil", "hablar", "hacer", "hacha", "hada", "hallar", "hamaca", "harina", "haz", "hazan\u0303a", "hebilla", "hebra", "hecho", "helado", "helio", "hembra", "herir", "hermano", "he\u0301roe", "hervir", "hielo", "hierro", "hi\u0301gado", "higiene", "hijo", "himno", "historia", "hocico", "hogar", "hoguera", "hoja", "hombre", "hongo", "honor", "honra", "hora", "hormiga", "horno", "hostil", "hoyo", "hueco", "huelga", "huerta", "hueso", "huevo", "huida", "huir", "humano", "hu\u0301medo", "humilde", "humo", "hundir", "huraca\u0301n", "hurto", "icono", "ideal", "idioma", "i\u0301dolo", "iglesia", "iglu\u0301", "igual", "ilegal", "ilusio\u0301n", "imagen", "ima\u0301n", "imitar", "impar", "imperio", "imponer", "impulso", "incapaz", "i\u0301ndice", "inerte", "infiel", "informe", "ingenio", "inicio", "inmenso", "inmune", "innato", "insecto", "instante", "intere\u0301s", "i\u0301ntimo", "intuir", "inu\u0301til", "invierno", "ira", "iris", "ironi\u0301a", "isla", "islote", "jabali\u0301", "jabo\u0301n", "jamo\u0301n", "jarabe", "jardi\u0301n", "jarra", "jaula", "jazmi\u0301n", "jefe", "jeringa", "jinete", "jornada", "joroba", "joven", "joya", "juerga", "jueves", "juez", "jugador", "jugo", "juguete", "juicio", "junco", "jungla", "junio", "juntar", "ju\u0301piter", "jurar", "justo", "juvenil", "juzgar", "kilo", "koala", "labio", "lacio", "lacra", "lado", "ladro\u0301n", "lagarto", "la\u0301grima", "laguna", "laico", "lamer", "la\u0301mina", "la\u0301mpara", "lana", "lancha", "langosta", "lanza", "la\u0301piz", "largo", "larva", "la\u0301stima", "lata", "la\u0301tex", "latir", "laurel", "lavar", "lazo", "leal", "leccio\u0301n", "leche", "lector", "leer", "legio\u0301n", "legumbre", "lejano", "lengua", "lento", "len\u0303a", "leo\u0301n", "leopardo", "lesio\u0301n", "letal", "letra", "leve", "leyenda", "libertad", "libro", "licor", "li\u0301der", "lidiar", "lienzo", "liga", "ligero", "lima", "li\u0301mite", "limo\u0301n", "limpio", "lince", "lindo", "li\u0301nea", "lingote", "lino", "linterna", "li\u0301quido", "liso", "lista", "litera", "litio", "litro", "llaga", "llama", "llanto", "llave", "llegar", "llenar", "llevar", "llorar", "llover", "lluvia", "lobo", "locio\u0301n", "loco", "locura", "lo\u0301gica", "logro", "lombriz", "lomo", "lonja", "lote", "lucha", "lucir", "lugar", "lujo", "luna", "lunes", "lupa", "lustro", "luto", "luz", "maceta", "macho", "madera", "madre", "maduro", "maestro", "mafia", "magia", "mago", "mai\u0301z", "maldad", "maleta", "malla", "malo", "mama\u0301", "mambo", "mamut", "manco", "mando", "manejar", "manga", "maniqui\u0301", "manjar", "mano", "manso", "manta", "man\u0303ana", "mapa", "ma\u0301quina", "mar", "marco", "marea", "marfil", "margen", "marido", "ma\u0301rmol", "marro\u0301n", "martes", "marzo", "masa", "ma\u0301scara", "masivo", "matar", "materia", "matiz", "matriz", "ma\u0301ximo", "mayor", "mazorca", "mecha", "medalla", "medio", "me\u0301dula", "mejilla", "mejor", "melena", "melo\u0301n", "memoria", "menor", "mensaje", "mente", "menu\u0301", "mercado", "merengue", "me\u0301rito", "mes", "meso\u0301n", "meta", "meter", "me\u0301todo", "metro", "mezcla", "miedo", "miel", "miembro", "miga", "mil", "milagro", "militar", "millo\u0301n", "mimo", "mina", "minero", "mi\u0301nimo", "minuto", "miope", "mirar", "misa", "miseria", "misil", "mismo", "mitad", "mito", "mochila", "mocio\u0301n", "moda", "modelo", "moho", "mojar", "molde", "moler", "molino", "momento", "momia", "monarca", "moneda", "monja", "monto", "mon\u0303o", "morada", "morder", "moreno", "morir", "morro", "morsa", "mortal", "mosca", "mostrar", "motivo", "mover", "mo\u0301vil", "mozo", "mucho", "mudar", "mueble", "muela", "muerte", "muestra", "mugre", "mujer", "mula", "muleta", "multa", "mundo", "mun\u0303eca", "mural", "muro", "mu\u0301sculo", "museo", "musgo", "mu\u0301sica", "muslo", "na\u0301car", "nacio\u0301n", "nadar", "naipe", "naranja", "nariz", "narrar", "nasal", "natal", "nativo", "natural", "na\u0301usea", "naval", "nave", "navidad", "necio", "ne\u0301ctar", "negar", "negocio", "negro", "neo\u0301n", "nervio", "neto", "neutro", "nevar", "nevera", "nicho", "nido", "niebla", "nieto", "nin\u0303ez", "nin\u0303o", "ni\u0301tido", "nivel", "nobleza", "noche", "no\u0301mina", "noria", "norma", "norte", "nota", "noticia", "novato", "novela", "novio", "nube", "nuca", "nu\u0301cleo", "nudillo", "nudo", "nuera", "nueve", "nuez", "nulo", "nu\u0301mero", "nutria", "oasis", "obeso", "obispo", "objeto", "obra", "obrero", "observar", "obtener", "obvio", "oca", "ocaso", "oce\u0301ano", "ochenta", "ocho", "ocio", "ocre", "octavo", "octubre", "oculto", "ocupar", "ocurrir", "odiar", "odio", "odisea", "oeste", "ofensa", "oferta", "oficio", "ofrecer", "ogro", "oi\u0301do", "oi\u0301r", "ojo", "ola", "oleada", "olfato", "olivo", "olla", "olmo", "olor", "olvido", "ombligo", "onda", "onza", "opaco", "opcio\u0301n", "o\u0301pera", "opinar", "oponer", "optar", "o\u0301ptica", "opuesto", "oracio\u0301n", "orador", "oral", "o\u0301rbita", "orca", "orden", "oreja", "o\u0301rgano", "orgi\u0301a", "orgullo", "oriente", "origen", "orilla", "oro", "orquesta", "oruga", "osadi\u0301a", "oscuro", "osezno", "oso", "ostra", "oton\u0303o", "otro", "oveja", "o\u0301vulo", "o\u0301xido", "oxi\u0301geno", "oyente", "ozono", "pacto", "padre", "paella", "pa\u0301gina", "pago", "pai\u0301s", "pa\u0301jaro", "palabra", "palco", "paleta", "pa\u0301lido", "palma", "paloma", "palpar", "pan", "panal", "pa\u0301nico", "pantera", "pan\u0303uelo", "papa\u0301", "papel", "papilla", "paquete", "parar", "parcela", "pared", "parir", "paro", "pa\u0301rpado", "parque", "pa\u0301rrafo", "parte", "pasar", "paseo", "pasio\u0301n", "paso", "pasta", "pata", "patio", "patria", "pausa", "pauta", "pavo", "payaso", "peato\u0301n", "pecado", "pecera", "pecho", "pedal", "pedir", "pegar", "peine", "pelar", "peldan\u0303o", "pelea", "peligro", "pellejo", "pelo", "peluca", "pena", "pensar", "pen\u0303o\u0301n", "peo\u0301n", "peor", "pepino", "pequen\u0303o", "pera", "percha", "perder", "pereza", "perfil", "perico", "perla", "permiso", "perro", "persona", "pesa", "pesca", "pe\u0301simo", "pestan\u0303a", "pe\u0301talo", "petro\u0301leo", "pez", "pezun\u0303a", "picar", "picho\u0301n", "pie", "piedra", "pierna", "pieza", "pijama", "pilar", "piloto", "pimienta", "pino", "pintor", "pinza", "pin\u0303a", "piojo", "pipa", "pirata", "pisar", "piscina", "piso", "pista", "pito\u0301n", "pizca", "placa", "plan", "plata", "playa", "plaza", "pleito", "pleno", "plomo", "pluma", "plural", "pobre", "poco", "poder", "podio", "poema", "poesi\u0301a", "poeta", "polen", "polici\u0301a", "pollo", "polvo", "pomada", "pomelo", "pomo", "pompa", "poner", "porcio\u0301n", "portal", "posada", "poseer", "posible", "poste", "potencia", "potro", "pozo", "prado", "precoz", "pregunta", "premio", "prensa", "preso", "previo", "primo", "pri\u0301ncipe", "prisio\u0301n", "privar", "proa", "probar", "proceso", "producto", "proeza", "profesor", "programa", "prole", "promesa", "pronto", "propio", "pro\u0301ximo", "prueba", "pu\u0301blico", "puchero", "pudor", "pueblo", "puerta", "puesto", "pulga", "pulir", "pulmo\u0301n", "pulpo", "pulso", "puma", "punto", "pun\u0303al", "pun\u0303o", "pupa", "pupila", "pure\u0301", "quedar", "queja", "quemar", "querer", "queso", "quieto", "qui\u0301mica", "quince", "quitar", "ra\u0301bano", "rabia", "rabo", "racio\u0301n", "radical", "rai\u0301z", "rama", "rampa", "rancho", "rango", "rapaz", "ra\u0301pido", "rapto", "rasgo", "raspa", "rato", "rayo", "raza", "razo\u0301n", "reaccio\u0301n", "realidad", "reban\u0303o", "rebote", "recaer", "receta", "rechazo", "recoger", "recreo", "recto", "recurso", "red", "redondo", "reducir", "reflejo", "reforma", "refra\u0301n", "refugio", "regalo", "regir", "regla", "regreso", "rehe\u0301n", "reino", "rei\u0301r", "reja", "relato", "relevo", "relieve", "relleno", "reloj", "remar", "remedio", "remo", "rencor", "rendir", "renta", "reparto", "repetir", "reposo", "reptil", "res", "rescate", "resina", "respeto", "resto", "resumen", "retiro", "retorno", "retrato", "reunir", "reve\u0301s", "revista", "rey", "rezar", "rico", "riego", "rienda", "riesgo", "rifa", "ri\u0301gido", "rigor", "rinco\u0301n", "rin\u0303o\u0301n", "ri\u0301o", "riqueza", "risa", "ritmo", "rito", "rizo", "roble", "roce", "rociar", "rodar", "rodeo", "rodilla", "roer", "rojizo", "rojo", "romero", "romper", "ron", "ronco", "ronda", "ropa", "ropero", "rosa", "rosca", "rostro", "rotar", "rubi\u0301", "rubor", "rudo", "rueda", "rugir", "ruido", "ruina", "ruleta", "rulo", "rumbo", "rumor", "ruptura", "ruta", "rutina", "sa\u0301bado", "saber", "sabio", "sable", "sacar", "sagaz", "sagrado", "sala", "saldo", "salero", "salir", "salmo\u0301n", "salo\u0301n", "salsa", "salto", "salud", "salvar", "samba", "sancio\u0301n", "sandi\u0301a", "sanear", "sangre", "sanidad", "sano", "santo", "sapo", "saque", "sardina", "sarte\u0301n", "sastre", "sata\u0301n", "sauna", "saxofo\u0301n", "seccio\u0301n", "seco", "secreto", "secta", "sed", "seguir", "seis", "sello", "selva", "semana", "semilla", "senda", "sensor", "sen\u0303al", "sen\u0303or", "separar", "sepia", "sequi\u0301a", "ser", "serie", "sermo\u0301n", "servir", "sesenta", "sesio\u0301n", "seta", "setenta", "severo", "sexo", "sexto", "sidra", "siesta", "siete", "siglo", "signo", "si\u0301laba", "silbar", "silencio", "silla", "si\u0301mbolo", "simio", "sirena", "sistema", "sitio", "situar", "sobre", "socio", "sodio", "sol", "solapa", "soldado", "soledad", "so\u0301lido", "soltar", "solucio\u0301n", "sombra", "sondeo", "sonido", "sonoro", "sonrisa", "sopa", "soplar", "soporte", "sordo", "sorpresa", "sorteo", "soste\u0301n", "so\u0301tano", "suave", "subir", "suceso", "sudor", "suegra", "suelo", "suen\u0303o", "suerte", "sufrir", "sujeto", "sulta\u0301n", "sumar", "superar", "suplir", "suponer", "supremo", "sur", "surco", "suren\u0303o", "surgir", "susto", "sutil", "tabaco", "tabique", "tabla", "tabu\u0301", "taco", "tacto", "tajo", "talar", "talco", "talento", "talla", "talo\u0301n", "taman\u0303o", "tambor", "tango", "tanque", "tapa", "tapete", "tapia", "tapo\u0301n", "taquilla", "tarde", "tarea", "tarifa", "tarjeta", "tarot", "tarro", "tarta", "tatuaje", "tauro", "taza", "tazo\u0301n", "teatro", "techo", "tecla", "te\u0301cnica", "tejado", "tejer", "tejido", "tela", "tele\u0301fono", "tema", "temor", "templo", "tenaz", "tender", "tener", "tenis", "tenso", "teori\u0301a", "terapia", "terco", "te\u0301rmino", "ternura", "terror", "tesis", "tesoro", "testigo", "tetera", "texto", "tez", "tibio", "tiburo\u0301n", "tiempo", "tienda", "tierra", "tieso", "tigre", "tijera", "tilde", "timbre", "ti\u0301mido", "timo", "tinta", "ti\u0301o", "ti\u0301pico", "tipo", "tira", "tiro\u0301n", "tita\u0301n", "ti\u0301tere", "ti\u0301tulo", "tiza", "toalla", "tobillo", "tocar", "tocino", "todo", "toga", "toldo", "tomar", "tono", "tonto", "topar", "tope", "toque", "to\u0301rax", "torero", "tormenta", "torneo", "toro", "torpedo", "torre", "torso", "tortuga", "tos", "tosco", "toser", "to\u0301xico", "trabajo", "tractor", "traer", "tra\u0301fico", "trago", "traje", "tramo", "trance", "trato", "trauma", "trazar", "tre\u0301bol", "tregua", "treinta", "tren", "trepar", "tres", "tribu", "trigo", "tripa", "triste", "triunfo", "trofeo", "trompa", "tronco", "tropa", "trote", "trozo", "truco", "trueno", "trufa", "tuberi\u0301a", "tubo", "tuerto", "tumba", "tumor", "tu\u0301nel", "tu\u0301nica", "turbina", "turismo", "turno", "tutor", "ubicar", "u\u0301lcera", "umbral", "unidad", "unir", "universo", "uno", "untar", "un\u0303a", "urbano", "urbe", "urgente", "urna", "usar", "usuario", "u\u0301til", "utopi\u0301a", "uva", "vaca", "vaci\u0301o", "vacuna", "vagar", "vago", "vaina", "vajilla", "vale", "va\u0301lido", "valle", "valor", "va\u0301lvula", "vampiro", "vara", "variar", "varo\u0301n", "vaso", "vecino", "vector", "vehi\u0301culo", "veinte", "vejez", "vela", "velero", "veloz", "vena", "vencer", "venda", "veneno", "vengar", "venir", "venta", "venus", "ver", "verano", "verbo", "verde", "vereda", "verja", "verso", "verter", "vi\u0301a", "viaje", "vibrar", "vicio", "vi\u0301ctima", "vida", "vi\u0301deo", "vidrio", "viejo", "viernes", "vigor", "vil", "villa", "vinagre", "vino", "vin\u0303edo", "violi\u0301n", "viral", "virgo", "virtud", "visor", "vi\u0301spera", "vista", "vitamina", "viudo", "vivaz", "vivero", "vivir", "vivo", "volca\u0301n", "volumen", "volver", "voraz", "votar", "voto", "voz", "vuelo", "vulgar", "yacer", "yate", "yegua", "yema", "yerno", "yeso", "yodo", "yoga", "yogur", "zafiro", "zanja", "zapato", "zarza", "zona", "zorro", "zumo", "zurdo"];
  }
});

// node_modules/bip39-mnemonic/wordlist/turkish.json
var require_turkish = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/turkish.json"(exports2, module2) {
    module2.exports = ["abajur", "abak\xFCs", "abart\u0131", "abdal", "abdest", "abiye", "abluka", "abone", "absorbe", "abs\xFCrt", "acayip", "acele", "acemi", "a\xE7\u0131kg\xF6z", "adalet", "adam", "adezyon", "adisyon", "adliye", "adres", "afacan", "afili", "afi\u015F", "afiyet", "aforizm", "afra", "a\u011Fa\xE7", "a\u011F\u0131r", "ahbap", "ahkam", "ahlak", "ahtapot", "aidat", "aile", "ajan", "akademi", "akarsu", "akba\u015F", "akci\u011Fer", "akdeniz", "ak\u0131bet", "ak\u0131l", "ak\u0131nt\u0131", "akide", "akrep", "akrobasi", "aksiyon", "ak\u015Fam", "aktif", "akt\xF6r", "aktris", "akustik", "alaca", "alb\xFCm", "al\xE7ak", "aldanma", "aleni", "alet", "alfabe", "alg\u0131lama", "al\u0131ngan", "alk\u0131\u015F", "alkol", "alpay", "alperen", "alt\u0131n", "alt\xFCst", "altyap\u0131", "alyuvar", "amade", "amat\xF6r", "amazon", "ambalaj", "amblem", "ambulans", "amca", "amel", "amigo", "amir", "amiyane", "amorti", "ampul", "anadolu", "anahtar", "anakonda", "anaokul", "anapara", "anar\u015Fi", "anatomi", "anayasa", "anekdot", "anestezi", "angaje", "anka", "anket", "anlaml\u0131", "anne", "anomali", "anonim", "anten", "antla\u015Fma", "apse", "araba", "arac\u0131", "araf", "arbede", "arda", "arefe", "arena", "argo", "arg\xFCman", "arkada\u015F", "armoni", "aroma", "arsa", "ars\u0131z", "art\u0131", "artist", "aruz", "asans\xF6r", "asayi\u015F", "asfalt", "asgari", "asil", "asker", "ask\u0131", "aslan", "asosyal", "astsubay", "asya", "a\u015F\xE7\u0131", "a\u015F\u0131r\u0131", "a\u015Fure", "atabey", "ataman", "ate\u015F", "atmaca", "atmosfer", "atom", "at\xF6lye", "avc\u0131", "avdet", "avize", "avlu", "avokado", "avrupa", "avukat", "ayaz", "ay\xE7i\xE7e\u011Fi", "ayd\u0131n", "ayg\u0131t", "ayna", "ayran", "ayr\u0131nt\u0131", "azim", "baca", "bagaj", "ba\u011Flant\u0131", "bahad\u0131r", "bah\xE7e", "baki", "bakkal", "baklava", "bakteri", "bal\xE7\u0131k", "balina", "balo", "balta", "bant", "banyo", "bardak", "bar\u0131\u015F", "ba\u015Fbu\u011F", "ba\u015F\u0131bo\u015F", "ba\u015Fkan", "ba\u015Fl\u0131k", "bavul", "bay\u0131nd\u0131r", "bayku\u015F", "bazlama", "bedel", "beg\xFCm", "bek\xE7i", "bekle", "belge", "belki", "bencil", "benek", "bengi", "benzer", "berjer", "berk", "bermuda", "berrak", "be\u015Fik", "beton", "beyin", "beyo\u011Flu", "b\u0131\xE7ak", "biberiye", "bidon", "biftek", "bihaber", "bikini", "bilezik", "bilin\xE7", "bilye", "bina", "binba\u015F\u0131", "biny\u0131l", "bisiklet", "bisk\xFCvi", "bitki", "bizzat", "bodrum", "bo\u011Faz", "boh\xE7a", "bolero", "boncuk", "bonfile", "borsa", "boru", "bostan", "bo\u015Fbo\u011Faz", "botanik", "boya", "boykot", "boynuz", "bozgun", "bozk\u0131r", "b\xF6l\xFCm", "b\xF6rek", "bu\xE7uk", "bug\xFCn", "bu\u011Fday", "buhar", "buhran", "bulvar", "buram", "bur\xE7ak", "burs", "burun", "butik", "buzda\u011F\u0131", "buzk\u0131ran", "b\xFCc\xFCr", "b\xFCfe", "b\xFClten", "b\xFCt\xE7e", "b\xFCt\xFCn", "b\xFCy\xFCk", "cac\u0131k", "cad\u0131", "cahil", "cambaz", "canh\u0131ra\u015F", "casus", "cazibe", "cehalet", "cehennem", "ceket", "cemre", "cenin", "cennet", "cepken", "cerrah", "cesur", "cetvel", "cevher", "ceylan", "c\u0131l\u0131z", "c\u0131va", "cilt", "cisim", "ciyak", "co\u011Frafya", "c\xF6mert", "cumba", "c\xFCzdan", "\xE7abucak", "\xE7ad\u0131r", "\xE7a\u011Fda\u015F", "\xE7a\u011Flayan", "\xE7a\u011Fr\u0131", "\xE7akmak", "\xE7al\u0131\u015Fkan", "\xE7ama\u015F\u0131r", "\xE7apa", "\xE7aput", "\xE7ar\u0131k", "\xE7arpan", "\xE7ar\u015Faf", "\xE7ayhane", "\xE7ekirdek", "\xE7elebi", "\xE7ember", "\xE7enet", "\xE7engel", "\xE7er\xE7eve", "\xE7erez", "\xE7e\u015Fit", "\xE7e\u015Fme", "\xE7ete", "\xE7evre", "\xE7eyiz", "\xE7eyrek", "\xE7\u0131\u011F\u0131r", "\xE7\u0131lg\u0131n", "\xE7\u0131ng\u0131rak", "\xE7ift", "\xE7i\u011Fdem", "\xE7ikolata", "\xE7ilek", "\xE7imen", "\xE7ivi", "\xE7oban", "\xE7ocuk", "\xE7okgen", "\xE7omak", "\xE7orba", "\xE7\xF6zelti", "\xE7ubuk", "\xE7ukur", "\xE7uval", "\xE7\xFCr\xFCk", "da\u011Fba\u015F\u0131", "da\u011F\u0131l\u0131m", "daktilo", "dald\u0131r\u0131\u015F", "dalga", "dalkavuk", "damak", "dam\u0131tma", "damla", "dana", "dandik", "dan\u0131\u015Fman", "daniska", "dantel", "darge\xE7it", "darphane", "davet", "day\u0131", "defter", "de\u011Fer", "de\u011Firmen", "deh\u015Fet", "delge\xE7", "demir", "deneyim", "denge", "depo", "deprem", "derdest", "dere", "derhal", "derman", "dernek", "dervi\u015F", "desen", "destan", "d\u0131\u015Far\u0131", "d\u0131\u015Fb\xFCkey", "dijital", "dikba\u015Fl\u0131", "dilek\xE7e", "dima\u011F", "dinamik", "dindar", "dinleme", "dinozor", "dip\xE7ik", "dipnot", "direni\u015F", "dirsek", "disiplin", "disk", "divri\u011Fi", "diz\xFCst\xFC", "dobra", "dodurga", "do\u011Falgaz", "doktor", "dok\xFCman", "dolap", "donan\u0131m", "dondurma", "don\xF6r", "doruk", "dosdo\u011Fru", "dost", "dosya", "dozer", "d\xF6k\xFCm", "d\xF6nence", "d\xF6rtyol", "d\xF6vme", "dram", "dublaj", "durum", "duvak", "duyarga", "duyma", "duyuru", "d\xFC\u011Fme", "d\xFC\u011F\xFCm", "d\xFCkkan", "d\xFCn\xFCr", "d\xFCped\xFCz", "d\xFCrb\xFCn", "d\xFC\u015F\xFCn\xFCr", "d\xFCzayak", "d\xFCzeltme", "ebeveyn", "ebru", "ecel", "ecnebi", "ecza", "edat", "edilgen", "efendi", "efor", "efsane", "egemen", "egzersiz", "e\u011Frelti", "ekarte", "ekip", "eklem", "ekmek", "ekol", "ekonomi", "ekose", "ekran", "ekvator", "elaman", "elastik", "elbet", "elbise", "el\xE7i", "eldiven", "eleba\u015F\u0131", "ele\u015Ftiri", "elma", "elo\u011Flu", "elveda", "emare", "emek\xE7i", "emisyon", "emniyet", "empati", "emsal", "emzik", "end\xFCstri", "enerji", "engebe", "engin", "eni\u015Fte", "enkaz", "entari", "entegre", "entrika", "enzim", "erdem", "ergen", "erguvan", "erkek", "erozyon", "ertesi", "erzak", "esaret", "esenlik", "eser", "eski", "esnek", "e\u015Farp", "e\u015Fofman", "e\u015Fraf", "e\u015Fya", "e\u015Fzaman", "etik", "etken", "etkinlik", "et\xFCt", "evet", "evire", "evrak", "evrim", "eyalet", "eyvah", "ezber", "fabrika", "fanatik", "fanus", "fason", "fasulye", "fatih", "fatura", "fauna", "favori", "fayans", "fayton", "faz\u0131l", "fazilet", "federal", "felsefe", "fener", "feribot", "fersah", "fesih", "festival", "feveran", "feza", "f\u0131\xE7\u0131", "f\u0131ld\u0131r", "f\u0131nd\u0131k", "f\u0131r\xE7a", "f\u0131rsat", "f\u0131rt\u0131na", "f\u0131t\u0131k", "fidan", "fidye", "fig\xFCr", "fihrist", "fikir", "fildi\u015Fi", "filo", "filtre", "fincan", "firuze", "fitil", "fiyaka", "fizik", "fla\u015F", "fl\xFCt", "fosil", "fren", "fukara", "futbol", "garabet", "gariban", "garnit\xFCr", "gazi", "gece", "gedik", "gelenek", "gelin", "gemi", "gen\xE7", "geni\u015F", "geometri", "ger\xE7ek", "gevrek", "gezegen", "gezgin", "geziyolu", "g\u0131c\u0131k", "g\u0131da", "g\u0131ybet", "girdap", "giri\u015Fim", "gitar", "giyecek", "giysi", "gizem", "gofret", "goril", "g\xF6bek", "g\xF6\xE7ebe", "g\xF6\u011F\xFCs", "g\xF6kdelen", "g\xF6kmen", "g\xF6ky\xFCz\xFC", "g\xF6lge", "g\xF6mlek", "g\xF6n\xFCl", "g\xF6renek", "g\xF6rkemli", "g\xF6rsel", "g\xF6steri", "g\xF6vde", "g\xF6zalt\u0131", "g\xF6zc\xFC", "g\xF6zda\u011F\u0131", "g\xF6zleme", "g\xF6zya\u015F\u0131", "grup", "gurbet", "gus\xFCl", "g\xFCbre", "g\xFCfte", "g\xFCm\xFC\u015F", "g\xFCnayd\u0131n", "g\xFCncel", "g\xFCnd\xFCz", "g\xFCne\u015F", "g\xFCny\xFCz\xFC", "g\xFCrb\xFCz", "g\xFCvercin", "g\xFCzel", "haber", "hacamat", "hacim", "hademe", "haf\u0131z", "hafriyat", "hafta", "hakan", "hakem", "hakikat", "haksever", "hal\u0131", "han\xE7er", "hane", "hangar", "hapis", "hap\u015F\u0131r\u0131k", "harf", "haseki", "hasret", "hatun", "havu\xE7", "haylaz", "haysiyet", "hayvan", "hedef", "hektar", "hemen", "hemfikir", "hendek", "hepsi", "hergele", "herhangi", "hesap", "heyecan", "heykel", "hezimet", "h\u0131\xE7k\u0131r\u0131k", "h\u0131z\xF6l\xE7er", "hicviye", "hikaye", "hikmet", "hile", "hisse", "hobi", "hoca", "horlama", "hormon", "ho\u015Fbe\u015F", "ho\u015Fg\xF6r\xFC", "hoyrat", "h\xF6rg\xFC\xE7", "h\xF6y\xFCk", "hudut", "hukuk", "hunhar", "hurda", "huysuz", "huzur", "h\xFCcum", "h\xFCk\xFCmet", "h\xFCnkar", "h\xFCviyet", "\u0131rmak", "\u0131s\u0131\xF6l\xE7er", "\u0131s\u0131t\u0131c\u0131", "\u0131spanak", "\u0131srar", "\u0131\u015F\u0131ldak", "\u0131zd\u0131rap", "\u0131zgara", "ibadet", "icat", "i\xE7b\xFCkey", "i\xE7ecek", "i\xE7g\xFCd\xFC", "i\xE7sel", "idman", "iftihar", "i\u011Fne", "ihanet", "ihbar", "ihdas", "ihmal", "ihracat", "ihsan", "ikilem", "ikindi", "ikircik", "iklim", "iksir", "iktibas", "ila\xE7", "il\xE7e", "ileri", "ileti\u015Fim", "ilgi", "ilhak", "ilkbahar", "ilkokul", "ilmek", "imkan", "imle\xE7", "imsak", "imtihan", "imza", "ince", "inkar", "in\u015Fa", "ipek", "ipucu", "irade", "irfan", "irmik", "isabet", "iskele", "israf", "isyan", "i\u015F\xE7i", "i\u015Fgal", "i\u015Fg\xFCzar", "i\u015Flem", "itibar", "itiraf", "ivedi", "ivme", "iyile\u015Fme", "iyimser", "izbandut", "izci", "izdiham", "izin", "jakoben", "jandarma", "jargon", "kabaday\u0131", "kablo", "kabus", "ka\xE7amak", "kadeh", "kad\u0131n", "kadraj", "kafa", "kafkas", "ka\u011F\u0131t", "ka\u011Fn\u0131", "kahkaha", "kahraman", "kahvalt\u0131", "kak\xFCl", "kald\u0131r\u0131m", "kale", "kalibre", "kalkan", "kalpak", "kam\u0131\u015F", "kamyon", "kanat", "kanda\u015F", "kanepe", "kanser", "kanun", "kaos", "kap\u0131", "kapl\u0131ca", "kaptan", "karanl\u0131k", "karde\u015F", "karga", "kar\u0131nca", "karma\u015Fa", "kar\u015F\u0131t", "kas\u0131rga", "kask", "kasvet", "katk\u0131", "katman", "kavram", "kaygan", "kaynak\xE7a", "kayyum", "kedi", "kehanet", "kekik", "kelebek", "kenar", "kerkenez", "kerpi\xE7", "kesirli", "kesmece", "kestane", "ke\u015Fkek", "ket\xE7ap", "keyfiyet", "k\u0131ble", "k\u0131demli", "k\u0131lavuz", "k\u0131l\xE7\u0131k", "k\u0131l\u0131f", "k\u0131ra\xE7", "k\u0131rm\u0131z\u0131", "k\u0131rsal", "k\u0131sayol", "k\u0131s\u0131m", "k\u0131skan\xE7", "k\u0131smet", "k\u0131\u015Fla", "k\u0131van\xE7", "k\u0131v\u0131lc\u0131m", "k\u0131vr\u0131k", "k\u0131yafet", "k\u0131ymetli", "k\u0131zak", "k\u0131z\u0131lc\u0131k", "kibar", "kinaye", "kira", "kiremit", "kirli", "kirpik", "ki\u015Fisel", "kitap", "ko\xE7ba\u015F\u0131", "kodaman", "ko\u011Fu\u015F", "kokteyl", "kolayc\u0131", "kolbast\u0131", "kolonya", "koltuk", "kolye", "kombine", "komedyen", "komiser", "komposto", "kom\u015Fu", "komuta", "konak", "konfor", "koni", "kons\xFCl", "kopya", "korkusuz", "korna", "korse", "korunak", "korvet", "kost\xFCm", "ko\u015Ful", "koyu", "kozmik", "k\xF6fte", "k\xF6kensel", "k\xF6pr\xFCc\xFCk", "k\xF6p\xFCk", "k\xF6rd\xFC\u011F\xFCm", "k\xF6rfez", "k\xF6stebek", "k\xF6\u015Fegen", "k\xF6t\xFC", "kravat", "kriter", "kuantum", "kudurma", "kulu\xE7ka", "kul\xFCbe", "kumanya", "kumbara", "kumlu", "kumpir", "kumral", "kundura", "kupa", "kupkuru", "kuramsal", "kurba\u011Fa", "kurdele", "kurgu", "kurmay", "kur\u015Fun", "kurtulu\u015F", "kurultay", "kurye", "kusursuz", "ku\u015Fak", "ku\u015Fba\u015F\u0131", "ku\u015Fkulu", "kutlama", "kutsal", "kutup", "kuver", "kuyruk", "kuzey", "kuzgun", "k\xFC\xE7\xFCk", "k\xFCl\xE7e", "k\xFClfet", "k\xFClliye", "k\xFClt\xFCrel", "k\xFCmes", "k\xFCnefe", "k\xFCresel", "k\xFCtle", "lahana", "lahmacun", "lamba", "lansman", "lava\u015F", "lay\u0131k", "le\u011Fen", "levent", "leziz", "lezzet", "lider", "likide", "liman", "liste", "litre", "liyakat", "lodos", "lokanta", "lokman", "lokum", "lunapark", "l\xFCtfen", "l\xFCzum", "nokta", "mabet", "macera", "macun", "madalya", "madde", "madem", "ma\u011Fara", "ma\u011Fdur", "ma\u011Ffiret", "ma\u011Flup", "mahalle", "mahcup", "mahir", "mahkeme", "mahlas", "mahrum", "mahsul", "makas", "makbuz", "makine", "makro", "maksat", "makul", "maliye", "manav", "mangal", "manidar", "manken", "mant\u0131k", "manzara", "mare\u015Fal", "margarin", "marifet", "market", "marmelat", "masa\xFCst\xFC", "masmavi", "masraf", "masum", "matah", "materyal", "matrak", "maval", "mavra", "maydanoz", "mayho\u015F", "maytap", "mazbata", "mazeret", "mazlum", "mazot", "mazur", "mebla\u011F", "mebus", "mecaz", "mecbur", "meclis", "mecmua", "mecnun", "me\xE7hul", "medeni", "mehtap", "mekanik", "melodi", "meltem", "memur", "mendil", "menek\u015Fe", "mente\u015Fe", "merakl\u0131", "mercek", "merdiven", "merhaba", "merinos", "merkez", "mermi", "mert", "mesafe", "mesele", "mesken", "meslek", "me\u015Fale", "me\u015Fgul", "me\u015Fhur", "metafor", "metin", "metre", "mevcut", "mevkida\u015F", "meydan", "meyil", "meyve", "meziyet", "mezun", "m\u0131knat\u0131s", "m\u0131sra", "m\u0131z\u0131ka", "mi\u011Ffer", "mihrak", "mikrofon", "miktar", "milat", "milli", "mimar", "minare", "mineral", "minik", "minyon", "mirliva", "misafir", "miskin", "miting", "miyop", "mizah", "mobilya", "model", "monit\xF6r", "mor\xF6tesi", "motive", "motor", "mozaik", "muavin", "mucize", "muhaf\u0131z", "muhte\u015Fem", "mukayese", "mumya", "musluk", "mu\u015Famba", "mutab\u0131k", "mutfak", "mutlu", "muzaffer", "muzdarip", "m\xFCbarek", "m\xFCcadele", "m\xFCd\xFCr", "m\xFCfredat", "m\xFCft\xFC", "m\xFChendis", "m\xFChim", "m\xFChlet", "m\xFCkemmel", "m\xFClk", "m\xFCmk\xFCn", "m\xFCmtaz", "m\xFCsrif", "m\xFCstesna", "m\xFC\u015Fahit", "m\xFC\u015Fteri", "m\xFCtercim", "m\xFCthi\u015F", "m\xFCze", "m\xFCzik", "nab\u0131z", "nadas", "nadir", "naho\u015F", "nakarat", "nak\u0131\u015F", "nalbur", "namlu", "namus", "nank\xF6r", "nargile", "narkoz", "nas\u0131l", "nasip", "naylon", "nazar", "naz\u0131m", "nazik", "neden", "nefes", "negatif", "neon", "nept\xFCn", "nerede", "nesil", "nesnel", "ne\u015Feli", "netice", "nevresim", "neyse", "neyzen", "nezaket", "nezih", "nezle", "nicel", "nil\xFCfer", "nimet", "nisan", "nispet", "nitekim", "nizam", "nohut", "noksan", "normal", "nostalji", "noter", "n\xF6bet", "numara", "numune", "nutuk", "n\xFCfus", "obaba\u015F\u0131", "obez", "obje", "ocak", "odun", "ofansif", "ofis", "o\u011Flak", "o\u011Fuz", "ok\xE7u", "oklava", "oksijen", "okul", "okumu\u015F", "okutman", "okuyucu", "okyanus", "ola\u011Fan", "olanak", "olas\u0131", "olay", "olgun", "olimpik", "olumlu", "omlet", "omurga", "onar\u0131m", "onursal", "opera", "optik", "oral", "orant\u0131", "ordu", "organik", "orijin", "orkide", "orman", "orta", "oru\xE7", "ota\u011F", "otantik", "otel", "otoban", "otogar", "otomobil", "otonom", "otopark", "otorite", "otoyol", "oturum", "oyuk", "oyuncak", "ozan", "\xF6deme", "\xF6denek", "\xF6dev", "\xF6d\xFCl", "\xF6d\xFCn\xE7", "\xF6fke", "\xF6\u011Flen", "\xF6\u011Frenci", "\xF6\u011F\xFCn", "\xF6\u011F\xFCt\xFCc\xFC", "\xF6ks\xFCr\xFCk", "\xF6l\xE7me", "\xF6l\xE7\xFC", "\xF6l\xFCms\xFCz", "\xF6m\xFCr", "\xF6nayak", "\xF6nc\xFC", "\xF6nder", "\xF6nem", "\xF6nerge", "\xF6ng\xF6r\xFC", "\xF6nl\xFCk", "\xF6nsezi", "\xF6p\xFCc\xFCk", "\xF6rdek", "\xF6rg\xFC", "\xF6rtbas", "\xF6rtme", "\xF6rt\xFC", "\xF6r\xFCmcek", "\xF6r\xFCnt\xFC", "\xF6teberi", "\xF6teki", "\xF6v\xFCn\xE7", "\xF6yk\xFC", "\xF6yleyse", "\xF6z\xE7ekim", "\xF6zdeyi\u015F", "\xF6zel", "\xF6zenti", "\xF6zerk", "\xF6zg\xFCrl\xFCk", "\xF6zlem", "\xF6zl\xFC", "\xF6zne", "\xF6zsever", "\xF6z\xFCmseme", "\xF6z\xFCr", "\xF6zveri", "pabu\xE7", "padi\u015Fah", "palamut", "palmiye", "palto", "palya\xE7o", "pamuk", "panay\u0131r", "pancar", "panda", "panel", "panik", "panjur", "pankart", "pano", "pansuman", "pantolon", "panzehir", "papatya", "papyon", "para\u015F\xFCt", "par\xE7a", "pard\xF6s\xFC", "parf\xFCm", "par\u0131lt\u0131", "parkur", "parmak", "parodi", "parsel", "partner", "pasaport", "pasif", "paskalya", "past\u0131rma", "pa\u015Fa", "patates", "paten", "patika", "patl\u0131can", "patolog", "patron", "payanda", "payda\u015F", "payidar", "payla\u015Fma", "paytak", "pe\xE7ete", "pedal", "peder", "pehlivan", "pekala", "pekmez", "pelerin", "pelikan", "pel\xFC\u015F", "pembe", "pena", "pencere", "pense", "per\xE7in", "perde", "pergel", "peri\u015Fan", "peron", "personel", "per\u015Fembe", "peruk", "pervane", "pespaye", "pestil", "pe\u015Fin", "petek", "petrol", "petunya", "peynir", "peyzaj", "p\u0131nar", "p\u0131rasa", "p\u0131rlanta", "pide", "pikap", "piknik", "pilav", "pili\xE7", "pilot", "pipet", "pipo", "piramit", "pirin\xE7", "pirzola", "pist", "pi\u015Fik", "pi\u015Fman", "piyasa", "piyes", "plaj", "plaket", "planlama", "platform", "plazma", "podyum", "po\u011Fa\xE7a", "polat", "polen", "politika", "pompa", "pop\xFCler", "porselen", "portakal", "posa", "poster", "po\u015Fet", "poyraz", "pozitif", "pranga", "pratik", "prenses", "prim", "problem", "profil", "program", "proje", "protokol", "prova", "puan", "pudra", "pusula", "p\xFCre", "p\xFCr\xFCz", "p\xFCst\xFCl", "p\xFCs\xFCr", "racon", "radar", "radikal", "radyo", "rafadan", "rafine", "ra\u011Fbet", "rahat", "rahle", "rakam", "raket", "rakip", "rakun", "ralli", "rampa", "randevu", "ranza", "rapor", "rastgele", "rasyonel", "raz\u0131", "realite", "re\xE7ine", "refah", "referans", "refik", "reform", "rehber", "rehin", "reis", "rekabet", "reklam", "rekor", "rekt\xF6r", "renk", "resim", "resmen", "restoran", "retorik", "reva\xE7", "revize", "reyon", "rezalet", "rezerv", "rezil", "r\u0131ht\u0131m", "r\u0131za", "ritim", "rit\xFCel", "rivayet", "robot", "roman", "rota", "rozet", "r\xF6portaj", "r\xF6tar", "ruble", "ruhban", "ruhsat", "rulet", "rulo", "runik", "rutin", "rutubet", "r\xFC\u015Fvet", "r\xFCtbe", "r\xFCya", "r\xFCzgar", "sabah", "sab\u0131ka", "sabit", "sabun", "sa\xE7ma", "sade", "sad\u0131k", "safahat", "safdil", "safkan", "sa\u011Fanak", "sa\u011Fduyu", "sa\u011Flam", "saha", "sahiden", "sahne", "sakal", "sak\u0131z", "sakin", "saklama", "saksa\u011Fan", "salamura", "sal\xE7a", "salg\u0131", "sal\u0131n\u0131m", "salk\u0131m", "salon", "saltanat", "sanat\xE7\u0131", "sancak", "sandalye", "saniye", "saplant\u0131", "saps\u0131z", "saray", "sar\u0131\u015F\u0131n", "sark\u0131k", "sarma\u015F\u0131k", "sat\u0131r", "sava\u015F\u0131m", "savunma", "saydam", "sayfa", "sayg\u0131n", "say\u0131sal", "sebep", "se\xE7enek", "se\xE7im", "se\xE7kin", "se\xE7men", "seda", "sedir", "sedye", "sefer", "sehpa", "sekizgen", "selekt\xF6r", "selvi", "semavi", "sembol", "seminer", "senaryo", "sendika", "senkron", "sens\xF6r", "sentez", "sepet", "seramik", "serbest", "serdar", "seremoni", "sergi", "serhat", "serin", "sermaye", "serpu\u015F", "sersem", "ser\xFCven", "servis", "sesli", "seste\u015F", "sevap", "seviye", "seyahat", "seyirci", "sezon", "s\u0131cak", "s\u0131fat", "s\u0131hhi", "s\u0131nanma", "s\u0131n\u0131r", "s\u0131radan", "s\u0131rda\u015F", "s\u0131rma", "s\u0131rt\xFCst\xFC", "s\u0131zg\u0131t", "siftah", "sigorta", "sihirbaz", "silah", "silecek", "silindir", "simetri", "simge", "simit", "sincap", "sindirim", "sinema", "sinirli", "sipari\u015F", "sirke", "siroz", "sistem", "sivilce", "siyasi", "slogan", "soba", "sofra", "so\u011Fuk", "sohbet", "sokak", "solfej", "solunum", "somut", "sonbahar", "sonraki", "sonsuz", "sorunsuz", "sosyete", "soya\u011Fac\u0131", "soyda\u015F", "soygun", "soytar\u0131", "s\xF6\u011F\xFC\u015F", "s\xF6m\xFCrge", "s\xF6n\xFCk", "s\xF6ylem", "s\xF6zc\xFCk", "s\xF6zde", "spatula", "spektrum", "spiker", "spiral", "sponsor", "sporcu", "sprey", "stabil", "stat\xFC", "stok", "stopaj", "strateji", "subay", "sucuk", "su\xE7\xFCst\xFC", "suhulet", "sulama", "sungur", "sunucu", "surat", "susam", "suskun", "s\xFCkse", "s\xFCkut", "s\xFClale", "s\xFCnger", "s\xFCp\xFCrge", "s\xFCrahi", "s\xFCre\xE7", "s\xFCrg\xFCn", "s\xFCr\xFCm", "s\xFCsleme", "s\xFCtanne", "s\xFCtla\xE7", "s\xFCtun", "s\xFCvari", "\u015Fahane", "\u015Fahbaz", "\u015Fahit", "\u015Fahsiyet", "\u015Fak\u0131ma", "\u015Faklaban", "\u015Fakrak", "\u015Famar", "\u015Fampiyon", "\u015Fansl\u0131", "\u015Fantiye", "\u015Fapka", "\u015Fark\u0131c\u0131", "\u015Fartname", "\u015Fa\u015F\u0131rma", "\u015Fa\u015Fk\u0131n", "\u015Fatafat", "\u015Fayet", "\u015Febeke", "\u015Fefkat", "\u015Feftali", "\u015Fehir", "\u015Fehvet", "\u015Feker", "\u015Fekil", "\u015Felale", "\u015Fema", "\u015Femsiye", "\u015Ferbet", "\u015Feref", "\u015Ferit", "\u015F\u0131mar\u0131k", "\u015F\u0131p\u0131d\u0131k", "\u015Fifre", "\u015Fimdi", "\u015Fim\u015Fek", "\u015Fip\u015Fak", "\u015Firin", "\u015Fi\u015Fe", "\u015Fi\u015Firme", "\u015Fofben", "\u015F\xF6hret", "\u015F\xF6len", "\u015F\xFCphe", "tabaka", "tabela", "tabure", "tadilat", "taharet", "tah\u0131l", "tahkim", "tahlil", "tahmin", "tahrifat", "tahsilat", "tahta", "taklit", "takoz", "taksici", "taktik", "takvim", "talebe", "talip", "tamamen", "tamirci", "tampon", "tamtak\u0131r", "tand\u0131r", "tanecik", "tan\u0131t\u0131m", "tanr\u0131", "tansiyon", "tapan", "tap\u0131nak", "taptaze", "tapu", "tarafgir", "tarhana", "tar\u0131m", "tarih", "tarla", "tartak", "tarumar", "tasar\u0131m", "tasdik", "taslak", "tastamam", "ta\u015Feron", "ta\u015F\u0131nmaz", "ta\u015Fra", "tatava", "tatbikat", "tatil", "tatl\u0131", "tavsiye", "tav\u015Fan", "tavuk", "taze", "taziye", "tazminat", "tebe\u015Fir", "tebrik", "tecr\xFCbe", "te\xE7hizat", "tedarik", "tedbir", "tefti\u015F", "te\u011Fet", "te\u011Fmen", "tehdit", "tehlike", "tekd\xFCze", "tekerlek", "tekme", "teknik", "tekrar", "telef", "telsiz", "telve", "temas", "tembel", "temiz", "temkin", "tempo", "temsilci", "tendon", "teneke", "tenha", "tenkit", "tepeg\xF6z", "tepki", "terazi", "terbiye", "tercih", "tereya\u011F\u0131", "terfi", "terim", "terminal", "tersane", "tertip", "tesad\xFCf", "tescil", "tesir", "teslimat", "tespit", "testere", "te\u015Fekk\xFCr", "te\u015Fhir", "te\u015Frif", "te\u015Fvik", "teyze", "tezah\xFCr", "tezgah", "t\u0131bbi", "t\u0131ka\xE7", "t\u0131k\u0131\u015F\u0131k", "t\u0131knaz", "t\u0131ls\u0131m", "t\u0131pk\u0131", "t\u0131ra\u015F", "t\u0131r\u0131\u015Fka", "t\u0131rman\u0131\u015F", "t\u0131rnak", "t\u0131rpan", "t\u0131slama", "ticaret", "tilki", "tiryaki", "titre\u015Fim", "tohum", "tokat", "tolere", "tomar", "tombak", "tomurcuk", "topa\xE7", "toplum", "toprak", "toptan", "toraman", "torpido", "tortu", "tosba\u011Fa", "toynak", "t\xF6ren", "trafik", "trajedi", "tramvay", "transfer", "trib\xFCn", "triko", "tugay", "tu\u011Fla", "tu\u011Frul", "tuhaf", "tulumba", "tun\xE7", "turan", "turkuaz", "turnusol", "tur\u015Fu", "turuncu", "tutanak", "tutkal", "tutsak", "tutum", "tuyu\u011F", "tuzlu", "t\xFCccar", "t\xFCfek", "t\xFCkenmez", "t\xFClbent", "t\xFCmle\xE7", "t\xFCnel", "t\xFCrbin", "t\xFCrev", "t\xFCrk", "t\xFCz\xFCk", "ucube", "ucuz", "u\xE7ak", "u\xE7urtma", "ufuk", "u\u011Frak", "u\u011Fur", "ukala", "ula\u015F\u0131m", "ulema", "ulus", "ulvi", "umursama", "umut", "unutkan", "uslu", "ustaba\u015F\u0131", "ustura", "usul", "utanga\xE7", "uyan\u0131k", "uyar\u0131", "uydu", "uygar", "uygulama", "uykusuz", "uysal", "uyu\u015Fma", "uzant\u0131", "uzay", "uzg\xF6ren", "uzla\u015Fma", "uzman", "uzun", "\xFCcra", "\xFCcret", "\xFC\xE7budak", "\xFC\xE7gen", "\xFC\xE7ka\u011F\u0131t", "\xFC\xE7leme", "\xFCf\xFCr\xFCk", "\xFClke", "\xFCmit", "\xFCniforma", "\xFCnite", "\xFCnlem", "\xFCretken", "\xFCr\xFCn", "\xFCslup", "\xFCstel", "\xFCst\xFCn", "\xFC\u015Fenge\xE7", "\xFC\u015F\xFCme", "\xFCtopya", "\xFCvey", "\xFCzengi", "\xFCzg\xFCn", "\xFCz\xFCm", "vagon", "vaka", "vakfiye", "vak\u0131f", "vakit", "vakum", "vapur", "varil", "varl\u0131k", "varsay\u0131m", "varyemez", "vas\u0131ta", "vasiyet", "vatanda\u015F", "vazife", "vazo", "veciz", "vefa", "vehim", "veliaht", "veresiye", "verimli", "verka\xE7", "vernik", "vertigo", "vesait", "vesika", "vestiyer", "veznedar", "vicdan", "vilayet", "virane", "virg\xFCl", "vi\u015Fne", "vites", "vokal", "volkan", "vurma", "vurucu", "v\xFCcut", "yabanc\u0131", "yabgu", "ya\u011F\u0131\u015F", "ya\u011Fl\u0131", "ya\u011Fmur", "yakamoz", "yak\u0131n", "yakla\u015F\u0131k", "yal\xE7\u0131n", "yal\u0131t\u0131m", "yaman", "yanarda\u011F", "yang\u0131n", "yan\u0131t", "yank\u0131", "yanl\u0131\u015F", "yans\u0131ma", "yapay", "yapboz", "yap\u0131mc\u0131", "yaprak", "yarat\u0131k", "yarbay", "yard\u0131m", "yarg\u0131\xE7", "yar\u0131\xE7ap", "yasemin", "yast\u0131k", "ya\u015Fam", "yatak", "yat\u0131r\u0131m", "yavru", "yaygara", "yay\u0131nc\u0131", "yayla", "yaz\u0131l\u0131m", "yekpare", "yekv\xFCcut", "yelkovan", "yelpaze", "yemek", "yemi\u015F", "yenge\xE7", "yeni\xE7eri", "yeralt\u0131", "yerk\xFCre", "yerle\u015Fke", "yery\xFCz\xFC", "ye\u015Fil", "yetenek", "yetkili", "y\u0131\u011F\u0131nak", "y\u0131kama", "y\u0131lba\u015F\u0131", "y\u0131ld\u0131r\u0131m", "y\u0131lk\u0131", "y\u0131lmaz", "y\u0131rt\u0131c\u0131", "yi\u011Fit", "yo\u011Furt", "yoku\u015F", "yolcu", "yolda\u015F", "yolge\xE7en", "yolkesen", "yol\xFCst\xFC", "yordam", "yorgan", "yorumcu", "yosun", "y\xF6nde\u015F", "y\xF6netim", "y\xF6nl\xFC", "y\xF6ntem", "y\xF6resel", "y\xF6r\xFCnge", "yufka", "yukar\u0131", "yumruk", "yumurta", "yuvarlak", "y\xFCcelme", "y\xFCk\xE7eker", "y\xFCklem", "y\xFCksek", "y\xFCrek", "y\xFCr\xFCtme", "y\xFCzde", "y\xFCzeysel", "y\xFCzge\xE7", "y\xFCz\xFCst\xFC", "y\xFCzy\u0131l", "zab\u0131ta", "zafer", "zahmet", "zambak", "zaptiye", "zarafet", "zaruret", "zeka", "zekice", "zemberek", "zemin", "zencefil", "zeplin", "zeytin", "z\u0131b\u0131n", "z\u0131lg\u0131t", "z\u0131mb\u0131rt\u0131", "z\u0131mpara", "z\u0131pk\u0131n", "zigon", "zihinsel", "zihniyet", "zincir", "zindan", "zirzop", "ziyaret", "ziynet", "zoraki", "zorlu", "zorunlu", "z\xFC\u011F\xFCrt", "z\xFCmre"];
  }
});

// node_modules/bip39-mnemonic/wordlist/index.js
var require_wordlist = __commonJS({
  "node_modules/bip39-mnemonic/wordlist/index.js"(exports2, module2) {
    var lookup = require_lookup();
    module2.exports = {
      loadWordlist,
      detectLanguage
    };
    function loadWordlist(language) {
      switch (language) {
        case "chinese_simplified":
          return require_chinese_simplified();
        case "chinese_traditional":
          return require_chinese_traditional();
        case "czech":
          return require_czech();
        case "english":
          return require_english();
        case "french":
          return require_french();
        case "italian":
          return require_italian();
        case "japanese":
          return require_japanese();
        case "korean":
          return require_korean();
        case "portuguese":
          return require_portuguese();
        case "russian":
          return require_russian();
        case "spanish":
          return require_spanish();
        case "turkish":
          return require_turkish();
      }
      throw new Error("Unknown language: " + language);
    }
    function detectLanguage(words) {
      let candidate = null;
      for (const word of words) {
        const languages = lookup[word];
        if (!languages) return null;
        if (languages.length === 1) return languages[0];
        if (!candidate) {
          candidate = languages;
          continue;
        }
        const intersect = candidate.filter((l) => languages.includes(l));
        if (intersect.length === 1) return intersect[0];
      }
      return candidate[0];
    }
  }
});

// node_modules/bip39-mnemonic/index.js
var require_bip39_mnemonic = __commonJS({
  "node_modules/bip39-mnemonic/index.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    var b4a4 = require_b4a();
    var assert2 = require_nanoassert();
    var { detectLanguage, loadWordlist } = require_wordlist();
    module2.exports = {
      generateEntropy,
      generateMnemonic,
      normalizeMnemonic,
      validateMnemonic,
      mnemonicToEntropy,
      mnemonicToSeed,
      entropyToMnemonic
    };
    function generateMnemonic({ entropy = generateEntropy(), language = "english" } = {}) {
      const wordlist = loadWordlist(language);
      const extended = computeCheckSum(entropy);
      const words = [];
      for (const index of uint11Reader(extended)) {
        words.push(wordlist[index]);
      }
      const delimiter = language === "japanese" ? "\u3000" : " ";
      return words.join(delimiter).trim();
    }
    function entropyToMnemonic(entropy, { language = "english" } = {}) {
      return generateMnemonic({ entropy, language });
    }
    function mnemonicToEntropy(mnemonic) {
      const words = mnemonic.replace(/\u3000/g, " ").trim().split(" ");
      const language = detectLanguage(words);
      if (!language) {
        throw new Error("Language not recognised");
      }
      if (words.length % 3 !== 0) {
        throw new Error("Invalid length");
      }
      const wordlist = loadWordlist(language);
      const indexes2 = [];
      for (const word of words) {
        const index = wordlist.indexOf(word);
        if (index === -1) {
          throw new Error("Bad word");
        }
        indexes2.push(index);
      }
      const bits = words.length * 11;
      const len = bits * 32 / 33 >> 3;
      const extended = b4a4.alloc(Math.ceil(bits / 8));
      const entropy = extended.subarray(0, len);
      uint11Writer(extended, indexes2);
      if (!b4a4.equals(extended, computeCheckSum(entropy))) {
        throw new Error("Invalid checksum");
      }
      return entropy;
    }
    function normalizeMnemonic(mnemonic) {
      return mnemonic.trim().replace(/\u3000/, " ").split(/\s+/).map((c4) => c4.toLowerCase()).join(" ");
    }
    async function mnemonicToSeed(mnemonic, passphrase = "") {
      mnemonic = normalizeMnemonic(mnemonic);
      if (!validateMnemonic(mnemonic)) {
        throw new Error("Invalid mnemonic");
      }
      const input = b4a4.from(mnemonic);
      const salt = b4a4.from("mnemonic" + passphrase);
      const output = b4a4.alloc(64);
      await sodium.extension_pbkdf2_sha512_async(
        output,
        input,
        salt,
        2048,
        64
      );
      return output;
    }
    function validateMnemonic(mnemonic) {
      try {
        mnemonicToEntropy(mnemonic);
      } catch (e) {
        return false;
      }
      return true;
    }
    function sha256(data, output = b4a4.alloc(32)) {
      sodium.crypto_hash_sha256(output, data);
      return output;
    }
    function computeCheckSum(seed) {
      assert2((seed.byteLength & 4) === 0, "seed must be a multiple of 4 bytes");
      const len = seed.byteLength;
      const cklen = len >> 2;
      const total = len + Math.ceil(cklen / 8);
      const output = b4a4.alloc(len + 32);
      output.set(seed);
      const entropy = output.subarray(0, len);
      const cksum = output.subarray(len);
      sha256(entropy, cksum);
      output[total - 1] &= 255 ^ 255 >> cklen;
      return output.subarray(0, total);
    }
    function generateEntropy(length = 32) {
      const seed = b4a4.alloc(length);
      sodium.randombytes_buf(seed);
      return seed;
    }
    function* uint11Reader(state) {
      yield* uintReader(state, 11);
    }
    function uint11Writer(buf, uints) {
      return uintWriter(buf, uints, 11);
    }
    function* uintReader(buffer, width) {
      const MASK = (2 << width - 1) - 1;
      let pos = 0;
      let value = 0;
      while (true) {
        const offset = pos >> 3;
        if (offset >= buffer.byteLength) {
          return value & MASK;
        }
        const height = width - pos % width;
        const leftover = (offset + 1) * 8 - pos;
        value += shift(buffer[offset], height - leftover);
        pos += Math.min(height, leftover);
        if (pos % width) continue;
        yield value & MASK;
        value = 0;
      }
    }
    function uintWriter(buffer, uints, width) {
      let pos = 0;
      while (true) {
        const offset = pos >> 3;
        const i = Math.floor(pos / width);
        if (i >= uints.length) break;
        if (offset >= buffer.length) {
          throw new Error("Failed to encode uints");
        }
        const rem = 8 - pos % 8;
        const height = (i + 1) * width - pos;
        const value = shift(uints[i], rem - height);
        buffer[offset] += mask(value, rem);
        pos += Math.min(rem, height);
      }
      return buffer;
    }
    function shift(val, n) {
      if (n === 0) return val;
      if (n > 0) return val << n;
      return val >> -1 * n;
    }
    function mask(val, bits) {
      if (bits < 32) return val & (1 << bits) - 1;
      return val % 2 ** bits;
    }
  }
});

// node_modules/keet-identity-key/lib/crypto.js
var require_crypto = __commonJS({
  "node_modules/keet-identity-key/lib/crypto.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    var b4a4 = require_b4a();
    module2.exports = {
      sign,
      verify,
      hash: blake2b
    };
    function sign(signable, keyPair) {
      const signature = b4a4.alloc(sodium.crypto_sign_BYTES);
      sodium.crypto_sign_detached(signature, signable, keyPair.secretKey);
      return signature;
    }
    function verify(signable, signature, publicKey) {
      return sodium.crypto_sign_verify_detached(signature, signable, publicKey);
    }
    function blake2b(data, output = b4a4.alloc(32)) {
      sodium.crypto_generichash(output, data);
      return output;
    }
  }
});

// node_modules/keet-identity-key/lib/keychain.js
var require_keychain = __commonJS({
  "node_modules/keet-identity-key/lib/keychain.js"(exports2, module2) {
    var sodium = require_sodium_universal();
    var c4 = require_compact_encoding3();
    var assert2 = require_nanoassert();
    var b4a4 = require_b4a();
    var { HMAC } = require_sodium_hmac();
    var bip39 = require_bip39_mnemonic();
    var { sign } = require_crypto();
    var MASTER_CHAIN_CODE = b4a4.from("ed25519 seed");
    var MASTER_SYMMETRIC_CODE = b4a4.from("Symmetric key seed");
    var HARDENED_OFFSET = 2147483648;
    var KeyChain = class _KeyChain {
      constructor(seed) {
        this.seed = seed;
        this._buffer = b4a4.alloc(64);
        this.chainKey = this._buffer.subarray(0, 32);
        this.chainCode = this._buffer.subarray(32);
        this.publicKey = b4a4.alloc(sodium.crypto_sign_PUBLICKEYBYTES);
        this.secretKey = b4a4.alloc(sodium.crypto_sign_SECRETKEYBYTES);
        this._initialise();
      }
      static generateMnemonic() {
        return bip39.generateMnemonic();
      }
      static deriveSeed(mnemonic) {
        return bip39.mnemonicToSeed(mnemonic);
      }
      static async from({ mnemonic, seed }, path) {
        assert2(mnemonic || seed, "No mnemonic or seed was passed.");
        if (!seed) seed = await _KeyChain.deriveSeed(mnemonic);
        const key = new _KeyChain(seed);
        if (!path) return key;
        return key.get(path);
      }
      getSymmetricKey(path) {
        const buffer = b4a4.alloc(64);
        const chainKey = buffer.subarray(0, 32);
        const key = buffer.subarray(32);
        HMAC.sha512(this.seed, MASTER_SYMMETRIC_CODE, buffer);
        for (const step of path) {
          const label = b4a4.alloc(step.length + 1);
          b4a4.write(label, step, 1, "utf8");
          HMAC.sha512(label, chainKey, buffer);
        }
        return key;
      }
      get isKeychain() {
        return true;
      }
      _initialise() {
        HMAC.sha512(this.seed, MASTER_CHAIN_CODE, this._buffer);
        sodium.crypto_sign_seed_keypair(this.publicKey, this.secretKey, this.chainKey);
      }
      clear() {
        this.secretKey.fill(0);
        this.chainKey.fill(0);
        this.chainCode.fill(0);
      }
      get(path) {
        return this.derive(path);
      }
      sign(signable) {
        return sign(signable, this);
      }
      derive(path) {
        const buffer = b4a4.from(this._buffer);
        const chainKey = buffer.subarray(0, 32);
        const chainCode = buffer.subarray(32);
        for (const step of path) {
          const index = ensureHardened(step);
          HMAC.sha512(encodeDerivationData(chainKey, index), chainCode, buffer);
        }
        return createKeyPair(chainKey);
      }
    };
    module2.exports = KeyChain;
    function createKeyPair(seed) {
      if (!seed) throw new Error("No seed provided");
      const publicKey = b4a4.alloc(sodium.crypto_sign_PUBLICKEYBYTES);
      const secretKey = b4a4.alloc(sodium.crypto_sign_SECRETKEYBYTES);
      sodium.crypto_sign_seed_keypair(publicKey, secretKey, seed);
      return {
        publicKey,
        secretKey
      };
    }
    function encodeDerivationData(key, step) {
      const state = { buffer: b4a4.alloc(37), start: 0, end: 37 };
      c4.uint8.encode(state, 0);
      c4.fixed32.encode(state, key);
      state.buffer.writeUInt32BE(step, state.start);
      state.buffer[33] |= 128;
      return state.buffer;
    }
    function ensureHardened(n) {
      if (n >= HARDENED_OFFSET) return n;
      return n + HARDENED_OFFSET;
    }
  }
});

// node_modules/keet-identity-key/lib/encoding.js
var require_encoding = __commonJS({
  "node_modules/keet-identity-key/lib/encoding.js"(exports2, module2) {
    var c4 = require_compact_encoding3();
    var ATTESTED_DEVICE = 0;
    var ATTESTED_DATA = 1;
    var Epoch = {
      preencode(state, e) {
        c4.uint64.preencode(state, Math.floor(e / 1e3));
      },
      encode(state, e) {
        c4.uint64.encode(state, Math.floor(e / 1e3));
      },
      decode(state) {
        return c4.uint64.decode(state) * 1e3;
      }
    };
    var AttestedDevice = {
      preencode(state, a) {
        c4.uint8.preencode(state, ATTESTED_DEVICE);
        Epoch.preencode(state, a.epoch);
        c4.fixed32.preencode(state, a.identity);
        c4.fixed32.preencode(state, a.device);
      },
      encode(state, a) {
        c4.uint8.encode(state, ATTESTED_DEVICE);
        Epoch.encode(state, a.epoch);
        c4.fixed32.encode(state, a.identity);
        c4.fixed32.encode(state, a.device);
      },
      decode(state) {
        throw new Error("Signed data should only be encoded");
      }
    };
    var AttestedData = {
      preencode(state, a) {
        c4.uint8.preencode(state, ATTESTED_DATA);
        Epoch.preencode(state, a.epoch);
        c4.fixed32.preencode(state, a.identity);
        c4.fixed32.preencode(state, a.data);
      },
      encode(state, a) {
        c4.uint8.encode(state, ATTESTED_DATA);
        Epoch.encode(state, a.epoch);
        c4.fixed32.encode(state, a.identity);
        c4.fixed32.encode(state, a.data);
      },
      decode(state) {
        throw new Error("Signed data should only be encoded");
      }
    };
    var DeviceAttestation = {
      preencode(state, a) {
        c4.fixed32.preencode(state, a.publicKey);
        c4.fixed64.preencode(state, a.signature);
      },
      encode(state, a) {
        c4.fixed32.encode(state, a.publicKey);
        c4.fixed64.encode(state, a.signature);
      },
      decode(state) {
        return {
          publicKey: c4.fixed32.decode(state),
          signature: c4.fixed64.decode(state)
        };
      }
    };
    var DeviceAttestationArray = c4.array(DeviceAttestation);
    var DataAttestation = {
      preencode(state, a) {
        c4.fixed64.preencode(state, a.signature);
      },
      encode(state, a) {
        c4.fixed64.encode(state, a.signature);
      },
      decode(state) {
        return {
          signature: c4.fixed64.decode(state)
        };
      }
    };
    var ProofEncoding = {
      preencode(state, proof) {
        c4.uint.preencode(state, proof.version);
        Epoch.preencode(state, proof.epoch);
        c4.fixed32.preencode(state, proof.identity);
        DeviceAttestationArray.preencode(state, proof.chain);
        let flags = 0;
        if (proof.data) flags |= 1;
        c4.uint.preencode(state, flags);
        if (proof.data) DataAttestation.preencode(state, proof.data);
      },
      encode(state, proof) {
        c4.uint.encode(state, proof.version);
        Epoch.encode(state, proof.epoch);
        c4.fixed32.encode(state, proof.identity);
        DeviceAttestationArray.encode(state, proof.chain);
        let flags = 0;
        if (proof.data) flags |= 1;
        c4.uint.encode(state, flags);
        if (proof.data) DataAttestation.encode(state, proof.data);
      },
      decode(state) {
        const version3 = c4.uint.decode(state);
        if (version3 === 0) {
          return {
            version: 0,
            epoch: 0,
            identity: null,
            chain: [],
            data: null
          };
        }
        const epoch = Epoch.decode(state);
        const identity = c4.fixed32.decode(state);
        const chain = DeviceAttestationArray.decode(state);
        const flags = c4.uint.decode(state);
        const data = flags & 1 ? DataAttestation.decode(state) : null;
        return {
          version: version3,
          epoch,
          identity,
          chain,
          data
        };
      }
    };
    var ReceiptEncoding = {
      preencode(state, receipt) {
        Epoch.preencode(state, receipt.epoch);
      },
      encode(state, receipt) {
        Epoch.encode(state, receipt.epoch);
      },
      decode(state) {
        return {
          epoch: Epoch.decode(state)
        };
      }
    };
    module2.exports = {
      ATTESTED_DEVICE,
      ATTESTED_DATA,
      AttestedDevice,
      AttestedData,
      ProofEncoding,
      ReceiptEncoding
    };
  }
});

// node_modules/keet-identity-key/index.js
var require_keet_identity_key = __commonJS({
  "node_modules/keet-identity-key/index.js"(exports2, module2) {
    var c4 = require_compact_encoding3();
    var b4a4 = require_b4a();
    var KeyChain = require_keychain();
    var { sign, verify, hash } = require_crypto();
    var {
      ProofEncoding,
      AttestedData,
      AttestedDevice,
      ReceiptEncoding
    } = require_encoding();
    var PROOF_VERSION = 1;
    var KEET_TYPE = 5338;
    var NS_PROFILE_DISC_ENC = hash(b4a4.from("profile discovery"));
    module2.exports = class IdentityKey {
      constructor(keyChain) {
        this.keyChain = keyChain;
        this.identityKeyPair = this.keyChain.get(identityKeyPath(0));
        this.profileDiscoveryKeyPair = this.keyChain.get(discoveryCorePath(0));
      }
      static generateMnemonic() {
        return KeyChain.generateMnemonic();
      }
      static deriveSeed(mnemonic) {
        return KeyChain.deriveSeed(mnemonic);
      }
      get identityPublicKey() {
        return this.identityKeyPair.publicKey;
      }
      get profileDiscoveryPublicKey() {
        return this.profileDiscoveryKeyPair.publicKey;
      }
      getProfileDiscoveryEncryptionKey() {
        return this.keyChain.getSymmetricKey(encryptionKeyPath(NS_PROFILE_DISC_ENC));
      }
      getEncryptionKey(profileKey) {
        return this.keyChain.getSymmetricKey(encryptionKeyPath(profileKey));
      }
      bootstrap(device) {
        return IdentityKey.bootstrap({ identity: this.identityKeyPair }, device);
      }
      clear() {
        this.keyChain.clear();
        this.identityKeyPair.secretKey.fill(0);
        this.profileDiscoveryKeyPair.secretKey.fill(0);
      }
      static async bootstrap({ identity, seed, mnemonic }, device) {
        if (!identity) {
          const identityPath = identityKeyPath(0);
          identity = await KeyChain.from({ seed, mnemonic }, identityPath);
        }
        const proof = {
          version: PROOF_VERSION,
          epoch: Date.now(),
          identity: identity.publicKey,
          chain: []
        };
        return IdentityKey.attestDevice(device, identity, proof);
      }
      static attestDevice(publicKey, parent, proof) {
        if (!proof) return IdentityKey.bootstrap({ identity: parent }, publicKey);
        if (b4a4.isBuffer(proof)) {
          proof = c4.decode(ProofEncoding, proof);
        }
        if (proof.version === 0) {
          throw new Error("Version 0 proofs are not supported");
        }
        const signable = c4.encode(AttestedDevice, {
          epoch: proof.epoch,
          identity: proof.identity,
          device: publicKey
        });
        const signature = sign(signable, parent);
        proof.chain.push({ publicKey, signature });
        return c4.encode(ProofEncoding, proof);
      }
      static attestData(attestedData, keyPair, proof) {
        if (attestedData === null) throw new Error("Data is not attestable");
        if (b4a4.isBuffer(proof)) {
          proof = c4.decode(ProofEncoding, proof);
        }
        if (proof && proof.version === 0) {
          throw new Error("Version 0 proofs are not supported");
        }
        if (!proof) {
          proof = {
            version: PROOF_VERSION,
            epoch: Date.now(),
            identity: keyPair.publicKey,
            chain: []
          };
        }
        const signable = c4.encode(AttestedData, {
          epoch: proof.epoch,
          identity: proof.identity,
          data: hash(attestedData)
        });
        proof.data = { signature: sign(signable, keyPair) };
        return c4.encode(ProofEncoding, proof);
      }
      static async from({ seed, mnemonic }) {
        const keyChain = await KeyChain.from({ seed, mnemonic });
        return new IdentityKey(keyChain);
      }
      static verify(proof, attestedData, opts = {}) {
        if (b4a4.isBuffer(proof)) {
          proof = c4.decode(ProofEncoding, proof);
        }
        if (!validateProof(proof, attestedData, opts)) {
          return null;
        }
        const { epoch, identity, chain } = proof;
        const candidate = getLastKey(chain) || identity;
        if (opts.expectedDevice) {
          if (!b4a4.equals(candidate, opts.expectedDevice)) return null;
        }
        let parent = identity;
        for (let i = 0; i < chain.length; i++) {
          const { publicKey, signature } = chain[i];
          const signable = c4.encode(AttestedDevice, {
            epoch,
            identity,
            device: publicKey
          });
          if (!verify(signable, signature, parent)) {
            return null;
          }
          parent = publicKey;
        }
        if (proof.data) {
          const signable = c4.encode(AttestedData, {
            epoch,
            identity,
            data: hash(attestedData)
          });
          if (!verify(signable, proof.data.signature, parent)) {
            return null;
          }
        }
        const receipt = c4.encode(ReceiptEncoding, { epoch });
        return {
          receipt,
          identityPublicKey: identity,
          devicePublicKey: candidate
        };
      }
    };
    function validateProof(proof, attestedData, opts = {}) {
      if (proof.version === 0) return false;
      if (proof.version > PROOF_VERSION) return false;
      if (opts.receipt) {
        const { epoch } = c4.decode(ReceiptEncoding, opts.receipt);
        if (proof.epoch < epoch) return false;
      }
      if (opts.expectedIdentity) {
        if (!b4a4.equals(proof.identity, opts.expectedIdentity)) return false;
      }
      return validateAttestedData(proof.data, attestedData);
    }
    function validateAttestedData(data, attestedData) {
      if (!data && attestedData) return false;
      return true;
    }
    function getLastKey(chain) {
      if (!chain.length) return null;
      const last = chain[chain.length - 1];
      return last.publicKey;
    }
    function keyPath(accountIndex, index) {
      const purpose = 48;
      const role = 0;
      return [purpose, KEET_TYPE, role, accountIndex, index];
    }
    function identityKeyPath(accountIndex) {
      return keyPath(accountIndex, 0);
    }
    function discoveryCorePath(accountIndex) {
      return keyPath(accountIndex, 1);
    }
    function symmetricPath(...path) {
      const purpose = "SLIP-0021";
      const namespace = "keet-identity-key";
      return [purpose, namespace, ...path];
    }
    function encryptionKeyPath(profileKey) {
      return symmetricPath(b4a4.toString(profileKey, "hex"), "encryption key");
    }
  }
});

// backend/sheets-import.mjs
var sheets_import_exports = {};
__export(sheets_import_exports, {
  default: () => sheets_import_default
});
module.exports = __toCommonJS(sheets_import_exports);

// node_modules/schema-sheets/index.mjs
var import_hyperdb = __toESM(require_hyperdb(), 1);
var import_autobase = __toESM(require_autobase2(), 1);
var import_hypercore_crypto = __toESM(require_hypercore_crypto(), 1);
var import_z32 = __toESM(require_z32(), 1);

// node_modules/@jmespath-community/jmespath/dist/index.mjs
var isObject = (obj) => {
  return obj !== null && Object.prototype.toString.call(obj) === "[object Object]";
};
var strictDeepEqual = (first, second) => {
  if (first === second) {
    return true;
  }
  if (typeof first !== typeof second) {
    return false;
  }
  if (Array.isArray(first) && Array.isArray(second)) {
    if (first.length !== second.length) {
      return false;
    }
    for (let i = 0; i < first.length; i += 1) {
      if (!strictDeepEqual(first[i], second[i])) {
        return false;
      }
    }
    return true;
  }
  if (isObject(first) && isObject(second)) {
    const firstEntries = Object.entries(first);
    const secondKeys = new Set(Object.keys(second));
    if (firstEntries.length !== secondKeys.size) {
      return false;
    }
    for (const [key, value] of firstEntries) {
      if (!strictDeepEqual(value, second[key])) {
        return false;
      }
      secondKeys.delete(key);
    }
    return secondKeys.size === 0;
  }
  return false;
};
var isFalse = (obj) => {
  if (obj === null || obj === void 0 || obj === false) {
    return true;
  }
  if (typeof obj === "string") {
    return obj === "";
  }
  if (typeof obj === "object") {
    if (Array.isArray(obj)) {
      return obj.length === 0;
    }
    if (obj === null) {
      return true;
    }
    return Object.keys(obj).length === 0;
  }
  return false;
};
var isAlpha = (ch) => {
  return ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z" || ch === "_";
};
var isNum = (ch) => {
  return ch >= "0" && ch <= "9" || ch === "-";
};
var isAlphaNum = (ch) => {
  return ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z" || ch >= "0" && ch <= "9" || ch === "_";
};
var ensureInteger = (value) => {
  if (!(typeof value === "number") || Math.floor(value) !== value) {
    throw new Error("invalid-value: expecting an integer.");
  }
  return value;
};
var ensurePositiveInteger = (value) => {
  if (!(typeof value === "number") || value < 0 || Math.floor(value) !== value) {
    throw new Error("invalid-value: expecting a non-negative integer.");
  }
  return value;
};
var ensureNumbers = (...operands) => {
  for (let i = 0; i < operands.length; i++) {
    if (operands[i] === null || operands[i] === void 0) {
      throw new Error("not-a-number: undefined");
    }
    if (typeof operands[i] !== "number") {
      throw new Error("not-a-number");
    }
  }
};
var notZero = (n) => {
  n = +n;
  if (!n) {
    throw new Error("not-a-number: divide by zero");
  }
  return n;
};
var add = (left, right) => {
  ensureNumbers(left, right);
  const result = left + right;
  return result;
};
var sub = (left, right) => {
  ensureNumbers(left, right);
  const result = left - right;
  return result;
};
var mul = (left, right) => {
  ensureNumbers(left, right);
  const result = left * right;
  return result;
};
var divide = (left, right) => {
  ensureNumbers(left, right);
  const result = left / notZero(right);
  return result;
};
var div = (left, right) => {
  ensureNumbers(left, right);
  const result = Math.floor(left / notZero(right));
  return result;
};
var mod = (left, right) => {
  ensureNumbers(left, right);
  const result = left % right;
  return result;
};
var findFirst = (subject, sub2, start, end) => {
  if (!subject || !sub2) {
    return null;
  }
  start = Math.max(ensureInteger(start = start || 0), 0);
  end = Math.min(ensureInteger(end = end || subject.length), subject.length);
  const offset = subject.slice(start, end).indexOf(sub2);
  return offset === -1 ? null : offset + start;
};
var findLast = (subject, sub2, start, end) => {
  if (!subject || !sub2) {
    return null;
  }
  start = Math.max(ensureInteger(start = start || 0), 0);
  end = Math.min(ensureInteger(end = end || subject.length), subject.length);
  const offset = subject.slice(start, end).lastIndexOf(sub2);
  const result = offset === -1 ? null : offset + start;
  return result;
};
var lower = (subject) => subject.toLowerCase();
var ensurePadFuncParams = (name, width, padding) => {
  padding = padding || " ";
  if (padding.length > 1) {
    throw new Error(`invalid value, ${name} expects its 'pad' parameter to be a valid string with a single codepoint`);
  }
  ensurePositiveInteger(width);
  return padding;
};
var padLeft = (subject, width, padding) => {
  padding = ensurePadFuncParams("pad_left", width, padding);
  return subject && subject.padStart(width, padding) || "";
};
var padRight = (subject, width, padding) => {
  padding = ensurePadFuncParams("pad_right", width, padding);
  return subject && subject.padEnd(width, padding) || "";
};
var replace = (subject, string, by, count) => {
  if (count === 0) {
    return subject;
  }
  if (!count) {
    return subject.split(string).join(by);
  }
  ensurePositiveInteger(count);
  [...Array(count).keys()].map(() => subject = subject.replace(string, by));
  return subject;
};
var split = (subject, search2, count) => {
  if (subject.length == 0 && search2.length === 0) {
    return [];
  }
  if (count === null || count === void 0) {
    return subject.split(search2);
  }
  ensurePositiveInteger(count);
  if (count === 0) {
    return [subject];
  }
  const split2 = subject.split(search2);
  return [...split2.slice(0, count), split2.slice(count).join(search2)];
};
var trim = (subject, chars) => {
  return trimLeft(trimRight(subject, chars), chars);
};
var trimLeft = (subject, chars) => {
  return trimImpl(subject, (list) => new RegExp(`^[${list}]*(.*?)`), chars);
};
var trimRight = (subject, chars) => {
  return trimImpl(subject, (list) => new RegExp(`(.*?)[${list}]*$`), chars);
};
var trimImpl = (subject, regExper, chars) => {
  const pattern = chars ? chars.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&") : "\\s\x85";
  return subject.replace(regExper(pattern), "$1");
};
var upper = (subject) => subject.toUpperCase();
var basicTokens = {
  "(": "Lparen",
  ")": "Rparen",
  "*": "Star",
  ",": "Comma",
  ".": "Dot",
  ":": "Colon",
  "@": "Current",
  "]": "Rbracket",
  "{": "Lbrace",
  "}": "Rbrace",
  "+": "Plus",
  "%": "Modulo",
  "?": "Question",
  "\u2212": "Minus",
  "\xD7": "Multiply",
  "\xF7": "Divide"
  /* TOK_DIVIDE */
};
var operatorStartToken = {
  "!": true,
  "<": true,
  "=": true,
  ">": true,
  "&": true,
  "|": true,
  "/": true
};
var skipChars = {
  "	": true,
  "\n": true,
  "\r": true,
  " ": true
};
var StreamLexer = class {
  _current = 0;
  _enable_legacy_literals = false;
  tokenize(stream, options) {
    const tokens = [];
    this._current = 0;
    this._enable_legacy_literals = options?.enable_legacy_literals || false;
    let start;
    let identifier;
    let token;
    while (this._current < stream.length) {
      if (isAlpha(stream[this._current])) {
        start = this._current;
        identifier = this.consumeUnquotedIdentifier(stream);
        tokens.push({
          start,
          type: "UnquotedIdentifier",
          value: identifier
        });
      } else if (basicTokens[stream[this._current]] !== void 0) {
        tokens.push({
          start: this._current,
          type: basicTokens[stream[this._current]],
          value: stream[this._current]
        });
        this._current += 1;
      } else if (stream[this._current] === "$") {
        start = this._current;
        if (this._current + 1 < stream.length && isAlpha(stream[this._current + 1])) {
          this._current += 1;
          identifier = this.consumeUnquotedIdentifier(stream);
          tokens.push({
            start,
            type: "Variable",
            value: identifier
          });
        } else {
          tokens.push({
            start,
            type: "Root",
            value: stream[this._current]
          });
          this._current += 1;
        }
      } else if (stream[this._current] === "-") {
        if (this._current + 1 < stream.length && isNum(stream[this._current + 1])) {
          const token2 = this.consumeNumber(stream);
          token2 && tokens.push(token2);
        } else {
          const token2 = {
            start: this._current,
            type: "Minus",
            value: "-"
          };
          tokens.push(token2);
          this._current += 1;
        }
      } else if (isNum(stream[this._current])) {
        token = this.consumeNumber(stream);
        tokens.push(token);
      } else if (stream[this._current] === "[") {
        token = this.consumeLBracket(stream);
        tokens.push(token);
      } else if (stream[this._current] === '"') {
        start = this._current;
        identifier = this.consumeQuotedIdentifier(stream);
        tokens.push({
          start,
          type: "QuotedIdentifier",
          value: identifier
        });
      } else if (stream[this._current] === `'`) {
        start = this._current;
        identifier = this.consumeRawStringLiteral(stream);
        tokens.push({
          start,
          type: "Literal",
          value: identifier
        });
      } else if (stream[this._current] === "`") {
        start = this._current;
        const literal = this.consumeLiteral(stream);
        tokens.push({
          start,
          type: "Literal",
          value: literal
        });
      } else if (operatorStartToken[stream[this._current]] !== void 0) {
        token = this.consumeOperator(stream);
        token && tokens.push(token);
      } else if (skipChars[stream[this._current]] !== void 0) {
        this._current += 1;
      } else {
        const error = new Error(`Syntax error: unknown character: ${stream[this._current]}`);
        error.name = "LexerError";
        throw error;
      }
    }
    return tokens;
  }
  consumeUnquotedIdentifier(stream) {
    const start = this._current;
    this._current += 1;
    while (this._current < stream.length && isAlphaNum(stream[this._current])) {
      this._current += 1;
    }
    return stream.slice(start, this._current);
  }
  consumeQuotedIdentifier(stream) {
    const start = this._current;
    this._current += 1;
    const maxLength = stream.length;
    while (stream[this._current] !== '"' && this._current < maxLength) {
      let current = this._current;
      if (stream[current] === "\\" && (stream[current + 1] === "\\" || stream[current + 1] === '"')) {
        current += 2;
      } else {
        current += 1;
      }
      this._current = current;
    }
    this._current += 1;
    const [value, ok] = this.parseJSON(stream.slice(start, this._current));
    if (!ok) {
      const error = new Error(`syntax: unexpected end of JSON input`);
      error.name = "LexerError";
      throw error;
    }
    return value;
  }
  consumeRawStringLiteral(stream) {
    const start = this._current;
    this._current += 1;
    const maxLength = stream.length;
    while (stream[this._current] !== `'` && this._current < maxLength) {
      let current = this._current;
      if (stream[current] === "\\" && (stream[current + 1] === "\\" || stream[current + 1] === `'`)) {
        current += 2;
      } else {
        current += 1;
      }
      this._current = current;
    }
    this._current += 1;
    const literal = stream.slice(start + 1, this._current - 1);
    return replace(replace(literal, `\\\\`, `\\`), `\\'`, `'`);
  }
  consumeNumber(stream) {
    const start = this._current;
    this._current += 1;
    const maxLength = stream.length;
    while (isNum(stream[this._current]) && this._current < maxLength) {
      this._current += 1;
    }
    const value = parseInt(stream.slice(start, this._current), 10);
    return {
      start,
      value,
      type: "Number"
      /* TOK_NUMBER */
    };
  }
  consumeLBracket(stream) {
    const start = this._current;
    this._current += 1;
    if (stream[this._current] === "?") {
      this._current += 1;
      return { start, type: "Filter", value: "[?" };
    }
    if (stream[this._current] === "]") {
      this._current += 1;
      return { start, type: "Flatten", value: "[]" };
    }
    return { start, type: "Lbracket", value: "[" };
  }
  consumeOrElse(stream, peek, token, orElse) {
    const start = this._current;
    this._current += 1;
    if (this._current < stream.length && stream[this._current] === peek) {
      this._current += 1;
      return {
        start,
        type: orElse,
        value: stream.slice(start, this._current)
      };
    }
    return { start, type: token, value: stream[start] };
  }
  consumeOperator(stream) {
    const start = this._current;
    const startingChar = stream[start];
    switch (startingChar) {
      case "!":
        return this.consumeOrElse(
          stream,
          "=",
          "Not",
          "NE"
          /* TOK_NE */
        );
      case "<":
        return this.consumeOrElse(
          stream,
          "=",
          "LT",
          "LTE"
          /* TOK_LTE */
        );
      case ">":
        return this.consumeOrElse(
          stream,
          "=",
          "GT",
          "GTE"
          /* TOK_GTE */
        );
      case "=":
        return this.consumeOrElse(
          stream,
          "=",
          "Assign",
          "EQ"
          /* TOK_EQ */
        );
      case "&":
        return this.consumeOrElse(
          stream,
          "&",
          "Expref",
          "And"
          /* TOK_AND */
        );
      case "|":
        return this.consumeOrElse(
          stream,
          "|",
          "Pipe",
          "Or"
          /* TOK_OR */
        );
      case "/":
        return this.consumeOrElse(
          stream,
          "/",
          "Divide",
          "Div"
          /* TOK_DIV */
        );
    }
  }
  consumeLiteral(stream) {
    this._current += 1;
    const start = this._current;
    const maxLength = stream.length;
    while (stream[this._current] !== "`" && this._current < maxLength) {
      let current = this._current;
      if (stream[current] === "\\" && (stream[current + 1] === "\\" || stream[current + 1] === "`")) {
        current += 2;
      } else {
        current += 1;
      }
      this._current = current;
    }
    let literalString = stream.slice(start, this._current).trimStart();
    literalString = literalString.replace("\\`", "`");
    let literal = null;
    let ok = false;
    if (this.looksLikeJSON(literalString)) {
      [literal, ok] = this.parseJSON(literalString);
    }
    if (!ok && this._enable_legacy_literals) {
      [literal, ok] = this.parseJSON(`"${literalString}"`);
    }
    if (!ok) {
      const error = new Error(
        `Syntax error: unexpected end of JSON input or invalid format for a JSON literal: ${stream[this._current]}`
      );
      error.name = "LexerError";
      throw error;
    }
    this._current += 1;
    return literal;
  }
  looksLikeJSON(literalString) {
    const startingChars = '[{"';
    const jsonLiterals = ["true", "false", "null"];
    const numberLooking = "-0123456789";
    if (literalString === "") {
      return false;
    }
    if (startingChars.includes(literalString[0])) {
      return true;
    }
    if (jsonLiterals.includes(literalString)) {
      return true;
    }
    if (numberLooking.includes(literalString[0])) {
      const [_, ok] = this.parseJSON(literalString);
      return ok;
    }
    return false;
  }
  parseJSON(text) {
    try {
      const json = JSON.parse(text);
      return [json, true];
    } catch {
      return [null, false];
    }
  }
};
var Lexer = new StreamLexer();
var Lexer_default = Lexer;
var bindingPower = {
  [
    "EOF"
    /* TOK_EOF */
  ]: 0,
  [
    "Variable"
    /* TOK_VARIABLE */
  ]: 0,
  [
    "UnquotedIdentifier"
    /* TOK_UNQUOTEDIDENTIFIER */
  ]: 0,
  [
    "QuotedIdentifier"
    /* TOK_QUOTEDIDENTIFIER */
  ]: 0,
  [
    "Rbracket"
    /* TOK_RBRACKET */
  ]: 0,
  [
    "Rparen"
    /* TOK_RPAREN */
  ]: 0,
  [
    "Comma"
    /* TOK_COMMA */
  ]: 0,
  [
    "Rbrace"
    /* TOK_RBRACE */
  ]: 0,
  [
    "Number"
    /* TOK_NUMBER */
  ]: 0,
  [
    "Current"
    /* TOK_CURRENT */
  ]: 0,
  [
    "Expref"
    /* TOK_EXPREF */
  ]: 0,
  [
    "Root"
    /* TOK_ROOT */
  ]: 0,
  [
    "Assign"
    /* TOK_ASSIGN */
  ]: 1,
  [
    "Pipe"
    /* TOK_PIPE */
  ]: 1,
  [
    "Question"
    /* TOK_QUESTION */
  ]: 2,
  [
    "Or"
    /* TOK_OR */
  ]: 3,
  [
    "And"
    /* TOK_AND */
  ]: 4,
  [
    "EQ"
    /* TOK_EQ */
  ]: 5,
  [
    "GT"
    /* TOK_GT */
  ]: 5,
  [
    "LT"
    /* TOK_LT */
  ]: 5,
  [
    "GTE"
    /* TOK_GTE */
  ]: 5,
  [
    "LTE"
    /* TOK_LTE */
  ]: 5,
  [
    "NE"
    /* TOK_NE */
  ]: 5,
  [
    "Minus"
    /* TOK_MINUS */
  ]: 6,
  [
    "Plus"
    /* TOK_PLUS */
  ]: 6,
  [
    "Div"
    /* TOK_DIV */
  ]: 7,
  [
    "Divide"
    /* TOK_DIVIDE */
  ]: 7,
  [
    "Modulo"
    /* TOK_MODULO */
  ]: 7,
  [
    "Multiply"
    /* TOK_MULTIPLY */
  ]: 7,
  [
    "Flatten"
    /* TOK_FLATTEN */
  ]: 9,
  [
    "Star"
    /* TOK_STAR */
  ]: 20,
  [
    "Filter"
    /* TOK_FILTER */
  ]: 21,
  [
    "Dot"
    /* TOK_DOT */
  ]: 40,
  [
    "Not"
    /* TOK_NOT */
  ]: 45,
  [
    "Lbrace"
    /* TOK_LBRACE */
  ]: 50,
  [
    "Lbracket"
    /* TOK_LBRACKET */
  ]: 55,
  [
    "Lparen"
    /* TOK_LPAREN */
  ]: 60
};
var TokenParser = class _TokenParser {
  index = 0;
  tokens = [];
  parse(expression, options) {
    this.loadTokens(expression, options || { enable_legacy_literals: false });
    this.index = 0;
    const ast = this.expression(0);
    if (this.lookahead(0) !== "EOF") {
      const token = this.lookaheadToken(0);
      this.errorToken(token, `Syntax error: unexpected token type: ${token.type}, value: ${token.value}`);
    }
    return ast;
  }
  loadTokens(expression, options) {
    this.tokens = Lexer_default.tokenize(expression, options);
    this.tokens.push({ type: "EOF", value: "", start: expression.length });
  }
  expression(rbp) {
    const leftToken = this.lookaheadToken(0);
    this.advance();
    let left = this.nud(leftToken);
    let currentTokenType = this.lookahead(0);
    while (rbp < bindingPower[currentTokenType]) {
      this.advance();
      left = this.led(currentTokenType, left);
      currentTokenType = this.lookahead(0);
    }
    return left;
  }
  lookahead(offset) {
    return this.tokens[this.index + offset].type;
  }
  lookaheadToken(offset) {
    return this.tokens[this.index + offset];
  }
  advance() {
    this.index += 1;
  }
  nud(token) {
    switch (token.type) {
      case "Variable":
        return { type: "Variable", name: token.value };
      case "Literal":
        return { type: "Literal", value: token.value };
      case "UnquotedIdentifier": {
        if (_TokenParser.isKeyword(token, "let") && this.lookahead(0) === "Variable") {
          return this.parseLetExpression();
        } else {
          return { type: "Field", name: token.value };
        }
      }
      case "QuotedIdentifier":
        if (this.lookahead(0) === "Lparen") {
          throw new Error("Syntax error: quoted identifier not allowed for function names.");
        } else {
          return { type: "Field", name: token.value };
        }
      case "Not": {
        const child = this.expression(bindingPower.Not);
        return { type: "NotExpression", child };
      }
      case "Minus": {
        const child = this.expression(bindingPower.Minus);
        return {
          type: "Unary",
          operator: token.type,
          operand: child
        };
      }
      case "Plus": {
        const child = this.expression(bindingPower.Plus);
        return {
          type: "Unary",
          operator: token.type,
          operand: child
        };
      }
      case "Star": {
        const left = { type: "Identity" };
        return { type: "ValueProjection", left, right: this.parseProjectionRHS(bindingPower.Star) };
      }
      case "Filter":
        return this.led(token.type, { type: "Identity" });
      case "Lbrace":
        return this.parseMultiselectHash();
      case "Flatten": {
        const left = {
          type: "Flatten",
          child: { type: "Identity" }
        };
        const right = this.parseProjectionRHS(bindingPower.Flatten);
        return { type: "Projection", left, right };
      }
      case "Lbracket": {
        if (this.lookahead(0) === "Number" || this.lookahead(0) === "Colon") {
          const right = this.parseIndexExpression();
          return this.projectIfSlice({ type: "Identity" }, right);
        }
        if (this.lookahead(0) === "Star" && this.lookahead(1) === "Rbracket") {
          this.advance();
          this.advance();
          const right = this.parseProjectionRHS(bindingPower.Star);
          return {
            left: { type: "Identity" },
            right,
            type: "Projection"
          };
        }
        return this.parseMultiselectList();
      }
      case "Current":
        return {
          type: "Current"
          /* TOK_CURRENT */
        };
      case "Root":
        return {
          type: "Root"
          /* TOK_ROOT */
        };
      case "Expref": {
        const child = this.expression(bindingPower.Expref);
        return { type: "ExpressionReference", child };
      }
      case "Lparen": {
        const expression = this.expression(0);
        this.match(
          "Rparen"
          /* TOK_RPAREN */
        );
        return expression;
      }
      default:
        this.errorToken(token);
    }
  }
  led(tokenName, left) {
    switch (tokenName) {
      case "Question": {
        const trueExpr = this.expression(0);
        this.match(
          "Colon"
          /* TOK_COLON */
        );
        const falseExpr = this.expression(0);
        return {
          type: "Ternary",
          condition: left,
          trueExpr,
          falseExpr
        };
      }
      case "Dot": {
        const rbp = bindingPower.Dot;
        if (this.lookahead(0) !== "Star") {
          const right2 = this.parseDotRHS(rbp);
          return { type: "Subexpression", left, right: right2 };
        }
        this.advance();
        const right = this.parseProjectionRHS(rbp);
        return { type: "ValueProjection", left, right };
      }
      case "Pipe": {
        const right = this.expression(bindingPower.Pipe);
        return { type: "Pipe", left, right };
      }
      case "Or": {
        const right = this.expression(bindingPower.Or);
        return { type: "OrExpression", left, right };
      }
      case "And": {
        const right = this.expression(bindingPower.And);
        return { type: "AndExpression", left, right };
      }
      case "Lparen": {
        if (left.type !== "Field") {
          throw new Error("Syntax error: expected a Field node");
        }
        const name = left.name;
        const args = this.parseCommaSeparatedExpressionsUntilToken(
          "Rparen"
          /* TOK_RPAREN */
        );
        const node = { name, type: "Function", children: args };
        return node;
      }
      case "Filter": {
        const condition = this.expression(0);
        this.match(
          "Rbracket"
          /* TOK_RBRACKET */
        );
        const right = this.lookahead(0) === "Flatten" ? { type: "Identity" } : this.parseProjectionRHS(bindingPower.Filter);
        return { type: "FilterProjection", left, right, condition };
      }
      case "Flatten": {
        const leftNode = { type: "Flatten", child: left };
        const right = this.parseProjectionRHS(bindingPower.Flatten);
        return { type: "Projection", left: leftNode, right };
      }
      case "Assign": {
        const leftNode = left;
        const right = this.expression(0);
        return {
          type: "Binding",
          variable: leftNode.name,
          reference: right
        };
      }
      case "EQ":
      case "NE":
      case "GT":
      case "GTE":
      case "LT":
      case "LTE":
        return this.parseComparator(left, tokenName);
      case "Plus":
      case "Minus":
      case "Multiply":
      case "Star":
      case "Divide":
      case "Modulo":
      case "Div":
        return this.parseArithmetic(left, tokenName);
      case "Lbracket": {
        const token = this.lookaheadToken(0);
        if (token.type === "Number" || token.type === "Colon") {
          const right2 = this.parseIndexExpression();
          return this.projectIfSlice(left, right2);
        }
        this.match(
          "Star"
          /* TOK_STAR */
        );
        this.match(
          "Rbracket"
          /* TOK_RBRACKET */
        );
        const right = this.parseProjectionRHS(bindingPower.Star);
        return { type: "Projection", left, right };
      }
      default:
        return this.errorToken(this.lookaheadToken(0));
    }
  }
  static isKeyword(token, keyword) {
    return token.type === "UnquotedIdentifier" && token.value === keyword;
  }
  match(tokenType) {
    if (this.lookahead(0) === tokenType) {
      this.advance();
      return;
    } else {
      const token = this.lookaheadToken(0);
      this.errorToken(token, `Syntax error: expected ${tokenType}, got: ${token.type}`);
    }
  }
  errorToken(token, message = "") {
    const error = new Error(message || `Syntax error: invalid token (${token.type}): "${token.value}"`);
    error.name = "ParserError";
    throw error;
  }
  parseIndexExpression() {
    if (this.lookahead(0) === "Colon" || this.lookahead(1) === "Colon") {
      return this.parseSliceExpression();
    }
    const value = Number(this.lookaheadToken(0).value);
    this.advance();
    this.match(
      "Rbracket"
      /* TOK_RBRACKET */
    );
    return { type: "Index", value };
  }
  projectIfSlice(left, right) {
    const indexExpr = {
      type: "IndexExpression",
      left,
      right
    };
    if (right.type === "Slice") {
      return {
        left: indexExpr,
        right: this.parseProjectionRHS(bindingPower.Star),
        type: "Projection"
      };
    }
    return indexExpr;
  }
  parseSliceExpression() {
    const parts = [null, null, null];
    let index = 0;
    let current = this.lookaheadToken(0);
    while (current.type != "Rbracket" && index < 3) {
      if (current.type === "Colon") {
        index++;
        if (index === 3) {
          this.errorToken(this.lookaheadToken(0), "Syntax error, too many colons in slice expression");
        }
        this.advance();
      } else if (current.type === "Number") {
        const part = this.lookaheadToken(0).value;
        parts[index] = part;
        this.advance();
      } else {
        const next = this.lookaheadToken(0);
        this.errorToken(next, `Syntax error, unexpected token: ${next.value}(${next.type})`);
      }
      current = this.lookaheadToken(0);
    }
    this.match(
      "Rbracket"
      /* TOK_RBRACKET */
    );
    const [start, stop, step] = parts;
    return { type: "Slice", start, stop, step };
  }
  parseLetExpression() {
    const separated = this.parseCommaSeparatedExpressionsUntilKeyword("in");
    const expression = this.expression(0);
    const bindings = separated.map((binding) => binding);
    return {
      type: "LetExpression",
      bindings,
      expression
    };
  }
  parseCommaSeparatedExpressionsUntilKeyword(keyword) {
    return this.parseCommaSeparatedExpressionsUntil(
      () => {
        return _TokenParser.isKeyword(this.lookaheadToken(0), keyword);
      },
      () => {
        this.advance();
      }
    );
  }
  parseCommaSeparatedExpressionsUntilToken(token) {
    return this.parseCommaSeparatedExpressionsUntil(
      () => {
        return this.lookahead(0) === token;
      },
      () => {
        return this.match(token);
      }
    );
  }
  parseCommaSeparatedExpressionsUntil(isEndToken, matchEndToken) {
    const args = [];
    let expression;
    while (!isEndToken()) {
      expression = this.expression(0);
      if (this.lookahead(0) === "Comma") {
        this.match(
          "Comma"
          /* TOK_COMMA */
        );
      }
      args.push(expression);
    }
    matchEndToken();
    return args;
  }
  parseComparator(left, comparator) {
    const right = this.expression(bindingPower[comparator]);
    return { type: "Comparator", name: comparator, left, right };
  }
  parseArithmetic(left, operator) {
    const right = this.expression(bindingPower[operator]);
    return { type: "Arithmetic", operator, left, right };
  }
  parseDotRHS(rbp) {
    const lookahead = this.lookahead(0);
    const exprTokens = [
      "UnquotedIdentifier",
      "QuotedIdentifier",
      "Star"
      /* TOK_STAR */
    ];
    if (exprTokens.includes(lookahead)) {
      return this.expression(rbp);
    }
    if (lookahead === "Lbracket") {
      this.match(
        "Lbracket"
        /* TOK_LBRACKET */
      );
      return this.parseMultiselectList();
    }
    if (lookahead === "Lbrace") {
      this.match(
        "Lbrace"
        /* TOK_LBRACE */
      );
      return this.parseMultiselectHash();
    }
    const token = this.lookaheadToken(0);
    this.errorToken(token, `Syntax error, unexpected token: ${token.value}(${token.type})`);
  }
  parseProjectionRHS(rbp) {
    if (bindingPower[this.lookahead(0)] < 10) {
      return { type: "Identity" };
    }
    if (this.lookahead(0) === "Lbracket") {
      return this.expression(rbp);
    }
    if (this.lookahead(0) === "Filter") {
      return this.expression(rbp);
    }
    if (this.lookahead(0) === "Dot") {
      this.match(
        "Dot"
        /* TOK_DOT */
      );
      return this.parseDotRHS(rbp);
    }
    const token = this.lookaheadToken(0);
    this.errorToken(token, `Syntax error, unexpected token: ${token.value}(${token.type})`);
  }
  parseMultiselectList() {
    const expressions = [];
    while (this.lookahead(0) !== "Rbracket") {
      const expression = this.expression(0);
      expressions.push(expression);
      if (this.lookahead(0) === "Comma") {
        this.match(
          "Comma"
          /* TOK_COMMA */
        );
        if (this.lookahead(0) === "Rbracket") {
          throw new Error("Syntax error: unexpected token Rbracket");
        }
      }
    }
    this.match(
      "Rbracket"
      /* TOK_RBRACKET */
    );
    return { type: "MultiSelectList", children: expressions };
  }
  parseMultiselectHash() {
    const pairs = [];
    const identifierTypes = [
      "UnquotedIdentifier",
      "QuotedIdentifier"
      /* TOK_QUOTEDIDENTIFIER */
    ];
    let keyToken;
    let keyName;
    let value;
    for (; ; ) {
      keyToken = this.lookaheadToken(0);
      if (!identifierTypes.includes(keyToken.type)) {
        throw new Error(`Syntax error: expecting an identifier token, got: ${keyToken.type}`);
      }
      keyName = keyToken.value;
      this.advance();
      this.match(
        "Colon"
        /* TOK_COLON */
      );
      value = this.expression(0);
      pairs.push({ value, type: "KeyValuePair", name: keyName });
      if (this.lookahead(0) === "Comma") {
        this.match(
          "Comma"
          /* TOK_COMMA */
        );
      } else if (this.lookahead(0) === "Rbrace") {
        this.match(
          "Rbrace"
          /* TOK_RBRACE */
        );
        break;
      }
    }
    return { type: "MultiSelectHash", children: pairs };
  }
};
var Parser = new TokenParser();
var Parser_default = Parser;
var Text = class _Text {
  _text;
  constructor(text) {
    this._text = text;
  }
  get string() {
    return this._text;
  }
  get length() {
    return this.codePoints.length;
  }
  compareTo(other) {
    return _Text.compare(this, new _Text(other));
  }
  static get comparer() {
    const stringComparer = (left, right) => {
      return new _Text(left).compareTo(right);
    };
    return stringComparer;
  }
  static compare(left, right) {
    const leftCp = left.codePoints;
    const rightCp = right.codePoints;
    for (let index = 0; index < Math.min(leftCp.length, rightCp.length); index++) {
      if (leftCp[index] === rightCp[index]) {
        continue;
      }
      return leftCp[index] - rightCp[index] > 0 ? 1 : -1;
    }
    return leftCp.length - rightCp.length > 0 ? 1 : -1;
  }
  reverse() {
    return String.fromCodePoint(...this.codePoints.reverse());
  }
  get codePoints() {
    const array = [...this._text].map((s) => s.codePointAt(0));
    return array;
  }
};
var createMathFunction = (mathFn) => ([value]) => mathFn(value);
var createStringFunction = (stringFn) => ([subject]) => stringFn(subject);
var createObjectFunction = (objFn) => ([obj]) => objFn(obj);
var Runtime = class {
  _interpreter;
  _functionTable;
  _customFunctions = /* @__PURE__ */ new Set();
  TYPE_NAME_TABLE = Object.freeze({
    [
      0
      /* TYPE_NUMBER */
    ]: "number",
    [
      1
      /* TYPE_ANY */
    ]: "any",
    [
      2
      /* TYPE_STRING */
    ]: "string",
    [
      3
      /* TYPE_ARRAY */
    ]: "array",
    [
      4
      /* TYPE_OBJECT */
    ]: "object",
    [
      5
      /* TYPE_BOOLEAN */
    ]: "boolean",
    [
      6
      /* TYPE_EXPREF */
    ]: "expression",
    [
      7
      /* TYPE_NULL */
    ]: "null",
    [
      8
      /* TYPE_ARRAY_NUMBER */
    ]: "Array<number>",
    [
      10
      /* TYPE_ARRAY_OBJECT */
    ]: "Array<object>",
    [
      9
      /* TYPE_ARRAY_STRING */
    ]: "Array<string>",
    [
      11
      /* TYPE_ARRAY_ARRAY */
    ]: "Array<Array<any>>"
  });
  constructor(interpreter) {
    this._interpreter = interpreter;
    this._functionTable = this.buildFunctionTable();
  }
  buildFunctionTable() {
    return {
      // Math functions
      abs: { _func: createMathFunction(Math.abs), _signature: [{ types: [
        0
        /* TYPE_NUMBER */
      ] }] },
      ceil: { _func: createMathFunction(Math.ceil), _signature: [{ types: [
        0
        /* TYPE_NUMBER */
      ] }] },
      floor: { _func: createMathFunction(Math.floor), _signature: [{ types: [
        0
        /* TYPE_NUMBER */
      ] }] },
      // String functions
      lower: { _func: createStringFunction(lower), _signature: [{ types: [
        2
        /* TYPE_STRING */
      ] }] },
      upper: { _func: createStringFunction(upper), _signature: [{ types: [
        2
        /* TYPE_STRING */
      ] }] },
      // Object functions
      keys: { _func: createObjectFunction(Object.keys), _signature: [{ types: [
        4
        /* TYPE_OBJECT */
      ] }] },
      values: { _func: createObjectFunction(Object.values), _signature: [{ types: [
        4
        /* TYPE_OBJECT */
      ] }] },
      // Complex functions that need custom implementations
      avg: { _func: this.functionAvg, _signature: [{ types: [
        8
        /* TYPE_ARRAY_NUMBER */
      ] }] },
      contains: {
        _func: this.functionContains,
        _signature: [
          { types: [
            2,
            3
            /* TYPE_ARRAY */
          ] },
          { types: [
            1
            /* TYPE_ANY */
          ] }
        ]
      },
      ends_with: {
        _func: this.functionEndsWith,
        _signature: [{ types: [
          2
          /* TYPE_STRING */
        ] }, { types: [
          2
          /* TYPE_STRING */
        ] }]
      },
      find_first: {
        _func: this.functionFindFirst,
        _signature: [
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            0
            /* TYPE_NUMBER */
          ], optional: true },
          { types: [
            0
            /* TYPE_NUMBER */
          ], optional: true }
        ]
      },
      find_last: {
        _func: this.functionFindLast,
        _signature: [
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            0
            /* TYPE_NUMBER */
          ], optional: true },
          { types: [
            0
            /* TYPE_NUMBER */
          ], optional: true }
        ]
      },
      from_items: { _func: this.functionFromItems, _signature: [{ types: [
        11
        /* TYPE_ARRAY_ARRAY */
      ] }] },
      group_by: {
        _func: this.functionGroupBy,
        _signature: [{ types: [
          3
          /* TYPE_ARRAY */
        ] }, { types: [
          6
          /* TYPE_EXPREF */
        ] }]
      },
      items: { _func: this.functionItems, _signature: [{ types: [
        4
        /* TYPE_OBJECT */
      ] }] },
      join: {
        _func: this.functionJoin,
        _signature: [{ types: [
          2
          /* TYPE_STRING */
        ] }, { types: [
          9
          /* TYPE_ARRAY_STRING */
        ] }]
      },
      length: {
        _func: this.functionLength,
        _signature: [{ types: [
          2,
          3,
          4
          /* TYPE_OBJECT */
        ] }]
      },
      map: {
        _func: this.functionMap,
        _signature: [{ types: [
          6
          /* TYPE_EXPREF */
        ] }, { types: [
          3
          /* TYPE_ARRAY */
        ] }]
      },
      max: {
        _func: this.functionMax,
        _signature: [{ types: [
          8,
          9
          /* TYPE_ARRAY_STRING */
        ] }]
      },
      max_by: {
        _func: this.functionMaxBy,
        _signature: [{ types: [
          3
          /* TYPE_ARRAY */
        ] }, { types: [
          6
          /* TYPE_EXPREF */
        ] }]
      },
      merge: { _func: this.functionMerge, _signature: [{ types: [
        4
        /* TYPE_OBJECT */
      ], variadic: true }] },
      min: {
        _func: this.functionMin,
        _signature: [{ types: [
          8,
          9
          /* TYPE_ARRAY_STRING */
        ] }]
      },
      min_by: {
        _func: this.functionMinBy,
        _signature: [{ types: [
          3
          /* TYPE_ARRAY */
        ] }, { types: [
          6
          /* TYPE_EXPREF */
        ] }]
      },
      not_null: { _func: this.functionNotNull, _signature: [{ types: [
        1
        /* TYPE_ANY */
      ], variadic: true }] },
      pad_left: {
        _func: this.functionPadLeft,
        _signature: [
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            0
            /* TYPE_NUMBER */
          ] },
          { types: [
            2
            /* TYPE_STRING */
          ], optional: true }
        ]
      },
      pad_right: {
        _func: this.functionPadRight,
        _signature: [
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            0
            /* TYPE_NUMBER */
          ] },
          { types: [
            2
            /* TYPE_STRING */
          ], optional: true }
        ]
      },
      replace: {
        _func: this.functionReplace,
        _signature: [
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            0
            /* TYPE_NUMBER */
          ], optional: true }
        ]
      },
      reverse: {
        _func: this.functionReverse,
        _signature: [{ types: [
          2,
          3
          /* TYPE_ARRAY */
        ] }]
      },
      sort: {
        _func: this.functionSort,
        _signature: [{ types: [
          9,
          8
          /* TYPE_ARRAY_NUMBER */
        ] }]
      },
      sort_by: {
        _func: this.functionSortBy,
        _signature: [{ types: [
          3
          /* TYPE_ARRAY */
        ] }, { types: [
          6
          /* TYPE_EXPREF */
        ] }]
      },
      split: {
        _func: this.functionSplit,
        _signature: [
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            2
            /* TYPE_STRING */
          ] },
          { types: [
            0
            /* TYPE_NUMBER */
          ], optional: true }
        ]
      },
      starts_with: {
        _func: this.functionStartsWith,
        _signature: [{ types: [
          2
          /* TYPE_STRING */
        ] }, { types: [
          2
          /* TYPE_STRING */
        ] }]
      },
      sum: { _func: this.functionSum, _signature: [{ types: [
        8
        /* TYPE_ARRAY_NUMBER */
      ] }] },
      to_array: { _func: this.functionToArray, _signature: [{ types: [
        1
        /* TYPE_ANY */
      ] }] },
      to_number: { _func: this.functionToNumber, _signature: [{ types: [
        1
        /* TYPE_ANY */
      ] }] },
      to_string: { _func: this.functionToString, _signature: [{ types: [
        1
        /* TYPE_ANY */
      ] }] },
      trim: {
        _func: this.functionTrim,
        _signature: [{ types: [
          2
          /* TYPE_STRING */
        ] }, { types: [
          2
          /* TYPE_STRING */
        ], optional: true }]
      },
      trim_left: {
        _func: this.functionTrimLeft,
        _signature: [{ types: [
          2
          /* TYPE_STRING */
        ] }, { types: [
          2
          /* TYPE_STRING */
        ], optional: true }]
      },
      trim_right: {
        _func: this.functionTrimRight,
        _signature: [{ types: [
          2
          /* TYPE_STRING */
        ] }, { types: [
          2
          /* TYPE_STRING */
        ], optional: true }]
      },
      type: { _func: this.functionType, _signature: [{ types: [
        1
        /* TYPE_ANY */
      ] }] },
      zip: { _func: this.functionZip, _signature: [{ types: [
        3
        /* TYPE_ARRAY */
      ], variadic: true }] }
    };
  }
  /**
   * Enhanced registerFunction with backward compatibility and new options
   * @deprecated Use register() method for enhanced functionality
   */
  registerFunction(name, customFunction, signature, options) {
    const result = this._registerInternal(name, customFunction, signature, options);
    if (!result.success) {
      throw new Error(result.message);
    }
  }
  /**
   * Internal registration method that bypasses TypeScript type checking
   */
  _registerInternal(name, customFunction, signature, options = {}) {
    if (!name || typeof name !== "string" || name.trim() === "") {
      return {
        success: false,
        reason: "invalid-name",
        message: "Function name must be a non-empty string"
      };
    }
    try {
      this.validateInputSignatures(name, signature);
    } catch (error) {
      return {
        success: false,
        reason: "invalid-signature",
        message: error instanceof Error ? error.message : "Invalid function signature"
      };
    }
    const { override = false, warn = false } = options;
    const exists = name in this._functionTable;
    if (exists && !override) {
      return {
        success: false,
        reason: "already-exists",
        message: `Function already defined: ${name}(). Use { override: true } to replace it.`
      };
    }
    if (exists && override && warn) {
      console.warn(`Warning: Overriding existing function: ${name}()`);
    }
    this._functionTable[name] = {
      _func: customFunction.bind(this),
      _signature: signature
    };
    this._customFunctions.add(name);
    const message = exists ? `Function ${name}() overridden successfully` : `Function ${name}() registered successfully`;
    return { success: true, message };
  }
  /**
   * Register a new function with enhanced options and type safety
   */
  register(name, customFunction, signature, options = {}) {
    return this._registerInternal(name, customFunction, signature, options);
  }
  /**
   * Unregister a custom function (built-in functions cannot be unregistered)
   */
  unregister(name) {
    if (!this._customFunctions.has(name)) {
      return false;
    }
    delete this._functionTable[name];
    this._customFunctions.delete(name);
    return true;
  }
  /**
   * Check if a function is registered
   */
  isRegistered(name) {
    return name in this._functionTable;
  }
  /**
   * Get list of all registered function names
   */
  getRegistered() {
    return Object.keys(this._functionTable);
  }
  /**
   * Get list of custom (non-built-in) function names
   */
  getCustomFunctions() {
    return Array.from(this._customFunctions);
  }
  /**
   * Clear all custom functions (built-in functions remain)
   */
  clearCustomFunctions() {
    for (const name of this._customFunctions) {
      delete this._functionTable[name];
    }
    this._customFunctions.clear();
  }
  callFunction(name, resolvedArgs) {
    const functionEntry = this._functionTable[name];
    if (functionEntry === void 0) {
      throw new Error(`Unknown function: ${name}()`);
    }
    this.validateArgs(name, resolvedArgs, functionEntry._signature);
    return functionEntry._func.call(this, resolvedArgs);
  }
  validateInputSignatures(name, signature) {
    for (let i = 0; i < signature.length; i += 1) {
      if ("variadic" in signature[i] && i !== signature.length - 1) {
        throw new Error(`Invalid arity: ${name}() 'variadic' argument ${i + 1} must occur last`);
      }
    }
  }
  validateArgs(name, args, signature) {
    this.validateInputSignatures(name, signature);
    this.validateArity(name, args, signature);
    this.validateTypes(name, args, signature);
  }
  validateArity(name, args, signature) {
    const numberOfRequiredArgs = signature.filter((argSignature) => !(argSignature.optional ?? false)).length;
    const lastArgIsVariadic = signature[signature.length - 1]?.variadic ?? false;
    const tooFewArgs = args.length < numberOfRequiredArgs;
    const tooManyArgs = args.length > signature.length;
    if (lastArgIsVariadic && tooFewArgs || !lastArgIsVariadic && (tooFewArgs || tooManyArgs)) {
      const tooFewModifier = tooFewArgs && (!lastArgIsVariadic && numberOfRequiredArgs > 1 || lastArgIsVariadic) ? "at least " : "";
      const pluralized = signature.length > 1;
      throw new Error(
        `Invalid arity: ${name}() takes ${tooFewModifier}${numberOfRequiredArgs} argument${pluralized && "s" || ""} but received ${args.length}`
      );
    }
  }
  validateTypes(name, args, signature) {
    for (let i = 0; i < signature.length; i += 1) {
      const currentSpec = signature[i].types;
      const actualType = this.getTypeName(args[i]);
      if (actualType === void 0) {
        continue;
      }
      const typeMatched = currentSpec.some((expectedType) => this.typeMatches(actualType, expectedType, args[i]));
      if (!typeMatched) {
        const expected = currentSpec.map((typeId) => this.TYPE_NAME_TABLE[typeId]).join(" | ");
        throw new Error(
          `Invalid type: ${name}() expected argument ${i + 1} to be type (${expected}) but received type ${this.TYPE_NAME_TABLE[actualType]} instead.`
        );
      }
    }
  }
  typeMatches(actual, expected, argValue) {
    if (expected === 1) {
      return true;
    }
    if (expected === 9 || expected === 8 || expected === 10 || expected === 11 || expected === 3) {
      if (expected === 3) {
        return actual === 3;
      }
      if (actual === 3) {
        let subtype;
        if (expected === 8) {
          subtype = 0;
        } else if (expected === 10) {
          subtype = 4;
        } else if (expected === 9) {
          subtype = 2;
        } else if (expected === 11) {
          subtype = 3;
        }
        const array = argValue;
        for (let i = 0; i < array.length; i += 1) {
          const typeName = this.getTypeName(array[i]);
          if (typeName !== void 0 && subtype !== void 0 && !this.typeMatches(typeName, subtype, array[i])) {
            return false;
          }
        }
        return true;
      }
    } else {
      return actual === expected;
    }
    return false;
  }
  getTypeName(obj) {
    if (obj === null) {
      return 7;
    }
    if (typeof obj === "string") {
      return 2;
    }
    if (typeof obj === "number") {
      return 0;
    }
    if (typeof obj === "boolean") {
      return 5;
    }
    if (Array.isArray(obj)) {
      return 3;
    }
    if (typeof obj === "object") {
      if (obj.expref) {
        return 6;
      }
      return 4;
    }
    return;
  }
  createKeyFunction(exprefNode, allowedTypes) {
    const interpreter = this._interpreter;
    const keyFunc = (x) => {
      const current = interpreter.visit(exprefNode, x);
      if (!allowedTypes.includes(this.getTypeName(current))) {
        const msg = `Invalid type: expected one of (${allowedTypes.map((t) => this.TYPE_NAME_TABLE[t]).join(" | ")}), received ${this.TYPE_NAME_TABLE[this.getTypeName(current)]}`;
        throw new Error(msg);
      }
      return current;
    };
    return keyFunc;
  }
  functionAvg = ([inputArray]) => {
    if (!inputArray || inputArray.length == 0) {
      return null;
    }
    let sum = 0;
    for (let i = 0; i < inputArray.length; i += 1) {
      sum += inputArray[i];
    }
    return sum / inputArray.length;
  };
  functionContains = ([
    searchable,
    searchValue
  ]) => {
    if (Array.isArray(searchable)) {
      const array = searchable;
      return array.includes(searchValue);
    }
    if (typeof searchable === "string") {
      const text = searchable;
      if (typeof searchValue === "string") {
        return text.includes(searchValue);
      }
    }
    return null;
  };
  functionEndsWith = (resolvedArgs) => {
    const [searchStr, suffix] = resolvedArgs;
    return searchStr.includes(suffix, searchStr.length - suffix.length);
  };
  functionFindFirst = this.createFindFunction(findFirst);
  functionFindLast = this.createFindFunction(findLast);
  createFindFunction(findFn) {
    return (resolvedArgs) => {
      const subject = resolvedArgs[0];
      const search2 = resolvedArgs[1];
      const start = resolvedArgs.length > 2 ? resolvedArgs[2] : void 0;
      const end = resolvedArgs.length > 3 ? resolvedArgs[3] : void 0;
      return findFn(subject, search2, start, end);
    };
  }
  functionFromItems = ([array]) => {
    array.map((pair) => {
      if (pair.length != 2 || typeof pair[0] !== "string") {
        throw new Error("invalid value, each array must contain two elements, a pair of string and value");
      }
    });
    return Object.fromEntries(array);
  };
  functionGroupBy = ([array, exprefNode]) => {
    const keyFunction = this.createKeyFunction(exprefNode, [
      2
      /* TYPE_STRING */
    ]);
    return array.reduce((acc, cur) => {
      const k = keyFunction(cur ?? {});
      const target = acc[k] = acc[k] || [];
      target.push(cur);
      return acc;
    }, {});
  };
  functionItems = ([inputValue]) => {
    return Object.entries(inputValue);
  };
  functionJoin = (resolvedArgs) => {
    const [joinChar, listJoin] = resolvedArgs;
    return listJoin.join(joinChar);
  };
  functionLength = ([inputValue]) => {
    if (typeof inputValue === "string") {
      return new Text(inputValue).length;
    }
    if (Array.isArray(inputValue)) {
      return inputValue.length;
    }
    return Object.keys(inputValue).length;
  };
  functionMap = ([exprefNode, elements]) => {
    if (!this._interpreter) {
      return [];
    }
    const mapped = [];
    const interpreter = this._interpreter;
    for (let i = 0; i < elements.length; i += 1) {
      mapped.push(interpreter.visit(exprefNode, elements[i]));
    }
    return mapped;
  };
  functionMax = ([inputValue]) => {
    if (!inputValue.length) {
      return null;
    }
    const typeName = this.getTypeName(inputValue[0]);
    if (typeName === 0) {
      return Math.max(...inputValue);
    }
    const elements = inputValue;
    let maxElement = elements[0];
    for (let i = 1; i < elements.length; i += 1) {
      if (maxElement.localeCompare(elements[i]) < 0) {
        maxElement = elements[i];
      }
    }
    return maxElement;
  };
  functionMaxBy = (resolvedArgs) => {
    const exprefNode = resolvedArgs[1];
    const resolvedArray = resolvedArgs[0];
    const keyFunction = this.createKeyFunction(exprefNode, [
      0,
      2
      /* TYPE_STRING */
    ]);
    let maxNumber = -Infinity;
    let maxRecord;
    let current;
    for (let i = 0; i < resolvedArray.length; i += 1) {
      current = keyFunction && keyFunction(resolvedArray[i]);
      if (current !== void 0 && current > maxNumber) {
        maxNumber = current;
        maxRecord = resolvedArray[i];
      }
    }
    return maxRecord || null;
  };
  functionMerge = (resolvedArgs) => {
    let merged = {};
    for (let i = 0; i < resolvedArgs.length; i += 1) {
      const current = resolvedArgs[i];
      merged = Object.assign(merged, current);
    }
    return merged;
  };
  functionMin = ([inputValue]) => {
    if (!inputValue.length) {
      return null;
    }
    const typeName = this.getTypeName(inputValue[0]);
    if (typeName === 0) {
      return Math.min(...inputValue);
    }
    const elements = inputValue;
    let minElement = elements[0];
    for (let i = 1; i < elements.length; i += 1) {
      if (elements[i].localeCompare(minElement) < 0) {
        minElement = elements[i];
      }
    }
    return minElement;
  };
  functionMinBy = (resolvedArgs) => {
    const exprefNode = resolvedArgs[1];
    const resolvedArray = resolvedArgs[0];
    const keyFunction = this.createKeyFunction(exprefNode, [
      0,
      2
      /* TYPE_STRING */
    ]);
    let minNumber = Infinity;
    let minRecord;
    let current;
    for (let i = 0; i < resolvedArray.length; i += 1) {
      current = keyFunction && keyFunction(resolvedArray[i]);
      if (current !== void 0 && current < minNumber) {
        minNumber = current;
        minRecord = resolvedArray[i];
      }
    }
    return minRecord || null;
  };
  functionNotNull = (resolvedArgs) => {
    for (let i = 0; i < resolvedArgs.length; i += 1) {
      if (this.getTypeName(resolvedArgs[i]) !== 7) {
        return resolvedArgs[i];
      }
    }
    return null;
  };
  functionPadLeft = this.createPadFunction(padLeft);
  functionPadRight = this.createPadFunction(padRight);
  createPadFunction(padFn) {
    return (resolvedArgs) => {
      const subject = resolvedArgs[0];
      const width = resolvedArgs[1];
      const padding = resolvedArgs.length > 2 ? resolvedArgs[2] : void 0;
      return padFn(subject, width, padding);
    };
  }
  functionReplace = (resolvedArgs) => {
    const subject = resolvedArgs[0];
    const string = resolvedArgs[1];
    const by = resolvedArgs[2];
    return replace(subject, string, by, resolvedArgs.length > 3 ? resolvedArgs[3] : void 0);
  };
  functionSplit = (resolvedArgs) => {
    const subject = resolvedArgs[0];
    const search2 = resolvedArgs[1];
    return split(subject, search2, resolvedArgs.length > 2 ? resolvedArgs[2] : void 0);
  };
  functionReverse = ([inputValue]) => {
    const typeName = this.getTypeName(inputValue);
    if (typeName === 2) {
      return new Text(inputValue).reverse();
    }
    const reversedArray = inputValue.slice(0);
    reversedArray.reverse();
    return reversedArray;
  };
  functionSort = ([inputValue]) => {
    if (inputValue.length == 0) {
      return inputValue;
    }
    if (typeof inputValue[0] === "string") {
      return [...inputValue].sort(Text.comparer);
    }
    return [...inputValue].sort();
  };
  functionSortBy = (resolvedArgs) => {
    const sortedArray = resolvedArgs[0].slice(0);
    if (sortedArray.length === 0) {
      return sortedArray;
    }
    const interpreter = this._interpreter;
    const exprefNode = resolvedArgs[1];
    const requiredType = this.getTypeName(interpreter.visit(exprefNode, sortedArray[0]));
    if (requiredType !== void 0 && ![
      0,
      2
      /* TYPE_STRING */
    ].includes(requiredType)) {
      throw new Error(`Invalid type: unexpected type (${this.TYPE_NAME_TABLE[requiredType]})`);
    }
    function throwInvalidTypeError(rt, item) {
      throw new Error(
        `Invalid type: expected (${rt.TYPE_NAME_TABLE[requiredType]}), received ${rt.TYPE_NAME_TABLE[rt.getTypeName(item)]}`
      );
    }
    return sortedArray.sort((a, b) => {
      const exprA = interpreter.visit(exprefNode, a);
      const exprB = interpreter.visit(exprefNode, b);
      if (this.getTypeName(exprA) !== requiredType) {
        throwInvalidTypeError(this, exprA);
      } else if (this.getTypeName(exprB) !== requiredType) {
        throwInvalidTypeError(this, exprB);
      }
      if (requiredType === 2) {
        return Text.comparer(exprA, exprB);
      }
      return exprA - exprB;
    });
  };
  functionStartsWith = ([searchable, searchStr]) => {
    return searchable.startsWith(searchStr);
  };
  functionSum = ([inputValue]) => {
    return inputValue.reduce((x, y) => x + y, 0);
  };
  functionToArray = ([inputValue]) => {
    if (this.getTypeName(inputValue) === 3) {
      return inputValue;
    }
    return [inputValue];
  };
  functionToNumber = ([inputValue]) => {
    const typeName = this.getTypeName(inputValue);
    let convertedValue;
    if (typeName === 0) {
      return inputValue;
    }
    if (typeName === 2) {
      convertedValue = +inputValue;
      if (!isNaN(convertedValue)) {
        return convertedValue;
      }
    }
    return null;
  };
  functionToString = ([inputValue]) => {
    if (this.getTypeName(inputValue) === 2) {
      return inputValue;
    }
    return JSON.stringify(inputValue);
  };
  functionTrim = this.createTrimFunction(trim);
  functionTrimLeft = this.createTrimFunction(trimLeft);
  functionTrimRight = this.createTrimFunction(trimRight);
  createTrimFunction(trimFn) {
    return (resolvedArgs) => {
      const subject = resolvedArgs[0];
      const chars = resolvedArgs.length > 1 ? resolvedArgs[1] : void 0;
      return trimFn(subject, chars);
    };
  }
  functionType = ([inputValue]) => {
    switch (this.getTypeName(inputValue)) {
      case 0:
        return "number";
      case 2:
        return "string";
      case 3:
        return "array";
      case 4:
        return "object";
      case 5:
        return "boolean";
      case 7:
        return "null";
      default:
        throw new Error("invalid-type");
    }
  };
  functionZip = (array) => {
    const length = Math.min(...array.map((arr) => arr.length));
    const result = Array(length).fill(null).map((_, index) => array.map((arr) => arr[index]));
    return result;
  };
};
var ScopeChain = class _ScopeChain {
  inner = void 0;
  data = {};
  get currentScopeData() {
    return this.data;
  }
  withScope(data) {
    const outer = new _ScopeChain();
    outer.inner = this;
    outer.data = data;
    return outer;
  }
  getValue(identifier) {
    if (Object.prototype.hasOwnProperty.call(this.data, identifier)) {
      return this.data[identifier];
    }
    if (this.inner) {
      return this.inner.getValue(identifier);
    }
    return null;
  }
};
var emptyScopeChain = new ScopeChain();
var TreeInterpreter = class _TreeInterpreter {
  runtime;
  _rootValue = null;
  _scope;
  constructor() {
    this.runtime = new Runtime(this);
    this._scope = new ScopeChain();
  }
  withScope(scope) {
    const interpreter = new _TreeInterpreter();
    interpreter.runtime._functionTable = this.runtime._functionTable;
    interpreter._rootValue = this._rootValue;
    interpreter._scope = this._scope.withScope(scope);
    return interpreter;
  }
  search(node, value) {
    this._rootValue = value;
    this._scope = emptyScopeChain;
    return this.visit(node, value);
  }
  visit(node, value) {
    switch (node.type) {
      case "Ternary": {
        const condition = this.visit(node.condition, value);
        if (!isFalse(condition)) {
          return this.visit(node.trueExpr, value);
        }
        return this.visit(node.falseExpr, value);
      }
      case "Field":
        const identifier = node.name;
        if (value === null || typeof value !== "object" || Array.isArray(value)) {
          return null;
        }
        return value[identifier] ?? null;
      case "LetExpression": {
        const { bindings, expression } = node;
        let scope = {};
        bindings.forEach((binding) => {
          const reference = this.visit(binding, value);
          scope = {
            ...scope,
            ...reference
          };
        });
        return this.withScope(scope).visit(expression, value);
      }
      case "Binding": {
        const { variable, reference } = node;
        const result = this.visit(reference, value);
        return { [variable]: result };
      }
      case "Variable": {
        const variable = node.name;
        if (!this._scope.getValue(variable) && !Object.prototype.hasOwnProperty.call(this._scope.currentScopeData, variable)) {
          throw new Error(`Error referencing undefined variable ${variable}`);
        }
        return this._scope.getValue(variable);
      }
      case "IndexExpression":
        return this.visit(node.right, this.visit(node.left, value));
      case "Subexpression": {
        const result = this.visit(node.left, value);
        return result != null ? this.visit(node.right, result) ?? null : null;
      }
      case "Index": {
        if (!Array.isArray(value)) {
          return null;
        }
        const index = node.value < 0 ? value.length + node.value : node.value;
        return value[index] ?? null;
      }
      case "Slice": {
        if (!Array.isArray(value) && typeof value !== "string") {
          return null;
        }
        const { start, stop, step } = this.computeSliceParams(value.length, node);
        if (typeof value === "string") {
          const chars = [...value];
          const sliced = this.slice(chars, start, stop, step);
          return sliced.join("");
        } else {
          return this.slice(value, start, stop, step);
        }
      }
      case "Projection": {
        const { left, right } = node;
        let allowString = false;
        if (left.type === "IndexExpression" && left.right.type === "Slice") {
          allowString = true;
        }
        const base = this.visit(left, value);
        if (allowString && typeof base === "string") {
          return this.visit(right, base);
        }
        if (!Array.isArray(base)) {
          return null;
        }
        const collected = [];
        for (const elem of base) {
          const current = this.visit(right, elem);
          if (current !== null) {
            collected.push(current);
          }
        }
        return collected;
      }
      case "ValueProjection": {
        const { left, right } = node;
        const base = this.visit(left, value);
        if (base === null || typeof base !== "object" || Array.isArray(base)) {
          return null;
        }
        const collected = [];
        const values = Object.values(base);
        for (const elem of values) {
          const current = this.visit(right, elem);
          if (current !== null) {
            collected.push(current);
          }
        }
        return collected;
      }
      case "FilterProjection": {
        const { left, right, condition } = node;
        const base = this.visit(left, value);
        if (!Array.isArray(base)) {
          return null;
        }
        const results = [];
        for (const elem of base) {
          const matched = this.visit(condition, elem);
          if (isFalse(matched)) {
            continue;
          }
          const result = this.visit(right, elem);
          if (result !== null) {
            results.push(result);
          }
        }
        return results;
      }
      case "Arithmetic": {
        const first = this.visit(node.left, value);
        const second = this.visit(node.right, value);
        switch (node.operator) {
          case "Plus":
            return add(first, second);
          case "Minus":
            return sub(first, second);
          case "Multiply":
          case "Star":
            return mul(first, second);
          case "Divide":
            return divide(first, second);
          case "Modulo":
            return mod(first, second);
          case "Div":
            return div(first, second);
          default:
            throw new Error(`Syntax error: unknown arithmetic operator: ${node.operator}`);
        }
      }
      case "Unary": {
        const operand = this.visit(node.operand, value);
        switch (node.operator) {
          case "Plus":
            ensureNumbers(operand);
            return operand;
          case "Minus":
            ensureNumbers(operand);
            return -operand;
          default:
            throw new Error(`Syntax error: unknown arithmetic operator: ${node.operator}`);
        }
      }
      case "Comparator": {
        const first = this.visit(node.left, value);
        const second = this.visit(node.right, value);
        switch (node.name) {
          case "EQ":
            return strictDeepEqual(first, second);
          case "NE":
            return !strictDeepEqual(first, second);
        }
        if (typeof first !== "number" || typeof second !== "number") {
          return null;
        }
        switch (node.name) {
          case "GT":
            return first > second;
          case "GTE":
            return first >= second;
          case "LT":
            return first < second;
          case "LTE":
            return first <= second;
        }
      }
      case "Flatten": {
        const original = this.visit(node.child, value);
        return Array.isArray(original) ? original.flat() : null;
      }
      case "Root":
        return this._rootValue;
      case "MultiSelectList": {
        const collected = [];
        for (const child of node.children) {
          collected.push(this.visit(child, value));
        }
        return collected;
      }
      case "MultiSelectHash": {
        const collected = {};
        for (const child of node.children) {
          collected[child.name] = this.visit(child.value, value);
        }
        return collected;
      }
      case "OrExpression": {
        const result = this.visit(node.left, value);
        if (isFalse(result)) {
          return this.visit(node.right, value);
        }
        return result;
      }
      case "AndExpression": {
        const result = this.visit(node.left, value);
        if (isFalse(result)) {
          return result;
        }
        return this.visit(node.right, value);
      }
      case "NotExpression":
        return isFalse(this.visit(node.child, value));
      case "Literal":
        return node.value;
      case "Pipe":
        return this.visit(node.right, this.visit(node.left, value));
      case "Function": {
        const args = [];
        for (const child of node.children) {
          args.push(this.visit(child, value));
        }
        return this.runtime.callFunction(node.name, args);
      }
      case "ExpressionReference":
        return {
          expref: true,
          ...node.child
        };
      case "Current":
      case "Identity":
        return value;
    }
  }
  computeSliceParams(arrayLength, sliceNode) {
    let { start, stop, step } = sliceNode;
    if (step === null) {
      step = 1;
    } else if (step === 0) {
      const error = new Error("Invalid value: slice step cannot be 0");
      error.name = "RuntimeError";
      throw error;
    }
    start = start === null ? step < 0 ? arrayLength - 1 : 0 : this.capSliceRange(arrayLength, start, step);
    stop = stop === null ? step < 0 ? -1 : arrayLength : this.capSliceRange(arrayLength, stop, step);
    return { start, stop, step };
  }
  capSliceRange(arrayLength, actualValue, step) {
    let nextActualValue = actualValue;
    if (nextActualValue < 0) {
      nextActualValue += arrayLength;
      if (nextActualValue < 0) {
        nextActualValue = step < 0 ? -1 : 0;
      }
    } else if (nextActualValue >= arrayLength) {
      nextActualValue = step < 0 ? arrayLength - 1 : arrayLength;
    }
    return nextActualValue;
  }
  slice(collection, start, end, step) {
    const result = [];
    if (step > 0) {
      for (let i = start; i < end; i += step) {
        result.push(collection[i]);
      }
    } else {
      for (let i = start; i > end; i += step) {
        result.push(collection[i]);
      }
    }
    return result;
  }
};
var TreeInterpreterInstance = new TreeInterpreter();
var TreeInterpreter_default = TreeInterpreterInstance;
function compile(expression, options) {
  const nodeTree = Parser_default.parse(expression, options);
  return nodeTree;
}
var TreeInterpreter2 = TreeInterpreter_default;

// node_modules/hyperdispatch/runtime.mjs
var import_compact_encoding = __toESM(require_compact_encoding2(), 1);
var import_b4a = __toESM(require_b4a(), 1);
var import_nanoassert = __toESM(require_nanoassert(), 1);
var import_errors = __toESM(require_errors2(), 1);

// node_modules/hyperschema/runtime.mjs
var import_compact_encoding2 = __toESM(require_compact_encoding(), 1);

// node_modules/schema-sheets/spec/dispatch/messages.js
var VERSION = 1;
var version = VERSION;
var encoding0 = {
  preencode(state, m) {
    state.end++;
    if (m.name) import_compact_encoding2.default.string.preencode(state, m.name);
  },
  encode(state, m) {
    const flags = m.name ? 1 : 0;
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.name) import_compact_encoding2.default.string.encode(state, m.name);
  },
  decode(state) {
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      name: (flags & 1) !== 0 ? import_compact_encoding2.default.string.decode(state) : null
    };
  }
};
var encoding1 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.json.preencode(state, m.jsonSchema);
    import_compact_encoding2.default.string.preencode(state, m.name);
    state.end++;
    if (m.metadata) import_compact_encoding2.default.json.preencode(state, m.metadata);
  },
  encode(state, m) {
    const flags = m.metadata ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.json.encode(state, m.jsonSchema);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.metadata) import_compact_encoding2.default.json.encode(state, m.metadata);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.json.decode(state);
    const r2 = import_compact_encoding2.default.string.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      schemaId: r0,
      jsonSchema: r1,
      name: r2,
      metadata: (flags & 1) !== 0 ? import_compact_encoding2.default.json.decode(state) : null
    };
  }
};
var encoding2 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.schemaId);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    return {
      schemaId: r0
    };
  }
};
var encoding3 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uuid);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.json.preencode(state, m.json);
    import_compact_encoding2.default.uint.preencode(state, m.time);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uuid);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.json.encode(state, m.json);
    import_compact_encoding2.default.uint.encode(state, m.time);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.json.decode(state);
    const r3 = import_compact_encoding2.default.uint.decode(state);
    return {
      uuid: r0,
      schemaId: r1,
      json: r2,
      time: r3
    };
  }
};
var encoding4 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uuid);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uuid);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    return {
      uuid: r0
    };
  }
};
var encoding5 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.queryId);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.string.preencode(state, m.name);
    import_compact_encoding2.default.string.preencode(state, m.JMESPathQuery);
    state.end++;
  },
  encode(state, m) {
    const flags = m.listView ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.queryId);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.string.encode(state, m.JMESPathQuery);
    import_compact_encoding2.default.uint.encode(state, flags);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.string.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      queryId: r0,
      schemaId: r1,
      name: r2,
      JMESPathQuery: r3,
      listView: (flags & 1) !== 0
    };
  }
};
var encoding6 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.queryId);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.queryId);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    return {
      queryId: r0
    };
  }
};
var encoding7 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uischemaId);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.json.preencode(state, m.uiSchema);
    import_compact_encoding2.default.string.preencode(state, m.name);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uischemaId);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.json.encode(state, m.uiSchema);
    import_compact_encoding2.default.string.encode(state, m.name);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.json.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    return {
      uischemaId: r0,
      schemaId: r1,
      uiSchema: r2,
      name: r3
    };
  }
};
var encoding8 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uischemaId);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uischemaId);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    return {
      uischemaId: r0
    };
  }
};
var encoding9 = {
  preencode(state, m) {
    import_compact_encoding2.default.fixed32.preencode(state, m.key);
    state.end++;
    if (m.name) import_compact_encoding2.default.string.preencode(state, m.name);
  },
  encode(state, m) {
    const flags = (m.indexer ? 1 : 0) | (m.name ? 2 : 0);
    import_compact_encoding2.default.fixed32.encode(state, m.key);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.name) import_compact_encoding2.default.string.encode(state, m.name);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.fixed32.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      key: r0,
      indexer: (flags & 1) !== 0,
      name: (flags & 2) !== 0 ? import_compact_encoding2.default.string.decode(state) : null
    };
  }
};
var encoding10 = encoding1;
var encoding11 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uuid);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.uint.preencode(state, m.time);
    import_compact_encoding2.default.json.preencode(state, m.json);
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uuid);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.uint.encode(state, m.time);
    import_compact_encoding2.default.json.encode(state, m.json);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.uint.decode(state);
    const r3 = import_compact_encoding2.default.json.decode(state);
    const r4 = import_compact_encoding2.default.fixed32.decode(state);
    return {
      uuid: r0,
      schemaId: r1,
      time: r2,
      json: r3,
      memberkey: r4
    };
  }
};
var encoding12 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.queryId);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.string.preencode(state, m.name);
    import_compact_encoding2.default.string.preencode(state, m.JMESPathQuery);
    state.end++;
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    const flags = m.listView ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.queryId);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.string.encode(state, m.JMESPathQuery);
    import_compact_encoding2.default.uint.encode(state, flags);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.string.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      queryId: r0,
      schemaId: r1,
      name: r2,
      JMESPathQuery: r3,
      listView: (flags & 1) !== 0,
      memberkey: import_compact_encoding2.default.fixed32.decode(state)
    };
  }
};
var encoding13 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uischemaId);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.json.preencode(state, m.uiSchema);
    import_compact_encoding2.default.string.preencode(state, m.name);
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uischemaId);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.json.encode(state, m.uiSchema);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.json.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    const r4 = import_compact_encoding2.default.fixed32.decode(state);
    return {
      uischemaId: r0,
      schemaId: r1,
      uiSchema: r2,
      name: r3,
      memberkey: r4
    };
  }
};
var encoding14 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.attestationUuid);
    import_compact_encoding2.default.string.preencode(state, m.rowUuid);
    import_compact_encoding2.default.uint.preencode(state, m.time);
    import_compact_encoding2.default.buffer.preencode(state, m.proof);
    state.end++;
    if (m.keetUsername) import_compact_encoding2.default.string.preencode(state, m.keetUsername);
  },
  encode(state, m) {
    const flags = m.keetUsername ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.attestationUuid);
    import_compact_encoding2.default.string.encode(state, m.rowUuid);
    import_compact_encoding2.default.uint.encode(state, m.time);
    import_compact_encoding2.default.buffer.encode(state, m.proof);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.keetUsername) import_compact_encoding2.default.string.encode(state, m.keetUsername);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.uint.decode(state);
    const r3 = import_compact_encoding2.default.buffer.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      attestationUuid: r0,
      rowUuid: r1,
      time: r2,
      proof: r3,
      keetUsername: (flags & 1) !== 0 ? import_compact_encoding2.default.string.decode(state) : null
    };
  }
};
var encoding15 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.attestationUuid);
    import_compact_encoding2.default.string.preencode(state, m.rowUuid);
    import_compact_encoding2.default.uint.preencode(state, m.time);
    import_compact_encoding2.default.buffer.preencode(state, m.proof);
    state.end++;
    if (m.keetUsername) import_compact_encoding2.default.string.preencode(state, m.keetUsername);
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    const flags = m.keetUsername ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.attestationUuid);
    import_compact_encoding2.default.string.encode(state, m.rowUuid);
    import_compact_encoding2.default.uint.encode(state, m.time);
    import_compact_encoding2.default.buffer.encode(state, m.proof);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.keetUsername) import_compact_encoding2.default.string.encode(state, m.keetUsername);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.uint.decode(state);
    const r3 = import_compact_encoding2.default.buffer.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      attestationUuid: r0,
      rowUuid: r1,
      time: r2,
      proof: r3,
      keetUsername: (flags & 1) !== 0 ? import_compact_encoding2.default.string.decode(state) : null,
      memberkey: import_compact_encoding2.default.fixed32.decode(state)
    };
  }
};
function setVersion(v) {
  version = v;
}
function getEncoding(name) {
  switch (name) {
    case "@sheets/update-member":
      return encoding0;
    case "@sheets/set-named-schema":
      return encoding1;
    case "@sheets/delete-named-schema":
      return encoding2;
    case "@sheets/set-row":
      return encoding3;
    case "@sheets/delete-row":
      return encoding4;
    case "@sheets/set-query":
      return encoding5;
    case "@sheets/delete-query":
      return encoding6;
    case "@sheets/set-uischema":
      return encoding7;
    case "@sheets/delete-uischema":
      return encoding8;
    case "@sheets/member":
      return encoding9;
    case "@sheets/jsonschema":
      return encoding10;
    case "@sheets/row":
      return encoding11;
    case "@sheets/query":
      return encoding12;
    case "@sheets/uischema":
      return encoding13;
    case "@sheets/add-row-attestation":
      return encoding14;
    case "@sheets/row-attestation":
      return encoding15;
    default:
      throw new Error("Encoder not found " + name);
  }
}

// node_modules/schema-sheets/spec/dispatch/index.js
var defaultVersion = version;
var Router = class {
  constructor() {
    this._handler0 = null;
    this._handler1 = null;
    this._handler2 = null;
    this._handler3 = null;
    this._handler4 = null;
    this._handler5 = null;
    this._handler6 = null;
    this._handler7 = null;
    this._handler8 = null;
    this._handler9 = null;
    this._missing = 10;
  }
  add(name, handler) {
    switch (name) {
      case "@sheets/update-member":
        this._handler0 = handler;
        break;
      case "@sheets/set-named-schema":
        this._handler1 = handler;
        break;
      case "@sheets/delete-named-schema":
        this._handler2 = handler;
        break;
      case "@sheets/set-row":
        this._handler3 = handler;
        break;
      case "@sheets/delete-row":
        this._handler4 = handler;
        break;
      case "@sheets/set-query":
        this._handler5 = handler;
        break;
      case "@sheets/delete-query":
        this._handler6 = handler;
        break;
      case "@sheets/set-uischema":
        this._handler7 = handler;
        break;
      case "@sheets/delete-uischema":
        this._handler8 = handler;
        break;
      case "@sheets/add-row-attestation":
        this._handler9 = handler;
        break;
      default:
        throw new Error("Cannot register a handler for a nonexistent route: " + name);
    }
    this._missing--;
  }
  _checkAll() {
    (0, import_nanoassert.default)(this._handler0 !== null, 'Missing handler for "@sheets/update-member"');
    (0, import_nanoassert.default)(this._handler1 !== null, 'Missing handler for "@sheets/set-named-schema"');
    (0, import_nanoassert.default)(this._handler2 !== null, 'Missing handler for "@sheets/delete-named-schema"');
    (0, import_nanoassert.default)(this._handler3 !== null, 'Missing handler for "@sheets/set-row"');
    (0, import_nanoassert.default)(this._handler4 !== null, 'Missing handler for "@sheets/delete-row"');
    (0, import_nanoassert.default)(this._handler5 !== null, 'Missing handler for "@sheets/set-query"');
    (0, import_nanoassert.default)(this._handler6 !== null, 'Missing handler for "@sheets/delete-query"');
    (0, import_nanoassert.default)(this._handler7 !== null, 'Missing handler for "@sheets/set-uischema"');
    (0, import_nanoassert.default)(this._handler8 !== null, 'Missing handler for "@sheets/delete-uischema"');
    (0, import_nanoassert.default)(this._handler9 !== null, 'Missing handler for "@sheets/add-row-attestation"');
  }
  async dispatch(message, context) {
    if (this._missing > 0) {
      this._checkAll();
    }
    setVersion(defaultVersion);
    const op = import_b4a.default.isBuffer(message) ? decode(message) : message;
    switch (op.id) {
      case 0:
        return this._handler0(op.value, context);
      case 1:
        return this._handler1(op.value, context);
      case 2:
        return this._handler2(op.value, context);
      case 3:
        return this._handler3(op.value, context);
      case 4:
        return this._handler4(op.value, context);
      case 5:
        return this._handler5(op.value, context);
      case 6:
        return this._handler6(op.value, context);
      case 7:
        return this._handler7(op.value, context);
      case 8:
        return this._handler8(op.value, context);
      case 9:
        return this._handler9(op.value, context);
      default:
        throw new Error("Handler not found for ID:" + op.id);
    }
  }
};
function encode(name, message, { version: version3 = defaultVersion } = {}) {
  const state = { buffer: null, start: 0, end: 0 };
  const route = getRouteByName(name);
  setVersion(version3);
  import_compact_encoding.default.uint.preencode(state, route.id);
  route.enc.preencode(state, message);
  state.buffer = import_b4a.default.allocUnsafe(state.end);
  import_compact_encoding.default.uint.encode(state, route.id);
  route.enc.encode(state, message);
  return state.buffer;
}
function decode(buffer, { version: version3 = defaultVersion } = {}) {
  const state = { buffer, start: 0, end: buffer.length };
  const id = import_compact_encoding.default.uint.decode(state);
  const route = getRouteById(id);
  setVersion(version3);
  const value = route.enc.decode(state);
  return { id, name: route.name, value };
}
var route0 = {
  name: "@sheets/update-member",
  id: 0,
  enc: getEncoding("@sheets/update-member")
};
var route1 = {
  name: "@sheets/set-named-schema",
  id: 1,
  enc: getEncoding("@sheets/set-named-schema")
};
var route2 = {
  name: "@sheets/delete-named-schema",
  id: 2,
  enc: getEncoding("@sheets/delete-named-schema")
};
var route3 = {
  name: "@sheets/set-row",
  id: 3,
  enc: getEncoding("@sheets/set-row")
};
var route4 = {
  name: "@sheets/delete-row",
  id: 4,
  enc: getEncoding("@sheets/delete-row")
};
var route5 = {
  name: "@sheets/set-query",
  id: 5,
  enc: getEncoding("@sheets/set-query")
};
var route6 = {
  name: "@sheets/delete-query",
  id: 6,
  enc: getEncoding("@sheets/delete-query")
};
var route7 = {
  name: "@sheets/set-uischema",
  id: 7,
  enc: getEncoding("@sheets/set-uischema")
};
var route8 = {
  name: "@sheets/delete-uischema",
  id: 8,
  enc: getEncoding("@sheets/delete-uischema")
};
var route9 = {
  name: "@sheets/add-row-attestation",
  id: 9,
  enc: getEncoding("@sheets/add-row-attestation")
};
function getRouteByName(name) {
  switch (name) {
    case "@sheets/update-member":
      return route0;
    case "@sheets/set-named-schema":
      return route1;
    case "@sheets/delete-named-schema":
      return route2;
    case "@sheets/set-row":
      return route3;
    case "@sheets/delete-row":
      return route4;
    case "@sheets/set-query":
      return route5;
    case "@sheets/delete-query":
      return route6;
    case "@sheets/set-uischema":
      return route7;
    case "@sheets/delete-uischema":
      return route8;
    case "@sheets/add-row-attestation":
      return route9;
    default:
      throw new Error("Handler not found for name: " + name);
  }
}
function getRouteById(id) {
  switch (id) {
    case 0:
      return route0;
    case 1:
      return route1;
    case 2:
      return route2;
    case 3:
      return route3;
    case 4:
      return route4;
    case 5:
      return route5;
    case 6:
      return route6;
    case 7:
      return route7;
    case 8:
      return route8;
    case 9:
      return route9;
    default:
      throw new Error("Handler not found for ID: " + id);
  }
}

// node_modules/hyperdb/runtime.mjs
var import_compact_encoding3 = __toESM(require_compact_encoding(), 1);
var import_b4a2 = __toESM(require_b4a(), 1);
var import_index_encoder = __toESM(require_index_encoder(), 1);

// node_modules/schema-sheets/spec/db/messages.js
var VERSION2 = 1;
var version2 = VERSION2;
var encoding02 = {
  preencode(state, m) {
    state.end++;
    if (m.name) import_compact_encoding2.default.string.preencode(state, m.name);
  },
  encode(state, m) {
    const flags = m.name ? 1 : 0;
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.name) import_compact_encoding2.default.string.encode(state, m.name);
  },
  decode(state) {
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      name: (flags & 1) !== 0 ? import_compact_encoding2.default.string.decode(state) : null
    };
  }
};
var encoding16 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.json.preencode(state, m.jsonSchema);
    import_compact_encoding2.default.string.preencode(state, m.name);
    state.end++;
    if (m.metadata) import_compact_encoding2.default.json.preencode(state, m.metadata);
  },
  encode(state, m) {
    const flags = m.metadata ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.json.encode(state, m.jsonSchema);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.metadata) import_compact_encoding2.default.json.encode(state, m.metadata);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.json.decode(state);
    const r2 = import_compact_encoding2.default.string.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      schemaId: r0,
      jsonSchema: r1,
      name: r2,
      metadata: (flags & 1) !== 0 ? import_compact_encoding2.default.json.decode(state) : null
    };
  }
};
var encoding22 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.schemaId);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    return {
      schemaId: r0
    };
  }
};
var encoding32 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uuid);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.json.preencode(state, m.json);
    import_compact_encoding2.default.uint.preencode(state, m.time);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uuid);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.json.encode(state, m.json);
    import_compact_encoding2.default.uint.encode(state, m.time);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.json.decode(state);
    const r3 = import_compact_encoding2.default.uint.decode(state);
    return {
      uuid: r0,
      schemaId: r1,
      json: r2,
      time: r3
    };
  }
};
var encoding42 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uuid);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uuid);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    return {
      uuid: r0
    };
  }
};
var encoding52 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.queryId);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.string.preencode(state, m.name);
    import_compact_encoding2.default.string.preencode(state, m.JMESPathQuery);
    state.end++;
  },
  encode(state, m) {
    const flags = m.listView ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.queryId);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.string.encode(state, m.JMESPathQuery);
    import_compact_encoding2.default.uint.encode(state, flags);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.string.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      queryId: r0,
      schemaId: r1,
      name: r2,
      JMESPathQuery: r3,
      listView: (flags & 1) !== 0
    };
  }
};
var encoding62 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.queryId);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.queryId);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    return {
      queryId: r0
    };
  }
};
var encoding72 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uischemaId);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.json.preencode(state, m.uiSchema);
    import_compact_encoding2.default.string.preencode(state, m.name);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uischemaId);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.json.encode(state, m.uiSchema);
    import_compact_encoding2.default.string.encode(state, m.name);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.json.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    return {
      uischemaId: r0,
      schemaId: r1,
      uiSchema: r2,
      name: r3
    };
  }
};
var encoding82 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uischemaId);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uischemaId);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    return {
      uischemaId: r0
    };
  }
};
var encoding92 = {
  preencode(state, m) {
    import_compact_encoding2.default.fixed32.preencode(state, m.key);
    state.end++;
    if (m.name) import_compact_encoding2.default.string.preencode(state, m.name);
  },
  encode(state, m) {
    const flags = (m.indexer ? 1 : 0) | (m.name ? 2 : 0);
    import_compact_encoding2.default.fixed32.encode(state, m.key);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.name) import_compact_encoding2.default.string.encode(state, m.name);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.fixed32.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      key: r0,
      indexer: (flags & 1) !== 0,
      name: (flags & 2) !== 0 ? import_compact_encoding2.default.string.decode(state) : null
    };
  }
};
var encoding102 = encoding16;
var encoding112 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uuid);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.uint.preencode(state, m.time);
    import_compact_encoding2.default.json.preencode(state, m.json);
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uuid);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.uint.encode(state, m.time);
    import_compact_encoding2.default.json.encode(state, m.json);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.uint.decode(state);
    const r3 = import_compact_encoding2.default.json.decode(state);
    const r4 = import_compact_encoding2.default.fixed32.decode(state);
    return {
      uuid: r0,
      schemaId: r1,
      time: r2,
      json: r3,
      memberkey: r4
    };
  }
};
var encoding122 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.queryId);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.string.preencode(state, m.name);
    import_compact_encoding2.default.string.preencode(state, m.JMESPathQuery);
    state.end++;
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    const flags = m.listView ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.queryId);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.string.encode(state, m.JMESPathQuery);
    import_compact_encoding2.default.uint.encode(state, flags);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.string.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      queryId: r0,
      schemaId: r1,
      name: r2,
      JMESPathQuery: r3,
      listView: (flags & 1) !== 0,
      memberkey: import_compact_encoding2.default.fixed32.decode(state)
    };
  }
};
var encoding132 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.uischemaId);
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.json.preencode(state, m.uiSchema);
    import_compact_encoding2.default.string.preencode(state, m.name);
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.uischemaId);
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.json.encode(state, m.uiSchema);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.json.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    const r4 = import_compact_encoding2.default.fixed32.decode(state);
    return {
      uischemaId: r0,
      schemaId: r1,
      uiSchema: r2,
      name: r3,
      memberkey: r4
    };
  }
};
var encoding142 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.attestationUuid);
    import_compact_encoding2.default.string.preencode(state, m.rowUuid);
    import_compact_encoding2.default.uint.preencode(state, m.time);
    import_compact_encoding2.default.buffer.preencode(state, m.proof);
    state.end++;
    if (m.keetUsername) import_compact_encoding2.default.string.preencode(state, m.keetUsername);
  },
  encode(state, m) {
    const flags = m.keetUsername ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.attestationUuid);
    import_compact_encoding2.default.string.encode(state, m.rowUuid);
    import_compact_encoding2.default.uint.encode(state, m.time);
    import_compact_encoding2.default.buffer.encode(state, m.proof);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.keetUsername) import_compact_encoding2.default.string.encode(state, m.keetUsername);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.uint.decode(state);
    const r3 = import_compact_encoding2.default.buffer.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      attestationUuid: r0,
      rowUuid: r1,
      time: r2,
      proof: r3,
      keetUsername: (flags & 1) !== 0 ? import_compact_encoding2.default.string.decode(state) : null
    };
  }
};
var encoding152 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.attestationUuid);
    import_compact_encoding2.default.string.preencode(state, m.rowUuid);
    import_compact_encoding2.default.uint.preencode(state, m.time);
    import_compact_encoding2.default.buffer.preencode(state, m.proof);
    state.end++;
    if (m.keetUsername) import_compact_encoding2.default.string.preencode(state, m.keetUsername);
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    const flags = m.keetUsername ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.attestationUuid);
    import_compact_encoding2.default.string.encode(state, m.rowUuid);
    import_compact_encoding2.default.uint.encode(state, m.time);
    import_compact_encoding2.default.buffer.encode(state, m.proof);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.keetUsername) import_compact_encoding2.default.string.encode(state, m.keetUsername);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r0 = import_compact_encoding2.default.string.decode(state);
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.uint.decode(state);
    const r3 = import_compact_encoding2.default.buffer.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      attestationUuid: r0,
      rowUuid: r1,
      time: r2,
      proof: r3,
      keetUsername: (flags & 1) !== 0 ? import_compact_encoding2.default.string.decode(state) : null,
      memberkey: import_compact_encoding2.default.fixed32.decode(state)
    };
  }
};
var encoding162 = {
  preencode(state, m) {
    state.end++;
    if (m.name) import_compact_encoding2.default.string.preencode(state, m.name);
  },
  encode(state, m) {
    const flags = (m.indexer ? 1 : 0) | (m.name ? 2 : 0);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.name) import_compact_encoding2.default.string.encode(state, m.name);
  },
  decode(state) {
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      key: null,
      indexer: (flags & 1) !== 0,
      name: (flags & 2) !== 0 ? import_compact_encoding2.default.string.decode(state) : null
    };
  }
};
var encoding17 = {
  preencode(state, m) {
    import_compact_encoding2.default.json.preencode(state, m.jsonSchema);
    import_compact_encoding2.default.string.preencode(state, m.name);
    state.end++;
    if (m.metadata) import_compact_encoding2.default.json.preencode(state, m.metadata);
  },
  encode(state, m) {
    const flags = m.metadata ? 1 : 0;
    import_compact_encoding2.default.json.encode(state, m.jsonSchema);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.metadata) import_compact_encoding2.default.json.encode(state, m.metadata);
  },
  decode(state) {
    const r1 = import_compact_encoding2.default.json.decode(state);
    const r2 = import_compact_encoding2.default.string.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      schemaId: null,
      jsonSchema: r1,
      name: r2,
      metadata: (flags & 1) !== 0 ? import_compact_encoding2.default.json.decode(state) : null
    };
  }
};
var encoding18 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.uint.preencode(state, m.time);
    import_compact_encoding2.default.json.preencode(state, m.json);
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.uint.encode(state, m.time);
    import_compact_encoding2.default.json.encode(state, m.json);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.uint.decode(state);
    const r3 = import_compact_encoding2.default.json.decode(state);
    const r4 = import_compact_encoding2.default.fixed32.decode(state);
    return {
      uuid: null,
      schemaId: r1,
      time: r2,
      json: r3,
      memberkey: r4
    };
  }
};
var encoding19 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.string.preencode(state, m.name);
    import_compact_encoding2.default.string.preencode(state, m.JMESPathQuery);
    state.end++;
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    const flags = m.listView ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.string.encode(state, m.JMESPathQuery);
    import_compact_encoding2.default.uint.encode(state, flags);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.string.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      queryId: null,
      schemaId: r1,
      name: r2,
      JMESPathQuery: r3,
      listView: (flags & 1) !== 0,
      memberkey: import_compact_encoding2.default.fixed32.decode(state)
    };
  }
};
var encoding20 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.schemaId);
    import_compact_encoding2.default.json.preencode(state, m.uiSchema);
    import_compact_encoding2.default.string.preencode(state, m.name);
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    import_compact_encoding2.default.string.encode(state, m.schemaId);
    import_compact_encoding2.default.json.encode(state, m.uiSchema);
    import_compact_encoding2.default.string.encode(state, m.name);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.json.decode(state);
    const r3 = import_compact_encoding2.default.string.decode(state);
    const r4 = import_compact_encoding2.default.fixed32.decode(state);
    return {
      uischemaId: null,
      schemaId: r1,
      uiSchema: r2,
      name: r3,
      memberkey: r4
    };
  }
};
var encoding21 = {
  preencode(state, m) {
    import_compact_encoding2.default.string.preencode(state, m.rowUuid);
    import_compact_encoding2.default.uint.preencode(state, m.time);
    import_compact_encoding2.default.buffer.preencode(state, m.proof);
    state.end++;
    if (m.keetUsername) import_compact_encoding2.default.string.preencode(state, m.keetUsername);
    import_compact_encoding2.default.fixed32.preencode(state, m.memberkey);
  },
  encode(state, m) {
    const flags = m.keetUsername ? 1 : 0;
    import_compact_encoding2.default.string.encode(state, m.rowUuid);
    import_compact_encoding2.default.uint.encode(state, m.time);
    import_compact_encoding2.default.buffer.encode(state, m.proof);
    import_compact_encoding2.default.uint.encode(state, flags);
    if (m.keetUsername) import_compact_encoding2.default.string.encode(state, m.keetUsername);
    import_compact_encoding2.default.fixed32.encode(state, m.memberkey);
  },
  decode(state) {
    const r1 = import_compact_encoding2.default.string.decode(state);
    const r2 = import_compact_encoding2.default.uint.decode(state);
    const r3 = import_compact_encoding2.default.buffer.decode(state);
    const flags = import_compact_encoding2.default.uint.decode(state);
    return {
      attestationUuid: null,
      rowUuid: r1,
      time: r2,
      proof: r3,
      keetUsername: (flags & 1) !== 0 ? import_compact_encoding2.default.string.decode(state) : null,
      memberkey: import_compact_encoding2.default.fixed32.decode(state)
    };
  }
};
function setVersion2(v) {
  version2 = v;
}
function getEncoding2(name) {
  switch (name) {
    case "@sheets/update-member":
      return encoding02;
    case "@sheets/set-named-schema":
      return encoding16;
    case "@sheets/delete-named-schema":
      return encoding22;
    case "@sheets/set-row":
      return encoding32;
    case "@sheets/delete-row":
      return encoding42;
    case "@sheets/set-query":
      return encoding52;
    case "@sheets/delete-query":
      return encoding62;
    case "@sheets/set-uischema":
      return encoding72;
    case "@sheets/delete-uischema":
      return encoding82;
    case "@sheets/member":
      return encoding92;
    case "@sheets/jsonschema":
      return encoding102;
    case "@sheets/row":
      return encoding112;
    case "@sheets/query":
      return encoding122;
    case "@sheets/uischema":
      return encoding132;
    case "@sheets/add-row-attestation":
      return encoding142;
    case "@sheets/row-attestation":
      return encoding152;
    case "@sheets/member/hyperdb#0":
      return encoding162;
    case "@sheets/jsonschema/hyperdb#1":
      return encoding17;
    case "@sheets/row/hyperdb#2":
      return encoding18;
    case "@sheets/query/hyperdb#3":
      return encoding19;
    case "@sheets/uischema/hyperdb#4":
      return encoding20;
    case "@sheets/row-attestation/hyperdb#5":
      return encoding21;
    default:
      throw new Error("Encoder not found " + name);
  }
}

// node_modules/schema-sheets/spec/db/index.js
var collection0_key = new import_index_encoder.default([
  import_index_encoder.default.BUFFER
], { prefix: 0 });
function collection0_indexify(record) {
  const a = record.key;
  return a === void 0 ? [] : [a];
}
var collection0_enc = getEncoding2("@sheets/member/hyperdb#0");
function collection0_reconstruct(version3, keyBuf, valueBuf) {
  const key = collection0_key.decode(keyBuf);
  setVersion2(version3);
  const record = import_compact_encoding3.default.decode(collection0_enc, valueBuf);
  record.key = key[0];
  return record;
}
function collection0_reconstruct_key(keyBuf) {
  const key = collection0_key.decode(keyBuf);
  return {
    key: key[0]
  };
}
var collection0 = {
  name: "@sheets/members",
  id: 0,
  encodeKey(record) {
    const key = [record.key];
    return collection0_key.encode(key);
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return collection0_key.encodeRange({
      gt: gt ? collection0_indexify(gt) : null,
      lt: lt ? collection0_indexify(lt) : null,
      gte: gte ? collection0_indexify(gte) : null,
      lte: lte ? collection0_indexify(lte) : null
    });
  },
  encodeValue(version3, record) {
    setVersion2(version3);
    return import_compact_encoding3.default.encode(collection0_enc, record);
  },
  trigger: null,
  reconstruct: collection0_reconstruct,
  reconstructKey: collection0_reconstruct_key,
  indexes: []
};
var collection1_key = new import_index_encoder.default([
  import_index_encoder.default.STRING
], { prefix: 1 });
function collection1_indexify(record) {
  const a = record.schemaId;
  return a === void 0 ? [] : [a];
}
var collection1_enc = getEncoding2("@sheets/jsonschema/hyperdb#1");
function collection1_reconstruct(version3, keyBuf, valueBuf) {
  const key = collection1_key.decode(keyBuf);
  setVersion2(version3);
  const record = import_compact_encoding3.default.decode(collection1_enc, valueBuf);
  record.schemaId = key[0];
  return record;
}
function collection1_reconstruct_key(keyBuf) {
  const key = collection1_key.decode(keyBuf);
  return {
    schemaId: key[0]
  };
}
var collection1 = {
  name: "@sheets/jsonschema",
  id: 1,
  encodeKey(record) {
    const key = [record.schemaId];
    return collection1_key.encode(key);
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return collection1_key.encodeRange({
      gt: gt ? collection1_indexify(gt) : null,
      lt: lt ? collection1_indexify(lt) : null,
      gte: gte ? collection1_indexify(gte) : null,
      lte: lte ? collection1_indexify(lte) : null
    });
  },
  encodeValue(version3, record) {
    setVersion2(version3);
    return import_compact_encoding3.default.encode(collection1_enc, record);
  },
  trigger: null,
  reconstruct: collection1_reconstruct,
  reconstructKey: collection1_reconstruct_key,
  indexes: []
};
var collection2_key = new import_index_encoder.default([
  import_index_encoder.default.STRING
], { prefix: 2 });
function collection2_indexify(record) {
  const a = record.uuid;
  return a === void 0 ? [] : [a];
}
var collection2_enc = getEncoding2("@sheets/row/hyperdb#2");
function collection2_reconstruct(version3, keyBuf, valueBuf) {
  const key = collection2_key.decode(keyBuf);
  setVersion2(version3);
  const record = import_compact_encoding3.default.decode(collection2_enc, valueBuf);
  record.uuid = key[0];
  return record;
}
function collection2_reconstruct_key(keyBuf) {
  const key = collection2_key.decode(keyBuf);
  return {
    uuid: key[0]
  };
}
var collection2 = {
  name: "@sheets/row",
  id: 2,
  encodeKey(record) {
    const key = [record.uuid];
    return collection2_key.encode(key);
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return collection2_key.encodeRange({
      gt: gt ? collection2_indexify(gt) : null,
      lt: lt ? collection2_indexify(lt) : null,
      gte: gte ? collection2_indexify(gte) : null,
      lte: lte ? collection2_indexify(lte) : null
    });
  },
  encodeValue(version3, record) {
    setVersion2(version3);
    return import_compact_encoding3.default.encode(collection2_enc, record);
  },
  trigger: null,
  reconstruct: collection2_reconstruct,
  reconstructKey: collection2_reconstruct_key,
  indexes: []
};
var collection3_key = new import_index_encoder.default([
  import_index_encoder.default.STRING
], { prefix: 3 });
function collection3_indexify(record) {
  const a = record.queryId;
  return a === void 0 ? [] : [a];
}
var collection3_enc = getEncoding2("@sheets/query/hyperdb#3");
function collection3_reconstruct(version3, keyBuf, valueBuf) {
  const key = collection3_key.decode(keyBuf);
  setVersion2(version3);
  const record = import_compact_encoding3.default.decode(collection3_enc, valueBuf);
  record.queryId = key[0];
  return record;
}
function collection3_reconstruct_key(keyBuf) {
  const key = collection3_key.decode(keyBuf);
  return {
    queryId: key[0]
  };
}
var collection3 = {
  name: "@sheets/queries",
  id: 3,
  encodeKey(record) {
    const key = [record.queryId];
    return collection3_key.encode(key);
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return collection3_key.encodeRange({
      gt: gt ? collection3_indexify(gt) : null,
      lt: lt ? collection3_indexify(lt) : null,
      gte: gte ? collection3_indexify(gte) : null,
      lte: lte ? collection3_indexify(lte) : null
    });
  },
  encodeValue(version3, record) {
    setVersion2(version3);
    return import_compact_encoding3.default.encode(collection3_enc, record);
  },
  trigger: null,
  reconstruct: collection3_reconstruct,
  reconstructKey: collection3_reconstruct_key,
  indexes: []
};
var collection4_key = new import_index_encoder.default([
  import_index_encoder.default.STRING
], { prefix: 4 });
function collection4_indexify(record) {
  const a = record.uischemaId;
  return a === void 0 ? [] : [a];
}
var collection4_enc = getEncoding2("@sheets/uischema/hyperdb#4");
function collection4_reconstruct(version3, keyBuf, valueBuf) {
  const key = collection4_key.decode(keyBuf);
  setVersion2(version3);
  const record = import_compact_encoding3.default.decode(collection4_enc, valueBuf);
  record.uischemaId = key[0];
  return record;
}
function collection4_reconstruct_key(keyBuf) {
  const key = collection4_key.decode(keyBuf);
  return {
    uischemaId: key[0]
  };
}
var collection4 = {
  name: "@sheets/uischemas",
  id: 4,
  encodeKey(record) {
    const key = [record.uischemaId];
    return collection4_key.encode(key);
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return collection4_key.encodeRange({
      gt: gt ? collection4_indexify(gt) : null,
      lt: lt ? collection4_indexify(lt) : null,
      gte: gte ? collection4_indexify(gte) : null,
      lte: lte ? collection4_indexify(lte) : null
    });
  },
  encodeValue(version3, record) {
    setVersion2(version3);
    return import_compact_encoding3.default.encode(collection4_enc, record);
  },
  trigger: null,
  reconstruct: collection4_reconstruct,
  reconstructKey: collection4_reconstruct_key,
  indexes: []
};
var collection5_key = new import_index_encoder.default([
  import_index_encoder.default.STRING
], { prefix: 5 });
function collection5_indexify(record) {
  const a = record.attestationUuid;
  return a === void 0 ? [] : [a];
}
var collection5_enc = getEncoding2("@sheets/row-attestation/hyperdb#5");
function collection5_reconstruct(version3, keyBuf, valueBuf) {
  const key = collection5_key.decode(keyBuf);
  setVersion2(version3);
  const record = import_compact_encoding3.default.decode(collection5_enc, valueBuf);
  record.attestationUuid = key[0];
  return record;
}
function collection5_reconstruct_key(keyBuf) {
  const key = collection5_key.decode(keyBuf);
  return {
    attestationUuid: key[0]
  };
}
var collection5 = {
  name: "@sheets/row-attestations",
  id: 5,
  encodeKey(record) {
    const key = [record.attestationUuid];
    return collection5_key.encode(key);
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return collection5_key.encodeRange({
      gt: gt ? collection5_indexify(gt) : null,
      lt: lt ? collection5_indexify(lt) : null,
      gte: gte ? collection5_indexify(gte) : null,
      lte: lte ? collection5_indexify(lte) : null
    });
  },
  encodeValue(version3, record) {
    setVersion2(version3);
    return import_compact_encoding3.default.encode(collection5_enc, record);
  },
  trigger: null,
  reconstruct: collection5_reconstruct,
  reconstructKey: collection5_reconstruct_key,
  indexes: []
};
var index6_key = new import_index_encoder.default([
  import_index_encoder.default.STRING,
  import_index_encoder.default.STRING
], { prefix: 6 });
function index6_indexify(record) {
  const arr = [];
  const a0 = record.schemaId;
  if (a0 === void 0) return arr;
  arr.push(a0);
  const a1 = record.queryId;
  if (a1 === void 0) return arr;
  arr.push(a1);
  return arr;
}
var index6 = {
  name: "@sheets/queries-by-schema",
  id: 6,
  encodeKey(record) {
    return index6_key.encode(index6_indexify(record));
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return index6_key.encodeRange({
      gt: gt ? index6_indexify(gt) : null,
      lt: lt ? index6_indexify(lt) : null,
      gte: gte ? index6_indexify(gte) : null,
      lte: lte ? index6_indexify(lte) : null
    });
  },
  encodeValue: (doc) => index6.collection.encodeKey(doc),
  encodeIndexKeys(record, context) {
    return [index6_key.encode([record.schemaId, record.queryId])];
  },
  reconstruct: (keyBuf, valueBuf) => valueBuf,
  offset: collection3.indexes.length,
  collection: collection3
};
collection3.indexes.push(index6);
var index7_key = new import_index_encoder.default([
  import_index_encoder.default.STRING,
  import_index_encoder.default.STRING
], { prefix: 7 });
function index7_indexify(record) {
  const arr = [];
  const a0 = record.schemaId;
  if (a0 === void 0) return arr;
  arr.push(a0);
  const a1 = record.uischemaId;
  if (a1 === void 0) return arr;
  arr.push(a1);
  return arr;
}
var index7 = {
  name: "@sheets/uischema-by-schema",
  id: 7,
  encodeKey(record) {
    return index7_key.encode(index7_indexify(record));
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return index7_key.encodeRange({
      gt: gt ? index7_indexify(gt) : null,
      lt: lt ? index7_indexify(lt) : null,
      gte: gte ? index7_indexify(gte) : null,
      lte: lte ? index7_indexify(lte) : null
    });
  },
  encodeValue: (doc) => index7.collection.encodeKey(doc),
  encodeIndexKeys(record, context) {
    return [index7_key.encode([record.schemaId, record.uischemaId])];
  },
  reconstruct: (keyBuf, valueBuf) => valueBuf,
  offset: collection4.indexes.length,
  collection: collection4
};
collection4.indexes.push(index7);
var index8_key = new import_index_encoder.default([
  import_index_encoder.default.STRING,
  import_index_encoder.default.UINT,
  import_index_encoder.default.STRING
], { prefix: 8 });
function index8_indexify(record) {
  const arr = [];
  const a0 = record.schemaId;
  if (a0 === void 0) return arr;
  arr.push(a0);
  const a1 = record.time;
  if (a1 === void 0) return arr;
  arr.push(a1);
  const a2 = record.uuid;
  if (a2 === void 0) return arr;
  arr.push(a2);
  return arr;
}
var index8 = {
  name: "@sheets/rows-by-schema-time",
  id: 8,
  encodeKey(record) {
    return index8_key.encode(index8_indexify(record));
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return index8_key.encodeRange({
      gt: gt ? index8_indexify(gt) : null,
      lt: lt ? index8_indexify(lt) : null,
      gte: gte ? index8_indexify(gte) : null,
      lte: lte ? index8_indexify(lte) : null
    });
  },
  encodeValue: (doc) => index8.collection.encodeKey(doc),
  encodeIndexKeys(record, context) {
    return [index8_key.encode([record.schemaId, record.time, record.uuid])];
  },
  reconstruct: (keyBuf, valueBuf) => valueBuf,
  offset: collection2.indexes.length,
  collection: collection2
};
collection2.indexes.push(index8);
var index9_key = new import_index_encoder.default([
  import_index_encoder.default.BUFFER,
  import_index_encoder.default.UINT,
  import_index_encoder.default.STRING
], { prefix: 9 });
function index9_indexify(record) {
  const arr = [];
  const a0 = record.memberkey;
  if (a0 === void 0) return arr;
  arr.push(a0);
  const a1 = record.time;
  if (a1 === void 0) return arr;
  arr.push(a1);
  const a2 = record.uuid;
  if (a2 === void 0) return arr;
  arr.push(a2);
  return arr;
}
var index9 = {
  name: "@sheets/rows-by-member-time",
  id: 9,
  encodeKey(record) {
    return index9_key.encode(index9_indexify(record));
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return index9_key.encodeRange({
      gt: gt ? index9_indexify(gt) : null,
      lt: lt ? index9_indexify(lt) : null,
      gte: gte ? index9_indexify(gte) : null,
      lte: lte ? index9_indexify(lte) : null
    });
  },
  encodeValue: (doc) => index9.collection.encodeKey(doc),
  encodeIndexKeys(record, context) {
    return [index9_key.encode([record.memberkey, record.time, record.uuid])];
  },
  reconstruct: (keyBuf, valueBuf) => valueBuf,
  offset: collection2.indexes.length,
  collection: collection2
};
collection2.indexes.push(index9);
var index10_key = new import_index_encoder.default([
  import_index_encoder.default.STRING,
  import_index_encoder.default.STRING
], { prefix: 10 });
function index10_indexify(record) {
  const arr = [];
  const a0 = record.rowUuid;
  if (a0 === void 0) return arr;
  arr.push(a0);
  const a1 = record.attestationUuid;
  if (a1 === void 0) return arr;
  arr.push(a1);
  return arr;
}
var index10 = {
  name: "@sheets/row-attestations-by-row",
  id: 10,
  encodeKey(record) {
    return index10_key.encode(index10_indexify(record));
  },
  encodeKeyRange({ gt, lt, gte, lte } = {}) {
    return index10_key.encodeRange({
      gt: gt ? index10_indexify(gt) : null,
      lt: lt ? index10_indexify(lt) : null,
      gte: gte ? index10_indexify(gte) : null,
      lte: lte ? index10_indexify(lte) : null
    });
  },
  encodeValue: (doc) => index10.collection.encodeKey(doc),
  encodeIndexKeys(record, context) {
    return [index10_key.encode([record.rowUuid, record.attestationUuid])];
  },
  reconstruct: (keyBuf, valueBuf) => valueBuf,
  offset: collection5.indexes.length,
  collection: collection5
};
collection5.indexes.push(index10);
var collections = [
  collection0,
  collection1,
  collection2,
  collection3,
  collection4,
  collection5
];
var indexes = [
  index6,
  index7,
  index8,
  index9,
  index10
];
var db_default = { version: version2, collections, indexes, resolveCollection, resolveIndex };
function resolveCollection(name) {
  switch (name) {
    case "@sheets/members":
      return collection0;
    case "@sheets/jsonschema":
      return collection1;
    case "@sheets/row":
      return collection2;
    case "@sheets/queries":
      return collection3;
    case "@sheets/uischemas":
      return collection4;
    case "@sheets/row-attestations":
      return collection5;
    default:
      return null;
  }
}
function resolveIndex(name) {
  switch (name) {
    case "@sheets/queries-by-schema":
      return index6;
    case "@sheets/uischema-by-schema":
      return index7;
    case "@sheets/rows-by-schema-time":
      return index8;
    case "@sheets/rows-by-member-time":
      return index9;
    case "@sheets/row-attestations-by-row":
      return index10;
    default:
      return null;
  }
}

// node_modules/schema-sheets/routes/members.mjs
async function updateMember(data, ctx) {
  const indexer = ctx.seq === 0 && ctx.writer.equals(ctx.host.key);
  if (ctx.seq === 0 && !ctx.writer.equals(ctx.host.key)) {
    await ctx.host.addWriter(ctx.writer, { isIndexer: indexer });
  }
  await ctx.view.insert("@sheets/members", {
    key: ctx.writer,
    indexer,
    name: data.name
  });
}

// node_modules/schema-sheets/routes/sheets.mjs
var import_ajv = __toESM(require_ajv(), 1);
var import_ajv_formats = __toESM(require_dist(), 1);
var import_keet_identity_key = __toESM(require_keet_identity_key(), 1);
var import_b4a3 = __toESM(require_b4a(), 1);
var NOT_FOUND = 404;
var SCHEMA_VALIDATION_FAILED = 501;
var INVALID_SCHEMA = 502;
var ajv = new import_ajv.default({ strict: false });
(0, import_ajv_formats.default)(ajv);
async function setNamedSchema(data, ctx) {
  const { schemaId, jsonSchema, name, metadata } = data;
  try {
    ajv.compile(jsonSchema);
  } catch (error) {
    return { ok: false, code: INVALID_SCHEMA, error: error.message };
  }
  await ctx.view.insert("@sheets/jsonschema", { schemaId, jsonSchema, name, metadata });
  return { ok: true };
}
async function deleteNamedSchema(data, ctx) {
  const { schemaId } = data;
  await ctx.view.delete("@sheets/jsonschema", { schemaId });
  return { ok: true };
}
async function setRow(data, ctx) {
  const { uuid, schemaId, json, time } = data;
  const memberkey = ctx.writer;
  const schema = await ctx.view.get("@sheets/jsonschema", { schemaId });
  if (!schema) return { ok: false, code: NOT_FOUND };
  const validate = ajv.compile(schema.jsonSchema);
  const valid = validate(json);
  if (!valid) {
    return {
      ok: false,
      code: SCHEMA_VALIDATION_FAILED,
      errors: validate.errors
    };
  }
  const entry = { uuid, schemaId, time, json, memberkey };
  await ctx.view.insert("@sheets/row", entry);
  return { ok: true };
}
async function deleteRow(data, ctx) {
  const { uuid } = data;
  await ctx.view.delete("@sheets/row", { uuid });
  return { ok: true };
}
async function setQuery(data, ctx) {
  const { queryId, schemaId, name, JMESPathQuery, listView } = data;
  const memberkey = ctx.writer;
  const entry = { queryId, schemaId, name, JMESPathQuery, listView, memberkey };
  await ctx.view.insert("@sheets/queries", entry);
  return { ok: true };
}
async function deleteQuery(data, ctx) {
  const { queryId } = data;
  await ctx.view.delete("@sheets/queries", { queryId });
  return { ok: true };
}
async function setUISchema(data, ctx) {
  const { uischemaId, schemaId, uiSchema, name } = data;
  const memberkey = ctx.writer;
  const schema = await ctx.view.get("@sheets/jsonschema", { schemaId });
  if (!schema) return { ok: false, code: NOT_FOUND };
  const entry = { uischemaId, schemaId, uiSchema, name, memberkey };
  await ctx.view.insert("@sheets/uischemas", entry);
  return { ok: true };
}
async function deleteUISchema(data, ctx) {
  const { uischemaId } = data;
  await ctx.view.delete("@sheets/uischemas", { uischemaId });
  return { ok: true };
}
async function addRowAttestation(data, ctx) {
  const { attestationUuid, rowUuid, time, proof, keetUsername } = data;
  const memberkey = ctx.writer;
  const existing = await ctx.view.get("@sheets/row-attestations", { attestationUuid });
  if (existing) {
    return { ok: false, code: 409, error: "Attestation already exists" };
  }
  const row = await ctx.view.get("@sheets/row", { uuid: rowUuid });
  if (!row) return { ok: false, code: NOT_FOUND };
  const message = import_b4a3.default.from(JSON.stringify(row.json));
  const messageInfo = import_keet_identity_key.default.verify(proof, message);
  if (!messageInfo) {
    return { ok: false, code: 401, error: "Message verification failed" };
  }
  const entry = { attestationUuid, rowUuid, time, proof, memberkey, keetUsername };
  await ctx.view.insert("@sheets/row-attestations", entry);
  return { ok: true };
}

// node_modules/schema-sheets/index.mjs
function randomUUID() {
  const bytes = (0, import_hypercore_crypto.randomBytes)(32);
  return import_z32.default.encode(bytes);
}
var SchemaSheets = class {
  constructor(store, key, opts = {}) {
    this.store = store;
    this.encryptionKey = opts.encryptionKey || null;
    this.base = new import_autobase.default(store, key, {
      ...opts,
      optimistic: true,
      open: this._autobaseOpen.bind(this),
      apply: this._autobaseApply.bind(this),
      close: this._autobaseClose.bind(this)
    });
    this.router = new Router();
    this._setupRoutes();
  }
  /* Private */
  _setupRoutes() {
    this.router.add("@sheets/update-member", updateMember);
    this.router.add("@sheets/set-named-schema", setNamedSchema);
    this.router.add("@sheets/delete-named-schema", deleteNamedSchema);
    this.router.add("@sheets/set-row", setRow);
    this.router.add("@sheets/delete-row", deleteRow);
    this.router.add("@sheets/set-query", setQuery);
    this.router.add("@sheets/delete-query", deleteQuery);
    this.router.add("@sheets/set-uischema", setUISchema);
    this.router.add("@sheets/delete-uischema", deleteUISchema);
    this.router.add("@sheets/add-row-attestation", addRowAttestation);
  }
  _autobaseOpen(store) {
    return import_hyperdb.default.bee(store.get("sheets"), db_default, {
      extension: false,
      autoUpdate: true
    });
  }
  _autobaseClose(view) {
    return view.close();
  }
  async _autobaseApply(nodes, view, host) {
    for (const node of nodes) {
      await this.router.dispatch(node.value, {
        writer: node.from.key,
        seq: node.length - 1,
        view,
        host
      });
    }
    await view.flush();
  }
  /* Public general functions */
  get db() {
    return this.base.view;
  }
  get key() {
    return this.base.key;
  }
  async ready() {
    await this.base.ready();
  }
  close() {
    this.base.close();
    return this.store.close();
  }
  async joined() {
    await this.base.ready();
    return this.base.local.length > 0;
  }
  async join(name) {
    await this.base.append(encode("@sheets/update-member", { name }), { optimistic: true });
  }
  /* Feature functions */
  async addNewSchema(name, jsonSchema, metadata) {
    if (!await this.joined()) return null;
    const schemaId = randomUUID();
    await this.base.append(encode("@sheets/set-named-schema", {
      schemaId,
      name,
      jsonSchema,
      metadata
    }));
    return schemaId;
  }
  async updateSchema(schemaId, jsonSchema, metadata) {
    if (!await this.joined()) return false;
    const existing = await this.db.get("@sheets/jsonschema", { schemaId });
    if (!existing) return false;
    await this.base.append(encode("@sheets/set-named-schema", {
      schemaId,
      name: existing.name,
      jsonSchema,
      metadata: metadata !== void 0 ? metadata : existing.metadata
    }));
    return true;
  }
  async renameSchema(schemaId, name) {
    if (!await this.joined()) return false;
    const existing = await this.db.get("@sheets/jsonschema", { schemaId });
    if (!existing) return false;
    await this.base.append(encode("@sheets/set-named-schema", {
      schemaId,
      name,
      jsonSchema: existing.jsonSchema,
      metadata: existing.metadata
    }));
    return true;
  }
  async getRow(schemaId, rowUuid) {
    return await this.db.get("@sheets/row", { uuid: rowUuid });
  }
  async addRow(schemaId, json, _time) {
    if (!await this.joined()) return null;
    const uuid = randomUUID();
    const time = _time ? new Date(_time).getTime() : Date.now();
    await this.base.append(encode("@sheets/set-row", {
      uuid,
      schemaId,
      json,
      time
    }));
    return uuid;
  }
  async updateRow(uuid, json) {
    if (!await this.joined()) return false;
    const existing = await this.db.get("@sheets/row", { uuid });
    if (!existing) return false;
    await this.base.append(encode("@sheets/set-row", {
      uuid,
      schemaId: existing.schemaId,
      json,
      time: Date.now()
    }));
    return true;
  }
  async deleteRow(uuid) {
    if (!await this.joined()) return false;
    await this.base.append(encode("@sheets/delete-row", { uuid }));
    return true;
  }
  async list(schemaId, opts = {}) {
    const _opts = {
      ...opts,
      gte: { schemaId, time: opts.gte || 0 },
      lte: { schemaId, time: opts.lte || Date.now() }
    };
    const results = await this.db.find("@sheets/rows-by-schema-time", _opts).toArray();
    if (!opts.query) return results;
    const query = compile(opts.query);
    return results.map((row) => {
      const matched = TreeInterpreter2.search(query, [row.json]);
      if (matched === null || !matched.length) return null;
      return {
        ...row,
        json: matched[0]
      };
    }).filter((row) => row !== null);
  }
  async listSchemas() {
    return await this.db.find("@sheets/jsonschema").toArray();
  }
  async addQuery(schemaId, name, JMESPathQuery, listView) {
    if (!await this.joined()) return null;
    const queryId = randomUUID();
    await this.base.append(encode("@sheets/set-query", {
      queryId,
      schemaId,
      name,
      JMESPathQuery,
      listView
    }));
    return queryId;
  }
  async updateQuery(queryId, schemaId, name, JMESPathQuery, listView) {
    if (!await this.joined()) return false;
    await this.base.append(encode("@sheets/set-query", {
      queryId,
      schemaId,
      name,
      JMESPathQuery,
      listView
    }));
    return true;
  }
  async deleteQuery(queryId) {
    if (!await this.joined()) return false;
    await this.base.append(encode("@sheets/delete-query", { queryId }));
    return true;
  }
  async listQueries(schemaId) {
    if (!schemaId) {
      return await this.db.find("@sheets/queries-by-schema").toArray();
    }
    return await this.db.find("@sheets/queries-by-schema", { gte: { schemaId }, lte: { schemaId } }).toArray();
  }
  async addUISchema(schemaId, name, uiSchema) {
    if (!await this.joined()) return null;
    const uischemaId = randomUUID();
    await this.base.append(encode("@sheets/set-uischema", {
      uischemaId,
      schemaId,
      name,
      uiSchema
    }));
    return uischemaId;
  }
  async updateUISchema(uischemaId, schemaId, name, uiSchema) {
    if (!await this.joined()) return false;
    await this.base.append(encode("@sheets/set-uischema", {
      uischemaId,
      schemaId,
      name,
      uiSchema
    }));
    return true;
  }
  async deleteUISchema(uischemaId) {
    if (!await this.joined()) return false;
    await this.base.append(encode("@sheets/delete-uischema", { uischemaId }));
    return true;
  }
  async listUISchemas(schemaId) {
    if (schemaId) {
      return await this.db.find("@sheets/uischema-by-schema", { gte: { schemaId }, lte: { schemaId } }).toArray();
    }
    return await this.db.find("@sheets/uischemas").toArray();
  }
  async addRowAttestation(rowUuid, proof, keetUsername) {
    if (!await this.joined()) return null;
    const attestationUuid = randomUUID();
    const time = Date.now();
    const attest = {
      attestationUuid,
      rowUuid,
      time,
      proof,
      keetUsername
    };
    await this.base.append(encode("@sheets/add-row-attestation", attest));
    return attestationUuid;
  }
  async listRowAttestations(rowUuid) {
    return await this.db.find("@sheets/row-attestations-by-row", { gte: { rowUuid }, lte: { rowUuid } }).toArray();
  }
};

// backend/sheets-import.mjs
var sheets_import_default = SchemaSheets;