import { p as y, k as Bt, U as Ft, W as Yt, G as Pt, K as zt, f as Gt, i as Kt, Z as it, g as v, H as Ut, I as Zt, n as Wt, d as jt, e as Xt, q as qt, N as Ht } from "./index-CNUFa5l3.js";
import { n as Qt } from "./channel-DM9j7IFL-iDrQRns0.js";
import { n as Jt } from "./chunk-55IACEB6-DZn1aNO0-DML95e49.js";
import { r as Vt } from "./chunk-2J33WTMH-CBbjVzWb-D_ldye6t.js";
var gt = function() {
  var s = /* @__PURE__ */ y(function(n, d, c, r) {
    for (c || (c = {}), r = n.length; r--; c[n[r]] = d) ;
    return c;
  }, "o"), i = [
    6,
    8,
    10,
    22,
    24,
    26,
    28,
    33,
    34,
    35,
    36,
    37,
    40,
    43,
    44,
    48,
    50,
    51,
    52
  ], a = [1, 10], l = [1, 11], o = [1, 12], h = [1, 13], p = [1, 23], u = [1, 24], E = [1, 25], W = [1, 26], j = [1, 27], O = [1, 19], L = [1, 28], X = [1, 29], T = [1, 20], I = [1, 18], M = [1, 21], w = [1, 22], nt = [1, 36], at = [1, 37], ot = [1, 38], lt = [1, 39], ct = [1, 40], B = [
    6,
    8,
    10,
    13,
    15,
    17,
    20,
    21,
    22,
    24,
    26,
    28,
    33,
    34,
    35,
    36,
    37,
    40,
    43,
    44,
    48,
    50,
    51,
    52,
    65,
    66,
    67,
    68,
    69
  ], N = [1, 45], S = [1, 46], F = [1, 55], Y = [
    40,
    48,
    50,
    51,
    52,
    70,
    71
  ], P = [1, 66], z = [1, 64], A = [1, 61], G = [1, 65], K = [1, 67], q = [
    6,
    8,
    10,
    13,
    17,
    22,
    24,
    26,
    28,
    33,
    34,
    35,
    36,
    37,
    40,
    41,
    42,
    43,
    44,
    48,
    49,
    50,
    51,
    52,
    65,
    66,
    67,
    68,
    69
  ], bt = [
    65,
    66,
    67,
    68,
    69
  ], ft = [1, 84], mt = [1, 83], Et = [1, 81], kt = [1, 82], Ot = [
    6,
    10,
    42,
    47
  ], C = [
    6,
    10,
    13,
    41,
    42,
    47,
    48,
    49
  ], H = [1, 92], Q = [1, 91], J = [1, 90], U = [19, 58], Tt = [1, 101], Nt = [1, 100], ht = [
    19,
    58,
    60,
    62
  ], ut = {
    trace: /* @__PURE__ */ y(function() {
    }, "trace"),
    yy: {},
    symbols_: {
      error: 2,
      start: 3,
      ER_DIAGRAM: 4,
      document: 5,
      EOF: 6,
      line: 7,
      SPACE: 8,
      statement: 9,
      NEWLINE: 10,
      entityName: 11,
      relSpec: 12,
      COLON: 13,
      role: 14,
      STYLE_SEPARATOR: 15,
      idList: 16,
      BLOCK_START: 17,
      attributes: 18,
      BLOCK_STOP: 19,
      SQS: 20,
      SQE: 21,
      title: 22,
      title_value: 23,
      acc_title: 24,
      acc_title_value: 25,
      acc_descr: 26,
      acc_descr_value: 27,
      acc_descr_multiline_value: 28,
      direction: 29,
      classDefStatement: 30,
      classStatement: 31,
      styleStatement: 32,
      direction_tb: 33,
      direction_bt: 34,
      direction_rl: 35,
      direction_lr: 36,
      CLASSDEF: 37,
      stylesOpt: 38,
      separator: 39,
      UNICODE_TEXT: 40,
      STYLE_TEXT: 41,
      COMMA: 42,
      CLASS: 43,
      STYLE: 44,
      style: 45,
      styleComponent: 46,
      SEMI: 47,
      NUM: 48,
      BRKT: 49,
      ENTITY_NAME: 50,
      DECIMAL_NUM: 51,
      ENTITY_ONE: 52,
      attribute: 53,
      attributeType: 54,
      attributeName: 55,
      attributeKeyTypeList: 56,
      attributeComment: 57,
      ATTRIBUTE_WORD: 58,
      attributeKeyType: 59,
      ",": 60,
      ATTRIBUTE_KEY: 61,
      COMMENT: 62,
      cardinality: 63,
      relType: 64,
      ZERO_OR_ONE: 65,
      ZERO_OR_MORE: 66,
      ONE_OR_MORE: 67,
      ONLY_ONE: 68,
      MD_PARENT: 69,
      NON_IDENTIFYING: 70,
      IDENTIFYING: 71,
      WORD: 72,
      $accept: 0,
      $end: 1
    },
    terminals_: {
      2: "error",
      4: "ER_DIAGRAM",
      6: "EOF",
      8: "SPACE",
      10: "NEWLINE",
      13: "COLON",
      15: "STYLE_SEPARATOR",
      17: "BLOCK_START",
      19: "BLOCK_STOP",
      20: "SQS",
      21: "SQE",
      22: "title",
      23: "title_value",
      24: "acc_title",
      25: "acc_title_value",
      26: "acc_descr",
      27: "acc_descr_value",
      28: "acc_descr_multiline_value",
      33: "direction_tb",
      34: "direction_bt",
      35: "direction_rl",
      36: "direction_lr",
      37: "CLASSDEF",
      40: "UNICODE_TEXT",
      41: "STYLE_TEXT",
      42: "COMMA",
      43: "CLASS",
      44: "STYLE",
      47: "SEMI",
      48: "NUM",
      49: "BRKT",
      50: "ENTITY_NAME",
      51: "DECIMAL_NUM",
      52: "ENTITY_ONE",
      58: "ATTRIBUTE_WORD",
      60: ",",
      61: "ATTRIBUTE_KEY",
      62: "COMMENT",
      65: "ZERO_OR_ONE",
      66: "ZERO_OR_MORE",
      67: "ONE_OR_MORE",
      68: "ONLY_ONE",
      69: "MD_PARENT",
      70: "NON_IDENTIFYING",
      71: "IDENTIFYING",
      72: "WORD"
    },
    productions_: [
      0,
      [3, 3],
      [5, 0],
      [5, 2],
      [7, 2],
      [7, 1],
      [7, 1],
      [7, 1],
      [9, 5],
      [9, 9],
      [9, 7],
      [9, 7],
      [9, 4],
      [9, 6],
      [9, 3],
      [9, 5],
      [9, 1],
      [9, 3],
      [9, 7],
      [9, 9],
      [9, 6],
      [9, 8],
      [9, 4],
      [9, 6],
      [9, 2],
      [9, 2],
      [9, 2],
      [9, 1],
      [9, 1],
      [9, 1],
      [9, 1],
      [9, 1],
      [29, 1],
      [29, 1],
      [29, 1],
      [29, 1],
      [30, 4],
      [16, 1],
      [16, 1],
      [16, 3],
      [16, 3],
      [31, 3],
      [32, 4],
      [38, 1],
      [38, 3],
      [45, 1],
      [45, 2],
      [39, 1],
      [39, 1],
      [39, 1],
      [46, 1],
      [46, 1],
      [46, 1],
      [46, 1],
      [11, 1],
      [11, 1],
      [11, 1],
      [11, 1],
      [11, 1],
      [18, 1],
      [18, 2],
      [53, 2],
      [53, 3],
      [53, 3],
      [53, 4],
      [54, 1],
      [55, 1],
      [56, 1],
      [56, 3],
      [59, 1],
      [57, 1],
      [12, 3],
      [63, 1],
      [63, 1],
      [63, 1],
      [63, 1],
      [63, 1],
      [64, 1],
      [64, 1],
      [14, 1],
      [14, 1],
      [14, 1]
    ],
    performAction: /* @__PURE__ */ y(function(n, d, c, r, _, t, Z) {
      var e = t.length - 1;
      switch (_) {
        case 1:
          break;
        case 2:
          this.$ = [];
          break;
        case 3:
          t[e - 1].push(t[e]), this.$ = t[e - 1];
          break;
        case 4:
        case 5:
          this.$ = t[e];
          break;
        case 6:
        case 7:
          this.$ = [];
          break;
        case 8:
          r.addEntity(t[e - 4]), r.addEntity(t[e - 2]), r.addRelationship(t[e - 4], t[e], t[e - 2], t[e - 3]);
          break;
        case 9:
          r.addEntity(t[e - 8]), r.addEntity(t[e - 4]), r.addRelationship(t[e - 8], t[e], t[e - 4], t[e - 5]), r.setClass([t[e - 8]], t[e - 6]), r.setClass([t[e - 4]], t[e - 2]);
          break;
        case 10:
          r.addEntity(t[e - 6]), r.addEntity(t[e - 2]), r.addRelationship(t[e - 6], t[e], t[e - 2], t[e - 3]), r.setClass([t[e - 6]], t[e - 4]);
          break;
        case 11:
          r.addEntity(t[e - 6]), r.addEntity(t[e - 4]), r.addRelationship(t[e - 6], t[e], t[e - 4], t[e - 5]), r.setClass([t[e - 4]], t[e - 2]);
          break;
        case 12:
          r.addEntity(t[e - 3]), r.addAttributes(t[e - 3], t[e - 1]);
          break;
        case 13:
          r.addEntity(t[e - 5]), r.addAttributes(t[e - 5], t[e - 1]), r.setClass([t[e - 5]], t[e - 3]);
          break;
        case 14:
          r.addEntity(t[e - 2]);
          break;
        case 15:
          r.addEntity(t[e - 4]), r.setClass([t[e - 4]], t[e - 2]);
          break;
        case 16:
          r.addEntity(t[e]);
          break;
        case 17:
          r.addEntity(t[e - 2]), r.setClass([t[e - 2]], t[e]);
          break;
        case 18:
          r.addEntity(t[e - 6], t[e - 4]), r.addAttributes(t[e - 6], t[e - 1]);
          break;
        case 19:
          r.addEntity(t[e - 8], t[e - 6]), r.addAttributes(t[e - 8], t[e - 1]), r.setClass([t[e - 8]], t[e - 3]);
          break;
        case 20:
          r.addEntity(t[e - 5], t[e - 3]);
          break;
        case 21:
          r.addEntity(t[e - 7], t[e - 5]), r.setClass([t[e - 7]], t[e - 2]);
          break;
        case 22:
          r.addEntity(t[e - 3], t[e - 1]);
          break;
        case 23:
          r.addEntity(t[e - 5], t[e - 3]), r.setClass([t[e - 5]], t[e]);
          break;
        case 24:
        case 25:
          this.$ = t[e].trim(), r.setAccTitle(this.$);
          break;
        case 26:
        case 27:
          this.$ = t[e].trim(), r.setAccDescription(this.$);
          break;
        case 32:
          r.setDirection("TB");
          break;
        case 33:
          r.setDirection("BT");
          break;
        case 34:
          r.setDirection("RL");
          break;
        case 35:
          r.setDirection("LR");
          break;
        case 36:
          this.$ = t[e - 3], r.addClass(t[e - 2], t[e - 1]);
          break;
        case 37:
        case 38:
        case 59:
        case 67:
          this.$ = [t[e]];
          break;
        case 39:
        case 40:
          this.$ = t[e - 2].concat([t[e]]);
          break;
        case 41:
          this.$ = t[e - 2], r.setClass(t[e - 1], t[e]);
          break;
        case 42:
          this.$ = t[e - 3], r.addCssStyles(t[e - 2], t[e - 1]);
          break;
        case 43:
          this.$ = [t[e]];
          break;
        case 44:
          t[e - 2].push(t[e]), this.$ = t[e - 2];
          break;
        case 46:
          this.$ = t[e - 1] + t[e];
          break;
        case 54:
        case 79:
        case 80:
          this.$ = t[e].replace(/"/g, "");
          break;
        case 55:
        case 56:
        case 57:
        case 58:
        case 81:
          this.$ = t[e];
          break;
        case 60:
          t[e].push(t[e - 1]), this.$ = t[e];
          break;
        case 61:
          this.$ = {
            type: t[e - 1],
            name: t[e]
          };
          break;
        case 62:
          this.$ = {
            type: t[e - 2],
            name: t[e - 1],
            keys: t[e]
          };
          break;
        case 63:
          this.$ = {
            type: t[e - 2],
            name: t[e - 1],
            comment: t[e]
          };
          break;
        case 64:
          this.$ = {
            type: t[e - 3],
            name: t[e - 2],
            keys: t[e - 1],
            comment: t[e]
          };
          break;
        case 65:
        case 66:
        case 69:
          this.$ = t[e];
          break;
        case 68:
          t[e - 2].push(t[e]), this.$ = t[e - 2];
          break;
        case 70:
          this.$ = t[e].replace(/"/g, "");
          break;
        case 71:
          this.$ = {
            cardA: t[e],
            relType: t[e - 1],
            cardB: t[e - 2]
          };
          break;
        case 72:
          this.$ = r.Cardinality.ZERO_OR_ONE;
          break;
        case 73:
          this.$ = r.Cardinality.ZERO_OR_MORE;
          break;
        case 74:
          this.$ = r.Cardinality.ONE_OR_MORE;
          break;
        case 75:
          this.$ = r.Cardinality.ONLY_ONE;
          break;
        case 76:
          this.$ = r.Cardinality.MD_PARENT;
          break;
        case 77:
          this.$ = r.Identification.NON_IDENTIFYING;
          break;
        case 78:
          this.$ = r.Identification.IDENTIFYING;
          break;
      }
    }, "anonymous"),
    table: [
      {
        3: 1,
        4: [1, 2]
      },
      { 1: [3] },
      s(i, [2, 2], { 5: 3 }),
      {
        6: [1, 4],
        7: 5,
        8: [1, 6],
        9: 7,
        10: [1, 8],
        11: 9,
        22: a,
        24: l,
        26: o,
        28: h,
        29: 14,
        30: 15,
        31: 16,
        32: 17,
        33: p,
        34: u,
        35: E,
        36: W,
        37: j,
        40: O,
        43: L,
        44: X,
        48: T,
        50: I,
        51: M,
        52: w
      },
      s(i, [2, 7], { 1: [2, 1] }),
      s(i, [2, 3]),
      {
        9: 30,
        11: 9,
        22: a,
        24: l,
        26: o,
        28: h,
        29: 14,
        30: 15,
        31: 16,
        32: 17,
        33: p,
        34: u,
        35: E,
        36: W,
        37: j,
        40: O,
        43: L,
        44: X,
        48: T,
        50: I,
        51: M,
        52: w
      },
      s(i, [2, 5]),
      s(i, [2, 6]),
      s(i, [2, 16], {
        12: 31,
        63: 35,
        15: [1, 32],
        17: [1, 33],
        20: [1, 34],
        65: nt,
        66: at,
        67: ot,
        68: lt,
        69: ct
      }),
      { 23: [1, 41] },
      { 25: [1, 42] },
      { 27: [1, 43] },
      s(i, [2, 27]),
      s(i, [2, 28]),
      s(i, [2, 29]),
      s(i, [2, 30]),
      s(i, [2, 31]),
      s(B, [2, 54]),
      s(B, [2, 55]),
      s(B, [2, 56]),
      s(B, [2, 57]),
      s(B, [2, 58]),
      s(i, [2, 32]),
      s(i, [2, 33]),
      s(i, [2, 34]),
      s(i, [2, 35]),
      {
        16: 44,
        40: N,
        41: S
      },
      {
        16: 47,
        40: N,
        41: S
      },
      {
        16: 48,
        40: N,
        41: S
      },
      s(i, [2, 4]),
      {
        11: 49,
        40: O,
        48: T,
        50: I,
        51: M,
        52: w
      },
      {
        16: 50,
        40: N,
        41: S
      },
      {
        18: 51,
        19: [1, 52],
        53: 53,
        54: 54,
        58: F
      },
      {
        11: 56,
        40: O,
        48: T,
        50: I,
        51: M,
        52: w
      },
      {
        64: 57,
        70: [1, 58],
        71: [1, 59]
      },
      s(Y, [2, 72]),
      s(Y, [2, 73]),
      s(Y, [2, 74]),
      s(Y, [2, 75]),
      s(Y, [2, 76]),
      s(i, [2, 24]),
      s(i, [2, 25]),
      s(i, [2, 26]),
      {
        13: P,
        38: 60,
        41: z,
        42: A,
        45: 62,
        46: 63,
        48: G,
        49: K
      },
      s(q, [2, 37]),
      s(q, [2, 38]),
      {
        16: 68,
        40: N,
        41: S,
        42: A
      },
      {
        13: P,
        38: 69,
        41: z,
        42: A,
        45: 62,
        46: 63,
        48: G,
        49: K
      },
      {
        13: [1, 70],
        15: [1, 71]
      },
      s(i, [2, 17], {
        63: 35,
        12: 72,
        17: [1, 73],
        42: A,
        65: nt,
        66: at,
        67: ot,
        68: lt,
        69: ct
      }),
      { 19: [1, 74] },
      s(i, [2, 14]),
      {
        18: 75,
        19: [2, 59],
        53: 53,
        54: 54,
        58: F
      },
      {
        55: 76,
        58: [1, 77]
      },
      { 58: [2, 65] },
      { 21: [1, 78] },
      {
        63: 79,
        65: nt,
        66: at,
        67: ot,
        68: lt,
        69: ct
      },
      s(bt, [2, 77]),
      s(bt, [2, 78]),
      {
        6: ft,
        10: mt,
        39: 80,
        42: Et,
        47: kt
      },
      {
        40: [1, 85],
        41: [1, 86]
      },
      s(Ot, [2, 43], {
        46: 87,
        13: P,
        41: z,
        48: G,
        49: K
      }),
      s(C, [2, 45]),
      s(C, [2, 50]),
      s(C, [2, 51]),
      s(C, [2, 52]),
      s(C, [2, 53]),
      s(i, [2, 41], { 42: A }),
      {
        6: ft,
        10: mt,
        39: 88,
        42: Et,
        47: kt
      },
      {
        14: 89,
        40: H,
        50: Q,
        72: J
      },
      {
        16: 93,
        40: N,
        41: S
      },
      {
        11: 94,
        40: O,
        48: T,
        50: I,
        51: M,
        52: w
      },
      {
        18: 95,
        19: [1, 96],
        53: 53,
        54: 54,
        58: F
      },
      s(i, [2, 12]),
      { 19: [2, 60] },
      s(U, [2, 61], {
        56: 97,
        57: 98,
        59: 99,
        61: Tt,
        62: Nt
      }),
      s([
        19,
        58,
        61,
        62
      ], [2, 66]),
      s(i, [2, 22], {
        15: [1, 103],
        17: [1, 102]
      }),
      s([
        40,
        48,
        50,
        51,
        52
      ], [2, 71]),
      s(i, [2, 36]),
      {
        13: P,
        41: z,
        45: 104,
        46: 63,
        48: G,
        49: K
      },
      s(i, [2, 47]),
      s(i, [2, 48]),
      s(i, [2, 49]),
      s(q, [2, 39]),
      s(q, [2, 40]),
      s(C, [2, 46]),
      s(i, [2, 42]),
      s(i, [2, 8]),
      s(i, [2, 79]),
      s(i, [2, 80]),
      s(i, [2, 81]),
      {
        13: [1, 105],
        42: A
      },
      {
        13: [1, 107],
        15: [1, 106]
      },
      { 19: [1, 108] },
      s(i, [2, 15]),
      s(U, [2, 62], {
        57: 109,
        60: [1, 110],
        62: Nt
      }),
      s(U, [2, 63]),
      s(ht, [2, 67]),
      s(U, [2, 70]),
      s(ht, [2, 69]),
      {
        18: 111,
        19: [1, 112],
        53: 53,
        54: 54,
        58: F
      },
      {
        16: 113,
        40: N,
        41: S
      },
      s(Ot, [2, 44], {
        46: 87,
        13: P,
        41: z,
        48: G,
        49: K
      }),
      {
        14: 114,
        40: H,
        50: Q,
        72: J
      },
      {
        16: 115,
        40: N,
        41: S
      },
      {
        14: 116,
        40: H,
        50: Q,
        72: J
      },
      s(i, [2, 13]),
      s(U, [2, 64]),
      {
        59: 117,
        61: Tt
      },
      { 19: [1, 118] },
      s(i, [2, 20]),
      s(i, [2, 23], {
        17: [1, 119],
        42: A
      }),
      s(i, [2, 11]),
      {
        13: [1, 120],
        42: A
      },
      s(i, [2, 10]),
      s(ht, [2, 68]),
      s(i, [2, 18]),
      {
        18: 121,
        19: [1, 122],
        53: 53,
        54: 54,
        58: F
      },
      {
        14: 123,
        40: H,
        50: Q,
        72: J
      },
      { 19: [1, 124] },
      s(i, [2, 21]),
      s(i, [2, 9]),
      s(i, [2, 19])
    ],
    defaultActions: {
      55: [2, 65],
      75: [2, 60]
    },
    parseError: /* @__PURE__ */ y(function(n, d) {
      if (d.recoverable) this.trace(n);
      else {
        var c = Error(n);
        throw c.hash = d, c;
      }
    }, "parseError"),
    parse: /* @__PURE__ */ y(function(n) {
      var d = this, c = [0], r = [], _ = [null], t = [], Z = this.table, e = "", tt = 0, St = 0, vt = 0, Dt = 2, At = 1, Lt = t.slice.call(arguments, 1), g = Object.create(this.lexer), $ = { yy: {} };
      for (var yt in this.yy) Object.prototype.hasOwnProperty.call(this.yy, yt) && ($.yy[yt] = this.yy[yt]);
      g.setInput(n, $.yy), $.yy.lexer = g, $.yy.parser = this, g.yylloc === void 0 && (g.yylloc = {});
      var dt = g.yylloc;
      t.push(dt);
      var Mt = g.options && g.options.ranges;
      typeof $.yy.parseError == "function" ? this.parseError = $.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError;
      function wt(m) {
        c.length -= 2 * m, _.length -= m, t.length -= m;
      }
      y(wt, "popStack");
      function It() {
        var m = r.pop() || g.lex() || At;
        return typeof m != "number" && (m instanceof Array && (r = m, m = r.pop()), m = d.symbols_[m] || m), m;
      }
      y(It, "lex");
      for (var b, pt, R, f, _t, x = {}, et, k, $t, st; ; ) {
        if (R = c[c.length - 1], this.defaultActions[R] ? f = this.defaultActions[R] : (b ?? (b = It()), f = Z[R] && Z[R][b]), f === void 0 || !f.length || !f[0]) {
          var Rt = "";
          for (et in st = [], Z[R]) this.terminals_[et] && et > Dt && st.push("'" + this.terminals_[et] + "'");
          Rt = g.showPosition ? "Parse error on line " + (tt + 1) + `:
` + g.showPosition() + `
Expecting ` + st.join(", ") + ", got '" + (this.terminals_[b] || b) + "'" : "Parse error on line " + (tt + 1) + ": Unexpected " + (b == At ? "end of input" : "'" + (this.terminals_[b] || b) + "'"), this.parseError(Rt, {
            text: g.match,
            token: this.terminals_[b] || b,
            line: g.yylineno,
            loc: dt,
            expected: st
          });
        }
        if (f[0] instanceof Array && f.length > 1) throw Error("Parse Error: multiple actions possible at state: " + R + ", token: " + b);
        switch (f[0]) {
          case 1:
            c.push(b), _.push(g.yytext), t.push(g.yylloc), c.push(f[1]), b = null, pt ? (b = pt, pt = null) : (St = g.yyleng, e = g.yytext, tt = g.yylineno, dt = g.yylloc, vt > 0);
            break;
          case 2:
            if (k = this.productions_[f[1]][1], x.$ = _[_.length - k], x._$ = {
              first_line: t[t.length - (k || 1)].first_line,
              last_line: t[t.length - 1].last_line,
              first_column: t[t.length - (k || 1)].first_column,
              last_column: t[t.length - 1].last_column
            }, Mt && (x._$.range = [t[t.length - (k || 1)].range[0], t[t.length - 1].range[1]]), _t = this.performAction.apply(x, [
              e,
              St,
              tt,
              $.yy,
              f[1],
              _,
              t
            ].concat(Lt)), _t !== void 0) return _t;
            k && (c = c.slice(0, -1 * k * 2), _ = _.slice(0, -1 * k), t = t.slice(0, -1 * k)), c.push(this.productions_[f[1]][0]), _.push(x.$), t.push(x._$), $t = Z[c[c.length - 2]][c[c.length - 1]], c.push($t);
            break;
          case 3:
            return !0;
        }
      }
      return !0;
    }, "parse")
  };
  ut.lexer = /* @__PURE__ */ function() {
    return {
      EOF: 1,
      parseError: /* @__PURE__ */ y(function(n, d) {
        if (this.yy.parser) this.yy.parser.parseError(n, d);
        else throw Error(n);
      }, "parseError"),
      setInput: /* @__PURE__ */ y(function(n, d) {
        return this.yy = d || this.yy || {}, this._input = n, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
          first_line: 1,
          first_column: 0,
          last_line: 1,
          last_column: 0
        }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this;
      }, "setInput"),
      input: /* @__PURE__ */ y(function() {
        var n = this._input[0];
        return this.yytext += n, this.yyleng++, this.offset++, this.match += n, this.matched += n, n.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), n;
      }, "input"),
      unput: /* @__PURE__ */ y(function(n) {
        var d = n.length, c = n.split(/(?:\r\n?|\n)/g);
        this._input = n + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - d), this.offset -= d;
        var r = this.match.split(/(?:\r\n?|\n)/g);
        this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), c.length - 1 && (this.yylineno -= c.length - 1);
        var _ = this.yylloc.range;
        return this.yylloc = {
          first_line: this.yylloc.first_line,
          last_line: this.yylineno + 1,
          first_column: this.yylloc.first_column,
          last_column: c ? (c.length === r.length ? this.yylloc.first_column : 0) + r[r.length - c.length].length - c[0].length : this.yylloc.first_column - d
        }, this.options.ranges && (this.yylloc.range = [_[0], _[0] + this.yyleng - d]), this.yyleng = this.yytext.length, this;
      }, "unput"),
      more: /* @__PURE__ */ y(function() {
        return this._more = !0, this;
      }, "more"),
      reject: /* @__PURE__ */ y(function() {
        if (this.options.backtrack_lexer) this._backtrack = !0;
        else return this.parseError("Lexical error on line " + (this.yylineno + 1) + `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` + this.showPosition(), {
          text: "",
          token: null,
          line: this.yylineno
        });
        return this;
      }, "reject"),
      less: /* @__PURE__ */ y(function(n) {
        this.unput(this.match.slice(n));
      }, "less"),
      pastInput: /* @__PURE__ */ y(function() {
        var n = this.matched.substr(0, this.matched.length - this.match.length);
        return (n.length > 20 ? "..." : "") + n.substr(-20).replace(/\n/g, "");
      }, "pastInput"),
      upcomingInput: /* @__PURE__ */ y(function() {
        var n = this.match;
        return n.length < 20 && (n += this._input.substr(0, 20 - n.length)), (n.substr(0, 20) + (n.length > 20 ? "..." : "")).replace(/\n/g, "");
      }, "upcomingInput"),
      showPosition: /* @__PURE__ */ y(function() {
        var n = this.pastInput(), d = Array(n.length + 1).join("-");
        return n + this.upcomingInput() + `
` + d + "^";
      }, "showPosition"),
      test_match: /* @__PURE__ */ y(function(n, d) {
        var c, r, _;
        if (this.options.backtrack_lexer && (_ = {
          yylineno: this.yylineno,
          yylloc: {
            first_line: this.yylloc.first_line,
            last_line: this.last_line,
            first_column: this.yylloc.first_column,
            last_column: this.yylloc.last_column
          },
          yytext: this.yytext,
          match: this.match,
          matches: this.matches,
          matched: this.matched,
          yyleng: this.yyleng,
          offset: this.offset,
          _more: this._more,
          _input: this._input,
          yy: this.yy,
          conditionStack: this.conditionStack.slice(0),
          done: this.done
        }, this.options.ranges && (_.yylloc.range = this.yylloc.range.slice(0))), r = n[0].match(/(?:\r\n?|\n).*/g), r && (this.yylineno += r.length), this.yylloc = {
          first_line: this.yylloc.last_line,
          last_line: this.yylineno + 1,
          first_column: this.yylloc.last_column,
          last_column: r ? r[r.length - 1].length - r[r.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + n[0].length
        }, this.yytext += n[0], this.match += n[0], this.matches = n, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(n[0].length), this.matched += n[0], c = this.performAction.call(this, this.yy, this, d, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), c) return c;
        if (this._backtrack) {
          for (var t in _) this[t] = _[t];
          return !1;
        }
        return !1;
      }, "test_match"),
      next: /* @__PURE__ */ y(function() {
        if (this.done) return this.EOF;
        this._input || (this.done = !0);
        var n, d, c, r;
        this._more || (this.yytext = "", this.match = "");
        for (var _ = this._currentRules(), t = 0; t < _.length; t++) if (c = this._input.match(this.rules[_[t]]), c && (!d || c[0].length > d[0].length)) {
          if (d = c, r = t, this.options.backtrack_lexer) {
            if (n = this.test_match(c, _[t]), n !== !1) return n;
            if (this._backtrack) {
              d = !1;
              continue;
            } else return !1;
          } else if (!this.options.flex) break;
        }
        return d ? (n = this.test_match(d, _[r]), n === !1 ? !1 : n) : this._input === "" ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text.
` + this.showPosition(), {
          text: "",
          token: null,
          line: this.yylineno
        });
      }, "next"),
      lex: /* @__PURE__ */ y(function() {
        return this.next() || this.lex();
      }, "lex"),
      begin: /* @__PURE__ */ y(function(n) {
        this.conditionStack.push(n);
      }, "begin"),
      popState: /* @__PURE__ */ y(function() {
        return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0];
      }, "popState"),
      _currentRules: /* @__PURE__ */ y(function() {
        return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules;
      }, "_currentRules"),
      topState: /* @__PURE__ */ y(function(n) {
        return n = this.conditionStack.length - 1 - Math.abs(n || 0), n >= 0 ? this.conditionStack[n] : "INITIAL";
      }, "topState"),
      pushState: /* @__PURE__ */ y(function(n) {
        this.begin(n);
      }, "pushState"),
      stateStackSize: /* @__PURE__ */ y(function() {
        return this.conditionStack.length;
      }, "stateStackSize"),
      options: { "case-insensitive": !0 },
      performAction: /* @__PURE__ */ y(function(n, d, c, r) {
        switch (c) {
          case 0:
            return this.begin("acc_title"), 24;
          case 1:
            return this.popState(), "acc_title_value";
          case 2:
            return this.begin("acc_descr"), 26;
          case 3:
            return this.popState(), "acc_descr_value";
          case 4:
            this.begin("acc_descr_multiline");
            break;
          case 5:
            this.popState();
            break;
          case 6:
            return "acc_descr_multiline_value";
          case 7:
            return 33;
          case 8:
            return 34;
          case 9:
            return 35;
          case 10:
            return 36;
          case 11:
            return 10;
          case 12:
            break;
          case 13:
            return 8;
          case 14:
            return 50;
          case 15:
            return 72;
          case 16:
            return 4;
          case 17:
            return this.begin("block"), 17;
          case 18:
            return 49;
          case 19:
            return 49;
          case 20:
            return 42;
          case 21:
            return 15;
          case 22:
            return 13;
          case 23:
            break;
          case 24:
            return 61;
          case 25:
            return 58;
          case 26:
            return 58;
          case 27:
            return 62;
          case 28:
            break;
          case 29:
            return this.popState(), 19;
          case 30:
            return d.yytext[0];
          case 31:
            return 20;
          case 32:
            return 21;
          case 33:
            return this.begin("style"), 44;
          case 34:
            return this.popState(), 10;
          case 35:
            break;
          case 36:
            return 13;
          case 37:
            return 42;
          case 38:
            return 49;
          case 39:
            return this.begin("style"), 37;
          case 40:
            return 43;
          case 41:
            return 65;
          case 42:
            return 67;
          case 43:
            return 67;
          case 44:
            return 67;
          case 45:
            return 65;
          case 46:
            return 65;
          case 47:
            return 66;
          case 48:
            return 66;
          case 49:
            return 66;
          case 50:
            return 66;
          case 51:
            return 66;
          case 52:
            return 67;
          case 53:
            return 66;
          case 54:
            return 67;
          case 55:
            return 68;
          case 56:
            return 68;
          case 57:
            return 51;
          case 58:
            return 68;
          case 59:
            return 68;
          case 60:
            return 68;
          case 61:
            return 52;
          case 62:
            return 48;
          case 63:
            return 68;
          case 64:
            return 65;
          case 65:
            return 66;
          case 66:
            return 67;
          case 67:
            return 69;
          case 68:
            return 70;
          case 69:
            return 71;
          case 70:
            return 71;
          case 71:
            return 70;
          case 72:
            return 70;
          case 73:
            return 70;
          case 74:
            return 41;
          case 75:
            return 47;
          case 76:
            return 40;
          case 77:
            return d.yytext[0];
          case 78:
            return 6;
        }
      }, "anonymous"),
      rules: [
        /^(?:accTitle\s*:\s*)/i,
        /^(?:(?!\n||)*[^\n]*)/i,
        /^(?:accDescr\s*:\s*)/i,
        /^(?:(?!\n||)*[^\n]*)/i,
        /^(?:accDescr\s*\{\s*)/i,
        /^(?:[\}])/i,
        /^(?:[^\}]*)/i,
        /^(?:.*direction\s+TB[^\n]*)/i,
        /^(?:.*direction\s+BT[^\n]*)/i,
        /^(?:.*direction\s+RL[^\n]*)/i,
        /^(?:.*direction\s+LR[^\n]*)/i,
        /^(?:[\n]+)/i,
        /^(?:\s+)/i,
        /^(?:[\s]+)/i,
        /^(?:"[^"%\r\n\v\b\\]+")/i,
        /^(?:"[^"]*")/i,
        /^(?:erDiagram\b)/i,
        /^(?:\{)/i,
        /^(?:#)/i,
        /^(?:#)/i,
        /^(?:,)/i,
        /^(?::::)/i,
        /^(?::)/i,
        /^(?:\s+)/i,
        /^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,
        /^(?:([^\s]*)[~].*[~]([^\s]*))/i,
        /^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,
        /^(?:"[^"]*")/i,
        /^(?:[\n]+)/i,
        /^(?:\})/i,
        /^(?:.)/i,
        /^(?:\[)/i,
        /^(?:\])/i,
        /^(?:style\b)/i,
        /^(?:[\n]+)/i,
        /^(?:\s+)/i,
        /^(?::)/i,
        /^(?:,)/i,
        /^(?:#)/i,
        /^(?:classDef\b)/i,
        /^(?:class\b)/i,
        /^(?:one or zero\b)/i,
        /^(?:one or more\b)/i,
        /^(?:one or many\b)/i,
        /^(?:1\+)/i,
        /^(?:\|o\b)/i,
        /^(?:zero or one\b)/i,
        /^(?:zero or more\b)/i,
        /^(?:zero or many\b)/i,
        /^(?:0\+)/i,
        /^(?:\}o\b)/i,
        /^(?:many\(0\))/i,
        /^(?:many\(1\))/i,
        /^(?:many\b)/i,
        /^(?:\}\|)/i,
        /^(?:one\b)/i,
        /^(?:only one\b)/i,
        /^(?:[0-9]+\.[0-9]+)/i,
        /^(?:1(?=\s+[A-Za-z_"']))/i,
        /^(?:1(?=\s+[0-9]))/i,
        /^(?:1(?=(--|\.\.|\.-|-\.)))/i,
        /^(?:1\b)/i,
        /^(?:[0-9]+)/i,
        /^(?:\|\|)/i,
        /^(?:o\|)/i,
        /^(?:o\{)/i,
        /^(?:\|\{)/i,
        /^(?:u(?=[\.\-\|]))/i,
        /^(?:\.\.)/i,
        /^(?:--)/i,
        /^(?:to\b)/i,
        /^(?:optionally to\b)/i,
        /^(?:\.-)/i,
        /^(?:-\.)/i,
        /^(?:([^\x00-\x7F]|\w|-|\*)+)/i,
        /^(?:;)/i,
        /^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,
        /^(?:.)/i,
        /^(?:$)/i
      ],
      conditions: {
        style: {
          rules: [
            34,
            35,
            36,
            37,
            38,
            74,
            75
          ],
          inclusive: !1
        },
        acc_descr_multiline: {
          rules: [5, 6],
          inclusive: !1
        },
        acc_descr: {
          rules: [3],
          inclusive: !1
        },
        acc_title: {
          rules: [1],
          inclusive: !1
        },
        block: {
          rules: [
            23,
            24,
            25,
            26,
            27,
            28,
            29,
            30
          ],
          inclusive: !1
        },
        INITIAL: {
          rules: [
            0,
            2,
            4,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            31,
            32,
            33,
            39,
            40,
            41,
            42,
            43,
            44,
            45,
            46,
            47,
            48,
            49,
            50,
            51,
            52,
            53,
            54,
            55,
            56,
            57,
            58,
            59,
            60,
            61,
            62,
            63,
            64,
            65,
            66,
            67,
            68,
            69,
            70,
            71,
            72,
            73,
            76,
            77,
            78
          ],
          inclusive: !0
        }
      }
    };
  }();
  function V() {
    this.yy = {};
  }
  return y(V, "Parser"), V.prototype = ut, ut.Parser = V, new V();
}();
gt.parser = gt;
var te = gt, D, ee = (D = class {
  constructor() {
    this.entities = /* @__PURE__ */ new Map(), this.relationships = [], this.classes = /* @__PURE__ */ new Map(), this.direction = "TB", this.Cardinality = {
      ZERO_OR_ONE: "ZERO_OR_ONE",
      ZERO_OR_MORE: "ZERO_OR_MORE",
      ONE_OR_MORE: "ONE_OR_MORE",
      ONLY_ONE: "ONLY_ONE",
      MD_PARENT: "MD_PARENT"
    }, this.Identification = {
      NON_IDENTIFYING: "NON_IDENTIFYING",
      IDENTIFYING: "IDENTIFYING"
    }, this.setAccTitle = Ft, this.getAccTitle = Yt, this.setAccDescription = Pt, this.getAccDescription = zt, this.setDiagramTitle = Gt, this.getDiagramTitle = Kt, this.getConfig = /* @__PURE__ */ y(() => it().er, "getConfig"), this.clear(), this.addEntity = this.addEntity.bind(this), this.addAttributes = this.addAttributes.bind(this), this.addRelationship = this.addRelationship.bind(this), this.setDirection = this.setDirection.bind(this), this.addCssStyles = this.addCssStyles.bind(this), this.addClass = this.addClass.bind(this), this.setClass = this.setClass.bind(this), this.setAccTitle = this.setAccTitle.bind(this), this.setAccDescription = this.setAccDescription.bind(this);
  }
  addEntity(i, a = "") {
    var l;
    return this.entities.has(i) ? !((l = this.entities.get(i)) != null && l.alias) && a && (this.entities.get(i).alias = a, v.info(`Add alias '${a}' to entity '${i}'`)) : (this.entities.set(i, {
      id: `entity-${i}-${this.entities.size}`,
      label: i,
      attributes: [],
      alias: a,
      shape: "erBox",
      look: it().look ?? "default",
      cssClasses: "default",
      cssStyles: [],
      labelType: "markdown"
    }), v.info("Added new entity :", i)), this.entities.get(i);
  }
  getEntity(i) {
    return this.entities.get(i);
  }
  getEntities() {
    return this.entities;
  }
  getClasses() {
    return this.classes;
  }
  addAttributes(i, a) {
    let l = this.addEntity(i), o;
    for (o = a.length - 1; o >= 0; o--) a[o].keys || (a[o].keys = []), a[o].comment || (a[o].comment = ""), l.attributes.push(a[o]), v.debug("Added attribute ", a[o].name);
  }
  addRelationship(i, a, l, o) {
    let h = this.entities.get(i), p = this.entities.get(l);
    if (!h || !p) return;
    let u = {
      entityA: h.id,
      roleA: a,
      entityB: p.id,
      relSpec: o
    };
    this.relationships.push(u), v.debug("Added new relationship :", u);
  }
  getRelationships() {
    return this.relationships;
  }
  getDirection() {
    return this.direction;
  }
  setDirection(i) {
    this.direction = i;
  }
  getCompiledStyles(i) {
    let a = [];
    for (let l of i) {
      let o = this.classes.get(l);
      o != null && o.styles && (a = [...a, ...o.styles ?? []].map((h) => h.trim())), o != null && o.textStyles && (a = [...a, ...o.textStyles ?? []].map((h) => h.trim()));
    }
    return a;
  }
  addCssStyles(i, a) {
    for (let l of i) {
      let o = this.entities.get(l);
      if (!a || !o) return;
      for (let h of a) o.cssStyles.push(h);
    }
  }
  addClass(i, a) {
    i.forEach((l) => {
      let o = this.classes.get(l);
      o === void 0 && (o = {
        id: l,
        styles: [],
        textStyles: []
      }, this.classes.set(l, o)), a && a.forEach(function(h) {
        if (/color/.exec(h)) {
          let p = h.replace("fill", "bgFill");
          o.textStyles.push(p);
        }
        o.styles.push(h);
      });
    });
  }
  setClass(i, a) {
    for (let l of i) {
      let o = this.entities.get(l);
      if (o) for (let h of a) o.cssClasses += " " + h;
    }
  }
  clear() {
    this.entities = /* @__PURE__ */ new Map(), this.classes = /* @__PURE__ */ new Map(), this.relationships = [], Ut();
  }
  getData() {
    let i = [], a = [], l = it(), o = 0;
    for (let p of this.entities.keys()) {
      let u = this.entities.get(p);
      u && (u.cssCompiledStyles = this.getCompiledStyles(u.cssClasses.split(" ")), u.colorIndex = o++, i.push(u));
    }
    let h = 0;
    for (let p of this.relationships) {
      let u = {
        id: Zt(p.entityA, p.entityB, {
          prefix: "id",
          counter: h++
        }),
        type: "normal",
        curve: "basis",
        start: p.entityA,
        end: p.entityB,
        label: p.roleA,
        labelpos: "c",
        thickness: "normal",
        classes: "relationshipLine",
        arrowTypeStart: p.relSpec.cardB.toLowerCase(),
        arrowTypeEnd: p.relSpec.cardA.toLowerCase(),
        pattern: p.relSpec.relType == "IDENTIFYING" ? "solid" : "dashed",
        look: l.look,
        labelType: "markdown"
      };
      a.push(u);
    }
    return {
      nodes: i,
      edges: a,
      other: {},
      config: l,
      direction: "TB"
    };
  }
}, y(D, "ErDB"), D), xt = {};
Wt(xt, { draw: () => se });
var se = /* @__PURE__ */ y(async function(s, i, a, l) {
  v.info("REF0:"), v.info("Drawing er diagram (unified)", i);
  let { securityLevel: o, er: h, layout: p } = it(), u = l.db.getData(), E = Jt(i, o);
  u.type = l.type, u.layoutAlgorithm = jt(p), u.config.flowchart.nodeSpacing = (h == null ? void 0 : h.nodeSpacing) || 140, u.config.flowchart.rankSpacing = (h == null ? void 0 : h.rankSpacing) || 80, u.direction = l.db.getDirection();
  let { config: W } = u, { look: j } = W;
  j === "neo" ? u.markers = [
    "only_one_neo",
    "zero_or_one_neo",
    "one_or_more_neo",
    "zero_or_more_neo"
  ] : u.markers = [
    "only_one",
    "zero_or_one",
    "one_or_more",
    "zero_or_more"
  ], u.diagramId = i, await Xt(u, E), u.layoutAlgorithm === "elk" && E.select(".edges").lower();
  let O = E.selectAll('[id*="-background"]');
  Array.from(O).length > 0 && O.each(function() {
    let L = qt(this), X = L.attr("id").replace("-background", ""), T = E.select(`#${CSS.escape(X)}`);
    if (!T.empty()) {
      let I = T.attr("transform");
      L.attr("transform", I);
    }
  }), Ht.insertTitle(E, "erDiagramTitleText", (h == null ? void 0 : h.titleTopMargin) ?? 25, l.db.getDiagramTitle()), Vt(E, 8, "erDiagram", (h == null ? void 0 : h.useMaxWidth) ?? !0);
}, "draw"), Ct = /* @__PURE__ */ y((s, i) => {
  let a = Qt;
  return Bt(a(s, "r"), a(s, "g"), a(s, "b"), i);
}, "fade"), rt = /* @__PURE__ */ new Set(["redux-color", "redux-dark-color"]), ie = /* @__PURE__ */ y((s) => {
  let { theme: i, look: a, bkgColorArray: l, borderColorArray: o } = s;
  if (!rt.has(i)) return "";
  let h = (l == null ? void 0 : l.length) > 0, p = "";
  for (let u = 0; u < s.THEME_COLOR_LIMIT; u++) p += `

    [data-look="${a}"][data-color-id="color-${u}"].node path {
    stroke: ${o[u]};
    ${h ? `fill: ${l[u]};` : ""}
    }

    [data-look="${a}"][data-color-id="color-${u}"].node  rect {
    stroke: ${o[u]};
    ${h ? `fill: ${l[u]};` : ""}
     }
    `;
  return p;
}, "genColor"), le = {
  parser: te,
  get db() {
    return new ee();
  },
  renderer: xt,
  styles: /* @__PURE__ */ y((s) => {
    let { look: i, theme: a, erEdgeLabelBackground: l, strokeWidth: o } = s;
    return `
    ${ie(s)}
  .entityBox {
    fill: ${s.mainBkg};
    stroke: ${s.nodeBorder};
  }

  .relationshipLabelBox {
    fill: ${s.tertiaryColor};
    opacity: 0.7;
    background-color: ${s.tertiaryColor};
      rect {
        opacity: 0.5;
      }
  }

  .labelBkg {
    background-color: ${rt.has(a) && l ? l : Ct(s.tertiaryColor, 0.5)};
  }

  .edgeLabel {
    background-color: ${rt.has(a) && l ? l : s.edgeLabelBackground};
  }
  .edgeLabel .label rect {
    fill: ${rt.has(a) && l ? l : s.edgeLabelBackground};
  }
  .edgeLabel .label text {
    fill: ${s.textColor};
  }

  .edgeLabel .label {
    fill: ${s.nodeBorder};
    font-size: 14px;
  }

  .label {
    font-family: ${s.fontFamily};
    color: ${s.nodeTextColor || s.textColor};
  }

  .edge-pattern-dashed {
    stroke-dasharray: 8,8;
  }

  .node rect,
  .node circle,
  .node ellipse,
  .node polygon
  {
    fill: ${s.mainBkg};
    stroke: ${s.nodeBorder};
    stroke-width: ${i === "neo" ? o : "1px"};
  }

  .relationshipLine {
    stroke: ${s.lineColor};
    stroke-width: ${i === "neo" ? o : "1px"};
    fill: none;
  }

  .marker {
    fill: none !important;
    stroke: ${s.lineColor} !important;
    stroke-width: 1;
  }
  [data-look=neo].labelBkg {
    background-color: ${Ct(s.tertiaryColor, 0.5)};
  }
`;
  }, "getStyles")
};
export {
  le as diagram
};
