[
  {
    "type": "jpg",
    "ext": "jpg",
    "mime": "image/jpeg",
    "rules": [
      { "type": "equal", "start": 0, "end": 3, "bytes": "ffd8ff"  }
    ]
  },

  {
    "type": "png",
    "ext": "png",
    "mime": "image/png",
    "rules": [
      { "type": "equal", "start": 0,"end": 4, "bytes": "89504e47" }
    ]
  },

  {
    "type": "gif",
    "ext": "gif",
    "mime": "image/gif",
    "rules": [
      { "type": "equal", "start": 0,"end": 3, "bytes": "474946" }
    ]
  },

  {
    "type": "webp",
    "ext": "webp",
    "mime": "image/webp",
    "rules": [
      { "type": "equal", "start": 8,"end": 12, "bytes": "57454250" }
    ]
  },

  {
    "type": "flif",
    "ext": "flif",
    "mime": "image/flif",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "464c4946" }
    ]
  },

  {
    "type": "cr2",
    "ext": "cr2",
    "mime": "image/x-canon-cr2",
    "rules": [
      { "type": "and", "rules":
      [
        { "type": "or", "rules":
        [
          { "type": "equal", "start": 0, "end": 4, "bytes": "49492a00" },
          { "type": "equal", "start": 0, "end": 4,  "bytes": "4d4d002a" }
        ]
        },
        { "type": "equal", "start": 8, "end": 10, "bytes": "4352" }
      ]
      }
    ]
  },

  {
    "type": "tif",
    "ext": "tif",
    "mime": "image/tiff",
    "rules": [
      { "type": "and", "rules":
        [
          { "type": "or", "rules":
            [
              { "type": "equal", "start": 0, "end": 4, "bytes": "49492a00" },
              { "type": "equal", "start": 0, "end": 4,  "bytes": "4d4d002a" }
            ]
          },
          { "type": "notEqual", "start": 8, "end": 10, "bytes": "4352" }
        ]
      }
    ]
  },

  {
    "type": "bmp",
    "ext": "bmp",
    "mime": "image/bmp",
    "rules": [
      { "type": "equal", "start": 0,"end": 2, "bytes": "424d" }
    ]
  },

  {
    "type": "jxr",
    "ext": "jxr",
    "mime": "image/vnd.ms-photo",
    "rules": [
      { "type": "equal", "start": 0, "end": 3, "bytes": "4949bc" }
    ]
  },

  {
    "type": "psd",
    "ext": "psd",
    "mime": "image/vnd.adobe.photoshop",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "38425053" }
    ]
  },

  {
    "type": "zip",
    "ext": "zip",
    "mime": "application/zip",
    "rules": [
      { "type": "equal", "start": 0, "end": 2, "bytes": "504b" },
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 2, "end": 3, "bytes": "03" },
          { "type": "equal", "start": 2, "end": 3, "bytes": "05" },
          { "type": "equal", "start": 2, "end": 3, "bytes": "07" }
        ]
      },
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 3, "end": 4, "bytes": "04" },
          { "type": "equal", "start": 3, "end": 4, "bytes": "06" },
          { "type": "equal", "start": 3, "end": 4, "bytes": "08" }
        ]
      },
      { "type": "notEqual", "start": 36, "end": 58, "bytes": "70656170706c69636174696f6e2f657075622b7a6970" },
      { "type": "notEqual", "start": 30, "end": 50, "bytes": "4d4554412d494e462f6d6f7a696c6c612e727361" }
    ]
  },

  {
    "type": "epub",
    "ext": "epub",
    "mime": "application/epub+zip",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "504b0304" },
      { "type": "equal", "start": 36, "end": 58, "bytes": "70656170706c69636174696f6e2f657075622b7a6970" }
    ]
  },

  {
    "type": "xpi",
    "ext": "xpi",
    "mime": "application/x-xpinstall",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "504b0304" },
      { "type": "equal", "start": 30, "end": 50, "bytes": "4d4554412d494e462f6d6f7a696c6c612e727361" }
    ]
  },

  {
    "type": "tar",
    "ext": "tar",
    "mime": "application/x-tar",
    "rules": [
      { "type": "equal", "start": 257, "end": 262, "bytes": "7573746172" }
    ]
  },

  {
    "type": "rar",
    "ext": "rar",
    "mime": "application/x-rar-compressed",
    "rules": [
      { "type": "equal", "start": 0, "end": 6, "bytes": "526172211a07" },
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 6, "end": 7, "bytes": "00" },
          { "type": "equal", "start": 6, "end": 7, "bytes": "01" }
        ]
      }
    ]
  },

  {
    "type": "gz",
    "ext": "gz",
    "mime": "application/gzip",
    "rules": [
      { "type": "equal", "start": 0, "end": 3, "bytes": "1f8b08" }
    ]
  },

  {
    "type": "bz2",
    "ext": "bz2",
    "mime": "application/x-bzip2",
    "rules": [
      { "type": "equal", "start": 0, "end": 3, "bytes": "425a68" }
    ]
  },

  {
    "type": "7z",
    "ext": "7z",
    "mime": "application/x-7z-compressed",
    "rules": [
      { "type": "equal", "start": 0, "end": 6, "bytes": "377abcaf271c" }
    ]
  },

  {
    "type": "dmg",
    "ext": "dmg",
    "mime": "application/x-apple-diskimage",
    "rules": [
      { "type": "equal", "start": 0, "end": 2, "bytes": "7801" }
    ]
  },

  {
    "type": "mov",
    "ext": "mov",
    "mime": "video/quicktime",
    "rules": [
      {
        "type": "or",
        "rules": [
          { "type": "equal", "start": 4, "end": 12, "bytes": "6674797071742020", "desc": "ftypqt  " },
          { "type": "equal", "start": 4, "end": 8, "bytes": "6d6f6f76", "desc": "moov" },
          { "type": "equal", "start": 4, "end": 8, "bytes": "66726565", "desc": "free" },
          { "type": "equal", "start": 4, "end": 8, "bytes": "6d646174", "desc": "mdat" },
          { "type": "equal", "start": 4, "end": 8, "bytes": "77696465", "desc": "wide" },
          { "type": "equal", "start": 4, "end": 8, "bytes": "706e6f74", "desc": "pnot" },
          { "type": "equal", "start": 4, "end": 8, "bytes": "736b6970", "desc": "skip" }
        ]
      }
    ],
    "desc": "must come before mp4"
  },

  {
    "type": "mp4",
    "ext": "mp4",
    "mime": "video/mp4",
    "rules": [
      { "type": "or", "rules":
      [
        { "type": "equal", "start": 0, "end": 4, "bytes": "33677035", "desc": "3gp5" },
        { "type": "and", "rules":
        [
          { "type": "equal", "start": 0, "end": 3, "bytes": "000000" },
          { "type": "equal", "start": 4, "end": 8, "bytes": "66747970", "desc": "ftyp" },
          { "type": "or", "rules":
          [
            { "type": "equal", "start": 8, "end": 12, "bytes": "6d703431", "desc": "mp41" },
            { "type": "equal", "start": 8, "end": 12, "bytes": "6d703432", "desc": "mp42" },
            { "type": "equal", "start": 8, "end": 12, "bytes": "69736f6d", "desc": "isom" },
            { "type": "equal", "start": 8, "end": 12, "bytes": "69736f32", "desc": "iso2" },
            { "type": "equal", "start": 8, "end": 12, "bytes": "6d6d7034", "desc": "mmp4" },

            { "type": "and", "rules": [
              { "type": "equal", "start": 8, "end": 11, "bytes": "4d3456", "desc": "M4V" },
              { "type": "equal", "start": 16, "end": 24, "bytes": "4d3456204d344120", "desc": "M4V M4A " }
            ], "desc": "m4v+m4a, extension is default mp4"
            },

            { "type": "equal", "start": 8, "end": 11, "bytes": "4d3456", "desc": "M4V",
              "ext": "m4v", "mime": "video/mp4"
            },

            { "type": "equal", "start": 8, "end": 11, "bytes": "4d3441", "desc": "M4A",
              "ext": "m4a", "mime": "audio/mp4"
            },

            { "type": "equal", "start": 8, "end": 11, "bytes": "4d3450", "desc": "M4P",
              "ext": "mp4", "mime": "audio/mp4a-latm"
            },

            { "type": "equal", "start": 8, "end": 11, "bytes": "4d3442", "desc": "M4B",
              "ext": "mp4", "mime": "audio/mp4a-latm"
            },

            { "type": "equal", "start": 8, "end": 11, "bytes": "336732", "desc": "3g2",
              "ext": "3g2", "mime": "video/3gpp2"
            },

            { "type": "equal", "start": 8, "end": 10, "bytes": "3367", "desc": "3g",
              "ext": "3gp", "mime": "video/3gpp"
            },

            { "type": "equal", "start": 8, "end": 12, "bytes": "64617368", "desc": "dash" },

            { "type": "default", "mime": "video/mpeg4-generic" }
          ]
          }
        ]
        }
      ]
      }
    ]
  },
  
  {
    "type": "riff",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "52494646", "desc": "RIFF" },
      { "type": "or", "rules":
      [
        { "type": "equal", "start": 8, "end": 11, "bytes": "415649", "desc": "AVI",
          "ext": "avi", "mime": "video/x-msvideo"
        },
        { "type": "equal", "start": 8, "end": 12, "bytes": "57415645", "desc": "WAVE",
          "ext": "wav", "mime": "audio/x-wav"
        },
        { "type": "equal", "start": 8, "end": 12, "bytes": "514c434d", "desc": "QLCM",
          "ext": "qcp", "mime": "audio/qcelp"
        }
      ]
      }
    ]
  },

  {
    "type": "mid",
    "ext": "mid",
    "mime": "audio/midi",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "4d546864" }
    ]
  },

  {
    "type": "mkv",
    "ext": "mkv",
    "mime": "video/x-matroska",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "1a45dfa3" },
      {
        "type": "or",
        "search": { "id": 1, "start": 4, "end": 4096, "bytes": "4282" },
        "rules":
        [
          { "type": "equal", "search_ref": 1, "start": 3, "end": 11, "bytes": "6d6174726f736b61", "desc": "matroska" },
          { "type": "equal", "search_ref": 1, "start": 3, "end": 7, "bytes": "7765626d", "desc": "Webm",
            "ext": "webm",
            "mime": "video/webm"
          }
        ]
      }
    ]
  },

  {
    "type": "wasm",
    "ext": "wasm",
    "mime": "application/wasm",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "0061736d" }
    ]
  },

  {
    "type": "asf",
    "ext": "asf",
    "mime": "application/vnd.ms-asf",
    "rules": [
      { "type": "equal", "start": 0, "end": 10, "bytes": "3026b2758e66cf11a6d9" },
      {
        "type": "or", "rules":
        [
          {
            "type": "and", "rules": [
              { "type": "contains", "start": 10, "end": 1024, "bytes": "409e69f84d5bcf11a8fd00805f5c442b" },
              { "type": "contains", "start": 10, "end": 1024, "bytes": "c0ef19bc4d5bcf11a8fd00805f5c442b" }
            ],
            "ext": "wmv",
            "mime": "video/x-ms-asf"
          },
          { "type": "contains", "start": 10, "end": 1024, "bytes": "409e69f84d5bcf11a8fd00805f5c442b",
            "ext": "wma",
            "mime": "audio/x-ms-wma"
          },
          { "type": "contains", "start": 10, "end": 1024, "bytes": "c0ef19bc4d5bcf11a8fd00805f5c442b",
            "ext": "wmv",
            "mime": "video/x-ms-wmv"
          },
          { "type": "default", "desc": "fallback to generic asf" }
        ]
      }
    ]
  },

  {
    "type": "mpg",
    "ext": "mpg",
    "mime": "video/mpeg",
    "rules": [
      { "type": "equal", "start": 0, "end": 3, "bytes": "000001" },
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 3, "end": 4, "bytes": "b0"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "b1"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "b2"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "b3"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "b4"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "b5"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "b6"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "b7"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "b8"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "b9"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "ba"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "bb"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "bc"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "bd"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "be"},
          { "type": "equal", "start": 3, "end": 4, "bytes": "bf"}
        ]
      }
    ]
  },

  {
    "type": "mp3",
    "ext": "mp3",
    "mime": "audio/mpeg",
    "rules": [
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 0, "end": 3, "bytes": "494433" },
          { "type": "equal", "start": 0, "end": 2, "bytes": "fffb" }
        ]
      }
    ]
  },

  {
    "type": "opus",
    "ext": "opus",
    "mime": "audio/opus",
    "rules": [
      { "type": "equal", "start": 28, "end": 36, "bytes": "4f70757348656164" }
    ]
  },

  {
    "type": "ogg",
    "ext": "ogg",
    "mime": "audio/ogg",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "4f676753", "desc": "OggS" },
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 28, "end": 35, "bytes": "807468656f7261", "desc": "\u0080theora",
            "ext": "ogv", "mime": "video/ogg"
          },
          { "type": "equal", "start": 28, "end": 35, "bytes": "01766964656f00", "desc": "\u0001video\u0000",
            "ext": "ogm", "mime": "video/ogg"
          },
          { "type": "equal", "start": 28, "end": 33, "bytes": "7f464c4143", "desc": "FLAC",
            "ext": "oga", "mime": "audio/ogg"
          },
          { "type": "equal", "start": 28, "end": 35, "bytes": "53706565782020", "desc": "Speex  ",
            "ext": "spx", "mime": "audio/ogg"
          },
          { "type": "equal", "start": 28, "end": 35, "bytes": "01766f72626973", "desc": "\u0001vorbis",
            "ext": "ogg", "mime": "audio/ogg"
          },
          { "type": "default", "ext": "ogx", "mime": "application/ogg" }
        ]
      },
      { "type": "notEqual", "start": 28, "end": 36, "bytes": "4f70757348656164" }
    ]
  },

  {
    "type": "flac",
    "ext": "flac",
    "mime": "audio/x-flac",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "664c6143" }
    ]
  },

  {
    "type": "ape",
    "ext": "ape",
    "mime": "audio/ape",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "4d414320" }
    ]
  },

  {
    "type": "wv",
    "ext": "wv",
    "mime": "audio/wavpack",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "7776706b" }
    ]
  },

  {
    "type": "amr",
    "ext": "amr",
    "mime": "audio/amr",
    "rules": [
      { "type": "equal", "start": 0, "end": 6, "bytes": "2321414d520a" }
    ]
  },

  {
    "type": "pdf",
    "ext": "pdf",
    "mime": "application/pdf",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "25504446" }
    ]
  },

  {
    "type": "exe",
    "ext": "exe",
    "mime": "application/x-msdownload",
    "iana": "application/vnd.microsoft.portable-executable",
    "rules": [
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 0, "end": 2, "bytes": "4d5a" },
          { "type": "equal", "start": 0, "end": 2, "bytes": "4d7a" },
          { "type": "equal", "start": 0, "end": 2, "bytes": "6d7a" },
          { "type": "equal", "start": 0, "end": 2, "bytes": "6d5a" }
        ]
      }
    ]
  },

  {
    "type": "swf",
    "ext": "swf",
    "mime": "application/x-shockwave-flash",
    "iana": "application/vnd.adobe.flash.movie",
    "rules": [
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 0, "end": 1, "bytes": "43" },
          { "type": "equal", "start": 0, "end": 1, "bytes": "46" }
        ]
      },
      { "type": "equal", "start": 1, "end": 3, "bytes": "5753" }
    ]
  },

  {
    "type": "rtf",
    "ext": "rtf",
    "mime": "application/rtf",
    "rules": [
      { "type": "equal", "start": 0, "end": 5, "bytes": "7b5c727466" }
    ]
  },

  {
    "type": "woff",
    "ext": "woff",
    "mime": "application/font-woff",
    "iana": "font/woff",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "774f4646" },
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 4, "end": 8, "bytes": "00010000" },
          { "type": "equal", "start": 4, "end": 8, "bytes": "4f54544f" }
        ]
      }
    ]
  },

  {
    "type": "woff2",
    "ext": "woff2",
    "mime": "application/font-woff",
    "iana": "font/woff2",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "774f4632" },
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 4, "end": 8, "bytes": "00010000" },
          { "type": "equal", "start": 4, "end": 8, "bytes": "4f54544f" }
        ]
      }
    ]
  },

  {
    "type": "eot",
    "ext": "eot",
    "mime": "application/vnd.ms-fontobject",
    "rules": [
      { "type": "equal", "start": 34, "end": 36, "bytes": "4c50" },
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 8, "end": 11, "bytes": "000001" },
          { "type": "equal", "start": 8, "end": 11, "bytes": "010002" },
          { "type": "equal", "start": 8, "end": 11, "bytes": "020002" }
        ]
      }
    ]
  },

  {
    "type": "ttf",
    "ext": "ttf",
    "mime": "application/font-sfnt",
    "iana": "font/ttf",
    "rules": [
      { "type": "equal", "start": 0, "end": 5, "bytes": "0001000000" }
    ]
  },

  {
    "type": "otf",
    "ext": "otf",
    "mime": "application/font-sfnt",
    "iana": "font/otf",
    "rules": [
      { "type": "equal", "start": 0, "end": 5, "bytes": "4f54544f00" }
    ]
  },

  {
    "type": "ico",
    "ext": "ico",
    "mime": "image/x-icon",
    "iana": "image/vnd.microsoft.icon",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "00000100" }
    ]
  },

  {
    "type": "cur",
    "ext": "cur",
    "mime": "image/x-icon",
    "iana": "image/vnd.microsoft.icon",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "00000200" }
    ]
  },

  {
    "type": "flv",
    "ext": "flv",
    "mime": "video/x-flv",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "464c5601" }
    ]
  },

  {
    "type": "ps",
    "ext": "ps",
    "mime": "application/postscript",
    "rules": [
      { "type": "equal", "start": 0, "end": 2, "bytes": "2521" }
    ]
  },

  {
    "type": "xz",
    "ext": "xz",
    "mime": "application/x-xz",
    "rules": [
      { "type": "equal", "start": 0, "end": 6, "bytes": "fd377a585a00" }
    ]
  },

  {
    "type": "sqlite",
    "ext": "sqlite",
    "mime": "application/x-sqlite3",
    "iana": "application/vnd.sqlite3",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "53514c69" }
    ]
  },

  {
    "type": "nes",
    "ext": "nes",
    "mime": "application/x-nintendo-nes-rom",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "4e45531a" }
    ]
  },

  {
    "type": "dex",
    "ext": "dex",
    "mime": "application/x-dex",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "6465780a" }
    ]
  },

  {
    "type": "crx",
    "ext": "crx",
    "mime": "application/x-google-chrome-extension",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "43723234" }
    ]
  },

  {
    "type": "elf",
    "ext": "elf",
    "mime": "application/x-executable",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "7f454c46" }
    ]
  },

  {
    "type": "cab",
    "ext": "cab",
    "mime": "application/vnd.ms-cab-compressed",
    "rules": [
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 0, "end": 4, "bytes": "4d534346" },
          { "type": "equal", "start": 0, "end": 4, "bytes": "49536328" }
        ]
      }
    ]
  },

  {
    "type": "deb",
    "ext": "deb",
    "mime": "application/x-deb",
    "rules": [
      { "type": "equal", "start": 0, "end": 21, "bytes": "213c617263683e0a64656269616e2d62696e617279" }
    ]
  },

  {
    "type": "ar",
    "ext": "ar",
    "mime": "application/x-unix-archive",
    "rules": [
      { "type": "equal", "start": 0, "end": 7, "bytes": "213c617263683e" },
      { "type": "notEqual", "start": 0, "end": 21, "bytes": "213c617263683e0a64656269616e2d62696e617279" }
    ]
  },

  {
    "type": "rpm",
    "ext": "rpm",
    "mime": "application/x-rpm",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "edabeedb" }
    ]
  },

  {
    "type": "Z",
    "ext": "Z",
    "mime": "application/x-compress",
    "rules": [
      { "type": "or", "rules":
        [
          { "type": "equal", "start": 0, "end": 2, "bytes": "1fa0" },
          { "type": "equal", "start": 0, "end": 2, "bytes": "1f9d" }
        ]
      }
    ]
  },

  {
    "type": "lz",
    "ext": "lz",
    "mime": "application/x-lzip",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "4c5a4950" }
    ]
  },

  {
    "type": "msi",
    "ext": "msi",
    "mime": "application/x-msi",
    "rules": [
      { "type": "equal", "start": 0, "end": 8, "bytes": "d0cf11e0a1b11ae1" }
    ]
  },

  {
    "type": "mxf",
    "ext": "mxf",
    "mime": "application/mxf",
    "rules": [
      { "type": "equal", "start": 0, "end": 14, "bytes": "060e2b34020501010d0102010102" }
    ]
  },

  {
    "type": "mts",
    "ext": "mts",
    "mime": "video/mp2t",
    "rules": [
      { "type": "and", "rules":
      [
        { "type": "equal", "start": 4, "end": 5, "bytes": "47" },
        { "type": "or", "rules":
        [
          { "type": "equal", "start": 192, "end": 193, "bytes": "47" },
          { "type": "equal", "start": 196, "end": 197, "bytes": "47" }
        ]
        }
      ]
      }
    ]
  },

  {
    "type": "blend",
    "ext": "blend",
    "mime": "application/x-blender",
    "rules": [
      { "type": "equal", "start": 0, "end": 7, "bytes": "424c454e444552", "desc": "BLENDER" }
    ]
  },

  {
    "type": "bpg",
    "ext": "bpg",
    "mime": "image/bpg",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "425047fb" }
    ]
  },

  {
    "type": "jpeg-2000",
    "rules": [
      { "type": "and", "rules": [
        { "type": "equal", "start": 0, "end": 12, "bytes": "0000000c6a5020200d0a870a" },
        { "type": "or", "rules": [

          { "type": "equal", "start": 20, "end": 24, "bytes": "6a703220",
            "ext": "jp2", "mime": "image/jp2"
          },

          { "type": "equal", "start": 20, "end": 24, "bytes": "6a707820",
            "ext": "jpx", "mime": "image/jpx"
          },

          { "type": "equal", "start": 20, "end": 24, "bytes": "6a706d20",
            "ext": "jpm", "mime": "image/jpm"
          },

          { "type": "equal", "start": 20, "end": 24, "bytes": "6d6a7032",
            "ext": "mj2", "mime": "image/mj2"
          }

        ] }
      ] }
    ]
  },

  {
    "type": "aif",
    "ext": "aif",
    "mime": "audio/aiff",
    "rules": [
      { "type": "equal", "start": 0, "end": 4, "bytes": "464f524d" }
    ]
  },

  {
    "type": "svg",
    "ext": "svg",
    "mime": "image/svg+xml",
    "rules": [
      { "type": "or", "recode_text": true, "rules":
      [
        { "type": "equal", "start": 0, "end": 4, "bytes": "3c737667", "desc": "<svg" },
        { "type": "and", "rules":
        [
          { "type": "equal", "start": 0, "end": 6,  "bytes": "3c3f786d6c20", "desc": "<?xml " },
          { "type": "contains", "bytes": "3c737667", "desc": "<svg" }
        ]
        }
      ]
      }
    ]
  },

  {
    "type": "xml",
    "ext": "xml",
    "mime": "application/xml",
    "recode_text": true,
    "rules": [
      { "type": "equal", "start": 0, "end": 6, "bytes": "3c3f786d6c20", "desc": "<?xml " }
    ]
  },

  {
    "type": "mobi",
    "ext": "mobi",
    "mime": "application/x-mobipocket-ebook",
    "rules": [
      { "type": "equal", "start": 60, "end": 68, "bytes": "424f4f4b4d4f4249" }
    ]
  },

  {
    "type": "heic",
    "rules": [
      { "type": "and", "rules":
      [
        { "type": "equal", "start": 4, "end": 8, "bytes": "66747970" },
        { "type": "or", "rules":
        [
          { "type": "equal", "start": 8, "end": 12, "bytes": "6d696631",
            "ext": "heic", "mime": "image/heif" },

          { "type": "equal", "start": 8, "end": 12, "bytes": "6d736631",
            "ext": "heic", "mime": "image/heif-sequence" },

          { "type": "or", "rules":
          [
            { "type": "equal", "start": 8, "end": 12, "bytes": "68656963" },
            { "type": "equal", "start": 8, "end": 12, "bytes": "68656978" }
          ], "ext": "heic", "mime": "image/heic"
          },

          { "type": "or", "rules":
          [
            { "type": "equal", "start": 8, "end": 12, "bytes": "68657663" },
            { "type": "equal", "start": 8, "end": 12, "bytes": "68657678" }
          ], "ext": "heic", "mime": "image/heic-sequence"
          }
        ]
        }
      ]
      }
    ]
  },

  {
    "type": "ktx",
    "ext": "ktx",
    "mime": "image/ktx",
    "rules": [
      { "type": "equal", "start": 0, "end": 12, "bytes": "ab4b5458203131bb0d0a1a0a" }
    ]
  },

  {
    "type": "dcm",
    "ext": "dcm",
    "mime": "application/dicom",
    "rules": [
      { "type": "equal", "start": 128, "end": 132, "bytes": "4449434d" }
    ]
  },

  {
    "type": "mpc",
    "ext": "mpc",
    "mime": "audio/x-musepack",
    "rules": [
      { "type": "or", "rules":
      [
        { "type": "equal", "start": 0, "end": 3, "bytes": "4d502b" },
        { "type": "equal", "start": 0, "end": 4, "bytes": "4d50434b" }
      ]
      }
    ]
  },

  {
    "type": "ics",
    "ext": "ics",
    "mime": "text/calendar",
    "recode_text": true,
    "rules": [
      { "type": "equal", "start": 0, "end": 6, "bytes": "424547494e3a" }
    ]
  },

  {
    "type": "glb",
    "ext": "glb",
    "mime": "model/gltf-binary",
    "rules": [
      { "type": "equal", "start": 0, "end": 8, "bytes": "676c544602000000" }
    ]
  },

  {
    "type": "pcap",
    "ext": "pcap",
    "mime": "application/vnd.tcpdump.pcap",
    "rules": [
      { "type": "or", "rules":
      [
        { "type": "equal", "start": 0, "end": 4, "bytes": "d4c3b2a1" },
        { "type": "equal", "start": 0, "end": 4, "bytes": "a1b2c3d4" }
      ]
      }
    ]
  },

  {
    "type": "html",
    "ext": "html",
    "mime": "text/html",
    "rules": [
      { "type": "or", "recode_text": true, "rules":
      [
        { "type": "contains", "bytes": "3c68746d6c" },
        { "type": "contains", "bytes": "3c00680074006d006c00" }
      ]
      }
    ]
  }
]