the repository which powers this website
-rw-r--r--cgit.mk6
-rw-r--r--icons/ace.svg1
-rw-r--r--icons/acemanifest.svg1
-rw-r--r--icons/adoc.svg1
-rw-r--r--icons/adonis.svg1
-rw-r--r--icons/adonisconfig.svg1
-rw-r--r--icons/afdesign.svg1
-rw-r--r--icons/afphoto.svg1
-rw-r--r--icons/afpub.svg1
-rw-r--r--icons/ai.svg1
-rw-r--r--icons/air.svg1
-rw-r--r--icons/angular.svg1
-rw-r--r--icons/anim.svg1
-rw-r--r--icons/astro.svg1
-rw-r--r--icons/astroconfig.svg1
-rw-r--r--icons/atomizer.svg1
-rw-r--r--icons/audio.svg1
-rw-r--r--icons/audiomp3.svg1
-rw-r--r--icons/audioogg.svg1
-rw-r--r--icons/audiowav.svg1
-rw-r--r--icons/audiowv.svg1
-rw-r--r--icons/azure.svg1
-rw-r--r--icons/babel.svg1
-rw-r--r--icons/ballerina.svg1
-rw-r--r--icons/ballerinaconfig.svg1
-rw-r--r--icons/bat.svg1
-rw-r--r--icons/bazel.svg1
-rw-r--r--icons/bazelignore.svg1
-rw-r--r--icons/bicep.svg1
-rw-r--r--icons/bicepconfig.svg1
-rw-r--r--icons/bicepparam.svg1
-rw-r--r--icons/binary.svg1
-rw-r--r--icons/biome.svg1
-rw-r--r--icons/blade.svg1
-rw-r--r--icons/brotli.svg1
-rw-r--r--icons/browserslist.svg1
-rw-r--r--icons/bruno.svg1
-rw-r--r--icons/bsconfig.svg1
-rw-r--r--icons/buck.svg1
-rw-r--r--icons/bun.svg1
-rw-r--r--icons/bundler.svg1
-rw-r--r--icons/bunlock.svg1
-rw-r--r--icons/c.svg1
-rw-r--r--icons/cargo.svg1
-rw-r--r--icons/cargolock.svg1
-rw-r--r--icons/cert.svg1
-rw-r--r--icons/cheader.svg1
-rw-r--r--icons/civet.svg1
-rw-r--r--icons/claude.svg1
-rw-r--r--icons/cli.svg1
-rw-r--r--icons/clojure.svg1
-rw-r--r--icons/cmake.svg1
-rw-r--r--icons/codeworkspace.svg1
-rw-r--r--icons/coffeescript.svg1
-rw-r--r--icons/commitlint.svg1
-rw-r--r--icons/compodoc.svg1
-rw-r--r--icons/composer.svg1
-rw-r--r--icons/composerlock.svg1
-rw-r--r--icons/conan.svg1
-rw-r--r--icons/conf.svg1
-rw-r--r--icons/copilot.svg1
-rw-r--r--icons/cpp.svg1
-rw-r--r--icons/crystal.svg1
-rw-r--r--icons/csharp.svg1
-rw-r--r--icons/cshtml.svg1
-rw-r--r--icons/csproj.svg1
-rw-r--r--icons/css.svg1
-rw-r--r--icons/cssmap.svg1
-rw-r--r--icons/csv.svg1
-rw-r--r--icons/cucumber.svg1
-rw-r--r--icons/cursor.svg1
-rw-r--r--icons/cypress.svg1
-rw-r--r--icons/cypressjs.svg1
-rw-r--r--icons/cypressts.svg1
-rw-r--r--icons/d.svg1
-rw-r--r--icons/dartlang.svg1
-rw-r--r--icons/delphiproject.svg1
-rw-r--r--icons/diff.svg1
-rw-r--r--icons/docker.svg1
-rw-r--r--icons/dockerdebug.svg1
-rw-r--r--icons/dockerignore.svg1
-rw-r--r--icons/drawio.svg1
-rw-r--r--icons/drizzle.svg1
-rw-r--r--icons/dsstore.svg1
-rw-r--r--icons/dune.svg1
-rw-r--r--icons/duneproject.svg1
-rw-r--r--icons/edge.svg1
-rw-r--r--icons/editorconfig.svg1
-rw-r--r--icons/eex.svg1
-rw-r--r--icons/elixir.svg1
-rw-r--r--icons/elm.svg1
-rw-r--r--icons/env.svg1
-rw-r--r--icons/eraser.svg1
-rw-r--r--icons/erb.svg1
-rw-r--r--icons/erlang.svg1
-rw-r--r--icons/esbuild.svg1
-rw-r--r--icons/eslint.svg1
-rw-r--r--icons/eslintignore.svg1
-rw-r--r--icons/excalidraw.svg1
-rw-r--r--icons/exs.svg1
-rw-r--r--icons/exx.svg1
-rw-r--r--icons/farm.svg1
-rw-r--r--icons/figma.svg1
-rw-r--r--icons/file.svg1
-rw-r--r--icons/file_light.svg1
-rw-r--r--icons/flakelock.svg1
-rw-r--r--icons/flutter.svg1
-rw-r--r--icons/flutterlock.svg1
-rw-r--r--icons/flutterpackage.svg1
-rw-r--r--icons/folder.svg1
-rw-r--r--icons/folder_open.svg1
-rw-r--r--icons/fonteot.svg1
-rw-r--r--icons/fontotf.svg1
-rw-r--r--icons/fontttf.svg1
-rw-r--r--icons/fontwoff.svg1
-rw-r--r--icons/fontwoff2.svg1
-rw-r--r--icons/freemarker.svg1
-rw-r--r--icons/fsharp.svg1
-rw-r--r--icons/gbl.svg1
-rw-r--r--icons/git.svg1
-rw-r--r--icons/gitlab.svg1
-rw-r--r--icons/gleam.svg1
-rw-r--r--icons/gleamconfig.svg1
-rw-r--r--icons/go.svg1
-rw-r--r--icons/go_package.svg1
-rw-r--r--icons/godot.svg1
-rw-r--r--icons/gradle.svg1
-rw-r--r--icons/gradlebat.svg1
-rw-r--r--icons/gradlekotlin.svg1
-rw-r--r--icons/grain.svg1
-rw-r--r--icons/graphql.svg1
-rw-r--r--icons/groovy.svg1
-rw-r--r--icons/grunt.svg1
-rw-r--r--icons/gulp.svg1
-rw-r--r--icons/h.svg1
-rw-r--r--icons/haml.svg1
-rw-r--r--icons/handlebars.svg1
-rw-r--r--icons/hardhat.svg1
-rw-r--r--icons/hash.svg1
-rw-r--r--icons/hashicorp.svg1
-rw-r--r--icons/haskell.svg1
-rw-r--r--icons/haxe.svg1
-rw-r--r--icons/haxeml.svg1
-rw-r--r--icons/hpp.svg1
-rw-r--r--icons/htaccess.svg1
-rw-r--r--icons/html.svg1
-rw-r--r--icons/http.svg1
-rw-r--r--icons/identifier.svg1
-rw-r--r--icons/image.svg1
-rw-r--r--icons/imagegif.svg1
-rw-r--r--icons/imageico.svg1
-rw-r--r--icons/imagejpg.svg1
-rw-r--r--icons/imagepng.svg1
-rw-r--r--icons/imagewebp.svg1
-rw-r--r--icons/imba.svg1
-rw-r--r--icons/info.svg1
-rw-r--r--icons/instructions.svg1
-rw-r--r--icons/ipynb.svg1
-rw-r--r--icons/jar.svg1
-rw-r--r--icons/java.svg1
-rw-r--r--icons/jenkins.svg1
-rw-r--r--icons/jest.svg1
-rw-r--r--icons/jinja.svg1
-rw-r--r--icons/js.svg1
-rw-r--r--icons/jsmap.svg1
-rw-r--r--icons/json.svg1
-rw-r--r--icons/jsp.svg1
-rw-r--r--icons/julia.svg1
-rw-r--r--icons/karma.svg1
-rw-r--r--icons/keep.svg1
-rw-r--r--icons/key.svg1
-rw-r--r--icons/knex.svg1
-rw-r--r--icons/knip.svg1
-rw-r--r--icons/kotlin.svg1
-rw-r--r--icons/kotlins.svg1
-rw-r--r--icons/krita.svg1
-rw-r--r--icons/latex.svg1
-rw-r--r--icons/launch.svg1
-rw-r--r--icons/lazarusproject.svg1
-rw-r--r--icons/less.svg1
-rw-r--r--icons/license.svg1
-rw-r--r--icons/light_editorconfig.svg1
-rw-r--r--icons/liquid.svg1
-rw-r--r--icons/llvm.svg1
-rw-r--r--icons/lock.svg1
-rw-r--r--icons/log.svg1
-rw-r--r--icons/lua.svg1
-rw-r--r--icons/m.svg1
-rw-r--r--icons/makefile.svg1
-rw-r--r--icons/manifest.svg1
-rw-r--r--icons/markdown.svg1
-rw-r--r--icons/markdownx.svg1
-rw-r--r--icons/maven.svg1
-rw-r--r--icons/mermaid.svg1
-rw-r--r--icons/mesh.svg1
-rw-r--r--icons/mgcb.svg1
-rw-r--r--icons/mint.svg1
-rw-r--r--icons/mix.svg1
-rw-r--r--icons/mixlock.svg1
-rw-r--r--icons/mjml.svg1
-rw-r--r--icons/mkdocs.svg1
-rw-r--r--icons/mockoon.svg1
-rw-r--r--icons/motoko.svg1
-rw-r--r--icons/mov.svg1
-rw-r--r--icons/mp4.svg1
-rw-r--r--icons/mtl.svg1
-rw-r--r--icons/mustache.svg1
-rw-r--r--icons/nelua.svg1
-rw-r--r--icons/neon.svg1
-rw-r--r--icons/nestjs.svg1
-rw-r--r--icons/nestjscontroller.svg1
-rw-r--r--icons/nestjsdecorator.svg1
-rw-r--r--icons/nestjsdto.svg1
-rw-r--r--icons/nestjsentity.svg1
-rw-r--r--icons/nestjsfilter.svg1
-rw-r--r--icons/nestjsguard.svg1
-rw-r--r--icons/nestjsinterceptor.svg1
-rw-r--r--icons/nestjsmodule.svg1
-rw-r--r--icons/nestjsrepository.svg1
-rw-r--r--icons/nestjsresolver.svg1
-rw-r--r--icons/nestjsservice.svg1
-rw-r--r--icons/nestscheduler.svg1
-rw-r--r--icons/netlify.svg1
-rw-r--r--icons/nextconfig.svg1
-rw-r--r--icons/nextron.svg1
-rw-r--r--icons/nginx.svg1
-rw-r--r--icons/nim.svg1
-rw-r--r--icons/nix.svg1
-rw-r--r--icons/njk.svg1
-rw-r--r--icons/node.svg1
-rw-r--r--icons/nodemon.svg1
-rw-r--r--icons/npm.svg1
-rw-r--r--icons/npmlock.svg1
-rw-r--r--icons/nuxt.svg1
-rw-r--r--icons/nvidia.svg1
-rw-r--r--icons/nvim.svg1
-rw-r--r--icons/nvm.svg1
-rw-r--r--icons/nx.svg1
-rw-r--r--icons/obj.svg1
-rw-r--r--icons/ocaml.svg1
-rw-r--r--icons/ocamli.svg1
-rw-r--r--icons/ocamll.svg1
-rw-r--r--icons/ocamly.svg1
-rw-r--r--icons/odin.svg1
-rw-r--r--icons/opengl.svg1
-rw-r--r--icons/oxlint.svg1
-rw-r--r--icons/panda.svg1
-rw-r--r--icons/parcel.svg1
-rw-r--r--icons/pascal.svg1
-rw-r--r--icons/pdf.svg1
-rw-r--r--icons/perl.svg1
-rw-r--r--icons/perlm.svg1
-rw-r--r--icons/pfx.svg1
-rw-r--r--icons/photoshop.svg1
-rw-r--r--icons/php.svg1
-rw-r--r--icons/plantuml.svg1
-rw-r--r--icons/playright.svg1
-rw-r--r--icons/plop.svg1
-rw-r--r--icons/pnpm.svg1
-rw-r--r--icons/pnpmlock.svg1
-rw-r--r--icons/poetry.svg1
-rw-r--r--icons/poetrylock.svg1
-rw-r--r--icons/postcssconfig.svg1
-rw-r--r--icons/powershell.svg1
-rw-r--r--icons/powershelldata.svg1
-rw-r--r--icons/powershellmodule.svg1
-rw-r--r--icons/precommit.svg1
-rw-r--r--icons/prettier.svg1
-rw-r--r--icons/prettierignore.svg1
-rw-r--r--icons/prisma.svg1
-rw-r--r--icons/prolog.svg1
-rw-r--r--icons/prompt.svg1
-rw-r--r--icons/properties.svg1
-rw-r--r--icons/proto.svg1
-rw-r--r--icons/pug.svg1
-rw-r--r--icons/pvk.svg1
-rw-r--r--icons/pyproject.svg1
-rw-r--r--icons/python.svg1
-rw-r--r--icons/qt.svg1
-rw-r--r--icons/quarkus.svg1
-rw-r--r--icons/quasar.svg1
-rw-r--r--icons/r.svg1
-rw-r--r--icons/racket.svg1
-rw-r--r--icons/raku.svg1
-rw-r--r--icons/razor.svg1
-rw-r--r--icons/reactjs.svg1
-rw-r--r--icons/reactts.svg1
-rw-r--r--icons/readme.svg1
-rw-r--r--icons/redis.svg1
-rw-r--r--icons/rego.svg1
-rw-r--r--icons/remix.svg1
-rw-r--r--icons/rescript.svg1
-rw-r--r--icons/rescriptinterface.svg1
-rw-r--r--icons/restructuredtext.svg1
-rw-r--r--icons/rjson.svg1
-rw-r--r--icons/robots.svg1
-rw-r--r--icons/rollup.svg1
-rw-r--r--icons/rome.svg1
-rw-r--r--icons/ron.svg1
-rw-r--r--icons/root_folder.svg1
-rw-r--r--icons/root_folder_light.svg1
-rw-r--r--icons/root_folder_light_open.svg1
-rw-r--r--icons/root_folder_open.svg1
-rw-r--r--icons/ruby.svg1
-rw-r--r--icons/rust.svg1
-rw-r--r--icons/rustfmt.svg1
-rw-r--r--icons/sails.svg1
-rw-r--r--icons/salesforce.svg1
-rw-r--r--icons/sass.svg1
-rw-r--r--icons/scala.svg1
-rw-r--r--icons/scss.svg1
-rw-r--r--icons/sentinel.svg1
-rw-r--r--icons/sequelize.svg1
-rw-r--r--icons/shaderlab.svg1
-rw-r--r--icons/shell.svg1
-rw-r--r--icons/silq.svg1
-rw-r--r--icons/slim.svg1
-rw-r--r--icons/sln.svg1
-rw-r--r--icons/smarty.svg1
-rw-r--r--icons/sol.svg1
-rw-r--r--icons/spc.svg1
-rw-r--r--icons/sql.svg1
-rw-r--r--icons/sqlite.svg1
-rw-r--r--icons/storybook.svg1
-rw-r--r--icons/stylelint.svg1
-rw-r--r--icons/stylelintignore.svg1
-rw-r--r--icons/stylus.svg1
-rw-r--r--icons/suo.svg1
-rw-r--r--icons/svelte.svg1
-rw-r--r--icons/svelteconfig.svg1
-rw-r--r--icons/svg.svg1
-rw-r--r--icons/swift.svg1
-rw-r--r--icons/symfony.svg1
-rw-r--r--icons/tailwind.svg1
-rw-r--r--icons/tauri.svg1
-rw-r--r--icons/taze.svg1
-rw-r--r--icons/terrafile.svg1
-rw-r--r--icons/terraform.svg1
-rw-r--r--icons/terraformvars.svg1
-rw-r--r--icons/terraformversion.svg1
-rw-r--r--icons/testjs.svg1
-rw-r--r--icons/testts.svg1
-rw-r--r--icons/tmpl.svg1
-rw-r--r--icons/todo.svg1
-rw-r--r--icons/toml.svg1
-rw-r--r--icons/toolversions.svg1
-rw-r--r--icons/tox.svg1
-rw-r--r--icons/travis.svg1
-rw-r--r--icons/tres.svg1
-rw-r--r--icons/tscn.svg1
-rw-r--r--icons/tsconfig.svg1
-rw-r--r--icons/tsx.svg1
-rw-r--r--icons/turbo.svg1
-rw-r--r--icons/twig.svg1
-rw-r--r--icons/txt.svg1
-rw-r--r--icons/typescript.svg1
-rw-r--r--icons/typescriptdef.svg1
-rw-r--r--icons/ui.svg1
-rw-r--r--icons/unocss.svg1
-rw-r--r--icons/user.svg1
-rw-r--r--icons/v.svg1
-rw-r--r--icons/vanillaextract.svg1
-rw-r--r--icons/vb.svg1
-rw-r--r--icons/vercel.svg1
-rw-r--r--icons/version.svg1
-rw-r--r--icons/vhd.svg1
-rw-r--r--icons/vhdl.svg1
-rw-r--r--icons/video.svg1
-rw-r--r--icons/vite.svg1
-rw-r--r--icons/viteenv.svg1
-rw-r--r--icons/vitest.svg1
-rw-r--r--icons/vmod.svg1
-rw-r--r--icons/vscode.svg1
-rw-r--r--icons/vue.svg1
-rw-r--r--icons/vueconfig.svg1
-rw-r--r--icons/wasm.svg1
-rw-r--r--icons/webpack.svg1
-rw-r--r--icons/wgsl.svg1
-rw-r--r--icons/windi.svg1
-rw-r--r--icons/wren.svg1
-rw-r--r--icons/xmake.svg1
-rw-r--r--icons/xml.svg1
-rw-r--r--icons/yaml.svg1
-rw-r--r--icons/yang.svg1
-rw-r--r--icons/yarn.svg1
-rw-r--r--icons/yarnerror.svg1
-rw-r--r--icons/yarnignore.svg1
-rw-r--r--icons/yarnlock.svg1
-rw-r--r--icons/yin.svg1
-rw-r--r--icons/zig.svg1
-rw-r--r--icons/zip.svg1
-rw-r--r--themed/tree_common.html15
-rw-r--r--ui-shared.c16
-rw-r--r--ui-shared.h89
-rw-r--r--waow.c5427
-rw-r--r--waow.h11
396 files changed, 5897 insertions, 57 deletions
diff --git a/cgit.mk b/cgit.mk
index 551f0b82..cf9a0dff 100644
--- a/cgit.mk
+++ b/cgit.mk
@@ -20,12 +20,16 @@ $(CGIT_PREFIX)VERSION: force-version
CGIT_CFLAGS += -DCGIT_CONFIG='"$(CGIT_CONFIG)"'
CGIT_CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"'
CGIT_CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"'
+CGIT_CFLAGS += -O3
+CGIT_CFLAGS += -march=native
PKG_CONFIG ?= pkg-config
ifdef NO_C99_FORMAT
CFLAGS += -DNO_C99_FORMAT
endif
+CFLAGS += -O3
+CFLAGS += -march=native
ifdef NO_LUA
LUA_MESSAGE := linking without specified Lua support
@@ -97,6 +101,7 @@ CGIT_OBJ_NAMES += ui-tree.o
CGIT_OBJ_NAMES += themed/themed.o
CGIT_OBJ_NAMES += themed/mincrypt_sha256.o
+CGIT_OBJ_NAMES += waow.o
CGIT_THEMED_INPUTS += $(CGIT_PREFIX)themed/base.html
CGIT_THEMED_INPUTS += $(CGIT_PREFIX)themed/tree_common.html
@@ -163,5 +168,4 @@ CGIT_SP_OBJS := $(patsubst %.o,%.sp,$(CGIT_OBJS))
$(CGIT_SP_OBJS): %.sp: %.c GIT-CFLAGS $(CGIT_PREFIX)CGIT-CFLAGS FORCE
$(QUIET_SP)cgcc -no-compile $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $(CGIT_CFLAGS) $(SPARSE_FLAGS) $<
-
cgit-sparse: $(CGIT_SP_OBJS)
diff --git a/icons/ace.svg b/icons/ace.svg
new file mode 100644
index 00000000..04043f9e
--- /dev/null
+++ b/icons/ace.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#7C7CFF" fill-rule="evenodd" d="M2 8c0 4.84 1.16 6 6 6s6-1.16 6-6-1.16-6-6-6-6 1.16-6 6m2-2V4l4.727 4L4 12v-2l2.545-2zm7.273 4.667h-2.91c-.401 0-.727.298-.727.666s.326.667.728.667h2.909c.401 0 .727-.299.727-.667s-.326-.666-.727-.666" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/acemanifest.svg b/icons/acemanifest.svg
new file mode 100644
index 00000000..c19a2f92
--- /dev/null
+++ b/icons/acemanifest.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#7C7CFF" fill-rule="evenodd" d="M8 14c-4.84 0-6-1.16-6-6s1.16-6 6-6 6 1.16 6 6-1.16 6-6 6M5 4h1v1H5zm6 0h-1v3h1zM4 7.5a1.5 1.5 0 0 0 1 1.415V12h1V8.915A1.5 1.5 0 1 0 4 7.5m6 3.415a1.5 1.5 0 1 1 1 0V12h-1z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/adoc.svg b/icons/adoc.svg
new file mode 100644
index 00000000..0734191e
--- /dev/null
+++ b/icons/adoc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#3CA8C0" d="M3.905 3.002 7.208 8.76h5.735A5 5 0 0 0 8 3H3.971zM3 4.845l2.246 3.914H3zm0 5.616v1.568c0 .536.435.971.971.971H7.68l-1.456-2.539zm6.509 2.307a5 5 0 0 0 2.844-2.307H8.185z"/></svg> \ No newline at end of file
diff --git a/icons/adonis.svg b/icons/adonis.svg
new file mode 100644
index 00000000..e63d42db
--- /dev/null
+++ b/icons/adonis.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#7C7CFF" fill-rule="evenodd" d="m2.254 10.18 3.02-6.492C5.784 2.594 6.764 2 8 2s2.216.594 2.726 1.688l3.02 6.491c.137.316.254.723.254 1.076C14 12.868 12.804 14 11.098 14c-.581 0-1.043-.14-1.51-.282-.478-.146-.963-.293-1.588-.293-.618 0-1.114.148-1.602.295-.472.14-.937.28-1.496.28C3.196 14 2 12.868 2 11.255c0-.353.118-.76.255-1.076zM8 4.82 5.02 11.2c.883-.39 1.902-.576 2.98-.576 1.04 0 2.099.186 2.942.575L7.999 4.82Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/adonisconfig.svg b/icons/adonisconfig.svg
new file mode 100644
index 00000000..40b8b663
--- /dev/null
+++ b/icons/adonisconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#7C7CFF" fill-rule="evenodd" d="M2 8c0 4.84 1.16 6 6 6s6-1.16 6-6-1.16-6-6-6-6 1.16-6 6m4.183-2.875L4.169 9.453c-.09.21-.169.482-.169.717C4 11.245 4.797 12 5.935 12c.371 0 .68-.092.994-.186l.003-.001h.002c.324-.098.655-.197 1.066-.197.416 0 .738.098 1.057.195h.002l.003.002c.31.094.617.187 1.003.187C11.203 12 12 11.245 12 10.17c0-.235-.078-.507-.17-.717L9.817 5.125C9.477 4.395 8.824 4 8 4s-1.477.396-1.817 1.125m-.17 5.008L8 5.88l1.96 4.253c-.56-.26-1.267-.384-1.96-.384-.72 0-1.399.124-1.987.384" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/afdesign.svg b/icons/afdesign.svg
new file mode 100644
index 00000000..20932897
--- /dev/null
+++ b/icons/afdesign.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#399EE7" d="m9.562 3-1.59 2.763L10.538 10H14V4a1 1 0 0 0-1-1zM8.378 3 4 10.5 6.205 14H3a1 1 0 0 1-1-1v-2l4.5-8z"/><path fill="#399EE7" d="M7.344 14H13a1 1 0 0 0 1-1v-2H5.416zm-1.812-4 1.87-3.248L9.37 10z"/></svg> \ No newline at end of file
diff --git a/icons/afphoto.svg b/icons/afphoto.svg
new file mode 100644
index 00000000..c464abe8
--- /dev/null
+++ b/icons/afphoto.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#CC6BEE" d="M14 4.204 10.126 10.5H14zm-.511-1.077-2.87 4.663L7.771 3H13a1 1 0 0 1 .489.127M6.607 3H6.5L4.812 6h3.58L6.606 3ZM4.25 7h1.723l-3.93 6.289A1 1 0 0 1 2 13v-2zm-1.46 6.978q.102.021.21.022h4.724L5.463 9.703zM8.854 14H13a1 1 0 0 0 1-1v-1.5H7.539L8.855 14Zm-1.842-3.5-.936-1.779L7.152 7h1.834l1.041 1.752L8.951 10.5z"/></svg> \ No newline at end of file
diff --git a/icons/afpub.svg b/icons/afpub.svg
new file mode 100644
index 00000000..5a133114
--- /dev/null
+++ b/icons/afpub.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FF9350" d="M3.632 8.098 2 11v2a1 1 0 0 0 1 1h3.465zM7.575 14 4.23 7.034 4.98 5.7 8.965 14zm2.5 0h1.39L6.33 3.302l-.75 1.334zM7.295 3l5.28 11H13c.318 0 .6-.148.784-.379L8.685 3zm2.5 0L14 11.761V4a1 1 0 0 0-1-1z"/></svg> \ No newline at end of file
diff --git a/icons/ai.svg b/icons/ai.svg
new file mode 100644
index 00000000..84baf04a
--- /dev/null
+++ b/icons/ai.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><path d="M12.5 14h-9A1.55 1.55 0 0 1 2 12.5v-9A1.55 1.55 0 0 1 3.5 2h9a1.55 1.55 0 0 1 1.55 1.5v9A1.55 1.55 0 0 1 12.5 14" style="fill:#49160a"/><path d="M6.16 4.43H7l2.12 7h-1.3L6.58 6.76l-1.25 4.66H4Zm-.91 4.71h2.68v1.18H5.25Zm4.43-4.71h1.25v1.24H9.68Zm0 2h1.25v5H9.68Z" style="fill:#f69f11"/></svg> \ No newline at end of file
diff --git a/icons/air.svg b/icons/air.svg
new file mode 100644
index 00000000..5701b5ee
--- /dev/null
+++ b/icons/air.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M6.029 6.393A4.75 4.75 0 1 1 10 13.75H5a3.75 3.75 0 1 1 1.029-7.357M10 5.75a3.25 3.25 0 0 0-2.954 1.892l-.327.71-.696-.356A2.25 2.25 0 1 0 5 12.25h5a3.25 3.25 0 0 0 0-6.5" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/angular.svg b/icons/angular.svg
new file mode 100644
index 00000000..d6daa5fb
--- /dev/null
+++ b/icons/angular.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#dd0031}</style></defs><path d="M6.86 8.58h2.05L7.89 6.11z" class="cls-1"/><path d="m7.89 2.22-5.61 2 .85 7.42 4.76 2.64 4.75-2.64.86-7.42Zm3.5 9.2h-1.31l-.7-1.76h-3l-.71 1.76H4.39l3.5-7.87z" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/anim.svg b/icons/anim.svg
new file mode 100644
index 00000000..2da9cfcb
--- /dev/null
+++ b/icons/anim.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#86B44B" fill-rule="evenodd" d="M9.376 4.814a1.407 1.407 0 0 1-1.934 1.304.7.7 0 0 0-.2-.1 1.406 1.406 0 1 1 2.134-1.204M5.407 8.422a4.7 4.7 0 0 1 1.107-.09l.05.298.008.05c.121.73.224 1.364.225 1.76 0 .846-.215 1.445-.552 1.776-.303.297-.848.515-1.868.278a.703.703 0 0 0-.319 1.37c1.325.308 2.42.094 3.173-.645.541-.531.819-1.254.923-2.02.344.005.802.1 1.175.357.385.264.75.745.75 1.699a.703.703 0 0 0 1.407 0c0-1.392-.573-2.318-1.36-2.859-.651-.447-1.397-.597-1.965-.603-.042-.372-.108-.78-.172-1.168a3.6 3.6 0 0 0 1.368.573c.86.17 1.902.061 2.8-.648a.703.703 0 0 0-.873-1.104c-.51.403-1.109.48-1.655.372a2.2 2.2 0 0 1-.802-.324A2.815 2.815 0 0 0 7.969 2a2.814 2.814 0 0 0-1.857 4.928 5.6 5.6 0 0 0-1.004.12c-1.079.234-2.125.874-2.507 2.27a.703.703 0 1 0 1.357.37c.205-.748.721-1.108 1.45-1.266Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/astro.svg b/icons/astro.svg
new file mode 100644
index 00000000..29c44fea
--- /dev/null
+++ b/icons/astro.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#FF7E33" fill-rule="evenodd" d="M2.683 10.921 5.279 2.7a1 1 0 0 1 .954-.7h3.534a1 1 0 0 1 .954.699l2.596 8.222a1 1 0 0 1-.246 1.008l-1.778 1.778a1 1 0 0 1-.707.293H5.414a1 1 0 0 1-.707-.293L2.93 11.93a1 1 0 0 1-.246-1.008m7.24-7.016L12 10.377a8.4 8.4 0 0 0-2.482-.875L8.166 5.374a.18.18 0 0 0-.169-.132.18.18 0 0 0-.168.132L6.493 9.5c-.884.16-1.722.46-2.493.876l2.086-6.473c.096-.324.143-.486.236-.606a.8.8 0 0 1 .311-.24C6.771 3 6.933 3 7.26 3h1.49c.326 0 .49 0 .627.058a.8.8 0 0 1 .311.24c.093.12.14.282.236.607m.645 6.649c-.46.243-1.376.409-2.432.409-1.296 0-2.382-.25-2.67-.586a1.2 1.2 0 0 0-.126.554s-.068.692.708 1.173c0-.25.327-.452.73-.452.691 0 .69.373.69.677v.027c0 .46.454.854 1.099 1.02a.66.66 0 0 1-.15-.406c0-.439.415-.602.898-.792.385-.152.812-.32 1.106-.656a.9.9 0 0 0 .24-.591.8.8 0 0 0-.093-.377" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/astroconfig.svg b/icons/astroconfig.svg
new file mode 100644
index 00000000..2833cd87
--- /dev/null
+++ b/icons/astroconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#FF7E33" fill-rule="evenodd" d="M4 3h8a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1M2 4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm7.924.905c-.095-.325-.143-.487-.236-.608a.8.8 0 0 0-.31-.24C9.238 4 9.075 4 8.75 4H7.26c-.326 0-.49 0-.627.058a.8.8 0 0 0-.31.239c-.094.12-.141.282-.237.606L4 12a8.4 8.4 0 0 1 2.493-.876l1.337-4.75a.18.18 0 0 1 .168-.132.18.18 0 0 1 .17.132l1.35 4.752c.881.161 1.715.46 2.483.874z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/atomizer.svg b/icons/atomizer.svg
new file mode 100644
index 00000000..a5d26b99
--- /dev/null
+++ b/icons/atomizer.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#1D8FB7" fill-rule="evenodd" d="M5.365 10.087h.02l2.26 4.043h-4.71l.726-1.232zm2.291 4.043 2.44-4.043h4.614l-2.334 4.043z" clip-rule="evenodd"/><path fill="#70D1F7" fill-rule="evenodd" d="M10.064 10.102h4.674L10.064 2H5.31z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/audio.svg b/icons/audio.svg
new file mode 100644
index 00000000..c8599869
--- /dev/null
+++ b/icons/audio.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#c24fbe}</style></defs><ellipse cx="6.36" cy="10.75" class="cls-1" rx="3.36" ry="2.75"/><path d="M8.72 3h1v7.5h-1z" class="cls-1"/><path d="M8.72 3h4v2.5h-4z" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/audiomp3.svg b/icons/audiomp3.svg
new file mode 100644
index 00000000..902f4e90
--- /dev/null
+++ b/icons/audiomp3.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#13A9FD" fill-rule="evenodd" d="M9.72 3h-1v5.793C8.113 8.303 7.28 8 6.36 8 4.504 8 3 9.231 3 10.75s1.504 2.75 3.36 2.75 3.36-1.231 3.36-2.75q0-.127-.014-.25h.014v-5h3V3z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/audioogg.svg b/icons/audioogg.svg
new file mode 100644
index 00000000..356152ea
--- /dev/null
+++ b/icons/audioogg.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#4EC624" fill-rule="evenodd" d="M9.72 3h-1v5.793C8.113 8.303 7.28 8 6.36 8 4.504 8 3 9.231 3 10.75s1.504 2.75 3.36 2.75 3.36-1.231 3.36-2.75q0-.127-.014-.25h.014v-5h3V3z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/audiowav.svg b/icons/audiowav.svg
new file mode 100644
index 00000000..39209ed7
--- /dev/null
+++ b/icons/audiowav.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EB3B30" fill-rule="evenodd" d="M9.72 3h-1v5.793C8.113 8.303 7.28 8 6.36 8 4.504 8 3 9.231 3 10.75s1.504 2.75 3.36 2.75 3.36-1.231 3.36-2.75q0-.127-.014-.25h.014v-5h3V3z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/audiowv.svg b/icons/audiowv.svg
new file mode 100644
index 00000000..fa152327
--- /dev/null
+++ b/icons/audiowv.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E1A03D" fill-rule="evenodd" d="M9.72 3h-1v5.793C8.113 8.303 7.28 8 6.36 8 4.504 8 3 9.231 3 10.75s1.504 2.75 3.36 2.75 3.36-1.231 3.36-2.75q0-.127-.014-.25h.014v-5h3V3z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/azure.svg b/icons/azure.svg
new file mode 100644
index 00000000..548d453f
--- /dev/null
+++ b/icons/azure.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="url(#a)" d="M6.329 3h3.14l-3.26 9.66a.5.5 0 0 1-.475.34H3.29a.5.5 0 0 1-.473-.66l3.037-9A.5.5 0 0 1 6.328 3Z"/><path fill="#2269A0" d="M10.892 9.479h-4.98a.23.23 0 0 0-.157.399l3.2 2.987a.5.5 0 0 0 .343.135h2.82z"/><path fill="url(#b)" d="M6.329 3a.5.5 0 0 0-.476.347L2.82 12.332a.5.5 0 0 0 .472.668h2.507a.54.54 0 0 0 .411-.35l.605-1.782 2.16 2.015a.5.5 0 0 0 .322.117h2.809l-1.232-3.521H7.282L9.48 3z"/><path fill="url(#c)" d="M10.34 3.34A.5.5 0 0 0 9.866 3h-3.5a.5.5 0 0 1 .474.34l3.037 9a.5.5 0 0 1-.474.66h3.5a.5.5 0 0 0 .474-.66z"/><defs><linearGradient id="a" x1="7.473" x2="4.212" y1="3.741" y2="13.376" gradientUnits="userSpaceOnUse"><stop stop-color="#2166B5"/><stop offset="1" stop-color="#3AA3FC"/></linearGradient><linearGradient id="b" x1="8.492" x2="7.738" y1="8.231" y2="8.486" gradientUnits="userSpaceOnUse"><stop stop-opacity="0"/><stop offset=".071" stop-opacity=".2"/><stop offset=".321" stop-opacity=".1"/><stop offset=".623" stop-opacity=".05"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="c" x1="8.077" x2="11.657" y1="3.46" y2="12.998" gradientUnits="userSpaceOnUse"><stop stop-color="#5FDBFF"/><stop offset="1" stop-color="#2892DF"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/icons/babel.svg b/icons/babel.svg
new file mode 100644
index 00000000..362a435f
--- /dev/null
+++ b/icons/babel.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#f4ba00}</style></defs><path d="M2.33 13.69A48.3 48.3 0 0 0 7.1 3.47c.37-.89 1.9-1.2 1.9-1.2S5.48 11.54 2.7 15c.84-2 .52-1.68.52-1.68Z" class="cls-1"/><path d="m3.7 4.78 1.78-1.31-.42-.1a9.7 9.7 0 0 1 4.61-1.73c2.62-.21 3.78.78 3.83 1.57.1 1.94-1.68 3.56-7.39 5.34l.26-1.46s6-1.84 5.66-3.57c-.21-1.15-3-1-7 1 .31-.47 0-.37 0-.37L4 4.94Z" class="cls-1"/><path d="M6.21 8.5s4.35-1.41 4.25-.31-3.67 3.4-6.29 4.29a3.5 3.5 0 0 1-.37.58 14.9 14.9 0 0 0 4.82-2c.21.16 0 .26 0 .26s-3.14 2-5 2.26c-.11.26 0 .15 0 .15A13.66 13.66 0 0 0 11 9.92c3.15-3.3-1.41-3.41-1.41-3.41" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/ballerina.svg b/icons/ballerina.svg
new file mode 100644
index 00000000..44751d01
--- /dev/null
+++ b/icons/ballerina.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#51C2C0" d="M7.5 2H4v3l3.5 1.5zM6 7 4 6v2zm1.5.5L4 9v5h1.5l2-5.09zm1-5.5H12v3L8.5 6.5zM10 7l2-1v2zm-1.5.5L12 9v5h-1.5l-2-5.09z"/></svg> \ No newline at end of file
diff --git a/icons/ballerinaconfig.svg b/icons/ballerinaconfig.svg
new file mode 100644
index 00000000..4a147ea2
--- /dev/null
+++ b/icons/ballerinaconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#51C2C0" fill-rule="evenodd" d="M12 12.472A6 6 0 0 0 14 8a6 6 0 0 0-2-4.472V5L8.5 6.5V2.02a6 6 0 0 0-1 0V6.5L4 5V3.528A6 6 0 0 0 2 8c0 1.777.773 3.374 2 4.472V9l3.5-1.5v1.41l-1.818 4.626A6 6 0 0 0 8 14a6 6 0 0 0 2.318-.464L8.5 8.909V7.5L12 9zM4 6l2 1-2 1zm6 1 2-1v2z" clip-rule="evenodd"/><circle cx="8" cy="8" r="5.5" stroke="#51C2C0"/></svg> \ No newline at end of file
diff --git a/icons/bat.svg b/icons/bat.svg
new file mode 100644
index 00000000..cd603287
--- /dev/null
+++ b/icons/bat.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#2DA3F9" fill-rule="evenodd" d="M3 2v3l3.5 3L3 11v3l6.5-6zm6 10h4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/bazel.svg b/icons/bazel.svg
new file mode 100644
index 00000000..d1a63b26
--- /dev/null
+++ b/icons/bazel.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#73EE72" d="m2.5 5.5 2.5-3 3 3L5.5 8zm5.5 0 2.5-3 3 3L11 8z"/><path fill="#73EE72" d="m5 8 2.5-3 3 3L8 10.5z"/><path fill="#1D9754" fill-rule="evenodd" d="M10.398 2.169a.5.5 0 0 1 .707 0l2.747 2.747a.5.5 0 0 1 .15.357v2.7a.5.5 0 0 1-.146.354l-2.743 2.745-.008.009-2.753 2.75a.5.5 0 0 1-.716-.008l-2.74-2.741-.002-.002-2.75-2.753a.5.5 0 0 1-.147-.354v-2.7a.5.5 0 0 1 .15-.358L4.895 2.17a.5.5 0 0 1 .707 0L8 4.566zm.354 1.06 2.043 2.044-2.043 2.046-2.046-2.046zM7.999 5.981l2.045 2.045L8 10.07 5.955 8.026zm-.708-.708L5.248 3.23 3.204 5.273 5.248 7.32z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/bazelignore.svg b/icons/bazelignore.svg
new file mode 100644
index 00000000..f4c0bc45
--- /dev/null
+++ b/icons/bazelignore.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M10.398 2.169a.5.5 0 0 1 .707 0l2.747 2.747a.5.5 0 0 1 .15.357v2.7a.5.5 0 0 1-.146.354l-2.743 2.745-.008.009-2.753 2.75a.5.5 0 0 1-.716-.008l-2.74-2.741-.002-.002-2.75-2.753a.5.5 0 0 1-.147-.354v-2.7a.5.5 0 0 1 .15-.358L4.895 2.17a.5.5 0 0 1 .707 0L8 4.566zm.354 1.06 2.043 2.044-2.043 2.046-2.046-2.046zM7.999 5.981l2.045 2.045L8 10.07 5.955 8.026zm-.708-.708L5.248 3.23 3.204 5.273 5.248 7.32z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/bicep.svg b/icons/bicep.svg
new file mode 100644
index 00000000..381e5ba4
--- /dev/null
+++ b/icons/bicep.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#32B0E7" d="M11.667 9.333H6L7.333 6h2.2L10 5H8l-.667-1L8 3h2l-.467-1h-2.2L5.867 4l.6 1-4 5A2.3 2.3 0 0 0 2 11.333c0 1 .733 1.867 1.667 2 0 0 7 .667 8 .667C12.933 14 14 12.933 14 11.667s-1.067-2.334-2.333-2.334m-7.667 3c-.533 0-1-.466-1-1 0-.533.467-1 1-1s1 .467 1 1c0 .534-.467 1-1 1m7.667.667c-.734 0-1.334-.6-1.334-1.333 0-.734.6-1.334 1.334-1.334.733 0 1.333.6 1.333 1.334C13 12.4 12.4 13 11.667 13"/></svg> \ No newline at end of file
diff --git a/icons/bicepconfig.svg b/icons/bicepconfig.svg
new file mode 100644
index 00000000..a172fb0a
--- /dev/null
+++ b/icons/bicepconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#DF6547" fill-rule="evenodd" d="m4.845 9.527.72-1.8-1.3 1.625q.309.043.58.175m.878.806c.176.296.277.639.277 1 0 .436-.147.844-.394 1.177.537.05 1.149.105 1.774.16.794.071 1.593.14 2.286.196a2.32 2.32 0 0 1 .087-2.533zm5.944-1C12.933 9.333 14 10.4 14 11.667 14 12.933 12.933 14 11.667 14h-.014c-1.048-.006-7.986-.667-7.986-.667-.934-.133-1.667-1-1.667-2 0-.185.032-.382.087-.572.083-.287.22-.56.38-.761l4-5-.6-1 1.466-2h2.2L10 3H8l-.667 1L8 5h2l-.467 1h-2.2L6 9.333zm0 3.667C12.4 13 13 12.4 13 11.667c0-.734-.6-1.334-1.333-1.334-.734 0-1.334.6-1.334 1.334 0 .733.6 1.333 1.334 1.333m-8.625-1.944a1 1 0 0 0-.042.277c0 .534.467 1 1 1s1-.466 1-1c0-.533-.467-1-1-1-.438 0-.831.315-.958.723" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/bicepparam.svg b/icons/bicepparam.svg
new file mode 100644
index 00000000..05fe5a3f
--- /dev/null
+++ b/icons/bicepparam.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DF9947" fill-rule="evenodd" d="m4.845 9.527.72-1.8-1.3 1.625q.309.043.58.175m.878.806c.176.296.277.639.277 1 0 .436-.147.844-.394 1.177.537.05 1.149.105 1.774.16.794.071 1.593.14 2.286.196a2.32 2.32 0 0 1 .087-2.533zm5.944-1C12.933 9.333 14 10.4 14 11.667 14 12.933 12.933 14 11.667 14h-.014c-1.048-.006-7.986-.667-7.986-.667-.934-.133-1.667-1-1.667-2 0-.185.032-.382.087-.572.083-.287.22-.56.38-.761l4-5-.6-1 1.466-2h2.2L10 3H8l-.667 1L8 5h2l-.467 1h-2.2L6 9.333zm0 3.667C12.4 13 13 12.4 13 11.667c0-.734-.6-1.334-1.333-1.334-.734 0-1.334.6-1.334 1.334 0 .733.6 1.333 1.334 1.333m-8.625-1.944a1 1 0 0 0-.042.277c0 .534.467 1 1 1s1-.466 1-1c0-.533-.467-1-1-1-.438 0-.831.315-.958.723" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/binary.svg b/icons/binary.svg
new file mode 100644
index 00000000..4f0a6edd
--- /dev/null
+++ b/icons/binary.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E85B5B" fill-rule="evenodd" d="M3 4.5a2.5 2.5 0 1 1 5 0 2.5 2.5 0 0 1-5 0m1.5 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0m3.5 7a2.5 2.5 0 1 1 5 0 2.5 2.5 0 0 1-5 0m1.5 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0M11 2 9 4l.5.5.5.5 1-1v3h1.5V2zm-8 9 2-2h1.5v5H5v-3l-1 1-.5-.5z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/biome.svg b/icons/biome.svg
new file mode 100644
index 00000000..032b7a9d
--- /dev/null
+++ b/icons/biome.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#F7B911" d="M12 7.5c.651-.549 1.016-1.12 1-2-.036-1.995-1.5-3.496-4-3.496H3.005V4.5H9c.5 0 1 .54 1 1 0 .5-.5 1-1 1-.45.033-.68-.006-1.133 0H3V14h2.5V9h4c.569-.025 1.5 0 1.5 1s-.824 1.482-1.5 1.5c-.377.007-1.123 0-1.5 0 0 .5-.006 2.175 0 2.5.885 0 1.148.03 1.5 0 1.5 0 3.5-.5 4-2.5S13 8 12 7.5"/></svg> \ No newline at end of file
diff --git a/icons/blade.svg b/icons/blade.svg
new file mode 100644
index 00000000..647b3afc
--- /dev/null
+++ b/icons/blade.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M8.83 4.39a.4.4 0 0 0 0 .1v2.56L7.18 8V3.1a.3.3 0 0 0 0-.09.1.1 0 0 0 0-.05L7 2.79 4.54 1.35a.43.43 0 0 0-.41 0L1.69 2.76h-.06v.15a.3.3 0 0 0 0 .1v8.37a.38.38 0 0 0 .2.35l4.88 2.81h.27l4.89-2.82a.4.4 0 0 0 .2-.35V8.92l2.24-1.29a.38.38 0 0 0 .2-.35V4.49a.3.3 0 0 0 0-.1l-.07-.07L12 2.92a.43.43 0 0 0-.41 0L9 4.14l-.07.08Zm2.84 1.05L10 4.49l1.64-.94 1.63.94ZM4.33 4.05 2.7 3.11l1.63-.94L6 3.11Zm-.39 6.15H4v.06l2.24 1.27v2.07l-3.95-2.35V3.81l1.64.94v5.45Zm2.43-1.74-1.08.62-.55.32V4.75l1.63-.94Zm3.26-1.41V5.19l1.63.94V8Zm1.22 1.64L6.78 11l-1.63-.9 4.07-2.35Zm-3.67 3 4.08-2.33v1.86L7.18 13.6Zm6.53-6.53v1.89L12.07 8V6.13Z" style="fill:#d32222"/></svg> \ No newline at end of file
diff --git a/icons/brotli.svg b/icons/brotli.svg
new file mode 100644
index 00000000..e08d226f
--- /dev/null
+++ b/icons/brotli.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EEAC30" fill-rule="evenodd" d="M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12M4.335 9.348c.24.138 1.105-.913 1.933-2.348s1.306-2.71 1.067-2.848S6.23 5.065 5.402 6.5 4.096 9.21 4.335 9.348M6 11.464c.478.276 1.761-1.05 2.866-2.964S10.478 4.812 10 4.536 8.239 5.586 7.134 7.5 5.522 11.188 6 11.464M10.598 9.5c-.828 1.435-1.694 2.486-1.933 2.348S8.904 10.435 9.732 9c.829-1.435 1.694-2.486 1.933-2.348s-.238 1.413-1.067 2.848" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/browserslist.svg b/icons/browserslist.svg
new file mode 100644
index 00000000..d0340bdf
--- /dev/null
+++ b/icons/browserslist.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><circle cx="8" cy="8" r="6" style="fill:#fbb03b"/><path d="M12.25 6.47a.62.62 0 0 0-.55.32A2.71 2.71 0 0 1 10.29 5a5 5 0 0 1-.11-.47 5 5 0 0 1-.07-.58 3.5 3.5 0 0 0-.89.24 3.3 3.3 0 0 1 .13-1A3.7 3.7 0 0 0 7.77 4a4 4 0 0 1-.25-1 3.8 3.8 0 0 0-1.16 1.4 3.7 3.7 0 0 1-.59-.86 3.8 3.8 0 0 0-.59 1.73 4 4 0 0 1-.83-.58 3.6 3.6 0 0 0 .07 1.81 3.8 3.8 0 0 1-1-.23 3.8 3.8 0 0 0 .71 1.66 4.2 4.2 0 0 1-1 .14 3.8 3.8 0 0 0 1.26 1.3 3.8 3.8 0 0 1-.91.51 4 4 0 0 0 1.65.75 4 4 0 0 1-.66.77 3.9 3.9 0 0 0 1.8.13 3.8 3.8 0 0 1-.34 1A3.8 3.8 0 0 0 7.66 12a4.3 4.3 0 0 1 0 1 4.69 4.69 0 0 0 2.41-3.13 3.2 3.2 0 0 0 .13-1.06v-.22a9 9 0 0 0 2.11-.76 1.1 1.1 0 0 0 .39-.35.7.7 0 0 0 .13-.4.61.61 0 0 0-.58-.61m-.11 1a5.6 5.6 0 0 1-1.61.62h-.18c0-.37-.07-.71-.12-1a.45.45 0 0 0 0-.88.23.23 0 0 0-.14 0 3.2 3.2 0 0 1 0-.68 2.35 2.35 0 0 0 .67 1.06 3.8 3.8 0 0 0 1.42.86Zm-1.13-3.6"/><path d="M10.24 8.21a1.4 1.4 0 0 1 0-.25c0-.16-.08-.69-.1-.88v-.07h.1a.34.34 0 0 0 .23-.53.43.43 0 0 0-.28-.15h-.07l.08.07a.2.2 0 0 1 .07.13.23.23 0 0 1-.11.2s0 0-.06 0a4.5 4.5 0 0 1-.1-1.38c0-.1 0-.23.07-.29v-.11V5a2 2 0 0 0 0 .27A2.65 2.65 0 0 0 11.45 7a4 4 0 0 0 .72.34l.17.07s0 .09-.13.17a6 6 0 0 1-1.58.62c-.41.09-.38.08-.39.01" style="fill:#fff"/></svg> \ No newline at end of file
diff --git a/icons/bruno.svg b/icons/bruno.svg
new file mode 100644
index 00000000..82a3922c
--- /dev/null
+++ b/icons/bruno.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#F4AA41" d="m10.848 3.443 1.055.41L13.6 5.844l1.055 2.52-.469 1.23c-.294.888-.825 1.683-1.698 2.343l-.586-.782s-.896 1.807-2.516 2.1c0 0-2.405.453-3.654-.206-.802-.422-1.035-1.034-1.035-1.034l-.8-.801-.372.547-.488-.02-1.27-1.699-.41-1.269.04-1.054.546-1.289 1.133-1.738s.625-1.152 1.914-.917c0 0 1.523-1.133 2.772-.957 1.25.176 1.074-.293 3.085.625"/><path fill="#EA5A47" d="m7.92 11.097.722.566h.586l.02.898-.177.82-.253.45-.664.35-1.074-.136-.371-.41-.234-.996.058-.937.469.059z"/><path fill="#49371F" d="M9.015 7.202s.61.42.928.226a.676.676 0 1 0-.703-1.154c-.318.194-.225.928-.225.928m-.141 4.573a.35.35 0 0 1 .698-.057zm-.356 2.3-.102-.334zm-1.436-.135-.228.266zm2.141-2.193.349-.028v.008l.006.091a6.3 6.3 0 0 1-.032 1.035c-.036.29-.103.614-.232.893-.128.276-.341.556-.693.664l-.205-.67c.085-.025.178-.104.263-.289.085-.183.14-.425.172-.683a5.4 5.4 0 0 0 .023-.993zm-.602 2.663c-.363.111-.72.126-1.02.085-.288-.04-.568-.136-.747-.29l.456-.53c.035.03.164.096.385.126.21.028.464.019.72-.06zm-1.767-.204a1.2 1.2 0 0 1-.258-.347 2.6 2.6 0 0 1-.205-.532 4 4 0 0 1-.067-1.633l.692.106a3.3 3.3 0 0 0 .05 1.344c.045.164.098.293.148.386a1 1 0 0 0 .066.108q.03.039.03.036zM6.617 7.19s-.603.416-.918.224a.668.668 0 0 1 .695-1.142c.315.192.223.919.223.919"/><path stroke="#49371F" stroke-linecap="round" stroke-width=".7" d="M10.35 10.063c.112.844-.475 1.4-1.003 1.603-.65.248-1.192-.097-1.476-.549-.218.435-.704.805-1.476.549-.48-.256-1.115-.76-1.004-1.603"/><path stroke="#49371F" stroke-linecap="round" stroke-width=".7" d="M11.68 6.67c.543 1.208.12 3.051-.028 3.602a.46.46 0 0 0 .03.32l.466.982c.146.308.56.364.78.104.748-.888 2.005-2.67 1.534-3.91-1.654-4.36-3.718-4.251-3.718-4.251-.666-.453-3.07-1.626-5.813.205 0 0-2.023-.403-3.5 3.968-.423 1.25.803 3.015 1.534 3.9.219.264.637.21.784-.1l.462-.976a.46.46 0 0 0 .03-.32c-.147-.55-.57-2.393-.028-3.602"/><path fill="#49371F" d="M5.595 12.337a.35.35 0 1 1-.384.585zm-1.572-1.425.318-.146v.001l.02.04.066.13c.06.109.146.261.259.43.228.344.542.728.91.97l-.385.585c-.483-.317-.859-.792-1.108-1.167a6 6 0 0 1-.39-.68l-.006-.012-.002-.004v-.001z"/><path stroke="#49371F" stroke-linecap="round" stroke-width=".7" d="M11.8 11.03s-.548 1.084-1.422 1.602"/><path fill="#49371F" d="M7.52 10.754a.35.35 0 1 1 .7 0zm0 .363v-.364h.7v.364zm1.077-2.788c.25 0 .475.155.563.39l.38 1.014-.87.358a.6.6 0 0 1-.49-.014c-.249-.123-.385-.128-.623 0a.6.6 0 0 1-.547-.006l-.81-.426.403-.95a.6.6 0 0 1 .554-.366z"/></svg> \ No newline at end of file
diff --git a/icons/bsconfig.svg b/icons/bsconfig.svg
new file mode 100644
index 00000000..1957e34f
--- /dev/null
+++ b/icons/bsconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path stroke="#D94851" d="M2.5 4A1.5 1.5 0 0 1 4 2.5h8A1.5 1.5 0 0 1 13.5 4v8a1.5 1.5 0 0 1-1.5 1.5H4A1.5 1.5 0 0 1 2.5 12z"/><path fill="#D94851" d="M5 6a1 1 0 0 1 1-1h2v5a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1zm7 .5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></svg> \ No newline at end of file
diff --git a/icons/buck.svg b/icons/buck.svg
new file mode 100644
index 00000000..581060b3
--- /dev/null
+++ b/icons/buck.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#4566A9" d="M2.75 3h-1.5v2.31l2.44 2.44h2.435l.375.5H3.19L5.94 11l-2.97 2.97L3 14h2.06l3-3-1.25-1.25h6.213l-2.5 1.667L7.938 14h2.122l1.417-1.417L14.75 10.4V8.25h-3.721l-.508-.71 1.229-1.23V4h-1.5v1.69l-.613.612-.387-.542V4h-1.5v2.24l1.435 2.01h-.81L5.75 4.75V3h-1.5v2.25l.75 1h-.69L2.75 4.69z"/></svg> \ No newline at end of file
diff --git a/icons/bun.svg b/icons/bun.svg
new file mode 100644
index 00000000..2dc1ee40
--- /dev/null
+++ b/icons/bun.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#AAA596" fill-rule="evenodd" d="M6.616 2.266c-.318.297-.694.53-2.007 1.56C2.907 5.16 1.217 6.844 1.217 9.067c0 2.467 1.77 4.933 6.488 4.933 4.864 0 7.078-1.85 7.078-4.933 0-2.466-1.622-4.008-3.392-5.24-.29-.203-.61-.41-.938-.62-1.005-.65-2.1-1.356-2.748-2.207-.621.752-.836 1.029-1.09 1.266m3.645 7.212a1.13 1.13 0 1 0 0-2.26 1.13 1.13 0 0 0 0 2.26m-4.522 0a1.13 1.13 0 1 0 0-2.26 1.13 1.13 0 0 0 0 2.26m1.13 1.13c0 .377.227 1.131 1.131 1.131s1.13-.754 1.13-1.13z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/bundler.svg b/icons/bundler.svg
new file mode 100644
index 00000000..20b0abc3
--- /dev/null
+++ b/icons/bundler.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EF1362" d="M8 7.545h2.857L8 10.727zM9.714 5H6.286L4 7.545 8 12l4-4.455z"/><rect width="11" height="11" x="2.5" y="2.5" stroke="#EF1362" rx="1.5"/></svg> \ No newline at end of file
diff --git a/icons/bunlock.svg b/icons/bunlock.svg
new file mode 100644
index 00000000..fcafae39
--- /dev/null
+++ b/icons/bunlock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><mask id="path-1-inside-1_1712_15" fill="#fff"><path d="M4.609 3.826C6.968 1.976 6.304 2.696 7.705 1c.86 1.13 2.507 2.004 3.686 2.826 1.77 1.233 3.392 2.775 3.392 5.241 0 3.083-2.214 4.933-7.078 4.933-4.718 0-6.488-2.466-6.488-4.933 0-2.223 1.69-3.907 3.392-5.24"/></mask><path fill="#AAA596" d="M7.705 1 8.9.092 7.753-1.414 6.55.045zM4.61 3.826l.925 1.18zm10.174 5.241h-1.5zm-3.392-5.24.858-1.232zM6.55.044c-.761.921-.834 1.02-1.015 1.176-.103.09-.236.19-.545.423-.294.221-.705.53-1.306 1.002l1.851 2.36c.578-.453.97-.748 1.258-.965.274-.206.506-.378.706-.552.427-.37.724-.76 1.364-1.534zm-2.866 2.6C1.991 3.973-.283 6.06-.283 9.068h3c0-1.438 1.107-2.72 2.817-4.06zM-.283 9.068c0 1.598.581 3.26 1.974 4.509C3.074 14.815 5.093 15.5 7.705 15.5v-3c-2.106 0-3.33-.548-4.012-1.159-.672-.601-.976-1.406-.976-2.274zM7.705 15.5c2.583 0 4.72-.484 6.247-1.599 1.606-1.172 2.33-2.89 2.33-4.834h-3c0 1.14-.382 1.888-1.099 2.411-.796.582-2.197 1.022-4.478 1.022zm8.578-6.433c0-3.254-2.192-5.187-4.034-6.472l-1.715 2.462c1.696 1.182 2.749 2.332 2.749 4.01zm-4.034-6.472c-.321-.223-.67-.448-.997-.659a35 35 0 0 1-.969-.64C9.647.855 9.181.463 8.9.092L6.51 1.908c.578.76 1.365 1.37 2.062 1.853.358.248.722.483 1.053.696.34.22.64.413.908.6z" mask="url(#path-1-inside-1_1712_15)"/><path fill="#AAA596" d="M9.13 10.609H6.87c0 .377.226 1.13 1.13 1.13s1.13-.754 1.13-1.13"/><path fill="#AAA596" fill-rule="evenodd" d="M10.26 9.478a1.13 1.13 0 1 0 0-2.26 1.13 1.13 0 0 0 0 2.26m-4.52 0a1.13 1.13 0 1 0 0-2.26 1.13 1.13 0 0 0 0 2.26" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/c.svg b/icons/c.svg
new file mode 100644
index 00000000..f0c7ecfb
--- /dev/null
+++ b/icons/c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#6A83FF" d="M12.85 4.52 8.71 2.13a1.34 1.34 0 0 0-1.34 0L3.23 4.52a1.33 1.33 0 0 0-.67 1.15v4.78a1.35 1.35 0 0 0 .67 1.16L7.37 14a1.34 1.34 0 0 0 1.34 0l4.14-2.39a1.35 1.35 0 0 0 .67-1.16V5.67a1.33 1.33 0 0 0-.67-1.15M8 10a2 2 0 0 0 1.41-.59l1.42 1.42a4 4 0 1 1 0-5.66L9.41 6.59A2 2 0 0 0 8 6a2 2 0 1 0 0 4"/></svg> \ No newline at end of file
diff --git a/icons/cargo.svg b/icons/cargo.svg
new file mode 100644
index 00000000..cb56f097
--- /dev/null
+++ b/icons/cargo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DA9A1D" d="M5 13.5V10l3 1.5V15zM1 11V7.5L4 9v3.5zm4-2V5.5L8 7v3.5z"/><path fill="#FFCB66" d="M11 13.5V10l-3 1.5V15zm4-2.667V7.5l-3 1.667V12.5zM11 9V5.5L8 7v3.5zm4-2.167V3.5l-3 1.667V8.5zM8 6 5 4.5 8 3l3 1.5zm4-2L9 2.5 12 1l3 1.5z"/><path fill="#DA9A1D" d="M4 8 1 6.5 4 5z"/></svg> \ No newline at end of file
diff --git a/icons/cargolock.svg b/icons/cargolock.svg
new file mode 100644
index 00000000..9a13aeec
--- /dev/null
+++ b/icons/cargolock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M5 13.5V10l3 1.5V15zM1 11V7.5L4 9v3.5zm4-2V5.5L8 7v3.5zm6 4.5V10l-3 1.5V15zm4-2.667V7.5l-3 1.667V12.5zM11 9V5.5L8 7v3.5zm4-2.167V3.5l-3 1.667V8.5zM8 6 5 4.5 8 3l3 1.5zm4-2L9 2.5 12 1l3 1.5zM4 8 1 6.5 4 5z"/></svg> \ No newline at end of file
diff --git a/icons/cert.svg b/icons/cert.svg
new file mode 100644
index 00000000..86f1d7ca
--- /dev/null
+++ b/icons/cert.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#46C5C5" fill-rule="evenodd" d="M8.707 2.05a1 1 0 0 0-1.414 0l-.95.95H5a1 1 0 0 0-1 1v1.343l-.95.95a1 1 0 0 0 0 1.414l.95.95V10a1 1 0 0 0 1 1h1v4l2-2 2 2v-4h1a1 1 0 0 0 1-1V8.657l.95-.95a1 1 0 0 0 0-1.414l-.95-.95V4a1 1 0 0 0-1-1H9.657zM8 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/cheader.svg b/icons/cheader.svg
new file mode 100644
index 00000000..ba0a4045
--- /dev/null
+++ b/icons/cheader.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#6A83FF" fill-rule="evenodd" d="m11.5 3.74 1.35.78a1.33 1.33 0 0 1 .67 1.15v4.78a1.35 1.35 0 0 1-.67 1.16l-1.35.78zM9.053 2.329 8.71 2.13a1.34 1.34 0 0 0-1.34 0l-.423.244v4.301h2.106zM4.5 3.787l-1.27.733a1.33 1.33 0 0 0-.67 1.15v4.78a1.35 1.35 0 0 0 .67 1.16l1.27.733zm2.447 9.969L7.37 14a1.34 1.34 0 0 0 1.34 0l.343-.198V9H6.947z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/civet.svg b/icons/civet.svg
new file mode 100644
index 00000000..78b55f1c
--- /dev/null
+++ b/icons/civet.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#33A06F" fill-rule="evenodd" d="M8 6c0-1.131.5-3 1-4l1 1.5h2.5l1-1.5q.095.285.19.562c.429 1.267.81 2.39.81 3.438 0 .724-.466 1.215-1.061 1.53l.061-.03c0 1 0 4-2 4H4c0 1 1.438 1 3.5 1 4 0 5.5.5 5.5 1.5 0 .816-.667.633-2 .266-.3-.082-.633-.174-1-.266-1-.25-2.25-.25-3.438-.25-1.187 0-2.312 0-3.062-.25-1.06-.354-1.5-1-1.5-3s.5-3.5 2.5-4c1.143-.286 2.286.082 3.429.449q.356.116.713.223C8.257 6.878 8 6.492 8 6m5.5-1c0 .333 0 1.5-2 1.5 0-1.6 1.667-1.667 2-1.5M9 5c0 .333 0 1.5 2 1.5C11 4.9 9.333 4.833 9 5" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/claude.svg b/icons/claude.svg
new file mode 100644
index 00000000..e804a18f
--- /dev/null
+++ b/icons/claude.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#D97757" d="m5.112 1.273.59.08.034.029.23.2.026.022.354.806.548 1.218.85 1.656v.001l.25.492L8 5.79l.004.014.013.045.033-.434v-.006l.13-1.143.127-1.478v-.003l.044-.417.002-.021.008-.02.206-.499.018-.043.038-.025.41-.27.07-.046.077.036.32.154.035.017.023.033.263.375.034.048-.008.06-.037.243-.157 1.016v.005L9.345 5.02l-.132.7.455-.602.002-.004.906-1.13.005-.007.4-.45.002-.003.466-.495.008-.009.009-.006.3-.237.04-.032h.699l.045.067.416.619.039.058-.02.068-.186.638-.008.029-.019.022-.583.736.001.001-.482.626-.688.924-.311.535 1.432-.302.004-.001.845-.154h.002l1.009-.173.047-.007.499.232.066.03.017.072.05.216.01.046-.018.044-.18.443-.028.07-.074.02-1.08.266-.006.001-1.261.252-1.146.27.093.01.358.02h.891l1.695.126.032.021.433.286.022.015.016.022.26.35.037.05-.01.062-.042.267-.013.074-.068.035-.665.34-.05.025-3.051-.725h-.002l-.4-.1.316.308 1.1.992.002.002 1.375 1.278.035.03.01.047.07.317.013.064-.038.054-.176.25-.053.074-.09-.012-.187-.027-.038-.005-.03-.024-1.21-.908-.009-.007-.466-.41-.537-.45 1.164 1.746.02.03.004.036.066.592.005.043-.018.04-.093.192-.027.056-.059.02-.333.118-.038.012-.04-.006-.364-.068-.06-.01-.036-.05-.753-1.055-.004-.005-.775-1.188-.004-.006-.454-.773-.34 3.666-.004.047-.031.036-.173.204-.026.029-.035.012-.4.155-.077.03-.067-.05-.333-.254-.03-.024-.193-.445-.019-.044.01-.048.176-.807.214-1.055.17-.83.131-.873-.48.66-.001.002-1.194 1.614-.006.007-.006.005-.945 1.012-.024.025-.031.012-.227.09-.063.026-.545-.282.01-.101.037-.364.004-.037.021-.032.22-.322.006-.009 1.31-1.664.787-1.03.005-.006.044-.052-2.848 1.85-.029.018-.034.004-.62.08-.07.009-.051-.048-.267-.25-.052-.05.039-.48.003-.053.164-.172.01-.011.014-.01 1.046-.718.03.036-.022-.04 2.445-1.373-.353-.02-1.473-.04h-.002L3.265 8.55h-.002L2.02 8.483h-.012l-.01-.003-.314-.066-.055-.01-.033-.046-.294-.386-.04-.051.04-.256.011-.064.054-.038.308-.205.053.005.375.033 2.077.142.906.054h.007l1.218.127-1.153-.78-1.398-.925-.006-.004-.729-.53-.396-.27-.02-.013-.014-.018-.2-.253-.024-.031-.006-.039-.087-.552-.01-.072.047-.052.36-.396.049-.054.57.039.015.003.123.035.029.007.023.018.49.376 1.043.808 1.225.902-.623-1.125-.79-1.362-.351-.562-.012-.018-.099-.36a1.8 1.8 0 0 1-.062-.438l-.001-.051.03-.04.41-.556.028-.039.046-.014.227-.074.032-.01z"/></svg> \ No newline at end of file
diff --git a/icons/cli.svg b/icons/cli.svg
new file mode 100644
index 00000000..fd39fb86
--- /dev/null
+++ b/icons/cli.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#F34C4C" d="M3 5V2l6.5 6L3 14v-3l3.5-3z"/><circle cx="9" cy="13" r="1" fill="#F34C4C"/><circle cx="13" cy="13" r="1" fill="#F34C4C"/><path fill="#F34C4C" d="M9 12h4v2H9z"/></svg> \ No newline at end of file
diff --git a/icons/clojure.svg b/icons/clojure.svg
new file mode 100644
index 00000000..30566e27
--- /dev/null
+++ b/icons/clojure.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#567ED6" d="M8.17 1C6.458 1 3.5 1.5 2 4c1.5-1 3.222-.74 4.207-.31a4.667 4.667 0 0 1 4.95 7.746q.3.063.629.064c1.772 0 3.205-1.502 3.205-3.354l.003-.009.006-.016C14.984 4.195 11.928 1 8.17 1"/><path fill="#8FB3FD" d="M9.97 10.894a3.5 3.5 0 0 0-2.528-6.35c.786.835 1.131 2.027 1.142 3.45.008 1.14.52 2.245 1.385 2.9Z"/><path fill="#61AF30" d="M4.843 4.564a4.667 4.667 0 0 0 5.093 7.684C10.906 12.688 12 13 14 12c-1.333 2.5-4.459 3-6.17 3C4.073 15 1.017 11.805 1 7.88q0-.008.006-.017l.003-.01c0-1.85 1.433-3.353 3.205-3.353q.327 0 .629.064"/><path fill="#61AF30" d="M6.03 5.106c.759.575 1.246 1.495 1.36 2.482-.76.304-1.81.965-2.45 2.113a3.496 3.496 0 0 1 1.09-4.595M7.478 8.83c.142.98.537 1.895 1.249 2.594a3.49 3.49 0 0 1-2.963-.732c.359-.942 1.097-1.54 1.714-1.863Z"/></svg> \ No newline at end of file
diff --git a/icons/cmake.svg b/icons/cmake.svg
new file mode 100644
index 00000000..b85d19f7
--- /dev/null
+++ b/icons/cmake.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#71D168" d="M6.208 11.087a.3.3 0 0 1 .27-.037l6.836 2.366c.32.111.24.584-.098.584H2.96a.3.3 0 0 1-.17-.547z"/><path fill="#ED6161" d="M9.749 10.71a.3.3 0 0 1-.175-.227L8.368 2.738c-.052-.334.4-.486.56-.188l5.08 9.466a.3.3 0 0 1-.387.416z"/><path fill="#6895D8" d="M7.977 7.801a.3.3 0 0 1-.116.265l-5.65 4.346c-.259.2-.605-.103-.442-.387l5.214-9.126a.3.3 0 0 1 .56.122z"/></svg> \ No newline at end of file
diff --git a/icons/codeworkspace.svg b/icons/codeworkspace.svg
new file mode 100644
index 00000000..b55d1a52
--- /dev/null
+++ b/icons/codeworkspace.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><mask id="mask0_1270_147" width="12" height="12" x="2" y="2" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#8A9AAA" d="m4.2 12.15-2-1.5a.5.5 0 0 1-.2-.4v-4.5a.5.5 0 0 1 .2-.4l2-1.5a.45.45 0 0 0-.137.4v7.5a.45.45 0 0 0 .137.4"/><path fill="#8A9AAA" d="M13.778 4.083a.5.5 0 0 0-.623.057l-.035.035L9.13 8l-2.208 2.117-2.042 1.958-.035.035a.5.5 0 0 1-.345.14.5.5 0 0 1-.3-.1l-2-1.5a.5.5 0 0 0 .68-.075L5.1 7.998l1.823-2.115 3.192-3.708A.5.5 0 0 1 10.492 2c.1 0 .196.028.278.082z"/><path fill="#8A9AAA" d="m13.778 11.917-3 2a.506.506 0 0 1-.658-.09l-3.197-3.71L5.1 7.998 2.88 5.423a.5.5 0 0 0-.68-.072l2-1.5a.5.5 0 0 1 .486-.064q.09.037.159.104l.035.035 2.043 1.958L9.13 8l3.99 3.825.035.035a.48.48 0 0 0 .345.14.5.5 0 0 0 .277-.083"/><path fill="#8A9AAA" d="M14 4.5v7a.5.5 0 0 1-.223.417l-3 2A.5.5 0 0 0 11 13.5v-11a.5.5 0 0 0-.23-.418l3.008 2A.5.5 0 0 1 14 4.5"/></mask><g mask="url(#mask0_1270_147)"><path fill="#909090" fill-opacity=".9" d="m4.2 12.15-2-1.5a.5.5 0 0 1-.2-.4v-4.5a.5.5 0 0 1 .2-.4l2-1.5a.45.45 0 0 0-.137.4v7.5a.45.45 0 0 0 .137.4"/><g filter="url(#filter0_dd_1270_147)"><path fill="#909090" fill-opacity=".9" d="M13.777 4.083a.5.5 0 0 0-.622.057l-.035.035-2.125 2.038L9.13 8l-2.208 2.117-2.042 1.958-.035.035a.5.5 0 0 1-.345.14.5.5 0 0 1-.3-.1l-2-1.5a.5.5 0 0 0 .68-.075L4 9.275l1.1-1.277 1.822-2.115 3.193-3.708A.5.5 0 0 1 10.492 2c.099 0 .195.028.278.082z"/></g><g filter="url(#filter1_dd_1270_147)"><path fill="#909090" fill-opacity=".9" d="m13.777 11.917-3 2a.506.506 0 0 1-.657-.09l-3.198-3.71L5.1 7.998 4 6.724l-1.12-1.3a.5.5 0 0 0-.68-.073l2-1.5a.5.5 0 0 1 .486-.064q.09.037.159.104l.035.035 2.042 1.958L9.13 8l1.868 1.79 2.122 2.035.035.035a.5.5 0 0 0 .345.14.5.5 0 0 0 .277-.083"/></g><g filter="url(#filter2_dd_1270_147)"><path fill="#909090" fill-opacity=".9" d="M14 4.5v7a.5.5 0 0 1-.223.417l-3 2A.5.5 0 0 0 11 13.5v-11a.5.5 0 0 0-.23-.418l3.008 2A.5.5 0 0 1 14 4.5"/></g></g><defs><filter id="filter0_dd_1270_147" width="21.939" height="20.612" x="-2.981" y="-1.886" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".246"/><feGaussianBlur stdDeviation=".246"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1270_147"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="1.295"/><feGaussianBlur stdDeviation="2.59"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.22 0"/><feBlend in2="effect1_dropShadow_1270_147" result="effect2_dropShadow_1270_147"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_1270_147" result="shape"/></filter><filter id="filter1_dd_1270_147" width="21.939" height="20.612" x="-2.981" y="-.136" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".246"/><feGaussianBlur stdDeviation=".246"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1270_147"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="1.295"/><feGaussianBlur stdDeviation="2.59"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.22 0"/><feBlend in2="effect1_dropShadow_1270_147" result="effect2_dropShadow_1270_147"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_1270_147" result="shape"/></filter><filter id="filter2_dd_1270_147" width="34.316" height="42.921" x="-4.773" y="-13.46" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation=".13"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1270_147"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation="7.771"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0"/><feBlend in2="effect1_dropShadow_1270_147" result="effect2_dropShadow_1270_147"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_1270_147" result="shape"/></filter></defs></svg> \ No newline at end of file
diff --git a/icons/coffeescript.svg b/icons/coffeescript.svg
new file mode 100644
index 00000000..0cbab2a4
--- /dev/null
+++ b/icons/coffeescript.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#AE7F64" d="M11.88 7H2.5v2.5a4.5 4.5 0 0 0 8.53 2h.85a2.24 2.24 0 1 0 0-4.48zm0 3.49h-.5V8h.5a1.25 1.25 0 0 1 0 2.5zM5.722 2.154v1.06c-.142.03-.293.123-.418.198a.86.86 0 0 0-.302.296.85.85 0 0 0-.115.456q0 .363.209.61a.67.67 0 0 0 .54.242q.286.003.465-.158.18-.163.294-.54l.239-.841q.2-.7.635-1.042t1.138-.347q.618.004 1.09.274.469.266.734.742.264.476.264 1.092 0 .907-.503 1.46c-.338.368-.953.605-1.555.675V5.18q.443-.077.669-.328.225-.251.225-.652 0-.415-.225-.666a.72.72 0 0 0-.559-.253.67.67 0 0 0-.464.163q-.183.162-.281.502l-.235.842q-.195.71-.66 1.05-.47.341-1.185.338-.605.003-1.048-.247a1.75 1.75 0 0 1-.69-.704 2.15 2.15 0 0 1-.248-1.045q0-.867.49-1.365c.327-.335.715-.561 1.496-.661"/></svg> \ No newline at end of file
diff --git a/icons/commitlint.svg b/icons/commitlint.svg
new file mode 100644
index 00000000..2dc89766
--- /dev/null
+++ b/icons/commitlint.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#50B2DD" fill-rule="evenodd" d="M3 2a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zm9.688 8V8.687h-1.279V3H8.788v1.313h1.343v4.375H8.852V10zM5.941 3.875c1.444 0 2.344.806 2.484 2.137H7.198c-.103-.663-.572-1.029-1.256-1.029-.884 0-1.369.626-1.369 1.766v.446c0 1.14.485 1.766 1.369 1.766.69 0 1.148-.35 1.256-.992h1.228C8.291 9.269 7.392 10 5.953 10c-1.687 0-2.64-.965-2.64-2.694v-.668c0-1.724.943-2.763 2.629-2.763Z" clip-rule="evenodd"/><path fill="#CE3D40" fill-rule="evenodd" d="m8 11.5 2.25 1.5H14v.5a1 1 0 0 1-1 1H9.75L8 13.5l-1.75 1H3a1 1 0 0 1-1-1V13h3.75z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/compodoc.svg b/icons/compodoc.svg
new file mode 100644
index 00000000..04e4a18d
--- /dev/null
+++ b/icons/compodoc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E73440" d="m9.062 3 1.707.602-3.541 10.039-1.707-.602z"/><path fill="#F1C40F" fill-rule="evenodd" d="m5.397 5.924-1.02-1.02-3.103 3.102.001.001L1 8.283l3.376 3.376 1.02-1.02L3.04 8.28l2.357-2.357Z" clip-rule="evenodd"/><path fill="#3498DB" fill-rule="evenodd" d="m15.048 8.555.275-.275-3.376-3.376-1.02 1.02 2.356 2.357-2.357 2.357 1.02 1.021 3.103-3.102z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/composer.svg b/icons/composer.svg
new file mode 100644
index 00000000..c96013ed
--- /dev/null
+++ b/icons/composer.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E28C4D" d="M6.868 13.974q-.713-.166-1.422-.336l-2.262-.541.024-.127q.055-.263.07-.53v-.02q.1-.533.31-1.04a.1.1 0 0 0-.009-.098 48 48 0 0 1-.603-1.247l-.013.01a.4.4 0 0 1-.246.102.3.3 0 0 1-.103-.02c-.117-.045-.155-.153-.181-.241l-.028-.075-.014-.027V9.78l-.005-.017a1 1 0 0 0-.044-.08.47.47 0 0 1-.09-.312c.02-.146.172-.205.285-.247l.061-.024v-.008l-.192-.524a39 39 0 0 1-.517-1.454 39 39 0 0 1-.633-2.036 8 8 0 0 1-.254-1.225.9.9 0 0 1 .057-.375 2 2 0 0 0 .042-.157v-.02a.2.2 0 0 1 .09-.108.25.25 0 0 1 .143-.037h.026a.84.84 0 0 1 .452.075q.163.079.271.215.22.244.388.518c.173.28.353.56.526.833q.234.364.47.743c.26-.34.491-.683.734-1.045l.068-.103q.225-.311.485-.6c.127-.145.248-.282.358-.427.14-.178.353-.229.523-.27h.008a.3.3 0 0 1 .07-.009c.055.002.109.018.154.047s.089.054.133.08q.197.102.348.256l.039-.01c1.487-.394 2.575-.78 3.528-1.257a4 4 0 0 1 .388-.163.6.6 0 0 1 .208-.039.4.4 0 0 1 .165.03q.078.03.136.087a.44.44 0 0 1 .096.17.4.4 0 0 1 .01.192.97.97 0 0 1-.35.63l-.146.125c-.388.336-.794.683-1.227.993-.035.028-.033.032-.026.053q.066.187.125.373a7 7 0 0 0 .321.845l.016-.008 1.576-.886c1.345-.757 2.741-1.543 4.12-2.31.104-.06.167-.097.252-.097.116 0 .182.07.274.164l.02.021.01.026.013.011a.25.25 0 0 1 .078.087.2.2 0 0 1 .026.11.25.25 0 0 1-.055.113.3.3 0 0 1-.106.078l-.998.583-1.034.603c-.398.24-.808.478-1.205.708l-.283.167a.84.84 0 0 1 .328.234c.146.14.287.312.287.542v.009c-.012.178-.052.38-.255.523a10 10 0 0 0-.93.84q-.16.158-.32.31a1 1 0 0 0-.101.14l-.046.07c-.441.58-.795 1.221-1.137 1.841-.155.28-.31.57-.48.85a1.5 1.5 0 0 1-.603.56q-.434.238-.893.437h-.008a.17.17 0 0 0-.105.063.14.14 0 0 0-.026.112c.029.273-.14.439-.31.564a.2.2 0 0 0-.047.076 4.7 4.7 0 0 0-.258.82 8 8 0 0 1-.14.511l.053.05-.05.082q-.101.214-.243.411l-.06.087zm-2.821-1.37q.125.017.246.047c.763.184 1.48.35 2.197.5l.023.005.018.01.219-.652.233-.69.007-.027a.4.4 0 0 1 .14-.226l.005-.005a.6.6 0 0 0 .19-.204.5.5 0 0 0 .064-.26 1 1 0 0 1 .026-.18l.018-.087c0-.076.024-.151.072-.214a.4.4 0 0 1 .193-.14 4 4 0 0 0 1.364-.917v-.01a1 1 0 0 0 .208-.259c.297-.619.697-1.183 1.046-1.679.348-.496.84-1.119 1.483-1.657a.66.66 0 0 0 .215-.36.15.15 0 0 0-.005-.1.17.17 0 0 0-.066-.08.25.25 0 0 0-.12-.042.14.14 0 0 0-.085.03c-.558.375-1.193.63-1.808.881l-.192.078-.116.049c-.255.106-.495.205-.613.433l-.012.022-.02.017a.3.3 0 0 1-.067.041l-.011.007c-.233.13-.49.22-.76.264a1 1 0 0 1-.099.007v-.14.14a.2.2 0 0 0-.07.008c-1.416.802-2.863 1.605-4.255 2.384l-.01.006.187.36q.282.57.628 1.112a.3.3 0 0 1 .068.192.3.3 0 0 1-.076.19c-.26.323-.363.704-.465 1.132zM1.834 4.2l.04.222q.042.281.118.556c.33 1.12.734 2.231 1.126 3.31l.166.46 1.729-.878 2-1.016h.007l-.104-.06c-.298-.174-.603-.35-.893-.554l-.045.165a.2.2 0 0 1-.07.121.26.26 0 0 1-.137.06h-.048a.4.4 0 0 1-.157-.04.34.34 0 0 1-.12-.1l-.034-.035c-.164-.148-.139-.28-.108-.34q.08-.162.135-.33.045-.133.103-.266v-.01c.055-.123.107-.24.256-.24.087 0 .155.046.257.11l.01.007.052.047c.398.382.867.698 1.386.933a.7.7 0 0 0 .302.085.43.43 0 0 0 .256-.095l.016-.011-.016-.041a.3.3 0 0 0-.078-.13c-.26-.21-.525-.434-.834-.712L7 5.284c-.336-.3-.684-.61-.94-.992a1.2 1.2 0 0 0-.265-.312.2.2 0 0 0-.066-.044.2.2 0 0 0-.079-.018.2.2 0 0 0-.1.028.2.2 0 0 0-.07.069c-.116.189-.25.369-.381.542-.13.174-.258.344-.368.524-.111.18-.225.338-.34.498a7 7 0 0 0-.45.694.1.1 0 0 0 0 .117q.052.116.104.222.136.257.219.534c.07.198-.064.28-.15.305a.3.3 0 0 1-.1.02.26.26 0 0 1-.128-.039.23.23 0 0 1-.086-.093l-.005-.007a12 12 0 0 0-.201-.303 9 9 0 0 1-.291-.447c-.155-.258-.31-.526-.46-.785-.305-.539-.622-1.094-1.009-1.597m6.86 1.782.319-.177q-.063-.16-.124-.323a11 11 0 0 0-.335-.818q-.214.106-.396.25a3 3 0 0 1-.3.204zm-1.81-1.963.217.254q.134.159.27.315.134-.063.265-.117.247-.09.461-.233A29 29 0 0 0 9.874 2.87c.07-.054.089-.089.085-.103v-.049h-.006a1 1 0 0 0-.113.057l-.039.021q-.21.107-.412.204-.646.34-1.335.603l-.364.131a21 21 0 0 1-.805.285Z"/></svg> \ No newline at end of file
diff --git a/icons/composerlock.svg b/icons/composerlock.svg
new file mode 100644
index 00000000..4e84f111
--- /dev/null
+++ b/icons/composerlock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M6.868 13.974q-.713-.166-1.422-.336l-2.262-.541.024-.127q.054-.263.07-.53v-.02q.1-.533.31-1.04a.1.1 0 0 0-.009-.098 48 48 0 0 1-.603-1.247l-.013.01a.4.4 0 0 1-.246.102.3.3 0 0 1-.103-.02c-.117-.045-.155-.153-.181-.241l-.028-.075-.014-.027V9.78l-.005-.017a1 1 0 0 0-.044-.08.47.47 0 0 1-.09-.312c.02-.146.172-.205.285-.247l.061-.024v-.008l-.192-.524a39 39 0 0 1-.517-1.454 39 39 0 0 1-.633-2.036 8 8 0 0 1-.254-1.225.9.9 0 0 1 .057-.375q.026-.082.042-.157v-.02a.2.2 0 0 1 .09-.108.25.25 0 0 1 .143-.037h.026a.84.84 0 0 1 .452.075q.163.079.271.215.22.244.388.518c.173.28.353.56.526.833q.234.364.47.743c.26-.34.491-.683.734-1.045l.068-.103q.225-.311.485-.6c.127-.145.248-.282.358-.427.14-.178.353-.229.523-.27h.008a.3.3 0 0 1 .07-.009.3.3 0 0 1 .154.047q.067.042.133.08.197.102.348.256l.039-.01c1.487-.394 2.575-.78 3.528-1.257a4 4 0 0 1 .388-.163.6.6 0 0 1 .208-.039.4.4 0 0 1 .165.03q.078.03.136.087a.44.44 0 0 1 .096.17.4.4 0 0 1 .01.192.97.97 0 0 1-.35.63l-.146.125c-.388.336-.794.683-1.227.993-.035.028-.033.032-.026.053q.066.187.125.373a7 7 0 0 0 .321.845l.016-.008 1.576-.886c1.345-.757 2.741-1.543 4.12-2.31.104-.06.167-.097.252-.097.116 0 .182.07.274.164l.02.021.01.026.013.011q.05.035.078.087a.2.2 0 0 1 .026.11.25.25 0 0 1-.055.113.3.3 0 0 1-.106.078l-.998.583-1.034.603c-.398.24-.808.478-1.205.708l-.283.167a.84.84 0 0 1 .328.234c.146.14.287.312.287.542v.009c-.012.178-.052.38-.255.523a10 10 0 0 0-.93.84q-.16.158-.32.31a1 1 0 0 0-.101.14l-.046.07c-.441.58-.795 1.221-1.137 1.841-.155.28-.31.57-.48.85a1.5 1.5 0 0 1-.603.56q-.434.238-.893.437h-.008a.17.17 0 0 0-.105.063.14.14 0 0 0-.026.112c.029.273-.14.439-.31.564a.2.2 0 0 0-.047.076q-.167.4-.258.82a8 8 0 0 1-.14.511l.053.05-.05.082q-.101.214-.243.411l-.06.087zm-2.821-1.37q.125.017.246.047c.763.184 1.48.35 2.197.5l.023.005.018.01.219-.652.233-.69.007-.027a.4.4 0 0 1 .14-.226l.005-.005a.6.6 0 0 0 .19-.204.5.5 0 0 0 .064-.26 1 1 0 0 1 .026-.18l.018-.087c0-.076.024-.151.072-.214a.4.4 0 0 1 .193-.14 4 4 0 0 0 1.364-.917v-.01a1 1 0 0 0 .208-.259c.297-.619.697-1.183 1.046-1.679.348-.496.84-1.119 1.483-1.657a.66.66 0 0 0 .215-.36.15.15 0 0 0-.005-.1.17.17 0 0 0-.066-.08.25.25 0 0 0-.12-.042.14.14 0 0 0-.085.03c-.558.375-1.193.63-1.808.881l-.192.078-.116.049c-.255.106-.495.205-.613.433l-.012.022-.02.017a.2.2 0 0 1-.067.041l-.011.007c-.233.13-.49.22-.76.264a1 1 0 0 1-.099.007v-.14.14a.2.2 0 0 0-.07.008c-1.416.802-2.863 1.605-4.255 2.384l-.01.006.187.36q.282.57.628 1.112a.3.3 0 0 1 .068.192.3.3 0 0 1-.076.19c-.26.323-.363.704-.465 1.132zM1.834 4.2l.04.222q.042.281.118.556c.33 1.12.734 2.231 1.126 3.31l.166.46 1.729-.878 2-1.016h.007l-.104-.06c-.298-.174-.603-.35-.893-.554l-.045.165a.2.2 0 0 1-.07.121.26.26 0 0 1-.137.06h-.048a.4.4 0 0 1-.157-.04.34.34 0 0 1-.12-.1l-.034-.035c-.164-.148-.139-.28-.108-.34q.08-.162.135-.33.045-.133.103-.266v-.01c.055-.123.107-.24.256-.24.087 0 .155.046.257.11l.01.007.052.047c.398.382.867.698 1.386.933q.14.075.302.085a.43.43 0 0 0 .256-.095l.016-.011-.016-.041a.3.3 0 0 0-.078-.13c-.26-.21-.525-.434-.834-.712L7 5.284c-.336-.3-.684-.61-.94-.992a1.2 1.2 0 0 0-.265-.312.2.2 0 0 0-.066-.044.2.2 0 0 0-.079-.018.2.2 0 0 0-.1.028.2.2 0 0 0-.07.069c-.116.189-.25.369-.381.542-.13.174-.258.344-.368.524-.111.18-.225.338-.34.498a7 7 0 0 0-.45.694.1.1 0 0 0 0 .117q.052.116.104.222.136.257.219.534c.07.198-.064.28-.15.305a.3.3 0 0 1-.1.02.26.26 0 0 1-.128-.039.23.23 0 0 1-.086-.093l-.005-.007a12 12 0 0 0-.201-.303 9 9 0 0 1-.291-.447c-.155-.258-.31-.526-.46-.785-.305-.539-.622-1.094-1.009-1.597m6.86 1.782.319-.177q-.063-.16-.124-.323a11 11 0 0 0-.335-.818q-.214.106-.396.25-.143.11-.3.204zm-1.81-1.963.217.254q.133.159.27.315.134-.063.265-.117.247-.09.461-.233A29 29 0 0 0 9.874 2.87c.07-.054.089-.089.085-.103v-.049h-.006a1 1 0 0 0-.113.057l-.039.021q-.21.107-.412.204-.646.34-1.335.603l-.364.131a21 21 0 0 1-.805.285"/></svg> \ No newline at end of file
diff --git a/icons/conan.svg b/icons/conan.svg
new file mode 100644
index 00000000..b308c3e1
--- /dev/null
+++ b/icons/conan.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#29AED2" fill-rule="evenodd" d="M7.27 2.185a1.35 1.35 0 0 1 .67-.18c.244-.021.49.023.71.13l4.14 2.39a1.33 1.33 0 0 1 .67 1.15v4.78a1.35 1.35 0 0 1-.67 1.16l-4.14 2.39a1.34 1.34 0 0 1-1.34 0l-4.14-2.39a1.35 1.35 0 0 1-.67-1.16v-4.78a1.33 1.33 0 0 1 .67-1.15zm4.897 4.148L8 3.833 6.75 5.5l1.667 1.667 1.25 2.083c1.666-.417 2.5-1.25 2.5-2.917m-8.284 4.304.83.63L8 8 6.83 6.75z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/conf.svg b/icons/conf.svg
new file mode 100644
index 00000000..af41076e
--- /dev/null
+++ b/icons/conf.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#d68012}</style></defs><circle cx="8" cy="8" r="2" class="cls-1"/><path d="M8 4.5A3.5 3.5 0 0 1 11.5 8 3.5 3.5 0 1 1 8 4.5M8 2a6 6 0 0 0-1 .09L6.34 4l-1.79-.9a5 5 0 0 0-.79.66 5 5 0 0 0-.66.79L4 6.34 2.09 7a6 6 0 0 0 0 2L4 9.66l-.9 1.79a5.9 5.9 0 0 0 1.45 1.45l1.79-.9.66 1.91a6 6 0 0 0 2.06 0l.6-1.91 1.79.89a5.9 5.9 0 0 0 1.45-1.45L12 9.66 13.91 9a6 6 0 0 0 0-2.06L12 6.34l.89-1.79a5 5 0 0 0-.66-.79 5 5 0 0 0-.79-.66L9.66 4 9 2.09A6 6 0 0 0 8 2" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/copilot.svg b/icons/copilot.svg
new file mode 100644
index 00000000..3569c939
--- /dev/null
+++ b/icons/copilot.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M8.01 2.588c.803 0 2.75.157 4.218 1.712.77.812 1.093 1.921 1.23 3.476.361 0 .698.08.926.39l.425.577a.96.96 0 0 1 .188.57v1.567a.65.65 0 0 1-.263.518c-1.927 1.41-4.304 2.545-6.725 2.545-2.679 0-5.36-1.544-6.724-2.545a.65.65 0 0 1-.264-.518V9.313c0-.206.065-.405.186-.57l.426-.576c.228-.309.567-.39.928-.39.136-1.555.458-2.665 1.228-3.477 1.468-1.555 3.416-1.712 4.22-1.712m0 4.298c-.166 0-.357.01-.56.03-.072.267-.178.508-.332.662-.612.612-1.35.706-1.745.706-.37 0-.76-.078-1.078-.278-.3.098-.588.241-.607.595-.032.671-.035 1.341-.038 2.011q-.002.504-.008 1.009c.001.195.12.377.297.458 1.446.659 2.813.99 4.071.99 1.256 0 2.623-.331 4.068-.99a.51.51 0 0 0 .297-.458 47 47 0 0 0-.045-3.02h.001c-.018-.356-.309-.496-.61-.595-.318.199-.705.278-1.076.278-.395 0-1.132-.094-1.744-.706-.155-.154-.26-.395-.332-.662a6 6 0 0 0-.559-.03m-1.47 2.4c.313 0 .568.253.568.566V10.9a.569.569 0 0 1-1.137 0V9.852c0-.313.255-.567.568-.567m2.91 0c.314 0 .569.253.569.566V10.9a.569.569 0 0 1-1.137 0V9.852c0-.313.255-.567.569-.567M5.468 4.133c-.611.06-1.126.261-1.389.54-.567.62-.446 2.194-.123 2.526.236.236.682.393 1.163.393.366 0 1.066-.08 1.642-.664.253-.245.41-.856.393-1.476-.018-.498-.157-.91-.367-1.084-.227-.2-.742-.288-1.319-.235m5.084 0c-.576-.053-1.092.034-1.32.235-.209.175-.349.586-.366 1.084-.018.62.14 1.231.393 1.476.577.585 1.276.664 1.643.664.48 0 .925-.157 1.16-.393.324-.332.447-1.905-.121-2.525-.262-.28-.778-.48-1.389-.541M8.01 5.644c-.14 0-.306.01-.49.027.018.096.027.2.036.314 0 .079 0 .158-.009.245.175-.017.323-.017.463-.017s.288 0 .463.017a2 2 0 0 1-.009-.245 3 3 0 0 1 .035-.314 5 5 0 0 0-.489-.027"/></svg> \ No newline at end of file
diff --git a/icons/cpp.svg b/icons/cpp.svg
new file mode 100644
index 00000000..a595f43b
--- /dev/null
+++ b/icons/cpp.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#C47CFC" fill-rule="evenodd" d="m8.71 2.13 4.14 2.39a1.33 1.33 0 0 1 .67 1.15v4.78a1.35 1.35 0 0 1-.67 1.16L8.71 14a1.34 1.34 0 0 1-1.34 0l-4.14-2.39a1.35 1.35 0 0 1-.67-1.16V5.67a1.33 1.33 0 0 1 .67-1.15l4.14-2.39a1.34 1.34 0 0 1 1.34 0m.79 8.624V8.75h-2v-1.5h2V5.254H11V7.25h2v1.5h-2v2h-.25l.004.004zm-1-6.723a4 4 0 1 0 0 7.938V9.934a2 2 0 1 1 0-3.869V4.032Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/crystal.svg b/icons/crystal.svg
new file mode 100644
index 00000000..34d39014
--- /dev/null
+++ b/icons/crystal.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="m14.493 10.128-4.714 4.321c-.02.017-.047.026-.066.017l-6.44-1.584c-.028-.009-.047-.026-.047-.044L1.491 6.933c-.01-.026 0-.044.019-.061l4.714-4.321c.02-.017.047-.026.066-.017l6.44 1.584c.028.009.047.026.047.044l1.725 5.905c.02.026.01.044-.01.061M8.176 5.426l-6.327 1.55c-.009 0-.018.017-.009.026l4.63 4.243c.009.009.028.009.028-.009l1.697-5.801c.01 0-.01-.018-.02-.01"/></svg> \ No newline at end of file
diff --git a/icons/csharp.svg b/icons/csharp.svg
new file mode 100644
index 00000000..2aa65622
--- /dev/null
+++ b/icons/csharp.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#B75FAF" d="M12.892 4.489 8.716 2.078a1.35 1.35 0 0 0-1.352 0l-4.176 2.41a1.34 1.34 0 0 0-.676 1.161v4.822a1.36 1.36 0 0 0 .676 1.17l4.176 2.411a1.35 1.35 0 0 0 1.352 0l4.176-2.41a1.36 1.36 0 0 0 .676-1.171V5.649a1.34 1.34 0 0 0-.676-1.16M11.53 7.324H10.2l-.323 1.402h1.291v1.008H9.644l-.363 1.594H8l.373-1.593H6.759l-.373 1.583H5.094l.364-1.594h-1.01V8.716H5.69l.292-1.392h-1.15v-1.01h1.402l.363-1.593H7.9l-.363 1.614H9.13l.364-1.594h1.3l-.372 1.594h1.11zM6.99 8.726h1.585l.322-1.402H7.304zm.324-1.402L6.99 8.726h1.584l.322-1.402zm0 0L6.99 8.726h1.584l.322-1.402z"/></svg> \ No newline at end of file
diff --git a/icons/cshtml.svg b/icons/cshtml.svg
new file mode 100644
index 00000000..16dc9460
--- /dev/null
+++ b/icons/cshtml.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#F16946" fill-rule="evenodd" d="M8.526 1.995a1.05 1.05 0 0 0-1.052 0L3.063 4.542a1.05 1.05 0 0 0-.526.91v5.095c0 .376.2.723.526.91l4.411 2.548c.326.188.726.188 1.052 0l4.411-2.547a1.05 1.05 0 0 0 .526-.91V5.452c0-.376-.2-.723-.526-.91zM4 7.5v1L7 11V9.577L5 8l2-1.5V5zM9 5v1.5L11 8 9 9.5V11l3-2.5v-1z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/csproj.svg b/icons/csproj.svg
new file mode 100644
index 00000000..54539240
--- /dev/null
+++ b/icons/csproj.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><mask id="a" width="12" height="12" x="2" y="2" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#fff" d="m4.2 12.15-2-1.5a.5.5 0 0 1-.2-.4v-4.5a.5.5 0 0 1 .2-.4l2-1.5a.45.45 0 0 0-.137.4v7.5a.45.45 0 0 0 .137.4"/><path fill="#fff" d="M13.777 4.083a.5.5 0 0 0-.622.057l-.035.035L9.13 8l-2.208 2.117-2.042 1.958-.035.035a.5.5 0 0 1-.345.14.5.5 0 0 1-.3-.1l-2-1.5a.5.5 0 0 0 .68-.075L5.1 7.998l1.823-2.115 3.192-3.708A.5.5 0 0 1 10.492 2c.1 0 .196.028.278.083l3.008 2Z"/><path fill="#fff" d="m13.777 11.917-3 2a.506.506 0 0 1-.657-.09l-3.197-3.71L5.1 7.997 2.88 5.423a.5.5 0 0 0-.68-.072l2-1.5a.5.5 0 0 1 .486-.064q.09.037.159.104l.035.035 2.043 1.958L9.13 8l3.99 3.825.035.035a.48.48 0 0 0 .345.14.5.5 0 0 0 .277-.083"/><path fill="#fff" d="M14 4.5v7a.5.5 0 0 1-.223.417l-3 2A.5.5 0 0 0 11 13.5v-11a.5.5 0 0 0-.23-.418l3.008 2A.5.5 0 0 1 14 4.5"/></mask><g mask="url(#a)"><path fill="#583F85" d="m4.2 12.15-2-1.5a.5.5 0 0 1-.2-.4v-4.5a.5.5 0 0 1 .2-.4l2-1.5a.45.45 0 0 0-.137.4v7.5a.45.45 0 0 0 .137.4"/><g filter="url(#b)"><path fill="#6D4EA3" d="M13.777 4.083a.5.5 0 0 0-.622.057l-.035.035-2.125 2.038L9.13 8l-2.208 2.117-2.042 1.958-.035.035a.5.5 0 0 1-.345.14.5.5 0 0 1-.3-.1l-2-1.5a.5.5 0 0 0 .68-.075L4 9.275l1.1-1.277 1.822-2.115 3.193-3.708A.5.5 0 0 1 10.492 2c.1 0 .196.028.278.083z"/></g><g filter="url(#c)"><path fill="#A377D9" d="m13.777 11.917-3 2a.506.506 0 0 1-.657-.09l-3.198-3.71L5.1 7.997 4 6.724l-1.12-1.3a.5.5 0 0 0-.68-.073l2-1.5a.5.5 0 0 1 .486-.064q.09.037.159.104l.035.035 2.042 1.958L9.13 8l1.868 1.79 2.122 2.035.035.035a.5.5 0 0 0 .345.14.5.5 0 0 0 .277-.083"/></g><g filter="url(#d)"><path fill="#D59DFF" d="M14 4.5v7a.5.5 0 0 1-.223.417l-3 2A.5.5 0 0 0 11 13.5v-11a.5.5 0 0 0-.23-.418l3.008 2A.5.5 0 0 1 14 4.5"/></g></g><defs><filter id="b" width="21.939" height="20.612" x="-2.981" y="-1.886" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".246"/><feGaussianBlur stdDeviation=".246"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_821_59"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="1.295"/><feGaussianBlur stdDeviation="2.59"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.22 0"/><feBlend in2="effect1_dropShadow_821_59" result="effect2_dropShadow_821_59"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_821_59" result="shape"/></filter><filter id="c" width="21.939" height="20.612" x="-2.981" y="-.136" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".246"/><feGaussianBlur stdDeviation=".246"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_821_59"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="1.295"/><feGaussianBlur stdDeviation="2.59"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.22 0"/><feBlend in2="effect1_dropShadow_821_59" result="effect2_dropShadow_821_59"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_821_59" result="shape"/></filter><filter id="d" width="34.316" height="42.921" x="-4.773" y="-13.46" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation=".13"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_821_59"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation="7.771"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0"/><feBlend in2="effect1_dropShadow_821_59" result="effect2_dropShadow_821_59"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_821_59" result="shape"/></filter></defs></svg> \ No newline at end of file
diff --git a/icons/css.svg b/icons/css.svg
new file mode 100644
index 00000000..315807ce
--- /dev/null
+++ b/icons/css.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M3.5 2.5v2h7V6h-7v2h7v2.5L8 12l-2.5-1.5v-1h-2v2L8 14l4.5-2.5v-9z" style="fill:#0086f1"/></svg> \ No newline at end of file
diff --git a/icons/cssmap.svg b/icons/cssmap.svg
new file mode 100644
index 00000000..f8e9a999
--- /dev/null
+++ b/icons/cssmap.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><path d="M8.78 4.35a1 1 0 0 0 0 .15H3.5v-2h5.78a3.6 3.6 0 0 0-.5 1.85m2.37 0a1.35 1.35 0 0 0 1.35 1.36v3.7A25 25 0 0 1 10.31 6h.19V4.5h-.7a.4.4 0 0 1 0-.15 2.65 2.65 0 0 1 .73-1.85h2V3a1.35 1.35 0 0 0-1.38 1.35M10.3 8H3.5V6h5.7q.09.21.21.45C9.67 7 10 7.51 10.3 8m2.2 3.05v.45L8 14l-4.5-2.5v-2h2v1L8 12l2.5-1.5V8.31c.62.94 1.17 1.66 1.21 1.71Z" style="fill:#0086f1"/><path d="M12.5 1.63a2.7 2.7 0 0 0-2 .87 2.65 2.65 0 0 0-.73 1.85.4.4 0 0 0 0 .15 4.4 4.4 0 0 0 .54 1.5 25 25 0 0 0 2.19 3.41s2.72-3.55 2.72-5.06a2.72 2.72 0 0 0-2.72-2.72m0 4.08a1.36 1.36 0 1 1 1.35-1.36 1.35 1.35 0 0 1-1.35 1.36" style="fill:#fff"/><path d="M12.5 1.63a2.7 2.7 0 0 0-2 .87 2.65 2.65 0 0 0-.73 1.85.4.4 0 0 0 0 .15 4.4 4.4 0 0 0 .54 1.5 25 25 0 0 0 2.19 3.41s2.72-3.55 2.72-5.06a2.72 2.72 0 0 0-2.72-2.72m0 4.08a1.36 1.36 0 1 1 1.35-1.36 1.35 1.35 0 0 1-1.35 1.36" style="fill:#f15a24"/></svg> \ No newline at end of file
diff --git a/icons/csv.svg b/icons/csv.svg
new file mode 100644
index 00000000..36e15481
--- /dev/null
+++ b/icons/csv.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#67CB65" d="M5 9V8h2v1zm3 0V8h2v1zm-3 1v1h2v-1zm3 0v1h2v-1z"/><path fill="#67CB65" fill-rule="evenodd" d="M2 3.917C2 3.41 2.448 3 3 3h4l1.083 1h5c.553 0 1 .41 1 .917L14 13.083c0 .507-.448.917-1 .917H3c-.552 0-1-.41-1-.917zM4.5 6a.5.5 0 0 1 .5.5V7h2v-.5a.5.5 0 0 1 1 0V7h2v-.5a.5.5 0 0 1 1 0V7h1.5a.5.5 0 0 1 0 1H11v1h1.5a.5.5 0 0 1 0 1H11v1h1.5a.5.5 0 0 1 0 1H11v.5a.5.5 0 0 1-1 0V12H8v.5a.5.5 0 0 1-1 0V12H5v.5a.5.5 0 0 1-1 0V12h-.5a.5.5 0 0 1 0-1H4v-1h-.5a.5.5 0 0 1 0-1H4V8h-.5a.5.5 0 0 1 0-1H4v-.5a.5.5 0 0 1 .5-.5" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/cucumber.svg b/icons/cucumber.svg
new file mode 100644
index 00000000..436fc357
--- /dev/null
+++ b/icons/cucumber.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#2FAD62" fill-rule="evenodd" d="M7.906 14.485q-.492.135-1 .21v-1.727A6.038 6.038 0 1 1 9.95 1.31q.124.038.246.086l.077.03.005.001.11.044a5 5 0 0 1 .695.346c1.913 1.123 3.048 3.436 2.905 5.701-.217 3.415-2.88 6.09-6.082 6.966ZM6.757 3.115a.66.66 0 0 0-.329-.042.73.73 0 0 0-.476.238.78.78 0 0 0-.202.504c.007.183.052.362.132.525.158.298.374.559.633.767.26.208.559.358.877.443.303-.449.158-1.248-.087-1.805a1.7 1.7 0 0 0-.276-.434.7.7 0 0 0-.272-.196M4.734 6.507a3 3 0 0 1-.463-.29.7.7 0 0 1-.233-.34.7.7 0 0 1-.001-.418.7.7 0 0 1 .232-.342.66.66 0 0 1 .38-.142 1 1 0 0 1 .121 0c.189.003.375.046.547.126.29.125.55.31.769.541.218.233.388.508.5.81a2.14 2.14 0 0 1-1.852.055m.818.932c.349-.018.795-.04 1.034.124-.078.52-.724 1.187-1.27 1.43a1.2 1.2 0 0 1-.546.125.67.67 0 0 1-.422-.088.7.7 0 0 1-.289-.33.73.73 0 0 1 .176-.824c.133-.128.29-.227.462-.29.2-.087.415-.134.632-.137zm1.183 1.446c.243-.236.529-.419.842-.538.31.48.218 1.416-.017 1.939a3 3 0 0 1-.266.477.7.7 0 0 1-.802.182.73.73 0 0 1-.332-.283.77.77 0 0 1-.118-.427 1.25 1.25 0 0 1 .121-.514c.135-.316.33-.6.572-.836m2.643-3.812a2.2 2.2 0 0 1-.831.465v-.002c-.35-.44-.266-1.241-.03-1.803q.111-.253.267-.478a.68.68 0 0 1 .607-.251.72.72 0 0 1 .49.242c.127.142.195.33.191.524a1.3 1.3 0 0 1-.121.527 2.3 2.3 0 0 1-.573.776m.644 4.686c.077.164.118.344.122.527.039.602-.86.959-1.29.477a1.6 1.6 0 0 1-.266-.44 2.17 2.17 0 0 1 .085-1.845c.3.102.576.27.808.49.233.221.417.49.54.79Zm1.254-2.209q.243.116.462.275a.73.73 0 0 1 .212.823.7.7 0 0 1-.285.34.67.67 0 0 1-.426.094 1.4 1.4 0 0 1-.547-.125 2.2 2.2 0 0 1-.762-.529 2.35 2.35 0 0 1-.496-.798 2.36 2.36 0 0 1 1.21-.217c.217.003.432.05.632.137" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/cursor.svg b/icons/cursor.svg
new file mode 100644
index 00000000..e675e4e4
--- /dev/null
+++ b/icons/cursor.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".7" d="M8 4.5H2L8 8l-6 3.5v-7L8 1z"/><path fill="#909090" fill-opacity=".9" d="m8 15 3-5.2 3 1.7zl-6-3.5L8 8z"/><path fill="#909090" fill-opacity=".5" d="M14 4.5v7l-3-1.7zH8V1z"/></svg> \ No newline at end of file
diff --git a/icons/cypress.svg b/icons/cypress.svg
new file mode 100644
index 00000000..f526540f
--- /dev/null
+++ b/icons/cypress.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#51BA8F" fill-rule="evenodd" d="M4.277 3.297a5.996 5.996 0 0 1 7.572.099A6.006 6.006 0 0 1 10.1 13.63l-.17.064.495-1.299.026-.014a5.01 5.01 0 0 0 2.554-4.59 5.02 5.02 0 0 0-2.942-4.352 5.006 5.006 0 0 0-6.785 2.895 5 5 0 0 0-.176 2.725l.016.064a5.036 5.036 0 0 0 4.878 3.89l.102-.002.1-.002a.18.18 0 0 0 .16-.115l.226-.549.96-2.33-1.646-4.024h1.12l1.092 2.748 1.085-2.744h1.066l-2.73 6.645-.178.43-.083.204A1.18 1.18 0 0 1 8.237 14q-.117.006-.238.005h-.013a6 6 0 0 1-2.551-.579l-.116-.05a6 6 0 0 1-3.158-6.75 6 6 0 0 1 2.116-3.33ZM6.83 7.059a1.05 1.05 0 0 0-.595-.172 1.04 1.04 0 0 0-.775.32 1.14 1.14 0 0 0-.318.817 1.12 1.12 0 0 0 .315.808 1.05 1.05 0 0 0 .775.319 1.03 1.03 0 0 0 .991-.646l.046-.107.958.325-.052.123a2.05 2.05 0 0 1-1.94 1.276A2.07 2.07 0 0 1 4.71 9.52a2.02 2.02 0 0 1-.619-1.497 2.03 2.03 0 0 1 .619-1.505 2.07 2.07 0 0 1 1.524-.602 2.05 2.05 0 0 1 1.942 1.277l.05.122-.954.325-.047-.103a1.05 1.05 0 0 0-.396-.478Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/cypressjs.svg b/icons/cypressjs.svg
new file mode 100644
index 00000000..73df0863
--- /dev/null
+++ b/icons/cypressjs.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FBB03B" fill-rule="evenodd" d="M4.277 3.297a5.996 5.996 0 0 1 7.572.099A6.006 6.006 0 0 1 10.1 13.63l-.17.063.495-1.299.026-.014a5.01 5.01 0 0 0 2.554-4.59 5.02 5.02 0 0 0-2.942-4.352 5.006 5.006 0 0 0-6.785 2.895 5 5 0 0 0-.176 2.725l.016.064a5.036 5.036 0 0 0 4.878 3.89l.102-.002.1-.002a.19.19 0 0 0 .16-.115l.226-.549.96-2.33L7.898 5.99h1.12l1.092 2.748 1.085-2.744h1.066l-2.73 6.645-.178.43-.083.204A1.18 1.18 0 0 1 8.237 14q-.117.006-.238.005h-.013a6 6 0 0 1-2.551-.579l-.116-.05a6 6 0 0 1-3.158-6.75 6 6 0 0 1 2.116-3.33ZM6.83 7.059a1.05 1.05 0 0 0-.595-.172 1.04 1.04 0 0 0-.775.32 1.14 1.14 0 0 0-.318.817 1.12 1.12 0 0 0 .315.808 1.05 1.05 0 0 0 .775.319 1.03 1.03 0 0 0 .991-.646l.046-.107.958.325-.052.123a2.05 2.05 0 0 1-1.94 1.276A2.07 2.07 0 0 1 4.71 9.52a2.02 2.02 0 0 1-.619-1.497 2.03 2.03 0 0 1 .619-1.505 2.07 2.07 0 0 1 1.524-.602 2.05 2.05 0 0 1 1.942 1.277l.05.122-.954.325-.047-.103a1.05 1.05 0 0 0-.396-.478Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/cypressts.svg b/icons/cypressts.svg
new file mode 100644
index 00000000..e581626f
--- /dev/null
+++ b/icons/cypressts.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0E8ADC" fill-rule="evenodd" d="M4.277 3.297a5.996 5.996 0 0 1 7.572.099A6.006 6.006 0 0 1 10.1 13.63l-.17.063.495-1.299.026-.014a5.01 5.01 0 0 0 2.554-4.59 5.02 5.02 0 0 0-2.942-4.352 5.006 5.006 0 0 0-6.785 2.895 5 5 0 0 0-.176 2.725l.016.064a5.036 5.036 0 0 0 4.878 3.89l.102-.002.1-.002a.19.19 0 0 0 .16-.115l.226-.549.96-2.33L7.898 5.99h1.12l1.092 2.748 1.085-2.744h1.066l-2.73 6.645-.178.43-.083.204A1.18 1.18 0 0 1 8.237 14q-.117.006-.238.005h-.013a6 6 0 0 1-2.551-.579l-.116-.05a6 6 0 0 1-3.158-6.75 6 6 0 0 1 2.116-3.33ZM6.83 7.059a1.05 1.05 0 0 0-.595-.172 1.04 1.04 0 0 0-.775.32 1.14 1.14 0 0 0-.318.817 1.12 1.12 0 0 0 .315.808 1.05 1.05 0 0 0 .775.319 1.03 1.03 0 0 0 .991-.646l.046-.107.958.325-.052.123a2.05 2.05 0 0 1-1.94 1.276A2.07 2.07 0 0 1 4.71 9.52a2.02 2.02 0 0 1-.619-1.497 2.03 2.03 0 0 1 .619-1.505 2.07 2.07 0 0 1 1.524-.602 2.05 2.05 0 0 1 1.942 1.277l.05.122-.954.325-.047-.103a1.05 1.05 0 0 0-.396-.478Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/d.svg b/icons/d.svg
new file mode 100644
index 00000000..ded53b3e
--- /dev/null
+++ b/icons/d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#C1293C" fill-rule="evenodd" d="M3 12.577V3.423a.5.5 0 0 1 .5-.5h2.885c1.04 0 2.72.384 3.86 1.624a2.115 2.115 0 1 1 1.216 3.41V8c0 4.062-3.384 5.077-5.076 5.077H3.5a.5.5 0 0 1-.5-.5m2.538-2.038V5.462h1.354c.677 0 2.031.507 2.031 2.538s-1.354 2.539-2.03 2.539H5.537Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/dartlang.svg b/icons/dartlang.svg
new file mode 100644
index 00000000..be059dd5
--- /dev/null
+++ b/icons/dartlang.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#03589C" d="M13.151 7.015v4.72h-2l-.06-.07-7.41-7.43h6.61q.14.047.26.13l.12.1 2.41 2.48z"/><path fill="#41C4FF" d="m10.681 4.565-.12-.1a1 1 0 0 0-.26-.13h-6.62l3.58-1.92a1.4 1.4 0 0 1 .68-.15c.314.022.61.157.83.38z"/><path fill="#2CB7F6" d="m11.111 11.735-3.54-1.17-3.25 1.17-.23-.22-.07-.08a1.6 1.6 0 0 1-.29-.38 1.4 1.4 0 0 1-.05-.55v-6.28z"/><path fill="#02589B" d="m3.871 11.225-1.81-1.79a1.36 1.36 0 0 1-.38-.91v-.27l.08-.2 1.92-3.83v6.28a1.3 1.3 0 0 0 .08.48 1 1 0 0 0 .11.24"/><path fill="#2CB7F6" d="M11.111 11.695h-6.79l3.25-1.13z"/><path fill="#41C4FF" d="M11.111 11.695v2.04h-4.75l-2.04-2.04z"/></svg> \ No newline at end of file
diff --git a/icons/delphiproject.svg b/icons/delphiproject.svg
new file mode 100644
index 00000000..10b7c3e3
--- /dev/null
+++ b/icons/delphiproject.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#F04B8A" d="M9.5 15c-.443-1.636-1.783-3-4-3-2.586-1.779-1.479-6 2.512-6S11.945 9.7 12 10.5h-.5s0-.5-.5-1-2.175-.4-3.444-.227V10c.258 0 3.052-.136 3.944 1.5V14z"/><path fill="#F04B8A" d="M8 2.139q.59-.04 1.188-.01L9.5 4l.595-1.787q.459.061.905.162V4.5l1.087-1.813c.72.255 1.374.591 1.913 1l-2.372 2.706C10 5 6.723 5.163 5.5 6c-1.584 1.083-2 2.5-2 4H3l-.977-.651a6 6 0 0 1-.037-.596L3 8.5l-.996-.332c.026-.379.08-.772.17-1.168H3.5l-1.17-.586q.116-.386.28-.762L4 6 2.959 4.959c.2-.343.433-.668.7-.965L5 5l-.773-1.547a4.8 4.8 0 0 1 .95-.606L6.5 4.5l-.34-2.037q.39-.116.802-.193L8 4z"/></svg> \ No newline at end of file
diff --git a/icons/diff.svg b/icons/diff.svg
new file mode 100644
index 00000000..6ec56e92
--- /dev/null
+++ b/icons/diff.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#C84E72" d="M10.278 4.055a5.6 5.6 0 0 0-1.946.07 3 3 0 0 0-4.208 4.208 5.5 5.5 0 0 0-.07 1.945 4.5 4.5 0 1 1 6.224-6.224M9.5 6.5a3 3 0 0 1-3.996 2.83L5.5 9.5c0 .508.095.994.267 1.44q.358.06.733.06a4.5 4.5 0 0 0 4.44-5.233 4 4 0 0 0-1.61-.263c.11.311.17.647.17.996"/><path fill="#6FC278" d="M7.668 11.876a5.5 5.5 0 0 1-1.946.07 4.5 4.5 0 1 0 6.224-6.224 5.6 5.6 0 0 1-.07 1.946 3 3 0 0 1-4.208 4.208m-.998-1.379-.17.003c-.508 0-.994-.095-1.44-.267a4.5 4.5 0 0 1 5.173-5.173 4 4 0 0 1 .263 1.61 3 3 0 0 0-3.827 3.827"/><path fill="#C84E72" d="M10.983 6.892a4.6 4.6 0 0 0-.176-1.7 4.5 4.5 0 0 0-1.699-.175c.25.437.392.943.392 1.483.54 0 1.046.142 1.483.392"/><path fill="#6FC278" d="M6.5 9.5c-.54 0-1.046-.142-1.483-.392a4.6 4.6 0 0 0 .176 1.7 4.5 4.5 0 0 0 1.699.175A3 3 0 0 1 6.5 9.5"/></svg> \ No newline at end of file
diff --git a/icons/docker.svg b/icons/docker.svg
new file mode 100644
index 00000000..87ce64b7
--- /dev/null
+++ b/icons/docker.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#2396ec}</style></defs><path d="M7.01 4h1.5v1.5h-1.5zm-2 0h1.5v1.5h-1.5zm0 2h1.5v1.5h-1.5zm2 0h1.5v1.5h-1.5zm2 0h1.5v1.5h-1.5zm-6 0h1.5v1.5h-1.5z" class="cls-1"/><path d="M4.76 9.5a.75.75 0 0 1 0 1.5.76.76 0 0 1-.76-.73.76.76 0 0 1 .75-.73M12.51 5A2 2 0 0 0 12 7.5c0 .5-1 .5-1 .5H1s-1 5.49 4.5 5.5a8.31 8.31 0 0 0 7.5-5s2 0 2.5-1.5a2.06 2.06 0 0 0-1-.22 2.6 2.6 0 0 0-1 .22s0-1.5-1-2" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/dockerdebug.svg b/icons/dockerdebug.svg
new file mode 100644
index 00000000..5ea3317d
--- /dev/null
+++ b/icons/dockerdebug.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D94851" d="M8.51 4h-1.5v1.5h1.5zm-2 0h-1.5v1.5h1.5zm0 2h-1.5v1.5h1.5zm2 0h-1.5v1.5h1.5zm2 0h-1.5v1.5h1.5zm-6 0h-1.5v1.5h1.5z"/><path fill="#D94851" d="M4.76 9.5a.75.75 0 0 1 0 1.5.76.76 0 0 1-.76-.73.76.76 0 0 1 .75-.73zM12.51 5A2 2 0 0 0 12 7.5c0 .5-1 .5-1 .5H1s-1 5.49 4.5 5.5a8.31 8.31 0 0 0 7.5-5s2 0 2.5-1.5a2.06 2.06 0 0 0-1-.22 2.6 2.6 0 0 0-1 .22s0-1.5-1-2"/></svg> \ No newline at end of file
diff --git a/icons/dockerignore.svg b/icons/dockerignore.svg
new file mode 100644
index 00000000..20c67f68
--- /dev/null
+++ b/icons/dockerignore.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M8.51 4h-1.5v1.5h1.5zm-2 0h-1.5v1.5h1.5zm0 2h-1.5v1.5h1.5zm2 0h-1.5v1.5h1.5zm2 0h-1.5v1.5h1.5zm-6 0h-1.5v1.5h1.5z"/><path fill="#909090" fill-opacity=".9" d="M4.76 9.5a.75.75 0 0 1 0 1.5.76.76 0 0 1-.76-.73.76.76 0 0 1 .75-.73zM12.51 5A2 2 0 0 0 12 7.5c0 .5-1 .5-1 .5H1s-1 5.49 4.5 5.5a8.31 8.31 0 0 0 7.5-5s2 0 2.5-1.5a2.06 2.06 0 0 0-1-.22 2.6 2.6 0 0 0-1 .22s0-1.5-1-2"/></svg> \ No newline at end of file
diff --git a/icons/drawio.svg b/icons/drawio.svg
new file mode 100644
index 00000000..1cf50c53
--- /dev/null
+++ b/icons/drawio.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E6C44C" fill-rule="evenodd" d="M6 4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2c0 .19-.053.368-.145.519L11.325 9H13a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2c0-.214.067-.413.182-.576L8.746 7H7.332L5.859 9.487c.09.15.141.326.141.513v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h1.734l1.442-2.434A1 1 0 0 1 6 6z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/drizzle.svg b/icons/drizzle.svg
new file mode 100644
index 00000000..4bc62e8f
--- /dev/null
+++ b/icons/drizzle.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#88BA12" fill-rule="evenodd" d="M4.575 6.304a.75.75 0 0 1 .417.975l-2 5A.75.75 0 1 1 1.6 11.72l2-5a.75.75 0 0 1 .975-.417Zm3.606-2a.75.75 0 0 1 .418.975l-2 5a.75.75 0 1 1-1.392-.558l2-5a.75.75 0 0 1 .974-.417m2.097 2a.75.75 0 0 1 .418.975l-2 5a.75.75 0 1 1-1.392-.558l2-5a.75.75 0 0 1 .974-.417m3.608-2a.75.75 0 0 1 .417.975l-2 5a.75.75 0 0 1-1.392-.558l2-5a.75.75 0 0 1 .975-.417" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/dsstore.svg b/icons/dsstore.svg
new file mode 100644
index 00000000..a1fa69b5
--- /dev/null
+++ b/icons/dsstore.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M7.661 3H4a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h5.155a15 15 0 0 1-.375-1.685c-1.893.284-3.401-.372-4.092-.925a.5.5 0 1 1 .624-.78c.494.395 1.722.957 3.324.715q-.075-.594-.134-1.281c-.01-.104-.036-.115-.042-.118h-.001c-.036-.022-.125-.051-.305-.051-.17 0-.363.025-.567.057l-.074.011A4 4 0 0 1 7 9a.5.5 0 0 1-.5-.5c0-2.078.518-3.975 1.161-5.5m.986 0 .088.04c-.612 1.352-1.13 3.04-1.221 4.891.19-.028.417-.056.64-.056.248 0 .559.033.828.199.303.186.482.493.516.882q.053.604.116 1.128a6.6 6.6 0 0 0 1.138-.518.5.5 0 0 1 .496.868 7.5 7.5 0 0 1-1.492.656c.12.73.265 1.344.443 1.91H12a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zM4 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm1.5 4a.5.5 0 0 0-1 0v1a.5.5 0 0 0 1 0zm5.5-.5a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/dune.svg b/icons/dune.svg
new file mode 100644
index 00000000..ea36aacd
--- /dev/null
+++ b/icons/dune.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DF9947" fill-rule="evenodd" d="M13 3.2H3v9.6h10zM3 2c-.552 0-1 .537-1 1.2v9.6c0 .663.448 1.2 1 1.2h10c.552 0 1-.537 1-1.2V3.2c0-.663-.448-1.2-1-1.2z" clip-rule="evenodd"/><path fill="#DF9947" d="M8 10.5C6 8.1 3.833 7.833 3 8l-.5 5h11v-1c-1 .5-3.5.9-5.5-1.5"/><path fill="#DF9947" d="M10 11c-1.412-.941-1.5-2-3-3 2.5-1 6.667-.833 7 0v2.5c-.5.5-2.5 1.5-4 .5"/></svg> \ No newline at end of file
diff --git a/icons/duneproject.svg b/icons/duneproject.svg
new file mode 100644
index 00000000..2af658bb
--- /dev/null
+++ b/icons/duneproject.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DF9947" fill-rule="evenodd" d="M2 3.2C2 2.537 2.448 2 3 2h10c.552 0 1 .537 1 1.2v9.6c0 .663-.448 1.2-1 1.2H3c-.552 0-1-.537-1-1.2zm11 4.28c-1.462-.318-4.175-.21-6 .52.761.508 1.159 1.03 1.55 1.545.38.5.755.991 1.45 1.455.971.648 2.152.456 3 .105zM3 8c.833-.167 3 .1 5 2.5 1.721 2.066 3.813 2.057 5 1.696V13H3z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/edge.svg b/icons/edge.svg
new file mode 100644
index 00000000..4a646293
--- /dev/null
+++ b/icons/edge.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EB556C" fill-rule="evenodd" d="M2 8c0 4.84 1.16 6 6 6s6-1.16 6-6-1.16-6-6-6-6 1.16-6 6m3.565-1.831 2.94 1.25 1.875-.58a.3.3 0 0 0 .211-.287V4.576a.3.3 0 0 0-.412-.278zm-.777.793v2.255a.3.3 0 0 0 .183.276l5.203 2.2a.3.3 0 0 0 .417-.277V9.614a.3.3 0 0 0-.183-.276z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/editorconfig.svg b/icons/editorconfig.svg
new file mode 100644
index 00000000..b8ccd267
--- /dev/null
+++ b/icons/editorconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M14.35 7.38a3.5 3.5 0 0 1-2.46 1.33 3.8 3.8 0 0 0-.09-1.58.4.4 0 0 0 0-.1c-.07-.23-.15-.44-.24-.66 1.35-1.57 3.24-.72 2.79 1.01M8.33 3.65a7.5 7.5 0 0 0-2.33.2c0-1.96 3.83-3.1 2.33-.2m-2.71 3.7c0 .65-3-.08-2.79-.83C3 6 5.5 6.5 5.62 7.35"/><path fill="#909090" fill-opacity=".9" d="M11.16 7.77C11.08 4.53 6.61 3 4.7 5.67c.73.28 1.53.76 1.66 1.59.12 1.3-1.95 1.24-2.84.85-3.71 8.53 7.7 4.54 7.64-.34M10.35 9c0 .08-.07.18-.12.26a.7.7 0 0 1-.17.21 1.4 1.4 0 0 1-.48.29 2.64 2.64 0 0 1-1.28.07 3.5 3.5 0 0 1-1.24-.47 1.47 1.47 0 0 1-.68-.83.8.8 0 0 1 0-.37 2.4 2.4 0 0 1 .17-.4.86.86 0 0 1 .34-.34 1.1 1.1 0 0 1 .62-.16c.22 0 .45.06.67.07q.363.036.71.15a2.6 2.6 0 0 1 1.43.76.66.66 0 0 1 .03.76"/><path fill="#909090" fill-opacity=".9" d="M9.64 8.7c.35.84-3.18.29-2.41-.53.02-.29 2.15.05 2.41.53"/></svg> \ No newline at end of file
diff --git a/icons/eex.svg b/icons/eex.svg
new file mode 100644
index 00000000..8209c881
--- /dev/null
+++ b/icons/eex.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#AE5EDB" d="M3 7v2l4 3.5v-2L4 8l3-2.5v-2zm6-3.5v2L12 8l-3 2.5v2L13 9V7z"/></svg> \ No newline at end of file
diff --git a/icons/elixir.svg b/icons/elixir.svg
new file mode 100644
index 00000000..82f00857
--- /dev/null
+++ b/icons/elixir.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#AE5EDB" d="M9.78 6a5.22 5.22 0 0 1-3-4C3.56 6.62 4 9.85 4 9.85a4.16 4.16 0 0 0 8.31 0A4.3 4.3 0 0 0 9.78 6"/></svg> \ No newline at end of file
diff --git a/icons/elm.svg b/icons/elm.svg
new file mode 100644
index 00000000..43ba3971
--- /dev/null
+++ b/icons/elm.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><clipPath id="clip-path"><rect width="12" height="12" x="2" y="2" rx=".96" style="fill:none"/></clipPath><style>.cls-4{fill:#8cd636}.cls-5{fill:#5fb4cb}.cls-6{fill:#eea400}</style></defs><g style="clip-path:url(#clip-path)"><path d="M2 2v12l6-6z" style="fill:#596277"/><path d="m2 2 4 4 5.5-.5L8 2z" class="cls-4"/><path d="m8 2 6 6V2z" class="cls-5"/><path d="m5.5 5.5 3 3 3-3z" class="cls-6"/><path d="m8 8-6 6h12z" class="cls-5"/><path d="m8.498 8.496 2.998-2.998L14 8.001 11.001 11z" class="cls-4"/><path d="m14 8-3 3 3 3z" class="cls-6"/></g></svg> \ No newline at end of file
diff --git a/icons/env.svg b/icons/env.svg
new file mode 100644
index 00000000..bca042b6
--- /dev/null
+++ b/icons/env.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#F4BF36" fill-rule="evenodd" d="M2 4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm3 0h1v1H5zm6 0h-1v3h1zM4 7.5a1.5 1.5 0 0 0 1 1.415V12h1V8.915A1.5 1.5 0 1 0 4 7.5m6 3.415a1.5 1.5 0 1 1 1 0V12h-1z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/eraser.svg b/icons/eraser.svg
new file mode 100644
index 00000000..012f8dcf
--- /dev/null
+++ b/icons/eraser.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#ED517D" d="M3.34 5.479A.7.7 0 0 1 4.005 5H7.5v6H2.471a.7.7 0 0 1-.664-.921z"/><path fill="#489AEB" d="M8.5 5h5.029a.7.7 0 0 1 .664.921l-1.533 4.6a.7.7 0 0 1-.665.479H8.5z"/></svg> \ No newline at end of file
diff --git a/icons/erb.svg b/icons/erb.svg
new file mode 100644
index 00000000..eae52323
--- /dev/null
+++ b/icons/erb.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#A432EA" fill-rule="evenodd" d="M5 3h6l4 4-7 7-7-7zM3 7l3-3 1 1-2 2 2 2v2zm10 0-3-3-1 1 2 2-2 2v2z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/erlang.svg b/icons/erlang.svg
new file mode 100644
index 00000000..ddf44713
--- /dev/null
+++ b/icons/erlang.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M8.12 5.42a2.16 2.16 0 0 0-2.27 1.75h4.42a2.11 2.11 0 0 0-2.15-1.75m0-2h.07A4.38 4.38 0 0 1 12.5 8a4.6 4.6 0 0 1-.09.92H5.88a2.28 2.28 0 0 0 2.45 1.62 2.43 2.43 0 0 0 1.94-.86l1.8 1a4.39 4.39 0 0 1-3.78 1.85A4.45 4.45 0 0 1 3.55 8a4.41 4.41 0 0 1 4.53-4.59m5.42-1h-11a1 1 0 0 0-1 1v9a1 1 0 0 0 1.05 1h11a1 1 0 0 0 1.05-1v-9a1 1 0 0 0-1.05-1" style="fill:#a90533"/></svg> \ No newline at end of file
diff --git a/icons/esbuild.svg b/icons/esbuild.svg
new file mode 100644
index 00000000..ff2e0eee
--- /dev/null
+++ b/icons/esbuild.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EEAC30" fill-rule="evenodd" d="M14 8A6 6 0 1 1 2 8a6 6 0 0 1 12 0M6.69 8 4 5.202 5.155 4 9 8l-3.845 4L4 10.798zM8 5.202 10.69 8 8 10.798 9.155 12 13 8 9.155 4z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/eslint.svg b/icons/eslint.svg
new file mode 100644
index 00000000..2f3701e5
--- /dev/null
+++ b/icons/eslint.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#6B56D0" d="M8 3.5 12 6v4l-4 2.5L4 10V6zM11.505 2h-7.01L1 8l3.5 6h7L15 8z"/><path fill="#8B87FF" d="M5.5 6.5v3L8 11l2.5-1.5v-3L8 5z"/></svg> \ No newline at end of file
diff --git a/icons/eslintignore.svg b/icons/eslintignore.svg
new file mode 100644
index 00000000..2a985d65
--- /dev/null
+++ b/icons/eslintignore.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".5" d="M8 3.5 12 6v4l-4 2.5L4 10V6zM11.505 2h-7.01L1 8l3.5 6h7L15 8z"/><path fill="#909090" fill-opacity=".9" d="M5.5 6.5v3L8 11l2.5-1.5v-3L8 5z"/></svg> \ No newline at end of file
diff --git a/icons/excalidraw.svg b/icons/excalidraw.svg
new file mode 100644
index 00000000..cabe9f22
--- /dev/null
+++ b/icons/excalidraw.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#6965DB" fill-rule="evenodd" d="m2 12 2.5 2L13 6.5v-4l-4 1zm2.5-5L7 4.5 5.5 3l-3-.5.5 3zM11 9.5l-2 2 3 2.5 1.5-1.5zm-.5-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/exs.svg b/icons/exs.svg
new file mode 100644
index 00000000..2a135542
--- /dev/null
+++ b/icons/exs.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#AE5EDB" d="M6.52 4.33a7 7 0 0 0 2.83 2.59 3.26 3.26 0 0 1 2 2.93 3.175 3.175 0 0 1-6.35 0V9.7a10.14 10.14 0 0 1 1.52-5.37M6.79 2C3.56 6.62 4 9.85 4 9.85a4.16 4.16 0 0 0 8.31 0A4.3 4.3 0 0 0 9.78 6a5.22 5.22 0 0 1-3-4z"/><path fill="#AE5EDB" d="M6.23 7.73A6.4 6.4 0 0 0 6 9.56v.29A2.16 2.16 0 0 0 8.18 12a2.14 2.14 0 0 0 1.91-1.19 33 33 0 0 1-3.86-3.08"/></svg> \ No newline at end of file
diff --git a/icons/exx.svg b/icons/exx.svg
new file mode 100644
index 00000000..016c9c36
--- /dev/null
+++ b/icons/exx.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><path d="M7 3.5 3 7v2l4 3.5v-2L4 8l3-2.5zm2 0v2L12 8l-3 2.5v2L13 9V7z" style="fill:#ae5edb"/></svg> \ No newline at end of file
diff --git a/icons/farm.svg b/icons/farm.svg
new file mode 100644
index 00000000..96c1da42
--- /dev/null
+++ b/icons/farm.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DD50AD" fill-rule="evenodd" d="M8.797 9.017c-2.41-1.5-6.202-1.086-7.797-.69 1.772-1.235 2.929-1.44 4.086-1.647q.346-.059.699-.131a6 6 0 0 1 .266-.494c.177-.296 0-.395-.178-.296-.177.098-.443.098-.443-.198s-.531-.592-.62 0c-.07.474.148.79.266.889a7.1 7.1 0 0 0-2.215 0c.433-.161 1.102-1.24 1.478-1.848.086-.138.156-.251.205-.324.22-.328.38-.248.68-.1q.093.048.206.1c.112.05.195.099.276.147.24.143.457.272 1.32.346.088-1.382.708-2.666 1.328-2.765.62-.098 1.064.988 1.24 1.877.178.888.355 1.283.71 1.382.182.05.318-.24.455-.532.129-.276.26-.554.43-.554.284 0 .473.592.533.889.62.164 2.144.888 3.278 2.468-.78-.79-2.156-1.119-2.747-1.185-.118 0-.478.04-.975.198-.496-.316-1.21-.33-1.506-.296v.493c.532-.033 2.038.08 3.81.79-.797 0-2.835.296-4.785 1.481m-1.329-2.27-.974.098 1.329-1.58-.355 1.481Z" clip-rule="evenodd"/><path fill="#DD50AD" d="M14.911 8.82 15 8.228c-2.392 0-5.937.395-10.013 5.036a3.77 3.77 0 0 0 2.836.691l.044-.066c.603-.9 2.815-4.203 7.044-5.069"/><path fill="#DD50AD" d="M8.886 13.955c.532-1.12 2.393-3.555 5.582-4.345-1.24 3.061-4.164 4.148-5.582 4.345m-.797-4.543c-2.056 1.264-3.338 2.831-3.722 3.457-.709-.33-2.34-1.54-3.19-3.753 1.861-.592 4.608-.592 6.912.296"/></svg> \ No newline at end of file
diff --git a/icons/figma.svg b/icons/figma.svg
new file mode 100644
index 00000000..b997000d
--- /dev/null
+++ b/icons/figma.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0ACF83" d="M6 14a2 2 0 0 0 2-2v-2H6a2 2 0 0 0 0 4"/><path fill="#A259FF" d="M4 8a2 2 0 0 1 2-2h2v4H6a2 2 0 0 1-2-2"/><path fill="#F24E1E" d="M4 4a2 2 0 0 1 2-2h2v4H6a2 2 0 0 1-2-2"/><path fill="#FF7262" d="M8 2h2a2 2 0 0 1 0 4H8z"/><path fill="#1ABCFE" d="M12 8a2 2 0 1 1-4.001-.001A2 2 0 0 1 12 8"/></svg> \ No newline at end of file
diff --git a/icons/file.svg b/icons/file.svg
new file mode 100644
index 00000000..73e5b0ef
--- /dev/null
+++ b/icons/file.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M12.7 5.21C12 4.53 10.47 3 9.79 2.29a1 1 0 0 0-.7-.29H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.91a1 1 0 0 0-.3-.7M4 13V3h5.09l1.44 1.45L12 5.91V13z"/><path fill="#909090" fill-opacity=".9" d="M8.5 4.5h-3v1h3zM10 7H5.5v1H10zm0 2.5H5.5v1H10z"/></svg> \ No newline at end of file
diff --git a/icons/file_light.svg b/icons/file_light.svg
new file mode 100644
index 00000000..d127c1ae
--- /dev/null
+++ b/icons/file_light.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><path d="m9.09 3 1.44 1.45L12 5.91V13H4V3zm0-1H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.91a1 1 0 0 0-.29-.7C12 4.53 10.47 3 9.79 2.29a1 1 0 0 0-.7-.29" style="opacity:.45"/><path d="M5.5 5h3m-3 2.5H10M5.5 10H10" style="opacity:.45;fill:none;stroke:#000;stroke-miterlimit:10"/></svg> \ No newline at end of file
diff --git a/icons/flakelock.svg b/icons/flakelock.svg
new file mode 100644
index 00000000..d0eae376
--- /dev/null
+++ b/icons/flakelock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><g fill="#909090" fill-opacity=".9" clip-path="url(#clip0_802_56)"><path d="M6.36 6 3.1 11.59l-.77-1.31.91-1.59H1.42L1 8l.42-.69H4L4.76 6zm.73 4.41h6.44l-.77 1.31h-1.82l.91 1.59-.42.69h-.77L9.4 11.72H7.9zm3.47-2.87L7.3 2h1.54l.91 1.59.91-1.59h.77l.42.69-1.33 2.21.85 1.31zM8.88 5.59H2.4l.77-1.31h1.82l-.91-1.59L4.5 2h.77L6.6 4.21h1.5zM9.64 10l3.26-5.59.77 1.31-.91 1.59h1.82L15 8l-.42.69h-2.59L11.24 10zM5.46 8.57l3.24 5.36H7.16l-.91-1.58-.77 1.58h-.91l-.42-.69 1.33-2.2-.75-1.17z"/></g><defs><clipPath id="clip0_802_56"><path fill="#fff" d="M1 2h14v12H1z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/icons/flutter.svg b/icons/flutter.svg
new file mode 100644
index 00000000..ac7d1b88
--- /dev/null
+++ b/icons/flutter.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#2CB7F6" d="M8.745 2 2.806 7.939l1.838 1.837L12.42 2zm-.042 5.475-3.179 3.179 1.844 1.872 1.836-1.832 3.216-3.219z"/><path fill="#086EC5" d="m7.368 12.526 1.398 1.398h3.654l-3.216-3.23z"/><path fill="#00B5F8" d="M5.503 10.675 7.34 8.837l1.864 1.857-1.836 1.832z"/></svg> \ No newline at end of file
diff --git a/icons/flutterlock.svg b/icons/flutterlock.svg
new file mode 100644
index 00000000..b0b81ff2
--- /dev/null
+++ b/icons/flutterlock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M3 7.939 8.939 2h3.674L4.837 9.776zm4.534.898 1.363-1.362h3.716l-3.216 3.219 3.216 3.23H8.96l-1.397-1.398-1.865-1.851.02-.021z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/flutterpackage.svg b/icons/flutterpackage.svg
new file mode 100644
index 00000000..0c0b176c
--- /dev/null
+++ b/icons/flutterpackage.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#2CB7F6" d="m8.794 2.76-5.18 5.181 1.602 1.603L12 2.761H8.794Zm-.036 4.777L5.984 10.31l1.61 1.634 1.6-1.6L12 7.538H8.758Z"/><path fill="#086EC5" d="m7.593 11.944 1.22 1.219H12l-2.806-2.818z"/><path fill="#00B5F8" d="m5.966 10.329 1.603-1.603 1.625 1.619-1.6 1.599z"/><path fill="#2CB7F6" fill-rule="evenodd" d="M13 3.2H3v9.6h10zM3 2c-.552 0-1 .537-1 1.2v9.6c0 .663.448 1.2 1 1.2h10c.552 0 1-.537 1-1.2V3.2c0-.663-.448-1.2-1-1.2z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/folder.svg b/icons/folder.svg
new file mode 100644
index 00000000..c2458d54
--- /dev/null
+++ b/icons/folder.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M14 6.05V12a1 1 0 0 1-1 1H3.05A1 1 0 0 1 2 12V4.05a1 1 0 0 1 1-1h3.3a1 1 0 0 1 .94.58l.42.84a1 1 0 0 0 .99.53H13a1 1 0 0 1 1 1.05"/></svg> \ No newline at end of file
diff --git a/icons/folder_open.svg b/icons/folder_open.svg
new file mode 100644
index 00000000..46af031b
--- /dev/null
+++ b/icons/folder_open.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M12.5 6.5H8.71a2.5 2.5 0 0 1-2.378-1.333l-.007-.013-.302-.604H3.5v6.95h9zm1.5-.45V12a1 1 0 0 1-1 1H3.05A1 1 0 0 1 2 12V4.05a1 1 0 0 1 1-1h3.3a1 1 0 0 1 .94.58l.42.84a1 1 0 0 0 .99.53H13a1 1 0 0 1 1 1.05" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/fonteot.svg b/icons/fonteot.svg
new file mode 100644
index 00000000..c0ddb994
--- /dev/null
+++ b/icons/fonteot.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#AE5ECA" fill-rule="evenodd" d="m1.76 12.43 3.67-8.9h1.06l2.22 8.9H7L6.71 11H4l-.54 1.43zm3.96-5.9-1.14 3h1.8zm7.33-.28a1.6 1.6 0 0 1 .75.75c.172.368.241.776.2 1.18l-.31 4.21H12.2v-.67q-.06.124-.15.23a1.6 1.6 0 0 1-.63.4c-.26.093-.534.14-.81.14A1.64 1.64 0 0 1 9.28 12a1.86 1.86 0 0 1-.34-1.36 2 2 0 0 1 .68-1.47 2.53 2.53 0 0 1 1.69-.5h1.18v-.44a.64.64 0 0 0-.19-.57 1 1 0 0 0-.66-.2 1.46 1.46 0 0 0-1.05.47l-1.13-.66a2.2 2.2 0 0 1 .9-.94A3 3 0 0 1 11.78 6a2.7 2.7 0 0 1 1.27.25m-.84 4.606a.6.6 0 0 0 .09-.286h.05v-.65h-1.12a.88.88 0 0 0-.57.17.76.76 0 0 0-.24.54.5.5 0 0 0 .16.44.94.94 0 0 0 .58.15c.285.011.57-.043.83-.16a.6.6 0 0 0 .22-.204" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/fontotf.svg b/icons/fontotf.svg
new file mode 100644
index 00000000..d135d8c6
--- /dev/null
+++ b/icons/fontotf.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#4EC624" fill-rule="evenodd" d="m1.76 12.43 3.67-8.9h1.06l2.22 8.9H7L6.71 11H4l-.54 1.43zm3.96-5.9-1.14 3h1.8zm7.33-.28a1.6 1.6 0 0 1 .75.75c.172.368.241.776.2 1.18l-.31 4.21H12.2v-.67q-.06.124-.15.23a1.6 1.6 0 0 1-.63.4c-.26.093-.534.14-.81.14A1.64 1.64 0 0 1 9.28 12a1.86 1.86 0 0 1-.34-1.36 2 2 0 0 1 .68-1.47 2.53 2.53 0 0 1 1.69-.5h1.18v-.44a.64.64 0 0 0-.19-.57 1 1 0 0 0-.66-.2 1.46 1.46 0 0 0-1.05.47l-1.13-.66a2.2 2.2 0 0 1 .9-.94A3 3 0 0 1 11.78 6a2.7 2.7 0 0 1 1.27.25m-.84 4.606a.6.6 0 0 0 .09-.286h.05v-.65h-1.12a.88.88 0 0 0-.57.17.76.76 0 0 0-.24.54.5.5 0 0 0 .16.44.94.94 0 0 0 .58.15c.285.011.57-.043.83-.16a.6.6 0 0 0 .22-.204" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/fontttf.svg b/icons/fontttf.svg
new file mode 100644
index 00000000..1122a414
--- /dev/null
+++ b/icons/fontttf.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#13A9FD" fill-rule="evenodd" d="m1.76 12.43 3.67-8.9h1.06l2.22 8.9H7L6.71 11H4l-.54 1.43zm3.96-5.9-1.14 3h1.8zm7.33-.28a1.6 1.6 0 0 1 .75.75c.172.368.241.776.2 1.18l-.31 4.21H12.2v-.67q-.06.124-.15.23a1.6 1.6 0 0 1-.63.4c-.26.093-.534.14-.81.14A1.64 1.64 0 0 1 9.28 12a1.86 1.86 0 0 1-.34-1.36 2 2 0 0 1 .68-1.47 2.53 2.53 0 0 1 1.69-.5h1.18v-.44a.64.64 0 0 0-.19-.57 1 1 0 0 0-.66-.2 1.46 1.46 0 0 0-1.05.47l-1.13-.66a2.2 2.2 0 0 1 .9-.94A3 3 0 0 1 11.78 6a2.7 2.7 0 0 1 1.27.25m-.84 4.606a.6.6 0 0 0 .09-.286h.05v-.65h-1.12a.88.88 0 0 0-.57.17.76.76 0 0 0-.24.54.5.5 0 0 0 .16.44.94.94 0 0 0 .58.15c.285.011.57-.043.83-.16a.6.6 0 0 0 .22-.204" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/fontwoff.svg b/icons/fontwoff.svg
new file mode 100644
index 00000000..bec25117
--- /dev/null
+++ b/icons/fontwoff.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EB3B30" fill-rule="evenodd" d="m1.76 12.43 3.67-8.9h1.06l2.22 8.9H7L6.71 11H4l-.54 1.43zm3.96-5.9-1.14 3h1.8zm7.33-.28a1.6 1.6 0 0 1 .75.75c.172.368.241.776.2 1.18l-.31 4.21H12.2v-.67q-.06.124-.15.23a1.6 1.6 0 0 1-.63.4c-.26.093-.534.14-.81.14A1.64 1.64 0 0 1 9.28 12a1.86 1.86 0 0 1-.34-1.36 2 2 0 0 1 .68-1.47 2.53 2.53 0 0 1 1.69-.5h1.18v-.44a.64.64 0 0 0-.19-.57 1 1 0 0 0-.66-.2 1.46 1.46 0 0 0-1.05.47l-1.13-.66a2.2 2.2 0 0 1 .9-.94A3 3 0 0 1 11.78 6a2.7 2.7 0 0 1 1.27.25m-.84 4.606a.6.6 0 0 0 .09-.286h.05v-.65h-1.12a.88.88 0 0 0-.57.17.76.76 0 0 0-.24.54.5.5 0 0 0 .16.44.94.94 0 0 0 .58.15c.285.011.57-.043.83-.16a.6.6 0 0 0 .22-.204" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/fontwoff2.svg b/icons/fontwoff2.svg
new file mode 100644
index 00000000..2f961de2
--- /dev/null
+++ b/icons/fontwoff2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FD9313" fill-rule="evenodd" d="m1.76 12.43 3.67-8.9h1.06l2.22 8.9H7L6.71 11H4l-.54 1.43zm3.96-5.9-1.14 3h1.8zm7.33-.28a1.6 1.6 0 0 1 .75.75c.172.368.241.776.2 1.18l-.31 4.21H12.2v-.67q-.06.124-.15.23a1.6 1.6 0 0 1-.63.4c-.26.093-.534.14-.81.14A1.64 1.64 0 0 1 9.28 12a1.86 1.86 0 0 1-.34-1.36 2 2 0 0 1 .68-1.47 2.53 2.53 0 0 1 1.69-.5h1.18v-.44a.64.64 0 0 0-.19-.57 1 1 0 0 0-.66-.2 1.46 1.46 0 0 0-1.05.47l-1.13-.66a2.2 2.2 0 0 1 .9-.94A3 3 0 0 1 11.78 6a2.7 2.7 0 0 1 1.27.25m-.84 4.606a.6.6 0 0 0 .09-.286h.05v-.65h-1.12a.88.88 0 0 0-.57.17.76.76 0 0 0-.24.54.5.5 0 0 0 .16.44.94.94 0 0 0 .58.15c.285.011.57-.043.83-.16a.6.6 0 0 0 .22-.204" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/freemarker.svg b/icons/freemarker.svg
new file mode 100644
index 00000000..ac115dbb
--- /dev/null
+++ b/icons/freemarker.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#3E97FF" fill-rule="evenodd" d="M4.112 10.508h-2.13l.355-1.672h2.13l.532-2.508H2.87l.356-1.672h2.13l.354-1.671h2.13l-.355 1.671h5.324l-1.42 6.688h2.13l-.355 1.671h1.065-5.324l.532-2.507.355-1.672.532-2.508H7.128l-.532 2.508h2.13l-.355 1.672h-2.13l-.532 2.507H3.58l.533-2.507Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/fsharp.svg b/icons/fsharp.svg
new file mode 100644
index 00000000..a2f646c1
--- /dev/null
+++ b/icons/fsharp.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#009BF2" d="M7.5 4.5v-3L1 8l6.5 6.5v-3L4 8z"/><path fill="#28BAD6" d="M8.5 11.5v3L15 8 8.5 1.5v3L12 8z"/><path fill="#009BF2" d="m5 8 2.5-2.5v5z"/></svg> \ No newline at end of file
diff --git a/icons/gbl.svg b/icons/gbl.svg
new file mode 100644
index 00000000..c70db9d9
--- /dev/null
+++ b/icons/gbl.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#3AC59B" fill-rule="evenodd" d="M6.5 3H13v1.5h-2.207L9.5 5.793v4.34a1 1 0 1 0 1 0V6.208l.707-.707H13V13H3V3h2.5v2.207l1 1v.927a1 1 0 1 0 1 0V5.793l-1-1zM2 3.2C2 2.537 2.448 2 3 2h10c.552 0 1 .537 1 1.2v9.6c0 .663-.448 1.2-1 1.2H3c-.552 0-1-.537-1-1.2zM5 12a1 1 0 1 0-.866-1.5H3v1h1.134A1 1 0 0 0 5 12" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/git.svg b/icons/git.svg
new file mode 100644
index 00000000..59034ea7
--- /dev/null
+++ b/icons/git.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M8 1.74a1.13 1.13 0 0 0-.78.32L5.94 3.35 7.57 5A1.2 1.2 0 0 1 8 4.89a1 1 0 0 1 1 1 1 1 0 0 1-.09.42l1.22 1.22a1 1 0 0 1 .42-.09 1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-.94-1.46L8.42 6.87h-.06v3.23a1 1 0 1 1-.73 0V6.89a1 1 0 0 1-.66-1 1 1 0 0 1 .09-.43L5.43 3.87l-3.6 3.6a1.1 1.1 0 0 0 0 1.53l5.4 5.41a1.11 1.11 0 0 0 1.56 0L14.2 9a1.12 1.12 0 0 0 0-1.56L8.79 2.06A1.13 1.13 0 0 0 8 1.74" style="fill:#db4b33"/></svg> \ No newline at end of file
diff --git a/icons/gitlab.svg b/icons/gitlab.svg
new file mode 100644
index 00000000..9c7742e8
--- /dev/null
+++ b/icons/gitlab.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><g clip-path="url(#clip0_1844_150)"><path fill="#E24329" d="m13.798 6.792-.017-.043-1.631-4.257a.43.43 0 0 0-.424-.269.43.43 0 0 0-.392.313l-1.103 3.376H5.77L4.666 2.537a.43.43 0 0 0-.392-.314.43.43 0 0 0-.424.27L2.217 6.754l-.017.042A3.034 3.034 0 0 0 3.205 10.3l.006.004.014.011 2.489 1.863 1.23.931.747.567a.506.506 0 0 0 .61 0l.748-.567 1.231-.931 2.503-1.874.006-.005a3.03 3.03 0 0 0 1.01-3.507"/><path fill="#FC6D26" d="m13.798 6.792-.017-.043a5.5 5.5 0 0 0-2.196.988l-3.582 2.715 2.284 1.726 2.503-1.874.007-.005a3.03 3.03 0 0 0 1.001-3.507"/><path fill="#FCA326" d="m5.716 12.178 1.228.931.748.567a.506.506 0 0 0 .61 0l.747-.567 1.231-.931-2.284-1.726z"/><path fill="#FC6D26" d="M4.413 7.74a5.5 5.5 0 0 0-2.196-.988l-.017.043A3.034 3.034 0 0 0 3.205 10.3l.006.004.014.011 2.489 1.863 2.289-1.726z"/></g><defs><clipPath id="clip0_1844_150"><path fill="#fff" d="M2 2h12v12H2z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/icons/gleam.svg b/icons/gleam.svg
new file mode 100644
index 00000000..e142e66e
--- /dev/null
+++ b/icons/gleam.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#E483E0" d="M6.629 2.13a.5.5 0 0 1 .817-.163l2.457 2.468a.5.5 0 0 0 .318.147l3.473.26a.5.5 0 0 1 .408.726l-1.59 3.1a.5.5 0 0 0-.04.347l.826 3.383a.5.5 0 0 1-.566.613l-3.438-.554a.5.5 0 0 0-.343.068l-2.963 1.831a.5.5 0 0 1-.757-.347l-.536-3.443a.5.5 0 0 0-.17-.304L1.866 8.01a.5.5 0 0 1 .098-.828l3.107-1.574a.5.5 0 0 0 .237-.257zm2.46 6.579a.4.4 0 0 0-.281.492.29.29 0 0 1-.56.152.4.4 0 0 0-.772.21A1.09 1.09 0 0 0 9.58 8.99a.4.4 0 0 0-.491-.281m-2.99-1.026a.827.827 0 1 0 0 1.654.827.827 0 0 0 0-1.654m4.37-.828a.827.827 0 1 0 0 1.655.827.827 0 0 0 0-1.655"/></svg> \ No newline at end of file
diff --git a/icons/gleamconfig.svg b/icons/gleamconfig.svg
new file mode 100644
index 00000000..2b1cc85e
--- /dev/null
+++ b/icons/gleamconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#E483E0" d="M9.089 8.709a.4.4 0 0 1 .491.281 1.09 1.09 0 0 1-2.104.573.4.4 0 0 1 .772-.21.29.29 0 0 0 .56-.152.4.4 0 0 1 .28-.492m-2.99-1.026a.827.827 0 1 1 0 1.654.827.827 0 0 1 0-1.654m4.37-.828a.827.827 0 1 1 0 1.655.827.827 0 0 1 0-1.655"/><path fill="#E483E0" d="M5.967 2.46a1.5 1.5 0 0 1 2.366-.312l1.793 1.803.07.058a.5.5 0 0 0 .248.088l2.536.19a1.5 1.5 0 0 1 1.301 2l-.078.18-1.16 2.263a.5.5 0 0 0-.042.347l.604 2.47a1.5 1.5 0 0 1-1.696 1.837l-2.511-.404a.5.5 0 0 0-.263.029l-.08.04-2.163 1.337a1.5 1.5 0 0 1-2.27-1.045l-.392-2.513a.5.5 0 0 0-.108-.241l-.062-.063-1.94-1.645a1.5 1.5 0 0 1 .291-2.483l2.27-1.149.075-.047a.5.5 0 0 0 .161-.21l.964-2.353zm1.656.393a.5.5 0 0 0-.788.104l-.029.06-.964 2.353a1.5 1.5 0 0 1-.593.704l-.118.066-2.268 1.149a.5.5 0 0 0-.098.827l1.94 1.644.1.092c.22.223.364.51.413.822l.392 2.513a.5.5 0 0 0 .757.349l2.162-1.338.119-.066a1.5 1.5 0 0 1 .909-.14l2.51.406a.5.5 0 0 0 .566-.613l-.603-2.471a1.5 1.5 0 0 1 .123-1.04l1.16-2.263.026-.06a.5.5 0 0 0-.434-.667l-2.536-.19a1.5 1.5 0 0 1-.852-.346l-.1-.092z"/></svg> \ No newline at end of file
diff --git a/icons/go.svg b/icons/go.svg
new file mode 100644
index 00000000..f566a1d7
--- /dev/null
+++ b/icons/go.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#34CBCE" d="M6.16 8.88H4.53l.352-1.354C6 7.5 6.915 7.51 7.66 7.51a.14.14 0 0 0 .16-.12 3.8 3.8 0 0 1 2.89-2.46 3.13 3.13 0 0 1 3.45 1.52l.08.15a3.3 3.3 0 0 1-.21 3 4.1 4.1 0 0 1-1.82 1.57 3.198 3.198 0 0 1-4.47-1.81c-.88 1.89-3.5 2.83-5.2 1.45-2.478-1.945-.45-6.099 2.396-6.099 1.008 0 2.496.401 3.064 1.889-.51.18-1 .26-1.54.43-.377-.43-.816-.582-1.376-.585A1.77 1.77 0 0 0 3.31 8.11a1.49 1.49 0 0 0 2.85.77m5.18-2.44c-1.83-.07-2.79 2.82-.77 3.33s3.22-3.12.77-3.33"/></svg> \ No newline at end of file
diff --git a/icons/go_package.svg b/icons/go_package.svg
new file mode 100644
index 00000000..0586d432
--- /dev/null
+++ b/icons/go_package.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#CE346B" d="M6.16 8.88H4.53l.352-1.354C6 7.5 6.915 7.51 7.66 7.51a.14.14 0 0 0 .16-.12 3.8 3.8 0 0 1 2.89-2.46 3.13 3.13 0 0 1 3.45 1.52l.08.15a3.3 3.3 0 0 1-.21 3 4.1 4.1 0 0 1-1.82 1.57 3.198 3.198 0 0 1-4.47-1.81c-.88 1.89-3.5 2.83-5.2 1.45-2.478-1.945-.45-6.099 2.396-6.099 1.008 0 2.496.401 3.064 1.889-.51.18-1 .26-1.54.43-.377-.43-.816-.582-1.376-.585A1.77 1.77 0 0 0 3.31 8.11a1.49 1.49 0 0 0 2.85.77m5.18-2.44c-1.83-.07-2.79 2.82-.77 3.33s3.22-3.12.77-3.33M4 13.25a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75m0-10.5A.75.75 0 0 1 4.75 2h6.5a.75.75 0 0 1 0 1.5h-6.5A.75.75 0 0 1 4 2.75"/></svg> \ No newline at end of file
diff --git a/icons/godot.svg b/icons/godot.svg
new file mode 100644
index 00000000..4456761d
--- /dev/null
+++ b/icons/godot.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#57A0D6" fill-rule="evenodd" d="M5.18 3.29a6.6 6.6 0 0 1 1.6-.581c.219.39.419.813.593 1.226a4 4 0 0 1 .623-.053h.008c.208.003.416.017.623.053C8.8 3.522 9 3.1 9.22 2.71c.549.13 1.09.31 1.6.58-.012.477-.041.933-.1 1.396q.093.063.187.122c.138.089.275.177.402.284l.09.073c.158.128.316.255.458.405q.516-.361 1.068-.658c.398.455.77.945 1.075 1.494-.23.393-.468.761-.726 1.11h-.007l-.001 3.101v.035h-.009l-.008.002-1.948.199a.2.2 0 0 0-.13.066.23.23 0 0 0-.059.14l-.06.912-1.7.128-.117-.841a.214.214 0 0 0-.207-.19H6.972a.2.2 0 0 0-.137.054.23.23 0 0 0-.07.136l-.117.841-1.7-.128-.06-.912a.23.23 0 0 0-.059-.14.2.2 0 0 0-.13-.066l-1.948-.2h-.018V7.514h-.007c-.258-.35-.497-.717-.726-1.11A8.6 8.6 0 0 1 3.075 4.91q.552.296 1.067.658c.142-.15.3-.277.457-.404l.092-.074c.127-.108.266-.197.404-.285l.185-.121c-.059-.463-.088-.92-.1-1.396Zm-2.448 8.459c0-.034-.002-.087-.002-.219l1.752.179.06.917a.23.23 0 0 0 .061.141.2.2 0 0 0 .134.065l2.075.157a.2.2 0 0 0 .146-.048.23.23 0 0 0 .077-.141l.119-.856h1.693l.119.856a.23.23 0 0 0 .07.135.2.2 0 0 0 .137.055h.015l2.076-.157a.2.2 0 0 0 .133-.065.23.23 0 0 0 .061-.142l.06-.917 1.752-.179c0 .132-.002.185-.003.219v.044c0 1.962-2.347 2.905-5.263 2.916h-.008c-2.916-.011-5.263-.954-5.263-2.916v-.044Zm4.41-3.469a1.286 1.286 0 1 1-2.57 0 1.286 1.286 0 0 1 2.57 0m4.287 0a1.286 1.286 0 1 1-2.572 0 1.286 1.286 0 0 1 2.572 0" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/gradle.svg b/icons/gradle.svg
new file mode 100644
index 00000000..b0eeb0cc
--- /dev/null
+++ b/icons/gradle.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#1D9BB7" fill-rule="evenodd" d="M13.348 3.633A1.8 1.8 0 0 0 12.035 3c-.493-.01-.97.199-1.331.581a.2.2 0 0 0-.042.067.2.2 0 0 0-.016.08c0 .057.02.11.054.15l.237.279c.03.035.072.056.115.06a.17.17 0 0 0 .122-.041 1 1 0 0 1 1.26-.04c.18.135.32.328.403.555.083.226.104.475.062.716-.042.24-.146.461-.3.634-.627.713-1.342.3-2.292-.25C8.97 5.02 7.17 3.98 4.497 5.423a.6.6 0 0 0-.204.174.7.7 0 0 0-.125.252.8.8 0 0 0 .052.563l.784 1.54a.64.64 0 0 0 .373.327c.158.05.326.026.468-.064l.02-.013-.015.013.347-.222a8 8 0 0 0 1.095-.928.18.18 0 0 1 .126-.053.18.18 0 0 1 .125.053.2.2 0 0 1 .05.07.23.23 0 0 1 .003.173.2.2 0 0 1-.045.072 8.4 8.4 0 0 1-1.154.972h-.011l-.348.22a.9.9 0 0 1-.482.143.9.9 0 0 1-.498-.15 1.1 1.1 0 0 1-.366-.411l-.74-1.455c-1.425 1.142-2.29 3.342-1.826 6.134q.013.072.063.12a.17.17 0 0 0 .114.047h.846a.17.17 0 0 0 .119-.051.2.2 0 0 0 .06-.128c.037-.34.183-.652.409-.878.226-.227.517-.351.818-.351.302 0 .593.124.819.35.226.227.371.54.409.879q.01.077.06.128a.17.17 0 0 0 .12.051h.823a.17.17 0 0 0 .12-.051.2.2 0 0 0 .06-.128c.038-.339.184-.65.41-.875.226-.226.517-.35.818-.35s.59.124.817.35.372.536.411.875a.2.2 0 0 0 .06.128A.17.17 0 0 0 9.6 13h.813a.17.17 0 0 0 .127-.059.22.22 0 0 0 .053-.142c.02-1.301.329-2.795 1.21-3.544 3.053-2.593 2.25-4.815 1.544-5.622ZM9.795 7.998 9 7.556a.6.6 0 0 1 .063-.271.53.53 0 0 1 .174-.202.46.46 0 0 1 .488-.023.5.5 0 0 1 .19.184.6.6 0 0 1 .04.539.55.55 0 0 1-.16.217z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/gradlebat.svg b/icons/gradlebat.svg
new file mode 100644
index 00000000..3a32911f
--- /dev/null
+++ b/icons/gradlebat.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#1D9BB7" d="M12.035 3a1.8 1.8 0 0 1 1.313.633c.49.559 1.025 1.797.293 3.367H10.5c-1.5 0-2 .5-2 2v2.64a1.1 1.1 0 0 0-.306-.044c-.301 0-.592.124-.818.35a1.47 1.47 0 0 0-.41.875.2.2 0 0 1-.06.128.17.17 0 0 1-.12.051h-.823a.17.17 0 0 1-.12-.051.22.22 0 0 1-.06-.128 1.47 1.47 0 0 0-.41-.878 1.16 1.16 0 0 0-.818-.351c-.301 0-.592.124-.818.35a1.47 1.47 0 0 0-.41.879.2.2 0 0 1-.059.128.17.17 0 0 1-.12.051h-.845a.17.17 0 0 1-.114-.048.2.2 0 0 1-.063-.119c-.464-2.792.4-4.992 1.825-6.134l.741 1.455c.089.17.215.312.366.41a.9.9 0 0 0 .498.151.9.9 0 0 0 .482-.143l.348-.22h.01q.616-.428 1.155-.972a.2.2 0 0 0 .045-.072.23.23 0 0 0-.003-.173.2.2 0 0 0-.05-.07.18.18 0 0 0-.125-.053.18.18 0 0 0-.126.053q-.511.517-1.095.928l-.347.222.015-.013-.02.013a.56.56 0 0 1-.468.064.64.64 0 0 1-.373-.327l-.784-1.54a.78.78 0 0 1-.052-.563.7.7 0 0 1 .125-.252.6.6 0 0 1 .204-.174c2.674-1.444 4.474-.404 5.81.368.95.55 1.665.963 2.293.25.153-.173.257-.394.3-.634.041-.24.02-.49-.063-.716a1.2 1.2 0 0 0-.403-.556 1 1 0 0 0-1.26.04.17.17 0 0 1-.122.041.17.17 0 0 1-.115-.06l-.237-.278a.23.23 0 0 1-.054-.15q0-.04.016-.08a.2.2 0 0 1 .042-.067 1.78 1.78 0 0 1 1.331-.58Z"/><path fill="#2DA3F9" d="M9.5 9.5V8l3.208 2.5L9.5 13v-1.5l1.5-1z"/><rect width="2" height="1" x="12" y="12" fill="#2DA3F9" rx=".5"/></svg> \ No newline at end of file
diff --git a/icons/gradlekotlin.svg b/icons/gradlekotlin.svg
new file mode 100644
index 00000000..9a651b03
--- /dev/null
+++ b/icons/gradlekotlin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#1D9BB7" fill-rule="evenodd" d="M12.035 3a1.8 1.8 0 0 1 1.313.633c.49.559 1.025 1.797.293 3.367H10.5c-1.5 0-2 .5-2 2v2.64a1.1 1.1 0 0 0-.306-.044c-.301 0-.592.124-.818.35a1.47 1.47 0 0 0-.41.875.2.2 0 0 1-.06.128.17.17 0 0 1-.12.051h-.823a.17.17 0 0 1-.12-.051.22.22 0 0 1-.06-.128 1.47 1.47 0 0 0-.41-.878 1.16 1.16 0 0 0-.818-.351c-.301 0-.592.124-.818.35a1.47 1.47 0 0 0-.41.879.2.2 0 0 1-.059.128.17.17 0 0 1-.12.051h-.845a.17.17 0 0 1-.114-.048.2.2 0 0 1-.063-.119c-.464-2.792.4-4.992 1.825-6.134l.741 1.455c.089.17.215.312.366.41a.9.9 0 0 0 .498.151.9.9 0 0 0 .482-.143l.348-.22h.01q.616-.428 1.155-.972a.2.2 0 0 0 .045-.072.23.23 0 0 0-.003-.173.2.2 0 0 0-.05-.07.18.18 0 0 0-.125-.053.18.18 0 0 0-.126.053q-.511.517-1.095.928l-.347.222.015-.013-.02.013a.56.56 0 0 1-.468.064.64.64 0 0 1-.373-.327l-.784-1.54a.78.78 0 0 1-.052-.563.7.7 0 0 1 .125-.252.6.6 0 0 1 .204-.174c2.674-1.444 4.474-.404 5.81.368.95.55 1.665.963 2.293.25.153-.173.257-.394.3-.634.041-.24.02-.49-.063-.716a1.2 1.2 0 0 0-.403-.556 1 1 0 0 0-1.26.04.17.17 0 0 1-.122.041.17.17 0 0 1-.115-.06l-.237-.278a.23.23 0 0 1-.054-.15q0-.04.016-.08a.2.2 0 0 1 .042-.067 1.78 1.78 0 0 1 1.331-.58Z" clip-rule="evenodd"/><path fill="url(#a)" fill-rule="evenodd" d="M9.294 8.76v3.48a.997.997 0 0 0 1 1h3.273a.5.5 0 0 0 .353-.854L12.034 10.5l1.886-1.886a.5.5 0 0 0-.353-.854h-3.273a1 1 0 0 0-1 1m2.74 1.74-1.827 1.827-.62.62.62-.62z" clip-rule="evenodd"/><defs><linearGradient id="a" x1="9.505" x2="13.909" y1="7.988" y2="13.137" gradientUnits="userSpaceOnUse"><stop stop-color="#95A6FF"/><stop offset="1" stop-color="#6938D0"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/icons/grain.svg b/icons/grain.svg
new file mode 100644
index 00000000..83837c14
--- /dev/null
+++ b/icons/grain.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#F6A21F" d="M8.033 1.965 5.882 6.408 8.05 8.316l2.135-1.908z"/><path fill="#F68E27" d="M2.009 4.044v5.473l6.04 5.167 3.046-2.65z"/><path fill="#E18026" d="M13.991 9.517V4.104L8.563 8.892l3.111 2.633z"/></svg> \ No newline at end of file
diff --git a/icons/graphql.svg b/icons/graphql.svg
new file mode 100644
index 00000000..dc4ab0ef
--- /dev/null
+++ b/icons/graphql.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M8.2 14.5A1.24 1.24 0 0 1 7 13l-2.51-1.46a.9.9 0 0 1-.22.16 1.23 1.23 0 0 1-.62.17A1.24 1.24 0 0 1 3 9.56a1 1 0 0 1 .25-.11v-2.9A1 1 0 0 1 3 6.44a1.24 1.24 0 0 1-.46-1.69 1.26 1.26 0 0 1 1.08-.62 1.23 1.23 0 0 1 .62.17.9.9 0 0 1 .22.16L7 3a1.3 1.3 0 0 1 0-.28 1.24 1.24 0 1 1 2.47 0 1.4 1.4 0 0 1 0 .28l2.51 1.44a.9.9 0 0 1 .22-.16 1.23 1.23 0 0 1 .62-.17 1.27 1.27 0 0 1 1.08.62 1.25 1.25 0 0 1-.46 1.69 1 1 0 0 1-.25.11v2.9a1 1 0 0 1 .25.11 1.22 1.22 0 0 1 .58.75 1.25 1.25 0 0 1-1.2 1.56 1.23 1.23 0 0 1-.62-.17.9.9 0 0 1-.25-.19L9.4 13a1.1 1.1 0 0 1 0 .31 1.24 1.24 0 0 1-1.2 1.19m0-2.5a1.26 1.26 0 0 1 .87.35L11.42 11H5l2.37 1.35A1.23 1.23 0 0 1 8.2 12m3.37-1.76a2 2 0 0 1 .11-.25 1.2 1.2 0 0 1 .17-.22L8.48 4a1.3 1.3 0 0 1-.28 0 1 1 0 0 1-.26 0L4.56 9.79a1.2 1.2 0 0 1 .17.22 2 2 0 0 1 .11.25ZM4 9.3l3.19-5.54L4.86 5.1a1.2 1.2 0 0 1-.14.9 1.2 1.2 0 0 1-.7.56Zm8.4 0V6.56a1.24 1.24 0 0 1-.84-1.44L9.22 3.76Z" style="fill:#e535ab"/></svg> \ No newline at end of file
diff --git a/icons/groovy.svg b/icons/groovy.svg
new file mode 100644
index 00000000..ac873584
--- /dev/null
+++ b/icons/groovy.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#68B2E4" fill-rule="evenodd" d="M9.972 1.582c.88.535 1.141 1.538 1.141 2.338 0 .754-.293 1.486-.68 2.102a6.3 6.3 0 0 1-1.452 1.6c-.521.405-1.147.745-1.753.798a1.53 1.53 0 0 1-1.001-.235c-.328-.22-.52-.555-.61-.919-.26-1.054.236-2.086.791-2.776.29-.36.631-.675.981-.906.331-.218.753-.414 1.188-.414v1.5a.4.4 0 0 0-.1.027q-.107.04-.263.14a2.9 2.9 0 0 0-.637.593c-.427.532-.6 1.083-.504 1.477l.006.02h.016c.189-.017.54-.159.967-.49a4.8 4.8 0 0 0 1.101-1.213c.297-.472.45-.928.45-1.304 0-.558-.185-.913-.42-1.056-.225-.137-.806-.27-2.062.367C6 3.804 5.258 4.84 4.934 5.904c-.336 1.1-.18 2.048.205 2.516.428.521.91.735 1.413.775.528.043 1.13-.105 1.753-.407 1.27-.618 2.363-1.752 2.725-2.486l1.37.057c.524 1.327.524 3.275-.45 4.854-1.014 1.644-2.988 2.747-6.11 2.503l.117-1.495c2.682.209 4.057-.725 4.717-1.795a4.04 4.04 0 0 0 .573-1.951 8.6 8.6 0 0 1-2.286 1.661c-.772.376-1.649.625-2.53.554-.906-.072-1.763-.481-2.451-1.317-.828-1.007-.895-2.548-.481-3.906.425-1.394 1.405-2.79 2.954-3.574 1.422-.72 2.627-.853 3.519-.31M7.034 6.926h.002Z" clip-rule="evenodd"/><path fill="#68B2E4" d="M5.864 13.982C5.72 13.834 5.346 13.062 5 12c5.166.705 6.186-2.124 6.051-3.75.432-1.186 1.795-2.642 1.449 1.25s-4.763 4.63-6.636 4.482"/></svg> \ No newline at end of file
diff --git a/icons/grunt.svg b/icons/grunt.svg
new file mode 100644
index 00000000..0933e34a
--- /dev/null
+++ b/icons/grunt.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#f4791c}</style></defs><path d="M5.28 13.1v-.07zm2.59.9h-.35a2.44 2.44 0 0 1-1.22-.47 1.54 1.54 0 0 1-.61-1.39v-.13h.12A15 15 0 0 1 8 11.78a6.6 6.6 0 0 1 1.64.22.45.45 0 0 1 .25.12.43.43 0 0 1 0 .37 1.9 1.9 0 0 1-.32.63 2.16 2.16 0 0 1-.74.7 2 2 0 0 1-1 .24M3.79 11v-.22a1 1 0 0 1 .08-.19l.1.17a1.23 1.23 0 0 0 .76.53c.79.07.72.06.48.67 0 .12 0 .57-.09.58a1.59 1.59 0 0 1-1.35-1.47V11m6.8 1.54c-.12 0 .22-.46.17-.58-.23-.61-.57-.6.22-.67a1.18 1.18 0 0 0 .76-.53l.1-.17.09.19a1.57 1.57 0 0 1-1.32 1.76M5.08 6.5c1.14.29 3.11 1.31 1.64 2 0-.26-.08-.33-.19-.33h-.47c-.75 0-1.86-1.37-1-1.72m5.42 0c.88.35-.22 1.72-1 1.72h-.42c-.12 0-.2.07-.19.33-1.48-.67.49-1.69 1.63-2M8.22 2c-.09 0-.27.15-.67.6l-.1.08-.18-.16-.19-.16c-.12 0-.27.19-.49.86H6.5a2.6 2.6 0 0 1-.92-.42 2.7 2.7 0 0 0-1.2-.42 1 1 0 0 0-.83.44c-.17.49 1.5.73.56 1.38-1.51.45.25 1.58-.48 2.47a1.15 1.15 0 0 0-.43.83.92.92 0 0 0 .39.59c.4.34.94.55 1.07 1.11a3 3 0 0 1 0 .75c0 .13 0 .66-.2.66l-.13-.06a.9.9 0 0 1-.18-.36c-.06-.12-.14-.34-.25-.34l-.14.15C2.53 12.21 5.62 14.48 8 14.48a3 3 0 0 0 1.2-.24c1.54-.58 4.21-2.58 2.66-4.35-.31 0-.27.72-.66.81C10 8.81 13.17 8.43 12.37 7a1.15 1.15 0 0 1-.2-1.59c.58-.9-.58-.91-.77-1.51 1.12-1 .76-1.44 0-1.44a2.87 2.87 0 0 0-1.83.75c-.17.2-.28.27-.35.27s-.08-.67 0-.93a1.2 1.2 0 0 1-.51.15c-.24 0-.31-.16-.34-.33S8.31 2 8.22 2" class="cls-1"/><path d="M7.11 12.27a1.23 1.23 0 0 0-.66 0 .6.6 0 0 0 .06.4.43.43 0 0 0 .42.26.39.39 0 0 0 .27-.2.9.9 0 0 0 .11-.32v-.18Zm2.01.08L9 12.27a1.8 1.8 0 0 0-.56-.06l-.18.1a.54.54 0 0 0 .13.56.38.38 0 0 0 .37.13.37.37 0 0 0 .24-.23 1.2 1.2 0 0 0 .09-.34Z" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/gulp.svg b/icons/gulp.svg
new file mode 100644
index 00000000..08c73750
--- /dev/null
+++ b/icons/gulp.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M9.08 4 10 2.5h1.5v-1h-2v.06l-1.32 2-.35.44-.66 1-.34.5H5.5l.33-.5.63-.94c-1.73.14-3 .51-3 .94a.2.2 0 0 0 0 .08L4.5 11c0 .2.33.38.87.51l.3 2c0 .29 1 .52 2.33.52s2.33-.23 2.33-.52l.3-2c.54-.13.87-.31.87-.51l1-5.92V5c0-.47-1.45-.86-3.42-1m-2 2.87a2.7 2.7 0 0 1 1.77-1h.21a1.1 1.1 0 0 1 .81.59l.06.22a.52.52 0 0 1-.27.44h-.22A.51.51 0 0 1 9 7h-.09c-.12 0-.46.08-1.06.68a4.4 4.4 0 0 0-.7.93 3.2 3.2 0 0 0-.26.63 2.7 2.7 0 0 0-.12.75 1.4 1.4 0 0 0 .16.71c.1.15.16.17.26.18h.16a2.3 2.3 0 0 0 1.16-1 4 4 0 0 0 .31-.59A3.6 3.6 0 0 0 9 8.7v-.08a.2.2 0 0 1 0-.08.5.5 0 0 1 .46-.29h.13a.49.49 0 0 1 .36.39s0 .06 0 .09v.41L9 12.39a.49.49 0 0 1-.48.36h-.08a.49.49 0 0 1-.44-.5v-.14l.18-.64a2.7 2.7 0 0 1-.54.25 1.5 1.5 0 0 1-.45.08 1.32 1.32 0 0 1-1.11-.65 2.34 2.34 0 0 1-.31-1.23 4 4 0 0 1 .08-.76c0-.16.09-.32.14-.48A4.9 4.9 0 0 1 7.12 6.9Z" style="fill:#e34e48"/></svg> \ No newline at end of file
diff --git a/icons/h.svg b/icons/h.svg
new file mode 100644
index 00000000..5211844a
--- /dev/null
+++ b/icons/h.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#506EFF" fill-rule="evenodd" d="m11 3.452 1.85 1.068a1.33 1.33 0 0 1 .67 1.15v4.78a1.35 1.35 0 0 1-.67 1.16L11 12.678zM9.053 2.328 8.71 2.13a1.34 1.34 0 0 0-1.34 0l-.423.244v4.301h2.106zM5 3.498 3.23 4.52a1.33 1.33 0 0 0-.67 1.15v4.78a1.35 1.35 0 0 0 .67 1.16L5 12.632zm1.947 10.258L7.37 14a1.34 1.34 0 0 0 1.34 0l.343-.198V8.84H6.947z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/haml.svg b/icons/haml.svg
new file mode 100644
index 00000000..b47b8225
--- /dev/null
+++ b/icons/haml.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#C8BC79" d="m5.534 2.108.207.414a18 18 0 0 0-1.473.554l-.234-.468s-.23-.257.5-.5 1 0 1 0"/><path fill="#C8BC79" fill-rule="evenodd" d="M4.646 3.83a25 25 0 0 1 1.496-.507l1.392 2.785 2.48-1.86c.515.416 1.135.964 1.635 1.437l-.7.545c0 .136.01.29.031.45.063.474.211.878.408 1.075l.018.018c.242.242.674.674.9 1.2.12.282.194.614.136.972-.059.363-.243.705-.554 1.017-.453.452-1.032.525-1.575.416-.527-.106-1.069-.387-1.567-.715a10 10 0 0 1-.57-.407l-.642 3.852c-.5.167-1.8.2-3-1 .327-.98 1.12-3.136 1.672-4.621l-.025-.025.055-.056.298-.798-1.888-3.777Zm3.719 5.296c.302.253.618.495.932.702.456.3.87.501 1.212.57.324.065.524.004.672-.143.188-.19.254-.347.274-.469a.75.75 0 0 0-.068-.418c-.143-.335-.444-.644-.706-.906-.397-.397-.586-.995-.67-1.503L8.534 8.11z" clip-rule="evenodd"/><path fill="#C8BC79" d="m12.548 4.986.486-.378s0-.5-.5-1-1-.5-1-.5l-.675.507c.553.394 1.237.94 1.689 1.371"/></svg> \ No newline at end of file
diff --git a/icons/handlebars.svg b/icons/handlebars.svg
new file mode 100644
index 00000000..04276b8f
--- /dev/null
+++ b/icons/handlebars.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#F0772B" fill-rule="evenodd" d="M7.495 5.183c.174.098.386.271.505.431v-.04a1.43 1.43 0 0 1 2.11-.2c.237.214.464.49.698.777.576.704 1.197 1.463 2.122 1.463a.89.89 0 0 0 .5-1.5c1 0 1.57 1.5.5 2.5-1.046.978-2.711 1.071-4 .5A4.57 4.57 0 0 1 8 7.624v-.01c-.506.657-1.235 1.181-2 1.5-1.31.58-2.918.583-4-.5-.79-.79-.5-2.5.5-2.5a.89.89 0 0 0 .5 1.5c.927 0 1.544-.752 2.12-1.453.237-.29.468-.57.71-.787a1.43 1.43 0 0 1 1.665-.19Z" clip-rule="evenodd"/><path fill="#F0772B" d="M7.5 7.614a.5.5 0 1 1 1 0V12.5a.5.5 0 0 1-1 0z"/></svg> \ No newline at end of file
diff --git a/icons/hardhat.svg b/icons/hardhat.svg
new file mode 100644
index 00000000..ebee3ad6
--- /dev/null
+++ b/icons/hardhat.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EEA230" fill-rule="evenodd" d="M8 3.5c-1.366 0-1.8.245-1.936.803C4.264 4.938 3 6.645 3 10.103c0 .359.02.654.06.897H2.5v1c0 .552 2.186 1 5.5 1s5.5-.448 5.5-1v-1h-.587c.057-.243.087-.538.087-.896 0-3.46-1.264-5.166-3.064-5.801C9.8 3.745 9.366 3.5 8 3.5M6.25 7.333 8 5l1.75 2.333L8 9.083zM8 10.25 6.25 8.5 8 12l1.75-3.5z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/hash.svg b/icons/hash.svg
new file mode 100644
index 00000000..91669f1c
--- /dev/null
+++ b/icons/hash.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path stroke="#5BBD82" stroke-linecap="round" stroke-width="1.5" d="M10 13c-.5 0-2-.5-2.5-1.5-.356-.711-.5-1.5 0-2s.898-.102 1.5.5c1 1 2 1.5 3 1 3.13-1.565-.5-6-4-6-1.368 0-2.5.5-3.5 1.5C4 7 3 8 3 10v2"/><path stroke="#5BBD82" stroke-linecap="round" stroke-width="1.5" d="M11 9C9.88 7.561 8 6.5 6.5 7.5 5.75 8 5 9 5 10.5s.5 2 1 2.5M3 5c1-1 2.47-2 5-2s4 1 5 1.5"/></svg> \ No newline at end of file
diff --git a/icons/hashicorp.svg b/icons/hashicorp.svg
new file mode 100644
index 00000000..d027bc20
--- /dev/null
+++ b/icons/hashicorp.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#2E71E5" fill-rule="evenodd" d="M7 2 2 4.911v6.994L4 13V6l3-1.813zm2 0v5.649H7V5.5L5 6.65v7.238L7 15V9.368h2V11.5l2-1.149V3.11zm5 10.089L9 15v-2.187L12 11V4l2 1.095z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/haskell.svg b/icons/haskell.svg
new file mode 100644
index 00000000..80e53337
--- /dev/null
+++ b/icons/haskell.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#5335AF" d="M5 8 2 3h2l3 5-3 5H2z"/><path fill="#7658EE" fill-rule="evenodd" d="m5 3 3 5-3 5h2l2-3.333L11 13h2l-3-5-3-5z" clip-rule="evenodd"/><path fill="#E94FEF" d="m10 6 1 1.5h3V6zm1.5 2.5 1 1.5H14V8.5z"/></svg> \ No newline at end of file
diff --git a/icons/haxe.svg b/icons/haxe.svg
new file mode 100644
index 00000000..4e223a05
--- /dev/null
+++ b/icons/haxe.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E4BA1E" d="m8 4.25-2.801-.256L2.999 3h2.5zm0 0 2.969-.344L13 3h-2.5L8 4.249"/><path fill="#E08628" d="m8 11.75 2.5.299L13 13h-2.5z"/><path fill="#DC642F" d="m8 11.75-2.5.27L3 13h2.5z"/><path fill="#E8DD17" d="m4.25 8-.37 2.936L3 13v-2.5l1.25-2.502"/><path fill="#E8DD17" d="m4.25 8-.281-2.688L2.999 3v2.5z"/><path fill="#DB5433" d="m11.75 8 .36-2.717L13 3v2.5zm0 0 .244 2.76L13 13v-2.5z"/><path fill="#E4A921" d="m3 3 5 1.25-.458 3.405-3.292.343L3 3.003"/><path fill="#E29724" d="m3 13 1.25-5 3.35.33.4 3.418-5 1.248"/><path fill="#DE762C" d="m13 3-1.25 5-3.27-.52L8 4.25l5-1.247"/><path fill="#DC642F" d="m13 13-5-1.25.508-3.362L11.75 8 13 12.995"/><path fill="#E08628" d="M8 4.25 4.25 8 8 11.75 11.75 8z"/></svg> \ No newline at end of file
diff --git a/icons/haxeml.svg b/icons/haxeml.svg
new file mode 100644
index 00000000..7de8cbf0
--- /dev/null
+++ b/icons/haxeml.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path stroke="#E08628" stroke-width="1.5" d="M5.292 12.25H3.749v-1.542l1.394-2.323.231-.386-.231-.386-1.394-2.32V3.75h1.543l2.322 1.393.386.232.385-.232 2.322-1.393h1.543v1.542l-1.393 2.322-.232.385.232.386 1.393 2.323v1.542h-1.543l-2.321-1.393L8 10.625l-.386.232z"/></svg> \ No newline at end of file
diff --git a/icons/hpp.svg b/icons/hpp.svg
new file mode 100644
index 00000000..429a4f1e
--- /dev/null
+++ b/icons/hpp.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#C47CFC" fill-rule="evenodd" d="m11.5 3.74 1.35.78a1.33 1.33 0 0 1 .67 1.15v4.78a1.35 1.35 0 0 1-.67 1.16l-1.35.78zM9.053 2.329 8.71 2.13a1.34 1.34 0 0 0-1.34 0l-.423.244v4.301h2.106zM4.5 3.787l-1.27.733a1.33 1.33 0 0 0-.67 1.15v4.78a1.35 1.35 0 0 0 .67 1.16l1.27.733zm2.447 9.969L7.37 14a1.34 1.34 0 0 0 1.34 0l.343-.198V9H6.947z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/htaccess.svg b/icons/htaccess.svg
new file mode 100644
index 00000000..06abd56e
--- /dev/null
+++ b/icons/htaccess.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D93E5C" fill-rule="evenodd" d="M11.714 6.53H13V3h-1L7.205 7.443A3.5 3.5 0 1 0 8.833 9.43l1.596-1.606h1.285V6.529Zm-5.816 4.488a6 6 0 0 1-.423-.372 6 6 0 0 1-.372-.423c-.35-.427-.597-.729-1.042-.284a1.5 1.5 0 0 0 2.121 2.122c.445-.446.144-.693-.284-1.043" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/html.svg b/icons/html.svg
new file mode 100644
index 00000000..be340ec1
--- /dev/null
+++ b/icons/html.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#F16946" d="M7 6 4 8.5 7 11v2.5L2 9V8l5-4.5zm7 2v1l-5 4.5V11l3-2.5L9 6V3.5z"/></svg> \ No newline at end of file
diff --git a/icons/http.svg b/icons/http.svg
new file mode 100644
index 00000000..f58b5acf
--- /dev/null
+++ b/icons/http.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M5.255 9.162a15 15 0 0 1 0-2.324H3.019a5.1 5.1 0 0 0 0 2.324zm.179 1.395H3.57a5.13 5.13 0 0 0 2.521 2.189c-.28-.612-.504-1.356-.657-2.189m3.71 0a8 8 0 0 1-.453 1.496c-.209.486-.42.79-.585.952a1 1 0 0 1-.106.09 1 1 0 0 1-.106-.09c-.164-.163-.376-.466-.585-.952a8 8 0 0 1-.454-1.496zm-2.49-1.395a13.7 13.7 0 0 1 0-2.324h2.692a13.7 13.7 0 0 1 0 2.324zm3.912 1.395c-.153.833-.378 1.577-.657 2.189a5.13 5.13 0 0 0 2.52-2.189zm2.415-1.395h-2.236a15 15 0 0 0 0-2.324h2.236a5.1 5.1 0 0 1 0 2.324M7.31 3.947c-.18.418-.336.923-.455 1.496h2.29a8 8 0 0 0-.454-1.496c-.209-.486-.42-.79-.585-.952A1 1 0 0 0 8 2.905a1 1 0 0 0-.106.09c-.164.163-.376.466-.585.952m3.256 1.496h1.864a5.13 5.13 0 0 0-2.521-2.189c.28.612.504 1.356.657 2.189m-6.996 0h1.864c.153-.833.378-1.577.657-2.189a5.13 5.13 0 0 0-2.52 2.189M8 1.491A6.509 6.509 0 1 1 8 14.51 6.509 6.509 0 0 1 8 1.49" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/identifier.svg b/icons/identifier.svg
new file mode 100644
index 00000000..535c059a
--- /dev/null
+++ b/icons/identifier.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#9D633C" d="M8 2.75c.453 0 1.117.13 1.688.541.61.44 1.062 1.165 1.062 2.209q0 .125-.016.267a3 3 0 0 1 1.76 2.905A2.998 2.998 0 0 1 11.5 14.5h-7a3 3 0 0 1-.995-5.828 3 3 0 0 1 1.76-2.905A3 3 0 0 1 5.25 5.5c0-.213-.07-.55-.259-.812-.16-.223-.435-.438-.991-.438v-1.5zm4.034 7.349A3 3 0 0 1 9.5 11.5h-3a3 3 0 0 1-2.535-1.401 1.5 1.5 0 0 0 .382 2.893L4.5 13h7l.153-.008a1.5 1.5 0 0 0 .381-2.893m-1.825-2.91C9.769 7.798 9.044 8.25 8 8.25s-1.77-.452-2.209-1.062l-.006-.008A1.5 1.5 0 0 0 6.5 10h3a1.5 1.5 0 0 0 .714-2.82zM6.465 4.25c.211.45.285.91.285 1.25 0 .213.07.55.259.812.16.223.435.438.991.438s.83-.215.991-.438c.189-.262.259-.599.259-.812 0-.556-.215-.83-.438-.991A1.5 1.5 0 0 0 8 4.25z"/></svg> \ No newline at end of file
diff --git a/icons/image.svg b/icons/image.svg
new file mode 100644
index 00000000..c1a5f83f
--- /dev/null
+++ b/icons/image.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="m4 12.88 2.91-3.76 2.37 2.72.9-1L12 12.88zM6.25 3.5A1.75 1.75 0 1 1 4.5 5.25 1.75 1.75 0 0 1 6.25 3.5M9.11 2H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.91a1 1 0 0 0-.29-.7C12 4.53 10.49 3 9.8 2.29A.94.94 0 0 0 9.11 2" style="fill:#e18159"/></svg> \ No newline at end of file
diff --git a/icons/imagegif.svg b/icons/imagegif.svg
new file mode 100644
index 00000000..1e36bb48
--- /dev/null
+++ b/icons/imagegif.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><mask id="a" fill="#fff"><path fill-rule="evenodd" d="M6.004 2H9.11a.94.94 0 0 1 .69.29c.69.71 2.2 2.24 2.91 2.92a1 1 0 0 1 .29.7V13a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zM10 8c.546 0 1.059.146 1.5.401v1.276A2 2 0 1 0 8.677 12.5H7.401A3 3 0 0 1 10 8m1.323 4.5a2 2 0 0 0 .177-.177v.177zM6 8a3 3 0 0 1-1.5-.401V3.5h4.099A3 3 0 0 1 6 8" clip-rule="evenodd"/></mask><path fill="#FF505A" fill-rule="evenodd" d="M6.004 2H9.11a.94.94 0 0 1 .69.29c.69.71 2.2 2.24 2.91 2.92a1 1 0 0 1 .29.7V13a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1zM10 8c.546 0 1.059.146 1.5.401v1.276A2 2 0 1 0 8.677 12.5H7.401A3 3 0 0 1 10 8m1.323 4.5a2 2 0 0 0 .177-.177v.177zM6 8a3 3 0 0 1-1.5-.401V3.5h4.099A3 3 0 0 1 6 8" clip-rule="evenodd"/><path fill="#FF505A" d="M9.11 2v1.5h.017zM6.004 2V.5l-.001 3V2Zm3.481.073-.581 1.383zm.315.217L8.716 3.327l.008.008zm2.91 2.92 1.065-1.056-.014-.014-.013-.013zm.29.7h1.5v-.006zm-9.707 7.797 1.06-1.06zm0-11.414-1.06-1.06zM5.996 2l.001 1.5v-3V2Zm0 0V.5v3zm.008 0v1.5-3zM11.5 8.401H13v-.865l-.749-.433zm0 1.276-1.125.993L13 13.643V9.677zM8.677 12.5V14h3.966L9.67 11.375zm-1.276 0-1.298.751.433.749h.865zm4.099-.177H13V8.357l-2.625 2.973zm-.177.177-.993-1.125L7.357 14h3.966zm.177 0V14H13v-1.5zm-7-4.901H3v.865l.749.433zm0-4.099V2H3v1.5zm4.099 0 1.298-.751L9.464 2h-.865zm.511-3H6.004v3H9.11zm.956.19A2.4 2.4 0 0 0 9.093.5l.034 3a.6.6 0 0 1-.223-.044zm.818.563a2.4 2.4 0 0 0-.818-.562L8.904 3.456a.6.6 0 0 1-.188-.129zm2.864 2.874c-.69-.66-2.183-2.173-2.872-2.882l-2.152 2.09c.691.711 2.217 2.258 2.948 2.958l2.075-2.166Zm.752 1.777a2.5 2.5 0 0 0-.725-1.75l-2.13 2.112a.5.5 0 0 1-.145-.35zm0 7.096V5.91h-3V13zm-.732 1.768A2.5 2.5 0 0 0 14.5 13h-3a.5.5 0 0 1 .146-.354zM12 15.5a2.5 2.5 0 0 0 1.768-.732l-2.122-2.122A.5.5 0 0 1 12 12.5zm-8 0h8v-3H4zm-1.768-.732A2.5 2.5 0 0 0 4 15.5v-3a.5.5 0 0 1 .354.146zM1.5 13a2.5 2.5 0 0 0 .732 1.768l2.122-2.122A.5.5 0 0 1 4.5 13zm0-10v10h3V3zm.732-1.768A2.5 2.5 0 0 0 1.5 3h3a.5.5 0 0 1-.146.354zM4 .5a2.5 2.5 0 0 0-1.768.732l2.122 2.122A.5.5 0 0 1 4 3.5zm1.996 0H4v3h1.996zm0 0 .001 3zm0 3h.008v-3h-.008zm.009-3-.002 3zm6.246 6.603A4.5 4.5 0 0 0 10 6.5v3c.276 0 .53.073.749.2zM13 9.677V8.401h-3v1.276zm-3 .823a.5.5 0 0 1 .375.17l2.25-1.986A3.5 3.5 0 0 0 10 7.5zm-.5.5a.5.5 0 0 1 .5-.5v-3A3.5 3.5 0 0 0 6.5 11zm.17.375A.5.5 0 0 1 9.5 11h-3c0 1.046.46 1.986 1.184 2.625zM7.4 14h1.276v-3H7.401zm-1.9-3c0 .817.22 1.588.603 2.251L8.7 11.75c-.127-.22-.2-.473-.2-.749zM10 6.5A4.5 4.5 0 0 0 5.5 11h3A1.5 1.5 0 0 1 10 9.5zm.375 4.83-.045.045 1.986 2.25q.164-.145.309-.31zM13 12.5v-.177h-3v.177zM11.323 14h.177v-3h-.177zM3.749 8.897A4.5 4.5 0 0 0 6 9.5v-3c-.276 0-.53-.073-.749-.2zM3 3.5v4.099h3V3.5zM8.599 2H4.5v3h4.099zM10.5 5c0-.817-.22-1.588-.603-2.251L7.3 4.25c.127.22.2.473.2.749h3ZM6 9.5A4.5 4.5 0 0 0 10.5 5h-3A1.5 1.5 0 0 1 6 6.5z" mask="url(#a)"/><path fill="#FF505A" d="m10 13.5 2-3V13z"/></svg> \ No newline at end of file
diff --git a/icons/imageico.svg b/icons/imageico.svg
new file mode 100644
index 00000000..fe179dcf
--- /dev/null
+++ b/icons/imageico.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#3ADECA" fill-rule="evenodd" d="M4 2h5.11a.94.94 0 0 1 .69.29c.69.71 2.2 2.24 2.91 2.92a1 1 0 0 1 .29.7V13a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1m4.189 2.543a.2.2 0 0 0-.378 0l-.706 2.031a.2.2 0 0 1-.185.134l-2.149.044a.2.2 0 0 0-.117.36L6.367 8.41a.2.2 0 0 1 .071.218l-.623 2.057a.2.2 0 0 0 .306.222L7.886 9.68a.2.2 0 0 1 .228 0l1.765 1.228a.2.2 0 0 0 .306-.222l-.623-2.057a.2.2 0 0 1 .07-.218l1.714-1.298a.2.2 0 0 0-.117-.36l-2.15-.044a.2.2 0 0 1-.184-.134l-.706-2.03Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/imagejpg.svg b/icons/imagejpg.svg
new file mode 100644
index 00000000..7a6eef46
--- /dev/null
+++ b/icons/imagejpg.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FF8350" d="m4 13 3-4 2 3 1-1 2 2zm2.25-9.5a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5M9.11 2H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.91a1 1 0 0 0-.29-.7C12 4.53 10.49 3 9.8 2.29A.94.94 0 0 0 9.11 2"/></svg> \ No newline at end of file
diff --git a/icons/imagepng.svg b/icons/imagepng.svg
new file mode 100644
index 00000000..c79e9bf0
--- /dev/null
+++ b/icons/imagepng.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#9BC04B" fill-rule="evenodd" d="M3.293 13.707A1 1 0 0 1 3 13V3a1 1 0 0 1 1-1h5.11a.94.94 0 0 1 .69.29c.69.71 2.2 2.24 2.91 2.92a1 1 0 0 1 .29.7V13a1 1 0 0 1-1 1H4a1 1 0 0 1-.707-.293M4.5 10.38V3.5H9L11.5 6v6.5h-7v-2.121ZM8 4.5H5.5V7A2.5 2.5 0 0 0 8 4.5M5.5 9.379 7.298 7.58l1.774 2.956 1.428-.714V11.5h-5z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/imagewebp.svg b/icons/imagewebp.svg
new file mode 100644
index 00000000..7e60d7f5
--- /dev/null
+++ b/icons/imagewebp.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D16AE2" d="m4 13 3-4 2 3 1-1 2 2zm2.25-9.5a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5M9.11 2H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.91a1 1 0 0 0-.29-.7C12 4.53 10.49 3 9.8 2.29A.94.94 0 0 0 9.11 2"/></svg> \ No newline at end of file
diff --git a/icons/imba.svg b/icons/imba.svg
new file mode 100644
index 00000000..1c560094
--- /dev/null
+++ b/icons/imba.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#15CDC5" fill-rule="evenodd" d="M8.679 4.48c3.424 1.211 5.977 2.82 5.704 3.593a.4.4 0 0 1-.07.117c-.216.752-1.388 2.064-3.007 3.292-2.04 1.547-4.017 2.376-4.415 1.85-.36-.475.692-1.893 2.404-3.304-2.885.489-5.313.354-5.424-.302C3.76 9.073 5.983 8.15 8.844 7.66a29 29 0 0 1-1.155-.382C4.265 6.067 1.71 4.458 1.985 3.685c.273-.772 3.27-.417 6.694.795" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/info.svg b/icons/info.svg
new file mode 100644
index 00000000..5223cdcf
--- /dev/null
+++ b/icons/info.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#4BB9D1" fill-rule="evenodd" d="M8.548 13.975a6 6 0 1 0-2.607-.338l.017-.105.726-3.938H5.76l.044-.396h.946q1.628 0 2.398-.132L9.456 9zM6.97 6.208q0 .66.462 1.122t1.122.462 1.122-.462q.484-.462.484-1.122t-.484-1.122a1.5 1.5 0 0 0-1.122-.484q-.66 0-1.122.484a1.53 1.53 0 0 0-.462 1.122" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/instructions.svg b/icons/instructions.svg
new file mode 100644
index 00000000..6cd0cd0b
--- /dev/null
+++ b/icons/instructions.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M3.976 8.298c.35-.095.727-.06 1.248.201l.576.284c.135.064.223.102.296.126.1.034.15.037.404.037v1c-.246 0-.447.003-.72-.089a4 4 0 0 1-.408-.17l-.596-.293c-.36-.18-.483-.146-.538-.131-.078.021-.096.037-.247.091a1.4 1.4 0 0 1-.491.092v-1a.4.4 0 0 0 .151-.032c.04-.014.2-.082.325-.116m0-2c.35-.095.727-.06 1.248.201l.576.284c.135.064.223.102.296.126.1.034.15.037.404.037v1c-.246 0-.447.003-.72-.089a4 4 0 0 1-.408-.17l-.596-.293c-.36-.18-.483-.146-.538-.131-.078.021-.096.037-.247.091a1.4 1.4 0 0 1-.491.092v-1a.4.4 0 0 0 .151-.032c.04-.014.2-.082.325-.116m6.8.201c.52-.26.899-.296 1.248-.201.124.034.285.102.325.116a.4.4 0 0 0 .151.032v1c-.204 0-.366-.046-.491-.092-.15-.054-.169-.07-.247-.091-.055-.015-.178-.05-.538.13l-.596.294a4 4 0 0 1-.407.17c-.274.092-.475.09-.721.09v-1c.254 0 .303-.004.404-.038a3 3 0 0 0 .296-.126z"/><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M12 3c1.403 0 2.27.737 2.61 1.304l.06.111.08.158v8.677h-1.5v-.016a.3.3 0 0 0-.048-.036C13.078 13.121 12.745 13 12 13c-.617 0-.979.178-1.54.433-.452.205-.975.425-1.71.52V14h-1.5v-.048c-.735-.094-1.258-.314-1.71-.52C4.979 13.179 4.617 13 4 13c-.745 0-1.078.12-1.202.198a.3.3 0 0 0-.048.036v.016h-1.5V4.573l.08-.158.06-.111C1.73 3.737 2.598 3 4 3c.935 0 1.58.326 2.117.564C6.637 3.796 7.151 4 8 4s1.362-.204 1.883-.436C10.42 3.326 11.065 3 12 3M4 4.5c-.708 0-1.094.304-1.25.48v6.648A5.4 5.4 0 0 1 4 11.5c.983 0 1.621.322 2.16.567.336.153.663.29 1.09.368V5.453c-.742-.093-1.28-.312-1.742-.517C4.92 4.674 4.565 4.5 4 4.5m8 0c-.565 0-.92.174-1.508.436-.462.205-1 .424-1.742.517v6.982c.427-.078.754-.215 1.09-.368.539-.245 1.177-.567 2.16-.567q.712-.001 1.25.128V4.979c-.156-.175-.542-.479-1.25-.479" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/ipynb.svg b/icons/ipynb.svg
new file mode 100644
index 00000000..058a426d
--- /dev/null
+++ b/icons/ipynb.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E77827" fill-rule="evenodd" d="M13.753 9.71C12.489 10.49 10.383 11 8 11s-4.489-.51-5.753-1.29a6.003 6.003 0 0 0 11.506 0m0-3.42C12.489 5.51 10.383 5 8 5s-4.489.51-5.753 1.29a6.003 6.003 0 0 1 11.506 0" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/jar.svg b/icons/jar.svg
new file mode 100644
index 00000000..d06624e4
--- /dev/null
+++ b/icons/jar.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#CE3939" fill-rule="evenodd" d="M4 3h2.5a1 1 0 0 1 .8.4l.9 1.2A1 1 0 0 0 9 5h4a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1m3.5 6.5A1.46 1.46 0 0 0 9 11v-1a.47.47 0 0 1-.5-.5c0-.28.11-.4.35-.65A1.74 1.74 0 0 0 9.5 7.5 1.46 1.46 0 0 0 8 6v1a.47.47 0 0 1 .5.5c0 .28-.11.4-.35.65A1.74 1.74 0 0 0 7.5 9.5m-1 .5v1A1.46 1.46 0 0 1 5 9.5a1.74 1.74 0 0 1 .65-1.35c.24-.25.35-.37.35-.65h1a1.74 1.74 0 0 1-.65 1.35c-.24.25-.35.37-.35.65a.47.47 0 0 0 .5.5m5 0v1A1.46 1.46 0 0 1 10 9.5a1.74 1.74 0 0 1 .65-1.35c.24-.25.35-.37.35-.65h1a1.74 1.74 0 0 1-.65 1.35c-.24.25-.35.37-.35.65a.468.468 0 0 0 .5.5" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/java.svg b/icons/java.svg
new file mode 100644
index 00000000..881a34ff
--- /dev/null
+++ b/icons/java.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#CE3939" fill-rule="evenodd" d="M6.103 5.58A1.5 1.5 0 0 1 6 5a1.74 1.74 0 0 1 .65-1.35C6.89 3.4 7 3.28 7 3a.47.47 0 0 0-.5-.5v-1A1.46 1.46 0 0 1 8 3a1.74 1.74 0 0 1-.65 1.35C7.11 4.6 7 4.72 7 5a.47.47 0 0 0 .5.5v1a1.46 1.46 0 0 1-1.397-.92M5 5.5v1A1.46 1.46 0 0 1 3.5 5a1.74 1.74 0 0 1 .65-1.35c.24-.25.35-.37.35-.65h1a1.74 1.74 0 0 1-.65 1.35c-.24.25-.35.37-.35.65a.47.47 0 0 0 .5.5M2.5 7h9.38v.02a2.24 2.24 0 0 1 0 4.48h-.85a4.5 4.5 0 0 1-8.53-2zm8.88 3.49h.5v.01a1.25 1.25 0 0 0 0-2.5h-.5zM10 6.5v-1a.47.47 0 0 1-.5-.5c0-.28.11-.4.35-.65A1.74 1.74 0 0 0 10.5 3h-1c0 .28-.11.4-.35.65A1.74 1.74 0 0 0 8.5 5 1.46 1.46 0 0 0 10 6.5" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/jenkins.svg b/icons/jenkins.svg
new file mode 100644
index 00000000..abea0dc3
--- /dev/null
+++ b/icons/jenkins.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#F0D6B7" d="m10.765 11.927-1.208.18-1.63.185-1.054.025-1.03-.032-.785-.243-.697-.754-.543-1.54-.122-.333-.722-.242-.422-.697-.3-.997.332-.876.786-.275.633.3.3.665.365-.057.121-.153-.121-.697-.032-.876.179-1.208-.007-.69.55-.882.965-.697 1.688-.722 1.872.275 1.63 1.176.754 1.208.486.875.122 2.174-.365 1.872-.665 1.662-.626.889"/><path fill="#6D6B6D" d="m2.584 6.616.786-.275.633.3.3.665.365-.057.09-.365-.18-.696.18-1.662-.154-.908.543-.632 1.176-.934-.332-.453-1.662.818-.697.543-.39.844-.6.818-.18.965z"/><path fill="#D33833" d="M11.45 13.934a5.6 5.6 0 0 1-1.381-.191c.025-.167-.026-.326.019-.448.115-.083.3-.083.473-.102a.8.8 0 0 0-.524-.058c-.007-.115-.058-.185-.09-.274.288-.103.965-.774 1.349-.557.185.11.262.71.275 1.01.013.243-.026.486-.122.62M9.001 13.1q.002.058-.006.115c-.16.103-.416.103-.595.192.256.013.46.077.64.16-.007.096-.007.198-.013.294-.294.198-.563.498-.908.69-.166.09-.735.32-.907.275-.096-.026-.109-.147-.147-.262-.083-.243-.275-.64-.294-1.01-.02-.466-.07-1.253.434-1.157.41.077.882.262 1.195.435.199.115.307.243.601.268m.288.553c-.045-.256-.096-.326-.077-.55.684-.454.806.78.077.55"/><path fill="#231F20" d="M7.902 4.162c-.825-.192-1.234.345-1.483.9-.224-.05-.134-.357-.077-.51.147-.403.742-.947 1.228-.87.204.026.485.217.332.48m4.007.933h.039c.185.383.345.792.582 1.137-.16.371-1.19.69-1.177.039.224-.096.608-.02.806-.147-.115-.313-.275-.582-.25-1.03Zm-3.592.013c.18.325.237.664.486.907.115.109.332.243.224.55-.026.07-.211.23-.32.262-.39.115-1.304.025-.997-.467.326.013.76.211 1.004-.025-.186-.294-.518-.882-.397-1.227m3.445 3.285c-.588.377-1.246.792-2.217.696-.205-.178-.288-.581-.084-.843.103.179.039.511.333.562.55.096 1.189-.339 1.585-.485.243-.416-.02-.563-.243-.831-.454-.544-1.054-1.221-1.035-2.033.185-.134.198.205.223.262.237.55.831 1.26 1.26 1.732.108.115.28.23.3.307.057.217-.147.486-.122.633m-7.785-.396c-.185-.11-.23-.57-.447-.582-.313-.02-.256.6-.256.965-.21-.192-.249-.793-.095-1.1-.18-.089-.256.097-.358.16.134-.926 1.361-.428 1.156.557m8.156.786c-.275.524-.665 1.099-1.47 1.118-.02-.166-.032-.428 0-.53.62-.064 1.004-.377 1.47-.588m-3.86.338c.511.269 1.457.3 2.16.282.038.153.038.345.038.53-.9.038-1.962-.185-2.198-.812m-.096.499c.358.895 1.578.793 2.607.767-.044.115-.14.256-.268.3-.332.135-1.24.237-1.7-.006-.288-.153-.48-.505-.64-.71-.07-.095-.453-.345 0-.351"/><path fill="#F0D6B7" d="M10.222 12.279c-.217.14-.396.313-.607.466-.46.026-.71-.031-1.042-.293.006-.02.038-.013.038-.039.493.217 1.119-.09 1.611-.134"/><path fill="#000" fill-rule="evenodd" d="M12 10.655a4 4 0 0 1 .18-.325c.051-.086.099-.166.128-.228a5.4 5.4 0 0 0 .288-.824l.019-.065c.511-1.802.569-4.276-.166-5.752-.275-.563-1.049-1.336-1.534-1.7C9.77.898 7.655.802 6.28 1.307l-.105.038c-.346.126-.68.248-.988.429q-.218.127-.437.246c-.756.416-1.466.808-1.692 1.703-.658.294-.856 1.138-.824 2.116.002.078.022.163.042.25.028.124.057.25.035.357a.6.6 0 0 1-.107.18 1 1 0 0 0-.06.088c-.32.748-.064 1.739.3 2.276.218.32.589.607 1.068.683.02.288.09.537.224.831.022.05.061.111.104.178.083.128.18.278.199.416l.328.8c.1.098.234.257.35.393.11.129.203.238.233.259.351.25.773.458 1.195.665l.346.172c.032.237.108.55.236.965l.046.147c.123.406.262.866.73.671l.066-.035 1.209-.714.292-.248.06-.07.083-.096c.143.06.257.004.364-.05.075-.037.148-.073.225-.065a.45.45 0 0 1 .205.088l1.181.171.043.018a.7.7 0 0 1 .16.067l.308-.227c.325-.631.169-2.524-.664-2.124.054-.081.15-.155.251-.232a1.3 1.3 0 0 0 .296-.278l-.003-.007.42-.713Zm-2.758 2.8a.9.9 0 0 1-.034-.35c.684-.453.805.78.077.55-.015-.082-.03-.145-.043-.2m-2.04-1.052c.408.076.881.262 1.194.434q.077.044.143.088a.93.93 0 0 0 .458.18q-.008.059-.006.116a1 1 0 0 1-.314.105c-.1.023-.2.045-.28.087.261.012.46.07.639.16q-.005.071-.007.146-.002.076-.006.147c-.116.081-.228.177-.343.274a3.3 3.3 0 0 1-.565.417c-.16.09-.735.313-.907.274-.077-.02-.1-.102-.127-.193a5 5 0 0 0-.098-.277c-.09-.232-.202-.522-.216-.801l-.003-.05c-.02-.47-.05-1.2.437-1.107Zm-.761.537c-.314-.02-1.31-.377-1.049-.646.172.12.452.14.73.159.136.009.272.018.395.04a.5.5 0 0 1-.033.213 1 1 0 0 0-.043.234m2.173-.524c0 .014-.01.018-.02.022q-.013.004-.019.016c.34.262.588.32 1.042.294q.129-.095.255-.2c.113-.092.228-.186.352-.267-.16.015-.332.056-.51.098-.375.09-.77.184-1.1.037m2.678-.116c.185.11.262.716.275 1.01.012.25-.026.492-.122.62-.511-.019-.978-.076-1.38-.191a1 1 0 0 0 .007-.236c-.004-.078-.008-.15.012-.212.094-.068.234-.08.376-.093l.097-.01a.8.8 0 0 0-.524-.057.5.5 0 0 0-.058-.197l-.032-.077c.088-.032.213-.117.354-.213.32-.22.729-.499.995-.344M2.766 6.234c-.045-.58-.105-1.348.274-1.77.365-.409.87-.658 1.49-.71.17.433.093.907.016 1.39-.068.423-.138.854-.042 1.27q.02.083.05.177c.078.25.162.52-.114.526.006-.767-.946-1.26-1.668-.806zm.696-2.594c.37-.812 1.528-1.47 2.429-1.726.051-.013.096.02.134.064-.005.106-.086.132-.167.158l-.076.027c-.074.091-.167.159-.264.23-.093.068-.19.14-.28.237a2 2 0 0 0-.209.315c-.13.221-.274.462-.43.503a.6.6 0 0 1-.228-.002.7.7 0 0 0-.142-.01c-.152.01-.28.056-.411.103-.111.04-.224.08-.356.1Zm3.605-1.911c.997-.499 2.582-.102 3.522.428.478.27.842.753 1.18 1.2l.136.18c-.53-.16-.984.11-.9.55.447-.409 1.207 0 1.43.448.191.375.215.912.24 1.47l.01.236c.077 1.553-.287 3.151-1.067 4.276a6 6 0 0 0-.145.213c-.155.231-.308.462-.533.618-.71.499-1.783.946-2.703.64-1.168-.394-1.721-1.16-2.358-2.041L5.8 9.84c.02.511.377.927.729 1.316.307.34.678.723 1.08.882-.332-.076-.844-.102-.984.199-.78-.052-1.502-.128-1.873-.659-.287-.415-.581-1.125-.716-1.668-.032-.115-.076-.352-.064-.415.018-.091.09-.162.164-.234.119-.116.24-.233.137-.438-.162 0-.257.078-.353.156-.086.07-.172.14-.306.151-.728.07-1.24-.965-1.208-1.591.026-.53.48-1.042 1.093-.972.435.051.582.524.665.946.25.013.607-.006.729-.204-.01-.229-.064-.434-.116-.635-.058-.219-.115-.432-.108-.663.011-.288.073-.566.134-.84.114-.511.225-1.01 0-1.538.371-.837 1.458-1.502 2.263-1.904Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/jest.svg b/icons/jest.svg
new file mode 100644
index 00000000..fbcdec15
--- /dev/null
+++ b/icons/jest.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#c63d14}</style></defs><path d="M10.28 7.92a1.55 1.55 0 0 0 2.41 1.24 3.2 3.2 0 0 1 .2.75c-1.21 3-5.95 4.1-8.48 4s-2.7-3.72-.83-4.51c-.37 3.26 3 2.05 4 0a1.63 1.63 0 0 0 1.76-1.49c.32 0 .66.02.94.01M13 2l-1.53 4.37a.07.07 0 0 1-.06.06h-.16c-.05 0 0 0 0 0L9.82 3.52 8.69 5.68l-.36.72h-.16S8 6.13 8 6L6.67 2Z" class="cls-1"/><path d="M12.74 7.91a.93.93 0 1 1-.93-.91.93.93 0 0 1 .93.91m-8.02.01a.93.93 0 0 1-.91.92.92.92 0 0 1-1-.92.93.93 0 0 1 .96-.92 1 1 0 0 1 .95.92m4.02-.01A.93.93 0 1 1 7.8 7a.94.94 0 0 1 .94.91" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/jinja.svg b/icons/jinja.svg
new file mode 100644
index 00000000..0e6bd2e3
--- /dev/null
+++ b/icons/jinja.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DC3E3E" fill-rule="evenodd" d="M2 3.5v1c.762.109 1.608.175 2.5.195v1.468A15 15 0 0 1 3 6v1c.386.097.903.174 1.5.23v3.27h-1V9h-1v4h1v-1.5h1V13l1 .008v-1.5l1.5-.031v1.5L8 13v-1.5l1.5-.023v1.5l1 .023v-1.5h1V13h1V9h-1v1.5h-1V6.971c.597-.122 1.114-.278 1.5-.471v-1c-.34.114-.862.227-1.5.33V4.045c1.103-.264 2.13-.61 3-1.046V2C10 3.5 5 4 2 3.5m7.5 6.977V7.172c-1.13.118-2.87.185-4 .154v3.182l1.5-.031v-1.5L8 9v1.5zm0-6.153c-1.15.191-2.843.333-4 .371v1.52c1.186 0 2.914-.103 4-.215z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/js.svg b/icons/js.svg
new file mode 100644
index 00000000..783be0db
--- /dev/null
+++ b/icons/js.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FBB03B" d="M5.957 10.63a.55.55 0 0 0 .46-.198.9.9 0 0 0 .156-.568V6.261h1.056v3.603c.002.311-.067.62-.202.9a1.37 1.37 0 0 1-.588.595c-.285.142-.6.213-.92.208a2 2 0 0 1-.918-.19 1.5 1.5 0 0 1-.607-.531l.827-.559a.92.92 0 0 0 .708.343m4.807-4.432q.302-.002.597.063a3.4 3.4 0 0 1 1.14.486l-.432.847c-.2-.138-.42-.247-.652-.324a1.9 1.9 0 0 0-.653-.117 1.3 1.3 0 0 0-.717.153.47.47 0 0 0-.257.423.5.5 0 0 0 .128.36.9.9 0 0 0 .331.199c.138 0 .322.08.552.135h.147q.439.077.855.234c.23.097.43.252.579.45.176.268.256.584.23.901.013.317-.07.63-.24.901-.172.25-.42.442-.707.55a2.9 2.9 0 0 1-1.112.189q-.382 0-.754-.081a3 3 0 0 1-.699-.217 2.5 2.5 0 0 1-.579-.36l.47-.82c.217.17.462.3.725.388.27.09.552.135.837.135.267.014.534-.042.772-.162a.536.536 0 0 0 .25-.647.5.5 0 0 0-.094-.155.75.75 0 0 0-.322-.18l-.505-.108h-.12a5 5 0 0 1-.919-.208 1.3 1.3 0 0 1-.597-.513 1.4 1.4 0 0 1-.248-.9 1.57 1.57 0 0 1 .23-.902c.163-.25.4-.444.68-.558.346-.125.715-.18 1.084-.162M13.034 3H2.924a.93.93 0 0 0-.65.264.9.9 0 0 0-.27.637v8.107a.88.88 0 0 0 .235.696.92.92 0 0 0 .685.295h10.11a.94.94 0 0 0 .697-.263.9.9 0 0 0 .268-.683V3.946a.9.9 0 0 0-.285-.654.92.92 0 0 0-.68-.247"/></svg> \ No newline at end of file
diff --git a/icons/jsmap.svg b/icons/jsmap.svg
new file mode 100644
index 00000000..a021fdba
--- /dev/null
+++ b/icons/jsmap.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#F15A24" d="M12.001 2a2.5 2.5 0 0 0-1 .202 2.5 2.5 0 0 0-.832.58A2.36 2.36 0 0 0 9.5 4.448a.4.4 0 0 0 0 .135c.08.476.248.933.495 1.35A22.6 22.6 0 0 0 12 9s2.492-3.194 2.492-4.553c0-.649-.262-1.271-.73-1.73A2.52 2.52 0 0 0 12.001 2m0 3.671a1.26 1.26 0 0 1-.694-.202 1.23 1.23 0 0 1-.463-.547 1.2 1.2 0 0 1 .264-1.337 1.27 1.27 0 0 1 1.359-.27c.228.093.423.25.56.452a1.21 1.21 0 0 1 .12 1.148 1.2 1.2 0 0 1-.67.663 1.3 1.3 0 0 1-.476.093"/><path fill="#FBB03B" d="M9.751 7.779a.47.47 0 0 0 .13.315l.146.117c-.092-.144-.184-.28-.276-.432m-3.797 2.853a.55.55 0 0 0 .46-.198.9.9 0 0 0 .156-.567v-3.6h1.058v3.6c.002.31-.068.618-.203.9-.128.253-.334.46-.588.594-.285.141-.6.212-.92.207a2 2 0 0 1-.919-.19 1.5 1.5 0 0 1-.607-.53l.828-.558a.92.92 0 0 0 .708.342m3.025-7.605-6.031.027a.93.93 0 0 0-.65.264.9.9 0 0 0-.27.636v8.1a.88.88 0 0 0 .253.665.92.92 0 0 0 .667.28h10.113a.94.94 0 0 0 .697-.263.9.9 0 0 0 .268-.682v-4.14a17 17 0 0 1-1.36 1.89l-.065.09v.08c.013.317-.07.63-.24.9-.172.25-.42.442-.707.55a2.9 2.9 0 0 1-1.113.189 3.5 3.5 0 0 1-.753-.081 3 3 0 0 1-.7-.216 2.5 2.5 0 0 1-.578-.36l.469-.82c.217.17.463.3.726.388.27.09.552.135.836.135a1.54 1.54 0 0 0 .773-.162.6.6 0 0 0 .23-.243l-.332-.45-.294-.378-.275-.054h-.12a5 5 0 0 1-.92-.207 1.3 1.3 0 0 1-.588-.441 1.4 1.4 0 0 1-.248-.9 1.57 1.57 0 0 1 .23-.9 1.4 1.4 0 0 1 .175-.216s0-.09-.074-.126a5.2 5.2 0 0 1-.552-1.593 1.3 1.3 0 0 1 0-.297c.001-.594.16-1.177.46-1.692"/></svg> \ No newline at end of file
diff --git a/icons/json.svg b/icons/json.svg
new file mode 100644
index 00000000..3ed2f57b
--- /dev/null
+++ b/icons/json.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#cc7f00}</style></defs><path d="M3 6v.5a1 1 0 0 1-1 1h-.5V9H2a1 1 0 0 1 1 1v.5a2.94 2.94 0 0 0 3 3h1V12H6a1.47 1.47 0 0 1-1.5-1.5V6A1.47 1.47 0 0 1 6 4.5h1V3H6a2.94 2.94 0 0 0-3 3m11 1.5a1 1 0 0 1-1-1V6a2.94 2.94 0 0 0-3-3H9v1.5h1A1.47 1.47 0 0 1 11.5 6v4.5A1.47 1.47 0 0 1 10 12H9v1.5h1a2.94 2.94 0 0 0 3-3V10a1 1 0 0 1 1-1h.5V7.5Z" class="cls-1"/><circle cx="8" cy="8.25" r="1" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/jsp.svg b/icons/jsp.svg
new file mode 100644
index 00000000..e1f9d72e
--- /dev/null
+++ b/icons/jsp.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#2CB6D4" d="M5 6.5v-1a.47.47 0 0 1-.5-.5c0-.28.11-.4.35-.65A1.74 1.74 0 0 0 5.5 3h-1c0 .28-.11.4-.35.65A1.74 1.74 0 0 0 3.5 5 1.46 1.46 0 0 0 5 6.5m5 0v-1a.47.47 0 0 1-.5-.5c0-.28.11-.4.35-.65A1.74 1.74 0 0 0 10.5 3h-1c0 .28-.11.4-.35.65A1.74 1.74 0 0 0 8.5 5 1.46 1.46 0 0 0 10 6.5M6 5a1.46 1.46 0 0 0 1.5 1.5v-1A.47.47 0 0 1 7 5c0-.28.11-.4.35-.65A1.74 1.74 0 0 0 8 3a1.46 1.46 0 0 0-1.5-1.5v1A.47.47 0 0 1 7 3c0 .28-.11.4-.35.65A1.74 1.74 0 0 0 6 5"/><path fill="#2CB6D4" fill-rule="evenodd" d="M2.5 7h9.38v.02a2.24 2.24 0 0 1 0 4.48h-.85a4.5 4.5 0 0 1-8.53-2zm8.88 3.49h.5v.01a1.25 1.25 0 0 0 0-2.5h-.5zM4 9.556v.888L6 12v-1.2L5 10l1-.8V8zM8 8v1.2l1 .8-1 .8V12l2-1.556v-.888z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/julia.svg b/icons/julia.svg
new file mode 100644
index 00000000..5e960e41
--- /dev/null
+++ b/icons/julia.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#BE7BDD" d="M9 11a3 3 0 1 0 6 0 3 3 0 0 0-6 0"/><path fill="#DF665F" d="M1 11a3 3 0 1 0 6 0 3 3 0 0 0-6 0"/><path fill="#66C155" d="M5 4a3 3 0 1 0 6 0 3 3 0 0 0-6 0"/></svg> \ No newline at end of file
diff --git a/icons/karma.svg b/icons/karma.svg
new file mode 100644
index 00000000..2e3b7f7f
--- /dev/null
+++ b/icons/karma.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#30D3BE" fill-rule="evenodd" d="M6 3h3v2.333L11 3h3.5l-3.697 4.55L14.5 13H11L9 9.857V13H7.75L6 6.235zm-.895 4.458L6.5 13 4 10.5l-1.421 1.333L1 6l2.526 2.917z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/keep.svg b/icons/keep.svg
new file mode 100644
index 00000000..d19660cc
--- /dev/null
+++ b/icons/keep.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M8 5.5c.5.5 2.553.5 3 .5v2.5C11 10 8.833 11 8 11z"/><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M8.75 2c0 .213.07.55.259.812.16.223.435.438.991.438h3.75V8c0 1.197-.527 2.615-1.479 3.735C11.306 12.873 9.858 13.75 8 13.75s-3.305-.877-4.271-2.015C2.777 10.615 2.25 9.197 2.25 8V3.25H6c.556 0 .83-.215.991-.438.189-.262.259-.599.259-.812zM8 3.94c-.447.478-1.106.81-2 .81H3.75V8c0 .803.373 1.885 1.121 2.765.733.862 1.786 1.485 3.129 1.485s2.396-.623 3.129-1.485c.748-.88 1.121-1.962 1.121-2.765V4.75H10c-.894 0-1.553-.332-2-.81" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/key.svg b/icons/key.svg
new file mode 100644
index 00000000..0b481a39
--- /dev/null
+++ b/icons/key.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E4D26F" fill-rule="evenodd" d="M14 6a4 4 0 0 1-6 3.465V11H6v1H5v2H2v-2l4.165-4.86A4 4 0 1 1 14 6m-2-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/knex.svg b/icons/knex.svg
new file mode 100644
index 00000000..2f352eaa
--- /dev/null
+++ b/icons/knex.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#F57637" d="M14.922 8.767 13.2 7.935l1.632-.764c.127-.06.201-.216.114-.362l-.17-.196c-.11-.12-.228-.207-.373-.15l-1.213.457a.13.13 0 0 1-.082.003l-.47-.133a.1.1 0 0 0-.098.025l-.502.476a4.1 4.1 0 0 0-.752-1.743l.734-.005c.032 0 .06-.018.076-.046l.26-.471a.13.13 0 0 1 .06-.055l1.202-.512c.074-.032.12-.185.105-.284l-.04-.359c-.031-.103-.176-.194-.245-.168l-1.807.63.614-1.695a.25.25 0 0 0-.175-.336l-.26-.019c-.161-.007-.307.015-.37.158l-.533 1.18a.13.13 0 0 1-.056.062l-.426.238a.1.1 0 0 0-.053.086l-.018.693a4.1 4.1 0 0 0-1.764-.701l.515-.524a.09.09 0 0 0 .022-.085l-.15-.517a.13.13 0 0 1 .005-.082l.487-1.212c.03-.074-.046-.215-.127-.275l-.281-.226c-.096-.05-.262-.012-.293.055L7.935 2.8 7.17 1.17c-.06-.127-.216-.201-.362-.114l-.196.17c-.12.11-.207.228-.15.373L6.92 2.81q.015.04.003.082l-.133.47c-.01.035 0 .072.025.098l.476.503a4.1 4.1 0 0 0-1.743.751l-.005-.734a.09.09 0 0 0-.046-.076l-.471-.26a.13.13 0 0 1-.055-.06L4.46 2.382c-.032-.074-.185-.12-.284-.105l-.359.04c-.103.031-.194.176-.168.245l.63 1.807-1.694-.614c-.132-.048-.295.01-.337.175l-.019.26c-.007.161.015.307.158.369l1.18.534a.13.13 0 0 1 .062.056l.238.426a.1.1 0 0 0 .086.053l.693.018a4.1 4.1 0 0 0-.701 1.764l-.524-.515a.09.09 0 0 0-.085-.022l-.517.15a.13.13 0 0 1-.082-.005l-1.212-.487c-.074-.03-.215.047-.275.127l-.226.281c-.05.096-.012.262.055.293l1.723.832-1.632.764c-.127.06-.201.216-.114.362l.17.196c.11.12.228.207.373.15L2.81 9.08a.13.13 0 0 1 .082-.003l.47.133c.035.01.072 0 .098-.025l.503-.476a4.1 4.1 0 0 0 .751 1.743l-.734.005a.09.09 0 0 0-.076.046l-.26.471a.13.13 0 0 1-.06.055l-1.202.512c-.074.032-.12.185-.105.284l.04.359c.031.103.176.194.245.168l1.807-.63-.614 1.694c-.048.132.01.295.175.337l.26.019c.161.007.307-.015.369-.158l.534-1.18a.13.13 0 0 1 .056-.062l.426-.238a.1.1 0 0 0 .053-.086l.018-.693a4.1 4.1 0 0 0 1.764.701l-.515.524a.09.09 0 0 0-.022.085l.15.517a.13.13 0 0 1-.005.082l-.487 1.212c-.03.074.046.215.127.275l.281.226c.096.05.262.012.293-.055l.832-1.723.764 1.632c.06.127.216.201.362.114l.196-.17c.12-.11.207-.228.15-.373L9.08 13.19a.13.13 0 0 1-.003-.082l.133-.47a.1.1 0 0 0-.025-.098l-.476-.503a4.1 4.1 0 0 0 1.743-.751l.005.734c0 .032.018.06.046.076l.471.26a.13.13 0 0 1 .055.06l.512 1.202c.032.074.185.12.284.105l.359-.04c.103-.031.194-.176.168-.245l-.63-1.807 1.694.614c.132.048.295-.01.337-.175l.019-.26c.007-.161-.015-.307-.158-.369l-1.18-.534a.13.13 0 0 1-.062-.056l-.238-.426a.1.1 0 0 0-.086-.053l-.693-.018a4.1 4.1 0 0 0 .701-1.764l.524.515c.022.023.055.03.085.022l.517-.15a.13.13 0 0 1 .082.005l1.212.487c.074.03.215-.047.275-.127l.226-.281c.05-.096.012-.262-.055-.293ZM10.94 7.543h-.872a2.1 2.1 0 0 0-.353-.785l.611-.61c.316.395.533.872.614 1.395m-1.8-1.328a2.1 2.1 0 0 0-.805-.306v-.863a2.96 2.96 0 0 1 1.42.553zM9.031 8a1.032 1.032 0 1 1-2.064 0 1.032 1.032 0 0 1 2.064 0m-1.49-2.939v.872a2.1 2.1 0 0 0-.784.353l-.61-.611a2.96 2.96 0 0 1 1.395-.614Zm-1.327 1.8c-.153.24-.26.513-.306.805h-.863a2.96 2.96 0 0 1 .553-1.42zM5.061 8.458h.872c.063.288.185.554.353.785l-.611.61a2.96 2.96 0 0 1-.614-1.395m1.8 1.328c.24.153.513.26.805.306v.863a2.96 2.96 0 0 1-1.42-.553zm1.596 1.154v-.872c.288-.063.554-.185.785-.353l.61.611a2.96 2.96 0 0 1-1.395.614m1.328-1.8c.153-.24.26-.513.306-.805h.864a2.96 2.96 0 0 1-.554 1.42z"/></svg> \ No newline at end of file
diff --git a/icons/knip.svg b/icons/knip.svg
new file mode 100644
index 00000000..858e6e72
--- /dev/null
+++ b/icons/knip.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#E86F12" fill-rule="evenodd" d="M9.05 3.312c.467-.808 1.885-2.144 3.825-1.024L9.299 7.011 15 6.333C15 8.466 13.134 9 12.2 9H7.794l-.923 1.22q.256.067.498.205a2.1 2.1 0 1 1-2.869.768L5.767 9H3.1C1.94 9 1 8.104 1 7s.94-2 2.1-2 2.1.895 2.1 2q-.002.264-.071.508l1.61-.193zm-2.381 8.326a.7.7 0 1 0-.7 1.212.7.7 0 0 0 .7-1.212m-3.57-5.305c-.386 0-.699.299-.699.667s.313.667.7.667.7-.299.7-.667-.314-.667-.7-.667" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/kotlin.svg b/icons/kotlin.svg
new file mode 100644
index 00000000..bf07c51c
--- /dev/null
+++ b/icons/kotlin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="url(#a)" d="M2 3v5l6-6H3a1 1 0 0 0-1 1"/><path fill="url(#b)" fill-rule="evenodd" d="M8 2 2 8v5c0 .276.112.526.293.707L4 12l4-4 5.146-5.146A.5.5 0 0 0 12.793 2z" clip-rule="evenodd"/><path fill="url(#c)" fill-rule="evenodd" d="M2.293 13.707A1 1 0 0 0 3 14h9.793a.5.5 0 0 0 .353-.854L8 8l-4 4z" clip-rule="evenodd"/><defs><linearGradient id="a" x1="2" x2="8" y1="7.5" y2="2" gradientUnits="userSpaceOnUse"><stop stop-color="#2A82B5"/><stop offset="1" stop-color="#32ADF4"/></linearGradient><linearGradient id="b" x1="13" x2="2" y1="2" y2="13" gradientUnits="userSpaceOnUse"><stop stop-color="#F88909"/><stop offset="1" stop-color="#C858B7"/></linearGradient><linearGradient id="c" x1="10.5" x2="2.5" y1="10.5" y2="14" gradientUnits="userSpaceOnUse"><stop stop-color="#7970E2"/><stop offset="1" stop-color="#5C52CD"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/icons/kotlins.svg b/icons/kotlins.svg
new file mode 100644
index 00000000..642a2700
--- /dev/null
+++ b/icons/kotlins.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="url(#a)" fill-rule="evenodd" d="M2 3v10a.997.997 0 0 0 1 1h9.793a.5.5 0 0 0 .353-.854L8 8l5.146-5.146A.5.5 0 0 0 12.793 2H3a1 1 0 0 0-1 1" clip-rule="evenodd"/><defs><linearGradient id="a" x1="2.5" x2="12" y1="2.5" y2="14.5" gradientUnits="userSpaceOnUse"><stop stop-color="#95A6FF"/><stop offset="1" stop-color="#6938D0"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/icons/krita.svg b/icons/krita.svg
new file mode 100644
index 00000000..f0e625b9
--- /dev/null
+++ b/icons/krita.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="url(#a)" fill-rule="evenodd" d="M3.71 3.805a6 6 0 1 0 2.22-1.438l.023.021c1.285 1.198 2.513 2.342 4.19 4.62.438-.046.897.109 1.233.503.874 1.026 1.093 3.848-1.094 4.489.547-.641 0-1.924-.546-2.565-.293-.344-1.03-1.21-.607-1.845C7.65 6.78 5.186 5.068 3.71 3.805m5.211 5.704A3.997 3.997 0 0 1 3.62 8.14a4.418 4.418 0 0 0 5.664 4.182c.143-.335.216-.759.216-1.322 0-.377-.262-.882-.544-1.424z" clip-rule="evenodd"/><defs><radialGradient id="a" cx="0" cy="0" r="1" gradientTransform="matrix(0 8.5 -8.5 0 8 5.5)" gradientUnits="userSpaceOnUse"><stop offset=".326" stop-color="#69DEAD"/><stop offset=".696" stop-color="#69B4F9"/><stop offset="1" stop-color="#2E99E7"/></radialGradient></defs></svg> \ No newline at end of file
diff --git a/icons/latex.svg b/icons/latex.svg
new file mode 100644
index 00000000..6ad45d9a
--- /dev/null
+++ b/icons/latex.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0B9E9E" fill-rule="evenodd" d="M3.054 2.803c.52-.347 1.874.419 3.086 1.46-.48-1.993.054-2.441 2.095 1.13a20 20 0 0 0 1.24 1.893 2 2 0 0 0 .157-.168q.072-.083.157-.17a6 6 0 0 0 .374-.434c.418-.516.907-1.121 1.699-1.121.884 0 1.296.524 1.461 1.013l1.58.395c.152.038.152.255 0 .294-.721.187-1.3.359-1.834.561q-.094.04-.19.077l-.124.048-.17.073c-.386.18-.723.453-.723 1.166 0 3.178-1.652 3.593-4.957 4.422a62 62 0 0 0-2.814.758c-.346-.345.24-.611.662-.803.211-.096.382-.174.374-.233-.02-.144-.344-.198-.638-.247-.334-.056-.63-.105-.398-.271 1.18 0 3.108-1.036 3.108-2.59-.518.518-2.674 1.554-3.71 1.554-.04-.02.062-.137.195-.289.216-.246.513-.584.407-.747-.05-.076-.508-.036-.981.005-.51.044-1.037.09-1.092-.005-.05-.089.374-.312.793-.532.406-.213.805-.423.761-.504-.051-.097-.493-.162-.956-.231C2.103 9.23 1.563 9.15 1.5 9.02c-.054-.114.336-.297.74-.486.43-.201.876-.41.814-.55-.078-.178-.456-.224-.82-.269-.358-.043-.702-.085-.734-.25-.08-.417.63-.435 1.116-.448.254-.006.447-.011.438-.07-.024-.169-.398-.467-.773-.767-.387-.308-.774-.618-.78-.787-.012-.294.452-.196.917-.098.232.05.464.098.636.098.035-.195-.267-.5-.558-.796-.309-.313-.606-.614-.478-.758.202-.226 1.554.518 1.554.518.073-.078-.092-.413-.26-.754-.178-.363-.36-.732-.258-.8m8.808 4.144a.518.518 0 1 0 0-1.036.518.518 0 0 0 0 1.036" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/launch.svg b/icons/launch.svg
new file mode 100644
index 00000000..4750ba6a
--- /dev/null
+++ b/icons/launch.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#3EAAF3" d="M12.5 7.134a1 1 0 0 1 0 1.732L5 13.196a1 1 0 0 1-1.5-.866V3.67A1 1 0 0 1 5 2.804z"/></svg> \ No newline at end of file
diff --git a/icons/lazarusproject.svg b/icons/lazarusproject.svg
new file mode 100644
index 00000000..4d78c0d5
--- /dev/null
+++ b/icons/lazarusproject.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#A459FF" d="M8.085 8.45c1.824-1.134 2.11.236 3.25.218q.242-.063.475-.08c.881-.056 1.885.935 1.69 1.912-.5 2.5-3.658 3.825-5.5 4-1.574.15-2.494-1.504-1.665-2.51.125-.152.244-.287.362-.416.818-1.185-.483-1.962 1.388-3.125m-5.827-.041c-.767.443.115 2.006.742 3.092.836 1.448 2.031 1.027 2.973 0S5.096 9.78 4.63 8.97c-.627-1.085-1.604-1.005-2.37-.562M4 4.475C3.233 4.918 3.373 5.914 4 7c.836 1.448 2.496 1.975 2.996.475.44-1.322-.533-1.19-1-2-.628-1.086-1.229-1.443-1.996-1M6.5 2.5c.695-.695 2.941.843 3.5 1.5.852 1.002-.5 2.5-1.65 2.42-1.542-.106-.912-1.122-1.645-1.855-.984-.983-.9-1.37-.205-2.065m5.398 1.05c.767-.443 1.873.914 2.5 2 .836 1.448-.557 2.827-1.898 2.45-1.602-.45-.635-1.64-1.102-2.45-.627-1.086-.267-1.557.5-2"/></svg> \ No newline at end of file
diff --git a/icons/less.svg b/icons/less.svg
new file mode 100644
index 00000000..d681ba51
--- /dev/null
+++ b/icons/less.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><path d="M14.49 7A1.49 1.49 0 0 1 13 5.5v-1c0-2-2.5-2-2.5-2V4a1 1 0 0 1 1 1v1A2.22 2.22 0 0 0 13 8a2.22 2.22 0 0 0-1.52 2v1a1 1 0 0 1-1 1v1.5c2.5 0 2.5-2 2.5-2V10c0-1 1.52-1 1.52-1Zm-6 2.5v-7h-3C3 2.51 3 4.5 3 4.5V6c0 1-1.5 1-1.5 1v2A1.49 1.49 0 0 1 3 10.5v1c0 2 2.5 2 2.5 2V12a1 1 0 0 1-1-1v-1A2.22 2.22 0 0 0 3 8a2.22 2.22 0 0 0 1.52-2V5a1 1 0 0 1 1-1H7v5.5c0 2 2.5 2 2.5 2V10c-1.01 0-1.01-.5-1.01-.5" style="fill:#39c"/></svg> \ No newline at end of file
diff --git a/icons/license.svg b/icons/license.svg
new file mode 100644
index 00000000..9023fd64
--- /dev/null
+++ b/icons/license.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#797cff}</style></defs><path d="m13.38 7.21-1-1.4.62-1.63-1.58-.66-.43-1.66-1.68.3L8 1 6.74 2.16l-1.68-.3-.43 1.66-1.58.66.53 1.63-1 1.4 1.36 1.08V10l1.42.16V15L8 12.85 10.69 15v-4.84l1.42-.16V8.29ZM11 9l-1.24.14-.64 1.07L8 9.7l-1.12.55-.64-1.07L5 9V7.79L4.07 7l.7-1-.39-1.21 1.16-.49.31-1.2 1.23.21.92-.85.92.85 1.23-.21.31 1.2 1.16.49L11.23 6l.7 1-1 .78Z" class="cls-1"/><path d="M7.43 7.02 6.29 5.87l-.76.76 1.9 1.91 3.04-3.05-.76-.76z" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/light_editorconfig.svg b/icons/light_editorconfig.svg
new file mode 100644
index 00000000..6c593863
--- /dev/null
+++ b/icons/light_editorconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><g style="opacity:.45"><path d="M9.12 7.64C7.74 6.93 5.06 8 6.86 9.35 9 11 12.41 8.82 9.12 7.64m.5 1.2c-.38.57-2.34.23-2.5-.5.34-.5 2.37-.04 2.5.5"/><path d="M14.78 5.66c-.94-1.4-2.25-1.06-3.57 0a3.21 3.21 0 0 0-2.13-1.85c1.67-3.73-3.67-3.44-4 .35A4.4 4.4 0 0 0 4 5.5c-2.18-.06-2.43 1.4-1.16 2.3-3.66 8.68 6.34 6.69 8.8 1.71 2.08-.32 4.55-1.41 3.14-3.85m-7-3.78c1.12.14 1.1.44.51 1.77a7.6 7.6 0 0 0-2.29.2c.26-.94.81-1.97 1.82-1.97Zm-5 4.67C3 6 5.55 6.41 5.6 7.41c-.06.59-3.09-.13-2.78-.86Zm5.71 5.2c-4.25 2.62-7 1.55-5-3.64C6.22 9.22 7.63 6.75 4.7 5.67c4.3-4.5 9.78 3.04 3.83 6.08Zm5.82-4.37a3.5 3.5 0 0 1-2.46 1.33 4 4 0 0 0-.09-1.58.4.4 0 0 0 0-.1c-.07-.23-.15-.44-.24-.66 1.39-1.56 3.29-.72 2.83 1.01Z"/></g></svg> \ No newline at end of file
diff --git a/icons/liquid.svg b/icons/liquid.svg
new file mode 100644
index 00000000..0877f202
--- /dev/null
+++ b/icons/liquid.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#45C2DE" fill-rule="evenodd" d="M12 2c-4 0-8.9 4.5-8.5 8.5.45 4.5 6.5 4 8 2 .848-1.131 1-3-.5-5-2.58-3.44.5-5.5 1-5.5M5 9c-.5 1-.413 2.862 1.5 3.5 3 1-.5-5-1.5-3.5" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/llvm.svg b/icons/llvm.svg
new file mode 100644
index 00000000..a8961084
--- /dev/null
+++ b/icons/llvm.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#CF3954" d="M8 1a7 7 0 1 0 3.677 12.957c-.069-.04-.072-.066.143-.114l.056-.013a7 7 0 0 0 .57-.424 1 1 0 0 0-.175-.103c-.104-.054-.156-.081.096-.138q.155-.037.314-.045.115-.193.22-.389a1 1 0 0 0-.082-.049l-.049-.026c-.104-.054-.156-.08.099-.137q.081-.02.164-.03a10 10 0 0 0 .208-.43l-.09-.04-.052-.02c-.111-.042-.166-.062.076-.146q.087-.03.179-.054a7 7 0 0 0 .136-.35l.012-.037-.049-.01c-.117-.026-.175-.038.049-.157l.055-.027q.065-.247.114-.495c-.087-.004-.114-.022.026-.14.335-1.952-.125-3.89-1.182-5.182-.76-.882-1.85-1.468-3.27-1.533-.74-.034-1.336.062-1.803.247l-.016.01.01-.008c-.979.393-1.373 1.193-1.287 2.05a6.2 6.2 0 0 1 1.9 1.28c1.275 1.269 1.073 1.812.966 1.957l-.008.018v-.007l-.033.036.006.056v.018c.023.246.123.481.29.679q.105.112.226.21.118.09.218.161c.086.062.16.114.208.16.047.042.078.082.078.115 0 .129-.853.818-1.172.796a.7.7 0 0 1-.173-.04q-.108.03-.222.04.054-.044.103-.09a2 2 0 0 1-.146-.082c-.131.065-.378.167-.625.158q.239-.123.413-.312a3.8 3.8 0 0 1-.69-.75c-.292-.408-.488-.452-.488-.452s-.44.064-.267.86c.09.425.25.733.366.955.1.195.166.322.121.403-.098.172-.586.28-.952.214-.366-.064-.806-.149-.586-.58.181-.355.181-1.042-.055-1.383a.7.7 0 0 0-.194-.17c-.185-.088-1.054-.534-1.205-.723-.19-.234-.174-1.248.021-1.484a5 5 0 0 1-.22-1.098A6 6 0 0 1 4 6.513v-.012c-.012-1.189.494-2.154 1.324-2.853.035-.234.09-.439.144-.582.146-.395.144-.291.14-.101a4 4 0 0 0 .015.455q.105-.076.215-.143.095-.386.3-.737c.158-.251.155-.213.145-.075-.004.054-.01.124-.007.198a.45.45 0 0 0 .118.314q.092-.043.19-.083c.05-.223.14-.437.268-.634.128-.191.137-.121.159.046l.006.047a.48.48 0 0 0 .176.323l.198-.054c.037-.133.25-.38.452-.543.07-.057.098-.083.105-.078.01.007-.017.072-.029.196-.008.077.035.162.07.232l.029.058.097-.014-.093.003s.062-.012.165-.027q.11-.177.292-.303c.198-.15.193-.1.183.006a1 1 0 0 0 .002.248q.136-.008.3-.013.056-.05.117-.098c.228-.172.222-.12.179.059q-.005.018-.004.04l.257.003c1.477.043 3.148.671 4.422 1.896A7 7 0 0 0 8 1"/></svg> \ No newline at end of file
diff --git a/icons/lock.svg b/icons/lock.svg
new file mode 100644
index 00000000..a06c1fa1
--- /dev/null
+++ b/icons/lock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M8 1.75a3.75 3.75 0 0 1 3.75 3.75v1H12l.102.005A1 1 0 0 1 13 7.5V13l-.005.102a1 1 0 0 1-.893.893L12 14H4l-.103-.005a1 1 0 0 1-.892-.893L3 13V7.5a1 1 0 0 1 .897-.995L4 6.5h.25v-1A3.75 3.75 0 0 1 8 1.75M4.5 12.5h7V8h-7zM8 9a1 1 0 0 1 .728 1.684L9 11.5H7l.271-.816A1 1 0 0 1 8 9m0-5.75A2.25 2.25 0 0 0 5.75 5.5v1h4.5v-1A2.25 2.25 0 0 0 8 3.25"/></svg> \ No newline at end of file
diff --git a/icons/log.svg b/icons/log.svg
new file mode 100644
index 00000000..36fd8ba0
--- /dev/null
+++ b/icons/log.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#CF5757" d="M7 5.5a1 1 0 0 1 2 0v2a1 1 0 0 1-2 0zm2 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/><path fill="#CF5757" fill-rule="evenodd" d="M9.79 2.29a1 1 0 0 0-.7-.29H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.91a1 1 0 0 0-.3-.7C12 4.53 10.47 3 9.79 2.29m1.71 3.845C10.8 5.45 9.57 4.219 8.873 3.5H4.5v9h7z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/lua.svg b/icons/lua.svg
new file mode 100644
index 00000000..28cf57d4
--- /dev/null
+++ b/icons/lua.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><path d="M7 4.07a5 5 0 1 0 5 5 5 5 0 0 0-5-5M8.62 9a1.66 1.66 0 0 1 0-3.31 1.66 1.66 0 1 1 0 3.31m3.72-7A1.66 1.66 0 1 0 14 3.66 1.65 1.65 0 0 0 12.34 2" style="fill:#5067ef"/></svg> \ No newline at end of file
diff --git a/icons/m.svg b/icons/m.svg
new file mode 100644
index 00000000..dd566fe3
--- /dev/null
+++ b/icons/m.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#6A83FF" fill-rule="evenodd" d="M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2m0 10.5A4.5 4.5 0 1 1 12.5 8 4.49 4.49 0 0 1 8 12.5m.06-2.75a1.75 1.75 0 1 1 .67-3.368c.21.09.402.221.56.388l1.25-1.25a3.5 3.5 0 1 0 0 5L9.29 9.23a1.67 1.67 0 0 1-1.23.52M11.5 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/makefile.svg b/icons/makefile.svg
new file mode 100644
index 00000000..3803c1a4
--- /dev/null
+++ b/icons/makefile.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M2 3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6h-2V4h-2L8 6.5 6 4H4v8h2V7l2 2.5L10 7v2.275c-.534.317-1 .952-1 2.125V14H3a1 1 0 0 1-1-1zm9.52 6.91a2 2 0 0 1 .708 0l.234.678.63-.32q.153.103.28.235.132.127.235.28l-.316.634.677.212c.043.242.043.489 0 .73l-.677.234.32.63c-.14.2-.315.375-.514.515l-.635-.316-.212.677a2.1 2.1 0 0 1-.73 0l-.234-.677-.634.32c-.2-.14-.374-.315-.514-.515l.319-.634-.677-.234a2.1 2.1 0 0 1 0-.708l.677-.234-.32-.634q.103-.153.235-.28.127-.132.28-.234l.634.319z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/manifest.svg b/icons/manifest.svg
new file mode 100644
index 00000000..40975588
--- /dev/null
+++ b/icons/manifest.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#BA3E72" fill-rule="evenodd" d="M12.5 4.5H14c0-1.846-.852-2-2.5-2H6c-1.099 0-2 .901-2 2V11H2c0 .923 0 2.5 1.5 2.54H11A1.57 1.57 0 0 0 12.5 12zm-7 .5v6H9c0 .923 1.077 1 2 1V4H6.5c-1 0-1 .538-1 1" clip-rule="evenodd"/><path fill="#BA3E72" d="M7.5 5c-.69 0-1 0-1 .8V8l3-3z"/></svg> \ No newline at end of file
diff --git a/icons/markdown.svg b/icons/markdown.svg
new file mode 100644
index 00000000..4e2a4ea6
--- /dev/null
+++ b/icons/markdown.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#1CAED8" fill-rule="evenodd" d="M2 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm1 2v6h1.305V7.546l.839 2.271h.677l.874-2.306V11H8V5H6.583L5.525 7.717 4.488 5zm6 3 2.5 3L14 8h-2V5h-1v3z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/markdownx.svg b/icons/markdownx.svg
new file mode 100644
index 00000000..95c6dd9c
--- /dev/null
+++ b/icons/markdownx.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DFB13B" fill-rule="evenodd" d="M2 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm1 8V5h1.488l1.037 2.717L6.583 5H8v6H6.695V7.511l-.874 2.306h-.677l-.84-2.271V11zm5.833 0h1.39l.694-1.5.694 1.5H13l-1.389-3L13 5h-1.389l-.694 1.5-.695-1.5H8.833l1.39 3z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/maven.svg b/icons/maven.svg
new file mode 100644
index 00000000..e5382ff4
--- /dev/null
+++ b/icons/maven.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="url(#a)" fill-rule="evenodd" d="M12.034 1c-.09.718-.571 1.086-1.333 1.668C9.063 3.919 6.129 6.162 3 15c.268-.14.49-.223.682-.27.382-1.04 1.097-2.295 2.35-3.25.515-.394 2.07-.518 3.16-.115q.423-.46.807-.943c-.68-.334-1.417-.501-2.679-.5 0-.437 1.711-.544 3.316-.354q.466-.667.85-1.348c-.891-.14-1.968-.146-2.99-.133-.452-.46 1.687-.914 3.502-.853.23-.487.424-.97.578-1.44a5.8 5.8 0 0 0-3.263.122c.844-.578 2.016-1.062 3.476-.863q.153-.626.199-1.197c-.79.014-1.634.15-2.582.391A7.3 7.3 0 0 1 13 3.146c-.048-.915-.355-1.666-.966-2.146M7.503 8.101l.485-.007.497-.007-.98.011z" clip-rule="evenodd"/><path fill="url(#b)" d="M8.588 3.612c-.5.314-2.091 2.015-4.458 6.31-.839-2.308.604-4.265 4.458-6.31"/><defs><radialGradient id="a" cx="0" cy="0" r="1" gradientTransform="matrix(-8.658 9.297 -6.7482 -6.2844 12.47 2.866)" gradientUnits="userSpaceOnUse"><stop stop-color="#F7A668"/><stop offset="1" stop-color="#8F2C99"/></radialGradient><radialGradient id="b" cx="0" cy="0" r="1" gradientTransform="matrix(-8.658 9.297 -6.7482 -6.2844 12.47 2.866)" gradientUnits="userSpaceOnUse"><stop stop-color="#F7A668"/><stop offset="1" stop-color="#8F2C99"/></radialGradient></defs></svg> \ No newline at end of file
diff --git a/icons/mermaid.svg b/icons/mermaid.svg
new file mode 100644
index 00000000..07ec57e4
--- /dev/null
+++ b/icons/mermaid.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#E23063" d="M13.995 3.006c-1.297-.061-2.577.338-3.656 1.141C9.261 4.95 8.442 6.115 8 7.471c-.442-1.356-1.261-2.52-2.34-3.324s-2.358-1.202-3.655-1.14a7.4 7.4 0 0 0 .644 3.329A6.6 6.6 0 0 0 4.665 8.9c.44.335.8.785 1.047 1.31.248.526.377 1.11.376 1.703V14h3.825v-2.087a4 4 0 0 1 .375-1.702A3.55 3.55 0 0 1 11.335 8.9a6.6 6.6 0 0 0 2.017-2.564 7.4 7.4 0 0 0 .643-3.33"/><path fill="#E23063" d="M5 11.994a2.26 2.26 0 0 0-.245-1.035 2.2 2.2 0 0 0-.687-.798A7.7 7.7 0 0 1 2 8v3a3 3 0 0 0 3 3zm6 0a2.25 2.25 0 0 1 .245-1.035c.162-.32.398-.594.687-.798A7.7 7.7 0 0 0 14 8v3a3 3 0 0 1-3 3z"/></svg> \ No newline at end of file
diff --git a/icons/mesh.svg b/icons/mesh.svg
new file mode 100644
index 00000000..aa449257
--- /dev/null
+++ b/icons/mesh.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#60BCD9" fill-rule="evenodd" d="M13 3H3v10h10zM3 2c-.552 0-1 .537-1 1.2v9.6c0 .663.448 1.2 1 1.2h10c.552 0 1-.537 1-1.2V3.2c0-.663-.448-1.2-1-1.2z" clip-rule="evenodd"/><path fill="#60BCD9" fill-rule="evenodd" d="M9 3c-.791 0-1.395.526-1.51 1.098l-.002.012-.003.011a2.8 2.8 0 0 1-.875 1.41c-.525.445-1.273.694-2.231.454-.652-.163-.948.018-1.103.195C3.082 6.4 3 6.74 3 7H2c0-.407.118-1.017.524-1.48.445-.506 1.15-.742 2.097-.505.642.16 1.06-.008 1.344-.247.303-.256.481-.624.547-.88C6.737 2.8 7.796 2 9 2z" clip-rule="evenodd"/><path fill="#60BCD9" fill-rule="evenodd" d="M12.1 3.427c-.046.088-.1.252-.1.573 0 .443-.19.776-.486 1.003-.263.202-.593.308-.867.383a15 15 0 0 1-.34.088c-.162.04-.308.076-.464.126-.243.079-.397.16-.49.254-.1.1-.167.212-.287.413q-.065.111-.16.266a7 7 0 0 1-1.052 1.32c-.233.233-.47.403-.732.517a2.3 2.3 0 0 1-.79.176 8 8 0 0 1-.865-.016c-.285-.014-.599-.03-.967-.03-.637 0-.987.254-1.194.542A1.74 1.74 0 0 0 3 10H2c0-.413.12-1.022.494-1.542C2.887 7.912 3.537 7.5 4.5 7.5c.394 0 .73.017 1.014.031l.044.003c.3.015.523.025.717.013.186-.01.324-.04.449-.094a1.4 1.4 0 0 0 .422-.307c.467-.466.723-.837.909-1.139l.105-.175c.138-.233.29-.488.486-.686.261-.26.597-.403.89-.497.182-.06.397-.113.586-.16l.261-.067c.263-.072.426-.138.521-.212.063-.048.096-.094.096-.21 0-.43.071-.765.213-1.036.144-.276.337-.44.487-.551l.117-.087a.6.6 0 0 0 .136-.115C11.966 2.195 12 2.153 12 2h1c0 .344-.09.616-.266.836-.123.153-.29.274-.388.343l-.046.034a.6.6 0 0 0-.2.214" clip-rule="evenodd"/><path fill="#60BCD9" fill-rule="evenodd" d="M12.57 6.715c-.03.041-.07.122-.07.285 0 .577-.145 1.102-.521 1.479-.377.376-.902.521-1.479.521-.407 0-.666.098-.875.265-.227.182-.438.479-.678.959-.156.311-.364.57-.642.76a2.04 2.04 0 0 1-.937.325c-.662.074-1.49-.074-2.49-.324-.641-.16-1.06.008-1.343.247-.307.26-.486.634-.55.89l-.97-.243c.103-.411.373-.987.875-1.41.525-.445 1.273-.694 2.231-.454 1.002.25 1.673.352 2.136.3.22-.024.372-.081.485-.158a.95.95 0 0 0 .31-.38c.261-.52.55-.974.948-1.292.416-.333.907-.485 1.5-.485.423 0 .648-.105.771-.229.124-.123.229-.348.229-.771 0-.337.086-.631.259-.87.17-.237.398-.381.618-.47.403-.16.86-.16 1.1-.16h.023v1c-.267 0-.543.006-.752.09a.4.4 0 0 0-.179.125Zm-.824 3.895c-.382.096-.624.265-.799.614a1 1 0 0 0-.032.098l-.026.103-.03.123c-.046.178-.12.421-.282.655-.355.51-.996.797-2.077.797-1.396 0-1.493.511-1.5.51v-.01H6c0-.762.806-1.5 2.5-1.5.919 0 1.166-.239 1.256-.368.059-.085.097-.189.134-.334l.021-.083.038-.152a1.5 1.5 0 0 1 .104-.287c.325-.65.833-.982 1.45-1.136.561-.14 1.238-.14 1.949-.14h.048v1c-.772 0-1.327.003-1.754.11" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/mgcb.svg b/icons/mgcb.svg
new file mode 100644
index 00000000..caa67594
--- /dev/null
+++ b/icons/mgcb.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DA4709" d="M14 7V5.542A3.546 3.546 0 0 0 10.458 2c-.953 0-1.82.38-2.458.994A3.53 3.53 0 0 0 5.542 2 3.546 3.546 0 0 0 2 5.542v4.916A3.546 3.546 0 0 0 5.542 14h4.916A3.546 3.546 0 0 0 14 10.458V8H7v2h5c0 1-.361 2-1.5 2H5.542C4.784 12 4 11.216 4 10.458V5.542C4 4.5 4.5 4 5.5 4S7 4.5 7 5.542V7h2V5.542C9 4.5 9.448 4 10.458 4 11.5 4 12 4.5 12 5.542V7z"/></svg> \ No newline at end of file
diff --git a/icons/mint.svg b/icons/mint.svg
new file mode 100644
index 00000000..e5b47046
--- /dev/null
+++ b/icons/mint.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-name="Calque 1" viewBox="0 0 16 16"><defs><linearGradient id="a" x1="-3718.69" x2="-3615.38" y1="2394.66" y2="2394.66" gradientTransform="matrix(.08 -.09 .09 .08 101.19 -512.88)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#3ac155"/><stop offset="1" stop-color="#0cb3ff"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="-1056.18" x2="-957.75" y1="-3731.97" y2="-3731.97" gradientTransform="matrix(.12 0 0 -.12 129.5 -443.86)"/></defs><path d="M15.32 6.17a8 8 0 0 1-3.32.21 7.1 7.1 0 0 0-1 2.12 11.6 11.6 0 0 0 3.27-1.29A13.3 13.3 0 0 1 10.5 9.5a7.65 7.65 0 0 1-1.88 3.38L8.5 13c1.54-.59 4.23-2.21 6.82-6.83" style="fill:url(#a)"/><path d="M3.18 5.53C.44 7.74 1.64 10.83 2.5 10c1.4-1.34 3.56-4.14 7.6-5.31C6.43 5.79 3.68 10 3 11c-.5 1 .27 2.2 1.88 2.45a3.45 3.45 0 0 0 3.17-1c2.11-2 1.28-5.48 5.36-8.47C6.67 2.47 3.69 5.12 3.18 5.53" style="fill:url(#b)"/></svg> \ No newline at end of file
diff --git a/icons/mix.svg b/icons/mix.svg
new file mode 100644
index 00000000..9a812e36
--- /dev/null
+++ b/icons/mix.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#C268F5" fill-rule="evenodd" d="m2 8 3-5h6l3 5-3 5H5zm3 0 1.5-2.5h3L11 8l-1.5 2.5h-3z" clip-rule="evenodd"/><path fill="#D892FF" d="m11 3 3 5h-3L9.5 5.5z"/><path fill="#A349D6" d="m14 8-3 5H5L2 8h3l1.5 2.5h3L11 8z"/><path fill="#862EB8" d="M5 13 2 8h3l1.5 2.5z"/></svg> \ No newline at end of file
diff --git a/icons/mixlock.svg b/icons/mixlock.svg
new file mode 100644
index 00000000..50d0dce8
--- /dev/null
+++ b/icons/mixlock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".5" fill-rule="evenodd" d="m2 8 3-5h6l3 5-3 5H5zm3 0 1.5-2.5h3L11 8l-1.5 2.5h-3z" clip-rule="evenodd"/><path fill="#909090" fill-opacity=".55" d="m14 8-3 5H5L2 8h3l1.5 2.5h3L11 8z"/><path fill="#909090" fill-opacity=".9" d="M5 13 2 8h3l1.5 2.5z"/></svg> \ No newline at end of file
diff --git a/icons/mjml.svg b/icons/mjml.svg
new file mode 100644
index 00000000..fb1f790c
--- /dev/null
+++ b/icons/mjml.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#F36B4D" d="M14 12.25a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 1 1 2.5 0m-12-4a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 1 1-2.5 0m12-4a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 1 1 2.5 0m-4 8c0 .69-.56 1.25-1.25 1.25h-5.5a1.25 1.25 0 1 1 0-2.5h5.5c.69 0 1.25.56 1.25 1.25m-4-4C6 7.56 6.56 7 7.25 7h5.5a1.25 1.25 0 1 1 0 2.5h-5.5C6.56 9.5 6 8.94 6 8.25m4-4c0 .69-.56 1.25-1.25 1.25h-5.5a1.25 1.25 0 1 1 0-2.5h5.5C9.44 3 10 3.56 10 4.25"/></svg> \ No newline at end of file
diff --git a/icons/mkdocs.svg b/icons/mkdocs.svg
new file mode 100644
index 00000000..0efd9634
--- /dev/null
+++ b/icons/mkdocs.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M11.75 2c.966 0 1.75.784 1.75 1.75V10c0 .594 0 1.5-1 1.5v1c.5 0 1 0 1 .75s-.5.75-1 .75H4.75c-.616 0-1.215-.155-1.655-.595S2.5 12.365 2.5 11.75v-8C2.5 2.784 3.284 2 4.25 2zM4 11.75c0 .384.096.535.155.595.06.06.21.155.595.155H11v-1H4.25a2 2 0 0 1-.25-.02zm.25-8.25a.25.25 0 0 0-.25.25v6c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-6a.25.25 0 0 0-.25-.25zm5.164 1.242a.67.67 0 0 1 .665-.084.7.7 0 0 1 .421.646V9H9.25V6.624l-.768.67C8.355 7.427 8 7.5 8 7.5s-.355-.074-.482-.205l-.768-.671V9H5.5V5.304l.009-.105a.7.7 0 0 1 .412-.54.67.67 0 0 1 .742.152L8 6.18l1.337-1.37z"/></svg> \ No newline at end of file
diff --git a/icons/mockoon.svg b/icons/mockoon.svg
new file mode 100644
index 00000000..33e4bae8
--- /dev/null
+++ b/icons/mockoon.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M8.391 2.822c.839-.055 1.624.395 2.353.83 1.405.837 2.876 1.748 3.872 3.035.489.632.464 1.54-.064 2.135L10.92 12.91c-.393.442-.795.892-1.305 1.176-.871.485-1.95.412-2.873.046-.923-.367-1.724-.998-2.51-1.62l-2.238-1.77c-.254-.2-.514-.407-.693-.682-.412-.63-.313-1.51.055-2.17.512-.916 1.454-1.5 2.21-2.14.73-.618 1.512-1.164 2.309-1.683.76-.494 1.573-1.183 2.515-1.245m1.351 2.632a2.589 2.589 0 1 0 0 5.177 2.589 2.589 0 0 0 0-5.177m0 1.45a1.139 1.139 0 1 1 0 2.278 1.139 1.139 0 0 1 0-2.278"/></svg> \ No newline at end of file
diff --git a/icons/motoko.svg b/icons/motoko.svg
new file mode 100644
index 00000000..fb8bbf54
--- /dev/null
+++ b/icons/motoko.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#2CADEF" fill-rule="evenodd" d="M2.095 8.983c.445 2.212 2.39 3.664 4.67 4.017 3.235.5 8.852-1.105 6.414-2.462-.091-.077-.32-.179-.57-.29-.525-.232-1.141-.505-.77-.677 4.257-.985 2.512-1.733 1.22-2.288-.369-.158-.7-.3-.846-.427-.228-.199.2-.214.794-.234.577-.02 1.31-.046 1.753-.25C16.012 5.796 12 2.5 6.766 3.012c-1.54.151-2.841.827-3.694 1.871.436-.139.92-.216 1.428-.216 1.933 0 3.5 1.119 3.5 2.5 0 1.38-1.567 2.5-3.5 2.5-.931 0-1.777-.26-2.405-.684" clip-rule="evenodd"/><path fill="url(#a)" fill-rule="evenodd" d="M2.045 8.948C2.278 11.256 3.488 13 7.155 13c2.97 0 5.703-1.718 3.065-3.077-.601-.238-1.618-.89-1.401-1.52.087-.254.418-.649.808-1.112C11.046 5.602 13.233 3 7.156 3c-2.326 0-3.71.794-4.45 2.02A4.6 4.6 0 0 1 4.5 4.666c1.933 0 3.5 1.119 3.5 2.5 0 1.38-1.567 2.5-3.5 2.5-.957 0-1.823-.274-2.455-.719Z" clip-rule="evenodd"/><circle cx="5" cy="7" r="1" fill="#B72DB8"/><ellipse cx="2.5" cy="7" fill="#B72DB8" rx=".5" ry="1"/><defs><linearGradient id="a" x1="6.665" x2="6.665" y1="3" y2="13" gradientUnits="userSpaceOnUse"><stop stop-color="#7126EC"/><stop offset="1" stop-color="#E93894"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/icons/mov.svg b/icons/mov.svg
new file mode 100644
index 00000000..bd1f195a
--- /dev/null
+++ b/icons/mov.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#4ED1BA" fill-rule="evenodd" d="M12.608 4.157A6 6 0 0 0 9.538 2.2l.243 4.988 2.827-3.03Zm-7.526-1.4a5.97 5.97 0 0 1 3.473-.732l.18 4.04zM2.258 6.254A6 6 0 0 1 4.22 3.339l2.966 2.648-4.93.268Zm.414 4.507a5.97 5.97 0 0 1-.626-3.51l3.902-.181zm3.498 2.954a6 6 0 0 1-2.98-2.129l2.72-2.929zm4.697-.444a5.97 5.97 0 0 1-3.674.674l-.2-4.088zm2.927-3.707a6 6 0 0 1-2.076 3.145L8.542 9.897zm-.637-4.633a5.97 5.97 0 0 1 .811 3.688l-4.303.193z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/mp4.svg b/icons/mp4.svg
new file mode 100644
index 00000000..9cdcecb6
--- /dev/null
+++ b/icons/mp4.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#49BF63" fill-rule="evenodd" d="M12.608 4.157A6 6 0 0 0 9.538 2.2l.243 4.988 2.827-3.03Zm-7.526-1.4a5.97 5.97 0 0 1 3.473-.732l.18 4.04zM2.258 6.254A6 6 0 0 1 4.22 3.339l2.966 2.648-4.93.268Zm.414 4.507a5.97 5.97 0 0 1-.626-3.51l3.902-.181zm3.498 2.954a6 6 0 0 1-2.98-2.129l2.72-2.929zm4.697-.444a5.97 5.97 0 0 1-3.674.674l-.2-4.088zm2.927-3.707a6 6 0 0 1-2.076 3.145L8.542 9.897zm-.637-4.633a5.97 5.97 0 0 1 .811 3.688l-4.303.193z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/mtl.svg b/icons/mtl.svg
new file mode 100644
index 00000000..653543ff
--- /dev/null
+++ b/icons/mtl.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D9295E" fill-rule="evenodd" d="M3.5 11a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2a.5.5 0 0 1 .5-.5m0-6a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2a.5.5 0 0 1 .5-.5m9 6a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 1 0v2a.5.5 0 0 1-.5.5m0-6a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 1 0v2a.5.5 0 0 1-.5.5m-3 6a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2a.5.5 0 0 1 .5-.5m0-6a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2a.5.5 0 0 1 .5-.5m-3 6a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 1 0v2a.5.5 0 0 1-.5.5m0-6a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 1 0v2a.5.5 0 0 1-.5.5M5 12.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m0-6a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m6 3a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5m0-6a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5m0 9a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m0-6a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5m-6 3a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5m0-6a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/mustache.svg b/icons/mustache.svg
new file mode 100644
index 00000000..ad443bd6
--- /dev/null
+++ b/icons/mustache.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DD497E" fill-rule="evenodd" d="M7.508 7.17c.161.09.357.25.468.399v-.037a1.324 1.324 0 0 1 1.954-.186c.219.198.429.455.646.72.534.652 1.109 1.355 1.965 1.355a.824.824 0 0 0 .463-1.39c.926 0 1.454 1.39.463 2.316-.969.905-2.51.992-3.704.463a4.23 4.23 0 0 1-1.787-1.38v-.01c-.469.61-1.143 1.094-1.852 1.39-1.213.537-2.778.463-3.704-.463-.732-.732-.463-2.315.463-2.315a.824.824 0 0 0 .463 1.389c.859 0 1.43-.696 1.963-1.346.22-.268.433-.528.657-.729a1.32 1.32 0 0 1 1.542-.176" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/nelua.svg b/icons/nelua.svg
new file mode 100644
index 00000000..7aa1dc7c
--- /dev/null
+++ b/icons/nelua.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><circle cx="8" cy="8" r="6" fill="#3483F3"/><path fill="#1558AE" fill-rule="evenodd" d="M5 13a7 7 0 0 0 6.33-9.992 6 6 0 0 1-6.66 9.984Q4.836 13 5 13" clip-rule="evenodd"/><circle cx="5.5" cy="8.5" r="1.5" fill="#1558AE"/><circle cx="10" cy="11" r="1" fill="#3483F3"/><circle cx="8" cy="5" r="1" fill="#1558AE"/></svg> \ No newline at end of file
diff --git a/icons/neon.svg b/icons/neon.svg
new file mode 100644
index 00000000..3b0039c6
--- /dev/null
+++ b/icons/neon.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#CAA773" fill-rule="evenodd" d="M12 3.5H4a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5V4a.5.5 0 0 0-.5-.5M4 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2z" clip-rule="evenodd"/><path fill="#CAA773" fill-rule="evenodd" d="M7.028 6.76a1.8 1.8 0 0 0-.278.84v2.9h-1.5V7.6c0-.396.134-1.067.522-1.66C6.186 5.306 6.905 4.75 8 4.75s1.814.557 2.227 1.19c.389.593.523 1.264.523 1.66v2.9h-1.5V7.6a1.8 1.8 0 0 0-.278-.84c-.186-.284-.467-.51-.972-.51s-.786.226-.972.51" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/nestjs.svg b/icons/nestjs.svg
new file mode 100644
index 00000000..353d39a1
--- /dev/null
+++ b/icons/nestjs.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#E7476B" fill-rule="evenodd" d="M10.87 1.32c.41 1.305-.142 3.025-1.516 3.828.425 0 1.516-.557 1.704-.877.819.042 2.394.384 3.197 2.305-.495-.438-1.221-.741-1.782-.741 1.315.873 2.587 2.273 2.094 4.826-.195-.423-.385-.872-.959-1.346.454 1.36.555 3.02-1.456 4.268.416-.76.468-2.07.442-2.63-.03.81-.603 2.668-2.663 3.614.61-.857.88-2.207.94-2.774-.218.446-.744 1.173-1.491 1.719-.932.68-1.636.895-1.741 1.726-.61-.474-.503-1.228.105-2.51s.386-1.622.275-1.7c-.707-.501-2.043.888-2.78 1.142-.328.111-.829-.4-.879-.825-.207-.158-.7-.672-.5-1.262.155.386.768.533 1.01.49.24-.043.995-.29.969-1.187-.026-.898-.57-1.879-1.756-1.791-.799.06-1.1.987-.892 1.25-.363.136-1.205-.233-1.206-1.062-.468-.242-.502-.79-.416-1.082a.46.46 0 0 1-.246-.402c0-.316.975-.996 1.686-1.232.1-.402.771-1.41 2.326-1.846 1.244-.35 2.267-.174 2.613-.065.801-.89 2.516-.939 2.922-1.837m-.118 5.576c.674.82.737 1.903.7 2.274-.593-.522-1.337-.374-1.561-.315.583.038 1.791.99 2.127 1.8.434-.758.774-2.692-1.266-3.76M7.018 4.729c-.815.094-2.084.415-2.504.771.089.16.665.582.739.54.41-.24.513-.18 1.765-1.311" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/nestjscontroller.svg b/icons/nestjscontroller.svg
new file mode 100644
index 00000000..a75c40ad
--- /dev/null
+++ b/icons/nestjscontroller.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#51BAA2" d="M10.5 8.5h3.985c-.2 3.707-2.654 6-6.485 6-3.473 0-5.814-1.885-6.371-5h1.53c.21.931.619 1.657 1.152 2.19C5.1 12.48 6.316 13 8 13s2.899-.52 3.69-1.31c.46-.461.828-1.066 1.055-1.824H10.5l.5 2-3.5-2.5 3.5-3z"/><path fill="#51BAA2" d="M8.114 1.926c3.473 0 5.815 1.885 6.371 5h-1.529c-.21-.93-.62-1.656-1.152-2.189-.791-.79-2.006-1.31-3.69-1.31-1.683 0-2.898.52-3.69 1.31a4.2 4.2 0 0 0-1.013 1.69h2.203l-.5-2 3.5 2.5-3.5 3 .5-2H1.63c.201-3.708 2.655-6 6.485-6"/></svg> \ No newline at end of file
diff --git a/icons/nestjsdecorator.svg b/icons/nestjsdecorator.svg
new file mode 100644
index 00000000..897696f5
--- /dev/null
+++ b/icons/nestjsdecorator.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#E37ABF" d="M5.528 13.713q-1.128-.39-1.906-1.146a4.9 4.9 0 0 1-1.187-1.838q-.407-1.086-.407-2.472 0-1.367.407-2.48a5.3 5.3 0 0 1 1.2-1.911A5.3 5.3 0 0 1 5.56 2.634q1.141-.43 2.6-.43 1.348 0 2.408.394 1.064.394 1.801 1.123.742.724 1.128 1.725.39.996.385 2.205c.013 2.467-1.244 3.7-3.758 3.839-1.176.091-1.547.086-2.726.013a2.66 2.66 0 0 1-1.86-.878c-.489-.549-.787-1.358-.793-2.422q.005-.788.222-1.372.222-.585.584-.982a2.9 2.9 0 0 1 1.716-.915c.639-.096 1.777-.026 2.35.29 1.874.938 1.317 4.388 1.317 4.388.549.29 1.096-.223 1.173-.643.072-.38.151-.84.151-1.429a4.4 4.4 0 0 0-.244-1.485 2.9 2.9 0 0 0-.623-1.046 3.1 3.1 0 0 0-.89-.727c-.353-.19-.683-.401-1.097-.489a6 6 0 0 0-1.268-.131q-1.127 0-1.969.344a3.8 3.8 0 0 0-1.403.955 4 4 0 0 0-.843 1.445 5.7 5.7 0 0 0-.28 1.797q.004 1.073.299 1.901.299.825.878 1.386.58.562 1.43.85c1.46.498 2.608.405 4.209.227.194.33.393.613.626.935-.38.217-.916.399-1.733.514-1.262.188-2.614.118-3.821-.303m2.363-3.7q.552 0 .878-.212a1.16 1.16 0 0 0 .471-.63q.145-.42.136-1.036a2.8 2.8 0 0 0-.14-.92 1.04 1.04 0 0 0-.458-.574q-.321-.2-.896-.2-.502 0-.856.214a1.4 1.4 0 0 0-.534.597 2.1 2.1 0 0 0-.186.897q.005.48.154.91.15.425.494.692.345.263.937.263"/></svg> \ No newline at end of file
diff --git a/icons/nestjsdto.svg b/icons/nestjsdto.svg
new file mode 100644
index 00000000..244b01c8
--- /dev/null
+++ b/icons/nestjsdto.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#90C460" d="M7.889 12.5H11.5V9.6L13 7.2v5.3l-.009.281c-.081 1.133-.672 1.217-1.235 1.22L11.5 14h-7l-.28-.009c-1.133-.081-1.218-.672-1.221-1.235L3 12.5V7.75L4.5 8.8v3.7zL6.5 9l1-1.5-2 .5L3 6.5l10.5-2zM4.5 2H10l1.81 1.81-1.777.344L9.38 3.5H4.5v1.726l-1.5.29V3.5c0-1.4.638-1.498 1.244-1.501z"/></svg> \ No newline at end of file
diff --git a/icons/nestjsentity.svg b/icons/nestjsentity.svg
new file mode 100644
index 00000000..b7cfc0c2
--- /dev/null
+++ b/icons/nestjsentity.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#3CC27B" d="M13.026 1.918a.75.75 0 0 1 1.056 1.056l-.052.056-2 2-.03.028v5.883l.03.029 2 2 .052.056a.75.75 0 0 1-1.056 1.056l-.056-.052-2-2-.028-.03H8.75v2a.75.75 0 0 1-1.5 0v-2H5a1 1 0 0 1-1-1V8.75H2a.75.75 0 1 1 0-1.5h2V5.058l-.03-.028-2-2-.052-.056a.75.75 0 0 1 1.056-1.056l.056.052 2 2 .028.03h5.884l.028-.03 2-2zM8.046 5q-.923 0-1.61.378a2.67 2.67 0 0 0-1.06 1.056Q5 7.11 5 8.008q0 .92.376 1.593.376.669 1.072 1.036.699.363 1.668.363.777 0 1.37-.22a2.54 2.54 0 0 0 .974-.62q.38-.4.503-.938l-1.611-.098a1 1 0 0 1-.262.37q-.172.152-.413.228-.242.075-.531.075-.438 0-.757-.17a1.2 1.2 0 0 1-.495-.484 1.53 1.53 0 0 1-.172-.746v-.004H11v-.442q0-.741-.225-1.294-.225-.555-.63-.923a2.6 2.6 0 0 0-.94-.549A3.5 3.5 0 0 0 8.046 5m.03 1.203q.38 0 .666.155.29.151.454.42.165.27.164.616H6.726q.014-.313.171-.57.172-.285.475-.451.306-.17.703-.17"/></svg> \ No newline at end of file
diff --git a/icons/nestjsfilter.svg b/icons/nestjsfilter.svg
new file mode 100644
index 00000000..0ce120c3
--- /dev/null
+++ b/icons/nestjsfilter.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#5F8CFF" fill-rule="evenodd" d="M8 2.5c3.314 0 5.5 1.12 5.5 2.5 0 2.041-1.334 4.153-4 5.5V12c0 1.5-1.5 2-3 2v-3.5c-2.666-1.456-4-3.867-4-5.5 0-1.38 2.186-2.5 5.5-2.5M8 4c-2.761 0-4 .5-4 1 0 .828 1.239 1.5 4 1.5s4-.672 4-1.5c0-.5-1.239-1-4-1" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/nestjsguard.svg b/icons/nestjsguard.svg
new file mode 100644
index 00000000..160a4386
--- /dev/null
+++ b/icons/nestjsguard.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#31B8DA" d="M9 2c.5 1 2.198 2 5 2 0 4 .005 10.005-6 10.005S2 8 2 4c2.802 0 4.5-1 5-2zM8 3.5c-.923.923-3 2-4.5 2 0 2.77.176 6.994 4.5 7 4.355-.064 4.5-4.23 4.5-7-1.591-.27-3.5-1.077-4.5-2M8 5c.5.467 1.5 1 3.5 1.5 0 4-2 5-3.5 5z"/></svg> \ No newline at end of file
diff --git a/icons/nestjsinterceptor.svg b/icons/nestjsinterceptor.svg
new file mode 100644
index 00000000..5aac5525
--- /dev/null
+++ b/icons/nestjsinterceptor.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#F6816A" d="M9 10.5v2l1 1.5H6l1-1.5v-2zM4.554 5.51a.5.5 0 0 1 .255.136l.854.854H6v1h-.544c-.1 0-.196-.03-.277-.084l-.077-.062L4.25 6.5H3.061l1.03 1.17a.5.5 0 0 1 0 .66L3.062 9.5H4.25l.853-.854.077-.062a.5.5 0 0 1 .277-.084H6v1h-.337l-.854.854a.5.5 0 0 1-.353.146h-2.5a.501.501 0 0 1-.375-.83L3.05 8 1.58 6.33a.5.5 0 0 1 .375-.83h2.5zm6.432.05a.5.5 0 0 1 .514.024l3 2 .05.038a.5.5 0 0 1-.05.794l-3 2a.501.501 0 0 1-.777-.416v-.5H10v-1h1.223a.5.5 0 0 1 .5.5v.065L13.32 8l-1.598-1.066V7a.5.5 0 0 1-.5.5H10v-1h.723V6l.004-.068a.5.5 0 0 1 .26-.372M8 6.5a1 1 0 0 1 1 1v1a1 1 0 1 1-2 0v-1a1 1 0 0 1 1-1m1-3v2H7v-2L6 2h4z"/></svg> \ No newline at end of file
diff --git a/icons/nestjsmodule.svg b/icons/nestjsmodule.svg
new file mode 100644
index 00000000..243e801b
--- /dev/null
+++ b/icons/nestjsmodule.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#EF7C35" d="M6.483 2.88a2.55 2.55 0 0 1 3.288.27l.114.115a2.1 2.1 0 0 1 2.944.022l.145.16a2.1 2.1 0 0 1-.122 2.784l.176.176.163.178c.71.858.78 2.085.172 3.018l-.142.195-1.066 1.34-.02.025-.024.024a.8.8 0 0 1-.209.15.6.6 0 0 1-.443.03.6.6 0 0 1-.322-.245.8.8 0 0 1-.094-.195c-.03-.095-.048-.2-.06-.278-.011-.072-.027-.194-.039-.27-.059-.403-.148-.752-.354-.958-.223-.223-.426-.293-.585-.293s-.36.07-.584.293-.293.425-.293.584c0 .16.07.362.293.585.22.22.526.354.859.513.075.036.16.077.236.122.071.041.17.105.256.196a.7.7 0 0 1 .192.504.73.73 0 0 1-.22.476l-.02.02-.022.017-.892.735a2.55 2.55 0 0 1-3.243-.002l-.181-.164-.155-.155a2.1 2.1 0 0 1-2.785.122l-.159-.145a2.1 2.1 0 0 1-.022-2.944L3.15 9.77a2.55 2.55 0 0 1-.116-3.483l.844-.964.013-.014.013-.014a.7.7 0 0 1 .501-.219.65.65 0 0 1 .526.29 1.2 1.2 0 0 1 .133.274c.027.076.052.162.075.237.1.337.198.63.388.818l.082.077c.19.163.362.215.502.215.159 0 .361-.068.584-.292l.077-.083c.162-.19.215-.362.215-.502 0-.139-.052-.311-.215-.501l-.077-.082c-.156-.157-.437-.251-.802-.367a5 5 0 0 1-.248-.085 1.2 1.2 0 0 1-.276-.14.67.67 0 0 1-.289-.5.7.7 0 0 1 .215-.53l.014-.014.014-.013.964-.844zm2.51 1.048a1.45 1.45 0 0 0-1.87-.153l-.11.087-.423.37c.284.104.627.26.884.517l.137.148c.3.352.478.767.478 1.215 0 .447-.178.862-.478 1.214l-.137.148c-.382.382-.85.615-1.362.615-.448 0-.863-.178-1.215-.478l-.148-.137a2.4 2.4 0 0 1-.53-.87l-.357.409a1.45 1.45 0 0 0 .066 1.98l1.114 1.115-.701.335a1 1 0 0 0-.144.085l-.132.11a1 1 0 0 0 0 1.414l.076.068a1 1 0 0 0 1.338-.068l.111-.132a1 1 0 0 0 .084-.143l.335-.703 1.154 1.155.103.093a1.45 1.45 0 0 0 1.845.001l.43-.355c-.27-.132-.62-.322-.898-.6-.382-.383-.615-.851-.615-1.363s.233-.98.615-1.362.85-.614 1.362-.615c.512 0 .98.233 1.362.615.302.302.463.682.555 1.02l.438-.55.08-.11a1.45 1.45 0 0 0-.097-1.717l-.093-.1-1.176-1.177.703-.335a1 1 0 0 0 .275-.195l.068-.076a1 1 0 0 0 0-1.262l-.068-.076a1 1 0 0 0-1.338-.069l-.075.069a1 1 0 0 0-.111.132l-.085.144-.335.701z"/></svg> \ No newline at end of file
diff --git a/icons/nestjsrepository.svg b/icons/nestjsrepository.svg
new file mode 100644
index 00000000..2a2d44ab
--- /dev/null
+++ b/icons/nestjsrepository.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#E85677" d="M12.96 10.918c.343.165.54.354.54.559v1.119l-.005.057c-.108.591-1.355 1.06-3.495 1.06-1.64 0-3.387-.469-3.495-1.06l-.005-.057v-1.12c0-.204.197-.393.538-.558.693.334 1.984.558 2.962.558 1.478 0 2.268-.225 2.96-.558"/><path fill="#E85677" d="M5.5 2.5c2 0 2 2 3.5 2h3q1.5 0 1.5 1.5h-4c-3 0-2.874-2-4-2H4v8h1.5v1.5H4q-1.5 0-1.5-1.5V4q0-1.5 1.5-1.5z"/><path fill="#E85677" d="M10 7c2.21 0 3.5.501 3.5 1.12v1.118l-.005.058c-.107.591-1.355 1.061-3.495 1.061-1.64 0-3.388-.47-3.495-1.061L6.5 9.238V8.12C6.5 7.501 8.29 7 10 7"/></svg> \ No newline at end of file
diff --git a/icons/nestjsresolver.svg b/icons/nestjsresolver.svg
new file mode 100644
index 00000000..efa26e2f
--- /dev/null
+++ b/icons/nestjsresolver.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#A577FF" d="M3.5 2.5a1.5 1.5 0 0 1 .446 2.933l-.046.01c.002.218.015.42.038.617q.027.22.076.44A1.5 1.5 0 0 1 5.49 8.161c.394.182.735.317 1.078.389A1.501 1.501 0 0 1 9.5 9c0 .653-.418 1.206-1 1.412v1.175a1.5 1.5 0 1 1-1 0v-1.175a1.5 1.5 0 0 1-.888-.844c-.544-.076-1.042-.266-1.557-.504A1.5 1.5 0 1 1 3.063 6.83a6 6 0 0 1-.118-.65 7 7 0 0 1-.045-.805A1.5 1.5 0 0 1 3.5 2.5M12 6.366a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3m.5-3.866a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3"/></svg> \ No newline at end of file
diff --git a/icons/nestjsservice.svg b/icons/nestjsservice.svg
new file mode 100644
index 00000000..b8199310
--- /dev/null
+++ b/icons/nestjsservice.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#8FB45B" d="M8 2c1.222 0 1.696 0 1.881 1.369 1.783-1.604 2.08-1.308 3.069-.319s1.284 1.285-.32 3.068C14 6.303 14 6.778 14 8s0 1.696-1.37 1.88c1.605 1.784 1.309 2.08.32 3.07-.99.989-1.286 1.285-3.069-.32C9.696 14 9.222 14 8.001 14c-1.224 0-1.699 0-1.883-1.373-1.737 1.552-2.088 1.303-3.068.323-.99-.99-1.287-1.287.324-3.076C2.047 9.684 2 9.207 2 8c0-1.223 0-1.698 1.371-1.882-1.55-1.736-1.3-2.088-.32-3.068.99-.99 1.286-1.286 3.074.325C6.315 2.047 6.793 2 8 2m0 2.75c-.312 0-.925-.006-1.465.156a1.95 1.95 0 0 0-.856.495A1.55 1.55 0 0 0 5.25 6.5c0 .615.155 1.215.595 1.655s1.04.595 1.655.595H9c.486 0 1 .25.595.844-.06.06-.21.156-.595.156H7.5c-.38 0-.584-.095-.674-.162a.24.24 0 0 1-.07-.074l-.006-.012V9.5h-1.5c0 1.1 1.05 1.75 2.25 1.75H9c.616 0 1.216-.155 1.656-.595s.594-1.04.594-1.655a1.63 1.63 0 0 0-.356-1.052 1.76 1.76 0 0 0-.755-.526C9.663 7.244 9.159 7.25 9 7.25H7.5c-.384 0-.535-.096-.594-.156-.216-.215-.26-.654.06-.75.293-.088.68-.094 1.034-.094h.978c.389.02.606.116.705.187.089.065.067.091.067.063h1.5c0-.529-.275-.979-.688-1.278-.352-.254-.801-.403-1.307-.455l-.22-.016-.017-.001z"/></svg> \ No newline at end of file
diff --git a/icons/nestscheduler.svg b/icons/nestscheduler.svg
new file mode 100644
index 00000000..820a45bd
--- /dev/null
+++ b/icons/nestscheduler.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#E98252" d="m9 7.5 2.5.5-5.4 4.5h6.15a.25.25 0 0 0 .25-.25V7H14v5.25A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25V7h1.5v5.25c0 .138.112.25.25.25h1.938L7 9l-2.5-.5L10 4zm-2.52-2H2V4c.041-1.074.925-2 2-2h7zM12 2c1.134 0 2.043.866 2 2v1.5h-3.286l1-3.5z"/></svg> \ No newline at end of file
diff --git a/icons/netlify.svg b/icons/netlify.svg
new file mode 100644
index 00000000..ae618baf
--- /dev/null
+++ b/icons/netlify.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#05BDBA" d="M7 2h1.5v4H7zm0 8.5h1.5v4H7zM1.5 9V7.5h4V9zM10 9V7.5h4V9zM4.02 5.58l1.06-1.06 1.08 1.078V6.66L5 6.561zm1.05 6.411-1.061-1.06L5 9.939l1.159-.098-.029 1.09z"/><path fill="#FBB03B" d="M6.75 8.25a1 1 0 0 1 2 0 1 1 0 0 1-2 0"/></svg> \ No newline at end of file
diff --git a/icons/nextconfig.svg b/icons/nextconfig.svg
new file mode 100644
index 00000000..59ffab9d
--- /dev/null
+++ b/icons/nextconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M8 13.6a5.6 5.6 0 0 0 2.848-.777L5.75 6.996V11a.75.75 0 0 1-1.5 0V5a.75.75 0 0 1 1.314-.494l6.463 7.386A5.6 5.6 0 1 0 8 13.6M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14m3.75-10a.75.75 0 0 0-1.5 0v3a.75.75 0 0 0 1.5 0z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/nextron.svg b/icons/nextron.svg
new file mode 100644
index 00000000..3b69ef54
--- /dev/null
+++ b/icons/nextron.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#33ACC5" fill-rule="evenodd" d="M8.376 3.173a1.27 1.27 0 0 1-.925.394c-.696 0-1.261-.552-1.261-1.234s.565-1.234 1.261-1.234c.659 0 1.2.493 1.257 1.123.761.357 1.29.965 1.661 1.611.455.793.696 1.681.854 2.335.425 1.767.045 4.06-.267 5.195a.5.5 0 1 1-.964-.266c.296-1.076.625-3.173.258-4.695-.154-.641-.369-1.41-.748-2.07-.284-.495-.646-.905-1.126-1.159M2.06 4.411c1.033-.892 2.486-.971 3.627-.629a.5.5 0 0 1-.287.958c-.924-.277-1.988-.175-2.686.428-.341.295-.674 1.025-.154 1.793a.5.5 0 1 1-.828.56 2.34 2.34 0 0 1 .328-3.11m9.603-.594a.5.5 0 0 0 0 1c.17 0 .52.037.869.17.348.133.632.338.775.635.478.989.02 2.377-1.26 3.7a.5.5 0 0 0 .719.696c1.357-1.404 2.207-3.248 1.442-4.83-.296-.613-.84-.952-1.319-1.135a3.6 3.6 0 0 0-1.226-.236M8.745 5.092a.5.5 0 1 0-.224-.975C7.29 4.4 5.08 5.43 3.584 7.014 2.598 8.057 2.02 9.089 1.768 10.1a5 5 0 0 0-.08 2.056c-.414.202-.7.621-.7 1.105 0 .682.565 1.235 1.262 1.235s1.262-.553 1.262-1.235c0-.527-.339-.978-.816-1.154a4 4 0 0 1 .042-1.765c.202-.811.68-1.696 1.572-2.641 1.345-1.424 3.374-2.365 4.435-2.609M4.45 9.205a.5.5 0 0 0-.774.633c.544.665 1.988 2.209 4.92 2.976 1.491.39 2.778.289 3.768-.001a6 6 0 0 0 .872-.335c.212.158.477.252.764.252.697 0 1.262-.553 1.262-1.234 0-.682-.565-1.235-1.262-1.235s-1.262.553-1.262 1.235q0 .055.005.11a5 5 0 0 1-.66.247c-.824.242-1.926.336-3.234-.006-2.669-.699-3.944-2.086-4.4-2.642Zm.432 2.805a.5.5 0 0 1 .604.368c.16.662.786 1.417 1.58 1.51.654.078 1.219-.222 1.6-.564a.5.5 0 0 1 .668.743c-.508.458-1.347.937-2.386.815-1.324-.157-2.206-1.327-2.434-2.269a.5.5 0 0 1 .368-.603m2.75-2.514a1 1 0 1 0 0-2 1 1 0 0 0 0 2" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/nginx.svg b/icons/nginx.svg
new file mode 100644
index 00000000..71cc0066
--- /dev/null
+++ b/icons/nginx.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M10 5.5h1V11h-1L6 7.15V11H5V5.5h1l4 3.85zM8 1.94a.9.9 0 0 0-.45.12L3 4.71a.9.9 0 0 0-.45.79v5.3a.91.91 0 0 0 .45.79l4.6 2.65a.9.9 0 0 0 .9 0l4.6-2.65a.91.91 0 0 0 .45-.79V5.5a.9.9 0 0 0-.45-.79L8.45 2.06A.9.9 0 0 0 8 1.94" style="fill:#009639"/></svg> \ No newline at end of file
diff --git a/icons/nim.svg b/icons/nim.svg
new file mode 100644
index 00000000..8197988c
--- /dev/null
+++ b/icons/nim.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D9AC39" d="m8 3-.894 1.234c-.489-.015-1.448.094-1.968.283C4.659 4.214 4 3.5 4 3.5l-.347 1.36c-.336.18-.673.38-.973.645L1.5 4.5c.462.932 1.184 3.058 2.032 3.619 1.345-2.625 7.599-2.427 8.972-.012.888-.463 1.514-2.324 1.863-3.246-.275.092-.83.555-1.102.656-.183-.2-.617-.507-.863-.656C12.169 4.433 12 3.5 12 3.5s-.574.655-1.041.982c-.63-.117-1.394-.258-2.035-.223C8.487 3.899 8 3 8 3"/><path fill="#D9AC39" d="m2.391 8.015 1.111 3.436c1.928 2.543 6.851 2.718 8.998.049L13.693 8c-.551.816-1.447 1.379-1.999 1.684-.392.215-1.297.345-1.297.345L8.023 8.798l-2.389 1.206s-.893-.143-1.297-.332c-.816-.436-1.364-.95-1.943-1.655z"/></svg> \ No newline at end of file
diff --git a/icons/nix.svg b/icons/nix.svg
new file mode 100644
index 00000000..280e5ab1
--- /dev/null
+++ b/icons/nix.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#6EBBF2" d="M6.36 6 3.1 11.59l-.77-1.31.91-1.59H1.42L1 8l.42-.69H4L4.76 6zm.73 4.41h6.44l-.77 1.31h-1.82l.91 1.59-.42.69h-.77L9.4 11.72H7.9zm3.47-2.87L7.3 2h1.54l.91 1.59.91-1.59h.77l.42.69-1.33 2.21.85 1.31z"/><path fill="#5588F1" d="M8.88 5.59H2.4l.77-1.31h1.82l-.91-1.59L4.5 2h.77L6.6 4.21h1.5zM9.64 10l3.26-5.59.77 1.31-.91 1.59h1.82L15 8l-.42.69h-2.59L11.24 10zM5.46 8.57l3.24 5.36H7.16l-.91-1.58-.77 1.58h-.91l-.42-.69 1.33-2.2-.75-1.17z"/></svg> \ No newline at end of file
diff --git a/icons/njk.svg b/icons/njk.svg
new file mode 100644
index 00000000..736a4096
--- /dev/null
+++ b/icons/njk.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#6EAF5D" d="M10.06 11.268h1.256v-5.89h1.683V11.9c.008.211-.049.42-.163.594a1.1 1.1 0 0 1-.59.465q-.225.045-.453.04H9.394a1 1 0 0 1-.565-.182 1.12 1.12 0 0 1-.415-.607 2 2 0 0 1 0-.543V9.848l1.683-.4v1.821zM3 3h1.658c.402 1.37.804 2.726 1.256 4.082V3h1.633v10H5.89c-.414-1.448-.816-2.908-1.256-4.354v4.353H3z"/></svg> \ No newline at end of file
diff --git a/icons/node.svg b/icons/node.svg
new file mode 100644
index 00000000..6b54df60
--- /dev/null
+++ b/icons/node.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#3F9F61" d="M6.89 1.74a2 2 0 0 1 2.22 0l4 2.666A2 2 0 0 1 14 6.07v3.86l-.004.125a2 2 0 0 1-.887 1.539l-4 2.667-.128.078c-.608.343-1.43.213-2.217-.197-.518-.293-.642-.42-.844-.588.542-.235.844-.47 1.135-.786.413.316.926.482 1.38.173l3.842-2.595a.5.5 0 0 0 .223-.416V6.07a.5.5 0 0 0-.223-.416l-4-2.667a.5.5 0 0 0-.489-.036l-.065.036-4 2.667a.5.5 0 0 0-.223.416v3.86c0 .976.549 1.326 1.116 1.344.434-.047.645-.197.752-.315a.87.87 0 0 0 .206-.576V5.246h1.5v5.137a2.36 2.36 0 0 1-.594 1.583 2.4 2.4 0 0 1-1.074.67c-.328.112-.683.17-1.044.154l-.038.002v-.004a2.47 2.47 0 0 1-1.628-.748c-.443-.443-.692-1.032-.692-1.985L2 9.93V6.07a2 2 0 0 1 .79-1.591l.1-.073z"/><path fill="#3F9F61" d="m9.714 5.16.274.02c.617.074 1.08.316 1.396.667.34.38.353.815.353 1.101h-1.412c0 .023-.001-.037-.057-.1-.034-.036-.145-.142-.461-.178l-.149-.01c-.393-.016-.542.08-.583.115-.034.03-.064.076-.064.173 0 .084.03.172.09.234.051.051.198.163.584.163.486 0 .997.11 1.41.396.44.305.73.79.73 1.396 0 1.016-.885 1.892-2.14 1.892-1.095 0-2.174-.64-2.174-1.72h1.5c0-.046-.023-.01.075.064.094.07.286.156.6.156.538 0 .639-.313.64-.392a.2.2 0 0 0-.02-.096.2.2 0 0 0-.066-.067c-.09-.063-.275-.13-.555-.13-.699 0-1.265-.215-1.656-.614a1.83 1.83 0 0 1-.518-1.282c0-.454.164-.947.584-1.308.413-.357.977-.504 1.619-.48"/></svg> \ No newline at end of file
diff --git a/icons/nodemon.svg b/icons/nodemon.svg
new file mode 100644
index 00000000..c6d68c05
--- /dev/null
+++ b/icons/nodemon.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#76D04B" fill-rule="evenodd" d="M8.344 13.924a.57.57 0 0 1-.568 0L3.073 11.21a.57.57 0 0 1-.284-.492V5.285c0-.203.108-.39.284-.492l4.703-2.717a.57.57 0 0 1 .568 0l4.704 2.717a.57.57 0 0 1 .284.492v5.432a.57.57 0 0 1-.285.493zm2.552-7.34.21.121a.34.34 0 0 1 .172.3l-.005 4.425a.172.172 0 0 1-.258.15l-1.697-.973a.35.35 0 0 1-.173-.299V8.241a.34.34 0 0 0-.173-.299l-.722-.416a.34.34 0 0 0-.345 0l-.722.416a.34.34 0 0 0-.173.299v2.067a.35.35 0 0 1-.172.3l-1.698.971a.17.17 0 0 1-.171 0 .17.17 0 0 1-.086-.149l-.006-4.425c0-.125.066-.239.172-.3l.21-.12c-.322-.477-.516-1.192-.274-2.261 0 0 .545 1.525 1.639 1.475l1.281-.738a.34.34 0 0 1 .158-.045h.03a.33.33 0 0 1 .157.045l1.28.739c1.094.05 1.638-1.475 1.638-1.475.242 1.07.05 1.785-.273 2.26Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/npm.svg b/icons/npm.svg
new file mode 100644
index 00000000..2097fb9b
--- /dev/null
+++ b/icons/npm.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M4 4h8v8h-1.5V6h-3v6H4zm8.5-1.55h-9a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1.05h9a1 1 0 0 0 1.05-1.05v-9a1 1 0 0 0-1.05-1" style="fill:#c63939"/></svg> \ No newline at end of file
diff --git a/icons/npmlock.svg b/icons/npmlock.svg
new file mode 100644
index 00000000..7894d836
--- /dev/null
+++ b/icons/npmlock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M4 4h8v8h-1.5V6h-3v6H4zm8.5-1.55h-9a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1.05h9a1 1 0 0 0 1.05-1.05v-9a1 1 0 0 0-1.05-1"/></svg> \ No newline at end of file
diff --git a/icons/nuxt.svg b/icons/nuxt.svg
new file mode 100644
index 00000000..9579d483
--- /dev/null
+++ b/icons/nuxt.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#52C38F" d="M8.772 12.577h4.76a.9.9 0 0 0 .429-.129c.131-.075.267-.17.343-.3a.87.87 0 0 0 .129-.429.87.87 0 0 0-.129-.429l-3.216-5.532a.8.8 0 0 0-.3-.3 1.04 1.04 0 0 0-.472-.129.9.9 0 0 0-.43.13.8.8 0 0 0-.3.3l-.814 1.414-1.63-2.744c-.076-.13-.168-.268-.3-.343S6.565 4 6.413 4s-.297.01-.429.086a1 1 0 0 0-.343.343L1.653 11.29c-.076.13-.086.279-.086.429s.01.299.086.429.212.225.343.3a.9.9 0 0 0 .43.129h3.001c1.19 0 2.055-.534 2.659-1.544l1.458-2.53.772-1.33 2.358 4.031h-3.13zm-3.388-1.373H3.283l3.13-5.403L8 8.503l-1.051 1.832c-.4.656-.858.87-1.565.87"/></svg> \ No newline at end of file
diff --git a/icons/nvidia.svg b/icons/nvidia.svg
new file mode 100644
index 00000000..21c8f9d0
--- /dev/null
+++ b/icons/nvidia.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#76B900" fill-rule="evenodd" d="M3.72 4.307C4.676 3.69 5.816 3.25 7 3.25c1.64 0 2.786.414 3.666 1.001.647.432 1.155.971 1.551 1.392q.17.181.313.327l.435.434-.341.512-.061.092c-.471.707-.999 1.5-1.63 2.112-.678.659-1.534 1.169-2.647 1.169-.98 0-1.808-.233-2.487-.683-.675-.45-1.15-1.08-1.48-1.79L4.1 7.34l.37-.37c.884-.884 1.822-1.22 2.718-1.22.863 0 1.614.312 2.148.58l-.67 1.34c-.466-.232-.965-.42-1.477-.42-.367 0-.784.096-1.236.42q.287.426.677.686c.393.261.922.432 1.657.432.601 0 1.102-.259 1.602-.744.405-.393.769-.894 1.152-1.46-.373-.395-.717-.759-1.206-1.085C9.214 5.086 8.36 4.75 7 4.75c-.817 0-1.677.309-2.47.818a6.8 6.8 0 0 0-1.726 1.595c.527 2.152 2.056 3.848 4.416 4.09 2.214.229 3.6-.45 4.496-1.22.713-.614 1.1-1.247 1.396-1.73.101-.164.191-.312.28-.434l1.216.878a4 4 0 0 0-.125.2c-.265.44-.856 1.42-1.788 2.222-1.194 1.028-2.986 1.85-5.629 1.577-3.278-.337-5.254-2.82-5.802-5.601l-.06-.304.172-.257a8.2 8.2 0 0 1 2.343-2.277" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/nvim.svg b/icons/nvim.svg
new file mode 100644
index 00000000..aa7723dc
--- /dev/null
+++ b/icons/nvim.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="url(#a)" fill-rule="evenodd" d="M2 4.58 5 2v12l-3-2.551V4.581Z" clip-rule="evenodd"/><path fill="url(#b)" fill-rule="evenodd" d="M13.98 4.604 11 2v12l3-2.551z" clip-rule="evenodd"/><path fill="url(#c)" fill-rule="evenodd" d="m5 2 7.973 10.324L11 14 2.8 3.89z" clip-rule="evenodd"/><defs><linearGradient id="a" x1="3.5" x2="3.5" y1="2" y2="14" gradientUnits="userSpaceOnUse"><stop stop-color="#16B0ED" stop-opacity=".8"/><stop offset="1" stop-color="#0F59B2" stop-opacity=".837"/></linearGradient><linearGradient id="b" x1="12.5" x2="12.5" y1="2" y2="14" gradientUnits="userSpaceOnUse"><stop stop-color="#7DB643"/><stop offset="1" stop-color="#367533"/></linearGradient><linearGradient id="c" x1="7.666" x2="7.666" y1="2" y2="14" gradientUnits="userSpaceOnUse"><stop stop-color="#88C649" stop-opacity=".8"/><stop offset="1" stop-color="#439240" stop-opacity=".84"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/icons/nvm.svg b/icons/nvm.svg
new file mode 100644
index 00000000..e16d93cb
--- /dev/null
+++ b/icons/nvm.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#3F9F61" d="M13.752 5.355a.5.5 0 0 1 .248.432v7.491a.5.5 0 0 1-.676.469l-3-1.125a.5.5 0 0 1-.324-.469V8.31a.5.5 0 0 0-.276-.447l-1.5-.75a.5.5 0 0 0-.448 0l-1.5.75A.5.5 0 0 0 6 8.309v3.845a.5.5 0 0 1-.324.468L2.68 13.746a.5.5 0 0 1-.676-.467L2 5.787a.5.5 0 0 1 .248-.432l5.5-3.208a.5.5 0 0 1 .504 0z"/></svg> \ No newline at end of file
diff --git a/icons/nx.svg b/icons/nx.svg
new file mode 100644
index 00000000..3e15532e
--- /dev/null
+++ b/icons/nx.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><g clip-path="url(#a)"><path fill="#457CE7" d="m7.804 9.795-1.788 2.973-2.965-5.092L3.045 13H1V4h2.068l2.995 5.332V6.92zm.689-3.75c.014-.025 0-2.02.004-2.045h-2.07c0 .031-.003 2.015 0 2.045zm6.308 4.217a.43.43 0 0 0 .148-.166.46.46 0 0 0 .05-.223c-.005-1.805-1.383-3.35-3.082-3.35-.51 0-1.013.134-1.463.392a3.16 3.16 0 0 0-1.112 1.084c-.006-.016-.874-1.46-.883-1.476H6.43l1.96 3.272L6.476 13h2.018l.87-1.42.885 1.42h1.998l-1.812-3.033a.45.45 0 0 1-.047-.192c0-.212.039-.422.115-.618s.188-.374.33-.524c.14-.15.307-.27.492-.35a1.4 1.4 0 0 1 .58-.124h.012c.854 0 .997.546 1.181.798.364.505 1.09.284 1.09.941q.002.116.057.215a.4.4 0 0 0 .15.155.39.39 0 0 0 .405-.006Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M1 4h14v9H1z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/icons/obj.svg b/icons/obj.svg
new file mode 100644
index 00000000..db1183cd
--- /dev/null
+++ b/icons/obj.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D9295E" fill-rule="evenodd" d="M8 1.75a.75.75 0 0 1 .75.75v2.036l3.585 1.793A.75.75 0 0 1 12.75 7v3.537l1.585.792a.75.75 0 1 1-.67 1.342L12 11.839 8.335 13.67a.75.75 0 0 1-.67 0L4 11.839l-1.665.832a.75.75 0 1 1-.67-1.342l1.585-.793V7a.75.75 0 0 1 .415-.67L7.25 4.535V2.5A.75.75 0 0 1 8 1.75m0 4.089L5.677 7 8 8.161 10.323 7zm3.25 2.375-2.5 1.25v2.322l2.5-1.25zm-4 3.572V9.465l-2.5-1.25v2.322z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/ocaml.svg b/icons/ocaml.svg
new file mode 100644
index 00000000..6a55bf27
--- /dev/null
+++ b/icons/ocaml.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DF9947" d="M11 5c0 1.6-.5 2-1 2S9 7 9 6c0-2-1-2-1.5-2-1.5 0-1 2-2 2s-.237-2-2-2C2 4 2 6 2 8v5h1.585c0-1 .415-2.7.415-3.5 1 1 3 .5 3.5 0L8 13h1.415c0-.333.085-2.2.085-3v-.5s3-.5 3.585-3.5c0 0 1.084.15 1.5-.35S15 4 14.585 4h-1.75C12.5 3 11 3 11 4z"/></svg> \ No newline at end of file
diff --git a/icons/ocamli.svg b/icons/ocamli.svg
new file mode 100644
index 00000000..afe40e4b
--- /dev/null
+++ b/icons/ocamli.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DF9947" d="M8 5.75c0 1.6-.5 2-1 2s-1 0-1-1c0-2-1-2-1.5-2-1.5 0-1 2-2 2v3.75l2-.25.5 3.5h1.415c0-.333.085-2.2.085-3v-.5s3-.5 3.585-3.5c0 0 1.084.15 1.5-.35s.415-1.65 0-1.65h-1.75C9.5 3.75 8 3.75 8 4.75z"/><path fill="#DF9947" fill-rule="evenodd" d="M13 3.2H3v9.6h10zM3 2c-.552 0-1 .537-1 1.2v9.6c0 .663.448 1.2 1 1.2h10c.552 0 1-.537 1-1.2V3.2c0-.663-.448-1.2-1-1.2z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/ocamll.svg b/icons/ocamll.svg
new file mode 100644
index 00000000..acae802a
--- /dev/null
+++ b/icons/ocamll.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><g clip-path="url(#a)"><path fill="#DF6C47" d="M11 5c0 1.6-.5 2-1 2S9 7 9 6c0-2-1-2-1.5-2-1.5 0-1 2-2 2s-.237-2-2-2C2 4 2 6 2 8v5h1.585c0-1 .415-2.7.415-3.5 1 1 3 .5 3.5 0L8 13h1.415c0-.333.085-2.2.085-3v-.5s3-.5 3.585-3.5c0 0 1.084.15 1.5-.35S15 4 14.585 4h-1.75C12.5 3 11 3 11 4z"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/icons/ocamly.svg b/icons/ocamly.svg
new file mode 100644
index 00000000..ac73c3c6
--- /dev/null
+++ b/icons/ocamly.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#DF9947" fill-rule="evenodd" d="M2 3.2C2 2.537 2.448 2 3 2h10c.552 0 1 .537 1 1.2v9.6c0 .663-.448 1.2-1 1.2H6.683v-3.75s3.512-.5 4.196-3.5c0 0 1.27.15 1.756-.35.487-.5.487-1.65 0-1.65h-2.049c-.391-1-2.147-1-2.147 0v1c0 1.6-.586 2-1.17 2-.586 0-1.172 0-1.172-1 0-2-1.17-2-1.756-2-.966 0-1.223.606-1.455 1.151-.188.445-.36.849-.886.849zm0 7.3v2.3c0 .663.448 1.2 1 1.2h1.927l-.586-3.75z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/odin.svg b/icons/odin.svg
new file mode 100644
index 00000000..0724ea71
--- /dev/null
+++ b/icons/odin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path stroke="#909090" stroke-opacity=".9" stroke-width="1.5" d="m8.297 2.758-5.064 7.445a5.25 5.25 0 0 1 5.064-7.444ZM13.25 8a5.25 5.25 0 0 1-8.382 4.214l5.913-8.668A5.25 5.25 0 0 1 13.25 8Z"/></svg> \ No newline at end of file
diff --git a/icons/opengl.svg b/icons/opengl.svg
new file mode 100644
index 00000000..539c7bab
--- /dev/null
+++ b/icons/opengl.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#4CA4DA" fill-rule="evenodd" d="M10 3c1.188 0 2.295.288 3.227.784C11.93 2.683 10.133 2 8.144 2 4.198 2 1 4.686 1 8s3.198 6 7.144 6c1.989 0 3.787-.682 5.083-1.784A6.9 6.9 0 0 1 10 13c-3.314 0-6-2.239-6-5s2.686-5 6-5m-1.412 7.828a2.1 2.1 0 0 1-.814.172q-.647 0-1.166-.229a2.5 2.5 0 0 1-.873-.63 2.8 2.8 0 0 1-.545-.944A3.5 3.5 0 0 1 5 8.028q0-.642.19-1.193.188-.549.543-.96a2.5 2.5 0 0 1 .872-.642A2.8 2.8 0 0 1 7.771 5q.434 0 .842.133.407.133.735.39.328.258.541.635t.261.866H8.965q-.111-.48-.427-.721a1.23 1.23 0 0 0-.767-.24q-.42 0-.711.164a1.36 1.36 0 0 0-.475.442q-.18.277-.264.63a3.2 3.2 0 0 0 0 1.434q.083.34.265.614t.475.438q.292.165.712.165.618 0 .953-.316.337-.316.392-.916H7.87v-.941h2.367v3.094H9.45l-.126-.649q-.33.433-.735.606Zm3.662-5.683v4.66H15v1.062h-3.989V5.145z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/oxlint.svg b/icons/oxlint.svg
new file mode 100644
index 00000000..e91792ff
--- /dev/null
+++ b/icons/oxlint.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#AC4C19" d="M10 4q-.002-.072-.008-.142l-.01-.108A2 2 0 0 1 8 5.5V6a2 2 0 0 0 2-2"/><path fill="#AC4C19" d="M9 5.73C8.706 5.9 8.365 6 8 6v-.5h1z"/><path fill="#AC4C19" d="M9.007 9.57c-.004.451 0 1.93 1.493 1.93.724 0 1.772-.41 2.336-1.97l-.803-.029C12.5 9 13.15 7.899 13.5 7l.207.212c.52.554 1.23 1.538.793 3.288l-.577-.595C13.368 13.154 9.84 14 8 14V5.5h1c0 1 .007 1.5.007 4.07"/><path fill="#FF945A" d="M8 5v9c-1.812 0-5.264-.82-5.899-3.947L1.5 10.5c-.5-2 .5-3 1-3.5.35.899 1.266 2 1.733 2.501l-1.066.04c.565 1.55 1.61 1.959 2.333 1.959 1.492 0 1.497-1.479 1.493-1.93C6.993 7 7 6 7 5z"/><path fill="#FF945A" d="m5 7 3-.5 3 .5v1l-3 .5L5 8zm3-5a2 2 0 1 1 0 4 2 2 0 0 1 0-4m0 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/><path fill="#AC4C19" d="M9.003 6.83 8 7.5v-1h1.003zM8 7.5v1l3-.5v-.5zm0 0-1.2.8L5 8v-.5z"/><path fill="#FF945A" d="M13.5 7c.5 4.5-2.5 5.5-4.5 5.5.72 0 1.114-.48 1.315-1.009q.089.008.185.009c.724 0 1.772-.41 2.336-1.97l-.803-.029C12.5 9 13.15 7.899 13.5 7"/></svg> \ No newline at end of file
diff --git a/icons/panda.svg b/icons/panda.svg
new file mode 100644
index 00000000..057696db
--- /dev/null
+++ b/icons/panda.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#EEAC30" d="M10.174 3.286c-.917-.295-1.851-.336-2.804-.24a5.6 5.6 0 0 0-1.54.39c-1.068.45-1.87 1.232-2.349 2.408-.343.842-.467 1.738-.48 2.657-.013.97.095 1.928.267 2.877.156.86.363 1.704.66 2.519.029.077.064.104.139.103l2.814-.002h.834l.067-.003.04-.002-.015-.042-.026-.07-.206-.488q-.229-.526-.437-1.063c-.412-1.089-.727-2.21-.824-3.397-.042-.524-.036-1.045.093-1.555.148-.584.465-.995.991-1.168.475-.16.981-.154 1.453.017.429.157.708.486.828.978.09.379.09.76.022 1.143-.054.293-.161.56-.354.775-.345.384-.777.473-1.24.444a4 4 0 0 1-.25-.026l-.12-.014.002.04a.4.4 0 0 0 .006.068l.058.268c.045.215.09.431.15.642q.17.623.397 1.214a6.3 6.3 0 0 0 3.118-1.104l.044-.03a3.2 3.2 0 0 0 1.07-1.255c.408-.857.487-1.773.366-2.72-.125-.976-.515-1.795-1.186-2.437a4.04 4.04 0 0 0-1.588-.927"/></svg> \ No newline at end of file
diff --git a/icons/parcel.svg b/icons/parcel.svg
new file mode 100644
index 00000000..8385516b
--- /dev/null
+++ b/icons/parcel.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D9AA79" d="m2.5 6 5 2v6l-5-2z"/><path fill="#AF835E" d="m13.5 6-5 2v6l5-2z"/><path fill="#997354" d="M8 3 3 5l5 2 5-2z"/></svg> \ No newline at end of file
diff --git a/icons/pascal.svg b/icons/pascal.svg
new file mode 100644
index 00000000..74d9f78f
--- /dev/null
+++ b/icons/pascal.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#1D7BF5" d="M3.5 8.5c-.495 2.267-.388 4.654.5 5.5h4c-.5-.458-1-2.292-1-3.667S8 5.75 7 3H3c.666.836 1 3.208.5 5.5M8 10c1.5-2 1.5-5.5 0-7h2.778C11.518 3 13 4.05 13 6.5S11.704 10 10.778 10z"/></svg> \ No newline at end of file
diff --git a/icons/pdf.svg b/icons/pdf.svg
new file mode 100644
index 00000000..595f2b32
--- /dev/null
+++ b/icons/pdf.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M6.52 9.1a4.2 4.2 0 0 0-2 1.69c-.09.27-.08.46 0 .56a.7.7 0 0 0 .48.16h.15c.59-.17 1.09-1.15 1.31-2.39m4.92-1.92a7.4 7.4 0 0 0-2.73.8h.15a6 6 0 0 0 1.26.1 6 6 0 0 0 1.72-.1.32.32 0 0 0 .22-.37.5.5 0 0 0-.49-.45M5.11 4.5 5 4.56a1 1 0 0 0 0 1 3.77 3.77 0 0 0 1.63 1.86c-.06-1.24-.44-2.58-1.39-2.89h-.13m-1.62 6.55a2.4 2.4 0 0 1 .11-.6A4.8 4.8 0 0 1 6 8.23a4.7 4.7 0 0 1-2-2.2 2 2 0 0 1 .15-2.12 1.13 1.13 0 0 1 .95-.41 1.2 1.2 0 0 1 .45.08c1.25.41 2 1.83 2.08 3.83a9.2 9.2 0 0 1 3.79-1.23h.13A1.52 1.52 0 0 1 13 7.52a1.31 1.31 0 0 1-.83 1.39 6 6 0 0 1-2 .26A7 7 0 0 1 8.55 9l-.66-.16-.32-.08c-.19 1.65-.86 3.31-2 3.64a1.3 1.3 0 0 1-.47.08 1.77 1.77 0 0 1-1.16-.42 1.3 1.3 0 0 1-.41-.94v-.07M12.5 2h-9A1.54 1.54 0 0 0 2 3.54v9A1.54 1.54 0 0 0 3.5 14h9a1.54 1.54 0 0 0 1.5-1.5v-9A1.54 1.54 0 0 0 12.5 2" style="fill:#dd2a40"/></svg> \ No newline at end of file
diff --git a/icons/perl.svg b/icons/perl.svg
new file mode 100644
index 00000000..063d4bd0
--- /dev/null
+++ b/icons/perl.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#9587EF" fill-rule="evenodd" d="M7.885 2.305c.17.844.278 2.876 0 4.127-.796 3.596-.822 6.567 1.71 7.58s4.988-2.14 4.153-4.665c-.77-2.33-2.356-3.258-3.165-3.731l-.186-.11a25 25 0 0 0-.82-.47c-.42-.232-.771-.428-.915-.566-.05-.28-.089-.564-.124-.833-.116-.872-.208-1.568-.653-1.332m1.16 3.61c1.504.688 3.668 2.38 3.668 4.381s-1.176 2.51-2.037 2.732c.416-.782.763-1.642.434-3.62-.234-1.404-.949-2.218-1.718-3.093z" clip-rule="evenodd"/><path fill="#9587EF" d="M7.436 4.997c.39-2.033-.072-3.742-.235-3.905-.324.093-.224.255-.19.458.157.973.104 1.443.104 2.198 0 1.955-2.255 3.387-2.52 5.243-.174 1.22-.097 2.267.832 3.44s2.79 1.33 2.009.744C6.654 12.59 5.774 11.35 5.774 10c0-1.952 1.173-2.462 1.662-5.003"/><path fill="#9587EF" d="M6.215 5.124c.528-.675.547-1.999.455-2.58-.23 0-.128.675-.328 1.323-.267.867-.687 1.23-1.21 1.6-1.06.748-2.892 2.66-3.041 4.236-.047.5-.131 1.922.94 3.266 1.268 1.592 4.188 1.374 3.712 1.162-1.842-.822-3.03-1.643-3.31-3.527-.33-2.219 2.122-4.636 2.782-5.48"/></svg> \ No newline at end of file
diff --git a/icons/perlm.svg b/icons/perlm.svg
new file mode 100644
index 00000000..e79e3439
--- /dev/null
+++ b/icons/perlm.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#61C5BA" fill-rule="evenodd" d="M7.895 2.305c.169.844.277 2.876 0 4.127-.797 3.596-.822 6.567 1.71 7.58s4.987-2.14 4.152-4.665c-.77-2.33-2.355-3.258-3.165-3.731l-.186-.11a26 26 0 0 0-.82-.47c-.419-.232-.77-.428-.914-.566-.051-.28-.09-.564-.125-.833-.116-.872-.208-1.568-.652-1.332m1.16 3.61c1.503.688 3.667 2.38 3.667 4.381s-1.176 2.51-2.036 2.732c.416-.782.763-1.642.433-3.62-.234-1.404-.948-2.218-1.717-3.093z" clip-rule="evenodd"/><path fill="#61C5BA" d="M7.445 4.997c.391-2.033-.072-3.742-.235-3.905-.323.093-.223.255-.19.458.157.973.104 1.443.104 2.198 0 1.955-2.255 3.387-2.52 5.243-.174 1.22-.096 2.267.832 3.44.929 1.173 2.791 1.33 2.01.744C6.662 12.59 5.783 11.35 5.783 10c0-1.952 1.173-2.462 1.661-5.003Z"/><path fill="#61C5BA" d="M6.225 5.124c.528-.675.546-1.999.455-2.58-.23 0-.128.675-.328 1.323-.268.867-.688 1.23-1.21 1.6-1.06.748-2.893 2.66-3.042 4.236-.047.5-.13 1.922.94 3.266 1.268 1.592 4.188 1.374 3.712 1.162-1.842-.822-3.03-1.643-3.31-3.527-.33-2.219 2.122-4.636 2.783-5.48"/></svg> \ No newline at end of file
diff --git a/icons/pfx.svg b/icons/pfx.svg
new file mode 100644
index 00000000..935ffc9a
--- /dev/null
+++ b/icons/pfx.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D7597F" fill-rule="evenodd" d="M7.83 9a3.001 3.001 0 1 1 0-2H14v2h-1v2h-3V9zM5 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/photoshop.svg b/icons/photoshop.svg
new file mode 100644
index 00000000..db75bb19
--- /dev/null
+++ b/icons/photoshop.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><path d="M12.5 14h-9A1.55 1.55 0 0 1 2 12.5v-9A1.55 1.55 0 0 1 3.5 2h9a1.55 1.55 0 0 1 1.55 1.5v9A1.55 1.55 0 0 1 12.5 14" style="fill:#001d37"/><path d="M3.91 4.43h1.24v7H3.91Zm.57 3.08h1.68a.7.7 0 0 0 .33-.08.6.6 0 0 0 .21-.25.84.84 0 0 0 .08-.37v-.46A.9.9 0 0 0 6.7 6a.56.56 0 0 0-.54-.34H4.48V4.43h1.68a2.1 2.1 0 0 1 1 .22 1.55 1.55 0 0 1 .66.63 2 2 0 0 1 .22 1v.66a2 2 0 0 1-.22 1 1.5 1.5 0 0 1-.66.62 2.1 2.1 0 0 1-1 .22H4.48Zm4.89 3.83a1.5 1.5 0 0 1-.65-.43 1.5 1.5 0 0 1-.34-.69l1-.42a.93.93 0 0 0 .36.42 1.1 1.1 0 0 0 .55.14.87.87 0 0 0 .46-.11A.35.35 0 0 0 11 10a.35.35 0 0 0-.1-.27.53.53 0 0 0-.25-.15l-.43-.12h-.36a4.5 4.5 0 0 1-.69-.25 1.13 1.13 0 0 1-.45-.42 1.4 1.4 0 0 1-.19-.78 1.53 1.53 0 0 1 .21-.81 1.4 1.4 0 0 1 .6-.54 2.1 2.1 0 0 1 .91-.18 2.5 2.5 0 0 1 .84.14 1.6 1.6 0 0 1 .6.42 1.6 1.6 0 0 1 .32.66L11 8a.72.72 0 0 0-.29-.35.8.8 0 0 0-.44-.13.7.7 0 0 0-.41.11.34.34 0 0 0 0 .53.6.6 0 0 0 .27.15 4 4 0 0 0 .45.12h.12a3.5 3.5 0 0 1 .76.23 1.13 1.13 0 0 1 .5.43 1.55 1.55 0 0 1 .2.85 1.5 1.5 0 0 1-.22.83 1.4 1.4 0 0 1-.63.54 2.2 2.2 0 0 1-1 .2 2.3 2.3 0 0 1-.94-.17" style="fill:#278dd4"/></svg> \ No newline at end of file
diff --git a/icons/php.svg b/icons/php.svg
new file mode 100644
index 00000000..aa240ba3
--- /dev/null
+++ b/icons/php.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M15 7c0-3-3.5-3-3.5-3H8.89C9.38 5.18 8 7 8 7h-.5a5.6 5.6 0 0 0 .5-.74A2.9 2.9 0 0 0 8.4 4v-.08c-.25-.5-.87-.87-2.11-.91H6C2.68 3 1.82 5.2 1.6 6.34a3 3 0 0 0-.1.66v5a.83.83 0 0 0 .61.22A2.3 2.3 0 0 0 3 12v-1.5A1.47 1.47 0 0 1 4.5 9v4a4.5 4.5 0 0 0 1.44.22A5.5 5.5 0 0 0 7.5 13v-2h3v2a4.5 4.5 0 0 0 1.44.22A5.5 5.5 0 0 0 13.5 13V9a4.5 4.5 0 0 0 .5-2.5 2.6 2.6 0 0 0-.28-1.25A2.6 2.6 0 0 1 14.5 7ZM4 6.5a.5.5 0 1 1 .5.5.5.5 0 0 1-.5-.5" style="fill:#748ce2"/></svg> \ No newline at end of file
diff --git a/icons/plantuml.svg b/icons/plantuml.svg
new file mode 100644
index 00000000..95d2576b
--- /dev/null
+++ b/icons/plantuml.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#5EA429" d="M2 2h5a1 1 0 0 1 1 1v3H3a1 1 0 0 1-1-1z"/><path fill="#98DB4F" d="M14 4H9a1 1 0 0 0-1 1v3h5a1 1 0 0 0 1-1z"/><path fill="#5EA429" d="M7 5h1v8H7z"/><path fill="#98DB4F" d="M8 5h1v8H8z"/><path fill="#D6985B" d="M8 10a4 4 0 0 0-4 4h8a4 4 0 0 0-4-4"/></svg> \ No newline at end of file
diff --git a/icons/playright.svg b/icons/playright.svg
new file mode 100644
index 00000000..e48cf2c5
--- /dev/null
+++ b/icons/playright.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><g clip-path="url(#a)"><path fill="#E2574C" d="m6.384 11.4-.001.004v-.003Zm-.424-.79.014.032-.021-.05zm-.195-.586q.015.06.034.123-.018-.06-.034-.123m-.157 1.069a5.3 5.3 0 0 1-.343-1.157l-1.306.36s.16-.893 1.198-1.33c-.059-1.409.186-2.747.629-4.066-3.005 1.599-4.912.081-4.78.923.238 2.117 1.452 6.277 4.842 5.742q-.135-.228-.24-.472M2.387 7.528l1.968-.505c-.078.983-1.41 1.3-1.968.505m3.73-2.818-.01.03zm-.035.111.024-.08q-.01.038-.024.08m-.034.116.018-.058-.02.056zm-.322 1.307.009-.048zm-.022.124q.001-.026.009-.051zm-.013.088.014-.087zm-.056.362q.007-.045.012-.092zm0 .022v-.022l-.004.021zm-.015.094v-.025zm-.013.11q.001-.022.005-.042zm-.035.383.01-.116a1 1 0 0 0-.01.116M5.556 8.67c0 .054.006.109.01.163a8 8 0 0 1-.018-.316q.005.074.008.153"/><path fill="#2EAD33" d="M13.928 5.152c-.51.088-1.73.196-3.24-.196L9.45 9.584l-2.336-.636 4.53 1.234c-.662.575-1.273.84-2.508.579l-.559 2.094-.074-.016c3.261 1 5.525-2.95 6.076-5.243.268-.974.385-1.711.416-2.187.038-.537-.34-.38-1.068-.257Zm-1.253 3.456-2.012-.558c.922-1.253 2.486-.478 2.557.71zm-6.584 2.294-.034-.071zm.026-6.19-.01.03zm-.029.09q-.001.01-.006.02l.013-.039zm-.031.103-.009.03.018-.057-.009.026zm-.097 5.707.014.031-.021-.05zm-.256-4.244q.002-.026.009-.051zm-.013.088.014-.087-.015.088zm-.12.97q.007-.057.01-.115a1 1 0 0 0-.01.116ZM5.557 8.67q.005.084.012.167a10 10 0 0 1-.019-.32z"/><path fill="#1D8D22" d="M10.688 4.956C9.177 4.567 8.146 3.863 7.75 3.539c-.475-.39-.729-.68-.943-.467-.934 1.715-1.354 3.81-1.239 5.763.037.547.147 1.087.328 1.607.121.338.285.66.49.958.522.748 1.235 1.224 2.196 1.457l.552-2.095c-1.251-.38-1.74-.956-2.018-1.811l2.335.636zm-1.41 2.65-2.557-.708c.793-1.148 2.448-.633 2.558.708Z"/></g><defs><clipPath id="a"><path fill="#fff" d="M1 3h14v10H1z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/icons/plop.svg b/icons/plop.svg
new file mode 100644
index 00000000..49f4b464
--- /dev/null
+++ b/icons/plop.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="url(#paint0_linear_1852_142)" d="M8 2c1.626 2.167 4.391 5.5 4.88 7.5.59 2.425-.977 4.5-4.88 4.5v-2c1.638 0 2.4-.437 2.697-.74.211-.215.359-.532.285-1.051l-.046-.235c-.142-.582-.729-1.627-1.703-3.008a60 60 0 0 0-1.289-1.744 37 37 0 0 0-1.16 1.595c-.839 1.226-1.413 2.259-1.642 2.905l-.078.252c-.16.661-.002 1.04.239 1.286.298.303 1.06.74 2.697.74v2c-3.781 0-5.37-1.947-4.928-4.273l.05-.227C3.608 7.5 6.373 3.833 8 2"/><defs><linearGradient id="paint0_linear_1852_142" x1="8" x2="8" y1="2" y2="14" gradientUnits="userSpaceOnUse"><stop stop-color="#0ED0CD"/><stop offset="1" stop-color="#25BE74"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/icons/pnpm.svg b/icons/pnpm.svg
new file mode 100644
index 00000000..fda91755
--- /dev/null
+++ b/icons/pnpm.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M10.5 10.5h3v3h-3zm-4 0h3v3h-3zm-4 0h3v3h-3z"/><path fill="#FFCB66" d="M10.5 6.5h3v3h-3z"/><path fill="#909090" fill-opacity=".9" d="M6.5 6.5h3v3h-3z"/><path fill="#FFCB66" d="M10.5 2.5h3v3h-3zm-4 0h3v3h-3zm-4 0h3v3h-3z"/></svg> \ No newline at end of file
diff --git a/icons/pnpmlock.svg b/icons/pnpmlock.svg
new file mode 100644
index 00000000..fcfc81a9
--- /dev/null
+++ b/icons/pnpmlock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".55" d="M10.5 10.5h3v3h-3zm-4 0h3v3h-3zm-4 0h3v3h-3z"/><path fill="#909090" fill-opacity=".9" d="M10.5 6.5h3v3h-3z"/><path fill="#909090" fill-opacity=".55" d="M6.5 6.5h3v3h-3z"/><path fill="#909090" fill-opacity=".9" d="M10.5 2.5h3v3h-3zm-4 0h3v3h-3zm-4 0h3v3h-3z"/></svg> \ No newline at end of file
diff --git a/icons/poetry.svg b/icons/poetry.svg
new file mode 100644
index 00000000..93c410aa
--- /dev/null
+++ b/icons/poetry.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#00CDFA" fill-rule="evenodd" d="M9.778 9.778A10.97 10.97 0 0 0 13 2H2z" clip-rule="evenodd"/><path fill="#1055A3" fill-rule="evenodd" d="M2 13c3.038 0 5.788-1.231 7.778-3.222L11.5 11.5c-1 2-5 3.5-7.119 3.5z" clip-rule="evenodd"/><path fill="#0077C3" fill-rule="evenodd" d="M9.778 9.778A10.97 10.97 0 0 1 2 13V2z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/poetrylock.svg b/icons/poetrylock.svg
new file mode 100644
index 00000000..0126924b
--- /dev/null
+++ b/icons/poetrylock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M9.778 9.778A10.97 10.97 0 0 0 13 2H2z" clip-rule="evenodd"/><path fill="#909090" fill-opacity=".5" fill-rule="evenodd" d="M2 13c3.038 0 5.788-1.231 7.778-3.222L11.5 11.5c-1 2-5 3.5-7.119 3.5z" clip-rule="evenodd"/><path fill="#909090" fill-opacity=".75" fill-rule="evenodd" d="M9.778 9.778A10.97 10.97 0 0 1 2 13V2z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/postcssconfig.svg b/icons/postcssconfig.svg
new file mode 100644
index 00000000..845d514b
--- /dev/null
+++ b/icons/postcssconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#dd3a0a}</style></defs><path d="M8.27 1.51h-.56A6.51 6.51 0 0 0 1.5 8a6.3 6.3 0 0 0 .5 2.41 4.5 4.5 0 0 0 .27.59 6.49 6.49 0 0 0 11.52 0q.15-.29.27-.57a6.5 6.5 0 0 0-5.79-8.92M11 7.58 12.56 10H11ZM10 10H6V6h4Zm-5 0H3.42L5 7.55Zm1.65-5L8 2.92 9.33 5ZM2.5 8A5.52 5.52 0 0 1 7 2.59L5.46 5 5 5.71 2.67 9.33A5.3 5.3 0 0 1 2.5 8M8 13.5A5.49 5.49 0 0 1 3.4 11h9.2A5.49 5.49 0 0 1 8 13.5m3-7.75L10.52 5 9 2.59A5.51 5.51 0 0 1 13.5 8a5.4 5.4 0 0 1-.17 1.35Z" class="cls-1"/><circle cx="8" cy="8" r="1.5" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/powershell.svg b/icons/powershell.svg
new file mode 100644
index 00000000..75cc5967
--- /dev/null
+++ b/icons/powershell.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0092C6" d="M7.4 11.49a.498.498 0 0 1-.352-.854.5.5 0 0 1 .352-.146h2.404a.5.5 0 0 1 .49.49.49.49 0 0 1-.49.48H7.4zm-3.99-.54a.48.48 0 0 1 .21-.39L7.89 7.5 5.065 5.41a.53.53 0 0 1-.11-.7.46.46 0 0 1 .39-.21c.103 0 .203.032.289.09l3.371 2.5a.52.52 0 0 1 0 .82l-4.828 3.5a.47.47 0 0 1-.28.09.46.46 0 0 1-.398-.21.5.5 0 0 1-.08-.29l-.01-.05ZM13.176 3H4.198a.8.8 0 0 0-.698.59l-2.464 8.35A.822.822 0 0 0 1.804 13h8.978a.8.8 0 0 0 .758-.59l2.424-8.35A.822.822 0 0 0 13.176 3"/></svg> \ No newline at end of file
diff --git a/icons/powershelldata.svg b/icons/powershelldata.svg
new file mode 100644
index 00000000..e5ae7e0e
--- /dev/null
+++ b/icons/powershelldata.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#C55FE9" d="M7.4 11.49a.498.498 0 0 1-.352-.854.5.5 0 0 1 .352-.146h2.404a.5.5 0 0 1 .49.49.49.49 0 0 1-.49.48H7.4zm-3.99-.54a.48.48 0 0 1 .21-.39L7.89 7.5 5.065 5.41a.53.53 0 0 1-.11-.7.46.46 0 0 1 .39-.21c.103 0 .203.032.289.09l3.371 2.5a.52.52 0 0 1 0 .82l-4.828 3.5a.47.47 0 0 1-.28.09.46.46 0 0 1-.398-.21.5.5 0 0 1-.08-.29l-.01-.05ZM13.176 3H4.198a.8.8 0 0 0-.698.59l-2.464 8.35A.822.822 0 0 0 1.804 13h8.978a.8.8 0 0 0 .758-.59l2.424-8.35A.822.822 0 0 0 13.176 3"/></svg> \ No newline at end of file
diff --git a/icons/powershellmodule.svg b/icons/powershellmodule.svg
new file mode 100644
index 00000000..9b18531e
--- /dev/null
+++ b/icons/powershellmodule.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#82C25B" d="M7.4 11.49a.498.498 0 0 1-.352-.854.5.5 0 0 1 .352-.146h2.404a.5.5 0 0 1 .49.49.49.49 0 0 1-.49.48H7.4zm-3.99-.54a.48.48 0 0 1 .21-.39L7.89 7.5 5.065 5.41a.53.53 0 0 1-.11-.7.46.46 0 0 1 .39-.21c.103 0 .203.032.289.09l3.371 2.5a.52.52 0 0 1 0 .82l-4.828 3.5a.47.47 0 0 1-.28.09.46.46 0 0 1-.398-.21.5.5 0 0 1-.08-.29l-.01-.05ZM13.176 3H4.198a.8.8 0 0 0-.698.59l-2.464 8.35A.822.822 0 0 0 1.804 13h8.978a.8.8 0 0 0 .758-.59l2.424-8.35A.822.822 0 0 0 13.176 3"/></svg> \ No newline at end of file
diff --git a/icons/precommit.svg b/icons/precommit.svg
new file mode 100644
index 00000000..8cdddf8f
--- /dev/null
+++ b/icons/precommit.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#EFB520" d="M6.586 1.914a2 2 0 0 1 2.828 0l4.672 4.672a2 2 0 0 1 0 2.828l-4.672 4.672a2 2 0 0 1-2.828 0L1.914 9.414a2 2 0 0 1 0-2.828z"/><path fill="#212D23" d="M7.293 2.707a1 1 0 0 1 1.338-.07l.076.07 4.586 4.586.07.076a1 1 0 0 1-.07 1.338l-4.586 4.586-.076.07a1 1 0 0 1-1.262 0l-.076-.07-4.586-4.586-.068-.076a1 1 0 0 1 0-1.262l.068-.076zM3.413 8 8 12.586 12.586 8 8 3.414z"/><path fill="#212D23" d="M8.5 5.5c1 0 1.506.94 1.506 1.796C10.006 8.44 9.5 9 8.5 9h-1v1.5h-1v-5zM7.5 8h.737c.5 0 .776-.3.77-.704-.004-.404-.189-.796-.77-.796H7.5z"/></svg> \ No newline at end of file
diff --git a/icons/prettier.svg b/icons/prettier.svg
new file mode 100644
index 00000000..bf9dea64
--- /dev/null
+++ b/icons/prettier.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D247D2" d="M6.5 13h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1"/><path fill="#FA0" d="M6.5 11h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1"/><path fill="#D247D2" d="M11 9H3.5a.5.5 0 0 0 0 1H11a.5.5 0 0 0 0-1"/><path fill="#F50000" d="M13 7h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1"/><path fill="#FA0" d="M13 5h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1"/><path fill="#0FBEC0" d="M6.5 7h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1"/><path fill="#F50000" d="M6.5 5h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1"/><path fill="#0FBEC0" d="M11 3H3.5a.5.5 0 0 0 0 1H11a.5.5 0 0 0 0-1"/></svg> \ No newline at end of file
diff --git a/icons/prettierignore.svg b/icons/prettierignore.svg
new file mode 100644
index 00000000..ad47d046
--- /dev/null
+++ b/icons/prettierignore.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M6.5 13h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1m0-2h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1M11 9H3.5a.5.5 0 0 0 0 1H11a.5.5 0 0 0 0-1m2-2h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1m0-2h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1M6.5 7h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1m0-2h-3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1M11 3H3.5a.5.5 0 0 0 0 1H11a.5.5 0 0 0 0-1"/></svg> \ No newline at end of file
diff --git a/icons/prisma.svg b/icons/prisma.svg
new file mode 100644
index 00000000..9dccf1e2
--- /dev/null
+++ b/icons/prisma.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#57CD8E" fill-rule="evenodd" d="M2.114 10.237a.506.506 0 0 1-.006-.633l5.505-7.319c.306-.407 1.045-.371 1.29.062l5.03 8.892c.186.33-.029.718-.456.823l-7.822 1.913c-.315.077-.654-.026-.83-.253zm6.134-5.812c.053-.215.415-.246.522-.044l3.469 6.542c.065.123-.016.265-.174.304L6.66 12.542c-.199.048-.389-.093-.348-.259z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/prolog.svg b/icons/prolog.svg
new file mode 100644
index 00000000..2d73705c
--- /dev/null
+++ b/icons/prolog.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EC4B5E" d="M7 8.5c0-.828-.672-1-1.5-1S4 7.672 4 8.5a1.5 1.5 0 1 0 3 0m5 0c0-.828-.672-1-1.5-1S9 7.672 9 8.5a1.5 1.5 0 1 0 3 0m-4 3L7 10l1-.5 1 .5z"/><path fill="#EC4B5E" fill-rule="evenodd" d="M2.507 2.085C3 3.5 3.255 5.5 2.677 6.681l-.09.181C2.233 7.572 2 8.042 2 9.49c0 2.605 2.11 3.307 3.862 3.89.946.315 1.788.595 2.138 1.121.35-.526 1.192-.806 2.138-1.12C11.89 12.796 14 12.094 14 9.49c0-1.192-.169-1.873-.845-3.064S13 3 13.239 2c-.394.397-1.52 1.345-2.873 1.957-1.866.543-3.589.514-4.901 0-.507-.198-1.809-.85-2.958-1.872M5.5 11a2.5 2.5 0 0 0 1.097-.253L8 12.5l1.403-1.753A2.5 2.5 0 1 0 8 8.5 2.5 2.5 0 1 0 5.5 11" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/prompt.svg b/icons/prompt.svg
new file mode 100644
index 00000000..34af1f31
--- /dev/null
+++ b/icons/prompt.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M4.47 5.47a.75.75 0 0 1 1.004-.052l.056.052L8.06 8l-2.53 2.53a.75.75 0 1 1-1.06-1.06L5.94 8 4.47 6.53l-.052-.056A.75.75 0 0 1 4.47 5.47M11 9.25a.75.75 0 0 1 0 1.5H8.5a.75.75 0 0 1 0-1.5z"/><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M13 3a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1h-3l-2 2-2-2H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-9.5 8.5h3.121L8 12.879 9.379 11.5H12.5v-7h-9z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/properties.svg b/icons/properties.svg
new file mode 100644
index 00000000..4b14f891
--- /dev/null
+++ b/icons/properties.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#AA6363" fill-rule="evenodd" d="M2 4c0-1.5.5-2 2-2h8c1.5 0 2 .5 2 2v8c0 1.5-.5 2-2 2H4c-1.5 0-2-.5-2-2zm6.031 6.563Q8.454 11 9.105 11q.803 0 1.475-.364.907-.495 1.42-1.608h-.596a1.6 1.6 0 0 1-.512.676q-.354.266-.762.266-.388 0-.582-.203-.214-.219-.298-.729l-.131-.744q.575-.468.914-.765.345-.297.575-.546.249-.27.367-.516.117-.249.118-.494 0-.177-.056-.349a1 1 0 0 0-.145-.317.8.8 0 0 0-.256-.224.7.7 0 0 0-.34-.083q-.423 0-.672.12-.29.15-.29.406 0 .27.152.416.165.177.512.177.104 0 .243-.021-.035.297-.333.666-.297.365-.9.87l-.125-.813q-.069-.52-.367-.837-.409-.427-1.17-.427-.888 0-1.614.546-.63.48-1.08 1.322-.375.682-.652 1.603h.596q.345-1.224.935-1.957.256-.317.498-.479a.87.87 0 0 1 .465-.16.34.34 0 0 1 .304.17q.125.199.236.714l.228 1.191-2.867 2.43H5.42l1.953-1.79q.195.938.658 1.416" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/proto.svg b/icons/proto.svg
new file mode 100644
index 00000000..28d19f0b
--- /dev/null
+++ b/icons/proto.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#EA4335" fill-rule="evenodd" d="M6.707 5.293a1 1 0 0 1 0 1.414l-3 3a1 1 0 0 1-1.414-1.414l3-3a1 1 0 0 1 1.414 0" clip-rule="evenodd"/><path fill="#FBBC04" fill-rule="evenodd" d="M9.293 12.707a1 1 0 0 1 0-1.414l3-3a1 1 0 1 1 1.414 1.414l-3 3a1 1 0 0 1-1.414 0" clip-rule="evenodd"/><path fill="#0F9D58" fill-rule="evenodd" d="M9.293 5.293a1 1 0 0 0 0 1.414l3 3a1 1 0 0 0 1.414-1.414l-3-3a1 1 0 0 0-1.414 0" clip-rule="evenodd"/><path fill="#4285F4" fill-rule="evenodd" d="M6.707 12.707a1 1 0 0 0 0-1.414l-3-3a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/pug.svg b/icons/pug.svg
new file mode 100644
index 00000000..79f9e1ad
--- /dev/null
+++ b/icons/pug.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#e3c6a1}.cls-2{fill:#000105}.cls-3{fill:#50332c}.cls-4{fill:#fff}</style></defs><path d="M8 3.41s-6.14-.56-5.58 2.78c0 2 0 5.24 1.86 6.25a8.7 8.7 0 0 0 3.72 1M8 3.41s6.69-.56 5.57 2.78c0 2 0 5.24-1.85 6.25a8.7 8.7 0 0 1-3.72 1" class="cls-1"/><path d="M6.32 7.59a1.4 1.4 0 0 1-.18.7A3.9 3.9 0 0 0 5.08 9a.4.4 0 0 1-.15 0 1.4 1.4 0 1 1 1.39-1.41M10.92 9a.3.3 0 0 0 .14 0 1.39 1.39 0 1 0-1.2-.69Z" class="cls-2"/><path d="M11.15 10.45A2 2 0 0 0 10.23 9a6.4 6.4 0 0 0-.85-.36c-.13 0-.27 0-.41-.08A.88.88 0 0 0 8.54 8a1.4 1.4 0 0 0-.44-.14 1.2 1.2 0 0 0-.66.14.8.8 0 0 0-.3.26 1.5 1.5 0 0 0-.1.25 3.7 3.7 0 0 0-1.17.38 2.2 2.2 0 0 0-.94 1.25 3.3 3.3 0 0 0-.1 1.86 2.1 2.1 0 0 0 .91 1.45 4.6 4.6 0 0 0 .85.37A4.9 4.9 0 0 0 8 14a4 4 0 0 0 .48 0 4.5 4.5 0 0 0 1.63-.48 2.13 2.13 0 0 0 .89-1.11 3.4 3.4 0 0 0 .23-1.34 3 3 0 0 0-.08-.62" class="cls-3"/><path d="M5.77 3.4h4.46l1.67 1.12H4.09z" class="cls-1"/><path d="M10.23 3.41A7.6 7.6 0 0 1 13 4c1.79.9 2.4 3.68 2.4 3.68a1.64 1.64 0 0 1-1.06 2.12 1.23 1.23 0 0 1-1.06 0 5.27 5.27 0 0 0-3.05-6.39m-4.38 0A7.6 7.6 0 0 0 3.06 4C1.27 4.86.66 7.64.66 7.64a1.64 1.64 0 0 0 1.06 2.12c.72.24 1 0 1 0a5.36 5.36 0 0 1 3.13-6.35" class="cls-3"/><circle cx="5.27" cy="7.25" r=".5" class="cls-4"/><circle cx="11.28" cy="7.25" r=".5" class="cls-4"/><path d="M8.37 10.32V9a.38.38 0 0 0-.75 0v1.34a2 2 0 0 0-1.67 2 .38.38 0 0 0 .75 0 1.3 1.3 0 1 1 2.6 0 .37.37 0 0 0 .37.37.38.38 0 0 0 .38-.37 2.05 2.05 0 0 0-1.68-2.02M10.92 9a4 4 0 0 0-1.06-.67Z" class="cls-2"/></svg> \ No newline at end of file
diff --git a/icons/pvk.svg b/icons/pvk.svg
new file mode 100644
index 00000000..60317a5d
--- /dev/null
+++ b/icons/pvk.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#22BE8F" fill-rule="evenodd" d="M7.83 9a3.001 3.001 0 1 1 0-2H14v2h-1v2h-3V9zM5 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/pyproject.svg b/icons/pyproject.svg
new file mode 100644
index 00000000..ec627c8b
--- /dev/null
+++ b/icons/pyproject.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><rect width="6" height="2" x="5" y="3" fill="#418AC9" rx="1"/><rect width="9" height="2" x="2" y="6" fill="#418AC9" rx="1"/><rect width="2" height="2" x="2" y="9" fill="#418AC9" rx="1"/><rect width="9" height="2" x="5" y="9" fill="#FFD141" rx="1"/><rect width="6" height="2" x="5" y="12" fill="#FFD141" rx="1"/><rect width="2" height="2" x="12" y="6" fill="#FFD141" rx="1"/></svg> \ No newline at end of file
diff --git a/icons/python.svg b/icons/python.svg
new file mode 100644
index 00000000..02b6c487
--- /dev/null
+++ b/icons/python.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#418AC9" d="M5 3.286V4h2.8v1H4.2C3.9 5 2 5.071 2 8.5 2 10.557 3.2 11 3.5 11H4V9.286C4 7.914 5.4 7.57 6 7.57h3.15c1.35 0 1.35-.857 1.35-1.285v-3C10.5 3 9.96 2 7.8 2S5 3 5 3.286"/><path fill="#FFD242" d="M10.5 12.714V12H7.9v-1h3.2c.267 0 2.4 0 2.4-3.429C13.5 5.514 12.167 5 11.9 5h-.4v1.714c0 1.372-1.467 1.715-2 1.715H6.2C5 8.429 5 9.286 5 9.714v3C5 13 5.98 14 7.9 14s2.6-1 2.6-1.286"/></svg> \ No newline at end of file
diff --git a/icons/qt.svg b/icons/qt.svg
new file mode 100644
index 00000000..653e29e2
--- /dev/null
+++ b/icons/qt.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#77C751" d="M5 3 3 5v8h8l2-2V3z"/></svg> \ No newline at end of file
diff --git a/icons/quarkus.svg b/icons/quarkus.svg
new file mode 100644
index 00000000..b64eb4c3
--- /dev/null
+++ b/icons/quarkus.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FF437A" fill-rule="evenodd" d="M5.923 6.32V4l2.085 1.162zm4.177.01 2.1 1.17-2.1 1.171V6.329ZM8.008 9.837 5.923 11V8.68z" clip-rule="evenodd"/><path fill="#5EA9FB" fill-rule="evenodd" d="M2 4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-1l-.75-1.5h1.25a1 1 0 0 0 1-1v-7a1 1 0 0 0-1-1h-7a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h2.357L8 10.5l2 3.5H4a2 2 0 0 1-2-2zm1.8 3.5 2.123 1.18V6.32zm6.3 1.171L8.008 9.838 10.1 11zM8.008 5.162 10.1 6.33V4z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/quasar.svg b/icons/quasar.svg
new file mode 100644
index 00000000..a1e73abd
--- /dev/null
+++ b/icons/quasar.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M9.741 7.998a1.741 1.741 0 1 1-3.482 0 1.741 1.741 0 0 1 3.482 0m3.442-2.994a6 6 0 0 0-.918-1.2l-1.35.78a4.5 4.5 0 0 0-1.409-.817 5.5 5.5 0 0 0-1.09 1.557c1.503-.103 3.054.442 4.495 1.567l.85-.49a6 6 0 0 0-.578-1.397M8 13.982a6 6 0 0 0 1.497-.195v-1.559a4.5 4.5 0 0 0 1.412-.812 5.6 5.6 0 0 0-.803-1.723c-.663 1.352-1.91 2.424-3.604 3.108v.98a5.8 5.8 0 0 0 1.498.2M2.817 5.006A6 6 0 0 0 2.238 6.4l1.35.78c-.1.538-.1 1.09-.003 1.628.617.164 1.258.22 1.894.167-.84-1.25-1.145-2.866-.891-4.676l-.85-.491c-.357.358-.666.76-.92 1.198"/><path fill="#00B4FF" d="M13.183 10.99c.252-.438.445-.907.579-1.395l-1.349-.779c.1-.544.1-1.095.003-1.629a5.6 5.6 0 0 0-1.893-.167c.84 1.25 1.144 2.866.89 4.676l.85.492a6 6 0 0 0 .92-1.198m-10.366 0c.253.437.562.84.918 1.199l1.35-.78c.416.356.894.633 1.409.818a5.5 5.5 0 0 0 1.09-1.557c-1.503.103-3.054-.442-4.495-1.567l-.85.49c.134.489.328.958.578 1.397M8 2.012a6 6 0 0 0-1.497.195v1.559a4.5 4.5 0 0 0-1.412.812c.167.616.438 1.2.803 1.723.663-1.352 1.91-2.424 3.604-3.108v-.98A6 6 0 0 0 8 2.012"/></svg> \ No newline at end of file
diff --git a/icons/r.svg b/icons/r.svg
new file mode 100644
index 00000000..0f99db5d
--- /dev/null
+++ b/icons/r.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M13.063 11.108C14.263 10.3 15 9.205 15 8c0-1.039-.547-1.995-1.467-2.757q.144.569.143 1.187c0 .865-.206 1.668-.678 2.354q-.332.485-.788.849zM3.023 4.835C1.774 5.648 1 6.766 1 8s.773 2.352 2.024 3.165z" clip-rule="evenodd"/><path fill="#009EF0" fill-rule="evenodd" d="M4.477 3v10h2.598V9.7h.9l1.68 3.3h2.822l-1.943-3.728a2.83 2.83 0 0 0 1.168-1.062q.457-.737.457-1.812 0-1.065-.443-1.826a2.95 2.95 0 0 0-1.243-1.167Q9.673 3 8.608 3zm2.598 4.59h.916q.459 0 .78-.117a1 1 0 0 0 .5-.386q.179-.264.178-.689 0-.43-.177-.698a1 1 0 0 0-.5-.4 2.1 2.1 0 0 0-.78-.132h-.917z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/racket.svg b/icons/racket.svg
new file mode 100644
index 00000000..6fcfa0e6
--- /dev/null
+++ b/icons/racket.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#5E7DD0" d="M12.602 11.596a5.934 5.934 0 0 0-6.698-9.24c2.409 1.264 5.595 5.387 6.698 9.24"/><path fill="#D53D41" d="M7.084 5.785c-.926-.997-1.963-1.789-3.06-2.314A5.92 5.92 0 0 0 2 7.934c0 1.496.554 2.863 1.467 3.907.806-2.42 2.32-4.753 3.617-6.056M8.177 7.13c-1.285 1.385-2.565 3.809-3.028 6.045.83.442 1.778.693 2.784.693a5.9 5.9 0 0 0 2.854-.73c-.488-2.256-1.41-4.322-2.61-6.007"/></svg> \ No newline at end of file
diff --git a/icons/raku.svg b/icons/raku.svg
new file mode 100644
index 00000000..b826500a
--- /dev/null
+++ b/icons/raku.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M6.895 6.21a3.001 3.001 0 0 0-.049 5.56 2 2 0 1 1-3.53-1.848A3.001 3.001 0 1 1 6.894 6.21m2.259 5.56a3.001 3.001 0 0 0-.049-5.56 3.001 3.001 0 1 1 3.58 3.712 2 2 0 1 1-3.53 1.849" clip-rule="evenodd"/><circle cx="8" cy="9" r="2" fill="#F4BC2C"/></svg> \ No newline at end of file
diff --git a/icons/razor.svg b/icons/razor.svg
new file mode 100644
index 00000000..c4c3aa77
--- /dev/null
+++ b/icons/razor.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#CF2D4A" d="M8.147 14q-1.463 0-2.604-.397-1.14-.393-1.93-1.155a4.95 4.95 0 0 1-1.2-1.853Q2 9.5 2 8.103q0-1.38.413-2.502a5.3 5.3 0 0 1 1.214-1.926 5.3 5.3 0 0 1 1.948-1.241Q6.73 1.999 8.206 2q1.366 0 2.439.397a5.05 5.05 0 0 1 1.824 1.132 4.8 4.8 0 0 1 1.141 1.74q.395 1.004.39 2.222a7 7 0 0 1-.147 1.543q-.151.703-.476 1.228a2.4 2.4 0 0 1-.844.826q-.522.3-1.265.342-.531.042-.862-.077A1.05 1.05 0 0 1 9.902 11a1.3 1.3 0 0 1-.22-.552h-.055q-.11.273-.43.497a2.5 2.5 0 0 1-.785.343q-.457.119-.976.086a2.9 2.9 0 0 1-1.027-.25 2.6 2.6 0 0 1-.857-.635 3 3 0 0 1-.586-1.027q-.212-.612-.216-1.415.005-.794.225-1.383.225-.59.591-.99a2.92 2.92 0 0 1 1.737-.922q.518-.078.981 0 .463.077.78.25.32.173.398.375h.064v-.512h1.435V9.32q.004.315.142.489a.45.45 0 0 0 .371.173.64.64 0 0 0 .527-.278q.216-.279.321-.854.11-.575.11-1.465 0-.858-.229-1.506a3.2 3.2 0 0 0-.632-1.11 3.3 3.3 0 0 0-.94-.748 4.4 4.4 0 0 0-1.164-.42 6 6 0 0 0-1.284-.132q-1.14 0-1.994.347a3.8 3.8 0 0 0-1.42.963 4.1 4.1 0 0 0-.853 1.456 5.7 5.7 0 0 0-.284 1.812q.005 1.081.302 1.917.303.831.89 1.397.585.566 1.448.858.861.292 1.98.292.527 0 1.031-.078.504-.073.912-.182.408-.105.656-.206l.454 1.324q-.29.165-.784.306a7.6 7.6 0 0 1-1.11.233A8.6 8.6 0 0 1 8.148 14Zm-.211-4.126q.56 0 .889-.215a1.17 1.17 0 0 0 .477-.634q.146-.425.137-1.046a2.8 2.8 0 0 0-.142-.926 1.05 1.05 0 0 0-.463-.58q-.326-.2-.907-.2-.51-.001-.867.214a1.4 1.4 0 0 0-.54.602 2.1 2.1 0 0 0-.188.904q.005.485.155.918.152.428.5.698.348.265.949.265"/></svg> \ No newline at end of file
diff --git a/icons/reactjs.svg b/icons/reactjs.svg
new file mode 100644
index 00000000..6d80f818
--- /dev/null
+++ b/icons/reactjs.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><circle cx="8" cy="8" r="1" fill="#FBB03B"/><path stroke="#FBB03B" d="M14.5 8c0 .245-.114.52-.406.817-.294.298-.745.59-1.341.845-1.191.51-2.871.838-4.753.838s-3.562-.328-4.753-.838c-.596-.256-1.047-.547-1.341-.845C1.614 8.52 1.5 8.245 1.5 8s.114-.52.406-.817c.294-.298.745-.59 1.341-.845C4.438 5.828 6.118 5.5 8 5.5s3.562.328 4.753.838c.596.256 1.047.547 1.341.845.292.297.406.572.406.817Z"/><path stroke="#FBB03B" d="M11.25 13.63c-.212.122-.508.16-.91.056-.405-.106-.883-.35-1.403-.74C7.9 12.172 6.776 10.88 5.835 9.25s-1.497-3.249-1.65-4.535c-.077-.644-.05-1.18.06-1.584.111-.401.293-.638.505-.76.212-.123.508-.162.91-.057.405.106.883.35 1.403.74C8.1 3.828 9.224 5.12 10.165 6.75s1.497 3.249 1.65 4.535c.077.644.05 1.18-.06 1.584-.111.401-.293.638-.505.76Z"/><path stroke="#FBB03B" d="M4.75 13.63c-.212-.123-.394-.36-.504-.76-.111-.405-.138-.94-.062-1.585.154-1.286.71-2.905 1.65-4.535.942-1.63 2.066-2.92 3.103-3.697.52-.389.998-.633 1.403-.739.402-.105.698-.066.91.057.212.122.394.359.504.76.111.404.138.94.062 1.584-.154 1.286-.71 2.905-1.65 4.535-.942 1.63-2.066 2.92-3.103 3.697-.52.389-.998.633-1.403.739-.402.105-.698.066-.91-.057Z"/></svg> \ No newline at end of file
diff --git a/icons/reactts.svg b/icons/reactts.svg
new file mode 100644
index 00000000..b52ea8f7
--- /dev/null
+++ b/icons/reactts.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0E8ADC" fill-rule="evenodd" d="M5 13.196c-.066-.038-.185-.143-.272-.46-.089-.321-.12-.787-.047-1.392q.039-.322.114-.676c.478.106.989.188 1.523.245q.477.653.974 1.197a8 8 0 0 1-.529.437c-.487.364-.906.57-1.23.655-.316.083-.467.032-.533-.006m3-.378c-1.331 1.213-2.645 1.738-3.5 1.244-.855-.493-1.057-1.894-.673-3.653C2.112 9.862 1 8.987 1 8s1.112-1.862 2.827-2.409c-.384-1.76-.182-3.16.673-3.653.855-.494 2.169.031 3.5 1.244 1.331-1.213 2.645-1.738 3.5-1.244.855.493 1.057 1.894.672 3.653C13.888 6.138 15 7.013 15 8s-1.112 1.862-2.828 2.409c.385 1.76.183 3.16-.672 3.653-.855.494-2.169-.031-3.5-1.244m3.205-7.486a8 8 0 0 0 .114-.676c.072-.605.041-1.071-.047-1.393-.087-.316-.206-.421-.272-.46-.066-.037-.217-.088-.534-.005-.323.084-.742.291-1.23.655a8 8 0 0 0-.528.437q.497.544.974 1.197c.534.057 1.045.14 1.523.245M7.292 3.89a8 8 0 0 0-.529-.437c-.487-.364-.906-.57-1.23-.655-.316-.083-.467-.032-.533.006s-.185.143-.272.46c-.089.321-.12.787-.047 1.392q.039.322.114.676c.478-.106.989-.188 1.523-.245q.477-.653.974-1.197m.356 1.114q.176-.211.352-.406.176.195.352.406a17 17 0 0 0-.704 0M5.581 6.197q-.27.046-.527.102.08.25.175.507a17 17 0 0 1 .352-.609M5.739 8a15 15 0 0 1 1.13-1.958 15 15 0 0 1 2.262 0A15 15 0 0 1 10.26 8a15 15 0 0 1-1.13 1.958 15 15 0 0 1-2.262 0A15 15 0 0 1 5.74 8ZM4.637 8a14 14 0 0 1-.55-1.442 8 8 0 0 0-.643.24c-.56.24-.948.5-1.182.737C2.032 7.768 2 7.924 2 8s.032.232.262.465c.234.238.623.497 1.182.737q.3.128.643.24.222-.702.55-1.442m.417 1.7q.08-.248.175-.506a17 17 0 0 0 .352.609q-.27-.046-.527-.102Zm4.628 1.213c.534-.057 1.045-.14 1.523-.245a8 8 0 0 1 .114.676c.072.605.041 1.071-.047 1.393-.087.316-.206.421-.272.46-.066.037-.217.088-.534.005-.323-.084-.742-.291-1.23-.655a8 8 0 0 1-.528-.437q.497-.544.974-1.197m-1.33.083q-.176.211-.352.406-.176-.195-.352-.406a17 17 0 0 0 .704 0m2.067-1.193a17 17 0 0 0 .352-.61q.095.258.175.508-.255.055-.527.102M11.363 8c.219.491.402.975.55 1.442q.344-.112.643-.24c.56-.24.948-.5 1.182-.737.23-.233.262-.389.262-.465s-.032-.232-.262-.465c-.234-.238-.623-.497-1.182-.737a8 8 0 0 0-.643-.24q-.222.702-.55 1.442m-.592-1.194q.095-.256.175-.507-.255-.055-.527-.102a17 17 0 0 1 .352.61ZM8 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/readme.svg b/icons/readme.svg
new file mode 100644
index 00000000..eb788a5e
--- /dev/null
+++ b/icons/readme.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#2DBCC5" d="M2.791 2.004c1.131 0 3.233.348 5.164 1.673.736-.575 1.593-.967 2.416-1.224a9.9 9.9 0 0 1 2.837-.45h.781V12.09h-.78c-.552 0-1.422.105-2.317.38-.9.275-1.754.699-2.34 1.284L8 14.308l-.552-.553c-1.2-1.199-3.131-1.508-4.734-1.668l-.704-.07V2.003zM7.99 12.16l.01.01.013-.01zm4.437-8.549c-.49.055-1.04.161-1.59.333-.764.239-1.49.592-2.055 1.074v6.648a8.7 8.7 0 0 1 1.653-.692c.7-.214 1.396-.344 1.992-.405zM3.573 10.61c1.094.138 2.448.4 3.646 1.055V5.068a8.24 8.24 0 0 0-3.646-1.444z"/></svg> \ No newline at end of file
diff --git a/icons/redis.svg b/icons/redis.svg
new file mode 100644
index 00000000..7b7315b7
--- /dev/null
+++ b/icons/redis.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><g clip-path="url(#a)"><path fill="#8D1614" d="m8 8.962 6 1.423v1.122c0 .184-.11.353-.284.435L8.23 14.545a.54.54 0 0 1-.458 0l-5.487-2.603A.49.49 0 0 1 2 11.507v-1.122z"/><path fill="#DC382C" d="M7.77 7.647a.54.54 0 0 1 .46 0L14 10.385l-5.77 2.737a.54.54 0 0 1-.46 0L2 10.385z"/><path fill="#8D1614" d="m8 6.115 6 1.423v1.123c0 .184-.11.353-.284.435L8.23 11.7a.54.54 0 0 1-.458 0L2.284 9.096A.49.49 0 0 1 2 8.661V7.538z"/><path fill="#DC382C" d="M7.77 4.801a.54.54 0 0 1 .46 0L14 7.538l-5.77 2.738a.54.54 0 0 1-.46 0L2 7.538z"/><path fill="#8D1614" d="m8 3.27 6 1.422v1.123c0 .184-.11.352-.284.435L8.23 8.853a.54.54 0 0 1-.458 0L2.284 6.25A.49.49 0 0 1 2 5.815V4.692z"/><path fill="#DC382C" d="M7.77 1.955a.54.54 0 0 1 .46 0L14 4.692 8.23 7.43a.54.54 0 0 1-.46 0L2 4.692z"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/icons/rego.svg b/icons/rego.svg
new file mode 100644
index 00000000..1c817629
--- /dev/null
+++ b/icons/rego.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#86B4C2" d="M4 1c-1.2 2.8.167 4.5 1 5L4 8C.5 5.5 1.5 2 4 1"/><path fill="#497581" d="M12 1c1.2 2.8-.167 4.5-1 5l1 2c3.5-2.5 2.5-6 0-7"/><path fill="#497581" fill-rule="evenodd" d="M12.5 11.5V8c0-1.333-.9-4-4.5-4v3a1 1 0 0 1 0 2v6c.333-.833 1.7-2.7 4.5-3.5" clip-rule="evenodd"/><path fill="#86B4C2" fill-rule="evenodd" d="M3.5 8v3.5c2.8.8 4.167 2.667 4.5 3.5V9a1 1 0 0 1 0-2V4C4.4 4 3.5 6.667 3.5 8" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/remix.svg b/icons/remix.svg
new file mode 100644
index 00000000..553ffcca
--- /dev/null
+++ b/icons/remix.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D83BD2" d="M8 5.5H3V3h5.5c2.5 0 4 1 4 3 0 1.5 0 2-1.475 3 1.475 1 1.475 2.405 1.475 4v.5h-3V13c0-1.13-.275-3-1.643-3H3V7.5h5c.644 0 1.5 0 1.5-1s-.848-1-1.5-1"/><path fill="#D83BD2" d="M3 13.5h5c.013-1.12-.5-2-1.5-2H3z"/></svg> \ No newline at end of file
diff --git a/icons/rescript.svg b/icons/rescript.svg
new file mode 100644
index 00000000..bdac7646
--- /dev/null
+++ b/icons/rescript.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D94851" fill-rule="evenodd" d="M4 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm1 4a1 1 0 0 1 1-1h2v5a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1zm7 .5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/rescriptinterface.svg b/icons/rescriptinterface.svg
new file mode 100644
index 00000000..cb1a3589
--- /dev/null
+++ b/icons/rescriptinterface.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#8078DC" fill-rule="evenodd" d="M8 1.5C4.134 1.5 1.5 4.134 1.5 8s2.634 6.5 6.5 6.5 6.5-2.634 6.5-6.5S11.866 1.5 8 1.5m1 5A1.496 1.496 0 0 1 10.5 5 1.5 1.5 0 1 1 9 6.5M6 5h2v5a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/restructuredtext.svg b/icons/restructuredtext.svg
new file mode 100644
index 00000000..ecea3c53
--- /dev/null
+++ b/icons/restructuredtext.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#5BAA1D" fill-rule="evenodd" d="M1 4a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm10.805 1.021q.41-.052.74.027.198.052.41.145.476.238.608.7.027.093.026.305 0 .237-.026.33-.12.396-.383.687-.37.37-1.11.569-.609.145-1.653.185H10.1l-.027.079q-.132.727-.132.7-.066.477-.013.847.146.7.78.766a.5.5 0 0 0 .119.013 2.5 2.5 0 0 0 1.322-.383q.317-.185.647-.515.239-.24.33-.212l.186.185q.185.211.145.304-.066.12-.45.476-.634.489-1.48.674-.33.08-.78.08a2.2 2.2 0 0 1-.687-.093 2 2 0 0 1-.714-.45 2 2 0 0 1-.37-.541q-.25-.49-.29-1.164-.04-1.348.78-2.379.25-.317.555-.542a3.6 3.6 0 0 1 1.784-.793m.436.635q-.555-.106-1.097.264-.476.305-.74.978-.146.357-.146.436 0 .054.952-.026a1 1 0 0 0 .159-.013q.871-.093 1.203-.49a.9.9 0 0 0 .185-.436q.066-.476-.344-.66a.6.6 0 0 0-.172-.053m-7.35-.609q-.345-.079-.57-.013a1.3 1.3 0 0 0-.396.172q-.503.357-.846 1.507L3 7.03q0 .066.04.106l.04.04h.29q.291 0 .317-.027a.5.5 0 0 0 .053-.092q.199-.755.33-1.071a.9.9 0 0 1 .252-.317.2.2 0 0 1 .132-.04q.12.027.172.119.066.159.026.502-.026.185-.542 2.181-.502 2.022-.502 2.142.027.317.357.41a.67.67 0 0 0 .648-.199.4.4 0 0 0 .066-.08q.08-.118.555-2.035.475-1.863.529-1.97.435-.859.912-1.03a.82.82 0 0 1 .581.026q.212.08.251.159 0 .026-.079.066-.212.092-.357.357a.9.9 0 0 0-.092.41.5.5 0 0 0 .052.211.46.46 0 0 0 .225.238q.384.21.833-.12.304-.236.344-.74.012-.224-.053-.422-.225-.687-1.11-.833-.503-.08-.979.159a2.5 2.5 0 0 0-.502.357l-.119.118-.053-.079a1.05 1.05 0 0 0-.304-.33 1.3 1.3 0 0 0-.423-.199" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/rjson.svg b/icons/rjson.svg
new file mode 100644
index 00000000..1deef7bc
--- /dev/null
+++ b/icons/rjson.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#75b600}</style></defs><path d="M4.5 10.5V6A1.47 1.47 0 0 1 6 4.5h1V3H6a2.94 2.94 0 0 0-3 3v.5a1 1 0 0 1-1 1h-.5V9H2a1 1 0 0 1 1 1v.5a2.94 2.94 0 0 0 3 3h1V12H6a1.47 1.47 0 0 1-1.5-1.5m9.5-3a1 1 0 0 1-1-1V6a2.94 2.94 0 0 0-3-3H9v1.5h1A1.47 1.47 0 0 1 11.5 6v4.5A1.47 1.47 0 0 1 10 12H9v1.5h1a2.94 2.94 0 0 0 3-3V10a1 1 0 0 1 1-1h.5V7.5Z" class="cls-1"/><path d="M9.27 7.44 10 6.38a1.2 1.2 0 0 0-.4-.28A1.4 1.4 0 0 0 9 6a1.15 1.15 0 0 0-.71.24 1.6 1.6 0 0 0-.43.52v-.69H6.5V11h1.4V8.21a1.06 1.06 0 0 1 .21-.7.77.77 0 0 1 .61-.26A1 1 0 0 1 9 7.3a.6.6 0 0 1 .27.14" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/robots.svg b/icons/robots.svg
new file mode 100644
index 00000000..e0979b21
--- /dev/null
+++ b/icons/robots.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M12.5 5h-4L7.15 2.75A1 1 0 1 0 5.5 2a1 1 0 0 0 .82 1L7 5H3.5a1 1 0 0 0-1 1v6.5a1 1 0 0 0 1 1.05l9-.05a1 1 0 0 0 1-1.05V6a1 1 0 0 0-1-1m-2 1.55A1.5 1.5 0 0 1 12 8a1.47 1.47 0 0 1-.32.92 1.75 1.75 0 0 0-1.52.54 1.5 1.5 0 0 1 .34-3Zm-5 0a1.5 1.5 0 0 1 .34 3 1.75 1.75 0 0 0-1.52-.54A1.47 1.47 0 0 1 4 8a1.5 1.5 0 0 1 1.5-1.5ZM9.25 12h-2.5a.75.75 0 0 1 0-1.5h2.5a.75.75 0 0 1 0 1.5" style="fill:#8949ce"/></svg> \ No newline at end of file
diff --git a/icons/rollup.svg b/icons/rollup.svg
new file mode 100644
index 00000000..ba60381c
--- /dev/null
+++ b/icons/rollup.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><linearGradient id="Dégradé_sans_nom_4" x1="6.91" x2="9.88" y1="-54.36" y2="-55.05" gradientTransform="matrix(1 0 0 -1 0 -46)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ff6533"/><stop offset=".16" stop-color="#ff5633"/><stop offset=".43" stop-color="#ff4333"/><stop offset=".71" stop-color="#ff3733"/><stop offset="1" stop-color="#f33"/></linearGradient><style>.cls-3{fill:#e83e3b}</style></defs><path d="M12.24 6.12a3.6 3.6 0 0 0-.47-1.78c-.79-.81-2.51-1-2.94 0a1.65 1.65 0 0 0 1.25 2.07c.66-.11-.08-1.62-.08-1.62 1 1.89.77 1.31-1 3.05s-3.74 5.39-4 5.55h7.1a.17.17 0 0 0 .15-.25l-1.89-3.66a.16.16 0 0 1 .06-.22 3.6 3.6 0 0 0 1.82-3.14" style="fill:url(#Dégradé_sans_nom_4)"/><path d="M12.24 6.12a3.6 3.6 0 0 0-.47-1.78c-.79-.81-2.51-1-2.94 0a1.65 1.65 0 0 0 1.25 2.07c.66-.11-.08-1.62-.08-1.62 1 1.89.77 1.31-1 3.05s-3.74 5.39-4 5.55h7.1a.17.17 0 0 0 .15-.25l-1.89-3.66a.16.16 0 0 1 .06-.22 3.6 3.6 0 0 0 1.82-3.14" style="fill:#bf3338"/><path d="M5 13.39c.27-.16 2.12-3.82 3.94-5.55s2-1.16 1-3c0 0-3.84 5.38-5.23 8" class="cls-3"/><path d="M5.53 8.57c2.59-4.76 2.93-5.24 4.28-5.24a2.45 2.45 0 0 1 1.89.89 3.62 3.62 0 0 0-3-1.72H4.27a.17.17 0 0 0-.16.17v8.87a25 25 0 0 1 1.42-2.97" class="cls-3"/><path d="M8.93 7.84C7.11 9.57 5.26 13.23 5 13.39a.82.82 0 0 1-1-.1c-.26-.29-.66-.75 1.5-4.72 2.62-4.76 2.96-5.24 4.31-5.24a2.45 2.45 0 0 1 1.89.89l.07.12c-.79-.81-2.51-1-2.94 0a1.65 1.65 0 0 0 1.25 2.07c.66-.11-.08-1.62-.08-1.62 1 1.89.74 1.31-1.07 3.05" style="fill:#fbb040"/></svg> \ No newline at end of file
diff --git a/icons/rome.svg b/icons/rome.svg
new file mode 100644
index 00000000..e89e567f
--- /dev/null
+++ b/icons/rome.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#F4BC2C" d="M8.953 2.081c.07.012.132.057.174.126a.39.39 0 0 1 .029.337l-.072.188-.559 1.445a.3.3 0 0 1-.104.14.23.23 0 0 1-.149.045 4 4 0 0 0-.544-.001.23.23 0 0 1-.149-.045.3.3 0 0 1-.104-.14L6.916 2.73l-.072-.188a.39.39 0 0 1 .043-.358.3.3 0 0 1 .082-.076.2.2 0 0 1 .077-.028 5.7 5.7 0 0 1 1.907 0z"/><path fill="#909090" fill-opacity=".9" d="M3.7 9.67H2.3a.3.3 0 0 0-.3.3v3.7a.3.3 0 0 0 .3.3h1.4a.3.3 0 0 0 .3-.3v-3.7a.3.3 0 0 0-.3-.3m10 0h-1.4a.3.3 0 0 0-.3.3v3.7a.3.3 0 0 0 .3.3h1.4a.3.3 0 0 0 .3-.3v-3.7a.3.3 0 0 0-.3-.3"/><path fill="#F4BC2C" d="M11 9.17v4.5a.3.3 0 0 1-.3.3H9.3a.3.3 0 0 1-.3-.3v-5c0-.5-.5-1-1-1s-1 .5-1 1v5a.3.3 0 0 1-.3.3H5.3a.3.3 0 0 1-.3-.3v-4.5c0-2.5 1-3.5 3-3.5s3 1 3 3.5"/><path fill="#909090" fill-opacity=".9" d="M3.7 8.67H2.3a.29.29 0 0 1-.294-.3c.13-3.298 2.39-5.041 3.736-5.37.14-.034.274.053.32.189.345 1.033.067.173.39 1.14a.324.324 0 0 1-.183.395C4.993 5.283 4.1 6.639 4.008 8.369a.313.313 0 0 1-.308.3m8.6.001h1.4c.165 0 .3-.135.294-.3-.13-3.298-2.39-5.041-3.737-5.37-.139-.034-.274.053-.319.189-.345 1.033-.067.173-.391 1.14a.324.324 0 0 0 .184.395c1.276.559 2.168 1.915 2.26 3.645.01.166.143.3.309.3"/></svg> \ No newline at end of file
diff --git a/icons/ron.svg b/icons/ron.svg
new file mode 100644
index 00000000..2168914b
--- /dev/null
+++ b/icons/ron.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#D83F35" fill-rule="evenodd" d="m14 10.49-.74-1.4v-.08L14.5 8l-1.22-1v-.08L14 5.51 12.49 5h-.05l.16-1.6-1.6.16v-.05L10.49 2l-1.4.74H9L8 1.5 7 2.72h-.09L5.51 2 5 3.51v.05L3.4 3.4 3.56 5h-.05L2 5.51l.74 1.4v.08L1.5 8l1.22 1v.08L2 10.49l1.51.51.05.06-.16 1.54 1.6-.16.06.05.45 1.51 1.4-.74H7l1 1.24 1-1.22h.08l1.4.74.52-1.53.06-.05 1.58.16-.2-1.6.05-.06zM5.583 4.794c.311-.224.67-.294.917-.294h1v1h-1a.6.6 0 0 0-.333.106C6.087 5.663 6 5.763 6 6v1a1.6 1.6 0 0 1-.359 1q.034.04.065.083C5.93 8.394 6 8.753 6 9v1c0 .087.03.228.106.333.057.08.157.167.394.167h1v1h-1c-.563 0-.963-.246-1.206-.583A1.6 1.6 0 0 1 5 10V9a.6.6 0 0 0-.106-.333c-.057-.08-.157-.167-.394-.167H4v-1h.5c.237 0 .337-.088.394-.167A.6.6 0 0 0 5 7V6c0-.563.246-.963.583-1.206M9.5 11.5c.247 0 .606-.07.917-.294.337-.243.583-.643.583-1.206V9c0-.087.03-.228.106-.333.057-.08.157-.167.394-.167h.5v-1h-.5c-.237 0-.337-.088-.394-.167A.6.6 0 0 1 11 7V6c0-.247-.07-.606-.294-.917-.243-.337-.643-.583-1.206-.583h-1v1h1c.237 0 .337.088.394.167A.6.6 0 0 1 10 6v1a1.62 1.62 0 0 0 .359 1l-.065.083C10.07 8.394 10 8.753 10 9v1c0 .237-.088.337-.167.394a.6.6 0 0 1-.333.106h-1v1zM9 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/root_folder.svg b/icons/root_folder.svg
new file mode 100644
index 00000000..46eb504d
--- /dev/null
+++ b/icons/root_folder.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FF9F69" fill-rule="evenodd" d="M14 12V6.05A1 1 0 0 0 13 5H8.65a1 1 0 0 1-.99-.53l-.42-.84a1 1 0 0 0-.94-.58H3a1 1 0 0 0-1 1V12a1 1 0 0 0 1.05 1H13a1 1 0 0 0 1-1m-8.5 0a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5" clip-rule="evenodd" opacity=".6"/><circle cx="5.5" cy="9.5" r="1.5" fill="#FF9F69" opacity=".6"/></svg> \ No newline at end of file
diff --git a/icons/root_folder_light.svg b/icons/root_folder_light.svg
new file mode 100644
index 00000000..a95ff381
--- /dev/null
+++ b/icons/root_folder_light.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D67045" fill-rule="evenodd" d="M14 12V6.05A1 1 0 0 0 13 5H8.65a1 1 0 0 1-.99-.53l-.42-.84a1 1 0 0 0-.94-.58H3a1 1 0 0 0-1 1V12a1 1 0 0 0 1.05 1H13a1 1 0 0 0 1-1m-8.5 0a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5" clip-rule="evenodd" opacity=".8"/><circle cx="5.5" cy="9.5" r="1.5" fill="#D67045" opacity=".8"/></svg> \ No newline at end of file
diff --git a/icons/root_folder_light_open.svg b/icons/root_folder_light_open.svg
new file mode 100644
index 00000000..6f555913
--- /dev/null
+++ b/icons/root_folder_light_open.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D67045" fill-rule="evenodd" d="M8.65 5H13a1 1 0 0 1 1 1.05V12a1 1 0 0 1-1 1.05H3.05a1 1 0 0 1-1-1.05V4a1 1 0 0 1 1-1h3.3a1 1 0 0 1 .94.58l.42.84a1 1 0 0 0 .94.58M5.5 12H13l.05-6h-4.4a2 2 0 0 1-1.92-1.1l-.43-.85H3V9.5A2.5 2.5 0 0 0 5.5 12" clip-rule="evenodd" opacity=".8"/><circle cx="5.5" cy="9.5" r="1.5" fill="#D67045" opacity=".8"/></svg> \ No newline at end of file
diff --git a/icons/root_folder_open.svg b/icons/root_folder_open.svg
new file mode 100644
index 00000000..a94e396d
--- /dev/null
+++ b/icons/root_folder_open.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FF9F69" fill-rule="evenodd" d="M8.65 5H13a1 1 0 0 1 1 1.05V12a1 1 0 0 1-1 1.05H3.05a1 1 0 0 1-1-1.05V4a1 1 0 0 1 1-1h3.3a1 1 0 0 1 .94.58l.42.84a1 1 0 0 0 .94.58M5.5 12H13l.05-6h-4.4a2 2 0 0 1-1.92-1.1l-.43-.85H3V9.5A2.5 2.5 0 0 0 5.5 12" clip-rule="evenodd" opacity=".6"/><circle cx="5.5" cy="9.5" r="1.5" fill="#FF9F69" opacity=".6"/></svg> \ No newline at end of file
diff --git a/icons/ruby.svg b/icons/ruby.svg
new file mode 100644
index 00000000..42f5df6e
--- /dev/null
+++ b/icons/ruby.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EF1362" d="M8 7h5l-5 5zm3-4H5L1 7l7 7 7-7z"/></svg> \ No newline at end of file
diff --git a/icons/rust.svg b/icons/rust.svg
new file mode 100644
index 00000000..e833266a
--- /dev/null
+++ b/icons/rust.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D87A35" d="m14 10.49-.74-1.4v-.08L14.5 8l-1.22-1v-.08L14 5.51 12.49 5h-.05l.16-1.6-1.6.16v-.05L10.49 2l-1.4.74H9L8 1.5 7 2.72h-.09L5.51 2 5 3.51v.05L3.4 3.4 3.56 5h-.05L2 5.51l.74 1.4v.08L1.5 8l1.22 1v.08L2 10.49l1.51.51.05.06-.16 1.54 1.6-.16.06.05.45 1.51 1.4-.74H7l1 1.24 1-1.22h.08l1.4.74.52-1.53.06-.05 1.58.16-.2-1.6.05-.06zM3.62 8c0-.555.105-1.105.31-1.62h.82V10h-.62a4.25 4.25 0 0 1-.51-2m4.8-.41H6.78V6.38h1.63a.61.61 0 1 1 0 1.21zM6.78 10V8.81H8s1 0 1 1.22v.485c0-.015-.008.298.107.416.193.198.255.207.41.263.154.055.217.056.483.056h.89a4.34 4.34 0 0 1-5.84 0h2.68V10zm5.1 0c-.34 0-1-.19-1-.8a1 1 0 0 0-.37-.73 1.84 1.84 0 0 0-.86-3.32H4.68A4.37 4.37 0 0 1 12.38 8a4.3 4.3 0 0 1-.5 2"/></svg> \ No newline at end of file
diff --git a/icons/rustfmt.svg b/icons/rustfmt.svg
new file mode 100644
index 00000000..1ac0bd7f
--- /dev/null
+++ b/icons/rustfmt.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D87A35" fill-rule="evenodd" d="M4 6.21h.751v3.56h-.75V11h3.73V9.77h-.95V8.6H8s1 0 1 1.2v.477c0-.015-.008.293.106.409.115.116.255.204.41.259.155.054.483.055.483.055h2V9.769c-.5 0-1.12-.216-1.12-.785a.97.97 0 0 0-.37-.718c.3-.214.53-.511.655-.854a1.8 1.8 0 0 0 .05-1.068 1.8 1.8 0 0 0-.57-.91A1.86 1.86 0 0 0 9.649 5H4zM6.78 7.4h1.63a.62.62 0 0 0 .481-.145.6.6 0 0 0 .207-.45.6.6 0 0 0-.207-.45.6.6 0 0 0-.48-.145H6.78z" clip-rule="evenodd"/><path fill="#D87A35" d="M3 2h10v1H3zm0 11h10v1H3z"/></svg> \ No newline at end of file
diff --git a/icons/sails.svg b/icons/sails.svg
new file mode 100644
index 00000000..bce14b61
--- /dev/null
+++ b/icons/sails.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#16ACC2" d="M8 2c-6.639 2.88-7 9-4.5 12H8zm1.5 5v7H14z"/></svg> \ No newline at end of file
diff --git a/icons/salesforce.svg b/icons/salesforce.svg
new file mode 100644
index 00000000..295940fa
--- /dev/null
+++ b/icons/salesforce.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#4CA3E1" d="M5 3c1 0 1.884.49 2.429 1.243a2.497 2.497 0 0 1 3.3 1.129 3.459 3.459 0 1 1-.455 6.581 2.99 2.99 0 0 1-3.514.777q.147-.135.273-.3.33-.438.448-1.093L7.785 9.4H9.08l.223-1.347H8.009l.072-.434a.96.96 0 0 1 .244-.51q.186-.185.578-.185.165 0 .31.03.15.029.25.063l.535-1.349a4 4 0 0 0-.488-.114 4 4 0 0 0-.746-.063q-.607 0-1.13.232a2.2 2.2 0 0 0-.871.695q-.35.463-.464 1.167l-.078.468h-.912L5.085 9.4h.91l-.293 1.87a.93.93 0 0 1-.232.468q-.186.186-.577.186-.165 0-.313-.03a2 2 0 0 1-.249-.063L3.88 12.97q-.187.03-.38.03a2.5 2.5 0 0 1-.651-4.912A3 3 0 0 1 5 3"/></svg> \ No newline at end of file
diff --git a/icons/sass.svg b/icons/sass.svg
new file mode 100644
index 00000000..b6dd897b
--- /dev/null
+++ b/icons/sass.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M7.35 6A3.65 3.65 0 0 0 9.2 7.12a2.8 2.8 0 0 0 1.89-.36 1.68 1.68 0 0 0 1-1.21 1.32 1.32 0 0 0-.85-1.13A7 7 0 0 0 7 3.92a5 5 0 0 0-2 .8 2.06 2.06 0 0 0-.81 1.65 2.47 2.47 0 0 0 .93 1.7c.57.51 1.27.93 2 1.5A3.4 3.4 0 0 1 8 10.74a2.1 2.1 0 0 1 .18.87 1.8 1.8 0 0 1-.29.92 2.6 2.6 0 0 1-1.33 1 4.2 4.2 0 0 1-1.48.25 2.8 2.8 0 0 1-1.61-.48 1.82 1.82 0 0 1-.64-.91 1.66 1.66 0 0 1 .07-1.09A3 3 0 0 1 4 10a4.3 4.3 0 0 1 1.33-.61 6 6 0 0 1 5.11 1.07.27.27 0 0 1 0 .39.27.27 0 0 1-.32.08 6 6 0 0 0-4.4-.22 2.43 2.43 0 0 0-1.37 1.09c0 .17 0 .07.07.19a1.5 1.5 0 0 0 .72.2 2.13 2.13 0 0 0 1.64-.45.57.57 0 0 0 .08-.57 1.9 1.9 0 0 0-.56-.77c-.55-.51-1.27-.94-1.95-1.5A3.6 3.6 0 0 1 3 6.43a3.46 3.46 0 0 1 1.11-2.72 6.2 6.2 0 0 1 2.5-1.25 8 8 0 0 1 5.4.45 3.4 3.4 0 0 1 1.23 1 2.62 2.62 0 0 1 .51 1.72 3.09 3.09 0 0 1-2 2.46 3.76 3.76 0 0 1-2.91.11 3.85 3.85 0 0 1-2-1.91A.27.27 0 0 1 7 6a.26.26 0 0 1 .31 0Z" style="fill:#e8367e"/></svg> \ No newline at end of file
diff --git a/icons/scala.svg b/icons/scala.svg
new file mode 100644
index 00000000..98418d1f
--- /dev/null
+++ b/icons/scala.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><g clip-path="url(#a)"><path fill="#DB322F" d="M4 5.938V2.895c.304-.107.623-.138.938-.182 1.389-.194 2.781-.36 4.16-.619.704-.133 1.407-.277 2.081-.533.316-.123.626-.257.821-.561v2.99a.6.6 0 0 1-.207.275q-.12.09-.242.174a1 1 0 0 0-.087.027c-.333.165-.687.267-1.042.362-.946.251-1.909.41-2.875.55-.966.138-1.933.267-2.898.407-.219.032-.445.049-.649.153m8 3.124v3.016c-.092.22-.276.338-.474.439-.348.177-.72.293-1.096.39-1.517.395-3.07.583-4.617.801-.606.085-1.218.138-1.813.294v-3.018c.132-.066.275-.087.417-.107q1.33-.19 2.66-.377c.08-.04.164-.018.246-.03.678-.105 1.357-.206 2.03-.344.678-.139 1.355-.282 1.996-.556.26-.111.509-.241.651-.508M4 9.97V6.925c.474-.124.96-.173 1.443-.24l1.673-.232c.048-.005.096-.007.144-.015.54-.087 1.08-.167 1.619-.263.758-.136 1.516-.286 2.242-.555.336-.124.678-.252.879-.59v3.043c-.116.173-.278.31-.466.397-.328.175-.68.282-1.036.378-.902.244-1.82.397-2.742.54-.942.145-1.888.26-2.831.398-.31.045-.627.068-.925.182Z"/><path fill="#7F0D1D" d="M12 5.03c-.201.338-.543.466-.88.59-.725.27-1.483.419-2.241.555-.538.097-1.079.177-1.62.263-.047.008-.095.01-.143.015-.042-.01-.084-.023-.127-.029-.61-.083-1.222-.16-1.831-.248-.389-.056-.781-.09-1.158-.21v-.028c.204-.104.43-.12.649-.153.965-.14 1.932-.268 2.898-.407.965-.14 1.93-.298 2.874-.549.356-.094.71-.197 1.042-.362a1 1 0 0 1 .087-.027c.193.097.366.217.45.43zM4 9.97c.298-.115.614-.138.925-.183.943-.138 1.889-.253 2.831-.398.921-.143 1.84-.296 2.742-.54.355-.096.708-.203 1.036-.378.197.097.371.22.466.43v.16c-.142.268-.391.398-.651.508-.641.274-1.319.417-1.996.556-.673.138-1.352.239-2.03.343-.082.013-.168-.01-.246.031-.011-.034-.042-.024-.065-.026-.762-.107-1.524-.209-2.285-.319-.245-.035-.496-.054-.727-.158z"/></g><defs><clipPath id="a"><path fill="#fff" d="M4 1h8v13H4z"/></clipPath></defs></svg> \ No newline at end of file
diff --git a/icons/scss.svg b/icons/scss.svg
new file mode 100644
index 00000000..b6dd897b
--- /dev/null
+++ b/icons/scss.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M7.35 6A3.65 3.65 0 0 0 9.2 7.12a2.8 2.8 0 0 0 1.89-.36 1.68 1.68 0 0 0 1-1.21 1.32 1.32 0 0 0-.85-1.13A7 7 0 0 0 7 3.92a5 5 0 0 0-2 .8 2.06 2.06 0 0 0-.81 1.65 2.47 2.47 0 0 0 .93 1.7c.57.51 1.27.93 2 1.5A3.4 3.4 0 0 1 8 10.74a2.1 2.1 0 0 1 .18.87 1.8 1.8 0 0 1-.29.92 2.6 2.6 0 0 1-1.33 1 4.2 4.2 0 0 1-1.48.25 2.8 2.8 0 0 1-1.61-.48 1.82 1.82 0 0 1-.64-.91 1.66 1.66 0 0 1 .07-1.09A3 3 0 0 1 4 10a4.3 4.3 0 0 1 1.33-.61 6 6 0 0 1 5.11 1.07.27.27 0 0 1 0 .39.27.27 0 0 1-.32.08 6 6 0 0 0-4.4-.22 2.43 2.43 0 0 0-1.37 1.09c0 .17 0 .07.07.19a1.5 1.5 0 0 0 .72.2 2.13 2.13 0 0 0 1.64-.45.57.57 0 0 0 .08-.57 1.9 1.9 0 0 0-.56-.77c-.55-.51-1.27-.94-1.95-1.5A3.6 3.6 0 0 1 3 6.43a3.46 3.46 0 0 1 1.11-2.72 6.2 6.2 0 0 1 2.5-1.25 8 8 0 0 1 5.4.45 3.4 3.4 0 0 1 1.23 1 2.62 2.62 0 0 1 .51 1.72 3.09 3.09 0 0 1-2 2.46 3.76 3.76 0 0 1-2.91.11 3.85 3.85 0 0 1-2-1.91A.27.27 0 0 1 7 6a.26.26 0 0 1 .31 0Z" style="fill:#e8367e"/></svg> \ No newline at end of file
diff --git a/icons/sentinel.svg b/icons/sentinel.svg
new file mode 100644
index 00000000..19fc7efc
--- /dev/null
+++ b/icons/sentinel.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#9145DC" fill-rule="evenodd" d="M7 2 2 4.911v6.994L4 13V6l3-1.813zm2 0v5.649H7V5.5L5 6.65v7.238L7 15V9.368h2V11.5l2-1.149V3.11zm5 10.089L9 15v-2.187L12 11V4l2 1.095z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/sequelize.svg b/icons/sequelize.svg
new file mode 100644
index 00000000..75239e85
--- /dev/null
+++ b/icons/sequelize.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#256F44" fill-rule="evenodd" d="M9.68 8.79v.07l-.06-.03z" clip-rule="evenodd"/><path fill="#2977E0" fill-rule="evenodd" d="M8 12.87v1.96l-6-3.45.03-6.9v-.01l1.69.98.04.02v4.95zm5.97-8.4v6.93l-5.95 3.44-.02-.01v-1.96l2.17-1.25 2.07-1.25v-4.9l.04-.02z" clip-rule="evenodd"/><path fill="#2977E0" fill-rule="evenodd" d="M5.89 9.1v1.96l-.87-.5-.8-.46V8.14zm4.29.05v1.96l-.44-.25V9.43l-.47-.28-.1-.06.45-.26.06.03zm-2.1 1.24v1.96l-.87-.5-.8-.46V9.43l1.14.66zM8.01 5.3v.57l-.46.26v-.62L6.34 4.8v-.46zM5.89 6.48v1.96l-.87-.5-.24-.14-.56-.32V5.51zm4.29.05v1.96l-.44-.25V6.8l-.46-.27-.77-.45v-.51l1.17.67zm-2.1 1.24v1.96l-.07-.04-.46-.26-.34-.2-.24-.14-.53-.31-.03-.02V6.8l.09.05h.01l1.04.61z" clip-rule="evenodd"/><path fill="#46B9FD" fill-rule="evenodd" d="m14 4.46-.03.01v.01l-1.69.97L8 3.01 3.72 5.45l-1.69-.97v-.01L2 4.46 8.02 1zM6.44 8.78l-.1.06-.45.26-1.67-.96.56-.34.24.14.87.5.45-.26.07-.04v.62zm5.41-.59-1.67.96-.5-.29-.06-.03.06-.04.06-.03v-.52l.44.25 1.1-.63zM9.74 9.43l-1.23.71-.43.25-.53-.3-1.14-.66v-.02l.39-.22.17-.1.24.14.34.2.46.26.07.04.43-.25.66-.39.1.06z" clip-rule="evenodd"/><path fill="#46B9FD" fill-rule="evenodd" d="m9.71 4.32-1.7.98-1.67-.96v-.02l1.67-.96.02-.01.84.49zM7.55 5.51l-1.21.71-.45.26-1.67-.97.84-.49.83-.48.45.26zm4.3.06-1.67.96-.5-.29-1.17-.67v-.02l.85-.48.34-.2.48-.28zM9.74 6.8l-.14.08-1.09.64-.43.25-.53-.31-1.04-.61H6.5l-.09-.05v-.01l.39-.23.45-.26.3-.17.46-.26.07-.04.43.25.77.45z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/shaderlab.svg b/icons/shaderlab.svg
new file mode 100644
index 00000000..11a027e5
--- /dev/null
+++ b/icons/shaderlab.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="m8.525 4.326 2.145 1.188a.113.113 0 0 1 0 .199L8.12 7.125a.25.25 0 0 1-.24 0L5.332 5.713a.114.114 0 0 1 0-.2l2.144-1.187V2L2 5.032v6.064l2.1-1.162V7.558c-.002-.084.102-.145.18-.1l2.549 1.413c.077.043.12.12.12.2v2.823c.002.085-.102.145-.179.1l-2.146-1.188-2.1 1.162L8 15l5.476-3.032-2.1-1.162-2.146 1.188c-.076.044-.182-.014-.18-.1V9.07c0-.084.05-.16.121-.199l2.55-1.412c.076-.045.182.012.18.1v2.375L14 11.096V5.032L8.525 2z"/></svg> \ No newline at end of file
diff --git a/icons/shell.svg b/icons/shell.svg
new file mode 100644
index 00000000..136c8ec1
--- /dev/null
+++ b/icons/shell.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#9EC825" fill-rule="evenodd" d="M3 2v3l3.5 3L3 11v3l6.5-6zm6 10h4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/silq.svg b/icons/silq.svg
new file mode 100644
index 00000000..7ef4ec90
--- /dev/null
+++ b/icons/silq.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#32B9DC" d="M13.888 4.077c.386.447-.22 1.788-2.087 3.515A23 23 0 0 0 9.69 5.98c-.351-.237-.71-.456-1.061-.675 2.621-1.411 4.752-1.823 5.26-1.227"/><path fill="#00728D" d="M8.005 1.482c.631 0 1.307 1.017 1.727 2.595q-.857.37-1.727.859a20 20 0 0 0-1.727-.86c.42-1.586 1.087-2.594 1.727-2.594"/><path fill="#0286AA" d="M2.017 4.55q-.039-.313.105-.482c.14-.167.43-.254.842-.254.947 0 2.525.464 4.419 1.481-.36.22-.72.439-1.061.675a24 24 0 0 0-2.113 1.614C2.824 6.312 2.105 5.208 2.017 4.55"/><path fill="#00728D" d="M2.114 11.932c-.097-.114-.132-.272-.106-.482.088-.658.807-1.762 2.192-3.034.325.281.667.562 1.026.833.053.842.167 1.614.316 2.306-2.052.824-3.13.719-3.428.377"/><path fill="#0286AA" d="M8.005 14.518c-.841 0-1.823-1.78-2.113-4.786l.421.289c1.096.736 2.28 1.403 3.41 1.894-.411 1.595-1.087 2.603-1.718 2.603"/><path fill="#32B9DC" d="M13.888 11.932c-.631.736-3.752-.07-7.224-2.41a22 22 0 0 1-2-1.518c.57-.49 1.237-1 2-1.516q.684-.46 1.341-.842.684.395 1.342.842c.815.552 1.569 1.13 2.226 1.718 2.052 1.824 2.718 3.253 2.315 3.726"/></svg> \ No newline at end of file
diff --git a/icons/slim.svg b/icons/slim.svg
new file mode 100644
index 00000000..135f4034
--- /dev/null
+++ b/icons/slim.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#CC8A3C" d="M11.998 9.212 12 9c0-.71-.06-1.395-.173-2.04l-.029-.213a.3.3 0 0 0-.026-.081A9.7 9.7 0 0 0 11.283 5h.155c.918 0 1.715.626 1.845 1.534.113.79.217 1.826.217 2.966s-.104 2.176-.217 2.966c-.13.908-.927 1.534-1.845 1.534H4.562c-.918 0-1.715-.626-1.845-1.534A21 21 0 0 1 2.5 9.5c0-1.14.104-2.176.217-2.966C2.847 5.626 3.644 5 4.562 5h.155a9.7 9.7 0 0 0-.49 1.666.3.3 0 0 0-.025.081l-.03.212a12 12 0 0 0-.17 2.288 20 20 0 0 0 .2 3.006.24.24 0 0 0 .092.16c.058.047.15.087.268.087h6.876a.42.42 0 0 0 .268-.088.24.24 0 0 0 .092-.159 20 20 0 0 0 .2-3.041"/><path fill="#CC8A3C" fill-rule="evenodd" d="M8 7.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3M8 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6m-2.75 1.5A.75.75 0 0 1 6 9.75h.5a.75.75 0 0 1 0 1.5H6a.75.75 0 0 1-.75-.75m3.5 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/sln.svg b/icons/sln.svg
new file mode 100644
index 00000000..c33f097c
--- /dev/null
+++ b/icons/sln.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><mask id="a" width="12" height="12" x="2" y="2" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#fff" d="m4.2 12.15-2-1.5a.5.5 0 0 1-.2-.4v-4.5a.5.5 0 0 1 .2-.4l2-1.5a.45.45 0 0 0-.137.4v7.5a.45.45 0 0 0 .137.4"/><path fill="#fff" d="M13.777 4.083a.5.5 0 0 0-.622.057l-.035.035L9.13 8l-2.208 2.117-2.042 1.958-.035.035a.5.5 0 0 1-.345.14.5.5 0 0 1-.3-.1l-2-1.5a.5.5 0 0 0 .68-.075L5.1 7.998l1.823-2.115 3.192-3.708A.5.5 0 0 1 10.492 2c.1 0 .196.028.278.083l3.008 2Z"/><path fill="#fff" d="m13.777 11.917-3 2a.506.506 0 0 1-.657-.09l-3.197-3.71L5.1 7.997 2.88 5.423a.5.5 0 0 0-.68-.072l2-1.5a.5.5 0 0 1 .486-.064q.09.037.159.104l.035.035 2.043 1.958L9.13 8l3.99 3.825.035.035a.48.48 0 0 0 .345.14.5.5 0 0 0 .277-.083"/><path fill="#fff" d="M14 4.5v7a.5.5 0 0 1-.223.417l-3 2A.5.5 0 0 0 11 13.5v-11a.5.5 0 0 0-.23-.418l3.008 2A.5.5 0 0 1 14 4.5"/></mask><g mask="url(#a)"><path fill="#05486D" d="m4.2 12.15-2-1.5a.5.5 0 0 1-.2-.4v-4.5a.5.5 0 0 1 .2-.4l2-1.5a.45.45 0 0 0-.137.4v7.5a.45.45 0 0 0 .137.4"/><g filter="url(#b)"><path fill="#2E6F9E" d="M13.777 4.083a.5.5 0 0 0-.622.057l-.035.035-2.125 2.038L9.13 8l-2.208 2.117-2.042 1.958-.035.035a.5.5 0 0 1-.345.14.5.5 0 0 1-.3-.1l-2-1.5a.5.5 0 0 0 .68-.075L4 9.275l1.1-1.277 1.822-2.115 3.193-3.708A.5.5 0 0 1 10.492 2q.152 0 .278.083z"/></g><g filter="url(#c)"><path fill="#3F92CE" d="m13.777 11.917-3 2a.506.506 0 0 1-.657-.09l-3.198-3.71L5.1 7.997 4 6.724l-1.12-1.3a.5.5 0 0 0-.68-.073l2-1.5a.5.5 0 0 1 .486-.064q.09.037.159.104l.035.035 2.042 1.958L9.13 8l1.868 1.79 2.122 2.035.035.035a.5.5 0 0 0 .345.14.5.5 0 0 0 .277-.083"/></g><g filter="url(#d)"><path fill="#5AADFA" d="M14 4.5v7a.5.5 0 0 1-.223.417l-3 2A.5.5 0 0 0 11 13.5v-11a.5.5 0 0 0-.23-.418l3.008 2A.5.5 0 0 1 14 4.5"/></g></g><defs><filter id="b" width="21.939" height="20.612" x="-2.981" y="-1.886" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".246"/><feGaussianBlur stdDeviation=".246"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_821_8"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="1.295"/><feGaussianBlur stdDeviation="2.59"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.22 0"/><feBlend in2="effect1_dropShadow_821_8" result="effect2_dropShadow_821_8"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_821_8" result="shape"/></filter><filter id="c" width="21.939" height="20.612" x="-2.981" y="-.136" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".246"/><feGaussianBlur stdDeviation=".246"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_821_8"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="1.295"/><feGaussianBlur stdDeviation="2.59"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.22 0"/><feBlend in2="effect1_dropShadow_821_8" result="effect2_dropShadow_821_8"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_821_8" result="shape"/></filter><filter id="d" width="34.316" height="42.921" x="-4.773" y="-13.46" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation=".13"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_821_8"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation="7.771"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0"/><feBlend in2="effect1_dropShadow_821_8" result="effect2_dropShadow_821_8"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_821_8" result="shape"/></filter></defs></svg> \ No newline at end of file
diff --git a/icons/smarty.svg b/icons/smarty.svg
new file mode 100644
index 00000000..5785be34
--- /dev/null
+++ b/icons/smarty.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#F4BF36" fill-rule="evenodd" d="M10 10.242a4.5 4.5 0 1 0-5 0V12h5zM9 13v1H6v-1zm2-6.5a3.5 3.5 0 0 1-2 3.163V11H6V9.663A3.5 3.5 0 1 1 11 6.5m-1.646-.146L8 7.707l-1-1-.646.647-.708-.708L7 5.293l1 1 .646-.647z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/sol.svg b/icons/sol.svg
new file mode 100644
index 00000000..991c675f
--- /dev/null
+++ b/icons/sol.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M10.5 2H6L4 5.5 6 9l2-3.5h4.5zM6 14h4.5l2-3.5-2-3.5-2 3.5H4z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/spc.svg b/icons/spc.svg
new file mode 100644
index 00000000..0376c3d7
--- /dev/null
+++ b/icons/spc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D7597F" fill-rule="evenodd" d="M8.707 2.05a1 1 0 0 0-1.414 0l-.95.95H5a1 1 0 0 0-1 1v1.343l-.95.95a1 1 0 0 0 0 1.414l.95.95V10a1 1 0 0 0 1 1h1v4l2-2 2 2v-4h1a1 1 0 0 0 1-1V8.657l.95-.95a1 1 0 0 0 0-1.414l-.95-.95V4a1 1 0 0 0-1-1H9.657zM8 9a2 2 0 1 0 0-4 2 2 0 0 0 0 4" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/sql.svg b/icons/sql.svg
new file mode 100644
index 00000000..192c070e
--- /dev/null
+++ b/icons/sql.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><path d="M8 11.22A12.7 12.7 0 0 1 5.36 11 6.3 6.3 0 0 1 3 10v2.5c0 .83 2.24 1.5 5 1.5s5-.67 5-1.5V10a6.3 6.3 0 0 1-2.36.95 12.7 12.7 0 0 1-2.64.27m4.81-8.14c-.55-.56-2.14-1-4.11-1.06L8 2h-.7c-2 .08-3.56.5-4.11 1.06A.62.62 0 0 0 3 3.5v1C3 5.33 5.24 6 8 6s5-.67 5-1.5v-1a.62.62 0 0 0-.19-.42M8 7.22A12.5 12.5 0 0 1 5.47 7 6.4 6.4 0 0 1 3 6v2.5C3 9.33 5.24 10 8 10s5-.67 5-1.5V6a6.4 6.4 0 0 1-2.47 1A12.5 12.5 0 0 1 8 7.22" style="fill:#0096c8"/></svg> \ No newline at end of file
diff --git a/icons/sqlite.svg b/icons/sqlite.svg
new file mode 100644
index 00000000..06813283
--- /dev/null
+++ b/icons/sqlite.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0080C8" fill-rule="evenodd" d="M9.356 15c-.13-2.687.667-9.624 3.144-12-1.5 3-2.308 4.835-2.5 8 .128-.897 1-1.5 1.5-1.5.292-.583.64-1.204.997-1.837L12 7l.633.422c.214-.379.429-.761.635-1.14L12 5.82l1.505.014C14.56 3.818 15.24 1.93 14 1 12.507.104 9.61 2.744 8.587 5.782L9.5 7l-1.065-.71a6.6 6.6 0 0 0-.201 1.188L9 8.5l-.78-.52c.01.522.098 1.034.28 1.52.224.596.477 2.578.684 4.195.062.483.12.934.172 1.305" clip-rule="evenodd"/><path fill="#00A4C8" fill-rule="evenodd" d="M7.418 7.215A12.5 12.5 0 0 1 5.47 7 6.4 6.4 0 0 1 3 6v2.5c0 .8 2.08 1.451 4.702 1.497-.203-.49-.403-1.36-.284-2.782M8.1 11.22H8c-.885.019-1.77-.055-2.64-.22A6.3 6.3 0 0 1 3 10v2.5c0 .83 2.24 1.5 5 1.5q.219 0 .433-.005A80 80 0 0 0 8.1 11.22m1.65-9.13a14 14 0 0 0-1.05-.07L8 2h-.7c-2 .08-3.56.5-4.11 1.06A.62.62 0 0 0 3 3.5v1c0 .789 2.023 1.433 4.593 1.495.364-1.61 1.311-2.988 2.158-3.904Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/storybook.svg b/icons/storybook.svg
new file mode 100644
index 00000000..d3bf46f5
--- /dev/null
+++ b/icons/storybook.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E7437A" fill-rule="evenodd" d="m2.633 2.782.4 10.662a.65.65 0 0 0 .62.625l8.668.389h.03A.65.65 0 0 0 13 13.81V2.191l-.001-.04a.65.65 0 0 0-.69-.608l-9.068.567a.65.65 0 0 0-.608.672m7.992 3.583c-.229.177-1.93.298-1.93.046.035-.964-.396-1.006-.636-1.006-.227 0-.611.069-.611.585 0 .526.56.823 1.218 1.172.935.496 2.066 1.095 2.066 2.604 0 1.446-1.174 2.245-2.673 2.245-1.547 0-2.898-.625-2.746-2.795.06-.255 2.027-.194 2.027 0-.024.895.18 1.159.695 1.159.395 0 .576-.218.576-.586 0-.556-.584-.883-1.256-1.26-.91-.511-1.982-1.113-1.982-2.493 0-1.377.947-2.295 2.638-2.295s2.614.904 2.614 2.624m1.313-4.799-1.865.117L10 3.819a.2.2 0 0 0 .028.113c.048.076.138.09.2.033l.836-.766.706.671a.13.13 0 0 0 .093.037c.077-.005.14-.084.137-.179z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/stylelint.svg b/icons/stylelint.svg
new file mode 100644
index 00000000..06c7e35e
--- /dev/null
+++ b/icons/stylelint.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#88C626" fill-rule="evenodd" d="M12.473 2v6.62L8.905 6.413H7.32v.033L3.647 8.62V2l3.674 2.174v.033h1.478v-.033zM9.277 9.609a1.217 1.217 0 1 1-2.434 0 1.217 1.217 0 0 1 2.434 0M8.06 14.5a1.217 1.217 0 1 0 0-2.435 1.217 1.217 0 0 0 0 2.435" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/stylelintignore.svg b/icons/stylelintignore.svg
new file mode 100644
index 00000000..665919b4
--- /dev/null
+++ b/icons/stylelintignore.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#9C9C9C" fill-rule="evenodd" d="M12.473 2v6.62L8.905 6.413H7.32V4.207h1.478v-.033zM3.647 8.62V2l3.674 2.174v2.272zm5.63.989a1.217 1.217 0 1 1-2.434 0 1.217 1.217 0 0 1 2.434 0M8.06 14.5a1.217 1.217 0 1 0 0-2.435 1.217 1.217 0 0 0 0 2.435" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/stylus.svg b/icons/stylus.svg
new file mode 100644
index 00000000..3d88470d
--- /dev/null
+++ b/icons/stylus.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M10.5 11.84c1-1.33.46-3-.37-4.26-.59-.9-2.39-2.2-1.81-3.18s4.52-.87 2.39 1.06l.29.14c1.5 0 3.3-3.16.72-3.41-3.22-.31-6.53 1.53-4.64 5.34.61 1.31 1.42 2.68 1 3.87a2.68 2.68 0 0 1-1.87 1.75c-2.69.26-1.4-3 0-3.8.13-.07.3-.16.11-.35a3.6 3.6 0 0 0-3.53 2.09c-1.54 3.35 5.21 4.08 7.71.75" style="fill:tomato"/></svg> \ No newline at end of file
diff --git a/icons/suo.svg b/icons/suo.svg
new file mode 100644
index 00000000..94a1c9aa
--- /dev/null
+++ b/icons/suo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><mask id="a" width="12" height="12" x="2" y="2" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#fff" d="m4.2 12.15-2-1.5a.5.5 0 0 1-.2-.4v-4.5a.5.5 0 0 1 .2-.4l2-1.5a.45.45 0 0 0-.137.4v7.5a.45.45 0 0 0 .137.4"/><path fill="#fff" d="M13.777 4.083a.5.5 0 0 0-.622.057l-.035.035L9.13 8l-2.208 2.117-2.042 1.958-.035.035a.5.5 0 0 1-.345.14.5.5 0 0 1-.3-.1l-2-1.5a.5.5 0 0 0 .68-.075L5.1 7.998l1.823-2.115 3.192-3.708A.5.5 0 0 1 10.492 2c.1 0 .196.028.278.083l3.008 2Z"/><path fill="#fff" d="m13.777 11.917-3 2a.506.506 0 0 1-.657-.09l-3.197-3.71L5.1 7.997 2.88 5.423a.5.5 0 0 0-.68-.072l2-1.5a.5.5 0 0 1 .486-.064q.09.037.159.104l.035.035 2.043 1.958L9.13 8l3.99 3.825.035.035a.48.48 0 0 0 .345.14.5.5 0 0 0 .277-.083"/><path fill="#fff" d="M14 4.5v7a.5.5 0 0 1-.223.417l-3 2A.5.5 0 0 0 11 13.5v-11a.5.5 0 0 0-.23-.418l3.008 2A.5.5 0 0 1 14 4.5"/></mask><g mask="url(#a)"><path fill="#AD804B" d="m4.2 12.15-2-1.5a.5.5 0 0 1-.2-.4v-4.5a.5.5 0 0 1 .2-.4l2-1.5a.45.45 0 0 0-.137.4v7.5a.45.45 0 0 0 .137.4"/><g filter="url(#b)"><path fill="#CE934E" d="M13.777 4.083a.5.5 0 0 0-.622.057l-.035.035-2.125 2.038L9.13 8l-2.208 2.117-2.042 1.958-.035.035a.5.5 0 0 1-.345.14.5.5 0 0 1-.3-.1l-2-1.5a.5.5 0 0 0 .68-.075L4 9.275l1.1-1.277 1.822-2.115 3.193-3.708A.5.5 0 0 1 10.492 2q.152 0 .278.083z"/></g><g filter="url(#c)"><path fill="#E7AB64" d="m13.777 11.917-3 2a.506.506 0 0 1-.657-.09l-3.198-3.71L5.1 7.997 4 6.724l-1.12-1.3a.5.5 0 0 0-.68-.073l2-1.5a.5.5 0 0 1 .486-.064q.09.037.159.104l.035.035 2.042 1.958L9.13 8l1.868 1.79 2.122 2.035.035.035a.5.5 0 0 0 .345.14.5.5 0 0 0 .277-.083"/></g><g filter="url(#d)"><path fill="#FFB661" d="M14 4.5v7a.5.5 0 0 1-.223.417l-3 2A.5.5 0 0 0 11 13.5v-11a.5.5 0 0 0-.23-.418l3.008 2A.5.5 0 0 1 14 4.5"/></g></g><defs><filter id="b" width="21.939" height="20.612" x="-2.981" y="-1.886" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".246"/><feGaussianBlur stdDeviation=".246"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_821_44"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="1.295"/><feGaussianBlur stdDeviation="2.59"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.22 0"/><feBlend in2="effect1_dropShadow_821_44" result="effect2_dropShadow_821_44"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_821_44" result="shape"/></filter><filter id="c" width="21.939" height="20.612" x="-2.981" y="-.136" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".246"/><feGaussianBlur stdDeviation=".246"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_821_44"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="1.295"/><feGaussianBlur stdDeviation="2.59"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.22 0"/><feBlend in2="effect1_dropShadow_821_44" result="effect2_dropShadow_821_44"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_821_44" result="shape"/></filter><filter id="d" width="34.316" height="42.921" x="-4.773" y="-13.46" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation=".13"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.24 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_821_44"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset/><feGaussianBlur stdDeviation="7.771"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0"/><feBlend in2="effect1_dropShadow_821_44" result="effect2_dropShadow_821_44"/><feBlend in="SourceGraphic" in2="effect2_dropShadow_821_44" result="shape"/></filter></defs></svg> \ No newline at end of file
diff --git a/icons/svelte.svg b/icons/svelte.svg
new file mode 100644
index 00000000..fcbcdb9e
--- /dev/null
+++ b/icons/svelte.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FF3E00" d="M9.313 3.36h.11a2.23 2.23 0 0 1 1.77 1 2 2 0 0 1 .38 1.17q.015.165 0 .33a2 2 0 0 1-.07.27l-.05.16-.14-.1a3.8 3.8 0 0 0-1.1-.55h-.1v-.1a.7.7 0 0 0-.11-.44.68.68 0 0 0-.55-.29h-.18l-.17.07-2.8 1.81a.55.55 0 0 0-.3.38.64.64 0 0 0 .34.683.7.7 0 0 0 .31.077h.18l.17-.1 1.1-.68a2.1 2.1 0 0 1 1.12-.32 2.22 2.22 0 0 1 1.78.95 2.06 2.06 0 0 1 .36 1.56 1.92 1.92 0 0 1-.87 1.29l-2.8 1.78q-.267.165-.57.25a2 2 0 0 1-.56.08 2.22 2.22 0 0 1-1.82-1 2 2 0 0 1-.38-1.16v-.08a2 2 0 0 1 0-.32l.06-.26v-.16l.14.1c.334.242.706.428 1.1.55h.1v.1a.72.72 0 0 0 .24.49.7.7 0 0 0 .56.29.4.4 0 0 0 .16 0l.18-.07 2.76-1.8a.58.58 0 0 0 .27-.38.64.64 0 0 0-.339-.683.7.7 0 0 0-.31-.077h-.18l-.17.07-1.07.75a1.8 1.8 0 0 1-.57.24 2 2 0 0 1-.55.07 2.22 2.22 0 0 1-1.83-1 2.06 2.06 0 0 1-.34-1.55 1.92 1.92 0 0 1 .87-1.29l2.8-1.78q.268-.166.57-.26a2.7 2.7 0 0 1 .5-.07ZM9.293 2a3.4 3.4 0 0 0-1.85.53l-2.8 1.79a3.18 3.18 0 0 0-1.44 2.14 3.32 3.32 0 0 0 .33 2.17 3.1 3.1 0 0 0-.48 1.2 3.4 3.4 0 0 0 .58 2.58A3.74 3.74 0 0 0 6.683 14a3.4 3.4 0 0 0 1.85-.53l2.8-1.78a3.17 3.17 0 0 0 1.44-2.15 3.3 3.3 0 0 0-.33-2.16 3.3 3.3 0 0 0 .48-1.2 3.4 3.4 0 0 0-.58-2.59A3.74 3.74 0 0 0 9.293 2"/></svg> \ No newline at end of file
diff --git a/icons/svelteconfig.svg b/icons/svelteconfig.svg
new file mode 100644
index 00000000..c902cb5a
--- /dev/null
+++ b/icons/svelteconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FF3E00" fill-rule="evenodd" d="M4 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm5.15 2.133h-.09q-.204.01-.4.059a2 2 0 0 0-.458.216L5.96 5.892a1.6 1.6 0 0 0-.458.46c-.12.186-.202.395-.24.615a1.78 1.78 0 0 0 .273 1.291c.16.254.378.462.633.607.256.146.542.223.834.227q.224 0 .44-.059.246-.059.458-.2l.858-.625.136-.058h.144a.5.5 0 0 1 .25.064.545.545 0 0 1 .271.57.5.5 0 0 1-.216.316L7.13 10.6l-.144.058a.3.3 0 0 1-.128 0 .54.54 0 0 1-.45-.241.6.6 0 0 1-.192-.409v-.083h-.08a3 3 0 0 1-.882-.458l-.112-.084v.134l-.048.216a1.6 1.6 0 0 0 0 .267v.067c.002.347.109.685.305.966.159.252.375.46.63.605.254.145.538.224.829.229q.227-.003.449-.067.242-.071.456-.208l2.245-1.484c.182-.118.338-.275.458-.46.12-.186.202-.395.24-.615a1.78 1.78 0 0 0-.289-1.3 1.8 1.8 0 0 0-.622-.574 1.7 1.7 0 0 0-.805-.217 1.6 1.6 0 0 0-.898.266l-.882.567-.136.083H6.93a.5.5 0 0 1-.25-.064.545.545 0 0 1-.271-.569.47.47 0 0 1 .24-.317L8.893 5.4l.136-.058h.144a.5.5 0 0 1 .249.065.55.55 0 0 1 .192.176.6.6 0 0 1 .088.367v.083h.08c.317.102.615.257.883.459l.112.083.04-.133q.035-.112.056-.225a1.6 1.6 0 0 0 0-.275c0-.35-.107-.692-.305-.975a1.8 1.8 0 0 0-.613-.595 1.74 1.74 0 0 0-.806-.239Zm-1.588-.691A2.65 2.65 0 0 1 9.045 3c.48.001.952.123 1.378.353s.791.564 1.067.972c.213.309.364.66.444 1.03s.087.755.021 1.128a2.8 2.8 0 0 1-.385 1c.283.552.376 1.186.265 1.8-.06.367-.195.715-.393 1.024-.2.309-.459.57-.761.768l-2.245 1.483A2.65 2.65 0 0 1 6.953 13a2.9 2.9 0 0 1-1.378-.353 3.04 3.04 0 0 1-1.508-1.998 3 3 0 0 1-.024-1.124c.06-.358.19-.698.385-1a2.86 2.86 0 0 1-.265-1.808 2.7 2.7 0 0 1 .395-1.02c.2-.306.458-.567.76-.764z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/svg.svg b/icons/svg.svg
new file mode 100644
index 00000000..66a07861
--- /dev/null
+++ b/icons/svg.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><circle cx="9.75" cy="9.75" r="4.25" style="fill:#bc406a"/><path d="m5.88 2 2.34 4.07 2.35 4.07H1.18l2.35-4.07z" style="fill:#5497ff"/></svg> \ No newline at end of file
diff --git a/icons/swift.svg b/icons/swift.svg
new file mode 100644
index 00000000..c171110c
--- /dev/null
+++ b/icons/swift.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="m12.92 10.05.06-.2c.71-2.84-1-6.21-4-8a6.87 6.87 0 0 1 1.37 5.75c0 .17-.1.33-.16.48l-.26-.15a37 37 0 0 1-6.12-5 39 39 0 0 0 3.72 4.66 41 41 0 0 1-5.29-4 8 8 0 0 0 .72 1 32.5 32.5 0 0 0 5.43 5.66 6.22 6.22 0 0 1-5.88 0A8.5 8.5 0 0 1 1 9.34a9 9 0 0 0 4.05 3.47 6.48 6.48 0 0 0 5.6 0l.18-.11a2 2 0 0 1 2.94.74c.23.38.63-1.57-.85-3.39" style="fill:#f05138"/></svg> \ No newline at end of file
diff --git a/icons/symfony.svg b/icons/symfony.svg
new file mode 100644
index 00000000..b3996ca9
--- /dev/null
+++ b/icons/symfony.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M12.14 3.83A.84.84 0 0 0 12.77 5a1 1 0 0 0 1.13-.81 1.16 1.16 0 0 0-.85-1.32 2.73 2.73 0 0 0-2.66.49A5.7 5.7 0 0 0 8.65 5.8c-.06.13-.12.27-.17.41l-.59-.46-.56-.44a2.75 2.75 0 0 0-2.39-.68 2.11 2.11 0 0 0-1.75 1.79 2.25 2.25 0 0 0 .67 1.83l.26.28.27.3a.49.49 0 0 1-.1.79.81.81 0 0 1-.92 0l-.09-.06a.3.3 0 0 1 .05-.14 1.6 1.6 0 0 0 .18-.54.88.88 0 0 0-.78-1 .8.8 0 0 0-.64.12.9.9 0 0 0-.33.63 1.55 1.55 0 0 0 .76 1.52 2.8 2.8 0 0 0 2.16.46 2.13 2.13 0 0 0 1.46-.9 1.7 1.7 0 0 0 .09-2 8 8 0 0 0-.77-1l-.17-.21c-.22-.25-.27-.48-.15-.68a.62.62 0 0 1 .7-.29 2 2 0 0 1 1 .48l.82.64c.23.18.45.34.54.43-.17.72-.34 1.44-.5 2.17-.12.53-.15.66-.21.86s-.09.32-.18.71a3.25 3.25 0 0 1-.75 1.44 1.4 1.4 0 0 1-.57.39.73.73 0 0 0 .23-.43 1 1 0 0 0-.27-.85 1.06 1.06 0 0 0-1.22-.16 1.14 1.14 0 0 0-.62 1.2 1.41 1.41 0 0 0 1.19 1.1h.45a2.9 2.9 0 0 0 1.55-.48 5 5 0 0 0 .47-.31 5.8 5.8 0 0 0 1.55-2 7.8 7.8 0 0 0 .81-2.31l.1-.59.5.1h.08a2.87 2.87 0 0 0 1.59-.12 1.45 1.45 0 0 0 1-1.44.8.8 0 0 0-1.4-.31.72.72 0 0 0 0 .95v.1a2.75 2.75 0 0 1-1.49 0h-.15l.07-.37a11 11 0 0 1 .49-2 2.4 2.4 0 0 1 .49-.8 1 1 0 0 1 .83-.27l-.05.08Z" style="fill:#037bb9"/></svg> \ No newline at end of file
diff --git a/icons/tailwind.svg b/icons/tailwind.svg
new file mode 100644
index 00000000..f0d885ad
--- /dev/null
+++ b/icons/tailwind.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#06B6D4" fill-rule="evenodd" d="M8 4Q5.2 4 4.5 7q1.05-1.5 2.45-1.125c.532.143.913.557 1.334 1.015.687.746 1.481 1.61 3.216 1.61q2.8 0 3.5-3-1.05 1.5-2.45 1.125c-.533-.143-.913-.557-1.334-1.015C10.529 4.863 9.735 4 8 4M4.5 8.5q-2.8 0-3.5 3 1.05-1.5 2.45-1.125c.533.143.913.557 1.334 1.015C5.471 12.136 6.265 13 8 13q2.8 0 3.5-3-1.05 1.5-2.45 1.125c-.532-.143-.913-.557-1.334-1.015C7.029 9.364 6.235 8.5 4.5 8.5" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/tauri.svg b/icons/tauri.svg
new file mode 100644
index 00000000..ba2f8934
--- /dev/null
+++ b/icons/tauri.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FFC131" d="M10 6.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/><path fill="#24C8DB" d="M6.5 8a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3"/><path fill="#FFC131" fill-rule="evenodd" d="M10.895 10.362A4.6 4.6 0 0 1 9.306 11a3.15 3.15 0 0 0 .154-1.44 3.2 3.2 0 0 0 1.886-1.704 3.16 3.16 0 0 0-.527-3.427 3.24 3.24 0 0 0-1.552-.96 3.3 3.3 0 0 0-1.831.026 3.24 3.24 0 0 0-1.524 1.002c.046-.063-.051.06 0 0-.616.068-1.36.426-1.912.693.18-.568.472-1.098.862-1.559A4.6 4.6 0 0 1 7.03 2.204a4.66 4.66 0 0 1 2.606-.036 4.6 4.6 0 0 1 2.208 1.365 4.5 4.5 0 0 1 1.104 2.33 4.5 4.5 0 0 1-.354 2.549 4.56 4.56 0 0 1-1.7 1.95Zm-6.84-4.343 1.129.137q.041-.325.145-.632a4.6 4.6 0 0 0-1.274.495" clip-rule="evenodd"/><path fill="#24C8DB" fill-rule="evenodd" d="M4.105 5.64A4.6 4.6 0 0 1 5.706 5a3.15 3.15 0 0 0-.18 1.446 3.2 3.2 0 0 0-1.872 1.7 3.16 3.16 0 0 0 .527 3.426c.413.46.952.794 1.552.96s1.235.156 1.83-.026c.595-.183 1.038-.534 1.437-1.006-.047.064.051-.06 0 0 .617-.069 1.448-.426 2-.693a4.5 4.5 0 0 1-.863 1.563 4.6 4.6 0 0 1-2.168 1.426 4.66 4.66 0 0 1-2.605.036 4.6 4.6 0 0 1-2.208-1.365 4.49 4.49 0 0 1-.75-4.877 4.56 4.56 0 0 1 1.699-1.95" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/taze.svg b/icons/taze.svg
new file mode 100644
index 00000000..f127f847
--- /dev/null
+++ b/icons/taze.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#79E78B" fill-rule="evenodd" d="M2.264 12.75c.984 1.4 1.64 1.75 1.846 1.75a17 17 0 0 1 2.058-1.934c.892-.713 1.664-.807 2.583-.918.316-.039.65-.08 1.013-.148-.973-.553-1.177-1.294-1.377-2.018-.305-1.11-.6-2.18-3.623-2.482a2 2 0 0 0-.12.694l-.38 2.23a20.4 20.4 0 0 0-2 2.826m3-3.75-.5 2.5 2.5-3.5zm2.5 0-2.5 3 2.5-1z" clip-rule="evenodd"/><path fill="#49A958" d="M4.09 4.086a2.36 2.36 0 0 1 1.482.676c-.242-.707-.654-1.328-1.105-1.828.574-.98 1.726-1.572 3.042-1.43a3.8 3.8 0 0 1 2.008.851c.32-.167.69-.242 1.081-.2 1.192.128 2.141 1.296 2.119 2.609q-.007.346-.097.653a3.07 3.07 0 0 0-1.671.669c.527-.142 1.133.006 1.706.32.723.582 1.184 1.44 1.169 2.351-.021 1.215-.883 2.156-2.063 2.399a3.1 3.1 0 0 0-1.187-1.424c.318.479.359 1.14.218 1.819-.47.727-1.272 1.156-2.175 1.059-1.415-.152-2.54-1.538-2.514-3.097a3 3 0 0 1 .116-.783 2.45 2.45 0 0 1-1.54.327c-1.42-.152-2.55-1.392-2.527-2.768.02-1.151.84-2.033 1.938-2.203"/></svg> \ No newline at end of file
diff --git a/icons/terrafile.svg b/icons/terrafile.svg
new file mode 100644
index 00000000..a508e013
--- /dev/null
+++ b/icons/terrafile.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#7A6DF4" fill-rule="evenodd" d="M4 3.5h8a.5.5 0 0 1 .5.5v1.464l-2.357 1.179V9.5L12.5 8.321V12a.5.5 0 0 1-.5.5H9.429v-2.286L6.57 8.786V12.5H4a.5.5 0 0 1-.5-.5V6.536l2.357 1.178V4.857L3.585 3.721A.5.5 0 0 1 4 3.5M2 4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm4.571 1.214L9.43 6.643V9.5L6.57 8.071z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/terraform.svg b/icons/terraform.svg
new file mode 100644
index 00000000..f9fc73a4
--- /dev/null
+++ b/icons/terraform.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#7A6DF4" d="m6 4 4 2v4L6 8zM1 1.5l4 2v4l-4-2zM6 9l4 2v4l-4-2z"/><path fill="#4F4FE8" d="m15 4-4 2v4l4-2z"/></svg> \ No newline at end of file
diff --git a/icons/terraformvars.svg b/icons/terraformvars.svg
new file mode 100644
index 00000000..ad374b9a
--- /dev/null
+++ b/icons/terraformvars.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#79D49C" d="m6 4 4 2v4L6 8zM1 1.5l4 2v4l-4-2zM6 9l4 2v4l-4-2z"/><path fill="#35CDE3" d="m15 4-4 2v4l4-2z"/></svg> \ No newline at end of file
diff --git a/icons/terraformversion.svg b/icons/terraformversion.svg
new file mode 100644
index 00000000..5484620d
--- /dev/null
+++ b/icons/terraformversion.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#7A6DF4" fill-opacity=".5" fill-rule="evenodd" d="M4 5H3a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h1V9.5h-.5v-3H4zm3-1H6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h1v-1.5h-.5v-5H7z" clip-rule="evenodd"/><path fill="#7A6DF4" fill-rule="evenodd" d="M9.5 4.5v7h3v-7zM9 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/testjs.svg b/icons/testjs.svg
new file mode 100644
index 00000000..eb9f53de
--- /dev/null
+++ b/icons/testjs.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#FBB03B" d="m13.629 10.75-3.65-4.42V4h.542V3H5.107v1h.542v2.35l-3.357 4.52c-.194.32-.295.68-.292 1.047s.11.726.31 1.043c.201.316.488.579.832.761A2.4 2.4 0 0 0 4.274 14h7.46a2.4 2.4 0 0 0 1.162-.299 2.2 2.2 0 0 0 .832-.805 1.97 1.97 0 0 0 .27-1.086 2 2 0 0 0-.37-1.06Zm-.856 1.68a1.14 1.14 0 0 1-.453.428c-.191.1-.41.15-.63.142H4.275a1.3 1.3 0 0 1-.59-.133 1.16 1.16 0 0 1-.442-.384 1.03 1.03 0 0 1-.05-1.083l3.54-4.75V4h2.165v2.67l3.844 4.64a1.05 1.05 0 0 1 .033 1.12Z"/><path fill="#FBB03B" d="M10.318 10H5.563L4 11.96l.09.04h7.802a.1.1 0 0 0 .055-.01.1.1 0 0 0 .036-.03.06.06 0 0 0 .017-.039.06.06 0 0 0-.017-.039z"/></svg> \ No newline at end of file
diff --git a/icons/testts.svg b/icons/testts.svg
new file mode 100644
index 00000000..39df27a5
--- /dev/null
+++ b/icons/testts.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0E8ADC" fill-rule="evenodd" d="m9.98 6.33 3.649 4.42c.224.316.351.682.369 1.06a1.97 1.97 0 0 1-.27 1.086 2.2 2.2 0 0 1-.832.805 2.4 2.4 0 0 1-1.162.299h-7.46a2.4 2.4 0 0 1-1.132-.278 2.2 2.2 0 0 1-.831-.762A2 2 0 0 1 2 11.917a2 2 0 0 1 .291-1.047L5.65 6.35V4h-.542V3h5.414v1H9.98zm2.34 6.528c.191-.101.348-.25.453-.428a1.05 1.05 0 0 0-.032-1.12L8.897 6.67V4H6.732v2.65L3.19 11.4a1.03 1.03 0 0 0 .05 1.083c.11.161.262.294.443.384.18.09.384.136.59.133h7.417c.22.008.438-.041.63-.142M5.563 10h4.755l1.665 1.882a.06.06 0 0 1 .017.04.06.06 0 0 1-.017.039.1.1 0 0 1-.036.03.1.1 0 0 1-.055.009H4.091L4 11.96z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/tmpl.svg b/icons/tmpl.svg
new file mode 100644
index 00000000..969b5ae8
--- /dev/null
+++ b/icons/tmpl.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><path d="M3 7v2l4 3.5v-2L4 8l3-2.5v-2zm6-3.5v2L12 8l-3 2.5v2L13 9V7z" style="fill:#34cbce"/></svg> \ No newline at end of file
diff --git a/icons/todo.svg b/icons/todo.svg
new file mode 100644
index 00000000..e14c0916
--- /dev/null
+++ b/icons/todo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#2CB081" d="M8 12.5a4.5 4.5 0 1 0-3.96-6.64l3.356 2.609 2.535-2.957 1.138.976-3.465 4.043-4.06-3.158v.001L2.235 6.328A6 6 0 1 1 2 8.06l1.74 1.392A4.5 4.5 0 0 0 8 12.5"/></svg> \ No newline at end of file
diff --git a/icons/toml.svg b/icons/toml.svg
new file mode 100644
index 00000000..139593ce
--- /dev/null
+++ b/icons/toml.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D87A35" d="M13 3h-3V2h4v12h-4v-1h3zM2 2h4v1H3v10h3v1H2z"/><path fill="#D87A35" d="M5 5v2h2v5h2V7h2V5z"/></svg> \ No newline at end of file
diff --git a/icons/toolversions.svg b/icons/toolversions.svg
new file mode 100644
index 00000000..a13f8319
--- /dev/null
+++ b/icons/toolversions.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D86EAD" fill-rule="evenodd" d="M7.5 3.5v9h4.1l1.732 1.444A1 1 0 0 1 13 14H7a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v4.298c-.403-.646-.947-1.066-1.5-1.225V3.5zM5 4H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2v-1.5H3.5v-5H5zm5.59 6.02L9.198 8.179c-.49.9-.384 2.014.337 2.735.595.596 1.743.582 2.533.348l1.11.98S13.925 13 14 13v-2.5l-.69-.545c.233-.79.095-1.928-.501-2.524-.72-.72-1.682-.77-2.582-.28l1.842 1.39-.338 1.142z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/tox.svg b/icons/tox.svg
new file mode 100644
index 00000000..cdfe3495
--- /dev/null
+++ b/icons/tox.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#3B60C7" d="M12.5 11.969A5.98 5.98 0 0 0 14 8a5.98 5.98 0 0 0-1.5-3.969z"/><path fill="#6281A4" d="M11 13.197V2.803a6 6 0 0 0-1-.462V13.66q.525-.187 1-.462Z"/><path fill="#8AA181" d="M8.5 13.98V2.02a6 6 0 0 0-1 0v11.96a6 6 0 0 0 1 0"/><path fill="#B1C25E" d="M6 13.659V2.34q-.525.187-1 .462v10.394q.475.275 1 .462Z"/><path fill="#D8E23B" d="M3.5 11.969A5.98 5.98 0 0 1 2 8c0-1.522.566-2.911 1.5-3.969z"/></svg> \ No newline at end of file
diff --git a/icons/travis.svg b/icons/travis.svg
new file mode 100644
index 00000000..dcde72eb
--- /dev/null
+++ b/icons/travis.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E5CCAC" d="m2.6 10.2-.6-3 .6-.6L8 6l5.5 1.5L14 9v1.2l-.6.6-2.4 2.4L8.6 15l-1.8-.6L5 13.2l-1.2-1.8-.6-.6z"/><path fill="#CB3349" d="M4.875 13.6 3.5 12.5l2-.1 1.5-.9h2.5l2 .5H13l-1.25 1.2-1.875.4-1.25-.4H8l-1.875.8z"/><path fill="#F4EDAE" d="M2 7.25V6.083l.571-.583 1.143-1.75 1.143-1.167L7 1.5h3l1 .5 1.5 1.5 1 1.5 1 1v1.833L12.857 9V7.833l-1.714-.583H7.714l-4.571.583L2.5 8z"/><path fill="#D6B58C" d="M3.556 10.429V8.714L3 7.571 6.889 7H13.5l-.5 3-1.111 1-2.222-.571L8.5 9l-1.056.286-.555 1.143L4.667 11z"/><path fill="#CB3349" d="m2 9.5 1.2-2L5 7zM6 8l.5-1H12L9 8V7h-.6z"/><path fill="#2F2E2C" d="M7.978 1a5 5 0 0 0-.466.03 5.5 5.5 0 0 0-1.486.38C4.9 1.878 3.583 2.89 2.763 4.94a3.8 3.8 0 0 0-.893.467.3.3 0 0 0-.088.105c-.103.21-.122.44-.136.694a4 4 0 0 0 .02.724c.028.198.09.46.165.704.036.121.07.24.116.342.044.096.07.184.204.276l-1.068 1.856-.029.048a.3.3 0 0 0 .083.423.315.315 0 0 0 .432-.08s.273-.315.709-.743c.031.214.072.453.136.638.053.157.14.365.233.552.046.094.088.178.145.257a.7.7 0 0 0 .107.123.35.35 0 0 0 .253.096c.127 0 .253-.02.398-.039.005 0 .005.002.01 0 .033.122.04.18.126.39.065.162.151.335.252.505l-.417-.019a.31.31 0 0 0-.295.157.3.3 0 0 0 .023.329c.435.567.9.97 1.32 1.237.42.266.785.409 1.107.409.083 0 .168-.01.253-.02.052.032 1.064.629 2.233.629 1.517 0 2.627-.942 2.778-1.075a6 6 0 0 0 .796-.22c.237-.088.418-.254.602-.447.185-.192.368-.414.525-.628.313-.428.543-.828.543-.828a.3.3 0 0 0-.02-.332.31.31 0 0 0-.32-.115l.078-.247.593-.067a.31.31 0 0 0 .242-.18s.18-.373.253-.686c.038-.16.07-.402.097-.638.027-.235.048-.408.048-.533 0-.18-.08-.234-.126-.276-.045-.041-.09-.066-.136-.095a3 3 0 0 0-.233-.124c.086-.025.175-.048.253-.076a1 1 0 0 0 .252-.114c.005-.003.005-.006.01-.01.126-.083.164-.167.214-.256q.079-.138.145-.305a4 4 0 0 0 .194-.676c.05-.272.061-.572.04-.847-.023-.274-.058-.505-.156-.704a.3.3 0 0 0-.097-.114c-.287-.215-.642-.372-.99-.495-.725-1.949-2.075-2.951-3.264-3.436a6.6 6.6 0 0 0-2.107-.466L8.162 1c.034 0-.014.002-.048 0zm.01.61c.048 0 .079-.002.106 0h.068c.034 0 .076.004.185.01.11.004.267.011.456.037.38.051.89.157 1.438.38.98.4 2.062 1.16 2.748 2.656a26 26 0 0 0-.583-.143.3.3 0 0 0-.087-.01.31.31 0 0 0-.32.296c-.006.168.13.31.3.314a8 8 0 0 0 1.01.257c.004.001.006.008.01.01l.02.009c.058.045.13.069.203.067.28.107.55.235.748.37.026.08.062.216.078.41.018.23.007.498-.03.695a3.5 3.5 0 0 1-.164.561 2 2 0 0 1-.107.238.3.3 0 0 1-.04.057 4 4 0 0 1-.262.086l.137-.505a.304.304 0 0 0-.224-.37s-2.117-.562-5.516-.562c-.536 0-1.022.021-1.485.047h-.01a.3.3 0 0 0-.078-.01l-.039.01h-.019a.3.3 0 0 0-.146.02c-2.08.142-3.29.475-3.389.504h-.029a.3.3 0 0 0-.087.038l-.02.01V7.1l-.02.01-.009.009-.02.01v.009l-.019.01v.009l-.02.02a.4.4 0 0 0-.03.057l-.25.427a2 2 0 0 1-.069-.2 5 5 0 0 1-.136-.618 3.6 3.6 0 0 1-.02-.61 1.8 1.8 0 0 1 .06-.39c.304-.205.774-.398 1.194-.523.448-.133.806-.2.806-.2a.303.303 0 0 0-.088-.6l-.029.01s-.294.055-.66.153c.756-1.58 1.81-2.334 2.719-2.713a4.8 4.8 0 0 1 1.719-.361ZM6.919 2.818v.914h.622v-.305h.31v1.828h-.31v.609h1.243v-.61h-.31V3.428h.31v.305h.621v-.914H6.92Zm.544 4.283c-.285.125-.55.25-.747.352l.058-.324q.33-.018.69-.028Zm2.282.028q.53.027.981.067a8 8 0 0 1-.922.276c-.174.04-.167.031-.311.057.053-.076.108-.152.155-.228.037-.06.068-.113.097-.172m-3.632.124-.126.685a.31.31 0 0 0 .124.313c.102.07.237.074.342.011 0 0 1.254-.678 2.447-.98l-.029.047c-.174.236-.34.438-.34.438a.3.3 0 0 0-.032.337c.06.108.18.17.304.158 0 0 .507-.056 1.137-.2.623-.143 1.376-.365 1.922-.742.716.1 1.175.204 1.35.247l-.175.647a.3.3 0 0 0-.039.172l-.368 1.36-.826.667-2.175-.267-.554-1.351a.31.31 0 0 0-.291-.19H7.541a.31.31 0 0 0-.291.19l-.564 1.38-1.903.41-.913-.467-.272-1.504c.74-.555 1.61-1.084 2.515-1.36Zm-1.767.133a12 12 0 0 0-1.622 1.142c-.014.012-.014.008-.029.02l.544-.933c.123-.035.458-.118 1.107-.229m6.04 1.104c-.293.01-.482.386-.466.838.016.45.26.448.554.438.394-.007.608-.132.806-.038-.003-.011-.057-.194-.33-.162a.54.54 0 0 0 .029-.276c-.037-.451-.299-.81-.593-.8m-4.282.105c-.294.002-.572.376-.554.828q.006.176.049.267c-.256.063-.327.218-.33.228.161-.086.346-.077.63-.076h.176c.293-.003.539.024.534-.428-.005-.453-.212-.821-.505-.819m4.253.18a.15.15 0 0 1 .155.144c.002.08-.072.15-.155.152-.082.001-.144-.071-.146-.152s.064-.142.146-.143Zm-4.205.106c.083-.003.144.06.146.142a.15.15 0 0 1-.146.153c-.083.002-.143-.062-.145-.143a.15.15 0 0 1 .145-.152m7.322.104c.038.017.04.02.078.038.074.036.142.074.194.105-.006.08-.02.176-.039.343a8 8 0 0 1-.077.57c-.03.131-.103.287-.156.41l-.611.076a.31.31 0 0 0-.263.21l-.252.808-.272.067c-.124.027-.248.047-.223.047-.192 0-1.013-.008-1.127-.009-.048-.023-.257-.112-.524-.238-.148-.07-.295-.15-.418-.21l-.233-.114a.3.3 0 0 0-.184-.047q-.031.003-.059.01a.3.3 0 0 0-.081-.292.31.31 0 0 0-.297-.08.31.31 0 0 0-.233.21s-.032.117-.127.238c-.094.12-.21.218-.408.218-.413 0-.543-.4-.543-.4a.31.31 0 0 0-.205-.255.32.32 0 0 0-.325.071.3.3 0 0 0-.072.318.3.3 0 0 0-.234.076l-.854.771c-.03.012-.232.1-.515.19a4.6 4.6 0 0 1-.709.172c-.17-.181-.329-.474-.437-.743a4 4 0 0 1-.184-.57.3.3 0 0 0-.03-.077l.545.276c.065.035.14.044.213.029l2.175-.476a.31.31 0 0 0 .224-.18l.544-1.333h.815l.544 1.332a.31.31 0 0 0 .253.19l2.486.305a.32.32 0 0 0 .233-.067l1.01-.818a.3.3 0 0 0 .107-.162zm-10.43.067.253 1.323a.3.3 0 0 0 .156.21l.272.151s-.124.02-.263.038c-.081.011-.12.012-.184.02-.02-.035-.052-.062-.078-.115a4 4 0 0 1-.194-.476 5 5 0 0 1-.107-.561c-.03-.208-.048-.38-.048-.38v-.03c.068-.059.122-.12.194-.18Zm6.303 2.617c.05.025.085.051.156.086.127.062.287.128.437.2.298.141.572.276.572.276q.066.03.136.028s.987.01 1.205.01c.13 0 .222-.027.359-.058.066-.014.142-.039.214-.057-.042.06-.032.061-.078.124-.146.2-.301.401-.457.562a1.4 1.4 0 0 1-.378.295c-.313.117-1.609.342-1.797.342-.054 0-.487-.08-.514-.095-.207-.11-.845-.59-.845-.59a.32.32 0 0 0-.379-.01s-.216.159-.466.324a9 9 0 0 1-.602.362c-.307.119-.913.314-1.234.314-.103 0-.413-.08-.767-.305a4.3 4.3 0 0 1-.699-.58c.132.005.203.008.301.01a.3.3 0 0 0 .155 0c.305-.014.64-.113.942-.21.325-.104.583-.21.583-.21a.3.3 0 0 0 .097-.057l.777-.704c.08.027.115.044.262.086a3.6 3.6 0 0 0 .835.143q.082 0 .156-.01c.013-.001.027-.008.039-.01q.01.002.02 0c.204-.027.389-.085.553-.142a3 3 0 0 1 .417-.124m-1.185 1.732c.163.126.46.364.738.514.212.113.431.158.612.171a3.4 3.4 0 0 1-1.35.305c-.463 0-.925-.125-1.281-.257q.149-.052.262-.095c.22-.085.461-.258.718-.428.16-.106.213-.15.301-.21"/></svg> \ No newline at end of file
diff --git a/icons/tres.svg b/icons/tres.svg
new file mode 100644
index 00000000..f4ad3521
--- /dev/null
+++ b/icons/tres.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E49C30" fill-rule="evenodd" d="M5.18 3.29a6.6 6.6 0 0 1 1.6-.581c.219.39.419.813.593 1.226a4 4 0 0 1 .623-.053h.008c.208.003.416.017.623.053C8.8 3.522 9 3.1 9.22 2.71c.549.13 1.09.31 1.6.58-.012.477-.041.933-.1 1.396q.093.063.187.122c.138.089.275.177.402.284l.09.073c.158.128.316.255.458.405q.516-.361 1.068-.658c.398.455.77.945 1.075 1.494-.23.393-.468.761-.726 1.11h-.007l-.001 3.101v.035h-.009l-.008.002-1.948.199a.2.2 0 0 0-.13.066.23.23 0 0 0-.059.14l-.06.912-1.7.128-.117-.841a.214.214 0 0 0-.207-.19H6.972a.2.2 0 0 0-.137.054.23.23 0 0 0-.07.136l-.117.841-1.7-.128-.06-.912a.23.23 0 0 0-.059-.14.2.2 0 0 0-.13-.066l-1.948-.2h-.018V7.514h-.007c-.258-.35-.497-.717-.726-1.11A8.6 8.6 0 0 1 3.075 4.91q.552.296 1.067.658c.142-.15.3-.277.457-.404l.092-.074c.127-.108.266-.197.404-.285l.185-.121c-.059-.463-.088-.92-.1-1.396Zm-2.448 8.459c0-.034-.002-.087-.002-.219l1.752.179.06.917a.23.23 0 0 0 .061.141.2.2 0 0 0 .134.065l2.075.157a.2.2 0 0 0 .146-.048.23.23 0 0 0 .077-.141l.119-.856h1.693l.119.856a.23.23 0 0 0 .07.135.2.2 0 0 0 .137.055h.015l2.076-.157a.2.2 0 0 0 .133-.065.23.23 0 0 0 .061-.142l.06-.917 1.752-.179c0 .132-.002.185-.003.219v.044c0 1.962-2.347 2.905-5.263 2.916h-.008c-2.916-.011-5.263-.954-5.263-2.916v-.044Zm4.41-3.469a1.286 1.286 0 1 1-2.57 0 1.286 1.286 0 0 1 2.57 0m4.287 0a1.286 1.286 0 1 1-2.572 0 1.286 1.286 0 0 1 2.572 0" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/tscn.svg b/icons/tscn.svg
new file mode 100644
index 00000000..9d2aacb5
--- /dev/null
+++ b/icons/tscn.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#D9606C" fill-rule="evenodd" d="M3 3.2h2.385L4.345 5H3zM2 6V3.2C2 2.537 2.448 2 3 2h10c.552 0 1 .537 1 1.2v9.6c0 .663-.448 1.2-1 1.2H3c-.552 0-1-.537-1-1.2zm1 0h4.186a4.4 4.4 0 0 0-1.066.387c.008.317.028.622.067.93l-.124.08c-.092.06-.184.119-.27.191l-.06.05c-.105.084-.21.169-.305.269a7 7 0 0 0-.711-.44A5.7 5.7 0 0 0 4 8.465q.228.392.484.74h.005v2.09l.011.002 1.3.133a.14.14 0 0 1 .086.044.15.15 0 0 1 .04.093l.04.608 1.132.086.078-.562a.15.15 0 0 1 .047-.09.14.14 0 0 1 .092-.036h1.37c.07 0 .128.054.139.126l.078.562 1.133-.086.04-.608a.15.15 0 0 1 .039-.093.14.14 0 0 1 .087-.044l1.298-.133h.006l.003-.001h.003V9.204h.005q.256-.347.484-.74a5.7 5.7 0 0 0-.717-.996 7 7 0 0 0-.711.439 3 3 0 0 0-.306-.27l-.06-.049a2.4 2.4 0 0 0-.268-.189q-.063-.04-.125-.082c.04-.308.059-.612.067-.93-.34-.18-.7-.3-1.067-.387-.146.26-.279.542-.395.818a2.6 2.6 0 0 0-.415-.036h-.006a2.5 2.5 0 0 0-.415.036A8 8 0 0 0 7.186 6H13v6.8h-1.69a1.4 1.4 0 0 0 .201-.774c0-.022.002-.057.002-.145l-1.167.12-.04.61a.15.15 0 0 1-.041.095.14.14 0 0 1-.09.043l-.67.051h-.83a.15.15 0 0 1-.031-.073l-.08-.57H7.437l-.08.57a.15.15 0 0 1-.03.073H6.5l-.677-.051a.14.14 0 0 1-.089-.043.15.15 0 0 1-.04-.095L5.655 12l-1.168-.119.002.175c0 .279.07.527.201.744H3zm10-1V3.2h-.46L11.5 5zm-2.631 0-.018-.01 1.033-1.79H9.54L8.5 5zM7.345 5l1.04-1.8H6.539L5.5 5zm2.084 5.571a.857.857 0 1 0 0-1.714.857.857 0 0 0 0 1.714m-2.858 0a.857.857 0 1 0 0-1.714.857.857 0 0 0 0 1.714" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/tsconfig.svg b/icons/tsconfig.svg
new file mode 100644
index 00000000..eccf920b
--- /dev/null
+++ b/icons/tsconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0E8ADC" d="M8.219 8.5a1.281 1.281 0 1 0 2.562 0 1.281 1.281 0 0 0-2.562 0"/><path fill="#0E8ADC" fill-rule="evenodd" d="M2 4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm10.975 4.899a.28.28 0 0 1-.27.235h-.675c-.131 0-.329.268-.376.364s-.01.25.083.342l.477.478c.093.092.1.25.016.35l-.562.562a.266.266 0 0 1-.35-.016l-.478-.477c-.092-.093-.419-.044-.52-.01-.103.036-.186.172-.186.303v.675c0 .13-.106.252-.235.27 0 0-.182.025-.399.025-.216 0-.398-.025-.398-.025a.28.28 0 0 1-.236-.27v-.675c0-.131-.268-.329-.364-.376s-.25-.01-.342.083l-.478.477a.266.266 0 0 1-.35.016l-.562-.562a.266.266 0 0 1 .016-.35l.477-.478c.093-.092.044-.419.01-.52-.036-.103-.172-.186-.302-.186h-.676a.28.28 0 0 1-.27-.236S6 8.717 6 8.5c0-.216.025-.398.025-.398a.28.28 0 0 1 .27-.236h.676c.13 0 .328-.268.375-.364s.01-.25-.083-.342l-.477-.478a.266.266 0 0 1-.016-.35l.562-.562a.266.266 0 0 1 .35.016l.478.477c.092.093.419.044.52.01.103-.036.186-.172.186-.302v-.676c0-.13.106-.252.236-.27 0 0 .182-.025.398-.025s.399.025.399.025c.129.018.235.14.235.27v.676c0 .13.268.328.364.375s.25.01.342-.083l.478-.477c.092-.093.25-.1.35-.016l.562.562c.084.1.077.258-.016.35l-.477.478c-.093.092-.044.42-.01.521.036.102.172.185.303.185h.675c.13 0 .252.106.27.236a3.3 3.3 0 0 0 0 .797" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/tsx.svg b/icons/tsx.svg
new file mode 100644
index 00000000..9e61e9a6
--- /dev/null
+++ b/icons/tsx.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M4 7.12V6.06h4.28v1.06H6.69v4.77h-1.1V7.12zM10.82 6a3 3 0 0 1 .64.07 3.7 3.7 0 0 1 .64.21 3.5 3.5 0 0 1 .6.33l-.47.93a3.3 3.3 0 0 0-.7-.36 2 2 0 0 0-.71-.13 1.53 1.53 0 0 0-.78.17.52.52 0 0 0-.28.46.54.54 0 0 0 .15.4.73.73 0 0 0 .35.21 5 5 0 0 0 .6.15H11a4.7 4.7 0 0 1 .92.26 1.37 1.37 0 0 1 .62.5 1.54 1.54 0 0 1 .25.94 1.66 1.66 0 0 1-.26 1 1.6 1.6 0 0 1-.76.6 3.1 3.1 0 0 1-1.2.21 4.5 4.5 0 0 1-.82-.08 4 4 0 0 1-.75-.25 3 3 0 0 1-.62-.39l.51-.91a2.3 2.3 0 0 0 .77.43 2.9 2.9 0 0 0 .91.15 1.57 1.57 0 0 0 .83-.18.57.57 0 0 0 .3-.52.5.5 0 0 0-.13-.37.75.75 0 0 0-.35-.2l-.54-.12h-.08a4.6 4.6 0 0 1-1-.23 1.4 1.4 0 0 1-.66-.48 1.58 1.58 0 0 1-.27-1 1.8 1.8 0 0 1 .26-1 1.6 1.6 0 0 1 .73-.61A2.9 2.9 0 0 1 10.82 6m2.68-3.55h-11a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1.05h11a1 1 0 0 0 1-1.05v-9a1 1 0 0 0-1-1" style="fill:#00c491"/></svg> \ No newline at end of file
diff --git a/icons/turbo.svg b/icons/turbo.svg
new file mode 100644
index 00000000..19c47fa5
--- /dev/null
+++ b/icons/turbo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M8 9.75a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5m0 2a3.75 3.75 0 1 0 0-7.5 3.75 3.75 0 0 0 0 7.5" clip-rule="evenodd"/><path fill="#40A8E2" d="M8.75 14.206a6.251 6.251 0 0 0 0-12.411v1.514a4.751 4.751 0 0 1 0 9.382z"/><path fill="#F1608B" d="M7.25 12.691a4.7 4.7 0 0 1-2.22-.984l-1.1 1.036a6.23 6.23 0 0 0 3.32 1.463zm-4.334-1.054A6.22 6.22 0 0 1 1.75 8h1.5c0 .958.284 1.85.772 2.596z"/></svg> \ No newline at end of file
diff --git a/icons/twig.svg b/icons/twig.svg
new file mode 100644
index 00000000..82fed18e
--- /dev/null
+++ b/icons/twig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" id="Calque_1" data-name="Calque 1" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#88c626}</style></defs><path d="M3.5 13H7s-.5-6.5-5-9a30 30 0 0 1 1.5 9m2-6.5A7.14 7.14 0 0 1 7 10a14.26 14.26 0 0 0 1-8.5S7 5 5.5 6.5m2 6.5h3s-1-5.5 1.5-7.5C10 6 7.5 9 7.5 13" class="cls-1"/><path d="M9.5 13H12a8.6 8.6 0 0 1 1-4c-2 .5-3.5 4-3.5 4" class="cls-1"/></svg> \ No newline at end of file
diff --git a/icons/txt.svg b/icons/txt.svg
new file mode 100644
index 00000000..c2289776
--- /dev/null
+++ b/icons/txt.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#6DC85E" fill-rule="evenodd" d="M9.79 2.29C10.47 3 12 4.53 12.7 5.21a1 1 0 0 1 .3.7V13a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h5.09a1 1 0 0 1 .7.29M5 5h4v1H5zm0 2h6v1H5zm6 2H5v1h6z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/typescript.svg b/icons/typescript.svg
new file mode 100644
index 00000000..93d060b5
--- /dev/null
+++ b/icons/typescript.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0E8ADC" fill-rule="evenodd" d="M3 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1zm1.302 3.252v.955h1.462v4.297h1.01V7.207h1.462v-.955zm6.857.009a2.7 2.7 0 0 0-.588-.063 2.7 2.7 0 0 0-1.067.171c-.276.111-.51.303-.67.55-.17.27-.252.583-.24.9-.022.32.065.637.249.901.154.2.365.35.606.432q.448.154.92.208h.073l.496.108c.122.03.233.092.322.18a.44.44 0 0 1 .12.333.51.51 0 0 1-.276.469 1.47 1.47 0 0 1-.763.162c-.285 0-.567-.046-.837-.135a2.2 2.2 0 0 1-.707-.388l-.469.82q.263.21.57.351.332.148.69.226.373.07.753.071c.377.01.752-.054 1.103-.189.284-.104.528-.293.698-.54a1.47 1.47 0 0 0 .24-.9 1.38 1.38 0 0 0-.23-.848 1.25 1.25 0 0 0-.57-.45 4.4 4.4 0 0 0-.846-.234h-.129a5 5 0 0 1-.551-.135.67.67 0 0 1-.322-.19.5.5 0 0 1-.138-.36.46.46 0 0 1 .258-.414 1.43 1.43 0 0 1 .717-.153c.222 0 .443.04.652.117q.342.124.643.324l.433-.838a3.4 3.4 0 0 0-1.14-.486" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/typescriptdef.svg b/icons/typescriptdef.svg
new file mode 100644
index 00000000..de69032a
--- /dev/null
+++ b/icons/typescriptdef.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#0E8ADC" fill-rule="evenodd" d="M3 4h10v8H3zM2 4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm2.302 2.252v.955h1.462v4.297h1.01V7.207h1.462v-.955zm6.857.009a2.7 2.7 0 0 0-.588-.063 2.7 2.7 0 0 0-1.067.171c-.276.111-.51.303-.67.55-.17.27-.252.583-.24.9-.022.32.065.637.249.901.154.2.365.35.606.432q.448.154.92.208h.073l.496.108c.122.03.233.092.322.18a.44.44 0 0 1 .12.333.51.51 0 0 1-.276.469 1.47 1.47 0 0 1-.763.162c-.285 0-.567-.046-.837-.135a2.2 2.2 0 0 1-.707-.388l-.469.82q.263.21.57.351.332.148.69.226.373.07.753.071c.377.01.752-.054 1.103-.189.284-.104.528-.293.698-.54a1.47 1.47 0 0 0 .24-.9 1.38 1.38 0 0 0-.23-.848 1.25 1.25 0 0 0-.57-.45 4.4 4.4 0 0 0-.846-.234h-.129a5 5 0 0 1-.551-.135.67.67 0 0 1-.322-.19.5.5 0 0 1-.138-.36.46.46 0 0 1 .258-.414 1.43 1.43 0 0 1 .717-.153c.222 0 .443.04.652.117q.342.124.643.324l.433-.838a3.4 3.4 0 0 0-1.14-.486" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/ui.svg b/icons/ui.svg
new file mode 100644
index 00000000..624dabe9
--- /dev/null
+++ b/icons/ui.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#C97EF8" d="M7.839 2.435a1 1 0 0 1 1.414 0l.455.455L7 6.5l3.554-2.764 1.44 1.44L11 6.5l1.304-1.014.989.99a1 1 0 0 1 0 1.413l-2.98 2.98-5.455-5.454zM4.292 5.928l5.526 5.526-.657.657a1 1 0 0 1-1.414 0l-1.666-1.667-1.632 2.565a1.418 1.418 0 1 1-1.958-1.958l2.565-1.632L3.636 8a1 1 0 0 1 0-1.414l.656-.657Z"/></svg> \ No newline at end of file
diff --git a/icons/unocss.svg b/icons/unocss.svg
new file mode 100644
index 00000000..e9322469
--- /dev/null
+++ b/icons/unocss.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><circle cx="10.5" cy="11.5" r="2.5" fill="#909090" fill-opacity=".75"/><path fill="#909090" fill-opacity=".9" d="M8 5.5a2.5 2.5 0 0 1 5 0V8H8z"/><path fill="#909090" fill-opacity=".5" d="M2 9h5v2.5a2.5 2.5 0 0 1-5 0z"/></svg> \ No newline at end of file
diff --git a/icons/user.svg b/icons/user.svg
new file mode 100644
index 00000000..973b4cc8
--- /dev/null
+++ b/icons/user.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#E85984" fill-rule="evenodd" d="M14 8a5.98 5.98 0 0 1-1.522 3.993A6 6 0 0 1 8 14a5.98 5.98 0 0 1-4.468-1.996A6 6 0 1 1 14 8m-1.937 2.915c-.223-.245-.558-.415-1.063-.415h-.503q-.057 0-.126.006c-.34.02-.838.052-.87-.908a3 3 0 1 0-3 .002l.005.09c.022.429.042.81-1.006.81h-.517.086H5c-.447 0-.794.16-1.042.444A5 5 0 0 0 8 13a5 5 0 0 0 4.063-2.085" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/v.svg b/icons/v.svg
new file mode 100644
index 00000000..4d1b4add
--- /dev/null
+++ b/icons/v.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#4494FF" d="m5.551 4.38-3.034-.325a.3.3 0 0 0-.306.42l3.578 8.05a.8.8 0 0 0 .73.475h3.167a.2.2 0 0 0 .181-.285L6.191 4.838a.8.8 0 0 0-.64-.458"/><path fill="#1E66C4" fill-rule="evenodd" d="M6.627 12.16c.031.191.118.37.247.512a1 1 0 0 1-.085-.147zm3.745-.507 3.397-7.165a.3.3 0 0 0-.306-.426l-2.765.317a.8.8 0 0 0-.625.438L8.581 7.816l1.79 3.837Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/vanillaextract.svg b/icons/vanillaextract.svg
new file mode 100644
index 00000000..f229d1d3
--- /dev/null
+++ b/icons/vanillaextract.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#D9D9D9" d="M4.064 5.964C2.64 6.075 2.809 7.217 3.4 7.57c.59.352 2.31 1.127 5.475.895 3.397-.249 3.99-1.28 4.16-1.994 0-.145 0-.623-.393-.623-1.363 1.45-4.142.982-5.011.806-1.169-.237-2.723-.756-3.567-.69"/><path fill="#F7639C" d="M4.064 5.964C2.64 6.075 2.809 7.217 3.4 7.57c.59.352 2.31 1.127 5.475.895 3.397-.249 3.99-1.28 4.16-1.994 0-.145 0-.623-.393-.623-1.363 1.45-4.142.982-5.011.806-1.169-.237-2.723-.756-3.567-.69"/><path fill="#FF87B6" d="M4.24 4.744c-.384.274-.38.797-.322.952.296-.429 1.589-.111 2.61.112 1.022.223 2.584.594 4.033.176 2.23-.643 1.69-3.001.44-3.001-.21 1.357-.895 1.654-1.451 1.761-.96.185-1.906.04-2.943-.104-1.036-.143-1.886-.238-2.367.104"/><path fill="#FF87B6" d="M6.846 2.686c-1.81 0-1.879.82-1.879 1.325.657-.481 2.425.378 3.689.294.299-.02 1.975-.076 1.56-1.973C9.901.892 8.016.88 8.036.96c.135.321.62 1.726-1.19 1.726"/><path fill="#F04987" d="M3.198 8.537c-.338.042-.147.425.16.615 2.583 1.925 6.537 1.875 8.063 1.122s1.742-2.128 1.361-2.625c-.68 1.283-3.706 1.552-5.459 1.503-2.46-.068-3.786-.657-4.125-.615"/><path fill="#11BEE2" d="M4.563 10.759c.18 0 .327.13.35.296a.42.42 0 0 1 .278-.105c.227 0 .411.175.412.39l-.002.014a.42.42 0 0 1 .34-.171.4.4 0 0 1 .407.367.41.41 0 0 1 .362-.21c.155 0 .289.084.358.205a.42.42 0 0 1 .634.107.41.41 0 0 1 .36-.208c.167 0 .31.096.375.233a.416.416 0 0 1 .682-.098.41.41 0 0 1 .378-.238c.126 0 .237.055.313.14a.41.41 0 0 1 .398-.298c.12 0 .227.051.302.13a.4.4 0 0 1 .408-.363q.107.001.195.048a.35.35 0 0 1 .33-.222c.207 0 .34.12.333.366l.002-.001c0 1.986-1.69 3.596-3.777 3.596-2.086 0-3.778-1.61-3.778-3.596.012-.159.14-.382.34-.382"/><path fill="#006AA4" d="M8.078 12.015c.1.006.199.05.265.133q.075.094.078.23l-.006.091c-.03.199-.136.8-.21 1.273l-.061.41c-.008.06-.064.105-.13.106a.14.14 0 0 1-.117-.062l-.016-.042a34 34 0 0 1-.182-1.483l-.022-.29c0-.239.202-.378.401-.366m-.16 1.411.094.711-.125-.974zm-1.286-1.509a.27.27 0 0 1 .248.084q.089.094.136.265l.044.174c.042.186.081.405.129.62.064.293.145.59.27.836a.115.115 0 0 1-.049.152.14.14 0 0 1-.172-.023c-.344-.367-.784-.887-.852-1.608l-.009-.146v-.007l.006-.059q.015-.086.06-.155a.3.3 0 0 1 .189-.133m2.833 0a.3.3 0 0 1 .19.133q.044.07.06.155l.006.059v.007l-.01.146c-.068.721-.508 1.24-.852 1.608a.14.14 0 0 1-.171.023.115.115 0 0 1-.05-.152c.125-.246.207-.542.271-.836.048-.215.087-.434.13-.62l.042-.174A.6.6 0 0 1 9.218 12a.27.27 0 0 1 .247-.084m-2.127 2.03v-.003q-.069-.072-.139-.15zm-2.03-2.324c.164.036.287.196.35.417l.05.17c.06.183.148.407.262.634.153.304.352.604.596.817l.029.037a.11.11 0 0 1-.02.127.14.14 0 0 1-.18.021 4.6 4.6 0 0 1-.871-.775c-.272-.315-.51-.697-.547-1.086l-.004-.077V11.9l.008-.062a.3.3 0 0 1 .085-.154.27.27 0 0 1 .242-.062m5.328 0a.27.27 0 0 1 .328.216l.008.062v.007l-.005.077c-.036.389-.275.77-.547 1.086a4.6 4.6 0 0 1-.872.775.14.14 0 0 1-.18-.02.11.11 0 0 1-.018-.128l.028-.037c.243-.213.443-.513.596-.817.114-.227.201-.451.261-.635l.052-.169c.062-.22.185-.381.349-.417M6.326 13.6q.069.076.143.143l.005.004a2 2 0 0 1-.149-.147m.468-.356c.079.139.17.265.264.382l-.137-.182a2.5 2.5 0 0 1-.238-.416zm.177-.586c.03.152.064.32.102.489-.055-.244-.097-.482-.142-.68l-.042-.17zm2.196-.192.042-.17zm-3.514-.022.027.066-.036-.093zm2.239-.251a.2.2 0 0 0 .04-.027zm2.522-.123-.042.14za1 1 0 0 1 .051-.137zm-1.006-.037q-.062.004-.122.085l.03-.036a.15.15 0 0 1 .092-.049"/></svg> \ No newline at end of file
diff --git a/icons/vb.svg b/icons/vb.svg
new file mode 100644
index 00000000..24d31341
--- /dev/null
+++ b/icons/vb.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="url(#paint0_linear_1788_84)" fill-rule="evenodd" d="m5.774 8.02-.07.106c-.143.21-.26.36-.388.478C5.111 8.795 4.785 9 4 9c-.406 0-.62-.16-.763-.35A1.23 1.23 0 0 1 3 8c0-.351.09-.596.206-.735C3.295 7.158 3.49 7 4 7c.482 0 1.074.174 1.774 1.02m1.2-1.654C6.07 5.43 5.078 5 4 5c-.99 0-1.795.342-2.33.985C1.16 6.595 1 7.35 1 8c0 .534.186 1.248.638 1.85C2.12 10.494 2.906 11 4 11c1.215 0 2.053-.348 2.68-.933a4 4 0 0 0 .303-.318c.365.503.731.946 1.14 1.293.792.673 1.69.958 2.877.958.963 0 1.959-.32 2.727-1.003C14.513 10.298 15 9.271 15 8c0-1.154-.29-2.203-1.043-2.957C13.203 4.289 12.154 4 11 4c-1.37 0-2.439.723-3.19 1.443a10 10 0 0 0-.836.923m1.248 1.66c.497.733.837 1.187 1.196 1.492.36.307.769.482 1.582.482.537 0 1.041-.18 1.398-.497C12.737 9.202 13 8.729 13 8c0-.846-.21-1.297-.457-1.543C12.297 6.211 11.846 6 11 6c-.63 0-1.226.33-1.807.887a9 9 0 0 0-.971 1.139" clip-rule="evenodd"/><defs><linearGradient id="paint0_linear_1788_84" x1="1" x2="15" y1="8" y2="8" gradientUnits="userSpaceOnUse"><stop stop-color="#1E93FF"/><stop offset="1" stop-color="#B56AFF"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/icons/vercel.svg b/icons/vercel.svg
new file mode 100644
index 00000000..baa5a0af
--- /dev/null
+++ b/icons/vercel.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M7.143 4.43a1 1 0 0 1 1.714 0l4.234 7.056A1 1 0 0 1 12.234 13H3.766a1 1 0 0 1-.857-1.514z"/></svg> \ No newline at end of file
diff --git a/icons/version.svg b/icons/version.svg
new file mode 100644
index 00000000..57007e81
--- /dev/null
+++ b/icons/version.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M4 5H3a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h1V9.5h-.5v-3H4zm3-1H6a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h1v-1.5h-.5v-5H7zm2.5.5v7h3v-7zM9 3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/vhd.svg b/icons/vhd.svg
new file mode 100644
index 00000000..bf64712f
--- /dev/null
+++ b/icons/vhd.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#3AC59B" fill-rule="evenodd" d="M5 2.5a.5.5 0 0 1 1 0V4h1.5V2.5a.5.5 0 0 1 1 0V4H10V2.5a.5.5 0 0 1 1 0V4a1 1 0 0 1 1 1h1.5a.5.5 0 0 1 0 1H12v1.5h1.5a.5.5 0 0 1 0 1H12V10h1.5a.5.5 0 0 1 0 1H12a1 1 0 0 1-1 1v1.5a.5.5 0 0 1-1 0V12H8.5v1.5a.5.5 0 0 1-1 0V12H6v1.5a.5.5 0 0 1-1 0V12a1 1 0 0 1-1-1H2.5a.5.5 0 0 1 0-1H4V8.5H2.5a.5.5 0 0 1 0-1H4V6H2.5a.5.5 0 0 1 0-1H4a1 1 0 0 1 1-1zm0 8a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5zm5-.5V6H6v4z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/vhdl.svg b/icons/vhdl.svg
new file mode 100644
index 00000000..4ea9c2df
--- /dev/null
+++ b/icons/vhdl.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#A1C16C" fill-rule="evenodd" d="M5 2.5a.5.5 0 0 1 1 0V4h1.5V2.5a.5.5 0 0 1 1 0V4H10V2.5a.5.5 0 0 1 1 0V4a1 1 0 0 1 1 1h1.5a.5.5 0 0 1 0 1H12v1.5h1.5a.5.5 0 0 1 0 1H12V10h1.5a.5.5 0 0 1 0 1H12a1 1 0 0 1-1 1v1.5a.5.5 0 0 1-1 0V12H8.5v1.5a.5.5 0 0 1-1 0V12H6v1.5a.5.5 0 0 1-1 0V12a1 1 0 0 1-1-1H2.5a.5.5 0 0 1 0-1H4V8.5H2.5a.5.5 0 0 1 0-1H4V6H2.5a.5.5 0 0 1 0-1H4a1 1 0 0 1 1-1zm0 8a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0-.5.5zm5-.5V6H6v4z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/video.svg b/icons/video.svg
new file mode 100644
index 00000000..c0b89cda
--- /dev/null
+++ b/icons/video.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#CE84DA" fill-rule="evenodd" d="M12.608 4.157A6 6 0 0 0 9.538 2.2l.243 4.988 2.827-3.03Zm-7.526-1.4a5.97 5.97 0 0 1 3.473-.732l.18 4.04zM2.258 6.254A6 6 0 0 1 4.22 3.339l2.966 2.648-4.93.268Zm.414 4.507a5.97 5.97 0 0 1-.626-3.51l3.902-.181zm3.498 2.954a6 6 0 0 1-2.98-2.129l2.72-2.929zm4.697-.444a5.97 5.97 0 0 1-3.674.674l-.2-4.088zm2.927-3.707a6 6 0 0 1-2.076 3.145L8.542 9.897zm-.637-4.633a5.97 5.97 0 0 1 .811 3.688l-4.303.193z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/vite.svg b/icons/vite.svg
new file mode 100644
index 00000000..b0479b9c
--- /dev/null
+++ b/icons/vite.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#A074FF" d="m13.426 4.17-5.385 9.772a.29.29 0 0 1-.51.002L2.04 4.17c-.123-.219.062-.484.306-.44l5.391.979q.052.009.104 0l5.278-.977c.244-.045.429.218.308.437Z"/><path fill="#FFCC17" d="m10.136 2.003-3.79.733a.14.14 0 0 0-.113.127L6 6.75a.14.14 0 0 0 .17.142l1.056-.24a.138.138 0 0 1 .168.161L7.08 8.33a.138.138 0 0 0 .177.16l.652-.196a.138.138 0 0 1 .176.159l-.498 2.381c-.031.15.17.23.253.103l.056-.086 3.089-6.086a.138.138 0 0 0-.15-.197l-1.087.208a.138.138 0 0 1-.16-.174l.709-2.426a.138.138 0 0 0-.16-.173Z"/></svg> \ No newline at end of file
diff --git a/icons/viteenv.svg b/icons/viteenv.svg
new file mode 100644
index 00000000..fc23bd70
--- /dev/null
+++ b/icons/viteenv.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#A074FF" d="m10.136 2.003-3.79.733a.14.14 0 0 0-.113.127L6 6.75a.14.14 0 0 0 .17.142l1.056-.24a.138.138 0 0 1 .168.161L7.08 8.33a.138.138 0 0 0 .177.16l.652-.196a.138.138 0 0 1 .176.159l-.498 2.381c-.031.15.17.23.253.103l.056-.086 3.089-6.086a.138.138 0 0 0-.15-.197l-1.087.208a.138.138 0 0 1-.16-.174l.709-2.426a.138.138 0 0 0-.16-.173Z"/><path fill="#A074FF" d="m5 4.212-2.655-.481c-.244-.045-.429.22-.306.44l5.492 9.773a.29.29 0 0 0 .51-.002l5.385-9.773c.121-.22-.064-.482-.308-.437l-.647.12-1.463 2.633-3.229 5.86-4.136-7.363L5 5.23z"/></svg> \ No newline at end of file
diff --git a/icons/vitest.svg b/icons/vitest.svg
new file mode 100644
index 00000000..b5bfd982
--- /dev/null
+++ b/icons/vitest.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#91C620" fill-opacity=".5" d="M8.003 14a.57.57 0 0 0 .41-.186l2.708-2.972a.66.66 0 0 0 .158-.326.7.7 0 0 0-.034-.367.63.63 0 0 0-.214-.285.544.544 0 0 0-.732.078l-2.296 2.521L2.988 6.97a.57.57 0 0 0-.298-.17.53.53 0 0 0-.334.038.6.6 0 0 0-.26.235.7.7 0 0 0-.096.353q0 .126.042.243a.6.6 0 0 0 .124.206l5.422 5.944a.56.56 0 0 0 .41.186z"/><path stroke="#84B817" stroke-opacity=".5" stroke-width=".3" d="M1.85 7.426a.8.8 0 0 1 .119-.43.75.75 0 0 1 .324-.294.7.7 0 0 1 .428-.05.72.72 0 0 1 .377.216v.001l4.905 5.372 2.185-2.4a.7.7 0 0 1 .237-.173.7.7 0 0 1 .284-.06M1.85 7.425H2zm0 0q0 .151.052.295a.8.8 0 0 0 .153.255l5.422 5.944a.7.7 0 0 0 .522.235h.066l.008-.008a.7.7 0 0 0 .214-.059m0 0-.062-.136zm0 0q.136-.062.238-.173l2.707-2.972a.8.8 0 0 0 .195-.4.84.84 0 0 0-.041-.447.8.8 0 0 0-.266-.353.7.7 0 0 0-.41-.136m0 0-.001.15v-.15ZM2.165 7.875Z"/><path fill="#84B817" stroke="#84B817" stroke-width=".3" d="M8.003 14.15Zm0 0a.7.7 0 0 0 .52-.234l5.424-5.944.004-.005a.82.82 0 0 0 .188-.544.82.82 0 0 0-.209-.536.7.7 0 0 0-.507-.235.7.7 0 0 0-.515.213l-.005.004-4.9 5.372m0 1.909v-1.91m0 0-2.191-2.4a.7.7 0 0 0-.237-.172.7.7 0 0 0-.285-.06l.001.15m2.712 2.483L4.88 10.842a.66.66 0 0 1-.158-.325.7.7 0 0 1 .034-.368.63.63 0 0 1 .214-.285.55.55 0 0 1 .322-.107m0 0v-.15a.7.7 0 0 0-.41.136.8.8 0 0 0-.267.353.84.84 0 0 0-.04.447.8.8 0 0 0 .194.4l2.713 2.972m-2.19-4.158a.5.5 0 0 1 .222.047q.106.049.188.138l1.78 3.973m0 0 .111-.1zm.238.173q.136.061.282.062z"/><path fill="#F3AF00" d="M10.96 4.945 8.25 9.874a.25.25 0 0 1-.119.111.2.2 0 0 1-.148 0 .24.24 0 0 1-.118-.113.35.35 0 0 1-.04-.177l.108-2.722-1.752-.466a.2.2 0 0 1-.099-.063.3.3 0 0 1-.066-.113.37.37 0 0 1 .025-.275l2.71-4.93a.24.24 0 0 1 .118-.11.2.2 0 0 1 .15 0c.048.02.09.06.117.112a.34.34 0 0 1 .04.178l-.11 2.722 1.752.467q.055.015.099.062.045.046.066.114a.35.35 0 0 1-.024.274h.002Z"/></svg> \ No newline at end of file
diff --git a/icons/vmod.svg b/icons/vmod.svg
new file mode 100644
index 00000000..119b0926
--- /dev/null
+++ b/icons/vmod.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#4494FF" fill-rule="evenodd" d="M2 8c0 4.84 1.16 6 6 6s6-1.16 6-6-1.16-6-6-6-6 1.16-6 6m3.766-2.777L4.084 5.01a.3.3 0 0 0-.318.403L6.04 11.48a.8.8 0 0 0 .75.519h2.66a.2.2 0 0 0 .185-.126l2.58-6.449a.3.3 0 0 0-.319-.409l-1.505.205a.8.8 0 0 0-.63.483l-1.734 4.13-1.619-4.11a.8.8 0 0 0-.643-.5Z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/vscode.svg b/icons/vscode.svg
new file mode 100644
index 00000000..1117d33e
--- /dev/null
+++ b/icons/vscode.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M13.5 3v10.5l-2.5 1-9-9 1-1 8 7v-6L3 12l-1-1 9-9z" style="fill:#3eaaf3"/></svg> \ No newline at end of file
diff --git a/icons/vue.svg b/icons/vue.svg
new file mode 100644
index 00000000..0d020002
--- /dev/null
+++ b/icons/vue.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M1.5 3.5 8 13l6.5-9.5H11L8 8 5 3.5z" style="fill:#3fb37f"/><path d="M5 3.5h6L8 8z" style="fill:#34475b"/></svg> \ No newline at end of file
diff --git a/icons/vueconfig.svg b/icons/vueconfig.svg
new file mode 100644
index 00000000..4dbbd04e
--- /dev/null
+++ b/icons/vueconfig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path stroke="#3FB37F" d="M13.552 4 8 12.115 2.448 4h2.284l2.852 4.277.416.624.416-.624L11.268 4z"/><path stroke="#34475B" d="M8 7.099 5.934 4h4.132z"/></svg> \ No newline at end of file
diff --git a/icons/wasm.svg b/icons/wasm.svg
new file mode 100644
index 00000000..7dcc2a3f
--- /dev/null
+++ b/icons/wasm.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#7764FC" fill-rule="evenodd" d="M2 2h4a2 2 0 1 0 4 0h4v12H2zm6.141 10 .7-4.851H7.798l-.476 4.004-.532-4.004H5.628l-.567 4.004-.413-4.004H3.563L4.242 12h1.421l.532-3.738.49 3.738zm3.272-1.057L11.63 12h1.155l-1.302-4.851H10.14L8.83 12h1.134l.217-1.057zm-.616-2.975.448 2.17h-.896z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/webpack.svg b/icons/webpack.svg
new file mode 100644
index 00000000..d227cf2c
--- /dev/null
+++ b/icons/webpack.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M5.89 6.81v2.38l2.06 1.18L10 9.19V6.81L7.95 5.63z" style="fill:#1c78c0"/><path d="m8 4 3.46 2v4L8 12l-3.52-2V6zm0-2L2.75 5v6L8 14l5.19-3V5z" style="fill:#8ed5fa"/></svg> \ No newline at end of file
diff --git a/icons/wgsl.svg b/icons/wgsl.svg
new file mode 100644
index 00000000..de5e71d5
--- /dev/null
+++ b/icons/wgsl.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#0076CC" d="M11 4H1l5 8z"/><path fill="#009EF0" d="m9.5 8 2.503-4L14.5 7.995z"/><path fill="#31B4F6" d="M12 12 9.5 8h5z"/></svg> \ No newline at end of file
diff --git a/icons/windi.svg b/icons/windi.svg
new file mode 100644
index 00000000..b9f0a6fd
--- /dev/null
+++ b/icons/windi.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#4CB7F0" fill-rule="evenodd" d="M6.66 2c1.163 0 2.11.946 2.11 2.11s-.939 2.11-2.488 2.11H3V5.014h3.282c.918 0 1.282-.406 1.282-.904a.905.905 0 0 0-.904-.904c-.52 0-.754.352-.754.602H4.701C4.7 2.92 5.434 2 6.66 2m2.674 12c1.164 0 2.11-.946 2.11-2.11s-.938-2.11-2.487-2.11H5.315v1.206h3.642c.823 0 1.281.406 1.281.904a.905.905 0 0 1-.904.904c-.52 0-.753-.352-.753-.602H7.375c0 .889.733 1.808 1.96 1.808ZM11.76 3.86c-1.33 0-2.268 1.011-2.268 2.341h1.068c0-.661.48-1.141 1.2-1.141s1.08.48 1.08 1.141c0 .66-.468 1.206-1.74 1.206H3v1.205h8.28c1.884 0 2.76-1.211 2.76-2.411 0-1.33-.9-2.341-2.28-2.341M3 9.78h1.58v1.216H3z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/wren.svg b/icons/wren.svg
new file mode 100644
index 00000000..08a44bbe
--- /dev/null
+++ b/icons/wren.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" fill-rule="evenodd" d="M2.695 4.605A2.43 2.43 0 0 1 4.711 3.5c1.157 0 1.557.421 2.008.896q.097.104.202.21c.553.552 1.658 1.657 3.869 1.657 2.278 0 3.868-1.105 3.868-1.105-.431 1.293-1.198 2.25-2.04 2.87.26.065.569.202.935.446-.731 0-1.11.16-1.357.482.146.245.251.616.251 1.176-.51-.255-.94-.314-1.293-.286-.387.475-.88.847-1.47 1.086v1.963l.553.552V14c-.72-.368-1.206-.361-2.21 0v-.553l1.105-.552V11.11a4.7 4.7 0 0 1-1.106.127 5 5 0 0 1-1.207-.143l-.45 1.8 1.105.553V14c-1.06-.53-1.665-.543-2.763 0v-.553l1.105-.552.492-1.968c-1.808-.731-2.48-2.616-3-4.076q-.127-.358-.247-.673c-.455-.545-1.073-1.19-2.219-1.573z" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/xmake.svg b/icons/xmake.svg
new file mode 100644
index 00000000..d8e8f6ff
--- /dev/null
+++ b/icons/xmake.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#3DAFA4" fill-rule="evenodd" d="M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12m0-1A5 5 0 1 0 8 3a5 5 0 0 0 0 10" clip-rule="evenodd"/><path fill="#8DD638" d="M11.178 10.43a4 4 0 0 1-6.95-3.764z"/><path fill="#109168" d="M4.282 9.479a4.001 4.001 0 1 0 6.512-4.342L4.282 9.48Z"/><path fill="#4ABFAA" d="M11.178 10.43A3.98 3.98 0 0 0 12 8a4 4 0 0 0-1.206-2.863L6.586 7.943z"/></svg> \ No newline at end of file
diff --git a/icons/xml.svg b/icons/xml.svg
new file mode 100644
index 00000000..0168f565
--- /dev/null
+++ b/icons/xml.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M7.2 4.4V6L4.8 8l2.4 2v1.6L4 8.8V7.2zm1.6 0L12 7.2v1.6l-3.2 2.8V10l2.4-2-2.4-2zm3.7-1.95h-9a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1.05h9a1 1 0 0 0 1-1.05v-9a1 1 0 0 0-1-1" style="fill:#29abe2"/></svg> \ No newline at end of file
diff --git a/icons/yaml.svg b/icons/yaml.svg
new file mode 100644
index 00000000..44ab3e22
--- /dev/null
+++ b/icons/yaml.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M11 4.5 8.75 6.75 6.5 4.5H3l4 4-4 4h3.5l4-4 4-4z" style="fill:#cc7f00"/></svg> \ No newline at end of file
diff --git a/icons/yang.svg b/icons/yang.svg
new file mode 100644
index 00000000..ec3a094e
--- /dev/null
+++ b/icons/yang.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="m7.813 14.481-.044-.002A6.483 6.483 0 0 1 1.514 8 6.486 6.486 0 0 1 8 1.514l.187.005.045.003A6.48 6.48 0 0 1 14.486 8 6.486 6.486 0 0 1 8 14.486zM8 6.088a.956.956 0 1 0 0-1.912.956.956 0 0 0 0 1.912m0 6.898a4.986 4.986 0 0 0 3.565-8.47l.002.015q.024.14.037.28 0 .014.002.027.011.146.012.294A3.62 3.62 0 0 1 8 8.75a2.118 2.118 0 0 0 0 4.236m0-1.162a.956.956 0 1 1 0-1.912.956.956 0 0 1 0 1.912"/></svg> \ No newline at end of file
diff --git a/icons/yarn.svg b/icons/yarn.svg
new file mode 100644
index 00000000..130210e9
--- /dev/null
+++ b/icons/yarn.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#5ABBE4" d="M7.67 3.15A4 4 0 0 1 8.5 2c.196.353.309.747.33 1.15L9.5 3s1 2-.67 4.75A3.21 3.21 0 0 1 10 11.2c1.72-.58 2.3-1.15 2.87-1.15a.56.56 0 0 1 .57.57s.08.38-.92.88l-2 1a6.25 6.25 0 0 1-3 1c-1.17 0-2 .08-2-.5A1.5 1.5 0 0 1 6 12h-.5s-.85 1.5-2 1.5 0-1 0-1c-1 0-.65-1.93.5-2.5a2.32 2.32 0 0 1 1.5-3.5c-.58-.58-1-1.81-.5-2 .45-.19.81-.55 1-1a2.07 2.07 0 0 1 1.67-.35"/></svg> \ No newline at end of file
diff --git a/icons/yarnerror.svg b/icons/yarnerror.svg
new file mode 100644
index 00000000..5a8bf204
--- /dev/null
+++ b/icons/yarnerror.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#DA745E" d="M7.67 3.15A4 4 0 0 1 8.5 2c.196.353.309.747.33 1.15L9.5 3s1 2-.67 4.75A3.21 3.21 0 0 1 10 11.2c1.72-.58 2.3-1.15 2.87-1.15a.56.56 0 0 1 .57.57s.08.38-.92.88l-2 1a6.25 6.25 0 0 1-3 1c-1.17 0-2 .08-2-.5A1.5 1.5 0 0 1 6 12h-.5s-.85 1.5-2 1.5 0-1 0-1c-1 0-.65-1.93.5-2.5a2.32 2.32 0 0 1 1.5-3.5c-.58-.58-1-1.81-.5-2 .45-.19.81-.55 1-1a2.07 2.07 0 0 1 1.67-.35"/></svg> \ No newline at end of file
diff --git a/icons/yarnignore.svg b/icons/yarnignore.svg
new file mode 100644
index 00000000..63557240
--- /dev/null
+++ b/icons/yarnignore.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="M7.67 3.15A4 4 0 0 1 8.5 2c.196.353.309.747.33 1.15L9.5 3s1 2-.67 4.75A3.21 3.21 0 0 1 10 11.2c1.72-.58 2.3-1.15 2.87-1.15a.56.56 0 0 1 .57.57s.08.38-.92.88l-2 1a6.25 6.25 0 0 1-3 1c-1.17 0-2 .08-2-.5A1.5 1.5 0 0 1 6 12h-.5s-.85 1.5-2 1.5 0-1 0-1c-1 0-.65-1.93.5-2.5a2.32 2.32 0 0 1 1.5-3.5c-.58-.58-1-1.81-.5-2 .45-.19.81-.55 1-1a2.07 2.07 0 0 1 1.67-.35"/></svg> \ No newline at end of file
diff --git a/icons/yarnlock.svg b/icons/yarnlock.svg
new file mode 100644
index 00000000..306dd1f2
--- /dev/null
+++ b/icons/yarnlock.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#5ABBE4" fill-rule="evenodd" d="M11.111 7.5H9.778a.5.5 0 0 0-.5.5v.667h2.333V8a.5.5 0 0 0-.5-.5M7.778 8v1.003c-.536.36-.89.97-.89 1.664V12a2 2 0 0 0 2 2H12a2 2 0 0 0 2-2v-1.333a2 2 0 0 0-.889-1.664V8a2 2 0 0 0-2-2H9.778a2 2 0 0 0-2 2m3.555 2.444c0 .33-.178.617-.444.77v1.008a.444.444 0 1 1-.889 0v-1.008a.888.888 0 1 1 1.333-.77" clip-rule="evenodd"/><path fill="#5ABBE4" fill-opacity=".7" fill-rule="evenodd" d="M7.945 1a4.6 4.6 0 0 0-.938 1.3 2.34 2.34 0 0 0-1.888.395c-.215.51-.62.915-1.13 1.13-.565.215-.09 1.605.565 2.26a2.622 2.622 0 0 0-1.695 3.956c-1.3.644-1.695 2.825-.565 2.825 0 0-1.3 1.13 0 1.13s2.26-1.695 2.26-1.695h.565a1.7 1.7 0 0 0-.542 1.13c0 .488.52.562 1.332.569-.316-.5-.5-1.092-.5-1.727v-1.819c0-.873.348-1.665.91-2.245v-.482a3.227 3.227 0 0 1 3.06-3.223c.152-1.462-.304-2.374-.304-2.374l-.758.17A3 3 0 0 0 7.945 1" clip-rule="evenodd"/></svg> \ No newline at end of file
diff --git a/icons/yin.svg b/icons/yin.svg
new file mode 100644
index 00000000..41ad1ec9
--- /dev/null
+++ b/icons/yin.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#909090" fill-opacity=".9" d="m8.187 1.519.044.002A6.483 6.483 0 0 1 14.486 8 6.486 6.486 0 0 1 8 14.486l-.187-.005q-.023 0-.045-.004A6.48 6.48 0 0 1 1.514 8 6.486 6.486 0 0 1 8 1.514zM8 9.912a.956.956 0 1 0 0 1.912.956.956 0 0 0 0-1.912m0-6.898a4.986 4.986 0 0 0-3.565 8.47l-.002-.015a4 4 0 0 1-.037-.28l-.001-.027A3.62 3.62 0 0 1 8 7.25a2.118 2.118 0 0 0 0-4.236m0 1.162a.956.956 0 1 1 0 1.912.956.956 0 0 1 0-1.912"/></svg> \ No newline at end of file
diff --git a/icons/zig.svg b/icons/zig.svg
new file mode 100644
index 00000000..fea4af4c
--- /dev/null
+++ b/icons/zig.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="#EA9921" d="M7.524 10.451 13.764 3 9.923 4.725h-3.53l-1.49 1.726H8.49l-6.254 7.53 3.843-1.804h3.53l1.49-1.726z"/><path fill="#EA9921" d="m5.225 4.725-1.5 1.726v4.23l-1.31 1.496H2V4.725zM14 12.177V4.725h-.226l-1.5 1.804v3.922l-1.449 1.726z"/></svg> \ No newline at end of file
diff --git a/icons/zip.svg b/icons/zip.svg
new file mode 100644
index 00000000..4c58891e
--- /dev/null
+++ b/icons/zip.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" data-name="Calque 1" viewBox="0 0 16 16"><path d="M5 10.1V8.7h2v1.4zv1.4H3v-1.4zm0-2.8V5.9h2v1.4zv1.4H3V7.3zM3 4.5h2v1.4H3zM6.85 3H2.54a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1.05h11a1 1 0 0 0 1-1.05V6.05a1 1 0 0 0-1-1H9.15a1 1 0 0 1-.94-.58l-.42-.84A1 1 0 0 0 6.85 3" style="fill:#78bc37"/></svg> \ No newline at end of file
diff --git a/themed/tree_common.html b/themed/tree_common.html
index f04659e1..71f49ca3 100644
--- a/themed/tree_common.html
+++ b/themed/tree_common.html
@@ -10,20 +10,7 @@
strbuf_addf(&fullpath, "%s%s", base->buf, pathname);
!}
<div class="pl-3 pr-1 py-2{% if border_above %} border-t border-[#333A45]{% endif %}">
- {# File icon #}
- {% if S_ISGITLINK(mode) %}
- {# Heroicons solid folder #}
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-5 text-[#a3a29c] mt-[0.1rem]"><path d="M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z" /></svg>
- {% elif S_ISDIR(mode) %}
- {# Heroicons solid folder #}
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-5 text-[#73D0FF] mt-[0.1rem]"><path d="M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z" /></svg>
- {% elif S_ISLNK(mode) %}
- {# Heroicons outline link #}
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5 text-[#a3a29c] mt-[0.1rem]"><path stroke-linecap="round" stroke-linejoin="round" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244" /></svg>
- {% else %}
- {# Heroicons outline document #}
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5 text-[#a3a29c] mt-[0.1rem]"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z" /></svg>
- {% endif %}
+ <img src="/icons/{{ cgit_get_file_icon(pathname, mode) }}.svg" width="30" height="30" />
</div>
<div class="font-mono pr-3 py-2{% if border_above %} border-t border-[#333A45]{% endif %}">
{# File name and link #}
diff --git a/ui-shared.c b/ui-shared.c
index d28d9037..c6539ca0 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -7,7 +7,7 @@
*/
#define USE_THE_REPOSITORY_VARIABLE
-
+#include "waow.h"
#include "cgit.h"
#include "ui-shared.h"
#include "cmd.h"
@@ -1368,3 +1368,17 @@ void cgit_set_title_from_path(const char *path)
strbuf_addf(&sb, " - %s", ctx.page.title);
ctx.page.title = strbuf_detach(&sb, NULL);
}
+
+
+const char *cgit_get_file_icon(const char *pathname, unsigned mode) {
+ if S_ISDIR (mode) return "folder";
+ int n = strlen(pathname);
+ const struct out *res = fname(pathname,n);
+ if (res) return res->value;
+ const char *ext = memchr(pathname, '.', n);
+ if (ext++) {
+ res = fext(ext, strlen(ext));
+ if (res) return res->value;
+ }
+ return "file";
+} \ No newline at end of file
diff --git a/ui-shared.h b/ui-shared.h
index 8e3833e2..9198134c 100644
--- a/ui-shared.h
+++ b/ui-shared.h
@@ -2,10 +2,15 @@
#define UI_SHARED_H
extern int cgit_shared_emit_css_link(struct string_list_item *s, void *arg);
-extern const char *cgit_shared_repolink_url(const char *page, const char *head, const char *path);
-extern void cgit_shared_repolink_url_with_delimiter(const char *page, const char *head, const char *path);
-extern void cgit_shared_reporevlink_url(const char *page, const char *head, const char *rev, const char *path);
-extern void cgit_shared_site_url(const char *page, const char *search, const char *sort, int ofs, int always_root);
+extern const char *cgit_shared_repolink_url(const char *page, const char *head,
+ const char *path);
+extern void cgit_shared_repolink_url_with_delimiter(const char *page,
+ const char *head,
+ const char *path);
+extern void cgit_shared_reporevlink_url(const char *page, const char *head,
+ const char *rev, const char *path);
+extern void cgit_shared_site_url(const char *page, const char *search,
+ const char *sort, int ofs, int always_root);
extern const char *cgit_httpscheme(void);
extern char *cgit_hosturl(void);
@@ -15,62 +20,63 @@ extern char *cgit_currentfullurl(void);
extern const char *cgit_loginurl(void);
extern char *cgit_repourl(const char *reponame);
extern char *cgit_fileurl(const char *reponame, const char *pagename,
- const char *filename, const char *query);
+ const char *filename, const char *query);
extern char *cgit_pageurl(const char *reponame, const char *pagename,
- const char *query);
+ const char *query);
extern void cgit_add_clone_urls(void (*fn)(const char *));
extern void cgit_index_link(const char *name, const char *title,
- const char *class, const char *pattern, const char *sort, int ofs, int always_root);
+ const char *class, const char *pattern,
+ const char *sort, int ofs, int always_root);
extern void cgit_summary_link(const char *name, const char *title,
- const char *class, const char *head);
+ const char *class, const char *head);
extern void cgit_tag_link(const char *name, const char *title,
- const char *class, const char *tag);
+ const char *class, const char *tag);
extern void cgit_tree_link(const char *name, const char *title,
- const char *class, const char *head,
- const char *rev, const char *path);
+ const char *class, const char *head, const char *rev,
+ const char *path);
extern void cgit_plain_link(const char *name, const char *title,
- const char *class, const char *head,
- const char *rev, const char *path);
+ const char *class, const char *head,
+ const char *rev, const char *path);
extern void cgit_blame_link(const char *name, const char *title,
- const char *class, const char *head,
- const char *rev, const char *path);
+ const char *class, const char *head,
+ const char *rev, const char *path);
extern void cgit_log_link(const char *name, const char *title,
- const char *class, const char *head, const char *rev,
- const char *path, int ofs, const char *grep,
- const char *pattern, int showmsg, int follow);
+ const char *class, const char *head, const char *rev,
+ const char *path, int ofs, const char *grep,
+ const char *pattern, int showmsg, int follow);
extern void cgit_commit_link(const char *name, const char *title,
- const char *class, const char *head,
- const char *rev, const char *path);
+ const char *class, const char *head,
+ const char *rev, const char *path);
extern void cgit_patch_link(const char *name, const char *title,
- const char *class, const char *head,
- const char *rev, const char *path);
+ const char *class, const char *head,
+ const char *rev, const char *path);
extern void cgit_refs_link(const char *name, const char *title,
- const char *class, const char *head,
- const char *rev, const char *path);
+ const char *class, const char *head, const char *rev,
+ const char *path);
extern void cgit_snapshot_link(const char *name, const char *title,
- const char *class, const char *head,
- const char *rev, const char *archivename);
+ const char *class, const char *head,
+ const char *rev, const char *archivename);
extern void cgit_diff_link(const char *name, const char *title,
- const char *class, const char *head,
- const char *new_rev, const char *old_rev,
- const char *path);
+ const char *class, const char *head,
+ const char *new_rev, const char *old_rev,
+ const char *path);
extern void cgit_stats_link(const char *name, const char *title,
- const char *class, const char *head,
- const char *path);
+ const char *class, const char *head,
+ const char *path);
extern void cgit_object_link(struct object *obj);
extern void cgit_submodule_link(const char *class, char *path,
- const char *display_name, const char *rev);
+ const char *display_name, const char *rev);
extern void cgit_print_layout_start(void);
extern void cgit_print_layout_end(void);
-__attribute__((format (printf,1,2)))
-extern void cgit_print_error(const char *fmt, ...);
-__attribute__((format (printf,1,0)))
-extern void cgit_vprint_error(const char *fmt, va_list ap);
+__attribute__((format(printf, 1, 2))) extern void
+cgit_print_error(const char *fmt, ...);
+__attribute__((format(printf, 1, 0))) extern void
+cgit_vprint_error(const char *fmt, va_list ap);
extern const struct date_mode cgit_date_mode(enum date_mode_type type);
extern void cgit_print_age(time_t t, int tz, time_t max_relative);
extern void cgit_print_age_themed(time_t t, int tz, time_t max_relative);
@@ -78,17 +84,18 @@ extern void cgit_print_http_headers(void);
extern void cgit_redirect(const char *url, bool permanent);
extern void cgit_print_docstart(void);
extern void cgit_print_docend(void);
-__attribute__((format (printf,3,4)))
-extern void cgit_print_error_page(int code, const char *msg, const char *fmt, ...);
+__attribute__((format(printf, 3, 4))) extern void
+cgit_print_error_page(int code, const char *msg, const char *fmt, ...);
extern void cgit_print_pageheader(void);
extern void cgit_print_filemode(unsigned short mode);
extern void cgit_compose_snapshot_prefix(struct strbuf *filename,
- const char *base, const char *ref);
+ const char *base, const char *ref);
extern void cgit_print_snapshot_links(const struct cgit_repo *repo,
- const char *ref, const char *separator);
+ const char *ref, const char *separator);
extern const char *cgit_snapshot_prefix(const struct cgit_repo *repo);
extern void cgit_add_hidden_formfields(int incl_head, int incl_search,
- const char *page);
+ const char *page);
extern void cgit_set_title_from_path(const char *path);
+extern const char *cgit_get_file_icon(const char *pathname, unsigned mode);
#endif /* UI_SHARED_H */
diff --git a/waow.c b/waow.c
new file mode 100644
index 00000000..b7a1c107
--- /dev/null
+++ b/waow.c
@@ -0,0 +1,5427 @@
+#include <string.h>
+
+/* C code produced by gperf version 3.3 */
+/* Command-line: gperf -t -L C -m 500 -r -H fext_hash -N fext -r fext */
+/* Computed positions: -k'1-13,15' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646. */
+error "gperf generated tables don't work with this execution character set. Please report a bug to <[email protected]>."
+#endif
+
+#line 1 "fext"
+struct out { char* name; char* value; };
+
+#define TOTAL_KEYWORDS 628
+#define MIN_WORD_LENGTH 1
+#define MAX_WORD_LENGTH 18
+#define MIN_HASH_VALUE 6
+#define MAX_HASH_VALUE 2118
+/* maximum key range = 2113, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+fext_hash (str, len)
+ register const char *str;
+ register size_t len;
+{
+ static unsigned short asso_values[] =
+ {
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 28, 27, 2119, 23, 49,
+ 35, 19, 709, 54, 20, 9, 2119, 2119, 2119, 2119,
+ 2119, 2119, 5, 2119, 2119, 2119, 2119, 7, 2119, 2119,
+ 2119, 15, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 6,
+ 2119, 2119, 2119, 2119, 2119, 2119, 7, 196, 385, 47,
+ 30, 69, 388, 271, 180, 84, 170, 601, 8, 57,
+ 133, 13, 34, 81, 79, 6, 27, 19, 31, 414,
+ 5, 406, 305, 107, 755, 232, 635, 647, 9, 78,
+ 556, 114, 384, 10, 357, 802, 728, 17, 10, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119
+ };
+ register unsigned int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[14]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 14:
+ case 13:
+ hval += asso_values[(unsigned char)str[12]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 12:
+ hval += asso_values[(unsigned char)str[11]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 11:
+ hval += asso_values[(unsigned char)str[10]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 10:
+ hval += asso_values[(unsigned char)str[9]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 9:
+ hval += asso_values[(unsigned char)str[8]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 8:
+ hval += asso_values[(unsigned char)str[7]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 7:
+ hval += asso_values[(unsigned char)str[6]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 6:
+ hval += asso_values[(unsigned char)str[5]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 5:
+ hval += asso_values[(unsigned char)str[4]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 4:
+ hval += asso_values[(unsigned char)str[3]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 3:
+ hval += asso_values[(unsigned char)str[2]+2];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 2:
+ hval += asso_values[(unsigned char)str[1]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 1:
+ hval += asso_values[(unsigned char)str[0]+16];
+ break;
+ }
+ return hval;
+}
+
+struct out *
+fext (str, len)
+ register const char *str;
+ register size_t len;
+{
+#if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+ static struct out wordlist[] =
+ {
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 277 "fext"
+ {"h","cheader"},
+#line 182 "fext"
+ {"c","c"},
+#line 382 "fext"
+ {"P","prolog"},
+ {""},
+#line 468 "fext"
+ {"p","pascal"},
+ {""},
+#line 589 "fext"
+ {"hx","haxe"},
+#line 284 "fext"
+ {"hs","haskell"},
+#line 211 "fext"
+ {"cs","csharp"},
+#line 281 "fext"
+ {"hl","binary"},
+#line 191 "fext"
+ {"cl","opencl"},
+ {""}, {""},
+#line 410 "fext"
+ {"pl","perl"},
+#line 216 "fext"
+ {"csv","csv"},
+ {""}, {""}, {""},
+#line 414 "fext"
+ {"po","poedit"},
+#line 194 "fext"
+ {"clj","clojure"},
+#line 251 "fext"
+ {"ex","elixir"},
+ {""},
+#line 218 "fext"
+ {"d","d"},
+#line 241 "fext"
+ {"el","emacs"},
+#line 438 "fext"
+ {"pu","plantuml"},
+#line 197 "fext"
+ {"cljx","clojure"},
+#line 196 "fext"
+ {"cljs","clojure"},
+ {""},
+#line 215 "fext"
+ {"css","css"},
+#line 590 "fext"
+ {"hxml","haxeml"},
+#line 623 "fext"
+ {"cls","salesforce"},
+#line 432 "fext"
+ {"ps1","powershell"},
+ {""},
+#line 262 "fext"
+ {"fs","fsharp"},
+ {""}, {""},
+#line 214 "fext"
+ {"csr","cert"},
+#line 243 "fext"
+ {"elm","elm"},
+#line 282 "fext"
+ {"hlsl","opengl"},
+#line 467 "fext"
+ {"pp","pascal"},
+#line 254 "fext"
+ {"exs","exs"},
+#line 53 "fext"
+ {"flv","video"},
+#line 385 "fext"
+ {"p7r","cert"},
+#line 437 "fext"
+ {"pst","outlook"},
+ {""},
+#line 384 "fext"
+ {"p7b","cert"},
+ {""},
+#line 440 "fext"
+ {"puml","plantuml"},
+ {""},
+#line 25 "fext"
+ {"dss","audio"},
+#line 417 "fext"
+ {"pot","powerpoint"},
+#line 285 "fext"
+ {"html","html"},
+ {""}, {""}, {""},
+#line 439 "fext"
+ {"pub","publisher"},
+#line 419 "fext"
+ {"potx","powerpoint"},
+ {""}, {""},
+#line 422 "fext"
+ {"pps","powerpoint"},
+#line 558 "fext"
+ {"eot","fonteot"},
+ {""},
+#line 413 "fext"
+ {"pm","perlm"},
+ {""},
+#line 204 "fext"
+ {"comp","opengl"},
+#line 424 "fext"
+ {"ppsx","powerpoint"},
+#line 390 "fext"
+ {"pdb","binary"},
+#line 195 "fext"
+ {"cljc","clojure"},
+#line 231 "fext"
+ {"dot","word"},
+#line 247 "fext"
+ {"eps","eps"},
+ {""},
+#line 425 "fext"
+ {"ppt","powerpoint"},
+#line 192 "fext"
+ {"class","class"},
+#line 445 "fext"
+ {"q","q"},
+#line 233 "fext"
+ {"dotx","word"},
+#line 435 "fext"
+ {"psm1","powershellmodule"},
+#line 149 "fext"
+ {"a","binary"},
+#line 427 "fext"
+ {"pptx","powerpoint"},
+ {""},
+#line 416 "fext"
+ {"pcss","postcssconfig"},
+#line 238 "fext"
+ {"edn","clojure"},
+#line 207 "fext"
+ {"cr","crystal"},
+ {""},
+#line 259 "fext"
+ {"fla","fla"},
+ {""},
+#line 475 "fext"
+ {"dpr","delphiproject"},
+#line 286 "fext"
+ {"hxp","lime"},
+#line 420 "fext"
+ {"ppa","powerpoint"},
+#line 393 "fext"
+ {"pem","key"},
+#line 86 "fext"
+ {"d.ts","typescriptdef"},
+#line 538 "fext"
+ {"ui","ui"},
+#line 84 "fext"
+ {"css.ts","vanillaextract"},
+ {""},
+#line 242 "fext"
+ {"elc","emacs"},
+#line 185 "fext"
+ {"pvk","pvk"},
+#line 607 "fext"
+ {"http","http"},
+#line 27 "fext"
+ {"au","audio"},
+#line 170 "fext"
+ {"asm","binary"},
+#line 235 "fext"
+ {"dta","stata"},
+#line 184 "fext"
+ {"cer","cert"},
+#line 253 "fext"
+ {"exp","tcl"},
+#line 58 "fext"
+ {"qt","video"},
+#line 26 "fext"
+ {"dct","audio"},
+ {""}, {""}, {""},
+#line 228 "fext"
+ {"doc","word"},
+#line 198 "fext"
+ {"cma","binary"},
+#line 418 "fext"
+ {"potm","powerpoint"},
+ {""},
+#line 389 "fext"
+ {"pck","plsql_package"},
+ {""},
+#line 230 "fext"
+ {"docx","word"},
+#line 210 "fext"
+ {"crt","cert"},
+ {""},
+#line 283 "fext"
+ {"hpp","hpp"},
+#line 206 "fext"
+ {"cpp","cpp"},
+#line 423 "fext"
+ {"ppsm","powerpoint"},
+ {""},
+#line 59 "fext"
+ {"divx","video"},
+#line 222 "fext"
+ {"der","cert"},
+ {""},
+#line 175 "fext"
+ {"bc","llvm"},
+#line 494 "fext"
+ {"so","binary"},
+ {""},
+#line 248 "fext"
+ {"erb","erb"},
+#line 232 "fext"
+ {"dotm","word"},
+ {""},
+#line 415 "fext"
+ {"postcss","postcssconfig"},
+#line 426 "fext"
+ {"pptm","powerpoint"},
+#line 314 "fext"
+ {"kt","kotlin"},
+#line 23 "fext"
+ {"flac","audio"},
+#line 619 "fext"
+ {"yin","yin"},
+ {""}, {""}, {""},
+#line 500 "fext"
+ {"sss","sss"},
+ {""},
+#line 491 "fext"
+ {"sls","saltstack"},
+#line 436 "fext"
+ {"psmdcp","nuget"},
+#line 61 "fext"
+ {"amv","video"},
+#line 201 "fext"
+ {"cmo","binary"},
+#line 176 "fext"
+ {"bcmx","outlook"},
+ {""},
+#line 236 "fext"
+ {"eco","docpad"},
+#line 421 "fext"
+ {"ppam","powerpoint"},
+ {""}, {""},
+#line 501 "fext"
+ {"sst","cert"},
+ {""},
+#line 315 "fext"
+ {"kts","kotlins"},
+ {""}, {""},
+#line 490 "fext"
+ {"sln","sln"},
+#line 246 "fext"
+ {"env","env"},
+ {""},
+#line 31 "fext"
+ {"act","audio"},
+#line 479 "fext"
+ {"sc","scala"},
+ {""},
+#line 169 "fext"
+ {"ascx","aspx"},
+#line 227 "fext"
+ {"dmp","log"},
+#line 167 "fext"
+ {"ai","ai"},
+#line 29 "fext"
+ {"amr","audio"},
+ {""},
+#line 229 "fext"
+ {"docm","word"},
+#line 226 "fext"
+ {"dll","binary"},
+#line 430 "fext"
+ {"pro","prolog"},
+ {""}, {""},
+#line 171 "fext"
+ {"aspx","aspx"},
+#line 579 "fext"
+ {"zip","zip"},
+ {""}, {""},
+#line 493 "fext"
+ {"smv","matlab"},
+ {""},
+#line 578 "fext"
+ {"zig","zig"},
+#line 580 "fext"
+ {"zipx","zip"},
+ {""}, {""}, {""}, {""}, {""},
+#line 280 "fext"
+ {"hcl","hashicorp"},
+ {""},
+#line 483 "fext"
+ {"scss","scss"},
+ {""},
+#line 190 "fext"
+ {"cjm","clojure"},
+#line 160 "fext"
+ {"adp","access"},
+#line 264 "fext"
+ {"ftl","freemarker"},
+#line 224 "fext"
+ {"dio","drawio"},
+#line 189 "fext"
+ {"civet","civet"},
+#line 168 "fext"
+ {"app","binary"},
+ {""}, {""},
+#line 178 "fext"
+ {"bin","binary"},
+#line 122 "fext"
+ {"dto.ts","nestjsdto"},
+#line 257 "fext"
+ {"fig","figma"},
+#line 621 "fext"
+ {"uml","plantuml"},
+ {""},
+#line 250 "fext"
+ {"eskip","skipper"},
+#line 237 "fext"
+ {"edge","edge"},
+#line 386 "fext"
+ {"pa","powerpoint"},
+ {""}, {""}, {""},
+#line 240 "fext"
+ {"ejs","ejs"},
+ {""}, {""},
+#line 596 "fext"
+ {"proto","proto"},
+#line 172 "fext"
+ {"astro","astro"},
+ {""},
+#line 505 "fext"
+ {"suo","suo"},
+#line 67 "fext"
+ {"bmp","image"},
+ {""},
+#line 187 "fext"
+ {"spc","spc"},
+#line 209 "fext"
+ {"crl","cert"},
+#line 392 "fext"
+ {"pdf","pdf"},
+ {""},
+#line 244 "fext"
+ {"enc","license"},
+#line 313 "fext"
+ {"kit","codekit"},
+#line 278 "fext"
+ {"haml","haml"},
+#line 466 "fext"
+ {"pas","pascal"},
+ {""},
+#line 68 "fext"
+ {"png","imagepng"},
+ {""},
+#line 225 "fext"
+ {"djt","django"},
+#line 507 "fext"
+ {"svg","svg"},
+#line 327 "fext"
+ {"m","m"},
+#line 249 "fext"
+ {"erl","erlang"},
+ {""},
+#line 584 "fext"
+ {"kra","krita"},
+ {""},
+#line 179 "fext"
+ {"blade","blade"},
+#line 355 "fext"
+ {"mx","matlab"},
+#line 83 "fext"
+ {"css.js","vanillaextract"},
+#line 24 "fext"
+ {"dvf","audio"},
+#line 345 "fext"
+ {"ml","ocaml"},
+#line 159 "fext"
+ {"adoc","adoc"},
+ {""}, {""},
+#line 12 "fext"
+ {"msv","audio"},
+#line 350 "fext"
+ {"mo","motoko"},
+ {""}, {""}, {""},
+#line 157 "fext"
+ {"accdu","access"},
+ {""},
+#line 48 "fext"
+ {"mov","mov"},
+ {""}, {""}, {""}, {""}, {""},
+#line 156 "fext"
+ {"accdt","access"},
+#line 504 "fext"
+ {"styl","stylus"},
+ {""}, {""},
+#line 495 "fext"
+ {"sol","sol"},
+ {""},
+#line 499 "fext"
+ {"src","cert"},
+#line 154 "fext"
+ {"accdp","access"},
+#line 353 "fext"
+ {"mum","matlab"},
+ {""}, {""},
+#line 62 "fext"
+ {"asf","video"},
+#line 481 "fext"
+ {"scpt","binary"},
+#line 352 "fext"
+ {"mst","mustache"},
+ {""},
+#line 41 "fext"
+ {"mpv","video"},
+#line 52 "fext"
+ {"m2v","video"},
+#line 476 "fext"
+ {"dproj","delphiproject"},
+#line 502 "fext"
+ {"stl","cert"},
+#line 402 "fext"
+ {"phps","php"},
+#line 152 "fext"
+ {"accdc","access"},
+#line 212 "fext"
+ {"cshtml","cshtml"},
+#line 219 "fext"
+ {"dart","dartlang"},
+ {""}, {""}, {""},
+#line 485 "fext"
+ {"sig","onenote"},
+#line 312 "fext"
+ {"key","key"},
+ {""}, {""},
+#line 46 "fext"
+ {"mp4","mp4"},
+#line 405 "fext"
+ {"phtml","php"},
+#line 398 "fext"
+ {"php3","php"},
+#line 401 "fext"
+ {"php6","php"},
+ {""},
+#line 356 "fext"
+ {"mx3","matlab"},
+#line 334 "fext"
+ {"mdb","access"},
+ {""}, {""},
+#line 252 "fext"
+ {"exe","binary"},
+#line 404 "fext"
+ {"phpt","php"},
+ {""},
+#line 153 "fext"
+ {"accde","access"},
+#line 482 "fext"
+ {"scptd","binary"},
+ {""}, {""}, {""}, {""},
+#line 397 "fext"
+ {"php2","php"},
+ {""},
+#line 174 "fext"
+ {"bat","bat"},
+ {""},
+#line 155 "fext"
+ {"accdr","access"},
+ {""},
+#line 391 "fext"
+ {"pde","arduino"},
+ {""},
+#line 307 "fext"
+ {"jl","julia"},
+#line 411 "fext"
+ {"plantuml","plantuml"},
+#line 581 "fext"
+ {"zz","zip"},
+#line 258 "fext"
+ {"fish","shell"},
+#line 395 "fext"
+ {"phar","php"},
+#line 217 "fext"
+ {"csx","csharp"},
+#line 396 "fext"
+ {"php1","php"},
+#line 72 "fext"
+ {"7z","zip"},
+#line 14 "fext"
+ {"mp3","audiomp3"},
+ {""},
+#line 351 "fext"
+ {"msg","outlook"},
+#line 400 "fext"
+ {"php5","php"},
+ {""}, {""}, {""}, {""},
+#line 496 "fext"
+ {"sql","sql"},
+#line 183 "fext"
+ {"cake","cake"},
+#line 311 "fext"
+ {"jss","jss"},
+#line 620 "fext"
+ {"mdc","cursor"},
+ {""}, {""}, {""},
+#line 13 "fext"
+ {"mpc","audio"},
+#line 478 "fext"
+ {"sass","scss"},
+#line 177 "fext"
+ {"bicep","bicep"},
+ {""},
+#line 304 "fext"
+ {"j2","jinja"},
+ {""},
+#line 121 "fext"
+ {"dto.js","nestjsdto"},
+ {""}, {""}, {""},
+#line 256 "fext"
+ {"feature","cucumber"},
+#line 32 "fext"
+ {"aac","audio"},
+#line 348 "fext"
+ {"mly","ocamly"},
+ {""},
+#line 85 "fext"
+ {"css.map","cssmap"},
+#line 42 "fext"
+ {"mpg","video"},
+ {""}, {""}, {""},
+#line 287 "fext"
+ {"hxproj","haxedevelop"},
+#line 541 "fext"
+ {"v","v"},
+#line 213 "fext"
+ {"csproj","csproj"},
+#line 63 "fext"
+ {"3gp","video"},
+ {""}, {""}, {""},
+#line 583 "fext"
+ {"brotli","brotli"},
+ {""}, {""},
+#line 349 "fext"
+ {"mn","matlab"},
+ {""}, {""},
+#line 540 "fext"
+ {"user","user"},
+#line 202 "fext"
+ {"cmx","binary"},
+ {""}, {""}, {""}, {""},
+#line 347 "fext"
+ {"mll","ocamll"},
+ {""}, {""}, {""}, {""},
+#line 343 "fext"
+ {"mint","mint"},
+ {""}, {""},
+#line 263 "fext"
+ {"fsproj","fsproj"},
+#line 158 "fext"
+ {"ade","access"},
+#line 394 "fext"
+ {"pex","xml"},
+#line 245 "fext"
+ {"ensime","ensime"},
+ {""},
+#line 28 "fext"
+ {"ape","audio"},
+ {""}, {""}, {""},
+#line 310 "fext"
+ {"jsp","jsp"},
+ {""},
+#line 594 "fext"
+ {"mtl","mtl"},
+#line 239 "fext"
+ {"eex","eex"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 35 "fext"
+ {"vob","video"},
+#line 615 "fext"
+ {"hash","hash"},
+ {""},
+#line 433 "fext"
+ {"psd","photoshop"},
+#line 208 "fext"
+ {"crec","lync"},
+ {""},
+#line 78 "fext"
+ {"controller.ts","nestjscontroller"},
+ {""},
+#line 614 "fext"
+ {"bal","ballerina"},
+#line 279 "fext"
+ {"hbs","handlebars"},
+ {""},
+#line 220 "fext"
+ {"db","sqlite"},
+ {""},
+#line 629 "fext"
+ {"silq","silq"},
+#line 480 "fext"
+ {"scala","scala"},
+ {""}, {""}, {""}, {""},
+#line 527 "fext"
+ {"toml","toml"},
+#line 537 "fext"
+ {"txt","txt"},
+#line 531 "fext"
+ {"tst","test"},
+#line 576 "fext"
+ {"yy","gamemaker2"},
+#line 70 "fext"
+ {"jpg","imagejpg"},
+#line 344 "fext"
+ {"mjml","mjml"},
+#line 150 "fext"
+ {"accda","access"},
+#line 271 "fext"
+ {"go","go"},
+#line 492 "fext"
+ {"slx","matlab"},
+#line 477 "fext"
+ {"dfm","delphiproject"},
+#line 261 "fext"
+ {"frag","opengl"},
+ {""}, {""}, {""},
+#line 22 "fext"
+ {"gsm","audio"},
+#line 331 "fext"
+ {"maq","access"},
+ {""}, {""}, {""}, {""},
+#line 260 "fext"
+ {"fods","excel"},
+ {""},
+#line 329 "fext"
+ {"mam","access"},
+#line 205 "fext"
+ {"conf","conf"},
+#line 266 "fext"
+ {"gd","godot"},
+#line 388 "fext"
+ {"pcd","pcl"},
+ {""}, {""},
+#line 300 "fext"
+ {"iuml","plantuml"},
+ {""}, {""},
+#line 269 "fext"
+ {"glsl","opengl"},
+#line 199 "fext"
+ {"cmd","cli"},
+ {""},
+#line 434 "fext"
+ {"psd1","powershelldata"},
+ {""}, {""},
+#line 20 "fext"
+ {"ivs","audio"},
+ {""},
+#line 6 "fext"
+ {"tta","audio"},
+ {""}, {""}, {""}, {""},
+#line 289 "fext"
+ {"idr","idris"},
+ {""},
+#line 387 "fext"
+ {"patch","diff"},
+#line 221 "fext"
+ {"db3","sqlite"},
+ {""}, {""},
+#line 16 "fext"
+ {"mmf","audio"},
+#line 587 "fext"
+ {"cy.ts","cypressts"},
+#line 290 "fext"
+ {"ilk","binary"},
+#line 403 "fext"
+ {"phpsa","php"},
+ {""}, {""}, {""},
+#line 523 "fext"
+ {"tlg","log"},
+ {""},
+#line 188 "fext"
+ {"cfg","conf"},
+ {""}, {""},
+#line 548 "fext"
+ {"vert","opengl"},
+#line 446 "fext"
+ {"qbs","qbs"},
+ {""},
+#line 442 "fext"
+ {"pyc","binary"},
+ {""}, {""}, {""}, {""},
+#line 96 "fext"
+ {"filter.ts","nestjsfilter"},
+ {""}, {""},
+#line 591 "fext"
+ {"gr","grain"},
+ {""}, {""}, {""},
+#line 444 "fext"
+ {"pyo","binary"},
+#line 447 "fext"
+ {"qvd","qlikview"},
+ {""}, {""}, {""},
+#line 338 "fext"
+ {"mesh","mesh"},
+#line 577 "fext"
+ {"yyp","gamemaker2"},
+ {""}, {""}, {""}, {""},
+#line 330 "fext"
+ {"map","map"},
+#line 116 "fext"
+ {"service.ts","nestjsservice"},
+ {""},
+#line 513 "fext"
+ {"templ","tmpl"},
+#line 497 "fext"
+ {"sqlite","sqlite"},
+ {""},
+#line 76 "fext"
+ {"cjs.map","jsmap"},
+#line 74 "fext"
+ {"blade.php","blade"},
+#line 448 "fext"
+ {"qvw","qlikview"},
+#line 489 "fext"
+ {"sldx","powerpoint"},
+#line 604 "fext"
+ {"bzl","bazel"},
+ {""},
+#line 618 "fext"
+ {"yang","yang"},
+#line 514 "fext"
+ {"tesc","opengl"},
+ {""}, {""},
+#line 506 "fext"
+ {"svelte","svelte"},
+ {""}, {""}, {""},
+#line 130 "fext"
+ {"stories.ts","storybook"},
+#line 301 "fext"
+ {"jar","jar"},
+#line 525 "fext"
+ {"tmpl","tmpl"},
+#line 126 "fext"
+ {"spec.ts","testts"},
+#line 498 "fext"
+ {"sqlite3","sqlite"},
+ {""},
+#line 131 "fext"
+ {"stories.tsx","storybook"},
+#line 65 "fext"
+ {"ico","imageico"},
+ {""},
+#line 127 "fext"
+ {"spec.tsx","testts"},
+#line 45 "fext"
+ {"mpe","video"},
+ {""}, {""}, {""}, {""},
+#line 515 "fext"
+ {"tese","opengl"},
+#line 484 "fext"
+ {"sentinel","sentinel"},
+#line 431 "fext"
+ {"properties","properties"},
+ {""}, {""},
+#line 97 "fext"
+ {"format.ps1xml","powershell_format"},
+ {""},
+#line 77 "fext"
+ {"controller.js","nestjscontroller"},
+#line 93 "fext"
+ {"e2e-test.ts","testts"},
+#line 528 "fext"
+ {"tpl","smarty"},
+#line 173 "fext"
+ {"awk","awk"},
+ {""}, {""}, {""},
+#line 94 "fext"
+ {"e2e-test.tsx","testts"},
+ {""}, {""}, {""}, {""},
+#line 460 "fext"
+ {"rs","rust"},
+ {""},
+#line 144 "fext"
+ {"test.ts","testts"},
+#line 512 "fext"
+ {"tcl","tcl"},
+#line 203 "fext"
+ {"cmxa","binary"},
+#line 309 "fext"
+ {"jsonld","jsonld"},
+#line 337 "fext"
+ {"mdx","markdownx"},
+#line 488 "fext"
+ {"sldm","powerpoint"},
+#line 145 "fext"
+ {"test.tsx","testts"},
+ {""}, {""},
+#line 610 "fext"
+ {"bru","bruno"},
+ {""}, {""}, {""}, {""},
+#line 91 "fext"
+ {"e2e-spec.ts","testts"},
+ {""}, {""},
+#line 582 "fext"
+ {"deflate","zip"},
+#line 308 "fext"
+ {"json5","json5"},
+#line 464 "fext"
+ {"rt","reacttemplate"},
+#line 92 "fext"
+ {"e2e-spec.tsx","testts"},
+ {""}, {""}, {""}, {""}, {""},
+#line 487 "fext"
+ {"slddc","matlab"},
+ {""},
+#line 535 "fext"
+ {"ttf","fontttf"},
+ {""},
+#line 530 "fext"
+ {"tscn","tscn"},
+ {""},
+#line 106 "fext"
+ {"json-ld","jsonld"},
+ {""},
+#line 508 "fext"
+ {"swc","flash"},
+ {""}, {""}, {""},
+#line 15 "fext"
+ {"mogg","audio"},
+ {""},
+#line 462 "fext"
+ {"ron","ron"},
+ {""},
+#line 625 "fext"
+ {".instructions.txt","instructions"},
+#line 339 "fext"
+ {"mex","matlab"},
+#line 511 "fext"
+ {"tar","zip"},
+#line 292 "fext"
+ {"inc","inc"},
+ {""},
+#line 102 "fext"
+ {"jar.old","jar"},
+#line 139 "fext"
+ {"test.cts","testts"},
+#line 38 "fext"
+ {"rm","video"},
+#line 588 "fext"
+ {"cy.js","cypressjs"},
+#line 151 "fext"
+ {"accdb","access"},
+#line 193 "fext"
+ {"cli","cli"},
+#line 533 "fext"
+ {"jsx","reactjs"},
+ {""}, {""},
+#line 342 "fext"
+ {"mf","manifest"},
+#line 297 "fext"
+ {"ino","arduino"},
+#line 143 "fext"
+ {"test.mts","testts"},
+#line 268 "fext"
+ {"geom","opengl"},
+ {""},
+#line 104 "fext"
+ {"js.map","jsmap"},
+#line 333 "fext"
+ {"master","layout"},
+ {""}, {""},
+#line 273 "fext"
+ {"gql","graphql"},
+#line 409 "fext"
+ {"pks","plsql_package_spec"},
+ {""}, {""},
+#line 95 "fext"
+ {"filter.js","nestjsfilter"},
+#line 357 "fext"
+ {"n","binary"},
+#line 624 "fext"
+ {".instructions.md","instructions"},
+ {""}, {""}, {""}, {""},
+#line 132 "fext"
+ {"stories.svelte","storybook"},
+#line 406 "fext"
+ {"pkb","plsql_package_body"},
+#line 88 "fext"
+ {"decorator.ts","nestjsdecorator"},
+ {""}, {""},
+#line 456 "fext"
+ {"res","rescript"},
+#line 369 "fext"
+ {"o","binary"},
+#line 40 "fext"
+ {"nsv","video"},
+ {""}, {""}, {""},
+#line 274 "fext"
+ {"gradle","gradle"},
+#line 115 "fext"
+ {"service.js","nestjsservice"},
+ {""},
+#line 412 "fext"
+ {"plist","config"},
+#line 101 "fext"
+ {"guard.ts","nestjsguard"},
+ {""}, {""},
+#line 75 "fext"
+ {"cfg.dist","conf"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 200 "fext"
+ {"cmi","binary"},
+ {""}, {""},
+#line 234 "fext"
+ {"drawio","drawio"},
+#line 336 "fext"
+ {"mdw","access"},
+ {""},
+#line 128 "fext"
+ {"stories.js","storybook"},
+ {""}, {""},
+#line 123 "fext"
+ {"spec.js","testjs"},
+#line 82 "fext"
+ {"scheduler.ts","nestscheduler"},
+#line 5 "fext"
+ {"vox","audio"},
+#line 129 "fext"
+ {"stories.jsx","storybook"},
+#line 613 "fext"
+ {"mmd","mermaid"},
+#line 69 "fext"
+ {"gif","imagegif"},
+#line 124 "fext"
+ {"spec.jsx","testjs"},
+#line 223 "fext"
+ {"diff","diff"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 380 "fext"
+ {"otm","outlook"},
+ {""},
+#line 428 "fext"
+ {"pri","qt"},
+#line 291 "fext"
+ {"imba","imba"},
+ {""}, {""}, {""},
+#line 407 "fext"
+ {"pkg","package"},
+#line 532 "fext"
+ {"tsx","reactts"},
+#line 371 "fext"
+ {"ods","excel"},
+ {""}, {""},
+#line 612 "fext"
+ {"mermaid","mermaid"},
+ {""}, {""},
+#line 186 "fext"
+ {"pfx","pfx"},
+#line 302 "fext"
+ {"java","java"},
+ {""}, {""},
+#line 140 "fext"
+ {"test.js","testjs"},
+#line 105 "fext"
+ {"js.snap","jest_snapshot"},
+#line 509 "fext"
+ {"swf","flash"},
+#line 454 "fext"
+ {"reg","registry"},
+ {""}, {""},
+#line 141 "fext"
+ {"test.jsx","testjs"},
+#line 60 "fext"
+ {"avi","video"},
+#line 341 "fext"
+ {"mexrs6","matlab"},
+ {""}, {""},
+#line 543 "fext"
+ {"vapi","vapi"},
+#line 276 "fext"
+ {"gz","zip"},
+ {""}, {""},
+#line 255 "fext"
+ {"fbx","fbx"},
+ {""},
+#line 455 "fext"
+ {"rego","rego"},
+ {""}, {""}, {""}, {""}, {""},
+#line 457 "fext"
+ {"resi","rescriptinterface"},
+ {""},
+#line 125 "fext"
+ {"spec.mjs","testjs"},
+#line 360 "fext"
+ {"nim","nim"},
+#line 294 "fext"
+ {"info","info"},
+#line 30 "fext"
+ {"aiff","audio"},
+ {""}, {""}, {""},
+#line 293 "fext"
+ {"include","inc"},
+#line 111 "fext"
+ {"mjs.map","jsmap"},
+#line 340 "fext"
+ {"mexn","matlab"},
+#line 529 "fext"
+ {"tres","tres"},
+ {""}, {""}, {""},
+#line 54 "fext"
+ {"f4v","video"},
+#line 36 "fext"
+ {"svi","video"},
+ {""}, {""},
+#line 626 "fext"
+ {".instructions.json","instructions"},
+ {""},
+#line 8 "fext"
+ {"ra","audio"},
+ {""},
+#line 544 "fext"
+ {"vash","vash"},
+#line 138 "fext"
+ {"test.cjs","testjs"},
+#line 568 "fext"
+ {"xls","excel"},
+ {""}, {""},
+#line 516 "fext"
+ {"tex","latex"},
+ {""},
+#line 325 "fext"
+ {"ls","livescript"},
+#line 570 "fext"
+ {"xlsx","excel"},
+#line 322 "fext"
+ {"ll","llvm"},
+ {""},
+#line 142 "fext"
+ {"test.mjs","testjs"},
+ {""},
+#line 118 "fext"
+ {"entity.ts","nestjsentity"},
+#line 383 "fext"
+ {"p12","cert"},
+#line 572 "fext"
+ {"xsn","infopath"},
+#line 298 "fext"
+ {"ipkg","idrispkg"},
+#line 56 "fext"
+ {"f4b","video"},
+#line 518 "fext"
+ {"tf","terraform"},
+#line 135 "fext"
+ {"story.ts","storybook"},
+ {""}, {""}, {""},
+#line 270 "fext"
+ {"gmx","gamemaker"},
+ {""},
+#line 136 "fext"
+ {"story.tsx","storybook"},
+#line 450 "fext"
+ {"rar","zip"},
+#line 408 "fext"
+ {"pkh","plsql_package_header"},
+#line 592 "fext"
+ {"slim","slim"},
+ {""},
+#line 441 "fext"
+ {"puz","publisher"},
+#line 87 "fext"
+ {"decorator.js","nestjsdecorator"},
+#line 165 "fext"
+ {"afphoto","afphoto"},
+#line 146 "fext"
+ {"ts.snap","jest_snapshot"},
+#line 57 "fext"
+ {"f4a","video"},
+ {""}, {""}, {""},
+#line 305 "fext"
+ {"jinja","jinja"},
+ {""}, {""},
+#line 354 "fext"
+ {"mustache","mustache"},
+#line 112 "fext"
+ {"module.ts","nestjsmodule"},
+ {""},
+#line 100 "fext"
+ {"guard.js","nestjsguard"},
+ {""},
+#line 526 "fext"
+ {"todo","todo"},
+ {""}, {""},
+#line 459 "fext"
+ {"rproj","rproj"},
+#line 443 "fext"
+ {"pyd","binary"},
+ {""}, {""}, {""},
+#line 358 "fext"
+ {"ndll","binary"},
+#line 470 "fext"
+ {"lps","lazarusproject"},
+#line 44 "fext"
+ {"mpeg","video"},
+#line 378 "fext"
+ {"org","org"},
+ {""}, {""},
+#line 569 "fext"
+ {"xlsm","excel"},
+ {""},
+#line 317 "fext"
+ {"ldb","access"},
+#line 469 "fext"
+ {"lpr","lazarusproject"},
+#line 81 "fext"
+ {"scheduler.js","nestscheduler"},
+ {""},
+#line 55 "fext"
+ {"f4p","video"},
+ {""}, {""}, {""}, {""},
+#line 363 "fext"
+ {"njs","nunjucks"},
+ {""},
+#line 367 "fext"
+ {"nuspec","nuget"},
+#line 306 "fext"
+ {"jinja2","jinja"},
+#line 574 "fext"
+ {"xvc","matlab"},
+#line 561 "fext"
+ {"wxml","wxml"},
+ {""},
+#line 522 "fext"
+ {"tikz","tex"},
+#line 560 "fext"
+ {"wv","audiowv"},
+#line 562 "fext"
+ {"wxss","wxss"},
+ {""}, {""}, {""}, {""},
+#line 50 "fext"
+ {"mkv","video"},
+#line 370 "fext"
+ {"ocrec","lync"},
+ {""},
+#line 346 "fext"
+ {"mli","ocamli"},
+#line 565 "fext"
+ {"xib","xib"},
+#line 517 "fext"
+ {"texi","tex"},
+ {""},
+#line 43 "fext"
+ {"mpeg2","video"},
+#line 474 "fext"
+ {"lpk","lazarusproject"},
+ {""}, {""}, {""},
+#line 318 "fext"
+ {"less","less"},
+ {""},
+#line 324 "fext"
+ {"log","log"},
+#line 473 "fext"
+ {"lrs","lazarusproject"},
+#line 379 "fext"
+ {"otf","fontotf"},
+ {""}, {""},
+#line 272 "fext"
+ {"godot","godot"},
+ {""},
+#line 365 "fext"
+ {"nunj","nunjucks"},
+#line 288 "fext"
+ {"ibc","idrisbin"},
+ {""},
+#line 362 "fext"
+ {"njk","njk"},
+ {""},
+#line 33 "fext"
+ {"wmv","video"},
+ {""}, {""},
+#line 461 "fext"
+ {"rsx","rust"},
+ {""},
+#line 319 "fext"
+ {"lib","binary"},
+#line 573 "fext"
+ {"xtp2","infopath"},
+ {""}, {""},
+#line 586 "fext"
+ {"anim","anim"},
+ {""}, {""}, {""}, {""}, {""},
+#line 449 "fext"
+ {"rake","rake"},
+ {""}, {""},
+#line 71 "fext"
+ {"jpeg","imagejpg"},
+#line 542 "fext"
+ {"vala","vala"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 381 "fext"
+ {"ovpn","ovpn"},
+#line 335 "fext"
+ {"mdown","markdown"},
+#line 458 "fext"
+ {"rjson","rjson"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 595 "fext"
+ {"bicepparam","bicepparam"},
+ {""},
+#line 3 "fext"
+ {"wma","audio"},
+ {""}, {""},
+#line 117 "fext"
+ {"entity.js","nestjsentity"},
+ {""}, {""},
+#line 114 "fext"
+ {"resolver.ts","nestjsresolver"},
+ {""},
+#line 571 "fext"
+ {"xsf","infopath"},
+#line 133 "fext"
+ {"story.js","storybook"},
+#line 566 "fext"
+ {"xlf","xliff"},
+ {""},
+#line 49 "fext"
+ {"mk3d","video"},
+#line 359 "fext"
+ {"neon","neon"},
+ {""},
+#line 134 "fext"
+ {"story.jsx","storybook"},
+ {""},
+#line 39 "fext"
+ {"ogv","video"},
+ {""},
+#line 549 "fext"
+ {"vhd","vhd"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 265 "fext"
+ {"gbl","gbl"},
+ {""},
+#line 550 "fext"
+ {"vhdl","vhdl"},
+ {""},
+#line 554 "fext"
+ {"webp","imagewebp"},
+ {""}, {""}, {""},
+#line 453 "fext"
+ {"rb","ruby"},
+ {""}, {""},
+#line 556 "fext"
+ {"wll","word"},
+ {""},
+#line 323 "fext"
+ {"lnk","lnk"},
+#line 51 "fext"
+ {"m4v","video"},
+ {""},
+#line 616 "fext"
+ {"gleam","gleam"},
+ {""}, {""},
+#line 429 "fext"
+ {"prisma","prisma"},
+ {""},
+#line 137 "fext"
+ {"story.svelte","storybook"},
+#line 166 "fext"
+ {"afpub","afpub"},
+ {""},
+#line 73 "fext"
+ {"7zip","zip"},
+ {""},
+#line 585 "fext"
+ {"mgcb","mgcb"},
+#line 34 "fext"
+ {"webm","video"},
+ {""}, {""}, {""}, {""}, {""},
+#line 11 "fext"
+ {"oga","audio"},
+ {""}, {""}, {""}, {""},
+#line 551 "fext"
+ {"vsix","vscode"},
+#line 18 "fext"
+ {"m4b","audio"},
+ {""}, {""}, {""},
+#line 47 "fext"
+ {"mp2","video"},
+ {""}, {""},
+#line 399 "fext"
+ {"php4","php"},
+ {""}, {""},
+#line 321 "fext"
+ {"liquid","liquid"},
+ {""},
+#line 326 "fext"
+ {"lucee","cf"},
+#line 628 "fext"
+ {".instructions.yml","instructions"},
+#line 627 "fext"
+ {".instructions.yaml","instructions"},
+ {""},
+#line 64 "fext"
+ {"3g2","video"},
+#line 19 "fext"
+ {"m4a","audio"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 10 "fext"
+ {"ogg","audioogg"},
+#line 4 "fext"
+ {"wav","audiowav"},
+#line 37 "fext"
+ {"rmvb","video"},
+ {""},
+#line 90 "fext"
+ {"drawio.svg","drawio"},
+#line 545 "fext"
+ {"vbhtml","vbhtml"},
+ {""},
+#line 547 "fext"
+ {"vcxproj","vcxproj"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 107 "fext"
+ {"jsx.snap","jest_snapshot"},
+ {""}, {""},
+#line 17 "fext"
+ {"m4p","audio"},
+ {""}, {""}, {""},
+#line 361 "fext"
+ {"nix","nix"},
+ {""}, {""},
+#line 275 "fext"
+ {"groovy","groovy"},
+ {""}, {""}, {""}, {""},
+#line 575 "fext"
+ {"xz","zip"},
+ {""}, {""}, {""}, {""},
+#line 66 "fext"
+ {"tiff","image"},
+ {""}, {""},
+#line 593 "fext"
+ {"obj","obj"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 267 "fext"
+ {"gemfile","bundler"},
+ {""},
+#line 373 "fext"
+ {"one","onenote"},
+#line 120 "fext"
+ {"interceptor.ts","nestjsinterceptor"},
+ {""},
+#line 611 "fext"
+ {"nelua","nelua"},
+#line 113 "fext"
+ {"resolver.js","nestjsresolver"},
+#line 181 "fext"
+ {"bzip2","zip"},
+ {""}, {""}, {""}, {""},
+#line 520 "fext"
+ {"tfvars","terraformvars"},
+ {""}, {""}, {""}, {""},
+#line 372 "fext"
+ {"oft","outlook"},
+#line 299 "fext"
+ {"ipynb","ipynb"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 553 "fext"
+ {"wasm","wasm"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 546 "fext"
+ {"vbproj","vbproj"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 180 "fext"
+ {"bz2","zip"},
+ {""}, {""},
+#line 147 "fext"
+ {"tsx.snap","jest_snapshot"},
+ {""},
+#line 598 "fext"
+ {"docker-compose.yml","docker"},
+ {""}, {""},
+#line 555 "fext"
+ {"wgsl","wgsl"},
+#line 9 "fext"
+ {"opus","audio"},
+ {""}, {""}, {""}, {""},
+#line 599 "fext"
+ {"excalidraw","excalidraw"},
+#line 328 "fext"
+ {"makefile","makefile"},
+#line 603 "fext"
+ {"bazel","bazel"},
+ {""}, {""}, {""}, {""},
+#line 519 "fext"
+ {"tfstate","terraform"},
+ {""}, {""}, {""}, {""}, {""},
+#line 534 "fext"
+ {"tt2","tt"},
+ {""}, {""}, {""},
+#line 364 "fext"
+ {"njsproj","njsproj"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 89 "fext"
+ {"drawio.png","drawio"},
+ {""}, {""},
+#line 148 "fext"
+ {"types.ps1xml","powershell_types"},
+#line 296 "fext"
+ {"ini","conf"},
+#line 375 "fext"
+ {"onetoc","onenote"},
+ {""},
+#line 377 "fext"
+ {"opencl","opencl"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 472 "fext"
+ {"lfm","lazarusproject"},
+ {""},
+#line 7 "fext"
+ {"raw","audio"},
+ {""}, {""},
+#line 103 "fext"
+ {"js.flow","flow"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 601 "fext"
+ {"excalidraw.svg","excalidraw"},
+ {""},
+#line 376 "fext"
+ {"onetoc2","onenote"},
+#line 622 "fext"
+ {"Identifier","identifier"},
+#line 539 "fext"
+ {"unity","shaderlab"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 608 "fext"
+ {"rkt","racket"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 119 "fext"
+ {"interceptor.js","nestjsinterceptor"},
+ {""},
+#line 609 "fext"
+ {"rktl","racket"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 630 "fext"
+ {"eraserdiagram","eraser"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 606 "fext"
+ {"bazelrc","bazel"},
+ {""}, {""}, {""}, {""}, {""},
+#line 486 "fext"
+ {"sketch","sketch"},
+ {""}, {""}, {""},
+#line 295 "fext"
+ {"infopathxml","infopath"},
+ {""},
+#line 564 "fext"
+ {"xfl","xfl"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 563 "fext"
+ {"xcodeproj","xcode"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 110 "fext"
+ {"marko.js","markojs"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 597 "fext"
+ {"wren","wren"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 602 "fext"
+ {"excalidraw.png","excalidraw"},
+ {""},
+#line 320 "fext"
+ {"lidr","idris"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 99 "fext"
+ {"gradle.kts","gradlekotlin"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 368 "fext"
+ {"nvim","nvim"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 21 "fext"
+ {"iklax","audio"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 451 "fext"
+ {"gzip","zip"},
+ {""}, {""},
+#line 465 "fext"
+ {"rwd","matlab"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 303 "fext"
+ {"jbuilder","jbuilder"},
+ {""}, {""}, {""}, {""},
+#line 557 "fext"
+ {"woff","fontwoff"},
+ {""}, {""}, {""}, {""}, {""},
+#line 471 "fext"
+ {"lpi","lazarusproject"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 80 "fext"
+ {"repository.ts","nestjsrepository"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 521 "fext"
+ {"tgz","zip"},
+ {""},
+#line 463 "fext"
+ {"odin","odin"},
+ {""}, {""},
+#line 108 "fext"
+ {"layout.htm","layout"},
+ {""},
+#line 503 "fext"
+ {"storyboard","storyboard"},
+ {""}, {""},
+#line 559 "fext"
+ {"woff2","fontwoff2"},
+ {""}, {""}, {""},
+#line 109 "fext"
+ {"layout.html","layout"},
+#line 161 "fext"
+ {"afdesign","afdesign"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 617 "fext"
+ {"lock","lock"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 600 "fext"
+ {"excalidraw.json","excalidraw"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 316 "fext"
+ {"laccdb","access"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 79 "fext"
+ {"repository.js","nestjsrepository"},
+#line 510 "fext"
+ {"swift","swift"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 452 "fext"
+ {"razor","razor"},
+ {""}, {""}, {""}, {""}, {""},
+#line 366 "fext"
+ {"nupkg","nuget"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 332 "fext"
+ {"markdown","markdown"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 163 "fext"
+ {"affinityphoto","afphoto"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 536 "fext"
+ {"twig","twig"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 524 "fext"
+ {"tmlanguage","xml"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 98 "fext"
+ {"gemfile.lock","bundler"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 605 "fext"
+ {"bazelignore","bazelignore"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 162 "fext"
+ {"affinitydesigner","afdesign"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 552 "fext"
+ {"vsixmanifest","manifest"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 374 "fext"
+ {"onepkg","onenote"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 164 "fext"
+ {"affinitypublisher","afpub"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 567 "fext"
+ {"xliff","xliff"}
+ };
+#if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)
+#pragma GCC diagnostic pop
+#endif
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register unsigned int key = fext_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE)
+ {
+ register const char *s = wordlist[key].name;
+
+ if (*str == *s && !strcmp (str + 1, s + 1))
+ return &wordlist[key];
+ }
+ }
+ return (struct out *) 0;
+}
+/* C code produced by gperf version 3.3 */
+/* Command-line: gperf -t -L C -m 500 -r -H fname_hash -N fname -r fext */
+/* Computed positions: -k'1-4,6,9-30,33-34' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646. */
+error "gperf generated tables don't work with this execution character set. Please report a bug to <[email protected]>."
+#endif
+
+#line 1 "fext"
+struct out;
+
+#define TOTAL_KEYWORDS 979
+#define MIN_WORD_LENGTH 3
+#define MAX_WORD_LENGTH 39
+#define MIN_HASH_VALUE 49
+#define MAX_HASH_VALUE 8521
+/* maximum key range = 8473, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+fname_hash (str, len)
+ register const char *str;
+ register size_t len;
+{
+ static unsigned short asso_values[] =
+ {
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 319, 13, 8522, 8522, 8522,
+ 13, 17, 11, 11, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 12, 11, 11, 11, 12,
+ 11, 8522, 8522, 11, 8522, 8522, 11, 11, 8522, 8522,
+ 8522, 8522, 8522, 12, 11, 11, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 11, 8522, 522, 646, 13,
+ 595, 14, 11, 14, 1989, 15, 12, 1240, 214, 145,
+ 11, 11, 308, 44, 96, 11, 11, 1292, 2321, 1032,
+ 2355, 748, 1067, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522, 8522,
+ 8522, 8522, 8522, 8522, 8522, 8522
+ };
+ register unsigned int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[33]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 33:
+ hval += asso_values[(unsigned char)str[32]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 32:
+ case 31:
+ case 30:
+ hval += asso_values[(unsigned char)str[29]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 29:
+ hval += asso_values[(unsigned char)str[28]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 28:
+ hval += asso_values[(unsigned char)str[27]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 27:
+ hval += asso_values[(unsigned char)str[26]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 26:
+ hval += asso_values[(unsigned char)str[25]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 25:
+ hval += asso_values[(unsigned char)str[24]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 24:
+ hval += asso_values[(unsigned char)str[23]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 23:
+ hval += asso_values[(unsigned char)str[22]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 22:
+ hval += asso_values[(unsigned char)str[21]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 21:
+ hval += asso_values[(unsigned char)str[20]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 20:
+ hval += asso_values[(unsigned char)str[19]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 19:
+ hval += asso_values[(unsigned char)str[18]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 18:
+ hval += asso_values[(unsigned char)str[17]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 17:
+ hval += asso_values[(unsigned char)str[16]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 16:
+ hval += asso_values[(unsigned char)str[15]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 15:
+ hval += asso_values[(unsigned char)str[14]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 14:
+ hval += asso_values[(unsigned char)str[13]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 13:
+ hval += asso_values[(unsigned char)str[12]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 12:
+ hval += asso_values[(unsigned char)str[11]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 11:
+ hval += asso_values[(unsigned char)str[10]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 10:
+ hval += asso_values[(unsigned char)str[9]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 9:
+ hval += asso_values[(unsigned char)str[8]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 8:
+ case 7:
+ case 6:
+ hval += asso_values[(unsigned char)str[5]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 5:
+ case 4:
+ hval += asso_values[(unsigned char)str[3]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 3:
+ hval += asso_values[(unsigned char)str[2]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 2:
+ hval += asso_values[(unsigned char)str[1]];
+#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9)))
+ [[fallthrough]];
+#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10)
+ __attribute__ ((__fallthrough__));
+#endif
+ /*FALLTHROUGH*/
+ case 1:
+ hval += asso_values[(unsigned char)str[0]];
+ break;
+ }
+ return hval;
+}
+
+struct out *
+fname (str, len)
+ register const char *str;
+ register size_t len;
+{
+#if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+ static struct out wordlist[] =
+ {
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 121 "fext"
+ {"BUILD","bazel"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 286 "fext"
+ {".gitkeep","git"},
+ {""}, {""}, {""}, {""},
+#line 338 "fext"
+ {"jest.json","jest"},
+#line 884 "fext"
+ {".DS_Store","dsstore"},
+ {""}, {""},
+#line 617 "fext"
+ {".tfignore","tfs"},
+ {""},
+#line 139 "fext"
+ {".cfignore","cloudfoundry"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 423 "fext"
+ {"nginx.conf","nginx"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 283 "fext"
+ {".gitconfig","git"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 620 "fext"
+ {"tsconfig.json","tsconfig"},
+#line 357 "fext"
+ {"jsconfig.json","jsconfig"},
+#line 160 "fext"
+ {".csscomb.json","csscomb"},
+#line 417 "fext"
+ {"nest-cli.json","nestjs"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 333 "fext"
+ {"ionic.project","ionic"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 342 "fext"
+ {"jest.config.js","jest"},
+ {""},
+#line 339 "fext"
+ {".jestrc","jest"},
+ {""},
+#line 151 "fext"
+ {"coffeelint.json","coffeelint"},
+ {""}, {""}, {""}, {""},
+#line 418 "fext"
+ {"nestconfig.json","nestjs"},
+ {""}, {""}, {""}, {""},
+#line 343 "fext"
+ {"jest.config.cjs","jest"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 337 "fext"
+ {"jest.config.json","jest"},
+#line 419 "fext"
+ {".nestconfig.json","nestjs"},
+ {""}, {""},
+#line 340 "fext"
+ {".jestrc.js","jest"},
+ {""}, {""},
+#line 161 "fext"
+ {".csslintrc","csslint"},
+ {""}, {""}, {""},
+#line 626 "fext"
+ {"tsconfig.e2e.json","tsconfig"},
+#line 284 "fext"
+ {".gitignore","git"},
+ {""}, {""}, {""},
+#line 334 "fext"
+ {"ionic.config.json","ionic"},
+ {""},
+#line 632 "fext"
+ {"tsconfig.test.json","tsconfig"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 290 "fext"
+ {"go.sum","go_package"},
+ {""}, {""},
+#line 341 "fext"
+ {".jestrc.json","jest"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 959 "fext"
+ {".instructions","instructions"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 457 "fext"
+ {".nsrirc","nsri"},
+ {""},
+#line 459 "fext"
+ {"nsri.config.js","nsri"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 851 "fext"
+ {"TerraFile","terrafile"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 616 "fext"
+ {".testcaferc.json","testcafe"},
+#line 460 "fext"
+ {".nsrirc.js","nsri"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 373 "fext"
+ {"license","license"},
+ {""},
+#line 374 "fext"
+ {"licence","license"},
+#line 152 "fext"
+ {".coffeelintignore","coffeelint"},
+#line 458 "fext"
+ {".nsriignore","nsri"},
+ {""}, {""}, {""}, {""}, {""},
+#line 461 "fext"
+ {".nsrirc.json","nsri"},
+#line 240 "fext"
+ {".eslintrc","eslint"},
+ {""}, {""},
+#line 837 "fext"
+ {"migrate","sql"},
+ {""},
+#line 469 "fext"
+ {".merlin","ocaml"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 344 "fext"
+ {"jest.config.mjs","jest"},
+#line 898 "fext"
+ {"rome.json","rome"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 639 "fext"
+ {"tslint.json","tslint"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 267 "fext"
+ {".flowconfig","flow"},
+#line 285 "fext"
+ {".gitmodules","git"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 243 "fext"
+ {".eslintrc.js","eslint"},
+ {""},
+#line 729 "fext"
+ {".compodocrc","compodoc"},
+#line 415 "fext"
+ {".mtn-ignore","monotone"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 293 "fext"
+ {".gqlconfig","graphql"},
+#line 256 "fext"
+ {"_eslintrc.cjs","eslint"},
+ {""},
+#line 245 "fext"
+ {".eslintrc.cjs","eslint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 246 "fext"
+ {".eslintrc.json","eslint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 838 "fext"
+ {".commitlintrc","commitlint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 255 "fext"
+ {"eslint.config.ts","eslint"},
+#line 252 "fext"
+ {"eslint.config.js","eslint"},
+#line 372 "fext"
+ {"lerna.json","lerna"},
+#line 325 "fext"
+ {".p4ignore","helix"},
+ {""}, {""},
+#line 888 "fext"
+ {"remix.config.ts","remix"},
+#line 885 "fext"
+ {"remix.config.js","remix"},
+#line 537 "fext"
+ {".remarkrc","remark"},
+ {""}, {""},
+#line 730 "fext"
+ {".compodocrc.json","compodoc"},
+ {""}, {""}, {""},
+#line 253 "fext"
+ {"eslint.config.cjs","eslint"},
+#line 844 "fext"
+ {".commitlintrc.ts","commitlint"},
+#line 842 "fext"
+ {".commitlintrc.js","commitlint"},
+#line 266 "fext"
+ {".flooignore","floobits"},
+ {""}, {""},
+#line 886 "fext"
+ {"remix.config.cjs","remix"},
+ {""}, {""}, {""}, {""}, {""},
+#line 128 "fext"
+ {"gemfile","bundler"},
+ {""}, {""},
+#line 845 "fext"
+ {".commitlintrc.cts","commitlint"},
+#line 843 "fext"
+ {".commitlintrc.cjs","commitlint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 839 "fext"
+ {".commitlintrc.json","commitlint"},
+ {""}, {""},
+#line 241 "fext"
+ {".eslintignore","eslintignore"},
+ {""},
+#line 636 "fext"
+ {"tsconfig.eslint.json","tsconfig"},
+#line 539 "fext"
+ {".remarkrc.js","remark"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 349 "fext"
+ {"jest.preset.ts","jest"},
+#line 348 "fext"
+ {"jest.preset.js","jest"},
+ {""}, {""}, {""}, {""},
+#line 569 "fext"
+ {".rspec","rspec"},
+ {""},
+#line 540 "fext"
+ {".remarkrc.json","remark"},
+ {""},
+#line 514 "fext"
+ {"procfile","procfile"},
+ {""}, {""}, {""},
+#line 416 "fext"
+ {".nest-cli.json","nestjs"},
+#line 350 "fext"
+ {"jest.preset.cjs","jest"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 251 "fext"
+ {"eslint-preset.js","eslint"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 244 "fext"
+ {".eslintrc.mjs","eslint"},
+ {""}, {""}, {""}, {""},
+#line 486 "fext"
+ {".postcssrc","postcssconfig"},
+ {""}, {""}, {""},
+#line 498 "fext"
+ {"postcss.config.ts","postcssconfig"},
+#line 495 "fext"
+ {"postcss.config.js","postcssconfig"},
+ {""}, {""}, {""},
+#line 623 "fext"
+ {"tsconfig.common.json","tsconfig"},
+ {""}, {""}, {""}, {""}, {""},
+#line 848 "fext"
+ {"commitlint.config.ts","commitlint"},
+#line 846 "fext"
+ {"commitlint.config.js","commitlint"},
+#line 630 "fext"
+ {"tsconfig.spec.json","tsconfig"},
+#line 499 "fext"
+ {"postcss.config.cts","postcssconfig"},
+#line 496 "fext"
+ {"postcss.config.cjs","postcssconfig"},
+#line 573 "fext"
+ {".sentryclirc","sentry"},
+#line 453 "fext"
+ {".npmrc","npm"},
+#line 819 "fext"
+ {"project.json","nx"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 849 "fext"
+ {"commitlint.config.cts","commitlint"},
+#line 847 "fext"
+ {"commitlint.config.cjs","commitlint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 492 "fext"
+ {".postcssrc.ts","postcssconfig"},
+#line 489 "fext"
+ {".postcssrc.js","postcssconfig"},
+ {""}, {""}, {""}, {""}, {""},
+#line 138 "fext"
+ {"circle.yml","circleci"},
+ {""}, {""},
+#line 538 "fext"
+ {".remarkignore","remark"},
+ {""},
+#line 254 "fext"
+ {"eslint.config.mjs","eslint"},
+ {""},
+#line 493 "fext"
+ {".postcssrc.cts","postcssconfig"},
+#line 490 "fext"
+ {".postcssrc.cjs","postcssconfig"},
+ {""}, {""},
+#line 887 "fext"
+ {"remix.config.mjs","remix"},
+ {""}, {""},
+#line 749 "fext"
+ {".tool-versions","toolversions"},
+ {""}, {""}, {""},
+#line 487 "fext"
+ {".postcssrc.json","postcssconfig"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 780 "fext"
+ {"ace","ace"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 153 "fext"
+ {"composer.json","composer"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 157 "fext"
+ {".condarc","conda"},
+#line 726 "fext"
+ {".jinja","jinja"},
+#line 890 "fext"
+ {".sailsrc","sails"},
+ {""}, {""}, {""}, {""},
+#line 508 "fext"
+ {"prettier.config.ts","prettier"},
+#line 505 "fext"
+ {"prettier.config.js","prettier"},
+ {""},
+#line 351 "fext"
+ {"jest.preset.mjs","jest"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 506 "fext"
+ {"prettier.config.cjs","prettier"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 452 "fext"
+ {".npmignore","npm"},
+#line 352 "fext"
+ {".jpmignore","jpm"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 500 "fext"
+ {"postcss.config.mts","postcssconfig"},
+#line 497 "fext"
+ {"postcss.config.mjs","postcssconfig"},
+ {""}, {""},
+#line 396 "fext"
+ {"pom.xml","maven"},
+ {""},
+#line 641 "fext"
+ {"tslint.yml","tslint"},
+#line 925 "fext"
+ {"todo","todo"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 509 "fext"
+ {"prettier.config.coffee","prettier"},
+ {""}, {""}, {""}, {""}, {""},
+#line 923 "fext"
+ {"todo.txt","todo"},
+ {""}, {""}, {""},
+#line 922 "fext"
+ {".todo.md","todo"},
+ {""},
+#line 225 "fext"
+ {".docz.js","docz"},
+#line 420 "fext"
+ {"netlify.toml","netlify"},
+ {""}, {""}, {""},
+#line 503 "fext"
+ {".prettierrc","prettier"},
+#line 494 "fext"
+ {".postcssrc.mts","postcssconfig"},
+#line 491 "fext"
+ {".postcssrc.mjs","postcssconfig"},
+#line 968 "fext"
+ {"CLAUDE.md","claude"},
+ {""},
+#line 924 "fext"
+ {".todo.txt","todo"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 226 "fext"
+ {".docz.json","docz"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 358 "fext"
+ {".jscpd.json","jscpd"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 510 "fext"
+ {".prettierrc.js","prettier"},
+ {""},
+#line 451 "fext"
+ {"nodemon.json","nodemon"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 270 "fext"
+ {".fossaignore","fossa"},
+#line 753 "fext"
+ {".cmake","cmake"},
+#line 504 "fext"
+ {".prettierignore","prettierignore"},
+#line 390 "fext"
+ {"manifest","manifest"},
+ {""}, {""}, {""}, {""}, {""},
+#line 511 "fext"
+ {".prettierrc.json","prettier"},
+ {""},
+#line 235 "fext"
+ {".editorconfig","editorconfig"},
+ {""},
+#line 544 "fext"
+ {"renovate.json","renovate"},
+ {""}, {""}, {""},
+#line 263 "fext"
+ {"firebase.json","firebasehosting"},
+ {""}, {""},
+#line 507 "fext"
+ {"prettier.config.mjs","prettier"},
+ {""},
+#line 231 "fext"
+ {".dojorc","dojo"},
+#line 222 "fext"
+ {".doczrc","docz"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 631 "fext"
+ {"tsconfig.staging.json","tsconfig"},
+#line 399 "fext"
+ {"pom.properties","maven"},
+ {""}, {""},
+#line 402 "fext"
+ {".mocharc.js","mocha"},
+ {""}, {""},
+#line 744 "fext"
+ {"astro.config.ts","astroconfig"},
+#line 741 "fext"
+ {"astro.config.js","astroconfig"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 633 "fext"
+ {"tsconfig.tsd.json","tsconfig"},
+#line 733 "fext"
+ {"bsconfig.json","bsconfig"},
+ {""},
+#line 785 "fext"
+ {"redis.conf","redis"},
+ {""}, {""},
+#line 745 "fext"
+ {"astro.config.cts","astroconfig"},
+#line 742 "fext"
+ {"astro.config.cjs","astroconfig"},
+ {""}, {""}, {""}, {""}, {""},
+#line 403 "fext"
+ {".mocharc.json","mocha"},
+ {""},
+#line 634 "fext"
+ {"tsconfig.node.json","tsconfig"},
+#line 392 "fext"
+ {"manifest.json","manifest"},
+ {""},
+#line 921 "fext"
+ {"todo.md","todo"},
+ {""}, {""},
+#line 736 "fext"
+ {".clangd","llvm"},
+#line 291 "fext"
+ {"go.mod","go_package"},
+ {""}, {""}, {""},
+#line 576 "fext"
+ {".snyk","snyk"},
+#line 404 "fext"
+ {".mocharc.jsonc","mocha"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 467 "fext"
+ {".nycrc","nyc"},
+#line 221 "fext"
+ {".dockerignore","dockerignore"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 900 "fext"
+ {"bicepconfig.json","bicepconfig"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 606 "fext"
+ {"tailwind.ts","tailwind"},
+#line 602 "fext"
+ {"tailwind.js","tailwind"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 484 "fext"
+ {"pnpmfile.js","pnpm"},
+ {""}, {""},
+#line 607 "fext"
+ {"tailwind.cts","tailwind"},
+#line 604 "fext"
+ {"tailwind.cjs","tailwind"},
+ {""}, {""}, {""},
+#line 468 "fext"
+ {".nycrc.json","nyc"},
+ {""},
+#line 421 "fext"
+ {"_redirects","netlify"},
+#line 97 "fext"
+ {".angular.json","angular"},
+ {""}, {""},
+#line 287 "fext"
+ {".mailmap","git"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 899 "fext"
+ {"biome.json","biome"},
+#line 481 "fext"
+ {"pipfile","pip"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 299 "fext"
+ {"gridsome.config.ts","gridsome"},
+#line 298 "fext"
+ {"gridsome.config.js","gridsome"},
+ {""}, {""},
+#line 891 "fext"
+ {"farm.config.ts","farm"},
+#line 892 "fext"
+ {"farm.config.js","farm"},
+ {""},
+#line 605 "fext"
+ {"tailwind.coffee","tailwind"},
+#line 897 "fext"
+ {".air.toml","air"},
+#line 407 "fext"
+ {"modernizr","modernizr"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 464 "fext"
+ {".integrity.json","nsri-integrity"},
+ {""}, {""}, {""},
+#line 746 "fext"
+ {"astro.config.mts","astroconfig"},
+#line 743 "fext"
+ {"astro.config.mjs","astroconfig"},
+#line 941 "fext"
+ {"plopfile.ts","plop"},
+#line 938 "fext"
+ {"plopfile.js","plop"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 262 "fext"
+ {".firebaserc","firebase"},
+#line 942 "fext"
+ {"plopfile.cts","plop"},
+#line 939 "fext"
+ {"plopfile.cjs","plop"},
+#line 613 "fext"
+ {"tailwind.config.ts","tailwind"},
+#line 611 "fext"
+ {"tailwind.config.js","tailwind"},
+#line 408 "fext"
+ {"modernizr.js","modernizr"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 614 "fext"
+ {"tailwind.config.cts","tailwind"},
+#line 610 "fext"
+ {"tailwind.config.cjs","tailwind"},
+ {""}, {""},
+#line 163 "fext"
+ {".boringignore","darcs"},
+ {""}, {""}, {""},
+#line 579 "fext"
+ {".stylelintrc","stylelint"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 271 "fext"
+ {"ignore-glob","fossil"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 556 "fext"
+ {"rollup.config.ts","rollup"},
+#line 553 "fext"
+ {"rollup.config.js","rollup"},
+ {""}, {""}, {""}, {""},
+#line 239 "fext"
+ {".emakerfile","erlang"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 608 "fext"
+ {"tailwind.mts","tailwind"},
+#line 603 "fext"
+ {"tailwind.mjs","tailwind"},
+ {""}, {""}, {""},
+#line 612 "fext"
+ {"tailwind.config.coffee","tailwind"},
+#line 737 "fext"
+ {".parcelrc","parcel"},
+ {""}, {""},
+#line 593 "fext"
+ {".stylelintrc.ts","stylelint"},
+#line 589 "fext"
+ {".stylelintrc.js","stylelint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 594 "fext"
+ {".stylelintrc.cjs","stylelint"},
+ {""}, {""},
+#line 580 "fext"
+ {".stylelintignore","stylelintignore"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 590 "fext"
+ {".stylelintrc.json","stylelint"},
+ {""}, {""}, {""}, {""}, {""},
+#line 384 "fext"
+ {".lintstagedrc","lintstagedrc"},
+ {""}, {""},
+#line 555 "fext"
+ {"rollup.config.coffee","rollup"},
+ {""}, {""}, {""}, {""},
+#line 375 "fext"
+ {"license.md","license"},
+ {""},
+#line 377 "fext"
+ {"licence.md","license"},
+#line 635 "fext"
+ {"tsconfig.lib.json","tsconfig"},
+ {""}, {""}, {""}, {""},
+#line 754 "fext"
+ {"Cargo.toml","cargo"},
+ {""},
+#line 132 "fext"
+ {"cargo.toml","cargo"},
+ {""}, {""},
+#line 385 "fext"
+ {"lint-staged.config.js","lintstagedrc"},
+#line 409 "fext"
+ {"modernizrrc.js","modernizr"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 422 "fext"
+ {"ng-tailwind.js","ng_tailwind"},
+#line 434 "fext"
+ {"node-inspect.ts","node"},
+#line 431 "fext"
+ {"node-inspect.js","node"},
+ {""}, {""}, {""}, {""},
+#line 386 "fext"
+ {".lintstagedrc.js","lintstagedrc"},
+#line 940 "fext"
+ {"plopfile.mjs","plop"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 433 "fext"
+ {"node-inspect.cjs","node"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 615 "fext"
+ {"tailwind.config.mts","tailwind"},
+#line 609 "fext"
+ {"tailwind.config.mjs","tailwind"},
+ {""},
+#line 430 "fext"
+ {"node-inspect.json","node"},
+ {""}, {""}, {""}, {""},
+#line 387 "fext"
+ {".lintstagedrc.json","lintstagedrc"},
+ {""},
+#line 289 "fext"
+ {"glide.yml","glide"},
+#line 303 "fext"
+ {"gridsome.client.ts","gridsome"},
+#line 302 "fext"
+ {"gridsome.client.js","gridsome"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 696 "fext"
+ {"now.json","vercel"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 232 "fext"
+ {".drone.yml","drone"},
+ {""},
+#line 525 "fext"
+ {"qmldir","qmldir"},
+ {""}, {""},
+#line 554 "fext"
+ {"rollup.config.mjs","rollup"},
+ {""}, {""},
+#line 425 "fext"
+ {".node-version","node"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 442 "fext"
+ {"node-inspectrc","node"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 595 "fext"
+ {".stylelintrc.mjs","stylelint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 436 "fext"
+ {"node-inspect.config.ts","node"},
+#line 435 "fext"
+ {"node-inspect.config.js","node"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 928 "fext"
+ {"gleam.toml","gleamconfig"},
+ {""},
+#line 695 "fext"
+ {".yo-rc.json","yeoman"},
+ {""}, {""}, {""},
+#line 437 "fext"
+ {"node-inspect.config.cjs","node"},
+#line 237 "fext"
+ {".ember-cli","ember"},
+#line 640 "fext"
+ {"tslint.yaml","tslint"},
+#line 233 "fext"
+ {".drone.yml.sig","drone"},
+#line 627 "fext"
+ {"tsconfig.prod.json","tsconfig"},
+ {""}, {""}, {""},
+#line 483 "fext"
+ {"platformio.ini","platformio"},
+ {""},
+#line 439 "fext"
+ {"node-inspect.config.json","node"},
+#line 126 "fext"
+ {".browserslistrc","browserslist"},
+#line 360 "fext"
+ {"jscpd-report.json","jscpd"},
+ {""}, {""},
+#line 517 "fext"
+ {"protractor.conf.ts","protractor"},
+#line 515 "fext"
+ {"protractor.conf.js","protractor"},
+ {""},
+#line 257 "fext"
+ {"app.json","expo"},
+ {""}, {""},
+#line 292 "fext"
+ {"go.work","go_package"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 432 "fext"
+ {"node-inspect.mjs","node"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 697 "fext"
+ {".nowignore","vercel"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 516 "fext"
+ {"protractor.conf.coffee","protractor"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 792 "fext"
+ {"cypress.json","cypress"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 258 "fext"
+ {"app.config.js","expo"},
+#line 740 "fext"
+ {".adonisrc.json","adonis"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 829 "fext"
+ {"gradlew","gradle"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 259 "fext"
+ {"app.config.json","expo"},
+ {""},
+#line 427 "fext"
+ {".node-gyp","node"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 260 "fext"
+ {"app.config.json5","expo"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 621 "fext"
+ {"tsconfig.app.json","tsconfig"},
+#line 438 "fext"
+ {"node-inspect.config.mjs","node"},
+ {""},
+#line 966 "fext"
+ {".keep","keep"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 789 "fext"
+ {".sequelizerc","sequelize"},
+ {""}, {""}, {""}, {""},
+#line 795 "fext"
+ {"cypress.config.ts","cypress"},
+#line 794 "fext"
+ {"cypress.config.js","cypress"},
+ {""}, {""}, {""}, {""},
+#line 269 "fext"
+ {".metadata","flutter"},
+ {""}, {""},
+#line 560 "fext"
+ {"rollup.config.common.ts","rollup"},
+#line 557 "fext"
+ {"rollup.config.common.js","rollup"},
+ {""}, {""}, {""}, {""},
+#line 796 "fext"
+ {"cypress.config.cjs","cypress"},
+ {""}, {""}, {""}, {""}, {""},
+#line 915 "fext"
+ {".knip.json","knip"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 790 "fext"
+ {".sequelizerc.js","sequelize"},
+#line 916 "fext"
+ {".knip.jsonc","knip"},
+#line 622 "fext"
+ {"tsconfig.base.json","tsconfig"},
+ {""}, {""}, {""}, {""}, {""},
+#line 463 "fext"
+ {".nsrirc.yml","nsri"},
+ {""},
+#line 272 "fext"
+ {"fuse.js","fusebox"},
+ {""}, {""}, {""},
+#line 588 "fext"
+ {"stylelint.config.ts","stylelint"},
+#line 582 "fext"
+ {"stylelint.config.js","stylelint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 791 "fext"
+ {".sequelizerc.json","sequelize"},
+ {""}, {""},
+#line 975 "fext"
+ {".claude","claude"},
+ {""},
+#line 583 "fext"
+ {"stylelint.config.cjs","stylelint"},
+ {""},
+#line 559 "fext"
+ {"rollup.config.common.coffee","rollup"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 585 "fext"
+ {"stylelint.config.json","stylelint"},
+ {""}, {""},
+#line 978 "fext"
+ {".clauderc","claude"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 816 "fext"
+ {".packages","flutterpackage"},
+ {""},
+#line 962 "fext"
+ {"instructions","instructions"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 248 "fext"
+ {".eslintrc.yml","eslint"},
+#line 94 "fext"
+ {".angular-cli.json","angular"},
+#line 123 "fext"
+ {".bithoundrc","bithound"},
+ {""}, {""}, {""},
+#line 866 "fext"
+ {"uno.config.ts","unocss"},
+#line 867 "fext"
+ {"uno.config.js","unocss"},
+ {""}, {""},
+#line 274 "fext"
+ {"gatsby-config.ts","gatsby"},
+#line 273 "fext"
+ {"gatsby-config.js","gatsby"},
+ {""}, {""}, {""}, {""}, {""},
+#line 369 "fext"
+ {".kiteignore","kite"},
+ {""},
+#line 967 "fext"
+ {".keepignore","keep"},
+ {""},
+#line 443 "fext"
+ {".node-inspectrc","node"},
+ {""}, {""}, {""},
+#line 943 "fext"
+ {"config.mockoon.json","mockoon"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 732 "fext"
+ {".compodocrc.yml","compodoc"},
+#line 870 "fext"
+ {"unocss.config.ts","unocss"},
+#line 871 "fext"
+ {"unocss.config.js","unocss"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 558 "fext"
+ {"rollup.config.common.mjs","rollup"},
+ {""},
+#line 280 "fext"
+ {"gatsby-ssr.ts","gatsby"},
+#line 279 "fext"
+ {"gatsby-ssr.js","gatsby"},
+#line 963 "fext"
+ {"instructions.json","instructions"},
+ {""}, {""}, {""}, {""},
+#line 448 "fext"
+ {".node-inspectrc.ts","node"},
+#line 447 "fext"
+ {".node-inspectrc.js","node"},
+ {""}, {""}, {""},
+#line 767 "fext"
+ {"poetry.toml","poetry"},
+ {""}, {""}, {""},
+#line 944 "fext"
+ {"mockoon.json","mockoon"},
+ {""}, {""},
+#line 841 "fext"
+ {".commitlintrc.yml","commitlint"},
+ {""},
+#line 680 "fext"
+ {".yarnrc","yarn"},
+#line 449 "fext"
+ {".node-inspectrc.cjs","node"},
+ {""},
+#line 308 "fext"
+ {"gruntfile.ts","grunt"},
+#line 304 "fext"
+ {"gruntfile.js","grunt"},
+ {""}, {""}, {""}, {""},
+#line 678 "fext"
+ {".yaspeller.json","yandex"},
+ {""},
+#line 444 "fext"
+ {".node-inspectrc.json","node"},
+ {""}, {""}, {""}, {""},
+#line 584 "fext"
+ {"stylelint.config.mjs","stylelint"},
+#line 309 "fext"
+ {"gruntfile.cts","grunt"},
+#line 305 "fext"
+ {"gruntfile.cjs","grunt"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 691 "fext"
+ {".yarnrc.js","yarn"},
+ {""},
+#line 541 "fext"
+ {".remarkrc.yml","remark"},
+ {""},
+#line 781 "fext"
+ {"ace-manifest.json","acemanifest"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 690 "fext"
+ {".yarnrc.cjs","yarn"},
+ {""}, {""}, {""},
+#line 685 "fext"
+ {".yarnignore","yarnignore"},
+ {""}, {""}, {""}, {""}, {""},
+#line 688 "fext"
+ {".yarnrc.json","yarn"},
+ {""},
+#line 137 "fext"
+ {"policyfile","chef"},
+ {""}, {""}, {""}, {""},
+#line 677 "fext"
+ {".yaspellerrc","yandex"},
+ {""},
+#line 307 "fext"
+ {"gruntfile.coffee","grunt"},
+ {""}, {""},
+#line 689 "fext"
+ {".yarnrc.json5","yarn"},
+ {""}, {""}, {""}, {""}, {""},
+#line 904 "fext"
+ {"panda.config.ts","panda"},
+#line 905 "fext"
+ {"panda.config.js","panda"},
+ {""}, {""}, {""}, {""},
+#line 520 "fext"
+ {".jade-lint.json","pug"},
+ {""}, {""},
+#line 250 "fext"
+ {".eslintrc.base.json","eslint"},
+ {""},
+#line 869 "fext"
+ {"uno.config.mts","unocss"},
+#line 868 "fext"
+ {"uno.config.mjs","unocss"},
+ {""},
+#line 909 "fext"
+ {"panda.config.cts","panda"},
+#line 907 "fext"
+ {"panda.config.cjs","panda"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 734 "fext"
+ {".clang-format","llvm"},
+#line 906 "fext"
+ {"panda.config.json","panda"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 917 "fext"
+ {"knip.ts","knip"},
+#line 918 "fext"
+ {"knip.js","knip"},
+ {""}, {""}, {""},
+#line 873 "fext"
+ {"unocss.config.mts","unocss"},
+#line 872 "fext"
+ {"unocss.config.mjs","unocss"},
+#line 488 "fext"
+ {".postcssrc.yml","postcssconfig"},
+ {""}, {""}, {""}, {""},
+#line 518 "fext"
+ {".jade-lintrc","pug"},
+ {""},
+#line 913 "fext"
+ {"knip.json","knip"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 450 "fext"
+ {".node-inspectrc.mjs","node"},
+ {""}, {""}, {""}, {""},
+#line 914 "fext"
+ {"knip.jsonc","knip"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 577 "fext"
+ {".solidarity","solidarity"},
+ {""},
+#line 310 "fext"
+ {"gruntfile.mts","grunt"},
+#line 306 "fext"
+ {"gruntfile.mjs","grunt"},
+ {""}, {""}, {""},
+#line 787 "fext"
+ {"sequelize.ts","sequelize"},
+#line 786 "fext"
+ {"sequelize.js","sequelize"},
+ {""}, {""}, {""}, {""}, {""},
+#line 131 "fext"
+ {"capacitor.config.json","capacitor"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 788 "fext"
+ {"sequelize.cjs","sequelize"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 676 "fext"
+ {".yamllint","yamllint"},
+#line 156 "fext"
+ {"conanfile.py","conan"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 371 "fext"
+ {"layout.htm","layout"},
+ {""}, {""}, {""},
+#line 919 "fext"
+ {"knip.config.ts","knip"},
+#line 920 "fext"
+ {"knip.config.js","knip"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 578 "fext"
+ {".solidarity.json","solidarity"},
+ {""}, {""}, {""},
+#line 910 "fext"
+ {"panda.config.mts","panda"},
+#line 908 "fext"
+ {"panda.config.mjs","panda"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 223 "fext"
+ {"docz.js","docz"},
+ {""}, {""}, {""},
+#line 394 "fext"
+ {".markdownlint.json","markdownlint"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 860 "fext"
+ {"taze.config.ts","taze"},
+#line 859 "fext"
+ {"taze.config.js","taze"},
+#line 224 "fext"
+ {"docz.json","docz"},
+#line 227 "fext"
+ {"doczrc.js","docz"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 861 "fext"
+ {"taze.config.cjs","taze"},
+ {""}, {""}, {""}, {""}, {""},
+#line 288 "fext"
+ {".gitlab-ci.yml","gitlab"},
+ {""}, {""}, {""}, {""}, {""},
+#line 228 "fext"
+ {"doczrc.json","docz"},
+ {""},
+#line 379 "fext"
+ {".lighthouserc.js","lighthouse"},
+ {""}, {""},
+#line 125 "fext"
+ {"bower.json","bower"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 143 "fext"
+ {"codecov.yml","codecov"},
+#line 140 "fext"
+ {".codacy.yml","codacy"},
+#line 694 "fext"
+ {"yarn-error.log","yarnerror"},
+ {""},
+#line 863 "fext"
+ {".tazerc.json","taze"},
+#line 600 "fext"
+ {"windi.config.ts","windi"},
+#line 601 "fext"
+ {"windi.config.js","windi"},
+#line 380 "fext"
+ {".lighthouserc.json","lighthouse"},
+ {""}, {""}, {""}, {""}, {""},
+#line 619 "fext"
+ {".travis.yml","travis"},
+ {""},
+#line 144 "fext"
+ {".codecov.yml","codecov"},
+ {""}, {""}, {""}, {""},
+#line 512 "fext"
+ {".prettierrc.yml","prettier"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 229 "fext"
+ {"docz.config.js","docz"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 124 "fext"
+ {".bowerrc","bower"},
+ {""}, {""}, {""}, {""},
+#line 335 "fext"
+ {"jakefile","jake"},
+ {""},
+#line 230 "fext"
+ {"docz.config.json","docz"},
+ {""}, {""},
+#line 264 "fext"
+ {"firestore.rules","firestore"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 652 "fext"
+ {"tasks.json","vscode"},
+#line 771 "fext"
+ {".rustfmt.toml","rustfmt"},
+ {""}, {""}, {""}, {""}, {""},
+#line 406 "fext"
+ {".mocharc.yml","mocha"},
+ {""},
+#line 236 "fext"
+ {"elm-package.json","elm"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 529 "fext"
+ {"readme.md","readme"},
+ {""}, {""}, {""}, {""},
+#line 336 "fext"
+ {"jakefile.js","jake"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 862 "fext"
+ {"taze.config.mjs","taze"},
+ {""}, {""}, {""}, {""},
+#line 462 "fext"
+ {".nsrirc.yaml","nsri"},
+ {""},
+#line 297 "fext"
+ {"greenkeeper.json","greenkeeper"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 370 "fext"
+ {"layout.html","layout"},
+#line 129 "fext"
+ {"gemfile.lock","bundler"},
+#line 316 "fext"
+ {"gulpfile.ts","gulp"},
+#line 314 "fext"
+ {"gulpfile.js","gulp"},
+#line 769 "fext"
+ {"pyproject.toml","pyproject"},
+ {""}, {""}, {""},
+#line 527 "fext"
+ {"rakefile","rake"},
+ {""},
+#line 877 "fext"
+ {"atomizer.config.ts","atomizer"},
+#line 874 "fext"
+ {"atomizer.config.js","atomizer"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 875 "fext"
+ {"atomizer.config.cjs","atomizer"},
+ {""},
+#line 414 "fext"
+ {"moleculer.config.ts","moleculer"},
+#line 412 "fext"
+ {"moleculer.config.js","moleculer"},
+#line 738 "fext"
+ {"dune","dune"},
+ {""}, {""},
+#line 755 "fext"
+ {"Cargo.lock","cargolock"},
+ {""},
+#line 133 "fext"
+ {"cargo.lock","cargo"},
+ {""}, {""}, {""},
+#line 834 "fext"
+ {"make","makefile"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 247 "fext"
+ {".eslintrc.yaml","eslint"},
+ {""},
+#line 750 "fext"
+ {"CMakeSettings.json","cmake"},
+#line 682 "fext"
+ {".yarnclean","yarn"},
+ {""}, {""}, {""},
+#line 413 "fext"
+ {"moleculer.config.json","moleculer"},
+ {""}, {""}, {""},
+#line 111 "fext"
+ {"babel.config.js","babel"},
+#line 833 "fext"
+ {"makefile","makefile"},
+#line 315 "fext"
+ {"gulpfile.coffee","gulp"},
+ {""}, {""},
+#line 770 "fext"
+ {"rustfmt.toml","rustfmt"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 238 "fext"
+ {"emakefile","erlang"},
+#line 117 "fext"
+ {".bzrignore","bazaar"},
+#line 112 "fext"
+ {"babel.config.cjs","babel"},
+ {""}, {""},
+#line 145 "fext"
+ {"config.codekit","codekit"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 114 "fext"
+ {"babel.config.json","babel"},
+ {""}, {""}, {""}, {""},
+#line 519 "fext"
+ {".pug-lintrc","pug"},
+#line 731 "fext"
+ {".compodocrc.yaml","compodoc"},
+#line 146 "fext"
+ {"config.codekit2","codekit"},
+#line 276 "fext"
+ {"gatsby-node.ts","gatsby"},
+#line 275 "fext"
+ {"gatsby-node.js","gatsby"},
+#line 148 "fext"
+ {".config.codekit","codekit"},
+#line 147 "fext"
+ {"config.codekit3","codekit"},
+ {""}, {""},
+#line 896 "fext"
+ {"bun.lock","bunlock"},
+ {""}, {""},
+#line 568 "fext"
+ {"rollup.config.prod.ts","rollup"},
+#line 565 "fext"
+ {"rollup.config.prod.js","rollup"},
+ {""},
+#line 912 "fext"
+ {"Ballerina.toml","ballerinaconfig"},
+ {""},
+#line 355 "fext"
+ {".jsbeautify","jsbeautify"},
+ {""},
+#line 149 "fext"
+ {".config.codekit2","codekit"},
+#line 154 "fext"
+ {"composer.lock","composerlock"},
+ {""}, {""},
+#line 150 "fext"
+ {".config.codekit3","codekit"},
+#line 102 "fext"
+ {"aurelia.json","aurelia"},
+ {""}, {""}, {""}, {""}, {""},
+#line 980 "fext"
+ {".claude-code","claude"},
+#line 840 "fext"
+ {".commitlintrc.yaml","commitlint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 521 "fext"
+ {".pug-lintrc.js","pug"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 911 "fext"
+ {".buckconfig","buck"},
+#line 757 "fext"
+ {"tauri.conf.json","tauri"},
+#line 135 "fext"
+ {"berksfile","chef"},
+ {""}, {""},
+#line 542 "fext"
+ {".remarkrc.yaml","remark"},
+ {""},
+#line 522 "fext"
+ {".pug-lintrc.json","pug"},
+ {""}, {""}, {""}, {""},
+#line 567 "fext"
+ {"rollup.config.prod.coffee","rollup"},
+#line 758 "fext"
+ {"tauri.conf.json5","tauri"},
+ {""}, {""},
+#line 876 "fext"
+ {"atomizer.config.mjs","atomizer"},
+ {""}, {""}, {""},
+#line 526 "fext"
+ {"quasar.conf.js","quasar"},
+#line 105 "fext"
+ {".babelrc","babel"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 362 "fext"
+ {".jshintrc","jshint"},
+ {""}, {""},
+#line 971 "fext"
+ {"claude","claude"},
+#line 127 "fext"
+ {"browserslist","browserslist"},
+ {""},
+#line 592 "fext"
+ {".stylelintrc.yml","stylelint"},
+#line 400 "fext"
+ {".hgignore","mercurial"},
+ {""},
+#line 282 "fext"
+ {".gitattributes","git"},
+ {""}, {""}, {""}, {""},
+#line 410 "fext"
+ {".modernizr.js","modernizr"},
+ {""}, {""}, {""},
+#line 319 "fext"
+ {"gulpfile.esm.ts","gulp"},
+#line 317 "fext"
+ {"gulpfile.esm.js","gulp"},
+#line 824 "fext"
+ {"quasar.config.ts","quasar"},
+#line 823 "fext"
+ {"quasar.config.js","quasar"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 366 "fext"
+ {"karma.conf.ts","karma"},
+#line 364 "fext"
+ {"karma.conf.js","karma"},
+#line 107 "fext"
+ {".babelrc.js","babel"},
+#line 113 "fext"
+ {"babel.config.mjs","babel"},
+#line 864 "fext"
+ {"turbo.json","turbo"},
+ {""}, {""},
+#line 825 "fext"
+ {"quasar.config.cjs","quasar"},
+ {""},
+#line 974 "fext"
+ {".claude_code_config","claude"},
+ {""}, {""}, {""},
+#line 972 "fext"
+ {"claude.json","claude"},
+#line 353 "fext"
+ {".jsbeautifyrc","jsbeautify"},
+ {""},
+#line 108 "fext"
+ {".babelrc.cjs","babel"},
+ {""},
+#line 865 "fext"
+ {"turbo.jsonc","turbo"},
+ {""}, {""},
+#line 761 "fext"
+ {"tauri.macos.conf.json","tauri"},
+ {""}, {""}, {""}, {""},
+#line 110 "fext"
+ {".babelrc.json","babel"},
+ {""},
+#line 901 "fext"
+ {"drizzle.config.ts","drizzle"},
+#line 902 "fext"
+ {"drizzle.config.js","drizzle"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 566 "fext"
+ {"rollup.config.prod.mjs","rollup"},
+#line 318 "fext"
+ {"gulpfile.esm.coffee","gulp"},
+#line 389 "fext"
+ {".lintstagedrc.yml","lintstagedrc"},
+ {""}, {""}, {""}, {""}, {""},
+#line 903 "fext"
+ {"drizzle.config.json","drizzle"},
+#line 85 "fext"
+ {"webpack.config.ts","webpack"},
+#line 87 "fext"
+ {"webpack.config.js","webpack"},
+#line 365 "fext"
+ {"karma.conf.coffee","karma"},
+ {""}, {""},
+#line 735 "fext"
+ {".clang-tidy","llvm"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 454 "fext"
+ {"package.json","npm"},
+ {""},
+#line 960 "fext"
+ {"instructions.md","instructions"},
+ {""}, {""}, {""}, {""},
+#line 134 "fext"
+ {"chefignore","chef"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 976 "fext"
+ {"claude.config.js","claude"},
+ {""}, {""}, {""}, {""},
+#line 4 "fext"
+ {"webpack.test.conf.ts","webpack"},
+#line 6 "fext"
+ {"webpack.test.conf.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 411 "fext"
+ {".modernizrrc.js","modernizr"},
+ {""},
+#line 106 "fext"
+ {".babelignore","babel"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 218 "fext"
+ {"dockerfile","docker"},
+ {""},
+#line 363 "fext"
+ {".jshintignore","jshint"},
+#line 86 "fext"
+ {"webpack.config.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 401 "fext"
+ {"mocha.opts","mocha"},
+ {""},
+#line 67 "fext"
+ {"webpack.config.test.ts","webpack"},
+#line 69 "fext"
+ {"webpack.config.test.js","webpack"},
+ {""}, {""},
+#line 881 "fext"
+ {"esbuild.ts","esbuild"},
+#line 878 "fext"
+ {"esbuild.js","esbuild"},
+ {""},
+#line 345 "fext"
+ {"jest.config.babel.js","jest"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 441 "fext"
+ {"node-inspect.config.yml","node"},
+#line 880 "fext"
+ {"esbuild.cjs","esbuild"},
+#line 826 "fext"
+ {"quasar.config.mjs","quasar"},
+#line 346 "fext"
+ {"jest.config.babel.cjs","jest"},
+ {""}, {""}, {""},
+#line 5 "fext"
+ {"webpack.test.conf.coffee","webpack"},
+ {""}, {""}, {""},
+#line 109 "fext"
+ {".babelrc.mjs","babel"},
+ {""}, {""},
+#line 206 "fext"
+ {"dockerfile.ci","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 642 "fext"
+ {".unibeautifyrc","unibeautify"},
+ {""}, {""}, {""}, {""},
+#line 214 "fext"
+ {"dockerfile.test","docker"},
+ {""}, {""},
+#line 68 "fext"
+ {"webpack.config.test.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 119 "fext"
+ {"bazel.rc","bazel"},
+ {""}, {""}, {""}, {""},
+#line 249 "fext"
+ {".eslintrc.browser.json","eslint"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 739 "fext"
+ {"dune-project","duneproject"},
+ {""}, {""},
+#line 159 "fext"
+ {"crowdin.yml","crowdin"},
+#line 141 "fext"
+ {".codacy.yaml","codacy"},
+#line 674 "fext"
+ {"wercker.yml","wercker"},
+ {""}, {""}, {""}, {""},
+#line 644 "fext"
+ {".unibeautifyrc.js","unibeautify"},
+ {""}, {""}, {""}, {""},
+#line 472 "fext"
+ {"paket.references","paket"},
+ {""}, {""}, {""},
+#line 215 "fext"
+ {"dockerfile.testing","docker"},
+ {""}, {""}, {""},
+#line 513 "fext"
+ {".prettierrc.yaml","prettier"},
+ {""},
+#line 393 "fext"
+ {"manifest.skip","manifes"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 645 "fext"
+ {".unibeautifyrc.json","unibeautify"},
+ {""}, {""},
+#line 428 "fext"
+ {"node_modules","node"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 324 "fext"
+ {"checkstyle.json","haxecheckstyle"},
+ {""}, {""}, {""}, {""},
+#line 482 "fext"
+ {"pipfile.lock","pip"},
+ {""}, {""},
+#line 667 "fext"
+ {".wallaby.ts","wallaby"},
+#line 666 "fext"
+ {".wallaby.js","wallaby"},
+ {""}, {""}, {""}, {""},
+#line 893 "fext"
+ {"bunfig.toml","bun"},
+#line 879 "fext"
+ {"esbuild.mjs","esbuild"},
+ {""},
+#line 347 "fext"
+ {"jest.config.babel.mjs","jest"},
+#line 405 "fext"
+ {".mocharc.yaml","mocha"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 523 "fext"
+ {".pyup","pyup"},
+#line 768 "fext"
+ {"poetry.lock","poetrylock"},
+ {""}, {""},
+#line 894 "fext"
+ {".bunfig.toml","bun"},
+#line 926 "fext"
+ {"mkdocs.yml","mkdocs"},
+ {""}, {""},
+#line 665 "fext"
+ {".wallaby.json","wallaby"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 429 "fext"
+ {"node_modules.json","node"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 723 "fext"
+ {".env.test","env"},
+ {""}, {""}, {""},
+#line 101 "fext"
+ {".appveyor.yml","appveyor"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 88 "fext"
+ {"webpack.common.ts","webpack"},
+#line 90 "fext"
+ {"webpack.common.js","webpack"},
+ {""}, {""},
+#line 668 "fext"
+ {".wallaby.coffee","wallaby"},
+#line 728 "fext"
+ {"jenkins.yml","jenkins"},
+#line 958 "fext"
+ {".copilot-instructions","copilot"},
+#line 618 "fext"
+ {"tox.ini","tox"},
+#line 818 "fext"
+ {"nx.json","nx"},
+#line 821 "fext"
+ {"nx.jsonc","nx"},
+#line 368 "fext"
+ {"kitchen.yml","kitchenci"},
+ {""},
+#line 671 "fext"
+ {".wallaby.conf.ts","wallaby"},
+#line 670 "fext"
+ {".wallaby.conf.js","wallaby"},
+ {""},
+#line 599 "fext"
+ {"symfony.lock","symfony"},
+ {""},
+#line 96 "fext"
+ {"angular.json","angular"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 831 "fext"
+ {"gradlew.bat","gradlebat"},
+ {""}, {""}, {""}, {""},
+#line 709 "fext"
+ {".env.staging","env"},
+#line 587 "fext"
+ {"stylelint.config.yml","stylelint"},
+#line 669 "fext"
+ {".wallaby.conf.json","wallaby"},
+ {""}, {""}, {""},
+#line 531 "fext"
+ {".rehyperc","rehype"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 598 "fext"
+ {"package.pins","swift"},
+ {""}, {""},
+#line 89 "fext"
+ {"webpack.common.coffee","webpack"},
+ {""}, {""},
+#line 835 "fext"
+ {"version","version"},
+ {""}, {""},
+#line 704 "fext"
+ {"vite.config.ts","vite"},
+#line 701 "fext"
+ {"vite.config.js","vite"},
+#line 699 "fext"
+ {".vercel","vercel"},
+#line 650 "fext"
+ {".gvimrc","vim"},
+ {""}, {""},
+#line 672 "fext"
+ {".wallaby.conf.coffee","wallaby"},
+#line 118 "fext"
+ {".bazelrc","bazel"},
+ {""}, {""},
+#line 142 "fext"
+ {".codeclimate.yml","codeclimate"},
+ {""}, {""}, {""},
+#line 706 "fext"
+ {"vite.config.cts","vite"},
+#line 703 "fext"
+ {"vite.config.cjs","vite"},
+ {""}, {""},
+#line 533 "fext"
+ {".rehyperc.js","rehype"},
+ {""}, {""}, {""},
+#line 800 "fext"
+ {"vitest.config.ts","vitest"},
+#line 803 "fext"
+ {"vitest.config.js","vitest"},
+ {""}, {""}, {""},
+#line 597 "fext"
+ {".svnignore","subversion"},
+ {""},
+#line 162 "fext"
+ {".cvsignore","cvs"},
+#line 764 "fext"
+ {"next.config.ts","nextconfig"},
+#line 762 "fext"
+ {"next.config.js","nextconfig"},
+#line 822 "fext"
+ {"v.mod","vmod"},
+#line 79 "fext"
+ {"webpack.config.common.ts","webpack"},
+#line 81 "fext"
+ {"webpack.config.common.js","webpack"},
+ {""},
+#line 801 "fext"
+ {"vitest.config.cts","vitest"},
+#line 804 "fext"
+ {"vitest.config.cjs","vitest"},
+ {""}, {""}, {""}, {""},
+#line 534 "fext"
+ {".rehyperc.json","rehype"},
+ {""}, {""}, {""},
+#line 707 "fext"
+ {".nvmrc","nvm"},
+ {""},
+#line 546 "fext"
+ {".retextrc","retext"},
+ {""},
+#line 649 "fext"
+ {".vimrc","vim"},
+ {""},
+#line 628 "fext"
+ {"tsconfig.production.json","tsconfig"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 130 "fext"
+ {".ruby-version","bundler"},
+#line 965 "fext"
+ {"instructions.yml","instructions"},
+ {""}, {""}, {""}, {""},
+#line 766 "fext"
+ {"nextron.config.ts","nextron"},
+#line 765 "fext"
+ {"nextron.config.js","nextron"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 946 "fext"
+ {"mockoon.yml","mockoon"},
+ {""}, {""}, {""}, {""}, {""},
+#line 836 "fext"
+ {"server","sql"},
+ {""}, {""},
+#line 883 "fext"
+ {"mix.lock","mixlock"},
+ {""}, {""},
+#line 548 "fext"
+ {".retextrc.js","retext"},
+ {""},
+#line 80 "fext"
+ {"webpack.config.common.coffee","webpack"},
+ {""},
+#line 446 "fext"
+ {".node-inspectrc.yml","node"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 817 "fext"
+ {".htaccess","htaccess"},
+ {""}, {""}, {""}, {""}, {""},
+#line 549 "fext"
+ {".retextrc.json","retext"},
+ {""}, {""},
+#line 653 "fext"
+ {"vscodeignore.json","vscode"},
+ {""},
+#line 532 "fext"
+ {".rehypeignore","rehype"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 591 "fext"
+ {".stylelintrc.yaml","stylelint"},
+ {""},
+#line 543 "fext"
+ {".renovaterc","renovate"},
+ {""}, {""}, {""},
+#line 686 "fext"
+ {".yarnrc.yml","yarn"},
+ {""}, {""}, {""},
+#line 524 "fext"
+ {".pyup.yml","pyup"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 705 "fext"
+ {"vite.config.mts","vite"},
+#line 702 "fext"
+ {"vite.config.mjs","vite"},
+ {""}, {""}, {""}, {""},
+#line 575 "fext"
+ {"snapcraft.yaml","snapcraft"},
+ {""},
+#line 700 "fext"
+ {".vercelignore","vercel"},
+#line 278 "fext"
+ {"gatsby-browser.ts","gatsby"},
+#line 277 "fext"
+ {"gatsby-browser.js","gatsby"},
+ {""}, {""},
+#line 683 "fext"
+ {".yarn-integrity","yarn"},
+ {""}, {""}, {""}, {""}, {""},
+#line 895 "fext"
+ {"bun.lockb","bunlock"},
+ {""}, {""},
+#line 802 "fext"
+ {"vitest.config.mts","vitest"},
+#line 805 "fext"
+ {"vitest.config.mjs","vitest"},
+ {""}, {""}, {""}, {""}, {""},
+#line 475 "fext"
+ {".php_cs","phpcsfixer"},
+ {""},
+#line 763 "fext"
+ {"next.config.mjs","nextconfig"},
+ {""},
+#line 957 "fext"
+ {"copilot-instructions.md","copilot"},
+ {""}, {""}, {""}, {""}, {""},
+#line 547 "fext"
+ {".retextignore","retext"},
+ {""},
+#line 930 "fext"
+ {"oxlint.json","oxlint"},
+ {""},
+#line 545 "fext"
+ {".renovaterc.json","renovate"},
+ {""}, {""},
+#line 376 "fext"
+ {"license.txt","license"},
+#line 388 "fext"
+ {".lintstagedrc.yaml","lintstagedrc"},
+#line 378 "fext"
+ {"licence.txt","license"},
+ {""},
+#line 969 "fext"
+ {"claude.md","claude"},
+#line 659 "fext"
+ {"wallaby.ts","wallaby"},
+#line 658 "fext"
+ {"wallaby.js","wallaby"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 828 "fext"
+ {"theme.properties","ui"},
+ {""}, {""}, {""}, {""}, {""},
+#line 501 "fext"
+ {".pre-commit-config.yaml","precommit"},
+ {""}, {""},
+#line 95 "fext"
+ {"angular-cli.json","angular"},
+ {""}, {""}, {""}, {""},
+#line 164 "fext"
+ {"dependabot.yml","dependabot"},
+ {""}, {""},
+#line 657 "fext"
+ {"wallaby.json","wallaby"},
+ {""},
+#line 748 "fext"
+ {"svelte.config.ts","svelteconfig"},
+#line 747 "fext"
+ {"svelte.config.js","svelteconfig"},
+#line 929 "fext"
+ {".oxlintrc.json","oxlint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 629 "fext"
+ {"tsconfig.server.json","tsconfig"},
+ {""},
+#line 698 "fext"
+ {"vercel.json","vercel"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 165 "fext"
+ {"dependencies.yml","dependencies"},
+#line 660 "fext"
+ {"wallaby.coffee","wallaby"},
+ {""}, {""},
+#line 932 "fext"
+ {"oxlint.config.ts","oxlint"},
+#line 931 "fext"
+ {"oxlint.config.js","oxlint"},
+ {""}, {""},
+#line 294 "fext"
+ {".graphqlconfig","graphql_config"},
+#line 663 "fext"
+ {"wallaby.conf.ts","wallaby"},
+#line 662 "fext"
+ {"wallaby.conf.js","wallaby"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 935 "fext"
+ {"oxlint.config.cts","oxlint"},
+#line 933 "fext"
+ {"oxlint.config.cjs","oxlint"},
+ {""},
+#line 424 "fext"
+ {"build.ninja","ninja"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 356 "fext"
+ {"jsbeautify","jsbeautify"},
+ {""},
+#line 440 "fext"
+ {"node-inspect.config.yaml","node"},
+ {""}, {""},
+#line 661 "fext"
+ {"wallaby.conf.json","wallaby"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 70 "fext"
+ {"webpack.config.staging.ts","webpack"},
+#line 72 "fext"
+ {"webpack.config.staging.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 664 "fext"
+ {"wallaby.conf.coffee","wallaby"},
+#line 981 "fext"
+ {"claude-code.config","claude"},
+ {""}, {""},
+#line 212 "fext"
+ {"dockerfile.stage","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 398 "fext"
+ {"settings.xml","maven"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 213 "fext"
+ {"dockerfile.staging","docker"},
+#line 242 "fext"
+ {".eslintcache","eslint"},
+ {""},
+#line 71 "fext"
+ {"webpack.config.staging.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 382 "fext"
+ {".lighthouserc.yml","lighthouse"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 679 "fext"
+ {"yarn.lock","yarnlock"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 19 "fext"
+ {"webpack.main.config.ts","webpack"},
+#line 21 "fext"
+ {"webpack.main.config.js","webpack"},
+ {""}, {""},
+#line 354 "fext"
+ {"jsbeautifyrc","jsbeautify"},
+ {""},
+#line 474 "fext"
+ {"paket.local","paket"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 936 "fext"
+ {"oxlint.config.mts","oxlint"},
+#line 934 "fext"
+ {"oxlint.config.mjs","oxlint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 528 "fext"
+ {"razzle.config.js","razzle"},
+ {""},
+#line 3 "fext"
+ {"webpack.config.images.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 927 "fext"
+ {"mkdocs.yaml","mkdocs"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 20 "fext"
+ {"webpack.main.config.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 710 "fext"
+ {".env.sample","env"},
+ {""}, {""}, {""}, {""},
+#line 638 "fext"
+ {"tsconfig.tsbuildinfo","tsconfig"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 727 "fext"
+ {"jenkins.yaml","jenkins"},
+#line 261 "fext"
+ {"favicon.ico","imageico"},
+ {""}, {""}, {""}, {""}, {""},
+#line 637 "fext"
+ {"tsconfig.storybook.json","tsconfig"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 234 "fext"
+ {".dvc","dvc"},
+#line 973 "fext"
+ {"claude.yaml","claude"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 586 "fext"
+ {"stylelint.config.yaml","stylelint"},
+ {""},
+#line 715 "fext"
+ {".env.dev","env"},
+ {""}, {""},
+#line 692 "fext"
+ {".yarnrc.lock","yarn"},
+ {""}, {""},
+#line 937 "fext"
+ {".cursorrules","cursor"},
+ {""}, {""}, {""}, {""}, {""},
+#line 724 "fext"
+ {".env.dist","env"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 155 "fext"
+ {"conanfile.txt","conan"},
+ {""}, {""},
+#line 681 "fext"
+ {".yarn.installed","yarn"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 977 "fext"
+ {".claude.yaml","claude"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 832 "fext"
+ {"makefile.win","makefile"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 812 "fext"
+ {"vite-env.d.ts","viteenv"},
+#line 813 "fext"
+ {"vite-env.d.js","viteenv"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 964 "fext"
+ {"instructions.yaml","instructions"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 945 "fext"
+ {"mockoon.yaml","mockoon"},
+ {""}, {""}, {""}, {""},
+#line 722 "fext"
+ {".env.example","env"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 25 "fext"
+ {"webpack.prod.ts","webpack"},
+#line 27 "fext"
+ {"webpack.prod.js","webpack"},
+#line 624 "fext"
+ {"tsconfig.dev.json","tsconfig"},
+ {""},
+#line 445 "fext"
+ {".node-inspectrc.yaml","node"},
+#line 395 "fext"
+ {"maven.config","maven"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 10 "fext"
+ {"webpack.renderer.config.ts","webpack"},
+#line 12 "fext"
+ {"webpack.renderer.config.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 651 "fext"
+ {".vscodeignore","vscode"},
+ {""}, {""}, {""},
+#line 687 "fext"
+ {".yarnrc.yaml","yarn"},
+ {""}, {""}, {""}, {""},
+#line 470 "fext"
+ {"paket.dependencies","paket"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 26 "fext"
+ {"webpack.prod.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 22 "fext"
+ {"webpack.prod.conf.ts","webpack"},
+#line 24 "fext"
+ {"webpack.prod.conf.js","webpack"},
+ {""},
+#line 391 "fext"
+ {"manifest.bak","manifest"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 552 "fext"
+ {"robots.txt","robots"},
+ {""}, {""},
+#line 11 "fext"
+ {"webpack.renderer.config.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 166 "fext"
+ {"devcontainer.json","devcontainer"},
+ {""}, {""},
+#line 64 "fext"
+ {"webpack.config.prod.ts","webpack"},
+#line 66 "fext"
+ {"webpack.config.prod.js","webpack"},
+#line 853 "fext"
+ {".code-workspace","codeworkspace"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 209 "fext"
+ {"dockerfile.local","docker"},
+ {""}, {""}, {""}, {""}, {""},
+#line 570 "fext"
+ {".rubocop.yml","rubocop"},
+#line 23 "fext"
+ {"webpack.prod.conf.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 648 "fext"
+ {"vagrantfile","vagrant"},
+ {""}, {""},
+#line 210 "fext"
+ {"dockerfile.prod","docker"},
+ {""}, {""},
+#line 65 "fext"
+ {"webpack.config.prod.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 779 "fext"
+ {"flake.lock","flakelock"},
+ {""}, {""}, {""}, {""}, {""},
+#line 265 "fext"
+ {"firestore.indexes.json","firestore"},
+ {""},
+#line 712 "fext"
+ {".env.prod","env"},
+ {""}, {""}, {""},
+#line 476 "fext"
+ {".php_cs.dist","phpcsfixer"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 775 "fext"
+ {"cucumber.ts","cucumber"},
+#line 774 "fext"
+ {"cucumber.js","cucumber"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 776 "fext"
+ {"cucumber.cjs","cucumber"},
+ {""},
+#line 714 "fext"
+ {".env.local","env"},
+#line 91 "fext"
+ {"webpack.base.conf.ts","webpack"},
+#line 93 "fext"
+ {"webpack.base.conf.js","webpack"},
+ {""}, {""}, {""},
+#line 473 "fext"
+ {"paket.template","paket"},
+ {""},
+#line 778 "fext"
+ {"cucumber.json","cucumber"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 301 "fext"
+ {"gridsome.server.ts","gridsome"},
+#line 300 "fext"
+ {"gridsome.server.js","gridsome"},
+#line 82 "fext"
+ {"webpack.config.base.ts","webpack"},
+#line 84 "fext"
+ {"webpack.config.base.js","webpack"},
+#line 381 "fext"
+ {".lighthouserc.yaml","lighthouse"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 471 "fext"
+ {"paket.lock","paket"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 92 "fext"
+ {"webpack.base.conf.coffee","webpack"},
+#line 647 "fext"
+ {".unibeautifyrc.yml","unibeautify"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 581 "fext"
+ {".stylelintcache","stylelint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 205 "fext"
+ {"dockerfile.beta","docker"},
+#line 643 "fext"
+ {"unibeautify.config.js","unibeautify"},
+ {""},
+#line 83 "fext"
+ {"webpack.config.base.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 777 "fext"
+ {"cucumber.mjs","cucumber"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 361 "fext"
+ {"jscpd-report.html","jscpd"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 830 "fext"
+ {"gradle-wrapper.properties","gradle"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 136 "fext"
+ {"berksfile.lock","chef"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 313 "fext"
+ {"gruntfile.babel.ts","grunt"},
+#line 311 "fext"
+ {"gruntfile.babel.js","grunt"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 535 "fext"
+ {".rehyperc.yml","rehype"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 383 "fext"
+ {"include.xml","lime"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 720 "fext"
+ {".env.dev.staging","env"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 202 "fext"
+ {"docker-compose.yml","docker"},
+ {""}, {""},
+#line 793 "fext"
+ {"cypress.env.json","cypress"},
+ {""}, {""}, {""}, {""}, {""},
+#line 312 "fext"
+ {"gruntfile.babel.coffee","grunt"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 530 "fext"
+ {"readme.txt","readme"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 550 "fext"
+ {".retextrc.yml","retext"},
+ {""},
+#line 174 "fext"
+ {"docker-compose.ci.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 455 "fext"
+ {"package-lock.json","npmlock"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 192 "fext"
+ {"docker-compose.test.yml","docker"},
+#line 654 "fext"
+ {".vuerc","vueconfig"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 673 "fext"
+ {".watchmanconfig","watchmanconfig"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 120 "fext"
+ {"bazel.bazelrc","bazel"},
+ {""},
+#line 783 "fext"
+ {"knexfile.ts","knex"},
+#line 782 "fext"
+ {"knexfile.js","knex"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 711 "fext"
+ {".env.preprod","env"},
+ {""},
+#line 7 "fext"
+ {"webpack.rules.ts","webpack"},
+#line 9 "fext"
+ {"webpack.rules.js","webpack"},
+ {""},
+#line 574 "fext"
+ {"serverless.yml","serverless"},
+ {""}, {""}, {""},
+#line 721 "fext"
+ {".env.development","env"},
+ {""}, {""},
+#line 194 "fext"
+ {"docker-compose.testing.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 850 "fext"
+ {".terraform-version","terraformversion"},
+#line 122 "fext"
+ {"bitbucket-pipelines.yml","bitbucketpipeline"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 656 "fext"
+ {"vue.config.ts","vueconfig"},
+#line 655 "fext"
+ {"vue.config.js","vueconfig"},
+ {""}, {""}, {""}, {""},
+#line 760 "fext"
+ {"tauri.windows.conf.json","tauri"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 268 "fext"
+ {".flutter-plugins","flutter"},
+ {""}, {""}, {""}, {""}, {""},
+#line 8 "fext"
+ {"webpack.rules.coffee","webpack"},
+ {""}, {""}, {""}, {""},
+#line 116 "fext"
+ {"vetur.config.ts","vue"},
+#line 115 "fext"
+ {"vetur.config.js","vue"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 814 "fext"
+ {"pubspec.lock","flutterlock"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 466 "fext"
+ {"nuxt.config.ts","nuxt"},
+#line 465 "fext"
+ {"nuxt.config.js","nuxt"},
+ {""}, {""}, {""}, {""},
+#line 947 "fext"
+ {"mockoon.env","mockoon"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 961 "fext"
+ {"instructions.txt","instructions"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 104 "fext"
+ {".vsts-ci.yml","azure"},
+ {""}, {""}, {""},
+#line 625 "fext"
+ {"tsconfig.development.json","tsconfig"},
+ {""},
+#line 158 "fext"
+ {".coveralls.yml","coveralls"},
+ {""},
+#line 952 "fext"
+ {"mockoon.env.ts","mockoon"},
+#line 951 "fext"
+ {"mockoon.env.js","mockoon"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 955 "fext"
+ {"mockoon.env.cts","mockoon"},
+#line 953 "fext"
+ {"mockoon.env.cjs","mockoon"},
+ {""},
+#line 359 "fext"
+ {"jscpd-report.xml","jscpd"},
+ {""}, {""}, {""},
+#line 571 "fext"
+ {".rubocop_todo.yml","rubocop"},
+ {""}, {""}, {""},
+#line 948 "fext"
+ {"mockoon.env.json","mockoon"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 295 "fext"
+ {".graphqlconfig.yml","graphql_config"},
+ {""}, {""}, {""},
+#line 855 "fext"
+ {"hardhat.config.ts","hardhat"},
+#line 854 "fext"
+ {"hardhat.config.js","hardhat"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 693 "fext"
+ {".yarnrc.txt","yarn"},
+ {""},
+#line 856 "fext"
+ {"hardhat.config.cts","hardhat"},
+#line 857 "fext"
+ {"hardhat.config.cjs","hardhat"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 756 "fext"
+ {"pnpm-lock.yaml","pnpmlock"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 646 "fext"
+ {".unibeautifyrc.yaml","unibeautify"},
+ {""},
+#line 216 "fext"
+ {"dockerfile.web","docker"},
+#line 564 "fext"
+ {"rollup.config.dev.ts","rollup"},
+#line 561 "fext"
+ {"rollup.config.dev.js","rollup"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 815 "fext"
+ {"pubspec.yaml","flutter"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 477 "fext"
+ {"phpunit","phpunit"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 13 "fext"
+ {"webpack.plugins.ts","webpack"},
+#line 15 "fext"
+ {"webpack.plugins.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 322 "fext"
+ {"gulpfile.babel.ts","gulp"},
+#line 320 "fext"
+ {"gulpfile.babel.js","gulp"},
+ {""}, {""}, {""},
+#line 716 "fext"
+ {".env.dev.local","env"},
+ {""}, {""},
+#line 684 "fext"
+ {".yarn-metadata.json","yarn"},
+#line 563 "fext"
+ {"rollup.config.dev.coffee","rollup"},
+ {""},
+#line 956 "fext"
+ {"mockoon.env.mts","mockoon"},
+#line 954 "fext"
+ {"mockoon.env.mjs","mockoon"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 14 "fext"
+ {"webpack.plugins.coffee","webpack"},
+ {""}, {""},
+#line 717 "fext"
+ {".env.dev.prod","env"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 858 "fext"
+ {"hardhat.config.mjs","hardhat"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 321 "fext"
+ {"gulpfile.babel.coffee","gulp"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 797 "fext"
+ {"playwright.config.ts","playright"},
+#line 798 "fext"
+ {"playwright.config.js","playright"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 799 "fext"
+ {"playwright.config.cjs","playright"},
+ {""}, {""}, {""},
+#line 562 "fext"
+ {"rollup.config.dev.mjs","rollup"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 327 "fext"
+ {".huskyrc","husky"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 784 "fext"
+ {"launch.json","launch"},
+#line 426 "fext"
+ {".node_repl_history","node"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 536 "fext"
+ {".rehyperc.yaml","rehype"},
+#line 852 "fext"
+ {"tfstate.backup","terraform"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 329 "fext"
+ {".huskyrc.js","husky"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 201 "fext"
+ {"docker-compose.yaml","docker"},
+ {""}, {""}, {""}, {""},
+#line 281 "fext"
+ {".git-blame-ignore-revs","git"},
+ {""}, {""},
+#line 330 "fext"
+ {".huskyrc.json","husky"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 827 "fext"
+ {"quarkus.properties","quarkus"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 551 "fext"
+ {".retextrc.yaml","retext"},
+ {""},
+#line 173 "fext"
+ {"docker-compose.ci.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 480 "fext"
+ {".phraseapp.yml","phraseapp"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 191 "fext"
+ {"docker-compose.test.yaml","docker"},
+ {""}, {""},
+#line 188 "fext"
+ {"docker-compose.stage.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 572 "fext"
+ {"rust-toolchain","rust_toolchain"},
+ {""},
+#line 58 "fext"
+ {"webpack.config.babel.ts","webpack"},
+#line 60 "fext"
+ {"webpack.config.babel.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 752 "fext"
+ {"toolchain.cmake","cmake"},
+ {""}, {""},
+#line 190 "fext"
+ {"docker-compose.staging.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 751 "fext"
+ {"CMakeLists.txt","cmake"},
+ {""}, {""},
+#line 193 "fext"
+ {"docker-compose.testing.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 98 "fext"
+ {"api-extractor.json","api_extractor"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 59 "fext"
+ {"webpack.config.babel.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 40 "fext"
+ {"webpack.config.test.babel.ts","webpack"},
+#line 42 "fext"
+ {"webpack.config.test.babel.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 326 "fext"
+ {".htmlhintrc","htmlhint"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 41 "fext"
+ {"webpack.config.test.babel.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 203 "fext"
+ {"Dockerfile-production","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 979 "fext"
+ {"claude-instructions.md","claude"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 296 "fext"
+ {".graphqlconfig.yaml","graphql_config"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 772 "fext"
+ {"cucumber.yml","cucumber"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 367 "fext"
+ {".kitchen.yml","kitchenci"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 718 "fext"
+ {".env.dev.preprod","env"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 970 "fext"
+ {"claude.txt","claude"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 675 "fext"
+ {"wpml-config.xml","wpml"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 61 "fext"
+ {"webpack.config.production.ts","webpack"},
+#line 63 "fext"
+ {"webpack.config.production.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 820 "fext"
+ {"nx.instructions.md","nx"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 62 "fext"
+ {"webpack.config.production.coffee","webpack"},
+ {""},
+#line 52 "fext"
+ {"webpack.config.common.babel.ts","webpack"},
+#line 54 "fext"
+ {"webpack.config.common.babel.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 16 "fext"
+ {"webpack.mix.ts","webpack"},
+#line 18 "fext"
+ {"webpack.mix.js","webpack"},
+ {""},
+#line 211 "fext"
+ {"dockerfile.production","docker"},
+ {""}, {""}, {""}, {""}, {""},
+#line 180 "fext"
+ {"docker-compose.local.yml","docker"},
+ {""}, {""}, {""}, {""},
+#line 53 "fext"
+ {"webpack.config.common.babel.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 184 "fext"
+ {"docker-compose.prod.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 713 "fext"
+ {".env.production","env"},
+ {""}, {""},
+#line 17 "fext"
+ {"webpack.mix.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 806 "fext"
+ {"vitest.workspace.ts","vitest"},
+#line 809 "fext"
+ {"vitest.workspace.js","vitest"},
+ {""}, {""}, {""}, {""},
+#line 328 "fext"
+ {"husky.config.js","husky"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 807 "fext"
+ {"vitest.workspace.cts","vitest"},
+#line 810 "fext"
+ {"vitest.workspace.cjs","vitest"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 217 "fext"
+ {"dockerfile.worker","docker"},
+ {""}, {""}, {""}, {""},
+#line 187 "fext"
+ {"docker-compose.stage.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 189 "fext"
+ {"docker-compose.staging.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 808 "fext"
+ {"vitest.workspace.mts","vitest"},
+#line 811 "fext"
+ {"vitest.workspace.mjs","vitest"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 171 "fext"
+ {"docker-compose.beta.yml","docker"},
+ {""},
+#line 889 "fext"
+ {"xmake.lua","xmake"},
+ {""}, {""},
+#line 43 "fext"
+ {"webpack.config.staging.babel.ts","webpack"},
+#line 45 "fext"
+ {"webpack.config.staging.babel.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 44 "fext"
+ {"webpack.config.staging.babel.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 882 "fext"
+ {"mix.exs","mix"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 950 "fext"
+ {"mockoon.env.yml","mockoon"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 773 "fext"
+ {"cucumber.yaml","cucumber"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 167 "fext"
+ {"docker-compose-prod.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 323 "fext"
+ {"haxelib.json","haxe"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 31 "fext"
+ {"webpack.dev.ts","webpack"},
+#line 33 "fext"
+ {"webpack.dev.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 725 "fext"
+ {".env.default","env"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 103 "fext"
+ {"azure-pipelines.yml","azure"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 32 "fext"
+ {"webpack.dev.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 28 "fext"
+ {"webpack.dev.conf.ts","webpack"},
+#line 30 "fext"
+ {"webpack.dev.conf.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 76 "fext"
+ {"webpack.config.dev.ts","webpack"},
+#line 78 "fext"
+ {"webpack.config.dev.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 179 "fext"
+ {"docker-compose.local.yaml","docker"},
+ {""}, {""},
+#line 29 "fext"
+ {"webpack.dev.conf.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 207 "fext"
+ {"dockerfile.dev","docker"},
+ {""}, {""},
+#line 77 "fext"
+ {"webpack.config.dev.coffee","webpack"},
+#line 183 "fext"
+ {"docker-compose.prod.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 397 "fext"
+ {"extensions.xml","maven"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 332 "fext"
+ {".huskyrc.yml","husky"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 220 "fext"
+ {"docker-cloud.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 37 "fext"
+ {"webpack.config.prod.babel.ts","webpack"},
+#line 39 "fext"
+ {"webpack.config.prod.babel.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 38 "fext"
+ {"webpack.config.prod.babel.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 198 "fext"
+ {"docker-compose.web.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 170 "fext"
+ {"docker-compose.beta.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 100 "fext"
+ {"appveyor.yml","appveyor"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 719 "fext"
+ {".env.dev.production","env"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 55 "fext"
+ {"webpack.config.base.babel.ts","webpack"},
+#line 57 "fext"
+ {"webpack.config.base.babel.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 949 "fext"
+ {"mockoon.env.yaml","mockoon"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 56 "fext"
+ {"webpack.config.base.babel.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 485 "fext"
+ {"pnpm-workspace.yaml","pnpm"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 708 "fext"
+ {"example.env","env"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 331 "fext"
+ {".huskyrc.yaml","husky"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 759 "fext"
+ {"tauri.linux.conf.json","tauri"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 99 "fext"
+ {"api-extractor-base.json","api_extractor"},
+ {""},
+#line 204 "fext"
+ {"dockerfile.alpha","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 73 "fext"
+ {"webpack.config.development.ts","webpack"},
+#line 75 "fext"
+ {"webpack.config.development.js","webpack"},
+#line 197 "fext"
+ {"docker-compose.web.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 74 "fext"
+ {"webpack.config.development.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""},
+#line 502 "fext"
+ {".pre-commit-hooks.yaml","precommit"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 208 "fext"
+ {"dockerfile.development","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 186 "fext"
+ {"docker-compose.production.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 456 "fext"
+ {"npm-shrinkwrap.json","npm"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 200 "fext"
+ {"docker-compose.worker.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 219 "fext"
+ {"docker-compose.debug.yml","dockerdebug"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 34 "fext"
+ {"webpack.config.production.babel.ts","webpack"},
+#line 36 "fext"
+ {"webpack.config.production.babel.js","webpack"},
+ {""}, {""}, {""}, {""},
+#line 35 "fext"
+ {"webpack.config.production.babel.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 185 "fext"
+ {"docker-compose.production.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 176 "fext"
+ {"docker-compose.dev.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 199 "fext"
+ {"docker-compose.worker.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 478 "fext"
+ {"phpunit.xml","phpunit"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 172 "fext"
+ {"docker-compose.ci-build.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 182 "fext"
+ {"docker-compose.override.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 196 "fext"
+ {"docker-compose.vs.release.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 596 "fext"
+ {".stylish-haskell.yaml","stylish_haskell"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 175 "fext"
+ {"docker-compose.dev.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 49 "fext"
+ {"webpack.config.dev.babel.ts","webpack"},
+#line 51 "fext"
+ {"webpack.config.dev.babel.js","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 169 "fext"
+ {"docker-compose.alpha.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 50 "fext"
+ {"webpack.config.dev.babel.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
+#line 178 "fext"
+ {"docker-compose.development.yml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 479 "fext"
+ {"phpunit.xml.dist","phpunit"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+#line 181 "fext"
+ {"docker-compose.override.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 177 "fext"
+ {"docker-compose.development.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""},
+#line 46 "fext"
+ {"webpack.config.development.babel.ts","webpack"},
+#line 48 "fext"
+ {"webpack.config.development.babel.js","webpack"},
+ {""}, {""}, {""}, {""},
+#line 47 "fext"
+ {"webpack.config.development.babel.coffee","webpack"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 168 "fext"
+ {"docker-compose.alpha.yaml","docker"},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+#line 195 "fext"
+ {"docker-compose.vs.debug.yml","docker"}
+ };
+#if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)
+#pragma GCC diagnostic pop
+#endif
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register unsigned int key = fname_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE)
+ {
+ register const char *s = wordlist[key].name;
+
+ if (*str == *s && !strcmp (str + 1, s + 1))
+ return &wordlist[key];
+ }
+ }
+ return (struct out *) 0;
+}
diff --git a/waow.h b/waow.h
new file mode 100644
index 00000000..f8ba6f8c
--- /dev/null
+++ b/waow.h
@@ -0,0 +1,11 @@
+#ifndef WAOW_H
+#define WAOW_H
+#include <stddef.h>
+struct out {
+ char *name;
+ char *value;
+};
+
+extern struct out *fext(const char *x, size_t len);
+extern struct out *fname(const char *x, size_t len);
+#endif /* UI_TREE_H */